MFC中普通类和窗口类交互

qq_35003152 2016-10-28 02:05:31
我有一个普通类MyClass;
一个窗口类:MyCDlg;
窗口类调用普通类很简单 MyClass myclass;
我现在在普通类中想要获得窗口类的控件句柄进行显示,不知道用什么方法可行。
...全文
498 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
躺着睡的蜗牛 2016-11-04
  • 打赏
  • 举报
回复
1. 用自定义消息 在BEGIN_MESSAGE_MAP和END_MESSAGE_MAP加上消息响应 具体可以上网查一下怎么使用自定义消息 2. 假设自定义消息为 ON_MESSAGE(WM_TEST_NOTIFY, &CMyDlg::OnTestNotify) 如果MyDlg为主窗口, 在MyClass里使用 AfxGetMainWnd() ->PostMessage(WM_TEST_NOTIFY) 向MyDlg发送自定义消息 如果不为主窗口, 可以把MyDlg的this指针传给MyClass, 假定传到MyClass为pWnd, 在MyClass里使用 pWnd ->PostMessage(WM_TEST_NOTIFY) 具体参数可以看自定义消息的使用 3. 当MyDlg响应自定义消息后, 会进入OnTestNotify函数, 在OnTestNotify函数里取得MyClass中的数据, 然后面MyDlg显示就可以了。
qq_35003152 2016-10-31
  • 打赏
  • 举报
回复
引用 12 楼 shiyanzi 的回复:
你先发消息给窗口,窗口收到消息后把再数据显示在控件上,我都是这么做的,没有问题呀
能不能给个小例子?我还是不清楚这个消息应该传什么,是传动作比如“绘画”还是传数据,再一个怎么把消息传给窗口?
gz_qmc 2016-10-28
  • 打赏
  • 举报
回复
引用 11 楼 qq_35003152 的回复:
[quote=引用 8 楼 gz_qmc 的回复:] 给MyClass类增加一个句柄类变量HWND xxx 在MyClass类的构造函数或者添加一个SetWnd(CWnd *m)来传递
SetWnd(CWnd *m)这个函数里面写什么呢?还是不会获取窗口类的句柄 啊 [/quote] void SetWnd(CWnd *m) { if(m) xxx=m->GetSafeHwnd(); }
Eleven 2016-10-28
  • 打赏
  • 举报
回复
你的普通类构造函数修改一下,将窗口的HWND窗口句柄或者CDialog/CWnd*传递过去~
qq_35003152 2016-10-28
  • 打赏
  • 举报
回复
引用 12 楼 shiyanzi 的回复:
你先发消息给窗口,窗口收到消息后把再数据显示在控件上,我都是这么做的,没有问题呀
能否给个小例子?谢谢
qq_35003152 2016-10-28
  • 打赏
  • 举报
回复
引用 12 楼 shiyanzi 的回复:
你先发消息给窗口,窗口收到消息后把再数据显示在控件上,我都是这么做的,没有问题呀
里面的参数呢?传什么?
  • 打赏
  • 举报
回复
你先发消息给窗口,窗口收到消息后把再数据显示在控件上,我都是这么做的,没有问题呀
qq_35003152 2016-10-28
  • 打赏
  • 举报
回复
引用 8 楼 gz_qmc 的回复:
给MyClass类增加一个句柄类变量HWND xxx 在MyClass类的构造函数或者添加一个SetWnd(CWnd *m)来传递
SetWnd(CWnd *m)这个函数里面写什么呢?还是不会获取窗口类的句柄 啊
qq_35003152 2016-10-28
  • 打赏
  • 举报
回复
引用 9 楼 shiyanzi 的回复:
SendMessage()
可是里面参数还是不行啊
  • 打赏
  • 举报
回复
SendMessage()
gz_qmc 2016-10-28
  • 打赏
  • 举报
回复
给MyClass类增加一个句柄类变量HWND xxx 在MyClass类的构造函数或者添加一个SetWnd(CWnd *m)来传递
qq_35003152 2016-10-28
  • 打赏
  • 举报
回复
首先,就算我得到父窗口句柄了,那么子窗口控件ID也是未声明的标识符。我又不能MyCDlg mydlg这样用,所以还是回到我最初的问题上面了
  • 打赏
  • 举报
回复
发送自定义消息。
qq_35003152 2016-10-28
  • 打赏
  • 举报
回复
引用 2 楼 UIPowerGroup 的回复:
GetDlgItem API就可以顺利完成任务。第一个参数夫窗口的句柄,第二个参数子控件的ID
我是在资源文件中插入一个对话框,然后属性为child,添加类为MyCDlg,那么我的父窗口句柄是哪个?
qq_35003152 2016-10-28
  • 打赏
  • 举报
回复
引用 2 楼 UIPowerGroup 的回复:
GetDlgItem API就可以顺利完成任务。第一个参数夫窗口的句柄,第二个参数子控件的ID
父窗口句柄是指哪个?
qq_35003152 2016-10-28
  • 打赏
  • 举报
回复
引用 1 楼 diplopod 的回复:
MyClass发个消息给MyCDlg, MyCDlg取得数据后显示到特定控件里。
发送消息?我在普通类里面怎么发送消息?SendMessage()?那么我在窗口类中怎么获得这个消息?用什么接受?
UIPowerGroup 2016-10-28
  • 打赏
  • 举报
回复
GetDlgItem API就可以顺利完成任务。第一个参数夫窗口的句柄,第二个参数子控件的ID
躺着睡的蜗牛 2016-10-28
  • 打赏
  • 举报
回复
MyClass发个消息给MyCDlg, MyCDlg取得数据后显示到特定控件里。

15,980

社区成员

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

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