我应该使用 SendDlgItemMessage 还是 WTL 中有一个包装器?
我向名为 IDC_LIST1
的对话框资源添加了一个列表框控件。我应该使用 SendDlgItemMessage()
与此控件交互,还是有更好的 WTL 方法?这是我的事件处理程序。这还不算什么奇特的事情!
LRESULT OnAddItem(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
SendDlgItemMessage(IDC_LIST1, LB_INSERTSTRING, (WPARAM) 0, (LPARAM)_T("Hi"));
return 0;
}
LRESULT OnRemoveItem(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
// Get selected item
int item = SendDlgItemMessage(IDC_LIST1, LB_GETCURSEL, (WPARAM) 0, (LPARAM) 0);
// Remove the item at the index of the selected item
SendDlgItemMessage(IDC_LIST1, LB_DELETESTRING, (WPARAM) 0, (LPARAM)item);
return 0;
}
I added a Listbox control to a dialog resource called IDC_LIST1
. Should I be interacting with this control using SendDlgItemMessage()
, or is there a better way with WTL? Here are my event handlers. It is nothing fancy yet!
LRESULT OnAddItem(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
SendDlgItemMessage(IDC_LIST1, LB_INSERTSTRING, (WPARAM) 0, (LPARAM)_T("Hi"));
return 0;
}
LRESULT OnRemoveItem(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
// Get selected item
int item = SendDlgItemMessage(IDC_LIST1, LB_GETCURSEL, (WPARAM) 0, (LPARAM) 0);
// Remove the item at the index of the selected item
SendDlgItemMessage(IDC_LIST1, LB_DELETESTRING, (WPARAM) 0, (LPARAM)item);
return 0;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
WTL建议方式如下:
常见控件和Windows控件的WTL支持类位于atlctrls.h中,您也可以查看面向 MFC 程序员的 WTL,第四部分 - 对话框和控件。
The WTL suggested way is as follow:
WTL support classes for common and Windows controls are in atlctrls.h, you may also have a look at WTL for MFC Programmers, Part IV - Dialogs and Controls.
您可以使用 WTL::CListBoxT 作为 Win32 列表框的包装器...为此,您需要列表框的 HWND,可以使用 GetDlgItem 获取它。
CListBoxT 提供InsertString 和DeleteString 方法。
You can use WTL::CListBoxT as a wrapper around a Win32 listbox... for this you need the listbox's HWND which you can obtain using GetDlgItem.
CListBoxT offers InsertString and DeleteString methods.