<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    weidagang2046的專欄

    物格而后知致
    隨筆 - 8, 文章 - 409, 評論 - 101, 引用 - 0
    數(shù)據(jù)加載中……

    Windows窗口操作函數(shù)

    ?

    從VC提供的MFC類派生圖中我們可以看出窗口的派生關系,派生圖,所有的窗口類都是由CWnd派生。所有CWnd的成員函數(shù)在其派生類中都可以使用。本節(jié)介紹一些常用的功能給大家。

    改變窗口狀態(tài):
    BOOL EnableWindow( BOOL bEnable = TRUE );可以設置窗口的禁止/允許狀態(tài)。BOOL IsWindowEnabled( );可以查詢窗口的禁止/允許狀態(tài)。
    BOOL ModifyStyle( DWORD dwRemove, DWORD dwAdd, UINT nFlags = 0 )/BOOL ModifyStyleEx( DWORD dwRemove, DWORD dwAdd, UINT nFlags = 0 );可以修改窗口的風格,而不需要調用SetWindowLong
    BOOL IsWindowVisible( ) 可以檢查窗口是否被顯示。
    BOOL ShowWindow( int nCmdShow );將改變窗口的顯示狀態(tài),nCmdShow可取如下值:

    • SW_HIDE 隱藏窗口
    • SW_MINIMIZE SW_SHOWMAXIMIZED 最小化窗口
    • SW_RESTORE 恢復窗口
    • SW_SHOW 顯示窗口
    • SW_SHOWMINIMIZED 最大化窗口

    改變窗口位置:
    void MoveWindow( LPCRECT lpRect, BOOL bRepaint = TRUE );可以移動窗口。
    void GetWindowRect( LPRECT lpRect ) ;可以得到窗口的矩形位置。
    BOOL IsIconic( ) ;可以檢測窗口是否已經(jīng)縮為圖標。
    BOOL SetWindowPos( const CWnd* pWndInsertAfter, int x, int y, int cx, int cy, UINT nFlags );可以改變窗口的Z次序,此外還可以移動窗口位置。

    使窗口失效,印發(fā)重繪:
    void Invalidate( BOOL bErase = TRUE );使整個窗口失效,bErase將決定窗口是否產(chǎn)生重繪。
    void InvalidateRect( LPCRECT lpRect, BOOL bErase = TRUE )/void InvalidateRgn( CRgn* pRgn, BOOL bErase = TRUE );將使指定的矩形/多邊形區(qū)域失效。

    窗口查找:
    static CWnd* PASCAL FindWindow( LPCTSTR lpszClassName, LPCTSTR lpszWindowName );可以以窗口的類名和窗口名查找窗口。任一參數(shù)設置為NULL表對該參數(shù)代表的數(shù)據(jù)進行任意匹配。如FindWindow("MyWnd",NULL)表明查找類名為MyWnd的所有窗口。
    BOOL IsChild( const CWnd* pWnd ) 檢測窗口是否為子窗口。
    CWnd* GetParent( ) 得到父窗口指針。
    CWnd* GetDlgItem( int nID ) 通過子窗口ID得到窗口指針。
    int GetDlgCtrlID( ) 得到窗口ID值。
    static CWnd* PASCAL WindowFromPoint( POINT point );將從屏幕上某點坐標得到包含該點的窗口指針。
    static CWnd* PASCAL FromHandle( HWND hWnd );通過HWND構造一個CWnd*指針,但該指針在空閑時會被刪除,所以不能保存供以后使用。

    時鐘:
    UINT SetTimer( UINT nIDEvent, UINT nElapse, void (CALLBACK EXPORT* lpfnTimer)(HWND, UINT, UINT, DWORD) );可以創(chuàng)建一個時鐘,如果lpfnTimer回調函數(shù)為NULL,窗口將會收到WM_TIMER消息,并可以在afx_msg void OnTimer( UINT nIDEvent );中安排處理代碼
    BOOL KillTimer( int nIDEvent );刪除一個指定時鐘。

    可以利用重載來添加消息處理的虛函數(shù):
    afx_msg int OnCreate( LPCREATESTRUCT lpCreateStruct );窗口被創(chuàng)建時被調用
    afx_msg void OnDestroy( );窗口被銷毀時被調用
    afx_msg void OnGetMinMaxInfo( MINMAXINFO FAR* lpMMI );需要得到窗口尺寸時被調用
    afx_msg void OnSize( UINT nType, int cx, int cy );窗口改變大小后被調用
    afx_msg void OnMove( int x, int y );窗口被移動后時被調用
    afx_msg void OnPaint( );窗口需要重繪時時被調用,你可以填如繪圖代碼,對于視圖類不需要重載OnPaint,所有繪圖代碼應該在OnDraw中進行
    afx_msg void OnChar( UINT nChar, UINT nRepCnt, UINT nFlags );接收到字符輸入時被調用
    afx_msg void OnKeyDown/OnKeyUp( UINT nChar, UINT nRepCnt, UINT nFlags );鍵盤上鍵被按下/放開時被調用
    afx_msg void OnLButtonDown/OnRButtonDown( UINT nFlags, CPoint point );鼠標左/右鍵按下時被調用
    afx_msg void OnLButtonUp/OnRButtonUp( UINT nFlags, CPoint point );鼠標左/右鍵放開時被調用
    afx_msg void OnLButtonDblClk/OnRButtonDblClk( UINT nFlags, CPoint point );鼠標左/右鍵雙擊時被調用
    afx_msg void OnMouseMove( UINT nFlags, CPoint point );鼠標在窗口上移動時被調用

    from: http://tech.china.com/zh_cn/netschool/programme/c/656/20001207/01_4e.html

    posted on 2006-11-15 13:57 weidagang2046 閱讀(1816) 評論(0)  編輯  收藏 所屬分類: Windows

    主站蜘蛛池模板: 黄页网站免费观看| 8x成人永久免费视频| 我想看一级毛片免费的| 亚洲一区二区三区亚瑟| 动漫黄网站免费永久在线观看| 亚洲白嫩在线观看| 在线看片v免费观看视频777| 亚洲国产亚洲综合在线尤物| 黄网站色在线视频免费观看| 国产精品亚洲精品观看不卡| 妞干网在线免费观看| 亚洲AV无码一区二区一二区| 国产精品久免费的黄网站| 看一级毛片免费观看视频| 精品国产香蕉伊思人在线在线亚洲一区二区 | 日本亚洲免费无线码| 成人黄动漫画免费网站视频| 在线播放亚洲精品| 亚洲综合av永久无码精品一区二区 | 日韩欧美一区二区三区免费观看| 亚洲国产日韩精品| 免费欧洲毛片A级视频无风险| igao激情在线视频免费| 亚洲成年人在线观看| 波多野结衣免费在线观看| 亚洲av无码专区青青草原| 亚洲人成中文字幕在线观看| 无码av免费网站| 亚洲AV无码国产剧情| 曰韩亚洲av人人夜夜澡人人爽| 18成禁人视频免费网站| 亚洲AV无码成人网站在线观看| 国产亚洲AV手机在线观看| 一色屋成人免费精品网站| 国产成人高清精品免费观看| 亚洲日韩中文字幕天堂不卡| 国产精品无码素人福利免费| 大地资源在线资源免费观看| 波多野结衣亚洲一级| 亚洲精品色午夜无码专区日韩| 成年人免费的视频|