青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

  1#include "stdafx.h"
  2#include "BtnST.h"
  3
  4#ifdef    BTNST_USE_SOUND
  5#pragma comment(lib, "winmm.lib")
  6#include <Mmsystem.h>
  7#endif
  8
  9#ifdef _DEBUG
 10#define new DEBUG_NEW
 11#undef THIS_FILE
 12static char THIS_FILE[] = __FILE__;
 13#endif
 14
 15/////////////////////////////////////////////////////////////////////////////
 16// CButtonST
 17
 18// Mask for control's type
 19#define BS_TYPEMASK SS_TYPEMASK
 20
 21#ifndef    TTM_SETTITLE
 22#define TTM_SETTITLEA           (WM_USER + 32)  // wParam = TTI_*, lParam = char* szTitle
 23#define TTM_SETTITLEW           (WM_USER + 33)  // wParam = TTI_*, lParam = wchar* szTitle
 24#ifdef    UNICODE
 25#define TTM_SETTITLE            TTM_SETTITLEW
 26#else
 27#define TTM_SETTITLE            TTM_SETTITLEA
 28#endif
 29#endif
 30
 31#ifndef    TTS_BALLOON
 32#define    TTS_BALLOON        0x40
 33#endif
 34
 35CButtonST::CButtonST()
 36{
 37    m_bIsPressed        = FALSE;
 38    m_bIsFocused        = FALSE;
 39    m_bIsDisabled        = FALSE;
 40    m_bMouseOnButton    = FALSE;
 41
 42    FreeResources(FALSE);
 43
 44    // Default type is "flat" button
 45    m_bIsFlat = TRUE;
 46    // Button will be tracked also if when the window is inactive (like Internet Explorer)
 47    m_bAlwaysTrack = TRUE;
 48  
 49    // By default draw border in "flat" button 
 50    m_bDrawBorder = TRUE; 
 51  
 52    // By default icon is aligned horizontally
 53    m_byAlign = ST_ALIGN_HORIZ; 
 54
 55    // By default use usual pressed style
 56    SetPressedStyle(BTNST_PRESSED_LEFTRIGHT, FALSE);
 57  
 58    // By default, for "flat" button, don't draw the focus rect
 59    m_bDrawFlatFocus = FALSE;
 60
 61    // By default the button is not the default button
 62    m_bIsDefault = FALSE;
 63    // Invalid value, since type still unknown
 64    m_nTypeStyle = BS_TYPEMASK;
 65
 66    // By default the button is not a checkbox
 67    m_bIsCheckBox = FALSE;
 68    m_nCheck = 0;
 69
 70    // Set default colors
 71    SetDefaultColors(FALSE);
 72
 73    // No tooltip created
 74    m_ToolTip.m_hWnd = NULL;
 75    m_dwToolTipStyle = 0;
 76
 77    // Do not draw as a transparent button
 78    m_bDrawTransparent = FALSE;
 79    m_pbmpOldBk = NULL;
 80
 81    // No URL defined
 82    SetURL(NULL);
 83
 84    // No cursor defined
 85    m_hCursor = NULL;
 86
 87    // No associated menu
 88#ifndef    BTNST_USE_BCMENU
 89    m_hMenu = NULL;
 90#endif
 91    m_hParentWndMenu = NULL;
 92    m_bMenuDisplayed = FALSE;
 93
 94    m_bShowDisabledBitmap = TRUE;
 95
 96    m_ptImageOrg.x = 3;
 97    m_ptImageOrg.y = 3;
 98
 99    // No defined callbacks
100    ::ZeroMemory(&m_csCallbacks, sizeof(m_csCallbacks));
101
102#ifdef    BTNST_USE_SOUND
103    // No defined sounds
104    ::ZeroMemory(&m_csSounds, sizeof(m_csSounds));
105#endif
106}
 // End of CButtonST
107
108CButtonST::~CButtonST()
109{
110    // Restore old bitmap (if any)
111    if (m_dcBk.m_hDC && m_pbmpOldBk)
112    {
113        m_dcBk.SelectObject(m_pbmpOldBk);
114    }
 // if
115
116    FreeResources();
117
118    // Destroy the cursor (if any)
119    if (m_hCursor) ::DestroyCursor(m_hCursor);
120
121    // Destroy the menu (if any)
122#ifdef    BTNST_USE_BCMENU
123    if (m_menuPopup.m_hMenu)    m_menuPopup.DestroyMenu();
124#else
125    if (m_hMenu)    ::DestroyMenu(m_hMenu);
126#endif
127}
 // End of ~CButtonST
