请教CWnd派生类的问题

我现在从CWnd类派生了一个类然后用create函数创建,但是发现生成的窗口什么都不能响应,包括标题栏的拖动等功能,并且鼠标点击这个窗口的时候如果窗口后面有按钮就直接响应... 我现在从CWnd类派生了一个类然后用create函数创建,但是发现生成的窗口什么都不能响应,包括标题栏的拖动等功能,并且鼠标点击这个窗口的时候如果窗口后面有按钮就直接响应这个按钮的点击了,仿佛这个新生成的窗口是不存在的一样。
请问应该怎么使用CWnd类的派生类呢?就是创建好之后就有一些基本功能比如点击标题拖放窗口什么的 我现在生成的窗口什恶魔都做不了啊
谢谢!
谢谢啊!
从CDialog派生的时候必须有Dialog资源才行吗?就是一个Dialog资源的ID
如何不使用对话框资源就生成一个CDialog的对象呢?
==============
再次感谢,不过我用了CFrameWnd 之后可以生成窗口但是一关闭就会报错的,好像还是不太适用啊,看报错信息我也不太确定是怎么回事 而且默认的CFrameWnd的构造析构函数都是保护成员的 直接拿来也是不能用

我一直以为CWnd有了好多功能呢 唉 难道得自己在派生类里实现那些功能?
==================================================================
有没有比较方便的类可以用来派生来用呢?不想用CDialog了。只要是实现基本的窗口功能就行了。CWnd直接派生来的实在不会用了。。。
展开
 我来答
百度网友856121e91
2009-03-30 · TA获得超过296个赞
知道答主
回答量:479
采纳率:0%
帮助的人:215万
展开全部
是不是你的create里面第三个参数DWORD dwStyle没有写好,WS_OVERLAPPED 等等。
dwStyle
Specifies the window style attributes. WS_POPUP cannot be used. If you wish to create a pop-up window, use CWnd::CreateEx instead.
如果你要创建WS_POPUP样式的用 CWnd::CreateEx代替。

我个人觉得这是窗口样式的问题。
下面是我自己随便写了个简单的,,

CWnd wnd;
void CDialog1::OnButtonTest()
{
// TODO: Add your control notification handler code here
RECT rect = {0, 0, 200,200};
wnd.Create( NULL,
"mywnd",
WS_OVERLAPPEDWINDOW |WS_BORDER|WS_CAPTION|WS_SYSMENU,
rect,
this,
9999,
NULL);
::ShowWindow(wnd.m_hWnd, TRUE);
::SetWindowPos(wnd.m_hWnd, HWND_TOP, 0, 0 ,200,200,SWP_DRAWFRAME|SWP_SHOWWINDOW|SWP_FRAMECHANGED );//使它显示在上面
}
只是重绘总是显示背景颜色。

如果自己写一个WNDCLASS,然后作为第一个参数的话,应该能够解决重绘问题
hsyace
2009-03-27
知道答主
回答量:19
采纳率:0%
帮助的人:0
展开全部
你没理解window的意思啊,各个控件窗口都是继承自CWND的。CWND只有一些很基本的功能,如接收消息等。
按你说的要求你应该继承的是CDialog吧。

CDialog能不能不用resouce file 不大清楚啊。
直觉应该可以不用,但是我做的项目都用了。
你再看看CFrameWnd吧,这个肯定可以不用

=============================
CWnd是mfc所有窗体的基类,功能当然不会太多,你想如果按钮、文本框、对话框的功能都放进去这个类还怎么写。但是mfc本身有很多窗口元素的类是继承CWnd的。CFrameWnd的构造函数和析构函数是公共成员你可以看afxwin.h上的声明
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wangtk1982
2009-03-30 · TA获得超过3742个赞
知道大有可为答主
回答量:3206
采纳率:100%
帮助的人:1458万
展开全部
CWnd对象接收到的Windows通知消息通过消息映射被自动发送到适当的CWnd OnMessage成员函数。你可以在派生类中重载OnMessage成员函数以处理成员的特定消息。也就是说使用CWnd对象 需要自己写消息出来动作

CDialog可以不依赖资源 其他资源必须动态new出来 比较麻烦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式