gpt4 book ai didi

c++ - 使用 DialogBoxIndirect 时,如何获取用户在对话框关闭时输入的文本?

转载 作者:太空宇宙 更新时间:2023-11-04 08:24:53 24 4
gpt4 key购买 nike

我正在使用 DialogBoxIndirect() 在内存中创建模式对话框。我添加到对话框中的控件之一具有 EDIT 类,因此用户可以在对话框中输入信息。当对话框关闭时,我如何找出用户在 EDIT 字段中输入的内容?我没有 EDIT 字段或对话框本身的 HWND,我只有 ID。我知道的唯一方法是 GetWindowText(),但这需要 HWND。

代码片段:

//-----------------------
// Define Edit Input
//-----------------------
lpw = lpwAlign(lpw); // Align DLGITEMTEMPLATE on DWORD boundary
lpdit = (LPDLGITEMTEMPLATE)lpw;
lpdit->x = 10; lpdit->y = 10;
lpdit->cx = 150; lpdit->cy = 25;
lpdit->id = ID_TEXT2; // Text input
lpdit->dwExtendedStyle = WS_EX_CLIENTEDGE;
lpdit->style = WS_CHILD | WS_VISIBLE;
lpw = (LPWORD)(lpdit + 1);
*lpw++ = 0xFFFF;
*lpw++ = 0x0081; // Edit class
lpwsz = (LPWSTR)lpw;
nchar = MultiByteToWideChar(CP_ACP, 0, lpszMessage, -1, lpwsz, 50);
lpw += nchar;
*lpw++ = 0; // No creation data

//-----------------------
// Define an OK button.
//-----------------------
lpw = lpwAlign(lpw); // Align DLGITEMTEMPLATE on DWORD boundary
lpdit = (LPDLGITEMTEMPLATE)lpw;
lpdit->x = 10; lpdit->y = 40;
lpdit->cx = 35; lpdit->cy = 13;
lpdit->id = IDOK; // OK button identifier
lpdit->style = WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON;
lpw = (LPWORD)(lpdit + 1);
*lpw++ = 0xFFFF;
*lpw++ = 0x0080; // Button class
lpwsz = (LPWSTR)lpw;
nchar = MultiByteToWideChar(CP_ACP, 0, "OK", -1, lpwsz, 50);
lpw += nchar;
*lpw++ = 0; // No creation data

GlobalUnlock(hgbl);
ret = DialogBoxIndirect(hinst, (LPDLGTEMPLATE)hgbl, GetFocus(), (DLGPROC)GenericDlgProc);
// How do I get the text here, that the user entered into control id ID_TEXT2?

最佳答案

您可以使用 GetDlgItemText() 使用编辑控件的 ID 从编辑控件中获取文本;基本上,这是一个 GetDlgItem(),然后是一个 GetWindowText(),所有这些都在一个有用的函数调用中。

然而,当您的 DialogBoxIndirect() 调用返回时,为时已晚 - 对话框消失了,控件也随之消失了。一旦控件被销毁,您将无法读取控件的值。

处理此问题的通常方法是在 DialogProc 中处理 WM_DESTROY,并在那里保存控件值(或者,如果您有一个 OK 按钮和一个 Cancel 按钮,您可以在 IDOKWM_COMMAND 处理程序中执行此操作)。

关于c++ - 使用 DialogBoxIndirect 时,如何获取用户在对话框关闭时输入的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31082505/

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