61 CWnd* pParent = pWnd->GetParent();
62 if ( pParent == NULL ) {
return false; }
64 pWnd->GetWindowRect(&rc);
65 pParent->ScreenToClient(&rc);
66 int xx = (x < 0) ? rc.left : x;
67 int yy = (y < 0) ? rc.top : y;
68 pWnd->MoveWindow(xx, yy, rc.Width(), rc.Height(), boIsRepaint);
83 if ( ! ::IsWindow(pWnd->
GetSafeHwnd()) ) {
return false; }
84 CWnd* pParent = pWnd->GetParent();
85 if ( pParent == NULL ) {
return false; }
87 pWnd->GetWindowRect(&rc);
88 pParent->ScreenToClient(&rc);
106 pWnd->GetWindowRect(&rcWin);
107 pWnd->GetClientRect(&rcCli);
108 int wx = rcWin.Width() - rcCli.Width();
109 int wy = rcWin.Height() - rcCli.Height();
110 int xx = (cx < 0) ? rcCli.Width() : cx;
111 int yy = (cy < 0) ? rcCli.Height() : cy;
112 return !! pWnd->
SetWindowPos(NULL, 0, 0, wx + xx, wy + yy, SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE);
124 pWnd->GetWindowRect(&winRc);
126 pWnd->GetClientRect(&cliRc);
127 pWnd->ClientToScreen(&cliRc);
128 return cliRc.TopLeft() - winRc.TopLeft();
137 inline void DrawBox(CDC* pDC,
const RECT& rect, CPen& pen)
139 CPen* pOldPen = pDC->SelectObject(&pen);
140 pDC->MoveTo(rect.left, rect.top);
141 pDC->LineTo(rect.right - 1, rect.top);
142 pDC->LineTo(rect.right - 1, rect.bottom - 1);
143 pDC->LineTo(rect.left, rect.bottom - 1);
144 pDC->LineTo(rect.left, rect.top);
145 pDC->SelectObject(pOldPen);
156 inline void DrawBox(CDC* pDC,
const RECT& rect,
int nPenStyle,
int nWidth, COLORREF color)
159 pen.CreatePen(nPenStyle, nWidth, color);
171 DrawBox(pDC, rect, PS_DOT, 1, color);
182 if ( pWndControl != NULL )
185 pWndControl->GetWindowRect(&rect);
186 CWnd* pWnd = pWndControl->GetParent();
189 pWnd->ScreenToClient(&rect);
192 pWnd->RedrawWindow(&rect);
196 pWnd->InvalidateRect(&rect);
218 if ( str.IsEmpty() ) {
return; }
220 pWnd->GetClientRect(&rect);
221 CSize sz(rect.Width(), 0);
269 if ( pWndControl != NULL )
271 CWnd* pWnd = pWndControl->GetParent();
275 pWndControl->GetClientRect(rc);
276 pWndControl->ClientToScreen(rc);
277 pWnd->ScreenToClient(rc);
300 pWnd->SetWindowText(str);
301 if ( str.IsEmpty() ) {
return; }
303 CDC* pDC = pWnd->GetDC();
304 CGdiObject* pOld = pDC->SelectObject(pWnd->GetFont());
306 pDC->SelectObject(pOld);
307 pWnd->ReleaseDC(pDC);
350 CPoint offset = pDC->GetWindowOrg();
351 if ( offset.x == 0 && offset.y == 0 )
353 r = ::ExtSelectClipRgn(*pDC, rgn, mode);
357 HRGN tmp= ::CreateRectRgn(0, 0, 0, 0);
358 ::CombineRgn(tmp, rgn, NULL, RGN_COPY);
359 ::OffsetRgn(tmp, -offset.x, -offset.y);
360 r = ::ExtSelectClipRgn(*pDC, tmp, mode);
394 dwFlags &= ~E_SetLayeredStyle;
399 typedef BOOL (__stdcall *PSETLAYEREDATTR)(HWND, COLORREF, BYTE, DWORD);
401 (pWnd->m_hWnd, crKey, bAlpha, dwFlags);
414 _TnbProcessingFlag = WS_SYSMENU,
415 _TnbWndLong = GWL_STYLE
429 LONG l = ::GetWindowLong(hWnd, _TnbWndLong);
432 l |= _TnbProcessingFlag;
436 l &= ~_TnbProcessingFlag;
438 ::SetWindowLong(hWnd, _TnbWndLong, l);
439 ASSERT( l == ::GetWindowLong(hWnd, _TnbWndLong) );
452 LONG l = ::GetWindowLong(hWnd, _TnbWndLong);
453 return (l & _TnbProcessingFlag) != 0;
462 while ( ::PeekMessage(&msg, NULL, NULL, NULL, PM_NOREMOVE) )
464 AfxGetThread()->PumpMessage();
477 CWnd* pParent = pCtrl->GetParent();
478 if ( pParent != NULL && ::IsWindow(pParent->
GetSafeHwnd()) )
480 WPARAM wp = MAKEWPARAM(pCtrl->GetDlgCtrlID(), cmd);
481 LPARAM lp =
reinterpret_cast<LPARAM
>(pCtrl->
GetSafeHwnd());
482 return pParent->SendMessage(WM_COMMAND, wp, lp);
527 for (HWND hChild = ::GetTopWindow(hWnd); hChild != NULL; hChild = ::GetNextWindow(hChild, GW_HWNDNEXT))
533 if (bDeep && ::GetTopWindow(hChild) != NULL)
536 if ( !
Execute(hChild, bDeep) )
585 virtual void DrawText(CDC* pDC,
const RECT& rect, UINT drawStyle,
const TColor& c, LPCTSTR str)
587 if ( (drawStyle & DT_VCENTER) != 0 )
589 drawStyle &= ~DT_VCENTER;
590 int h = rect.bottom - rect.top;
591 CSize sz(rect.right - rect.left, h);
594 rc.top += (h - sz.cy) / 2;
610 void DrawTextEx(CDC* pDC,
const RECT& rect, UINT drawStyle,
bool boIsEnable, LPCTSTR str)
DWORD GetStyle(void) const
[取得] ウィンドウスタイル取得.
BOOL SetWindowPos(const CWnd *pWndInsertAfter, int x, int y, int cx, int cy, UINT nFlags)
[設定] ウィンドウサイズポジション設定.
BOOL ModifyStyleEx(DWORD dwRemove, DWORD dwAdd, UINT nFlags=0)
[設定] ウィンドウ拡張スタイル変更.
HWND GetSafeHwnd(void) const
[取得] ウィンドウハンドル取得.
bool SetFromClient(HWND hWnd, const RECT &rect, COLORREF backColor=CLR_INVALID)
[設定] クライアントからイメージ設定.
CBitmapHandle GetBitmapHandle(void)
[取得] ビットマップハンドル取得
static bool CalcTextSize(SIZE &_size, HDC dc, UINT drawStyle, LPCTSTR str)
[計算] 文字表示大きさ計算.
static bool DrawTextRect(RECT &_rect, HDC dc, DWORD drawStyle, const POINT &offset, COLORREF color1, COLORREF color2, LPCTSTR str)
[表示] 範囲文字表示.
static DWORD StaticToDrawStyle(DWORD staticStyle)
[変換] StaticスタイルをDrawTextスタイルに変換
void OnCatch(void) const
[表示] 内容表示
virtual void DrawText(CDC *pDC, const RECT &rect, UINT drawStyle, const TColor &c, LPCTSTR str)
[表示] 文字表示.
void SetTextDisableColor(COLORREF color1, COLORREF color2=CLR_INVALID)
[設定] 無効状態テキスト色指定.
void SetTextDeepOffset(int x, int y)
[設定] テキストオフセット設定.
void SetTextColor(COLORREF color1, COLORREF color2=CLR_INVALID)
[設定] テキスト色指定.
TColor m_normalColors
標準状態色
void DrawTextEx(CDC *pDC, const RECT &rect, UINT drawStyle, bool boIsEnable, LPCTSTR str)
[表示] 文字表示.
TColor m_disableColors
無効状態色
CDrawTextBase(void)
コンストラクタ
virtual bool OnFound(HWND hWnd)=0
[通知] 発見.
bool Execute(HWND hWnd, bool bDeep=false)
[実行] 検索開始.
void DrawDottedBox(CDC *pDC, const RECT &rect, COLORREF color)
[表示] 破線箱表示.
void DrawBox(CDC *pDC, const RECT &rect, CPen &pen)
[表示] 箱表示.
void AdjustClientSize(CWnd *pWnd, CDC *pDC, UINT drawStyle, LPCTSTR lpsz, int margin=2)
[設定] クライアントサイズ調整.
bool GetControlPos(CWnd *pWnd, POINT &_po)
[取得] コントロール位置取得.
void SetProcessingFlag(HWND hWnd, bool isEnable)
[設定] 処理済フラグ操作.
bool IsProcessingFlag(HWND hWnd)
[取得] 処理済フラグ取得.
void SetTextForStatic(CWnd *pWnd, LPCTSTR lpsz, int margin=2)
[設定] STATIC 文字列設定&サイズ調整.
CBitmapHandle GetParentImage(CWnd *pWndControl, COLORREF backColor=CLR_INVALID)
[取得] 親画像取得.
LRESULT SendCommandMessage(CWnd *pCtrl, UINT cmd)
[処理] WM_COMMAND送信.
UINT _deprecated StaticToDrawStyle(DWORD staticStyle)
[変換] StaticスタイルをDrawTextスタイルに変換
CPoint GetClientPoint(CWnd *pWnd)
[取得] クライアント位置取得.
bool ChangeClientSize(CWnd *pWnd, int cx=-1, int cy=-1)
[設定] クライアントサイズ設定.
void DrawParent(CWnd *pWndControl, bool boIsRedraw=true)
[表示] 親表示.
bool SetControlPos(CWnd *pWnd, int x, int y, bool boIsRepaint=false)
[設定] コントロール位置設定.
int SelectClipRgnOrg(CDC *pDC, HRGN rgn, int mode=RGN_COPY)
[設定] リージョン設定.
void PumpMessage(void)
[処理] メッセージポンプ
bool SetLayeredWindow(CWnd *pWnd, COLORREF crKey=0, BYTE bAlpha=255, DWORD dwFlags=E_Alpha|E_SetLayeredStyle)
[設定] SetLayeredWindow.
@ E_SetLayeredStyle
WS_EX_LAYERED スタイルを付加します。
@ E_ColorKey
透明色として crKey を使います。
@ E_Alpha
bAlpha を使って、レイヤードウィンドウの不透明度を決定します。
TColor(COLORREF c)
コンストラクタ