SendMessage 与 SendDlgItemMessage 的区别

作者在 2008-09-17 19:20:35 发布以下内容
在我的程序中,SendMessage的那种方法没有成功.
1.
C/C++ code
SendDlgItemMessage(hDlg,IDC_LIST,LB_ADDSTRING,0,(LPARAM)"ListBox");

2.
C/C++ code
SendMessage(hDlg,WM_COMMAND,MAKEWPARAM(IDC_LIST,LB_ADDSTRING),(LPARAM)"ListBox");

原因:
SendDlgItemMessage是向对话框中的指定控件发送消息。
SendMessage是向指定窗口或者控件发送消息。
SendDlgItemMessage(hDlg,IDC_LIST,LB_ADDSTRING,0,(LPARAM)"ListBox");
可以正常向List中AddString。
SendMessage(hDlg,WM_COMMAND,MAKEWPARAM(IDC_LIST,LB_ADDSTRING),(LPARAM)"ListBox");
不能达到预期的目的。
因为WM_COMMAND是命令消息,主要是菜单或者工具按钮发给窗口的消息,而窗口中没有向List中AddString这种命令,除非你自己加入相应的代码处理。用SendMessage应该向List发送AddString消息。
::SendMessage(::GetDlgItem(this->m_hWnd, IDC_LIST),LB_ADDSTRING,0,(LPARAM)"ListBox");
技术 | 阅读 11513 次
文章评论,共1条
ONEPROBLEM
2008-09-17 22:03
1
来学习一下.
游客请输入验证码
浏览1944059次