动态创建的CWnd,为什么不能响应消息?

cqwally 2005-06-22 02:07:39
1、我是用class wizard 创建的类,父类选择“generic CWnd”,然后填写CWnd,这样,自动生成了消息处理机制。
2、在这个派生类中,响应鼠标右键up消息,一个MessageBox;
3、在单文档的程序中,在View中动态创建了一个派生类的对象;
4、但是这个对象没有办法响应鼠标消息。也就是在对象里面点击鼠标没有 MsgBox弹出来。

请指点,应该如何做才能响应呢?
...全文
210 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cqwally 2005-06-22
  • 打赏
  • 举报
回复
问题已经解决,不是兄弟说的问题,不过还是谢谢了。
icansaymyabc 2005-06-22
  • 打赏
  • 举报
回复
你没有向系统注册你的window,系统当然不知道给他发消息了。
cqwally 2005-06-22
  • 打赏
  • 举报
回复
protected:
//{{AFX_MSG(CShowRect)
afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
//}}AFX_MSG
上面是在派生类的头文件中

BEGIN_MESSAGE_MAP(CShowRect, CWnd)
//{{AFX_MSG_MAP(CShowRect)
ON_WM_RBUTTONUP()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

上面是消息影射

void CShowRect::OnRButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
//((CRectTips *)tips)->Create();
MessageBox("ok");
CWnd::OnRButtonUp(nFlags, point);
}
上面是响应函数。
goodboyws 2005-06-22
  • 打赏
  • 举报
回复
你的响应鼠标消息的代码??
cqwally 2005-06-22
  • 打赏
  • 举报
回复
void CRectTestView::OnLButtonDblClk(UINT nFlags, CPoint point)
{
psRect = new CShowRect;
psRect->Create(_T("STATIC"), "Hi", WS_CHILD | WS_VISIBLE | WS_BORDER,
CRect(10, 10, 50, 50), this, 1234);
psRect->EnableToolTips();
CView::OnLButtonDblClk(nFlags, point);
}
或者父窗口设置成为这个View也能创建,但是一样无法响应消息。
cqwally 2005-06-22
  • 打赏
  • 举报
回复
void CRectTestView::OnLButtonDblClk(UINT nFlags, CPoint point)
{
psRect = new CShowRect;
psRect->Create(_T("STATIC"), "Hi", WS_CHILD | WS_VISIBLE | WS_BORDER,
CRect(10, 10, 50, 50), AfxGetMainWnd(), 1234);
psRect->EnableToolTips();
CView::OnLButtonDblClk(nFlags, point);
}
这里是在这个View的双击事件中创建这个CWnd。创建完毕,能够看到View中有了一个带BORDER的一个CWnd。
qrlvls 2005-06-22
  • 打赏
  • 举报
回复
从第 3 步起,你是怎么创建的,而且有没有通过 SetWindowPos 或 MoveWindow 调整派生自 CWnd 类的窗口对象的位置?

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