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

  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) 評(píng)論(0)  編輯 收藏 引用 所屬分類: MFC技術(shù)
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲国产小视频| 亚洲电影免费| 亚洲精品乱码久久久久久蜜桃麻豆| 欧美电影免费观看大全| 伊人久久男人天堂| 麻豆精品传媒视频| 免费欧美在线视频| 久久黄金**| 国产精品欧美一区二区三区奶水| 欧美专区在线| 国产一区二区三区四区hd| 亚洲二区免费| 久久成人久久爱| 亚洲破处大片| 136国产福利精品导航| 国内自拍视频一区二区三区| 一区二区三区高清| 亚洲永久免费观看| 一二美女精品欧洲| 欧美日韩国产经典色站一区二区三区| 久久精品30| 亚洲欧美日韩专区| 欧美日本在线| 亚洲区第一页| 亚洲一区二区三区精品动漫| 欧美aⅴ99久久黑人专区| 巨胸喷奶水www久久久免费动漫| 久久www免费人成看片高清| 欧美诱惑福利视频| 国产日韩在线一区二区三区| 亚洲欧美日韩一区二区三区在线| 一区二区av在线| 亚洲色诱最新| 欧美激情亚洲国产| 午夜伦欧美伦电影理论片| 欧美一区二区视频免费观看 | 蜜桃av噜噜一区二区三区| 久久久久久久激情视频| 老司机成人网| 欧美天天在线| 久久精品国产亚洲一区二区| 亚洲精品专区| 欧美激情自拍| 亚洲图片在线| 久久一二三区| 久久精品30| 欧美风情在线| 亚洲欧美另类在线| 欧美日韩成人| 在线日韩中文字幕| 欧美在线黄色| 日韩视频三区| 蜜臀a∨国产成人精品| 欧美偷拍另类| 亚洲国产欧美久久| 久久成年人视频| 日韩视频二区| 老司机亚洲精品| 国产精品一区二区你懂的| 亚洲第一区色| 在线一区二区日韩| 午夜欧美精品久久久久久久| 亚洲国产精品一区制服丝袜 | 久久久国产视频91| 亚洲欧美国产另类| 欧美激情网站在线观看| 欧美一区二区三区喷汁尤物| 亚洲一卡二卡三卡四卡五卡| 久久婷婷国产综合精品青草| 国产精品video| 亚洲美女中出| 欧美国产视频日韩| 久久久久久亚洲综合影院红桃| 国产精品国产三级国产专播精品人| 亚洲欧洲精品成人久久奇米网| 久久久精品五月天| 午夜久久久久久| 国产欧美婷婷中文| 久久精品国产77777蜜臀| 午夜精品福利电影| 国产欧美一区二区在线观看| 欧美一区91| 午夜国产精品影院在线观看 | 激情综合电影网| 久久欧美肥婆一二区| 久久国产88| 免费一级欧美片在线播放| 国产亚洲网站| 久久久一二三| 久久精品国内一区二区三区| 国产一区二区三区高清在线观看| 欧美专区亚洲专区| 久久久久久久久蜜桃| 在线 亚洲欧美在线综合一区| 久久精品成人欧美大片古装| 欧美一区免费视频| 欧美天堂在线观看| 免费成人毛片| 欧美激情影院| 欧美fxxxxxx另类| 国产视频在线观看一区二区| 久久精品国语| 久久综合九色综合久99| 亚洲国产成人午夜在线一区| 欧美成人免费va影院高清| 欧美国产丝袜视频| 狠狠色综合播放一区二区| 久久综合伊人77777| 欧美**人妖| 亚洲一区国产精品| 欧美专区日韩专区| 美女精品网站| 亚洲一区二区三区在线观看视频| 亚洲男人的天堂在线观看| 国产亚洲免费的视频看| 欧美在线一二三四区| 国产一区二区三区精品久久久| 欧美在线视频在线播放完整版免费观看 | 欧美在线亚洲| 亚洲精品无人区| 一区二区三区四区蜜桃| 国产午夜精品全部视频在线播放 | 久久久精品免费视频| 欧美人与性禽动交情品| 欧美一区二区三区精品电影| 久久久人成影片一区二区三区| 99国产精品自拍| 久久精品人人做人人爽电影蜜月| 99re6这里只有精品视频在线观看| 亚洲欧美成人一区二区三区| 国产精品手机视频| 久久久久www| 麻豆久久婷婷| 日韩一级免费观看| 午夜精品av| 久久久久久国产精品mv| 欧美女同在线视频| 另类尿喷潮videofree| 欧美视频日韩| 亚洲欧洲精品一区二区三区波多野1战4| 亚洲精品乱码久久久久久黑人| 国产精品自拍在线| 亚洲精品中文字| 亚洲日本一区二区| 久久午夜色播影院免费高清| 午夜视频在线观看一区| 欧美精品亚洲| 亚洲国产日韩在线一区模特| 狠狠色丁香婷婷综合| 午夜欧美精品| 久久国产精品久久久久久久久久 | 午夜免费在线观看精品视频| 一区二区高清视频| 欧美黑人在线播放| 欧美成人午夜激情在线| 海角社区69精品视频| 亚洲欧美综合国产精品一区| 亚洲欧美春色| 国产精品播放| 亚洲午夜av| 午夜精品婷婷| 国产精品日韩欧美一区二区| 99亚洲视频| 亚洲女优在线| 国产精品毛片va一区二区三区| 夜夜爽夜夜爽精品视频| 亚洲一区3d动漫同人无遮挡| 欧美三级日韩三级国产三级| 99精品欧美一区| 性久久久久久久| 国内综合精品午夜久久资源| 久久精品三级| 欧美黄色大片网站| 日韩视频精品在线观看| 99re66热这里只有精品4| 久久久久一区二区三区四区| 亚洲日本成人女熟在线观看| 亚洲精品一区二区三区樱花| 欧美人成在线视频| 午夜精品视频| 午夜精品久久久久久久99樱桃| 国产精品国产三级国产a| 亚洲欧美日韩精品在线| 久久综合精品国产一区二区三区| 最近看过的日韩成人| 欧美日韩不卡| 午夜影院日韩| 欧美国产欧美综合| 亚洲在线视频免费观看| 国产一区二区三区精品欧美日韩一区二区三区| 欧美在线视频观看免费网站| 欧美成人中文字幕在线| 亚洲影院在线观看| 在线 亚洲欧美在线综合一区| 欧美日韩视频在线一区二区| 亚洲制服少妇| 亚洲日本欧美天堂| 久久国产精品一区二区三区四区 | av成人免费观看| 国产视频一区在线|