gpt4 book ai didi

c++ - Win32 - 使用 GetDlgItem 检索 DialogBox 的控制失败

转载 作者:行者123 更新时间:2023-11-28 03:53:30 26 4
gpt4 key购买 nike

在我的主窗口中,单击菜单项后,会出现一个对话框,要求用户输入。然后将检索该输入。

这是对话框的资源文件:

//
// Dialog resources
//
IDD_PID DIALOG 0, 0, 158, 84
STYLE DS_3DLOOK | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_CAPTION | WS_VISIBLE | WS_POPUP
FONT 8, "MS Sans Serif"
{
PUSHBUTTON "&Ok", ID_PID_RET, 14, 60, 58, 14
PUSHBUTTON "&Cancel", ID_PID_CANCEL, 86, 60, 52, 14
CTEXT "Enter the PID of the process", -1, 32, 16, 91, 15, SS_CENTER
CONTROL "", ID_PID_INPUT, RICHEDIT_CLASS, WS_TABSTOP | WS_BORDER | ES_AUTOHSCROLL, 47, 33, 59, 14, WS_EX_CLIENTEDGE
}

这是使用对话框的 WindowProc:

//
// Message handling for main window
//
LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_COMMAND:
switch (LOWORD(wParam))
{
case ID_FILE_PID:
int choice = DialogBox(thishInstance, MAKEINTRESOURCE(IDD_PID), hWnd, AboutDlgProc);
if (choice == ID_PID_RET)
{
HWND temp = GetDlgItem(hWnd, ID_PID_INPUT);
HRESULT HR = GetLastError();
SendMessage(temp, WM_GETTEXT, sizeof(buff), (LPARAM)&buff);

[...]
}
break;
}
}
}

如果我在资源文件中创建窗口,当我尝试获取 HWND 时,我有点不确定它是如何工作的。这应该以某种方式起作用,对吧? hWnd是管理对话框的,ID_PID_RET是用户输入的Rich Edit框的控件ID,不知道为什么GetDlgItem 失败。它返回“找不到控件 ID”,但它是在我的 resource.h 中定义的。有什么想法吗?

最佳答案

DialogBox 仅在调用 EndDialog 且对话框已销毁后返回。当您调用 GetDlgItem 时,该对话框不再存在。您可以使用 DialogBoxParam 并传入缓冲区/结构/类,以便在调用 EndDialog 之前为对话框填充 Rich Edit 字段的内容。

关于c++ - Win32 - 使用 GetDlgItem 检索 DialogBox 的控制失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4527170/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com