Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用C+调用按钮+;按下enter按钮时使用Win32 API? < >我用C++ Win32 API创建了一个对话框… 有3个文本框,1个组合框和3个按钮_C++_Windows_Winapi_Dialog_Modal Dialog - Fatal编程技术网

如何使用C+调用按钮+;按下enter按钮时使用Win32 API? < >我用C++ Win32 API创建了一个对话框… 有3个文本框,1个组合框和3个按钮

如何使用C+调用按钮+;按下enter按钮时使用Win32 API? < >我用C++ Win32 API创建了一个对话框… 有3个文本框,1个组合框和3个按钮,c++,windows,winapi,dialog,modal-dialog,C++,Windows,Winapi,Dialog,Modal Dialog,现在我有两个问题 1.当我按下ENTER按钮时,它会调用第二个按钮(ID_OK)功能,但我想调用第一个按钮(ID_MYBUTTON) 2.我正在使用代码聚焦文本框 SetFocus(GetDlgItem(_hwnd, IDC_NAME)); 但它不能聚焦对话框,我的意思是光标的位置在那里,但不能得到任何值,当我键入 有人能解决吗?这可以回答您的两个问题: : 使用DM_SETDEFID消息设置对话框中的默认按钮 使用WM_NEXTDLGCTL消息代替SetFocus() 关于第一个问题,您可以

现在我有两个问题

1.当我按下ENTER按钮时,它会调用第二个按钮(ID_OK)功能,但我想调用第一个按钮(ID_MYBUTTON)

2.我正在使用代码聚焦文本框

SetFocus(GetDlgItem(_hwnd, IDC_NAME));
但它不能聚焦对话框,我的意思是光标的位置在那里,但不能得到任何值,当我键入


有人能解决吗?

这可以回答您的两个问题: :

使用DM_SETDEFID消息设置对话框中的默认按钮

使用WM_NEXTDLGCTL消息代替SetFocus()


关于第一个问题,您可以将按钮设置为默认的ENTER目标,而不是OK按钮。我只是想问,如何设置?这是对话框容器的属性:您可以设置“AcceptButton”和“CancelButton”属性来控制ENTER(接受)或ESC(取消)的行为谢谢你的信息,我不能用你的信息…我用C++ Win32 ApI.不是MFC。匿名的懦夫的答案似乎指向正确的方式。@懦夫…谢谢…设置默认按钮工作很好…但是不能聚焦那个文本框…而且也不能对焦对话框,BCZ首先我按Enter按钮,不能工作,单击对话框后,只有默认的按钮功能起作用…所以现在我想知道如何聚焦对话框,然后是对话框中的文本框?您使用什么功能来创建对话框?DialogBoxIndirect()?使用wlxDialogBoxParam()函数…启动系统时,logondialogbox中出现此问题。如果没有看到代码,很难判断;这可能是DialogProc中的一个问题。如果在WinMain中创建一个直接调用DialogBoxParam()的测试项目,那么问题是否仍然存在?在谷歌搜索之后,我发现(1)有人有同样的问题,(2)问题的可能原因:在_dialogProc中,case WM_INITDIALOG必须返回TRUE(而不是FALSE)。您可能需要添加SetForegroundWindow(hwnd)。
// set default button
SendMessage(_hwnd, DM_SETDEFID, (WPARAM)ID_MYBUTTON, 0);
//TODO: if the former default button's style remains, update with BM_SETSTYLE

// set focus
SendMessage(_hwnd, WM_NEXTDLGCTL, (WPARAM)GetDlgItem(_hwnd, IDC_NAME), TRUE);