CWnd类提供了微软基础类库中所有窗口类的基本功能。
CWnd对象与Windows的窗口不同,但是两者有紧密联系。CWnd对象是由CWnd的构造函数和析构函数创建或销毁的。另一方面,Windows的窗口是Windows的一种内部数据结构,它是由CWnd的Create成员函数创建的,而由CWnd的虚拟析构函数销毁。DestroyWindow函数销毁Windows的窗口,但是不销毁对象。
CWnd类和消息映射机制隐藏了WndProc函数。接收到的Windows通知消息通过消息映射
谁给我解释一下CWnd::Create是怎么用的?
virtual BOOL Create( LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL);lpszClassName - 类名 字符串指针 必须是WNDCLASS结构 或者 赋值NULL 按系统默认
dwStyle - 窗口样式 比如有没有标题栏啊 最大化啊 等
pParentWnd - 父窗口指针 如果是最顶层窗口 此值等于NULL
nID - 资源ID 你在IDE里面创建的窗口资源ID
pContext - 相关的环境
不知道你想知道什么 解释下
CWnd是MFC窗口的基本框架 几乎所有的窗口都是从这继承得到的 因此 CWnd 是窗口类的基类 不是直接拿来用的 也就是很少 CWnd MainWnd; 这样的定义 最多用到他的指针 如 CWnd *pWnd = ... (C++ 继承 相关的知识点)
为什么说他不是直接拿来用的呢 当然 可以用 甚至你可以用::CreateWindow
但是这样你要传递多少参数呢? 相当多, 违背了MFC封装的本意
拿做一个Dialog举例 一般是定义一个 CDialog dlg; 这样
查CSDN 可以看到 CDialog 继承与 CWnd
然而塔只有2个参数
BOOL Create( UINT nIDTemplate, CWnd* pParentWnd = NULL );
MFC就是这样就简化了编程 只有指定这个窗口资源id就是了
C++语言,MFC里CWnd有俩子类,CFrameWnd和Cview两个类的用途上的区别。 希望回答形象点,不要太抽象了。
1:早餐买过包子吧?CView就是你看到放前台的包子,是界面。
FrameWnd就是买包子的人,是控制的人。
另外还有CDocument,就是蒸笼里的包子,属于数据。
你看得到的包子(CView),是卖包子的人(Framewnd)从蒸笼(CDocument)中拿出来的。
你买早餐看到的包子(界面)是CView,
你看不见蒸笼里的包子CDocument。
你还能看到递给你包子的人(逻辑)Framewnd。
2: 一个界面上有一个按钮。这个按钮的作用是点击它,它读取文件的名字,并显示到界面
你看到的这个按钮:view。
你点击按钮,弹出文件名字。CFrameWnd拿去文件名,然后再告诉CView显示文件名。
用Cdialog为基类 和 Cwnd为基类创建的窗体有什么不一样?
Cdialog从CWnd派生,所谓派生是指保留父类的所有特性,然后允许延伸出自己的特性.因此CDialog保留了窗口程序所有的特性,比如最大化,最小化......同时它发展了自己的特性,如按钮,编辑框,资源文件......
c++中类的方法定义与类有什么关系
窗口类有两套概念:一是windows
中的窗口类,
二是类库中的操作窗口的c++类,如mfc:cwnd
或
atl:cwindow
windows中的窗口类是某一种窗口,设定了使用该窗口类的窗口的一些基本属性,当然这些属性可以在窗口创建后修改。
c++类是一个内存对象实体。c++类需要负责创建窗口,在创建窗口的时候,该windows窗口(的样式)必须属于一种windows窗口类。
c++
窗口类是类对象,由类的构造函数和析构函数负责创建和销毁
c++
窗口类对象;而
windows
window
更象是一个
windows
的内部数据结构,由
create
成员函数创建,由
cwnd
函拟析构函数销毁,此时,仅销毁了
windows
window
而不是销毁
windows
类对象。另外,在
mfc
中大量使用的
cwnd
对象是属于
c++
窗口类对象,就象上面讲的一样,是与
windows
window
有差别的。
相关推荐: