cUs*_*r26 3 c++ winapi codeblocks
我想让我的应用程序上的标签按钮工作,所以当我按下标签时,它会从一个编辑框变为另一个,这些是编辑框代码:
case WM_CREATE:
TextBox = CreateWindow("EDIT",
"",
WS_BORDER|WS_CHILD|WS_VISIBLE|WS_EX_LAYERED|WS_TABSTOP|WS_GROUP,
60,50,200,20,
hwnd,NULL,NULL,NULL);
DataBox = CreateWindow("EDIT",
"",
WS_BORDER|WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_GROUP,
60,72,200,20,
hwnd,NULL,NULL,NULL);
MotivBox = CreateWindow("EDIT",
"",
WS_BORDER|WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_GROUP,
60,92,200,20,
hwnd,NULL,NULL,NULL);
PretBox = CreateWindow("EDIT",
"",
WS_BORDER|WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_GROUP,
60,112,200,20,
hwnd,NULL,NULL,NULL);
Run Code Online (Sandbox Code Playgroud)
修复非常简单.鉴于您正在处理WM_CREATE消息而不是WM_INITDIALOG消息,假设您将控件添加到"标准"窗口而不是"对话框"似乎是安全的.
考虑到这一点,我希望你的winmain中有以下内容:
/* Run the message loop. It will run until GetMessage() returns 0 */
while (GetMessage (&messages, NULL, 0, 0))
{
/* Translate virtual-key messages into character messages */
TranslateMessage(&messages);
/* Send message to WindowProcedure */
DispatchMessage(&messages);
}
Run Code Online (Sandbox Code Playgroud)
但是,IsDialogMessage州的文件:
"尽管IsDialogMessage函数适用于无模式对话框,但您可以将其用于包含控件的任何窗口,使窗口能够提供与对话框中使用的相同的键盘选择.当IsDialogMessage处理消息时,它会检查键盘消息并将它们转换为相应对话框的选择命令.例如,按下TAB键时,选择下一个控件或一组控件,按下DOWN ARROW键,选择组中的下一个控件.
由于IsDialogMessage函数执行所有必要的消息转换和分派,因此IsDialogMessage处理的消息不得传递给TranslateMessage或DispatchMessage函数.
因此,您可以将消息泵更改为类似以下内容:
/* Run the message loop. It will run until GetMessage() returns 0 */
while (GetMessage (&messages, NULL, 0, 0))
{
/* Translate virtual-key messages into character messages */
if (IsDialogMessage(hwnd, &messages) == 0)
{
TranslateMessage(&messages);
/* Send message to WindowProcedure */
DispatchMessage(&messages);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2998 次 |
| 最近记录: |