📄 sy0403.htm
字号:
<html>
<HEAD>
<TITLE>Visual C++与计算机接口</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=gb2312" >
</HEAD>
<body>
<font color="#0000FF">创建窗口</font>
<p>
(一)实验目的:<BR>
熟悉窗口的创建和使用<BR><BR>
(二)实验内容:<BR>
用ClassWizard建立一个窗口类,创建显示一个窗口<BR><BR>
(三)实验步骤:<BR><BR>
要创建新的窗口,一般是从CMDIChildWnd继承生成,它与View和MainFrame都是从CWnd类继承来的,几乎拥有同样的功能,都可以响应菜单消息、进行消息映射、函数重载,都可以在上面绘图。<BR>
CMDIChildWnd的小缺点是不与CDocument类联系,无法享有CDocument的一些方便,但这也不是不能克服的。<BR>
CMDIChildWnd的优点是可以方便的定义多种不同的CMDIChildWnd以实现不同的功能,可以方便的创建和关闭多个窗口。<BR><BR>
1、用ClassWizard建立一个窗口类<BR>
(1)打开ClassWizard,点击按钮Add Class...并选择New。<BR>
(2)New Class 对话框打开后,填入Name,例如CMyWindow。<BR>
(3)选择基类Base Class,通常选CMDIChildWnd。<BR>
(4)点击OK,新类CMyWindow就建立好了。<BR>
在FileView中,能看到工程所包含的文件中多了MyWindow.h和MyWindow.cpp两个文件,它们里面就是CMyWindow类的定义和实现。<BR><BR>
2、创建并显示窗口<BR>
窗口的创建通常是调用其Create函数,函数参数中一般包括窗口的标题、窗口显示风格、窗口的位置、父窗口的指针等。<BR>
(1)打开MyWindow.h文件,将 CMyWindow(); 前的 protected: 改为 public: <BR>
(2)在MainFrm.h中,包含MyWindow.h。<BR>
(3)定义一个新菜单项,并在CMainFrame中进行消息映射。<BR>
(4)在映射函数中,定义窗口指针并创建窗口。<BR>
CMyWindow* pWnd = new CMyWindow;<BR>
pWnd->Create(NULL,_T("MyWindow"), WS_CHILD|WS_VISIBLE|WS_OVERLAPPEDWINDOW|WS_HSCROLL|WS_VSCROLL, rectDefault, this);<BR>
注意:这里只能定义窗口指针,不能象显示对话框那样定义窗口对象。<BR>
因为对象的生命期只是在其定义有效的区域,出了其定义区域,对象所占的资源会自动释放掉。<BR>
而指针本身不占任何资源,其所需的资源是通过new操作符从堆中申请的,必须主动释放。若不释放,则会在程序运行过程中一直存在。<BR><BR>
3、操作窗口和关闭窗口<BR>
若把窗口指针定义为类的成员变量,则在窗口生成后,可以通过调用窗口类的函数来随意操纵它,例如改变其显示方式、关闭窗口、改变其内部数据等。<BR>
(1)在MainFrm.h中,定义窗口指针:<BR>
CMyWindow* m_pMyWindow;<BR>
(2)在菜单映射函数中创建窗口:<BR>
m_pMyWindow = new CMyWindow;<BR>
m_pMyWindow->Create(NULL,_T("MyWindow"), WS_CHILD|WS_VISIBLE|WS_OVERLAPPEDWINDOW|WS_HSCROLL|WS_VSCROLL, rectDefault, this);<BR>
(3)在另一菜单映射函数中改变其显示方式:<BR>
m_pMyWindow->ShowWindow(SW_SHOWMAXIMIZED);<BR>
或 m_pMyWindow->ShowWindow(SW_SHOWMINIMIZED);<BR>
(4)在另一菜单映射函数中关闭窗口:<BR>
m_pMyWindow->DestroyWindow();<BR>
<p></p>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -