开始学习VC

1、VC单文档的4个主要的类

文档类 (CDocument)负责程序数据的读取、写入和存储;

视图类 (CView)负责处理用户输入和管理视图窗口,显示程序数据;

主框架类 (CMainFrame) 负责管理主程序窗口。

应用程序类 (CWinApp) 管理整个程序。

 

2、视图类如何从文档类获取数据?

CxxxDoc *pDoc = GetDocument(); //获取文档类指针

ASSERT_VALID(pDoc);

 

3、设备描述表(CDC)?

提供将输出显示在设备上的一组成员函数。

 

4、程序控制流程

     a、CWinApp类构造函数

     b、WinMain

     c、InitInstance

     d、消息循环

     e、消息退出

 

5、如何获取应用程序类对象的指针?

    AfxGetApp()函数

 

6、命令消息可用四个主程序类(视图、文档、主帧窗口和应用程序类)的任何类处理

 

7、菜单命令消息的处理器

     COMMAND UPDATE UI消息:在包含该命令的弹出菜单显示之前发出;

     COMMAND消息:在用户选择菜单命令时发出。

 

8、MFC类提供的FILE菜单的New、Open、Save、Save As是最近使用文件命令的消息处理器。因此不需要用ClassWizard定义这些命令的处理器。但需要编码支持MFC消息处理器

 

9、窗口类的设计、注册、显示、更新封装在AfxEndDeferRegisterClass函数中

 

10、MFC处理过程

     theApp

     theApp构造函数

     WinMain

     InitialInstance

     AfxEndDeferRegisterClass ---- 注册窗口

     PreCreateWindow

     CFrameWnd::Create ---- 创建窗口

     ShowWindow

     UpdateWindow

     pThread->run ---- 消息循环

     PumpMessage ----

     -->获取消息

     -->转换消息

     -->路由消息

     -->默认窗口处理函数处理(实际由消息映射来进行处理)

 

11、一个MFC程序的四个类(CMainFrame、CXXXDoc、CXXXView、CXXXApp)是如何组织在一起的?

       在CXXXAPP::InitInstance()中,使用CSingleDocTemplate *pDocTemplate = new CSingleDocTemplate(

           IDR_MAINFRAME,

           RUNTIME_CLASS(CXXXDoc ),

           RUNTIME_CLASS(CMainFrame ),

           RUNTIME_CLASS(CXXXView ),

        );

        AddDocTemplate(pDocTemplate);

        将四个类有机的组合起来。

 

12、画图相关的操作

       /*

       HDC hdc;
       hdc=::GetDC(m_hWnd);
       MoveToEx(hdc,m_ptOrigin.x,m_ptOrigin.y,NULL);
       LineTo(hdc,point.x,point.y);
       ::ReleaseDC(m_hWnd,hdc);

        */

       /*

       CDC *pDC=GetDC();
       pDC->MoveTo(m_ptOrigin);
       pDC->LineTo(point);
       ReleaseDC(pDC);

       */

       //CClientDC dc(this);
       /*

       CClientDC dc(GetParent());
       dc.MoveTo(m_ptOrigin);
       dc.LineTo(point);

       */

    //CWindowDC dc(this);
    //CWindowDC dc(GetParent());
    /*CWindowDC dc(GetDesktopWindow());
    dc.MoveTo(m_ptOrigin);
    dc.LineTo(point);*/
    /*CPen pen(PS_DOT,1,RGB(0,255,0));
    CClientDC dc(this);
    CPen *pOldPen=dc.SelectObject(&pen);
    dc.MoveTo(m_ptOrigin);
    dc.LineTo(point);
    dc.SelectObject(pOldPen);*/
//    CBrush brush(RGB(255,0,0));

    /*CBitmap bitmap;
    bitmap.LoadBitmap(IDB_BITMAP1);
    CBrush brush(&bitmap);*/
    /*CClientDC dc(this);
    //dc.FillRect(CRect(m_ptOrigin,point),&brush);
    CBrush *pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
    CBrush *pOldBrush=dc.SelectObject(pBrush);
    dc.Rectangle(CRect(m_ptOrigin,point));
    dc.SelectObject(pOldBrush);*/
    m_bDraw=FALSE;

 

13、画图使用到的工具

       CPen

       CBrush

 

14、CXXXView::OnDraw(CDC *pDc)

       视图产生、变化是进行重绘的函数。

 

15、字符串类CSting、字体类CFont

 

16、消息的分类

       标准消息 :所有除WM_COMMAND外以开头的消息。从CWnd派生的类,均可以接收标准消息。

       命令消息 :来自菜单、加速键或工具栏按钮的消息。这类消息均以WM_COMMAND呈现,在MFC中,不同消息的通过菜单项的ID区分;

                      在SDK中,通过wParam参数区分。从CCmdTarget派生的类,均可以接收命令消息。

      通告消息 :由控件产生的消息,用于向其父窗口(通常是对话框)通知事件的发生。这类消息也是以WM_COMMAND的形式呈现。从

                     CCmdTarget派生的类,均可以接收通知消息。

 

17、对菜单消息的响应顺序:view>doc>mainframe>app

        菜单可以静态创建、也可以动态创建。

        AppendMenu

 

 18、集合类

 19、GetActiveView获取当前视图类指针

 20、静态菜单和动态菜单

 21、命令消息的路由

 21、对话框相关的操作通过CDialog类来完成

 22、对话框分为模态对话框和非模态对话框

        模态对话框:模态对话框运行时,应用程序暂停,直到模态对话框关闭为止。模态对话框的关闭由CDialog::EndDialog来完成。

        非模态对话框:非模态对话框运行时,应用程序可以运行其他任务,不需要关闭或取消非模态对话框。

23、模态对话框

       创建:DoModal

       关闭:EndDialog

       销毁:DestroyWindow

24、非模态对话框

      创建:Create

      关闭:EndDialog

      销毁:DestroyWindow

25、GetDlgItem

      获取对话框上指定控件的指针

26、DDX

      将控件和成员变量进行关联(如DDX_Text)。

      控件和成员变量的关联放在DoDataExchange函数中

27、对话框控件的7种访问方式

      GetDlgItem()->G(S)etWindowTest()

      G(S)etDlgItemText

      G(S)etDlgItemInt

      将控件与整型变量关联

      将控件与控件变量关联

      SendMessage

      SendDlgItemMessage

28、Z-order

   窗口的Z次序表明了重叠窗口堆中窗口的位置,这个窗口堆是按一个假想的轴定位的,这个轴就是从屏幕向外伸展的Z轴。Z次序最上面的窗口覆盖所有其它的窗口,Z次序最底层的窗口被所有其它的窗口覆盖。应用程序设置窗口在Z序中的位置是通过把它放在一个给定窗口的后面,或是放在窗口堆的顶部或底部。
       Windows系统管理三个独立的Z次序——一个用于顶层窗口、一个用于兄弟窗口,还有一个是用于最顶层窗口。最顶层窗口覆盖所有其它非最顶层窗口,而不管它是不是活动窗口或是前台窗口。应用程序通过设置WS_EX_TOPMOST风格创建最顶层窗口。
        一般情况下,Windows系统把刚刚创建的窗口放在Z次序的顶部,用户可通过激活另外一个窗口来改变Z次序;Windows系统总是把活动的窗口放在Z次序的顶部,应用程序可用函数BringWindowToTop把一个窗口放置到Z次序的顶部。函数SetWindowPosDeferWindowPos用来重排Z次序。

你可能感兴趣的:(windows,command,null,Class,文档,mfc)