Windows图形界面(GUI)-SDK-C/C++ - 编辑框(edit)
- 公开视频 -> 链接点击跳转公开课程
- 博客首页 -> 链接点击跳转博客主页
目录
编辑框(edit)
控件样式
- 编辑框(Edit Control)是Windows中最常用的控件之一,用于接收用户输入的文本信息。编辑框可以设置为单行或多行,支持多种文本格式和输入限制。
- 风格样式
WS_CHILD
:子窗口样式。WS_VISIBLE
:控件创建时可见。WS_BORDER
:控件周围有边框。WS_TABSTOP
:用户可以使用Tab键切换到此控件。
- 控件样式
ES_AUTOHSCROLL
:当用户输入超过控件宽度时,文本自动向左滚动。ES_MULTILINE
:多行编辑框。ES_WANTRETURN
:在多行编辑框中,用户按下Enter键时插入一个换行符,而不是发送WM_COMMAND
消息。
创建控件
- 使用
CreateWindow
或CreateWindowEx
函数创建编辑框控件。需要指定控件类名为"EDIT"
,并设置相应的窗口样式。
初始控件
- 设置和获取文本
- WM_SETTEXT:设置编辑框的文本。
- WM_GETTEXT:获取编辑框的文本。
- WM_GETTEXTLENGTH:获取编辑框文本的长度。
- 控制编辑框行为
- EM_SETREADONLY:设置编辑框为只读模式。
- EM_SETSEL:选择编辑框中的文本。
- EM_REPLACESEL:替换选定的文本。
- EM_GETSEL:获取当前选定的文本范围。
消息处理
- 通知消息
- EN_CHANGE:编辑框内容发生改变。
- EN_UPDATE:编辑框将要更新显示。
- EN_SETFOCUS:编辑框获得输入焦点。
- EN_KILLFOCUS:编辑框失去输入焦点。
示例代码
#include <Windows.h>
#include "resource.h"
#define ID_EDIT_SINGLELINE1
#define ID_EDIT_MULTILINE2
#define ID_EDIT_PASSWORD3
#define ID_EDIT_READONLY4
HINSTANCE ghInstance = 0;
LRESULT CALLBACK MainWindowProc (HWND, UINT, WPARAM, LPARAM);
INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
ghInstance = hInstance;
// 注册窗口
WNDCLASSEX wndclass = { 0 };
wndclass.cbSize = sizeof(WNDCLASSEX);
wndclass.style = NULL;
wndclass.lpfnWndProc = MainWindowProc;
wndclass.cbClsExtra = NULL;
wndclass.cbWndExtra = NULL;
wndclass.hInstance = hInstance;
wndclass.hIcon = NULL;
wndclass.hCursor = NULL;
wndclass.hbrBackground = (HBRUSH)COLOR_WINDOW;
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = TEXT("0xCC");
wndclass.hIconSm = NULL;
if (!RegisterClassEx(&wndclass))
{
MessageBox(NULL, TEXT("RegisterClassEx Failed"), TEXT("Error"), MB_OK);
return 1;
}
// 创建窗口
HWND hwnd = CreateWindowEx(
WS_EX_CLIENTEDGE,
TEXT("0xCC"),
TEXT("CreateWindowEx"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
960,
540,
NULL,
NULL,
hInstance,
NULL
);
if (hwnd == NULL)
{
MessageBox(NULL, TEXT("CreateWindowEx Failed"), TEXT("Error"), MB_OK);
return 1;
}
// 显示窗口
ShowWindow(hwnd, SW_SHOWDEFAULT);
// 更新窗口
UpdateWindow(hwnd);
// 消息处理
MSG msg = { 0 };
while (GetMessage(&msg, 0, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
// 窗口过程
LRESULT CALLBACK MainWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
static HWND hEditLine, hMultiple, hPassWord, hReadOnly;
switch (uMsg)
{
case WM_CREATE:
{
//创建控件
hEditLine = CreateWindow(
TEXT("EDIT"),
NULL,
WS_CHILD | WS_VISIBLE | WS_BORDER | ES_LEFT,
10, 10, 200, 25,
hwnd,
HMENU(ID_EDIT_SINGLELINE),
ghInstance,
NULL);
hMultiple = CreateWindow(
TEXT("EDIT"),
NULL,
WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | ES_LEFT | ES_MULTILINE | ES_AUTOVSCROLL,
10, 50, 200, 100,
hwnd,
HMENU(ID_EDIT_MULTILINE),
ghInstance,
NULL);
hPassWord = CreateWindow(
TEXT("EDIT"),
NULL,
WS_CHILD | WS_VISIBLE | WS_BORDER | ES_LEFT | ES_PASSWORD,
10, 165, 200, 25,
hwnd,
HMENU(ID_EDIT_PASSWORD),
ghInstance,
NULL);
hReadOnly = CreateWindow(
TEXT("EDIT"),
TEXT("ES_READONLY"),
WS_CHILD | WS_VISIBLE | WS_BORDER | ES_LEFT | ES_READONLY,
10, 205, 200, 25,
hwnd,
HMENU(ID_EDIT_READONLY),
ghInstance,
NULL);
// 初始控件
// 设置文本
//SendMessage(hEditLine, WM_SETTEXT, 0, (LPARAM)TEXT("Hello World"));
// 获取文件
//TCHAR szBuffer[0xFF] = { 0 };
//SendMessage(hEditLine, WM_GETTEXT, 0xFF, (LPARAM)szBuffer);
// 获取长度
//DWORD dwLength = SendMessage(hEditLine, WM_GETTEXTLENGTH, 0, 0);
// 设置风格
SendMessage(hEditLine, EM_SETREADONLY, TRUE, 0);
break;
}
case WM_DESTROY:
{
PostQuitMessage(0);
break;
}
case WM_COMMAND:
{
switch (HIWORD(wParam))
{
case EN_CHANGE:
{
if (LOWORD(wParam) == ID_EDIT_SINGLELINE)
{
TCHAR szBuffer[0xFF] = { 0 };
SendMessage(hEditLine, WM_GETTEXT, 0xFF, (LPARAM)szBuffer);
}
}
//case EN_SETFOCUS:
//{
//if (LOWORD(wParam) == ID_EDIT_MULTILINE)
//{
//MessageBox(0, TEXT("EN_SETFOCUS"), 0, 0);
//}
//break;
//}
case EN_KILLFOCUS:
{
if (LOWORD(wParam) == ID_EDIT_MULTILINE)
{
MessageBox(0, TEXT("EN_KILLFOCUS"), 0, 0);
}
break;
}
break;
}
}
default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
}
原文地址:https://blog.csdn.net/2301_80612536/article/details/140354201
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!