WEB开发网
开发学院软件开发VC VC++深入详解:MFC框架窗口 阅读

VC++深入详解:MFC框架窗口

 2008-11-24 19:38:06 来源:WEB开发网   
核心提示:1.设计和注册窗口 有了WinMain函数,根据创建Win32应用程序的步骤,VC++深入详解:MFC框架窗口,接下来应该是设计窗口类和注册窗口类了,MFC已经为我们预定义了一些默认的标准窗口类,由于篇幅所限,在这里仅列出部分代码,只需要选择所需的窗口类,然后注册就可以了

1.设计和注册窗口

有了WinMain函数,根据创建Win32应用程序的步骤,接下来应该是设计窗口类和注册窗口类了。MFC已经为我们预定义了一些默认的标准窗口类,只需要选择所需的窗口类,然后注册就可以了。窗口类的注册是由AfxEndDeferRegisterClass函数完成的,该函数的定义位于WINCORE.CPP文件中。其定义代码较长,由于篇幅所限,在这里仅列出部分代码,如例3-10所示。

例3-10

  BOOL AFXAPI AfxEndDeferRegisterClass(LONG fToRegister)
  {
  ……
    // common initialization
    WNDCLASS wndcls;
    memset(&wndcls, 0, sizeof(WNDCLASS));  // start with NULL defaults
  ① wndcls.lpfnWndProc = DefWindowProc;
    wndcls.hInstance = AfxGetInstanceHandle();
    wndcls.hCursor = afxData.hcurArrow;
  ……
    // work to register classes as specified by fToRegister, populate fRegisteredClasses as we go
    if (fToRegister & AFX_WND_REG)
    {
      // Child windows - no brush, no icon, safest default class styles
      wndcls.style = CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW;
      wndcls.lpszClassName = _afxWnd;
      if (AfxRegisterClass(&wndcls))
        fRegisteredClasses |= AFX_WND_REG;
    }
    if (fToRegister & AFX_WNDOLECONTROL_REG)
    {
      // OLE Control windows - use parent DC for speed
      wndcls.style |= CS_PARENTDC | CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW;
      wndcls.lpszClassName = _afxWndOleControl;
      if (AfxRegisterClass(&wndcls))
        fRegisteredClasses |= AFX_WNDOLECONTROL_REG;
    }
  ……
    if (fToRegister & AFX_WNDMDIFRAME_REG)
    {
      // MDI Frame window (also used for splitter window)
      wndcls.style = CS_DBLCLKS;
      wndcls.hbrBackground = NULL;
      if (_AfxRegisterWithIcon(&wndcls, _afxWndMDIFrame, AFX_IDI_STD_ MDIFRAME))
        fRegisteredClasses |= AFX_WNDMDIFRAME_REG;
    }
    if (fToRegister & AFX_WNDFRAMEORVIEW_REG)
    {
      // SDI Frame or MDI Child windows or views - normal colors
      wndcls.style = CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW;
      wndcls.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1);
if (_AfxRegisterWithIcon(&wndcls, _afxWndFrameOrView, AFX_IDI_STD _FRAME))
        fRegisteredClasses |= AFX_WNDFRAMEORVIEW_REG;
    }
  ……
  }

1 2 3  下一页

Tags:VC 深入 详解

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接