作者aecho (星空下的鲔鱼)
看板C_and_CPP
标题Re: [问题] 自订讯息的问题(WM_USER) 用MFC
时间Wed Feb 25 16:15:03 2009
※ 引述《timohu ( )》之铭言:
: 我要利用SendMessage()从自订执行绪把讯息传回主执行绪
: 所以在开头定义
: #define WM_FrameToViewToDoc WM_USER -31 (忘记WM_USER -31是在哪边爬到的文章)
: 然後 //}}AFX_MSG_MAP
: ON_MESSAGE(WM_FrameToViewToDoc, FrameToViewToDoc)
: 在自订执行绪中利用
: SendMessage(HWND_BROADCAST,WM_FrameToViewToDoc,0,0);
: 引发主执行绪的FrameToViewToDoc()
: 後来因为想要再自订另一个讯息
: 所以又定义了#define WM_XXXXX WM_USER -30
: 可是用同样的方法却都无法正确的把讯息送出去(SendMessage没有把讯息送出去)
: 上网看其他文章,又把位置改成WM_USER + 100或是其他值
: 也都没办法送出讯息,(偏偏只有WM_USER - 31可以@@)
: 请问是我哪边写错了吗?
: 还是SendMessage函数里面的参数要修改呢?
自定义message
1. 定义一下这个macro
#define DECLARE_USER_MESSAGE(name) \
static const UINT name = ::RegisterWindowMessage(name##_MSG);
2. DECLARE_USER_MESSAGE(
UWM_RESET_VIEW)
这样就有一个UWM_RESET_VIEW的message了
这麽做的好处是,用#define一个常数的话,如果有import别的 .dll,可能会抢用同一个
message的值。
MFC里的SendMessage应该是
SendMessage(UWM_RESET_VIEW); 这样就行了吧
win32应该就是像你写的一样了
--
给自己自信 不管面对什麽 总是能勇於创造
给自己谦虚 使自己能不断的再学习
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.120.59.242
※ 编辑: aecho 来自: 59.120.59.242 (02/25 16:16)