用::PostMessage传递结构体,结果乱码?
时间:2011-12-03
来源:互联网
先说明一下:
要将一个结构体从CTestDlg传到CDetailDlg并显示相关内容,其中结构体如下
struct SMSG
{
CString sName;
CString sIP;
CString sContent[20];
int iNum;//计数
};
我的做法:
先在TestDlg中定义SMSG msgs;并完善结构体的信息。然后按一个按钮,先生成一个非模态对话框DetailDlg,然后
C/C++ code
在DetailDlg.h中定义一个自定义消息,并添加处理函数
#define WM_SHOWMSG WM_USER+105
afx_msg void OnShowMsg(WPARAM wParam,LPARAM lParam);
ON_MESSAGE(WM_SHOWMSG,OnShowMsg)
C/C++ code
结果在DetailDlg里显示的内容都是乱码。。。怎么解决?
要将一个结构体从CTestDlg传到CDetailDlg并显示相关内容,其中结构体如下
struct SMSG
{
CString sName;
CString sIP;
CString sContent[20];
int iNum;//计数
};
我的做法:
先在TestDlg中定义SMSG msgs;并完善结构体的信息。然后按一个按钮,先生成一个非模态对话框DetailDlg,然后
C/C++ code
::PostMessage(hWindow,WM_SHOWMSG,0,(LPARAM)&msgs);//hWindow是DetailDlg的句柄,且经检测,此时msgs中的内容是完好无损的
在DetailDlg.h中定义一个自定义消息,并添加处理函数
#define WM_SHOWMSG WM_USER+105
afx_msg void OnShowMsg(WPARAM wParam,LPARAM lParam);
ON_MESSAGE(WM_SHOWMSG,OnShowMsg)
C/C++ code
void CDetailDlg::OnShowMsg(WPARAM wParam,LPARAM lParam) { SMSG* p=(SMSG*)&lParam; m_strName=p->sName; m_strIP=p->sIP; m_iNum=p->iNum;//m_strName、m_strIP、m_iNum是3个编辑框关联的变量 for(int i=0;i<m_iNum;i++) { m_str=p->sContent[i]; m_list.AddString(m_str);//将每条内容加到列表框 } UpdateData(FALSE); }
结果在DetailDlg里显示的内容都是乱码。。。怎么解决?
作者: dingxz105090 发布时间: 2011-12-03
看看是不是作用域的问题,因为postmessage是异步的,它会立马返回,如果在OnShowMsg中,你的那个东西已经超出其作用域了,就会出现这个问题,有的时候程序还会crash
作者: maoxing63570 发布时间: 2011-12-03
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28