128
129BEGIN_MESSAGE_MAP(CButtonST, CButton)
130    //{{AFX_MSG_MAP(CButtonST)
131    ON_WM_SETCURSOR()
132    ON_WM_KILLFOCUS()
133    ON_WM_MOUSEMOVE()
134    ON_WM_SYSCOLORCHANGE()
135    ON_CONTROL_REFLECT_EX(BN_CLICKED, OnClicked)
136    ON_WM_ACTIVATE()
137    ON_WM_ENABLE()
138    ON_WM_CANCELMODE()
139    ON_WM_GETDLGCODE()
140    ON_WM_CTLCOLOR_REFLECT()
141    //}}AFX_MSG_MAP
142#ifdef    BTNST_USE_BCMENU
143    ON_WM_MENUCHAR()
144    ON_WM_MEASUREITEM()
145#endif
146
147    ON_MESSAGE(BM_SETSTYLE, OnSetStyle)
148    ON_MESSAGE(WM_MOUSELEAVE, OnMouseLeave)
149    ON_MESSAGE(BM_SETCHECK, OnSetCheck)
150    ON_MESSAGE(BM_GETCHECK, OnGetCheck)
151END_MESSAGE_MAP()
152
153void CButtonST::FreeResources(BOOL bCheckForNULL)
154{
155    if (bCheckForNULL)
156    {
157        // Destroy icons
158        // Note: the following two lines MUST be here! even if
159        // BoundChecker says they are unnecessary!
160        if (m_csIcons[0].hIcon)    ::DestroyIcon(m_csIcons[0].hIcon);
161        if (m_csIcons[1].hIcon)    ::DestroyIcon(m_csIcons[1].hIcon);
162
163        // Destroy bitmaps
164        if (m_csBitmaps[0].hBitmap)    ::DeleteObject(m_csBitmaps[0].hBitmap);
165        if (m_csBitmaps[1].hBitmap)    ::DeleteObject(m_csBitmaps[1].hBitmap);
166
167        // Destroy mask bitmaps
168        if (m_csBitmaps[0].hMask)    ::DeleteObject(m_csBitmaps[0].hMask);
169        if (m_csBitmaps[1].hMask)    ::DeleteObject(m_csBitmaps[1].hMask);
170    }
 // if
171
172    ::ZeroMemory(&m_csIcons, sizeof(m_csIcons));
173    ::ZeroMemory(&m_csBitmaps, sizeof(m_csBitmaps));
174}
 // End of FreeResources
175
176void CButtonST::PreSubclassWindow() 
177{
178    UINT nBS;
179
180    nBS = GetButtonStyle();
181
182    // Set initial control type
183    m_nTypeStyle = nBS & BS_TYPEMASK;
184
185    // Check if this is a checkbox
186    if (nBS & BS_CHECKBOX) m_bIsCheckBox = TRUE;
187
188    // Set initial default state flag
189    if (m_nTypeStyle == BS_DEFPUSHBUTTON)
190    {
191        // Set default state for a default button
192        m_bIsDefault = TRUE;
193
194        // Adjust style for default button
195        m_nTypeStyle = BS_PUSHBUTTON;
196    }
 // If
197
198    // You should not set the Owner Draw before this call
199    // (don't use the resource editor "Owner Draw" or
200    // ModifyStyle(0, BS_OWNERDRAW) before calling PreSubclassWindow() )
201    ASSERT(m_nTypeStyle != BS_OWNERDRAW);
202
203    // Switch to owner-draw
204    ModifyStyle(BS_TYPEMASK, BS_OWNERDRAW, SWP_FRAMECHANGED);
205
206    CButton::PreSubclassWindow();
207}
 // End of PreSubclassWindow
208
209UINT CButtonST::OnGetDlgCode() 
210{
211    UINT nCode = CButton::OnGetDlgCode();
212
213    // Tell the system if we want default state handling
214    // (losing default state always allowed)
215    nCode |= (m_bIsDefault ? DLGC_DEFPUSHBUTTON : DLGC_UNDEFPUSHBUTTON);
216
217    return nCode;
218}
 // End of OnGetDlgCode
219
220BOOL CButtonST::PreTranslateMessage(MSG* pMsg) 
221{
222    InitToolTip();
223    m_ToolTip.RelayEvent(pMsg);
224    
225    if (pMsg->message == WM_LBUTTONDBLCLK)
226        pMsg->message = WM_LBUTTONDOWN;
227
228    return CButton::PreTranslateMessage(pMsg);
229}
 // End of PreTranslateMessage
