juliusun.com
编辑框控件的窗口类名是"edit",编辑框内容改变时,父窗口会收到WM_COMMAND通知,wParam参数的高16位为EN_CHANGE,低16位为窗口标识符。lParam值为编辑框窗口句柄。
本来想通过点击按钮事件画获取编辑框内容,考虑到可能部分读者可能仍然不会使用按钮。所以本节代码是在编辑框内容改变时获取编辑框内容。学一个控件时尽量不使用另一个控件,防止混淆。
代码如下:
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
static HWND hEdit;/*创建完成后,编辑框窗口句柄保留,会在获取内容时用到*/
TCHAR string[100];/*获取的窗口内容存放在此处*/
switch (uMsg)
{
case WM_CREATE:
#define IDE_CONTENT 102
hEdit = CreateWindowEx(0, TEXT("edit"), NULL, WS_CHILD | WS_VISIBLE, 10, 10, 100, 30, hWnd, (HMENU)IDE_CONTENT, ((LPCREATESTRUCT)lParam)->hInstance, NULL);
break;
case WM_COMMAND:
switch (HIWORD(wParam))
{
case EN_CHANGE:
switch (LOWORD(wParam))
{
case IDE_CONTENT:
GetWindowText(hEdit, string, 100);
/*GetWindowText可以获取窗口标题,第一个参数是窗口句柄、第二个参数是字符串地址、第三个参数是最多存放的字符个数*/
/*lParam是通过消息传递过来的编辑框句柄,不过考虑到可移植性,本代码使用了保存在hEdit变量中的句柄。*/
MessageBox(hWnd, string, TEXT("编辑框内容如下"), MB_OK);
/*MessageBox第一个参数是窗口句柄,此时,当对话框存在时,hWnd对应的窗口将不允许用户操作*/
break;
}
break;
}break;
case WM_CLOSE:
DestroyWindow(hWnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
return 0;
}
为查看编辑框效果,本例把窗口背景改为GRAY_BRUSH,效果图如下:
注意,上述代码中是通过GetWindowText函数获取窗口句柄,这不是唯一方法。通过WM_GETTEXT消息同样能获取编辑框内容。事实上,本代码获取本进程中的子窗口内容时GetWindowText内部也是通过WM_GETTEXT消息实现的。跨进程时GetWindowText工作方法与此不一。有兴趣可以查一查WM_GETTEXT消息用法。
代码:
UNICODE编码源码地址: | 13unicode.php |
TCHAR编码源码地址: | 13tchar.php |
ANSI编码源码地址: | 13ansi.php |
作者QQ:3304576112 交流QQ群:316930386 本教程内容由 juliusun.com 保留版权,请匆复制传播。