发信人: mendy.bbs@bbs.nju.edu.cn (孟迪), 信区: cnprogram
标  题: vc编程指南68篇(2) (转载) 
发信站: nju_bbs (Sun Apr 19 13:45:00 1998)
转信站: Lilac!ustcnews!nju_bbs

2m发信人:m TINA (终极宝物)
2m信  区:m RAD
2m标  题:m  VC编程技巧68篇(2)
2m发信站:m '3m紫金飞鸿m' (Mon Apr  6 08:33:35 1998) , 5m站内信件m

[返回首页] [分类讨论区] [全部讨论区]

发信人: knofler (Break Heart), 信区: Visual 
标  题: vc编程指南68篇(2) (转载) 
发信站: BBS 水木清华站 (Sun Oct 19 22:23:27 1997) 

【 以下文字转载自 Programming 讨论区 】 
【 原文由 knofler 所发表 】 

  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); 
           } 


    待续... 还有好多东东 


    

-- 
※ 修改:·knofler 於 Oct 19 22:23:17 修改本文·[FROM: concerto.ncic.a] 
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: concerto.ncic.a] 

                         [返回首页] [分类讨论区] [全部讨论区]

--
m;37m※ 来源:·紫金飞鸿 bbs.njupt.edu.cn·[FROM: pc05.info.njupt]m

--
※ 来源:.南大小百合信息交换站 bbs.nju.edu.cn.[FROM: a507yjh.nju.edu]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.934毫秒