c++ SendMessage问题
几个参数的含义,尤其是后面两个,还有直接sendmessage和::sendmessage的区别...
几个参数的含义,尤其是后面两个,还有直接sendmessage和::sendmessage的区别
展开
4个回答
展开全部
HWND hWnd一个窗口句柄,UINT message一个宏定义的消息,为一个无符号整型值
CWnd::sendmessage(UINT message,WPARAM wParam=0,LPARAM lParam=0)
将消息发送给这个窗口对象,用这个窗口对象的消息响应函数处理
::SendMessage(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
将消息发送给这个句柄指示的窗口资源,用这个窗口资源的消息响应函数处理。
后面两个参数根据message的不同而具有不同的含义,是附加参数
有可能是坐标点,也有可能是指针
CWnd::sendmessage(UINT message,WPARAM wParam=0,LPARAM lParam=0)
将消息发送给这个窗口对象,用这个窗口对象的消息响应函数处理
::SendMessage(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
将消息发送给这个句柄指示的窗口资源,用这个窗口资源的消息响应函数处理。
后面两个参数根据message的不同而具有不同的含义,是附加参数
有可能是坐标点,也有可能是指针
更多追问追答
追问
谢谢,麻烦帮我看下我这样写为什么报错
CWnd *p=GetParent();
HWND pp=p->GetSafeHwnd();
::SendMessage(pp,WM_MY_MESSAGE,WPARAM wParam,LPARAM lParam);
CDialog::OnOK();
编译有两个错误:
error C2275: 'WPARAM' : illegal use of this type as an expression
error C2146: syntax error : missing ')' before identifier 'wParam'
那两参数我都在消息映射部分添加了
追答
上面的我稍微改了点,你看看。
CWnd *p=GetParent();
HWND pp=p->GetSafeHwnd();
::SendMessage(pp,WM_MY_MESSAGE,0,0);
CDialog::OnOK()
一般自定义消息后面两个参数不需要传递什么时,就用0或NULL
展开全部
上面已经对SendMessage进行了解释,我就说下面的吧,直接SendMessage如果在一个类中使用当然调用的是类自身的SendMessage函数,::sendmessage是API函数,在默认情况下是全局函数,它们的差异就是第一个参数有无窗口句柄。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
::表示作用域,比如std::cout表示使用标准域的cout函数,::前面不带表示使用全局作用域
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一个接收消息的窗口句柄,第二是Msg id,后面两个是消息参数,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询