(8) 如何将窗口居中显示?
| Call Function CWnd:: Center Windows Example(1): Center Window( ) //Relative to it's parent // Relative to Screen Example(2): Center Window(CWnd:: GetDesktopWindow( )) //Relative to Application's MainWindow AfxGetMainWnd( ) -> Center Window( ) |
(9) 如何让窗口和 MDI窗口一启动就最大化和最小化? 先说窗口。 在 InitStance 函数中设定 m_nCmdShow的取值.
| m_nCmdShow=SW_SHOWMAXMIZED //最大化 m_nCmdShow=SW_SHOWMINMIZED //最小化 m_nCmdShow=SW_SHOWNORMAL //正常方式 |
MDI窗口: 如果是创建新的应用程序,可以用MFC AppWizard 的Advanced 按钮并在MDI子窗口风格组中检测最大化或最小化还可以重载 MDI Window 的PreCreateWindow函数,设置WS_MAXMIZE or WS_MINMIZE 如果从 CMDIChildWnd派生,调用 OnInitialUpdate函数中的 CWnd::Show Window来指定 MDI Child Window的风格。 (10) 如何限制窗口的大小? 也就是 FixedDialog形式。 Windows发送 WM_GETMAXMININFO消息来跟踪, 响应它,在 OnGetMAXMININFO 中写代码: (11) 如何使窗口不可见? 很简单,用SW_HIDE 隐藏窗口,可以结合 FindWindow,ShowWindow控制. (12) 如何创建一个字回绕的CEditView 重载CWnd : : PreCreateWindow和修改CREATESTRUCT结构,关闭CEditView对象的ES_AUTOHSCROLL和WS_HSCROLL风格位, 由于CEditView : : PreCreateWindow显示设置cs. style,调用基类函数后要修改cs . style。
| BOOL CSampleEDitView : : PreCreateWindow (CREATESTRUCT&cs) { //First call basse class function . BOOL bResutl =CEditView : : PreCreateWindow (cs) // Now specify the new window style . cs.style &= ~ (ES_AUTOHSCROLL |WS_HSCROLL) return bResult } |
(13) 如何使程序保持极小状态? 这么办: 在恢复程序窗体大小时,Windows会发送WM_QUERY-OPEN消息,用 ClassWizard设置成员函数
| OnQueryOpen() ,add following code: Bool CMainFrame:: OnQueryOpen( ) { Return false } |
(14) 移动窗口 调用CWnd : : SetWindowPos并指定SWP_NOSIZE标志。目的位置与父窗口有关(顶层窗口与屏幕有关)。调用CWnd : : MoveWindow时必须要指定窗口的大小。
| //Move window to positoin 100 , 100 of its parent window . SetWindowPos (NULL, 100 , 100 , 0 , 0 , SWP_NOSIZE |SWP_NOAORDER) |
(15) 通用控件的显示窗口 MFC提供了几个CView派生的视窗类, 封装了通用控件的功能,但仍然使用工作框文档显示窗口体系结构:CEditView封装了编辑控件,CTreeView保持了树列表控件,CListView封装了列表显示窗口控件,CRichEditView可以处理多种编辑控件。
|