高分解怪事---Help!

lawman 2000-04-12 06:04:00
这个问题是关于自定一消息的处理

问题;
我在编写一个程序时需要使用自定消息, 于是#define WM_USER1 101 ,然后在一个Dialog的BEGIN_MESSAGE_MAP结构中写到ON_MESSAGE(WM_USER1,TEST),TEST是这个Dialog的一个函数,void类型,其中什么也不做
void CMyDialog::TEST(){ } ,然后在Dialog中放入一个Button其程序为
this->PostMessage(WM_USER1,0,0) ,编译该程序如果在debug版本中毫无问题,在release版本中,第一次click那个button没问题, 多次click那个button 就会非法操作,其实就是多次发出WM_USER1就会非法操作,这是为何?
...全文
286 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
929 2000-04-14
  • 打赏
  • 举报
回复
TO telan:
我认为函数声明还应该象liu_z_j所说的那样声明:
afx_msg LRESULT Test(WPARAM wParam, LPARAM lParam);
对于用ON_MESSAGE宏声明的消息处理,处理函数都应该是这种格式,返回型为LRESULT,参数为WPARAM和LPARAM。你可在MSDN用ON_MESSAGE查找到。
我做的试验是RELEASE版的,
OpenBall 2000-04-14
  • 打赏
  • 举报
回复
所以劝大家,水平不够高的话,最好学会模仿。绝没有那个MFC的消息映射函数参数是空的。像这种问题,却困扰了你,耽误了工作,浪费了时间,甚至怀疑到MFC的头上。
不值。
不值。
929 2000-04-13
  • 打赏
  • 举报
回复
我觉得也是函数声明的问题,应为LRESULT返回型。 同意liu_z_j
我做了试验,没有问题。
liu_z_j 2000-04-13
  • 打赏
  • 举报
回复
自定义消息在VC中一般应有如下操作:
1.#define WM_MYMESSAGE WM_USER+1
2.LRESULT CMyDialog::Test(WPARAM wParam, LPARAM lParam)
{
return 0;
}
3.BEGIN_MESSAGE_MAP(CMyDialog, CDialog)
//{{AFX_MSG_MAP(CSendDataDlg)
...
//}}AFX_MSG_MAP
ON_MESSAGE(WM_MYMESSAGE , Test)
END_MESSAGE_MAP()
在声明:
//{{AFX_MSG(CMyDialog)
...
afx_msg LRESULT Test(WPARAM wParam, LPARAM lParam);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
dengdun 2000-04-13
  • 打赏
  • 举报
回复
这么写试试看:
::PostMessage(this->GetSafeHwnd(),WM_USER1,0,0);
lawman 2000-04-13
  • 打赏
  • 举报
回复
Un1和lutf的方法我都试过了,还是在Release版本下非法操作,请各位动手朋友试一试,真是太奇怪!
telan 2000-04-13
  • 打赏
  • 举报
回复
我已经知道了,不是返回类型的问题,而是参数的问题,
必须要加上参数:
void Test(WPARAM wParam, LPARAM lParam)
telan 2000-04-13
  • 打赏
  • 举报
回复
929,你是用Release版做的试验么?DEBUG版是不会出
问题,Release版就会出问题,第一次可能出问题,也
可能不出问题,次数一多,肯定出问题。你再试试,我
也不明白问题出在哪儿?MFC的BUG???
lutf 2000-04-12
  • 打赏
  • 举报
回复
你的定义应该这样写:
#define WM_USER1 WM_USER+number;
这里的number>1就可以了
Un1 2000-04-12
  • 打赏
  • 举报
回复
把WM_USER定义在0x400以上,例如:

Public Const WM_USER = &H400

太小会同系统消息混淆,由于wPara和lPara为0可能内存访问越界!

16,466

社区成员

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

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

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