Win32 标准控件 EDIT 编辑框

CreateWindow 创建窗口指定类名 EDIT

 

常用style样式

ES_AUTOHSCROLL 当用户在行尾键入一个字符时,自动将文本向右滚动10个字符。当用户 按下ENTER键时,控件将所有文本滚动回零位置。

ES_AUTOVSCROLL 当用户按下最后一行上的ENTER键时,自动将文本向上滚动到一个页面。

ES_CENTER 将文本集中在单行或多行编辑控件中。

ES_LEFT 将文本与左页边距对齐。

ES_LOWERCASE 在编辑控件中键入所有字符时将其转换为小写。要在创建控件后更改此样式, 请使用SetWindowLong。

ES_MULTILINE 指定多行编辑控件。默认是单行编辑控件。当多行编辑控件位于对话框中时, 按ENTER键的默认响应是激活默认按钮。要使用ENTER键作为回车,请使用ES_WANTRETURN样 式、当对话框中没有多行编辑控件,并且指定了ES_AUTOVSCROLL样式时,编辑控件将显示尽 可能多的行,并在用户按ENTER键时垂直滚动。如果不指定ES_AUTOVSCROLL,编辑控件将显 示尽可能多的行,如果使用,它会发出嘟嘟声

ES_NOHIDESEL 否定编辑控件的默认行为。默认行为在控件丢失输入焦点时隐藏选择,在控件接收输 入焦点时反转选择。如果指定ES_NOHIDESEL,即使控件没有焦点,所选文本也是反向的。

ES_NUMBER 只允许数字进入编辑控件。注意,即使使用这个集合,仍然可以将非数字粘贴到 编辑控件中。要在创建控件后更改此样式,请使用SetWindowLong。要将输入编辑控件的文 本转换为整数值,可以使用GetDlgItemInt函数。要将编辑控件的文本设置为指定整数的字 符串表示形式,请使用SetDlgItemInt函数。

ES_OEMCOVERT 转换编辑控件中输入的文本。文本将从Windows字符集转换为OEM字符集, 然后再转换回Windows字符集。当应用程序调用CharToOem函数将编辑控件中的Windows 字符串转换为OEM字符时,这可以确保正确的字符转换。这种样式对于包含将在不支持 Unicode的文件系统上使用的文件名的编辑控件最有用。要在创建控件后更改此样式, 请使用SetWindowLong。

ES_PASSWORD 为输入到编辑控件中的每个字符显示星号(*)。此样式仅适用于单行编辑控件 如果编辑控件来自user32。dll,默认密码字符是星号。但是,如果编辑控件来自 comctl32.dll版本6,则默认字符为黑色圆圈。要更改显示的字符,或设置或清除此样式, 请使用EM_SETPASSWORDCHAR消息。注意:Comctl32.dll版本6不是可重新分发的,但它包 含在Windows XP或更高版本中。要使用Comctl32.dll版本6,请在清单中指定它。为铁道部

ES_READONLY 防止用户在编辑控件中键入或编辑文本。要在创建控件后更改此样式, 请使用EM_SETREADONLY消息。

ES_RIGHT 在单行或多行编辑控件中对文本进行右对齐。

ES_UPPERCASE 在编辑控件中键入所有字符时将其转换为大写。要在创建控件 后更改此样式,请使用SetWindowLong。

ES_WANGRETURN 指定当用户在对话框中的多行编辑控件中输入文本时按ENTER键插入回车。 如果不指定此样式,按ENTER键与按对话框的默认按钮具有相同的效果。这种样式对单行 编辑控件没有影响。要在创建控件后更改此样式,请使用SetWindowLong。

 

代码示例:

#define _CRT_SECURE_NO_DEPRECATE
#include <Windows.h>
#include <tchar.h>
LRESULT CALLBACK WndProc(
	_In_  HWND hWnd,
	_In_  UINT Msg,
	_In_  WPARAM wParam,
	_In_  LPARAM lParam
);



