?? vcc84.htm
字號:
<html>
<head>
<title>c++系列</title>
<meta content="text/html; charset=gb2312" http-equiv=Content-Type>
</head>
<p align="center"><script src="../../1.js"></script></a>
<body bgcolor="#ffffff" leftmargin="5" topmargin="1" marginheight="5" marginwidth="5">
<div align=center>
<table border=0 cellpadding=0 cellspacing=0 width=680 align="center">
<tbody>
<tr>
<td width=200 height="59">
</tr>
</tbody>
</table>
<table border=1 bordercolordark=#ffffff bordercolorlight=#ffffff cellpadding=0
cellspacing=0 width=685 align="center" height="70">
<tbody>
<tr>
<td bgcolor=#F9D23C height=14>
<div align=center class=H1><font color="#FFFFFF">General Window</font></div>
</td>
</tr>
<tr valign=top>
<td class=H1 height=51>
<p align="left">從VC提供的MFC類派生圖中我們可以看出窗口的派生關系,所有的窗口類都是由CWnd派生。所有CWnd的成員函數在其派生類中都可以使用。本節介紹一些常用的功能給大家。
</p>
<p class="unnamed1"><b>改變窗口狀態:</b><br>
BOOL EnableWindow( BOOL bEnable = TRUE );可以設置窗口的禁止/允許狀態。BOOL IsWindowEnabled(
);可以查詢窗口的禁止/允許狀態。 <br>
BOOL ModifyStyle( DWORD dwRemove, DWORD dwAdd, UINT nFlags = 0 )/BOOL
ModifyStyleEx( DWORD dwRemove, DWORD dwAdd, UINT nFlags = 0 );可以修改窗口的風格,而不需要調用SetWindowLong
<br>
BOOL IsWindowVisible( ) 可以檢查窗口是否被顯示。 <br>
BOOL ShowWindow( int nCmdShow );將改變窗口的顯示狀態,nCmdShow可取如下值:
<ul>
<li class="unnamed1"><b>SW_HIDE</b> 隱藏窗口
<li class="unnamed1"><b>SW_MINIMIZE SW_SHOWMAXIMIZED</b> 最小化窗口
<li class="unnamed1"><b>SW_RESTORE</b> 恢復窗口
<li class="unnamed1"><b>SW_SHOW</b> 顯示窗口
<li class="unnamed1"><b>SW_SHOWMINIMIZED</b> 最大化窗口 </li>
</ul>
<p></p>
<p class="unnamed1"><b>改變窗口位置:</b><br>
void MoveWindow( LPCRECT lpRect, BOOL bRepaint = TRUE );可以移動窗口。<br>
void GetWindowRect( LPRECT lpRect ) ;可以得到窗口的矩形位置。<br>
BOOL IsIconic( ) ;可以檢測窗口是否已經縮為圖標。<br>
BOOL SetWindowPos( const CWnd* pWndInsertAfter, int x, int y, int cx,
int cy, UINT nFlags );可以改變窗口的Z次序,此外還可以移動窗口位置。 </p>
<p class="unnamed1"><b>使窗口失效,印發重繪:</b><br>
void Invalidate( BOOL bErase = TRUE );使整個窗口失效,bErase將決定窗口是否產生重繪。<br>
void InvalidateRect( LPCRECT lpRect, BOOL bErase = TRUE )/void InvalidateRgn(
CRgn* pRgn, BOOL bErase = TRUE );將使指定的矩形/多邊形區域失效。 </p>
<p class="unnamed1"><b>窗口查找:</b> <br>
static CWnd* PASCAL FindWindow( LPCTSTR lpszClassName, LPCTSTR lpszWindowName
);可以以窗口的類名和窗口名查找窗口。任一參數設置為NULL表對該參數代表的數據進行任意匹配。如FindWindow("MyWnd",NULL)表明查找類名為MyWnd的所有窗口。
<br>
BOOL IsChild( const CWnd* pWnd ) 檢測窗口是否為子窗口。 <br>
CWnd* GetParent( ) 得到父窗口指針。 <br>
CWnd* GetDlgItem( int nID ) 通過子窗口ID得到窗口指針。 <br>
int GetDlgCtrlID( ) 得到窗口ID值。 <br>
static CWnd* PASCAL WindowFromPoint( POINT point );將從屏幕上某點坐標得到包含該點的窗口指針。
<br>
static CWnd* PASCAL FromHandle( HWND hWnd );通過HWND構造一個CWnd*指針,但該指針在空閑時會被刪除,所以不能保存供以后使用。
</p>
<p class="unnamed1"><b>時鐘:</b><br>
UINT SetTimer( UINT nIDEvent, UINT nElapse, void (CALLBACK EXPORT* lpfnTimer)(HWND,
UINT, UINT, DWORD) );可以創建一個時鐘,如果lpfnTimer回調函數為NULL,窗口將會收到WM_TIMER消息,并可以在afx_msg
void OnTimer( UINT nIDEvent );中安排處理代碼 <br>
BOOL KillTimer( int nIDEvent );刪除一個指定時鐘。 </p>
<p class="unnamed1"><b>可以利用重載來添加消息處理的虛函數:</b> <br>
afx_msg int OnCreate( LPCREATESTRUCT lpCreateStruct );窗口被創建時被調用 <br>
afx_msg void OnDestroy( );窗口被銷毀時被調用 <br>
afx_msg void OnGetMinMaxInfo( MINMAXINFO FAR* lpMMI );需要得到窗口尺寸時被調用 <br>
afx_msg void OnSize( UINT nType, int cx, int cy );窗口改變大小后被調用 <br>
afx_msg void OnMove( int x, int y );窗口被移動后時被調用 <br>
afx_msg void OnPaint( );窗口需要重繪時時被調用,你可以填如繪圖代碼,對于視圖類不需要重載OnPaint,所有繪圖代碼應該在OnDraw中進行
<br>
afx_msg void OnChar( UINT nChar, UINT nRepCnt, UINT nFlags );接收到字符輸入時被調用
<br>
afx_msg void OnKeyDown/OnKeyUp( UINT nChar, UINT nRepCnt, UINT nFlags
);鍵盤上鍵被按下/放開時被調用 <br>
afx_msg void OnLButtonDown/OnRButtonDown( UINT nFlags, CPoint point
);鼠標左/右鍵按下時被調用 <br>
afx_msg void OnLButtonUp/OnRButtonUp( UINT nFlags, CPoint point );鼠標左/右鍵放開時被調用
<br>
afx_msg void OnLButtonDblClk/OnRButtonDblClk( UINT nFlags, CPoint point
);鼠標左/右鍵雙擊時被調用 <br>
afx_msg void OnMouseMove( UINT nFlags, CPoint point );鼠標在窗口上移動時被調用 </p>
<div align="left"> </div>
</td>
</tr>
</tbody>
</table>
</div>
<p align="center"><script src="../../2.js"></script></a>
</body>
</html>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -