第一次写博客,见谅
注意:
- 真的从0开始,只有一点C/C++基础
- 之前的学习记录都在电脑里,之后有空慢慢传上来
- 学的是win32,用的是vs2013,看的视频里老师用的是vs2010
- 写这个的主要目的是怕自己之后忘了,方便捡起来
--学习内容:控件之编辑栏:windows标准控件,可以由客户向其中输入文本。窗口类名是edit。
1)控件样式:ES edit style(部分):
ES_MULTILINE//多行
ES_AUTOVSCROLL//超出范围之后自动向下滚动(必须在多行的基础上)配合WS_VSCROLL,输入框会有滚动条
ES_PASSWORD//输入的东西都显示为*,不能和ES_MULTILINE一起
ES_LOWERCASE/UPPERCASE//全部改成小写字母/大写字母
ES_WANTRETURN//视回车为换行,若不设置则会直接执行默认命令(如果没有别的命令就不用设这个格式也会把回车当换行)
windows控件库(样式、用法都可以在里面查找)
https://docs.microsoft.com/zh-cn/windows/win32/controls/window-controls
2)向编辑框控件发送消息EM_XXX(edit message)
示例:自动选中部分文字
需要配合ES_NOHIDESEL样式,SendMessage(hedit, EM_SETSEL, 1, 3);//第一个字符是0,依次增加。
3)控件向父窗口发送WM_COMMAND消息
消息参数:
wParam:低字节是控件id,高字节是通知码;lParam:edit控件的句柄
通知码为EN_XXX(edit notifications):
EN_CHANGE//用户正在编辑
4)GetWindowText函数获取窗口标题栏文本(控件的文本内容)其实就是向控件发送了一个WM_GETTEXT消息
int WINAPI GetWindowTextW( HWND hWnd,//控件句柄
(nMaxCount) LPWSTR lpString,//接收文本的地址
int nMaxCount);//字符串总长(包括\0)
case WM_COMMAND:
{
WORD id = LOWORD(wParam);
WORD code = HIWORD(wParam);
HWND hedit = (HWND)lParam;
if (id == 1 && code == EN_CHANGE)
{
TCHAR buffer[64] = { 0 };
GetWindowText(hedit, buffer, sizeof(buffer));
MessageBox(NULL, buffer, L"编辑栏内容", MB_OK);
}
}break;
5)我想把这玩意染成绿色的:父窗口过程处理WM_CTLCOLOREDIT(WM_CTLCOLORSTATIC静态控件
消息参数还是wParam为hdc,lParam为控件句柄
返回值一样是一个画刷(用于背景)