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

  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>
            久久精品99国产精品日本| 亚洲国产精品一区二区第一页| 亚洲免费大片| 亚洲福利久久| 欧美精品久久一区二区| 在线亚洲欧美视频| 亚洲欧美一区二区原创| 国产一区二区三区四区三区四| 久久这里只有| 欧美激情精品久久久久久黑人| 一区二区三区欧美成人| 亚洲一区二区精品视频| 亚洲高清视频在线观看| 欧美日韩网址| 久久不射2019中文字幕| 久久婷婷人人澡人人喊人人爽| 99精品视频免费| 亚洲免费影视| 亚洲激情视频网站| 亚洲一区二三| 亚洲精品女av网站| 亚洲综合欧美| 亚洲欧洲日夜超级视频| 亚洲欧美激情在线视频| 亚洲精品国产精品乱码不99| 一区二区三欧美| 亚洲成人在线视频网站| 一本色道久久88综合日韩精品 | 亚洲伊人网站| 亚洲高清在线精品| 亚洲午夜在线观看视频在线| 在线观看日韩专区| 这里是久久伊人| 亚洲三级色网| 久久精品一区二区国产| 亚洲欧美另类中文字幕| 女同性一区二区三区人了人一| 亚洲影院色无极综合| 欧美成人精品在线| 久久美女艺术照精彩视频福利播放| 欧美日本中文| 欧美国产欧美亚州国产日韩mv天天看完整| 欧美视频精品在线观看| 亚洲国产合集| 亚洲国产精品视频一区| 欧美一区二区三区婷婷月色| 亚洲欧美精品在线观看| 欧美另类高清视频在线| 欧美黑人一区二区三区| 永久久久久久| 久久久国际精品| 久久精品日韩欧美| 国产日韩欧美综合在线| 亚洲男女自偷自拍图片另类| 亚洲女同性videos| 欧美日韩一区二区三区高清| 亚洲欧洲精品一区二区精品久久久| 影音先锋国产精品| 久久久久国内| 美女久久网站| 亚洲国产精品99久久久久久久久| 久久免费视频在线观看| 久久综合99re88久久爱| 极品少妇一区二区三区| 久久精品91久久久久久再现| 米奇777超碰欧美日韩亚洲| 激情久久婷婷| 免费不卡在线观看av| 亚洲第一在线综合网站| 日韩视频一区二区在线观看 | 一区二区三区 在线观看视| 一区二区免费在线观看| 亚洲福利视频二区| 国产精品色在线| 欧美国产日本韩| 亚洲人成亚洲人成在线观看| 欧美成人中文字幕| 亚洲欧洲在线看| 亚洲在线视频| 国产午夜精品视频免费不卡69堂| 欧美在线日韩精品| 欧美jizz19性欧美| 99国产一区| 国产精品私房写真福利视频| 欧美亚洲在线视频| 米奇777超碰欧美日韩亚洲| 亚洲日本成人网| 欧美天天综合网| 欧美一区2区视频在线观看| 免费一级欧美在线大片| 在线综合亚洲欧美在线视频| 国产精品一区二区三区久久久 | 欧美成人午夜视频| 夜夜夜精品看看| 国产欧美丝祙| 欧美国产三区| 欧美一区二区三区在线观看视频| 欧美激情五月| 欧美在线国产精品| 亚洲日本激情| 国产自产精品| 欧美深夜福利| 久久深夜福利免费观看| 一本大道久久a久久精品综合| 久久久久久久综合狠狠综合| 亚洲精品一二三区| 国产一区二区三区免费不卡 | 欧美在线视频全部完| 亚洲久久视频| 美国三级日本三级久久99| 亚洲欧美日韩精品久久| 亚洲人成小说网站色在线| 国产一区二区三区在线播放免费观看 | 日韩午夜在线视频| 噜噜噜躁狠狠躁狠狠精品视频 | 亚洲黄色成人| 乱中年女人伦av一区二区| 亚洲一区日韩| 亚洲美女精品一区| 亚洲高清在线精品| 国产一区二区三区最好精华液| 欧美日韩精品一区二区在线播放| 久久久在线视频| 久久国产精品99国产精| 亚洲欧美日韩国产成人| 国产精品久久国产精品99gif | 999亚洲国产精| 一区二区三区免费网站| 激情婷婷亚洲| 亚洲欧美在线免费| 一本久久青青| 欧美精品二区| 亚洲国产美国国产综合一区二区| 国产欧美一区二区色老头| 亚洲精品久久久蜜桃| 亚洲国产精品999| 在线精品一区| 日韩系列欧美系列| 免费不卡亚洲欧美| 欧美激情欧美狂野欧美精品 | 久热精品视频在线观看| 亚洲狠狠丁香婷婷综合久久久| 久久精品在线免费观看| 欧美亚洲免费电影| 午夜精品视频在线观看一区二区| 亚洲天堂成人| 亚洲欧美另类在线| 亚洲欧美中日韩| 久久精品2019中文字幕| 久久亚洲综合网| 欧美国产91| 国产精品乱码一区二区三区| 国产九九精品视频| 国语自产精品视频在线看一大j8 | 久久五月婷婷丁香社区| 免费黄网站欧美| 欧美日韩精品二区第二页| 欧美午夜精品久久久久免费视| 国产精品日本精品| 国精品一区二区| 亚洲欧洲一二三| 亚洲欧美国产日韩天堂区| 久久久精品欧美丰满| 欧美成人亚洲| 中文在线不卡| 久久九九热re6这里有精品| 欧美激情视频在线播放 | 美女精品在线观看| 欧美视频手机在线| 国内自拍亚洲| 宅男噜噜噜66国产日韩在线观看| 欧美一进一出视频| 亚洲电影观看| 亚洲中午字幕| 欧美福利网址| 国产欧美在线看| 亚洲蜜桃精久久久久久久| 欧美影院成年免费版| 欧美国产精品中文字幕| 亚洲视频在线观看视频| 另类欧美日韩国产在线| 国产精品久久久久久久久久久久久久 | 久久久亚洲人| 在线综合亚洲欧美在线视频| 久久免费99精品久久久久久| 国产精品免费aⅴ片在线观看| 亚洲黄色av| 久久精品男女| 一区二区三区免费观看| 免费看的黄色欧美网站| 国产一区二区三区在线观看免费 | 亚洲国产精品久久久久婷婷老年| 亚洲免费视频在线观看| 欧美精品久久99久久在免费线| 精品51国产黑色丝袜高跟鞋| 亚洲欧美成人网| av成人免费在线| 欧美成人嫩草网站| 一区一区视频| 久久久激情视频|