荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Peter (小飞侠), 信区: Program
标  题: vc编程指南68篇(2) (转载)
发信站: BBS 荔园晨风站 (Tue Jan 26 22:32:59 1999), 转信


  9-16: 对窗口的 控制

  9. 如何改变窗口的 图标?
    向窗口发送 WM_SECTION消息。
    Example:
      HICON hIcon=AfxGetApp() ->LoadIcon(IDI_ICON);
      ASSERT(hIcon);
      AfxGetMainWnd() ->SendMessage(WM_SECTION,TRUE,(LPARAM) hIcon);

10. 如何改变窗口的 缺省风格?
      重栽 CWnd:: PreCreateWindow 并修改CREATESTRUCT结构来指定窗口风格和其

     创建信息.
     Example: Delete "Max" Button and Set Original Window's Position and
Size

      BOOL CMainFrame::  PreCreateWindow (CREATESTRUCT &cs)
      {
       cs.style &=~WS_MAXINIZEMOX;

       cs.x=cs.y=0;
       cs.cx=GetSystemMetrics(SM_CXSCREEN/2);
       cs.cy=GetSystemMetrics(SM_CYSCREEN/2);

        return CMDIFramewnd ::PreCreateWindow(cs);

      }

  11.  如何将窗口居中显示?
        Easy, 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( );

   12. 如何让窗口和 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的 风格。

   13. 如何使程序保持极小状态?
       很有意思的 问题
        这么办: 在恢复程序窗体大小时, Windows会发送WM_QUERY-OPEN消息,
        用 ClassWizard设置成员函数 OnQueryOpen() ,add following code:
            Bool CMainFrame:: OnQueryOpen( )
              {
                 Return false;
              }

   14. 如何限制窗口的 大小?
      也就是 FixedDialog形式。  Windows 发送 WM_GETMAXMININFO消息来跟踪,
    响应它,在 OnGetMAXMININFO 中写代码:

   15.  如何使窗口不可见?
    很简单,用SW_HIDE 隐藏窗口,可以结合 FindWindow,ShowWindow 控制.

   16. 如何使窗口始终在最前方?
      两种途径.
       BringWindowToTop(Handle);
       SetWindowPos函数,指定窗口的 最顶风格,用WS_EX_TOPMOST扩展窗口的 风格


       Example:
         void  ToggleTopMost( CWnd *pWnd)
          {
             ASSERT_VALID(pWnd);
             pWnd ->SetWindowPos(pWnd-> GetStyle( ) &WS_EX_TOPMOST)?
              &wndNoTopMOST: &wndTopMost,0,0,0,0,SSP_NOSIZE|WSP_NOMOVE);
           }


    待续... 还有好多东东




--
※ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.1.3]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店