230
231HBRUSH CButtonST::CtlColor(CDC* pDC, UINT nCtlColor) 
232{
233    return (HBRUSH)::GetStockObject(NULL_BRUSH); 
234}
 // End of CtlColor
235
236void CButtonST::OnSysColorChange() 
237{
238    CButton::OnSysColorChange();
239
240    m_dcBk.DeleteDC();
241    m_bmpBk.DeleteObject();    
242    SetDefaultColors();
243}
 // End of OnSysColorChange
244
245LRESULT CButtonST::OnSetStyle(WPARAM wParam, LPARAM lParam)
246{
247    UINT nNewType = (wParam & BS_TYPEMASK);
248
249    // Update default state flag
250    if (nNewType == BS_DEFPUSHBUTTON)
251    {
252        m_bIsDefault = TRUE;
253    }
 // if
254    else if (nNewType == BS_PUSHBUTTON)
255    {
256        // Losing default state always allowed
257        m_bIsDefault = FALSE;
258    }
 // if
259
260    // Can't change control type after owner-draw is set.
261    // Let the system process changes to other style bits
262    // and redrawing, while keeping owner-draw style
263    return DefWindowProc(BM_SETSTYLE,
264        (wParam & ~BS_TYPEMASK) | BS_OWNERDRAW, lParam);
265}
 // End of OnSetStyle
266
267LRESULT CButtonST::OnSetCheck(WPARAM wParam, LPARAM lParam)
268{
269    ASSERT(m_bIsCheckBox);
270
271    switch (wParam)
272    {
273        case BST_CHECKED:
274        case BST_INDETERMINATE:    // Indeterminate state is handled like checked state
275            SetCheck(1);
276            break;
277        default:
278            SetCheck(0);
279            break;
280    }
 // switch
281
282    return 0;
283}
 // End of OnSetCheck
284
285LRESULT CButtonST::OnGetCheck(WPARAM wParam, LPARAM lParam)
286{
287    ASSERT(m_bIsCheckBox);
288    return GetCheck();
289}
 // End of OnGetCheck
