大家帮帮忙看看小弟我的自定义消息为什么没有反应呢
大家帮帮忙看看我的自定义消息为什么没有反应呢?
在CStruggleView.h类的声明中:
protected:
#define WM_GAME_RUN WM_USER + 101
afx_msg LRESULT OnGameRun(WPARAM wParam, LPARAM lParam);
DECLARE_MESSAGE_MAP()
在CStruggleView.cpp中如下:
BEGIN_MESSAGE_MAP(CStruggleView, CView)
......
ON_MESSAGE(WM_GAME_RUN,CStruggleView::OnGameRun)
END_MESSAGE_MAP()
但是我在CStruggleView的构造函数里::SendMessage(this->GetSafeHwnd(),WM_GAME_RUN,0,0);之后就没有反应了。
CStruggleView的Run函数如下
Void CStruggleView::Run()
{
game.Run();
}
------解决方案--------------------
构造函数里::SendMessage是不可能成功的,因为这时窗口还未建立,this->GetSafeHwnd()得到的肯定是一个无效窗口句柄。所以最好把SendMessage放到OnInitialUpdate()中。
在CStruggleView.h类的声明中:
protected:
#define WM_GAME_RUN WM_USER + 101
afx_msg LRESULT OnGameRun(WPARAM wParam, LPARAM lParam);
DECLARE_MESSAGE_MAP()
在CStruggleView.cpp中如下:
BEGIN_MESSAGE_MAP(CStruggleView, CView)
......
ON_MESSAGE(WM_GAME_RUN,CStruggleView::OnGameRun)
END_MESSAGE_MAP()
但是我在CStruggleView的构造函数里::SendMessage(this->GetSafeHwnd(),WM_GAME_RUN,0,0);之后就没有反应了。
CStruggleView的Run函数如下
Void CStruggleView::Run()
{
game.Run();
}
------解决方案--------------------
构造函数里::SendMessage是不可能成功的,因为这时窗口还未建立,this->GetSafeHwnd()得到的肯定是一个无效窗口句柄。所以最好把SendMessage放到OnInitialUpdate()中。