孙鑫VC课第九节笔记

来源:互联网 发布:钱学森 知乎 编辑:程序博客网 时间:2024/04/29 10:19

一.1.修改框架窗口,在窗口创建之前用

     BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)

    // 单文档的标题,是子窗口的标题想要改变,与原来的取反

        //cs.style&=~FWS_ADDTOTITLE;  与原来的取反,

        //cs.style=WS_OVERLAPPEDWINDOW;

     2.如果窗口已创建:在OnCreate 中用SetWindowLong(窗口句柄,要改的量,新的量)

                                要改的量:GWL_STYLE  窗口的外观

                                                        窗口句柄,m_hWnd//与窗口相关的窗口句柄

                        GetWindowLong,获的指定窗口的信息(窗口句柄,获的什么信息)                                                 返回要获信息

                                      SetWindowLong(m_hWnd,GWL_STYLE,GetWindowLong(m_hWnd,GWL_STYLE)                                                            &~WS_MAXIMIZEBOX);

                   改变窗口的光标和背景,在窗口类中完成的。

                                   要想改变,注册一个自己的类,

                                                 wndcls.cbClsExtra=0;

                                 wndcls.cbWndExtra=0;

                                 wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);

                                 wndcls.hCursor=LoadCursor(NULL,IDC_HELP);

                                 wndcls.hIcon=LoadIcon(NULL,IDI_ERROR);

                                 wndcls.hInstance=AfxGetInstanceHandle();//获的当前实例的句柄

                                 wndcls.lpfnWndProc=::DefWindowProc;用缺省的窗口过程,用全局

                                 wndcls.lpszClassName="sunxin.org";类名

                                 wndcls.lpszMenuName=NULL;菜单名字

                                 wndcls.style=CS_HREDRAW | CS_VREDRA//窗口类的类型

                                 RegisterClass(&wndcls);//注册窗口类

 

                                 cs.lpszClass="sunxin.org";*/

                       另外,光标和背景是应用程序类所控制的,应用程序类在框架类之上,框架类                    可改图标

                    也可用AfxRegisterWndClass

                                 cs.lpszClass=AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW);

3.如果窗口已创建:SetClassLong(OnCreat)

                                   SetWindowLong(m_hWnd,GWL_STYLE,WS_OVERLAPPEDWINDOW);

              加载Icon

              m_hIcons[0]=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON1));

              m_hIcons[1]=LoadIcon(theApp.m_hInstance,MAKEINTRESOURCE(IDI_ICON2));

              m_hIcons[2]=LoadIcon(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDI_ICON3));

              小技巧:index=++index%3

4.工具栏编程:

        1)加入分割符方法;

        2)框架类创造工具栏方法(MSDN);

        A.加入一个工具栏资源;

        B.构建一个对像;

        C.调用Creat createx

        D.调用loadToolbar

        E.EnableDockingDockToolControlbar

        F. if(m_newToolBar.IsWindowVisible())

              {

                  m_newToolBar.ShowWindow(SW_HIDE);

              }

                   else

               {   

                   m_newToolBar.ShowWindow(SW_SHOW);

                   }

               RecalcLayout();//调整

               DockControlBar(&m_newToolBar)//停靠工具栏

            ShowControlBar(&m_newToolBar,!m_newToolBar.IsWindowVisible(),FALSE);   

              pCmdUI->SetCheck(m_newToolBar.IsWindowVisible());显示复选

5.状态栏

     1CStatusBar类己定义要想修改 在indicators中增加ID,定义一个字符串资源;再

              f (!m_wndStatusBar.Create(this) ||

                  !m_wndStatusBar.SetIndicators(indicators,

                  sizeof(indicators)/sizeof(UINT)))

                   {

                   TRACE0("Failed to create status bar/n");

                        return -1;      // fail to create

              }

         2)获得时间

                   CTime t=CTime::GetCurrentTime();

                   CString str=t.Format("%H:%M:%S");             

         3)最后要   index=m_wndStatusBar.CommandToIndex(IDS_TIMER);/获得INDEX

                       m_wndStatusBar.SetPaneInfo(index,IDS_TIMER,SBPS_NORMAL,sz.cx)//设置指示器                       面版的参数

                        m_wndStatusBar.SetPaneText(index,str);

         4Cprogressctrl sendmessage,postmessage,PBS_SMOOTH,WM_USER, SetWindowPossetstepstepit,setrange,临时和持久的窗

              详见MSDNt和(

              http://www.hongen.com/pc/program/apitutor/api0011/api01.htm

               ((CMainFrame*)GetParent())->m_wndStatusBar.SetWindowText(str);

               ((CMainFrame*)GetParent())->SetMessageText(str);

               ((CMainFrame*)GetParent())->GetMessageBar()->SetWindowText(str);

                   GetParent()->GetDescendantWindow(AFX_IDW_STATUS_BAR)->SetWindowText(str);

                   CView::OnMouseMove(nFlags, point);

6.启动画面添加组件splash screen

原创粉丝点击