[SDK] cicuif.h: Refactoring Part 2 (#6330)

Supporting TIPs...
JIRA issue: CORE-19360
- Fix some mistakes of
  CUIFButton::OnMouseIn and
  CUIFButton::OnMouseOut.
- Fix some mistakes of CUIFObject
  and CUIFWindow.
This commit is contained in:
Katayama Hirofumi MZ 2024-01-10 13:13:21 +09:00 committed by GitHub
parent e694e24720
commit 5719896650
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -244,8 +244,8 @@ public:
STDMETHOD_(void, OnMButtonUp)(LONG x, LONG y) { } STDMETHOD_(void, OnMButtonUp)(LONG x, LONG y) { }
STDMETHOD_(void, OnRButtonUp)(LONG x, LONG y) { } STDMETHOD_(void, OnRButtonUp)(LONG x, LONG y) { }
STDMETHOD_(void, OnMouseMove)(LONG x, LONG y) { } STDMETHOD_(void, OnMouseMove)(LONG x, LONG y) { }
STDMETHOD_(void, OnPoint)(LONG x, LONG y) { } STDMETHOD_(void, OnMouseIn)(LONG x, LONG y) { }
STDMETHOD_(void, OnUnPoint)(LONG x, LONG y) { } STDMETHOD_(void, OnMouseOut)(LONG x, LONG y) { }
STDMETHOD_(BOOL, OnSetCursor)(UINT uMsg, LONG x, LONG y); STDMETHOD_(BOOL, OnSetCursor)(UINT uMsg, LONG x, LONG y);
STDMETHOD_(void, GetRect)(LPRECT prc); STDMETHOD_(void, GetRect)(LPRECT prc);
STDMETHOD_(void, SetRect)(LPCRECT prc); STDMETHOD_(void, SetRect)(LPCRECT prc);
@ -449,18 +449,18 @@ public:
STDMETHOD_(void, FillRect)(HDC hDC, LPCRECT prc, INT iColor); STDMETHOD_(void, FillRect)(HDC hDC, LPCRECT prc, INT iColor);
STDMETHOD_(void, FrameRect)(HDC hDC, LPCRECT prc, INT iColor); STDMETHOD_(void, FrameRect)(HDC hDC, LPCRECT prc, INT iColor);
STDMETHOD_(void, DrawSelectionRect)(HDC hDC, LPCRECT prc, int) = 0; STDMETHOD_(void, DrawSelectionRect)(HDC hDC, LPCRECT prc, int) = 0;
STDMETHOD_(INT, GetCtrlFaceOffset)(DWORD, DWORD, LPSIZE pSize) = 0; STDMETHOD_(INT, GetCtrlFaceOffset)(DWORD, DWORD dwDrawFlags, LPSIZE pSize) = 0;
STDMETHOD_(void, DrawCtrlBkgd)(HDC hDC, LPCRECT prc, DWORD unused, DWORD flags) = 0; STDMETHOD_(void, DrawCtrlBkgd)(HDC hDC, LPCRECT prc, DWORD unused, DWORD dwDrawFlags) = 0;
STDMETHOD_(void, DrawCtrlEdge)(HDC hDC, LPCRECT prc, DWORD, DWORD) = 0; STDMETHOD_(void, DrawCtrlEdge)(HDC hDC, LPCRECT prc, DWORD, DWORD) = 0;
STDMETHOD_(void, DrawCtrlText)(HDC hDC, LPCRECT prc, LPCWSTR pszText, INT cchText, DWORD flags, BOOL bRight) = 0; STDMETHOD_(void, DrawCtrlText)(HDC hDC, LPCRECT prc, LPCWSTR pszText, INT cchText, DWORD dwDrawFlags, BOOL bRight) = 0;
STDMETHOD_(void, DrawCtrlIcon)(HDC hDC, LPCRECT prc, HICON hIcon, DWORD flags, LPSIZE pSize) = 0; STDMETHOD_(void, DrawCtrlIcon)(HDC hDC, LPCRECT prc, HICON hIcon, DWORD dwDrawFlags, LPSIZE pSize) = 0;
STDMETHOD_(void, DrawCtrlBitmap)(HDC hDC, LPCRECT prc, HBITMAP hbm1, HBITMAP hbm2, DWORD flags) = 0; STDMETHOD_(void, DrawCtrlBitmap)(HDC hDC, LPCRECT prc, HBITMAP hbm1, HBITMAP hbm2, DWORD dwDrawFlags) = 0;
STDMETHOD_(void, DrawFrameCtrlBitmap)(HDC hDC, LPCRECT prc, HBITMAP hbm1, HBITMAP hbm2, DWORD flags) = 0; STDMETHOD_(void, DrawMenuBitmap)(HDC hDC, LPCRECT prc, HBITMAP hbm1, HBITMAP hbm2, DWORD dwDrawFlags) = 0;
STDMETHOD_(void, DrawMenuSeparator)(HDC hDC, LPCRECT prc) = 0; STDMETHOD_(void, DrawMenuSeparator)(HDC hDC, LPCRECT prc) = 0;
STDMETHOD_(void, DrawFrameCtrlBkgd)(HDC hDC, LPCRECT prc, DWORD unused, DWORD flags) = 0; STDMETHOD_(void, DrawFrameCtrlBkgd)(HDC hDC, LPCRECT prc, DWORD unused, DWORD dwDrawFlags) = 0;
STDMETHOD_(void, DrawFrameCtrlEdge)(HDC hDC, LPCRECT prc, DWORD dw1, DWORD dw2) = 0; STDMETHOD_(void, DrawFrameCtrlEdge)(HDC hDC, LPCRECT prc, DWORD dw1, DWORD dw2) = 0;
STDMETHOD_(void, DrawFrameCtrlIcon)(HDC hDC, LPCRECT prc, HICON hIcon, DWORD flags, LPSIZE pSize) = 0; STDMETHOD_(void, DrawFrameCtrlIcon)(HDC hDC, LPCRECT prc, HICON hIcon, DWORD dwDrawFlags, LPSIZE pSize) = 0;
STDMETHOD_(void, DrawFrameCtrlBitmap2)(HDC hDC, LPCRECT prc, HBITMAP hbm1, HBITMAP hbm2, DWORD flags) = 0; STDMETHOD_(void, DrawFrameCtrlBitmap)(HDC hDC, LPCRECT prc, HBITMAP hbm1, HBITMAP hbm2, DWORD dwDrawFlags) = 0;
STDMETHOD_(void, DrawWndFrame)(HDC hDC, LPCRECT prc, DWORD type, DWORD unused1, DWORD unused2) = 0; STDMETHOD_(void, DrawWndFrame)(HDC hDC, LPCRECT prc, DWORD type, DWORD unused1, DWORD unused2) = 0;
STDMETHOD_(void, DrawDragHandle)(HDC hDC, LPCRECT prc, BOOL bFlag) = 0; STDMETHOD_(void, DrawDragHandle)(HDC hDC, LPCRECT prc, BOOL bFlag) = 0;
STDMETHOD_(void, DrawSeparator)(HDC hDC, LPCRECT prc, BOOL bFlag) = 0; STDMETHOD_(void, DrawSeparator)(HDC hDC, LPCRECT prc, BOOL bFlag) = 0;
@ -484,18 +484,18 @@ public:
STDMETHOD_(INT, CxWndBorder)() override; STDMETHOD_(INT, CxWndBorder)() override;
STDMETHOD_(INT, CyWndBorder)() override; STDMETHOD_(INT, CyWndBorder)() override;
STDMETHOD_(void, DrawSelectionRect)(HDC hDC, LPCRECT prc, int) override; STDMETHOD_(void, DrawSelectionRect)(HDC hDC, LPCRECT prc, int) override;
STDMETHOD_(INT, GetCtrlFaceOffset)(DWORD, DWORD, LPSIZE pSize) override; STDMETHOD_(INT, GetCtrlFaceOffset)(DWORD, DWORD dwDrawFlags, LPSIZE pSize) override;
STDMETHOD_(void, DrawCtrlBkgd)(HDC hDC, LPCRECT prc, DWORD unused, DWORD flags) override; STDMETHOD_(void, DrawCtrlBkgd)(HDC hDC, LPCRECT prc, DWORD unused, DWORD dwDrawFlags) override;
STDMETHOD_(void, DrawCtrlEdge)(HDC hDC, LPCRECT prc, DWORD, DWORD) override; STDMETHOD_(void, DrawCtrlEdge)(HDC hDC, LPCRECT prc, DWORD, DWORD) override;
STDMETHOD_(void, DrawCtrlText)(HDC hDC, LPCRECT prc, LPCWSTR pszText, INT cchText, DWORD flags, BOOL bRight) override; STDMETHOD_(void, DrawCtrlText)(HDC hDC, LPCRECT prc, LPCWSTR pszText, INT cchText, DWORD dwDrawFlags, BOOL bRight) override;
STDMETHOD_(void, DrawCtrlIcon)(HDC hDC, LPCRECT prc, HICON hIcon, DWORD flags, LPSIZE pSize) override; STDMETHOD_(void, DrawCtrlIcon)(HDC hDC, LPCRECT prc, HICON hIcon, DWORD dwDrawFlags, LPSIZE pSize) override;
STDMETHOD_(void, DrawCtrlBitmap)(HDC hDC, LPCRECT prc, HBITMAP hbm1, HBITMAP hbm2, DWORD flags) override; STDMETHOD_(void, DrawCtrlBitmap)(HDC hDC, LPCRECT prc, HBITMAP hbm1, HBITMAP hbm2, DWORD dwDrawFlags) override;
STDMETHOD_(void, DrawFrameCtrlBitmap)(HDC hDC, LPCRECT prc, HBITMAP hbm1, HBITMAP hbm2, DWORD flags) override; STDMETHOD_(void, DrawMenuBitmap)(HDC hDC, LPCRECT prc, HBITMAP hbm1, HBITMAP hbm2, DWORD dwDrawFlags) override;
STDMETHOD_(void, DrawMenuSeparator)(HDC hDC, LPCRECT prc) override; STDMETHOD_(void, DrawMenuSeparator)(HDC hDC, LPCRECT prc) override;
STDMETHOD_(void, DrawFrameCtrlBkgd)(HDC hDC, LPCRECT prc, DWORD unused, DWORD flags) override; STDMETHOD_(void, DrawFrameCtrlBkgd)(HDC hDC, LPCRECT prc, DWORD unused, DWORD dwDrawFlags) override;
STDMETHOD_(void, DrawFrameCtrlEdge)(HDC hDC, LPCRECT prc, DWORD dw1, DWORD dw2) override; STDMETHOD_(void, DrawFrameCtrlEdge)(HDC hDC, LPCRECT prc, DWORD dw1, DWORD dw2) override;
STDMETHOD_(void, DrawFrameCtrlIcon)(HDC hDC, LPCRECT prc, HICON hIcon, DWORD flags, LPSIZE pSize) override; STDMETHOD_(void, DrawFrameCtrlIcon)(HDC hDC, LPCRECT prc, HICON hIcon, DWORD dwDrawFlags, LPSIZE pSize) override;
STDMETHOD_(void, DrawFrameCtrlBitmap2)(HDC hDC, LPCRECT prc, HBITMAP hbm1, HBITMAP hbm2, DWORD flags) override; STDMETHOD_(void, DrawFrameCtrlBitmap)(HDC hDC, LPCRECT prc, HBITMAP hbm1, HBITMAP hbm2, DWORD dwDrawFlags) override;
STDMETHOD_(void, DrawWndFrame)(HDC hDC, LPCRECT prc, DWORD type, DWORD unused1, DWORD unused2) override; STDMETHOD_(void, DrawWndFrame)(HDC hDC, LPCRECT prc, DWORD type, DWORD unused1, DWORD unused2) override;
STDMETHOD_(void, DrawDragHandle)(HDC hDC, LPCRECT prc, BOOL bFlag) override; STDMETHOD_(void, DrawDragHandle)(HDC hDC, LPCRECT prc, BOOL bFlag) override;
STDMETHOD_(void, DrawSeparator)(HDC hDC, LPCRECT prc, BOOL bFlag) override; STDMETHOD_(void, DrawSeparator)(HDC hDC, LPCRECT prc, BOOL bFlag) override;
@ -523,7 +523,7 @@ protected:
CUIFWindow *m_pUnknown7; CUIFWindow *m_pUnknown7;
CUIFObject *m_pCaptured; CUIFObject *m_pCaptured;
CUIFObject *m_pPointed; CUIFObject *m_pPointed;
BOOL m_bPointingStarted; BOOL m_bPointing;
CUIFWindow *m_pPointingWindow; CUIFWindow *m_pPointingWindow;
CUIFToolTip *m_pToolTip; CUIFToolTip *m_pToolTip;
CUIFShadow *m_pShadow; CUIFShadow *m_pShadow;
@ -590,7 +590,7 @@ public:
STDMETHOD_(void, OnThemeChanged)(HWND hWnd, WPARAM wParam, LPARAM lParam); STDMETHOD_(void, OnThemeChanged)(HWND hWnd, WPARAM wParam, LPARAM lParam);
STDMETHOD_(void, UpdateUI)(LPCRECT prc); STDMETHOD_(void, UpdateUI)(LPCRECT prc);
STDMETHOD_(void, SetCapture)(int); STDMETHOD_(void, SetCapture)(int);
STDMETHOD_(void, OnPointingStarted)(UINT uMsg, LONG x, LONG y); STDMETHOD_(void, OnPointingMouse)(UINT uMsg, LONG x, LONG y);
STDMETHOD_(void, OnAnimationStart)(); STDMETHOD_(void, OnAnimationStart)();
STDMETHOD_(void, OnAnimationEnd)(); STDMETHOD_(void, OnAnimationEnd)();
STDMETHOD_(void, HandleMouseMsg)(UINT uMsg, LONG x, LONG y); STDMETHOD_(void, HandleMouseMsg)(UINT uMsg, LONG x, LONG y);
@ -697,10 +697,10 @@ public:
void GetIconSize(HICON hIcon, LPSIZE pSize); void GetIconSize(HICON hIcon, LPSIZE pSize);
void GetTextSize(LPCWSTR pszText, LPSIZE pSize); void GetTextSize(LPCWSTR pszText, LPSIZE pSize);
void OnMouseIn(POINT pt);
void OnMouseOut(POINT pt);
STDMETHOD_(void, Enable)(BOOL bEnable) override; STDMETHOD_(void, Enable)(BOOL bEnable) override;
STDMETHOD_(void, OnMouseIn)(LONG x, LONG y) override;
STDMETHOD_(void, OnMouseOut)(LONG x, LONG y) override;
STDMETHOD_(void, OnLButtonDown)(LONG x, LONG y) override; STDMETHOD_(void, OnLButtonDown)(LONG x, LONG y) override;
STDMETHOD_(void, OnLButtonUp)(LONG x, LONG y) override; STDMETHOD_(void, OnLButtonUp)(LONG x, LONG y) override;
STDMETHOD_(void, OnPaintNoTheme)(HDC hDC) override; STDMETHOD_(void, OnPaintNoTheme)(HDC hDC) override;
@ -1460,16 +1460,17 @@ inline STDMETHODIMP_(void) CUIFSchemeDef::DrawSelectionRect(HDC hDC, LPCRECT prc
} }
/// @unimplemented /// @unimplemented
inline STDMETHODIMP_(INT) CUIFSchemeDef::GetCtrlFaceOffset(DWORD, DWORD, LPSIZE pSize) inline STDMETHODIMP_(INT) CUIFSchemeDef::GetCtrlFaceOffset(DWORD, DWORD dwDrawFlags, LPSIZE pSize)
{ {
return 0; return 0;
} }
inline STDMETHODIMP_(void) CUIFSchemeDef::DrawCtrlBkgd(HDC hDC, LPCRECT prc, DWORD unused, DWORD flags) inline STDMETHODIMP_(void)
CUIFSchemeDef::DrawCtrlBkgd(HDC hDC, LPCRECT prc, DWORD unused, DWORD dwDrawFlags)
{ {
::FillRect(hDC, prc, GetBrush(9)); ::FillRect(hDC, prc, GetBrush(9));
if (!(flags & 0x10) && (flags & 0x2)) if (!(dwDrawFlags & 0x10) && (dwDrawFlags & 0x2))
return; return;
HBRUSH hbrDither = cicCreateDitherBrush(); HBRUSH hbrDither = cicCreateDitherBrush();
@ -1501,7 +1502,7 @@ CUIFSchemeDef::DrawCtrlText(
LPCRECT prc, LPCRECT prc,
LPCWSTR pszText, LPCWSTR pszText,
INT cchText, INT cchText,
DWORD flags, DWORD dwDrawFlags,
BOOL bRight) BOOL bRight)
{ {
COLORREF rgbOldText = ::GetTextColor(hDC); COLORREF rgbOldText = ::GetTextColor(hDC);
@ -1511,7 +1512,7 @@ CUIFSchemeDef::DrawCtrlText(
cchText = lstrlenW(pszText); cchText = lstrlenW(pszText);
RECT rc = *prc; RECT rc = *prc;
if (flags & 0x20) if (dwDrawFlags & 0x20)
{ {
::OffsetRect(&rc, 1, 1); ::OffsetRect(&rc, 1, 1);
::SetTextColor(hDC, ::GetSysColor(COLOR_BTNHIGHLIGHT)); ::SetTextColor(hDC, ::GetSysColor(COLOR_BTNHIGHLIGHT));
@ -1529,14 +1530,14 @@ CUIFSchemeDef::DrawCtrlText(
} }
inline STDMETHODIMP_(void) inline STDMETHODIMP_(void)
CUIFSchemeDef::DrawCtrlIcon(HDC hDC, LPCRECT prc, HICON hIcon, DWORD flags, LPSIZE pSize) CUIFSchemeDef::DrawCtrlIcon(HDC hDC, LPCRECT prc, HICON hIcon, DWORD dwDrawFlags, LPSIZE pSize)
{ {
if (m_dwFlags & 1) if (m_dwFlags & 1)
{ {
HBITMAP hbm1, hbm2; HBITMAP hbm1, hbm2;
if (cicGetIconBitmaps(hIcon, &hbm1, &hbm2, pSize)) if (cicGetIconBitmaps(hIcon, &hbm1, &hbm2, pSize))
{ {
DrawCtrlBitmap(hDC, prc, hbm1, hbm2, flags); DrawCtrlBitmap(hDC, prc, hbm1, hbm2, dwDrawFlags);
::DeleteObject(hbm1); ::DeleteObject(hbm1);
::DeleteObject(hbm2); ::DeleteObject(hbm2);
} }
@ -1544,7 +1545,7 @@ CUIFSchemeDef::DrawCtrlIcon(HDC hDC, LPCRECT prc, HICON hIcon, DWORD flags, LPSI
else else
{ {
UINT uFlags = DST_PREFIXTEXT | DST_TEXT; UINT uFlags = DST_PREFIXTEXT | DST_TEXT;
if (flags & 0x20) if (dwDrawFlags & 0x20)
uFlags |= (DSS_MONO | DSS_DISABLED); uFlags |= (DSS_MONO | DSS_DISABLED);
::DrawState(hDC, 0, 0, (LPARAM)hIcon, 0, prc->left, prc->top, 0, 0, uFlags); ::DrawState(hDC, 0, 0, (LPARAM)hIcon, 0, prc->left, prc->top, 0, 0, uFlags);
} }
@ -1552,15 +1553,15 @@ CUIFSchemeDef::DrawCtrlIcon(HDC hDC, LPCRECT prc, HICON hIcon, DWORD flags, LPSI
/// @unimplemented /// @unimplemented
inline STDMETHODIMP_(void) inline STDMETHODIMP_(void)
CUIFSchemeDef::DrawCtrlBitmap(HDC hDC, LPCRECT prc, HBITMAP hbm1, HBITMAP hbm2, DWORD flags) CUIFSchemeDef::DrawCtrlBitmap(HDC hDC, LPCRECT prc, HBITMAP hbm1, HBITMAP hbm2, DWORD dwDrawFlags)
{ {
//FIXME //FIXME
} }
inline STDMETHODIMP_(void) inline STDMETHODIMP_(void)
CUIFSchemeDef::DrawFrameCtrlBitmap(HDC hDC, LPCRECT prc, HBITMAP hbm1, HBITMAP hbm2, DWORD flags) CUIFSchemeDef::DrawMenuBitmap(HDC hDC, LPCRECT prc, HBITMAP hbm1, HBITMAP hbm2, DWORD dwDrawFlags)
{ {
DrawCtrlBitmap(hDC, prc, hbm1, hbm2, flags); DrawCtrlBitmap(hDC, prc, hbm1, hbm2, dwDrawFlags);
} }
inline STDMETHODIMP_(void) inline STDMETHODIMP_(void)
@ -1576,9 +1577,9 @@ CUIFSchemeDef::DrawMenuSeparator(HDC hDC, LPCRECT prc)
} }
inline STDMETHODIMP_(void) inline STDMETHODIMP_(void)
CUIFSchemeDef::DrawFrameCtrlBkgd(HDC hDC, LPCRECT prc, DWORD unused, DWORD flags) CUIFSchemeDef::DrawFrameCtrlBkgd(HDC hDC, LPCRECT prc, DWORD unused, DWORD dwDrawFlags)
{ {
DrawCtrlBkgd(hDC, prc, unused, flags); DrawCtrlBkgd(hDC, prc, unused, dwDrawFlags);
} }
inline STDMETHODIMP_(void) inline STDMETHODIMP_(void)
@ -1588,15 +1589,15 @@ CUIFSchemeDef::DrawFrameCtrlEdge(HDC hDC, LPCRECT prc, DWORD dw1, DWORD dw2)
} }
inline STDMETHODIMP_(void) inline STDMETHODIMP_(void)
CUIFSchemeDef::DrawFrameCtrlIcon(HDC hDC, LPCRECT prc, HICON hIcon, DWORD flags, LPSIZE pSize) CUIFSchemeDef::DrawFrameCtrlIcon(HDC hDC, LPCRECT prc, HICON hIcon, DWORD dwDrawFlags, LPSIZE pSize)
{ {
DrawCtrlIcon(hDC, prc, hIcon, flags, pSize); DrawCtrlIcon(hDC, prc, hIcon, dwDrawFlags, pSize);
} }
inline STDMETHODIMP_(void) inline STDMETHODIMP_(void)
CUIFSchemeDef::DrawFrameCtrlBitmap2(HDC hDC, LPCRECT prc, HBITMAP hbm1, HBITMAP hbm2, DWORD flags) CUIFSchemeDef::DrawFrameCtrlBitmap(HDC hDC, LPCRECT prc, HBITMAP hbm1, HBITMAP hbm2, DWORD dwDrawFlags)
{ {
DrawFrameCtrlBitmap(hDC, prc, hbm1, hbm2, flags); DrawCtrlBitmap(hDC, prc, hbm1, hbm2, dwDrawFlags);
} }
inline STDMETHODIMP_(void) inline STDMETHODIMP_(void)
@ -1684,11 +1685,11 @@ inline HIMAGELIST CUIFIcon::GetImageList(BOOL bMirror)
SIZE iconSize; SIZE iconSize;
cicGetIconSize(m_hIcon, &iconSize); cicGetIconSize(m_hIcon, &iconSize);
UINT flags = ILC_COLOR32 | ILC_MASK; UINT uFlags = ILC_COLOR32 | ILC_MASK;
if (bMirror) if (bMirror)
flags |= ILC_MIRROR; uFlags |= ILC_MIRROR;
m_hImageList = ImageList_Create(iconSize.cx, iconSize.cy, flags, 1, 0); m_hImageList = ImageList_Create(iconSize.cx, iconSize.cy, uFlags, 1, 0);
if (m_hImageList) if (m_hImageList)
ImageList_ReplaceIcon(m_hImageList, -1, m_hIcon); ImageList_ReplaceIcon(m_hImageList, -1, m_hIcon);
@ -1724,11 +1725,13 @@ inline void CUIFBitmapDC::Uninit(BOOL bKeep)
::SelectObject(m_hDC, m_hOldBitmap); ::SelectObject(m_hDC, m_hOldBitmap);
m_hOldBitmap = NULL; m_hOldBitmap = NULL;
} }
if (m_hOldObject) if (m_hOldObject)
{ {
::SelectObject(m_hDC, m_hOldObject); ::SelectObject(m_hDC, m_hOldObject);
m_hOldObject = NULL; m_hOldObject = NULL;
} }
if (!bKeep) if (!bKeep)
{ {
if (m_hBitmap) if (m_hBitmap)
@ -1790,11 +1793,13 @@ inline void cicDoneUIFUtil(void)
delete CUIFBitmapDC::s_phdcSrc; delete CUIFBitmapDC::s_phdcSrc;
CUIFBitmapDC::s_phdcSrc = NULL; CUIFBitmapDC::s_phdcSrc = NULL;
} }
if (CUIFBitmapDC::s_phdcMask) if (CUIFBitmapDC::s_phdcMask)
{ {
delete CUIFBitmapDC::s_phdcMask; delete CUIFBitmapDC::s_phdcMask;
CUIFBitmapDC::s_phdcMask = NULL; CUIFBitmapDC::s_phdcMask = NULL;
} }
if (CUIFBitmapDC::s_phdcDst) if (CUIFBitmapDC::s_phdcDst)
{ {
delete CUIFBitmapDC::s_phdcDst; delete CUIFBitmapDC::s_phdcDst;
@ -1869,9 +1874,11 @@ cicCreateDisabledBitmap(LPCRECT prc, HBITMAP hbmMask, HBRUSH hbr1, HBRUSH hbr2,
::BitBlt(*CUIFBitmapDC::s_phdcSrc, 0, 0, width, height, *CUIFBitmapDC::s_phdcMask, 0, 0, SRCINVERT); ::BitBlt(*CUIFBitmapDC::s_phdcSrc, 0, 0, width, height, *CUIFBitmapDC::s_phdcMask, 0, 0, SRCINVERT);
if (bPressed) if (bPressed)
BitBlt(*CUIFBitmapDC::s_phdcDst, 1, 1, width, height, *CUIFBitmapDC::s_phdcSrc, 0, 0, SRCPAINT); ::BitBlt(*CUIFBitmapDC::s_phdcDst, 1, 1, width, height,
*CUIFBitmapDC::s_phdcSrc, 0, 0, SRCPAINT);
else else
BitBlt(*CUIFBitmapDC::s_phdcDst, 0, 0, width, height, *CUIFBitmapDC::s_phdcSrc, 0, 0, SRCPAINT); ::BitBlt(*CUIFBitmapDC::s_phdcDst, 0, 0, width, height,
*CUIFBitmapDC::s_phdcSrc, 0, 0, SRCPAINT);
::FillRect(*CUIFBitmapDC::s_phdcSrc, &rc, hbr2); ::FillRect(*CUIFBitmapDC::s_phdcSrc, &rc, hbr2);
@ -2071,7 +2078,7 @@ inline CUIFWindow::CUIFWindow(HINSTANCE hInst, DWORD style)
m_pCaptured = NULL; m_pCaptured = NULL;
m_pUnknown7 = NULL; m_pUnknown7 = NULL;
m_pPointed = NULL; m_pPointed = NULL;
m_bPointingStarted = FALSE; m_bPointing = FALSE;
m_pToolTip = NULL; m_pToolTip = NULL;
m_pShadow = NULL; m_pShadow = NULL;
m_bShowShadow = TRUE; m_bShowShadow = TRUE;
@ -2272,22 +2279,9 @@ CUIFWindow::GetWndStyleEx()
inline STDMETHODIMP_(HWND) inline STDMETHODIMP_(HWND)
CUIFWindow::CreateWnd(HWND hwndParent) CUIFWindow::CreateWnd(HWND hwndParent)
{ {
DWORD style = GetWndStyle(); HWND hWnd = CreateWindowEx(GetWndStyleEx(), GetClassName(), GetWndText(), GetWndStyle(),
LPCTSTR text = GetWndText(); m_nLeft, m_nTop, m_nWidth, m_nHeight,
LPCTSTR clsName = GetClassName(); hwndParent, NULL, m_hInst, this);
DWORD exstyle = GetWndStyleEx();
HWND hWnd = CreateWindowEx(exstyle,
clsName,
text,
style,
m_nLeft,
m_nTop,
m_nWidth,
m_nHeight,
hwndParent,
NULL,
m_hInst,
this);
if (m_pToolTip) if (m_pToolTip)
m_pToolTip->CreateWnd(hWnd); m_pToolTip->CreateWnd(hWnd);
if (m_pShadow) if (m_pShadow)
@ -2352,32 +2346,24 @@ inline void CUIFWindow::SetObjectPointed(CUIFObject *pPointed, POINT pt)
if (m_pCaptured) if (m_pCaptured)
{ {
if (m_pCaptured == m_pPointed) if (m_pCaptured == m_pPointed && m_pPointed->m_bEnable)
{ m_pPointed->OnMouseOut(pt.x, pt.y);
if (m_pPointed->m_bEnable)
m_pPointed->OnUnPoint(pt.x, pt.y);
} }
} else if (m_pPointed && m_pPointed->m_bEnable)
else if (m_pPointed)
{ {
if (m_pPointed->m_bEnable) m_pPointed->OnMouseOut(pt.x, pt.y);
m_pPointed->OnUnPoint(pt.x, pt.y);
} }
m_pPointed = pPointed; m_pPointed = pPointed;
if (m_pCaptured) if (m_pCaptured)
{ {
if (m_pCaptured == m_pPointed) if (m_pCaptured == m_pPointed && m_pPointed->m_bEnable)
{ m_pPointed->OnMouseIn(pt.x, pt.y);
if (m_pPointed->m_bEnable)
m_pPointed->OnPoint(pt.x, pt.y);
} }
} else if (m_pPointed && m_pPointed->m_bEnable)
else if (!m_pPointed)
{ {
if (m_pPointed->m_bEnable) m_pPointed->OnMouseIn(pt.x, pt.y);
m_pPointed->OnPoint(pt.x, pt.y);
} }
} }
@ -2480,14 +2466,14 @@ CUIFWindow::WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
if (m_pPointingWindow) if (m_pPointingWindow)
{ {
m_pPointingWindow->OnPointingStarted(HIWORD(lParam), Point.x, Point.y); m_pPointingWindow->OnPointingMouse(HIWORD(lParam), Point.x, Point.y);
return TRUE; return TRUE;
} }
if (!m_bPointingStarted) if (!m_bPointing)
{ {
::SetTimer(m_hWnd, POINTING_TIMER_ID, 1000, NULL); ::SetTimer(m_hWnd, POINTING_TIMER_ID, 1000, NULL);
m_bPointingStarted = TRUE; m_bPointing = TRUE;
} }
if (m_pToolTip) if (m_pToolTip)
@ -2574,12 +2560,12 @@ CUIFWindow::WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
if (::PtInRect(&rc, pt) && ::WindowFromPoint(pt) == m_hWnd) if (::PtInRect(&rc, pt) && ::WindowFromPoint(pt) == m_hWnd)
{ {
m_pPointingWindow->OnPointingStarted(WM_MOUSEMOVE, pt2.x, pt2.y); m_pPointingWindow->OnPointingMouse(WM_MOUSEMOVE, pt2.x, pt2.y);
} }
else else
{ {
::KillTimer(m_hWnd, POINTING_TIMER_ID); ::KillTimer(m_hWnd, POINTING_TIMER_ID);
m_bPointingStarted = FALSE; m_bPointing = FALSE;
SetObjectPointed(NULL, pt2); SetObjectPointed(NULL, pt2);
OnPointingEnded(pt2.x, pt2.y); OnPointingEnded(pt2.x, pt2.y);
} }
@ -2611,10 +2597,9 @@ CUIFWindow::WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
case WM_RBUTTONUP: case WM_RBUTTONUP:
{ {
if (m_pPointingWindow) if (m_pPointingWindow)
m_pPointingWindow->OnPointingStarted(uMsg, (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam)); m_pPointingWindow->OnPointingMouse(uMsg, (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam));
else else
HandleMouseMsg(uMsg, (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam)); HandleMouseMsg(uMsg, (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam));
break; break;
} }
case WM_KEYUP: case WM_KEYUP:
@ -2989,7 +2974,7 @@ CUIFWindow::OnEraseBkGnd(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
} }
inline STDMETHODIMP_(void) inline STDMETHODIMP_(void)
CUIFWindow::OnPointingStarted(UINT uMsg, LONG x, LONG y) CUIFWindow::OnPointingMouse(UINT uMsg, LONG x, LONG y)
{ {
} }
@ -3782,7 +3767,7 @@ CUIFButton::OnLButtonUp(LONG x, LONG y)
} }
} }
inline void CUIFButton::OnMouseIn(POINT pt) inline void CUIFButton::OnMouseIn(LONG x, LONG y)
{ {
if ((m_style & 0x30) == UIF_STYLE_TOOLTIP) if ((m_style & 0x30) == UIF_STYLE_TOOLTIP)
{ {
@ -3800,7 +3785,7 @@ inline void CUIFButton::OnMouseIn(POINT pt)
} }
} }
inline void CUIFButton::OnMouseOut(POINT pt) inline void CUIFButton::OnMouseOut(LONG x, LONG y)
{ {
if ((m_style & 0x30) == UIF_STYLE_TOOLTIP) if ((m_style & 0x30) == UIF_STYLE_TOOLTIP)
SetStatus(0); SetStatus(0);