请问在win32中自定义的消息,如何返回一个值给发消息的程序?

netyou 2004-11-01 09:51:09
我有两个程序,一个是用mfc做的,另外一个程序是用win32代码编写的,现在我如果在mfc的程序中发一条消息给win32的程序里面(譬如使用sendmessagetimeout发消息),那么win32程序接受到消息处理完之后如何返回一个值给mfc调用的程序呢?
请高手赐教,谢谢
...全文
104 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
netyou 2004-11-10
  • 打赏
  • 举报
回复
hanfeichunan(亚历山大) :
“直接函数调用就得了”是什么意思啊?能不能具体说明一点,我比较菜,谢谢;
netyou 2004-11-10
  • 打赏
  • 举报
回复
lyy316(贡注) :好的,我先试试你的方法;
NoneSoVile 2004-11-10
  • 打赏
  • 举报
回复
不会返回给发送端的,要不然还要消息处理机制作什么?直接函数调用就得了
lyy316 2004-11-10
  • 打赏
  • 举报
回复
LRESULT 怎么能返回“ok”字符串呢。可以通过WPARAM wParam, LPARAM lParam 这两个参数传值。
netyou 2004-11-10
  • 打赏
  • 举报
回复
还有些不明白的地方,麻烦帮我再解答一下:

在mfc中我用sendmessagetimeout发消息YOURMSG到win32的程序里面,在上面的消息处理中返回一个字符串“ok”,是不是这么写:return “ok”?
然后我在mfc中接受到的返回的值是DWORD类型,我又怎么才能转换成“ok”呢?
netyou 2004-11-10
  • 打赏
  • 举报
回复
我在win32里面的代码如下:
LRESULT CALLBACK DialogProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
{
switch (Msg)
{
case YOURMSG:
// 这里是我加的
lp=(LPARAM)"12121";
break;
// other cases...
}
return 0;
}
然后我在mfc里面调用:
HWND hWnd;
char Ti[255];
hWnd=FindWindow("test class",NULL);
SendMessageTimeout(hWnd,YOURMSG,0,(LPARAM)Ti,SMTO_ABORTIFHUNG |SMTO_NORMAL,1000,&result);

但是Ti里面不是win32里面赋的值,不知道为什么?是不是这样不可以?如果不可以,那应该怎么做?
李马 2004-11-01
  • 打赏
  • 举报
回复
处理完后返回:
LRESULT CALLBACK DialogProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
{
switch (Msg)
{
case YOURMSG:
// 处理...
return yourvalue;
// other cases...
}
return 0;
}

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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