290
Posted on 2007-04-12 11:45 艾凡赫 閱讀(1231) 評論(0)  編輯 收藏 引用 所屬分類: MFC技術
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美激情一区二区三区在线视频 | 亚洲精品乱码久久久久久蜜桃91| 亚洲欧美久久| 国产亚洲欧美一级| 欧美中文在线观看| 久久精品国产亚洲aⅴ| 亚洲精品资源| 国产精品美女久久福利网站| 嫩草影视亚洲| 亚洲欧美成人网| 亚洲一区免费在线观看| 在线精品一区| 欧美日韩免费在线| 亚洲图色在线| 欧美日韩精品一二三区| 亚洲视频第一页| 久久亚洲色图| 国外成人在线| 亚洲无限av看| 蜜臀av性久久久久蜜臀aⅴ| 亚洲私人影院在线观看| 玖玖玖免费嫩草在线影院一区| 亚洲在线中文字幕| 亚洲日本va午夜在线影院| 理论片一区二区在线| 亚洲欧美韩国| 欧美精品三区| 亚洲福利专区| 欧美一区影院| 亚洲福利久久| 狠狠网亚洲精品| 欧美不卡高清| 免费视频久久| 国产精品视频xxx| 91久久久精品| 国产精品视频不卡| 午夜亚洲福利在线老司机| 国产精品免费一区豆花| 91久久久一线二线三线品牌| 99国产精品国产精品久久| 一区二区av| 免费久久久一本精品久久区| 亚洲欧美日韩国产综合在线| 欧美尤物巨大精品爽| 日韩视频永久免费| 欧美jizz19性欧美| 在线精品视频免费观看| 欧美一区二区三区免费看| 一区二区三区免费网站| 欧美精品国产精品日韩精品| 亚洲国产精品一区二区第一页 | 羞羞答答国产精品www一本 | 亚洲第一黄色| 亚洲精品在线免费观看视频| 欧美日韩国产精品一区二区亚洲| 国产一区二区久久精品| 亚洲先锋成人| 亚洲每日更新| 欧美午夜三级| 妖精成人www高清在线观看| 欧美日韩国产精品成人| 亚洲欧美在线x视频| 亚洲精品裸体| 欧美黄色片免费观看| 国内精品久久久久久久影视蜜臀| 国产美女精品视频免费观看| 今天的高清视频免费播放成人| 久久人人精品| 国产精品亚洲аv天堂网| 日韩午夜激情| 亚洲国产高清高潮精品美女| 欧美一区二区三区在线| 欧美日本精品一区二区三区| 国产精品v欧美精品v日韩精品| 在线观看国产日韩| 久久久久久久综合日本| 亚洲深夜影院| 国产精品国产a级| 在线精品视频免费观看| 久久久噜噜噜久久中文字幕色伊伊| 亚洲精品色婷婷福利天堂| 老牛嫩草一区二区三区日本| 国产一区二区精品久久99| 欧美一区二区三区婷婷月色 | 美女网站久久| 一区免费在线| 亚洲综合精品一区二区| 国产亚洲精品v| 亚洲图片欧美一区| 欧美二区在线播放| 亚洲天堂网站在线观看视频| 免费在线亚洲| 亚洲精品乱码视频| 日韩视频免费观看高清完整版| 男女精品网站| 一二美女精品欧洲| 在线综合亚洲| 国产美女高潮久久白浆| 久久免费视频一区| 美女精品在线观看| 亚洲网友自拍| 久久裸体艺术| 亚洲激情在线播放| 在线观看成人av| 欧美美女喷水视频| 久久成人免费网| 亚洲国产一区二区三区在线播| 国产精品视频一区二区三区| 欧美一区二区三区男人的天堂| 亚洲精品一二| 欧美一区二视频在线免费观看| 午夜精品久久久久久久99热浪潮| 先锋影院在线亚洲| 久热精品视频在线观看| 久久中文欧美| 99国产精品久久久久久久久久 | 亚洲区欧美区| 亚洲欧美国产高清| 亚洲精品1区2区| 老司机午夜精品视频| 亚洲精品日韩在线观看| 在线午夜精品| 亚洲国产精彩中文乱码av在线播放| 亚洲精品一区二区三| 国模一区二区三区| 一区二区三区精品久久久| 国产精品外国| 国产精品99久久久久久人| 亚洲国产欧美一区二区三区丁香婷| 一区二区日韩欧美| 日韩网站在线| 久久五月婷婷丁香社区| 欧美一区二区视频97| 欧美精品在线观看播放| 久久色在线观看| 国产精品电影网站| 亚洲精品一区二区三区福利| 久久成人久久爱| 亚洲图片欧洲图片日韩av| 亚洲国产精品国自产拍av秋霞| 欧美日韩精品一区视频 | 91久久中文字幕| 欧美日韩国产成人在线免费| 免费精品视频| 国产一区清纯| 精品99一区二区三区| 亚洲香蕉伊综合在人在线视看| 久久久午夜精品| 久久免费视频这里只有精品| 久久一区二区三区四区| 久久精品国产亚洲a| 国产精品久久久久高潮| 亚洲毛片一区| 一区精品在线播放| 国产欧美精品日韩| 午夜精品视频在线观看一区二区| 亚洲视频一二| 国产精品爽爽ⅴa在线观看| 国产精品99久久久久久久女警 | 午夜视频久久久| 美女国产精品| 在线播放日韩欧美| 亚洲精品视频在线播放| 精品福利av| 欧美性色aⅴ视频一区日韩精品| 午夜精品久久| 久久久av毛片精品| 亚洲国产日韩欧美| 亚洲欧美激情一区二区| 国产精品久在线观看| 亚洲国产一区二区a毛片| 日韩视频精品在线观看| 欧美日韩午夜在线| 国产精品成人观看视频国产奇米| 免费观看国产成人| 国产婷婷精品| 欧美日韩国产色站一区二区三区| 99视频+国产日韩欧美| 亚洲欧美视频一区二区三区| 国产日本欧美在线观看| 久久久久久久欧美精品| 亚洲大片在线观看| 亚洲线精品一区二区三区八戒| 影音先锋日韩资源| 欧美日韩精选| 欧美一区激情视频在线观看| 免费不卡视频| 一区二区三区 在线观看视| 国产精品久久久久一区二区三区| 午夜精品电影| 亚洲欧洲一级| 久久久久久91香蕉国产| 亚洲美女淫视频| 国产日韩精品在线观看| 久久资源在线| 亚洲一区在线播放| 精品不卡在线| 国一区二区在线观看| 欧美日韩精品在线观看| 久久成人免费|