int WINAPI WinMain(
HINSTANCE hInInstance,
HINSTANCE hPrevhInInstance,
LPSTR lpCmdLine,
int nCmdShow) {
	static TCHAR szWindowClass[] = TEXT("win32app");
	WNDCLASSEX wcex;
	wcex.cbSize = sizeof(WNDCLASSEX);
	wcex.style = CS_HREDRAW | CS_VREDRAW;
	wcex.lpfnWndProc = WndProc;
	wcex.cbClsExtra = 0;
	wcex.cbWndExtra = 0;
	wcex.hInstance = hInInstance;
	wcex.hIcon = LoadIcon(hInInstance, MAKEINTRESOURCE(IDI_APPLICATION));
	wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
	//wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
	wcex.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
	wcex.lpszMenuName = NULL;
	wcex.lpszClassName = szWindowClass;
	wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_APPLICATION));

	if (!RegisterClassEx(&wcex))
	{
		MessageBox(NULL,
			TEXT("Call to RegisterClassEx failed!"),
			TEXT("Win32 Guided Tour"),
			NULL);

		return -1;
	}

	static TCHAR szTitle[] = TEXT("Win32 Guided Tour Application");

	// The parameters to CreateWindow explained:
	// szWindowClass: the name of the application
	// szTitle: the text that appears in the title bar
	// WS_OVERLAPPEDWINDOW: the type of window to create
	// CW_USEDEFAULT, CW_USEDEFAULT: initial position (x, y)
	// 500, 100: initial size (width, length)
	// NULL: the parent of this window
	// NULL: this application does not have a menu bar
	// hInstance: the first parameter from WinMain
	// NULL: not used in this application
	HWND hWnd = CreateWindow(
		szWindowClass,
		szTitle,
		WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT, CW_USEDEFAULT,
		500, 100,
		NULL,
		NULL,
		hInInstance,
		NULL
	);
	if (!hWnd)
	{
		MessageBox(NULL,
			TEXT("Call to CreateWindow failed!"),
			TEXT("Win32 Guided Tour"),
			NULL);

		return -1;
	}
	// The parameters to ShowWindow explained:
	// hWnd: the value returned from CreateWindow
	// nCmdShow: the fourth parameter from WinMain
	ShowWindow(hWnd,nCmdShow);
	UpdateWindow(hWnd);

	MSG msg;
	while (GetMessage(&msg, NULL, 0, 0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}

	return (int)msg.wParam;
}

LRESULT CALLBACK WndProc(
	_In_  HWND hwnd,
	_In_  UINT uMsg,
	_In_  WPARAM wParam,
	_In_  LPARAM lParam
) {
	switch (uMsg)
	{
	case WM_CREATE: {
		LPCREATESTRUCT cp = LPCREATESTRUCT(lParam);
		TCHAR msginfo[30] = {};
		_stprintf(msginfo,TEXT("窗口句柄:%p\n"),cp->hInstance);
		OutputDebugString(msginfo);

		HWND EditHwnd = CreateWindow(
			TEXT("EDIT"),
			TEXT("This is a EditControl"),
			WS_CHILD | WS_VISIBLE| ES_MULTILINE | ES_MULTILINE | ES_AUTOVSCROLL,
			20,
			20,
			200,
			80,
			hwnd,
			(HMENU)0X11,
			cp->hInstance,
			NULL
		);
		//ShowWindow(Ethwnd, nCmdShow);

		return true;
	}
	case WM_CLOSE: {
		return DestroyWindow(hwnd);
	}
	case WM_DESTROY: {
		PostQuitMessage(2);
		return true;
	}
	default:
		return DefWindowProc(hwnd, uMsg, wParam, lParam);
	}
}

20190311163402.png

本博客所有文章如无特别注明均为原创。作者:odaycaogen复制或转载请以超链接形式注明转自 123``blog
原文地址《Win32 标准控件 EDIT 编辑框

相关推荐

发表评论

路人甲 表情
Ctrl+Enter快速提交

网友评论(0)