服务器端主对话框向tab控件中的子对话框传数据或消息,急~~~

puj2003 2014-08-08 08:51:58
大意:服务器端接收到客户端发来的数据,然后将数据在服务器对话框上的tab控件中的子对话框上显示。
我用了下面三个方法都不行。
1、在socket接收数据流程里面添加:
 CTrafficStaticDlg dlg;    // Tab控件子窗口类
::SendMessage(dlg.get(),WM_CHILDADDCARNUM,0,0);


Tab控件子窗口函数dlg.get()获取子窗口句柄
HWND CTrafficStaticDlg::get()
{
hWnd = AfxGetMainWnd()->m_hWnd;
return hWnd;
}
貌似子对话框没收到消息
2、在子窗口init里面加:AfxGetMainWnd()->SetWindowText("交通统计");
主窗口按钮激活消息:
void CTrafficControlServerDlg::OnBnClickedInformDlg()
{
HWND hWnd = ::FindWindow(NULL,"交通统计");
::SendMessage(hWnd,WM_CHILDADDCARNUM,0,0);
}

但貌似不行啊
3、改成调子窗口成员函数来写子窗口中编辑框也不行。
void CTrafficControlServerDlg::OnBnClickedInformDlg()
{
CTrafficStaticDlg dlg;
dlg.get();
}
HWND CTrafficStaticDlg::get()
{
m_overSpeed.SetWindowText("10"); // 程序在SetWindowText里面就挂了,费解啊
return 0;
}
...全文
122 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
puj2003 2014-08-08
  • 打赏
  • 举报
回复
引用 2 楼 flydreamGG 的回复:
CTrafficStaticDlg dlg;局部的对话框对象??还没创建窗口啊,也就是说这个时候m_hWnd是空的,发送消息当然收不到了! 用非模态对话框吧
tab控件每个标签添加子对话框类后生成的,默认是模态的吗?怎么转换成非模态的?而且我的主界面在每次运行socket通信的时候,有时不能点击对话框按钮,要过几秒才行,是不是也是模态的原因?
puj2003 2014-08-08
  • 打赏
  • 举报
回复
引用 1 楼 fishion 的回复:
CTrafficStaticDlg dlg; 这里dlg是一个新的对象,没有跟任何窗口关联,又还没创建,你改变不了 你原来是怎么创建CTrafficStaticDlg的,就调用这个对象来操作
我就是tab控件每个标签添加子对话框类
昨夜无风 2014-08-08
  • 打赏
  • 举报
回复
CTrafficStaticDlg dlg;局部的对话框对象??还没创建窗口啊,也就是说这个时候m_hWnd是空的,发送消息当然收不到了! 用非模态对话框吧
dvlinker 2014-08-08
  • 打赏
  • 举报
回复
哈哈,从一开始就是错的,因为你接收到数据时重新定义了一个对象,应该取一开始创建的对象 这是C++的对象的理解有很大问题啊,基础方面还是要加强一下的
fishion 2014-08-08
  • 打赏
  • 举报
回复
CTrafficStaticDlg dlg; 这里dlg是一个新的对象,没有跟任何窗口关联,又还没创建,你改变不了 你原来是怎么创建CTrafficStaticDlg的,就调用这个对象来操作
  • 打赏
  • 举报
回复
这些东西都不是很难的问题,自己弄下结果可能就出了,
  • 打赏
  • 举报
回复
自己这个判断,看看哪里有问题或许自定义消息无反应,先去除无关的影响因素,把自定义消息换成例如左键按下消息等再测试,逐步排除错误
  • 打赏
  • 举报
回复
CTrafficStaticDlg dlg返回句柄为空
puj2003 2014-08-08
  • 打赏
  • 举报
回复
我在主对话框的OnInitDialog()里面插入标签控件 m_tab.InsertItem(0, _T("统计")); 然后创建tab子窗口:m_trafficstaticDlg.Create(IDD_TRAFFICSTATIC_DIALOG, &m_tab); 这个是不是就是建立的模态? 我把tab子窗口创建改成非模态: m_trafficstaticDlg = new CTrafficStaticDlg(); m_trafficstaticDlg->Create(IDD_TRAFFICSTATIC_DIALOG, this); m_trafficstaticDlg->ShowWindow(SW_SHOW); 还是不行,无法给tab子窗口的编辑框传数据,求助啊,公司明天旅游,搞不定去不成啊~~~~~~~~~~~~~~~~~~~~~~~

15,979

社区成员

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

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