C++ 如何将鼠标双击添加到列表框
根据本守则: 它可以很好地显示列表和循环 可悲的是,我的导师从未完成他的代码。 所以我们的计划是在名字上添加双击检测。怎么做C++ 如何将鼠标双击添加到列表框,c++,winapi,listbox,C++,Winapi,Listbox,根据本守则: 它可以很好地显示列表和循环 可悲的是,我的导师从未完成他的代码。 所以我们的计划是在名字上添加双击检测。怎么做 case WM_COMMAND: { return 0; } 像这样的?11是此子窗口,其中包含名称 case WM_COMMAND: { if (LOWORD(wparam) == 11) { if ((me
case WM_COMMAND:
{
return 0;
}
像这样的?11是此子窗口,其中包含名称
case WM_COMMAND:
{
if (LOWORD(wparam) == 11) {
if ((message) == LBN_DBLCLK) {
cout << "double click" << endl;
}
}
return 0;
}
case WM_命令:
{
if(LOWORD(wparam)==11){
如果((消息)==LBN\u DBLCLK){
不能尝试更换:
if ((message) == LBN_DBLCLK)
与:
文档。首先,根据:
参数
wParam
LOWORD包含列表框的标识符。HIWORD指定通知代码
lParam
列表框的句柄
备注
此通知代码仅通过具有LBS\u NOTIFY
样式的列表框发送
因此,在第一步中,您需要添加此样式,并使用HIWORD(wParam)
确定是否双击列表
然后,如果需要获取列表元素,则不应将LB_GETCURSEL
发送到window\u handle
,而应将其发送到This->listbox\u handle
,这是listbox的窗口句柄。然后,可以通过发送LB_GETTEXT
文本内容来获取它
代码如下:
case WM_COMMAND:
{
if (HIWORD(wparam) == LBN_DBLCLK) {
TCHAR temp[100]{};
int index = SendMessageW(This->listbox_handle, LB_GETCURSEL, 0, 0L);
SendMessageW(This->listbox_handle, LB_GETTEXT, index, (LPARAM)temp);
MessageBox(window_handle, temp, L"test", 0);
}
return 0;
}
这对我很有用:
是的,我也做到了这一点,但必须添加LBS\U NOTIFY以使子窗口消息通过。好的(这通常由资源编辑器设置,但我看到您没有使用它)。那么,您现在遇到了什么问题?您是否尝试过在case WM_COMMAND
之后的行上放置断点并检查wParam
?我很想知道单击了什么文本。查看了windows visual studio 2019上的对话框编辑器。我可以在那里构建,但如何将其导出到我的代码中?@ayeslLBN_DBLCLK
不会告诉您这些信息。您必须处理这些信息,否则将发送cout
case WM_COMMAND:
{
if (HIWORD(wparam) == LBN_DBLCLK) {
TCHAR temp[100]{};
int index = SendMessageW(This->listbox_handle, LB_GETCURSEL, 0, 0L);
SendMessageW(This->listbox_handle, LB_GETTEXT, index, (LPARAM)temp);
MessageBox(window_handle, temp, L"test", 0);
}
return 0;
}