GetDlgItemTextA
GetDlgItemTextA,用于获取Dialog组件内容,如TextEdit的文本 官方说明
函数原型:
UINT GetDlgItemTextA(
[in] HWND hDlg, //包含控件的对话框的句柄。
[in] int nIDDlgItem, //组件ID
[out] LPSTR lpString, //输出缓冲区,用于保存返回的内容
[in] int cchMax //缓冲区长度
);
用例:
char string[15];
GetDlgItemTextA(hModule, IDC_EDIT1, string, sizeof(string)); //IDC_EDIT1为组件ID
注意事项:
1. 如果字符串的长度(包括 null 字符)超过限制,则会截断字符串。
源码示例:
开发工具:Visual Studio 2022
开发语言:C++(空项目)
字符集环境:多字节字符集(包含了ASCII)
#include <Windows.h>
#include "resource.h"
INT_PTR CALLBACK Dlgproc(HWND hModule, UINT type, WPARAM wParam, LPARAM lParam)
{
switch (type) { //对话框初始化事件
case WM_INITDIALOG:
{
SetDlgItemTextA(hModule, IDC_EDIT1, "Hello");
MessageBoxA(hModule, "初始化啦!", "提示", 0);
break;
}
case WM_COMMAND: { //触发的组件ID
switch (wParam)
{
case IDOK: { //确认
char string[15];
GetDlgItemTextA(hModule, IDC_EDIT1, string, sizeof(string));
MessageBoxA(hModule, string, "提示", 0);
EndDialog(hModule, 0); //关闭窗口并返回值0
break;
}
case IDCANCEL: { //取消
MessageBoxA(hModule, "取消!", "提示", 0);
EndDialog(hModule, 1); //关闭窗口并返回值1
break;
}
default:
break;
}
break;
}
case WM_CLOSE: { //对话框关闭事件
EndDialog(hModule, 123); //关闭窗口并返回值123
break;
}
default://默认不做任何处理
break;
}
return false;
}
int main(int argc, char* argv[])
{
int ret = DialogBoxParamA(NULL, MAKEINTRESOURCE(IDD_DIALOG1), NULL, Dlgproc, 0);
return 0;
}
源码地址:https://github.com/WongHouLeong/Windows-API/tree/1a99353d8de24240b6b12308234c7656576045ee