Win32 SDK(四)Edit控件用法

1获得控件句柄

HWND hEdit2 = ::GetDlgItem(hWnd, IDC_EDIT2);

WINUSERAPI

HWND

WINAPI

GetDlgItem(

_In_opt_ HWND hDlg,   //父窗口句柄

_In_ int nIDDlgItem);  //控件ID

2赋值

SetDlgItemText(hWnd, IDC_EDIT1, TEXT("给Edit控件赋值方法一"));

HWND hEdit2 = ::GetDlgItem(hWnd, IDC_EDIT2);

SendMessage(hEdit2, WM_SETTEXT, 0, (LPARAM)TEXT("给Edit控件赋值方法二"));

3获得控件中的字符串长度

方法1:

int nLen = SendMessage(hEdit2, WM_GETTEXTLENGTH, 0, 0);

方法2:

int nLen2=GetWindowTextLength(hEdit2);

4获得控件中的字符串

TCHAR tchar[128],tchar2[128];

GetDlgItemText(hWnd, IDC_EDIT1, tchar, 128);          //方法1

SendMessage(hEdit2, WM_GETTEXT, 128, (LPARAM)tchar2); //方法2

5全选中消息,EM_SETSEL

SendMessage(hEdit1, EM_SETSEL, 0, -1);  //全选中

SendMessage(hEdit2, EM_SETSEL, 1, 6);   //1为起始位置,6为结束位置的选中

6获得焦点

SendMessage(hEdit2, WM_SETFOCUS, 0, 0);//获得焦点

7修改控件颜色

//在消息中捕获WM_CTLCOLOREDIT消息

case WM_CTLCOLOREDIT:

{

//OnCtlColorEdit(wParam, lParam);

HDC hdc = (HDC)wParam;

if (hEdit2 == (HWND)lParam || hEdit1 == (HWND)lParam)

{

SetTextColor(hdc, RGB(224, 255, 255));  //设置字体颜色

SetBkMode(hdc, OPAQUE);                      //设置背景色模式

SetBkColor(hdc, RGB(0, 0, 255));        //设置背景颜色

return (INT_PTR)CreateSolidBrush(RGB(0, 0, 255)); //返回一个背景颜色刷子

}

break;

}

8捕获EN_CHANGE消息,控件输入变化消息,是在WM_COMMAND命令消息中捕获

case WM_COMMAND:

{

if (LOWORD(wParam) == IDC_EDIT4 && HIWORD(wParam)==EN_CHANGE)

{

return On_EnChange(wParam, lParam);

}

}

break;

9其他消息

EN_CHANGE:编辑框的内容被用户改变了,与WN_UPDATE不同,这是在编辑框正文被刷新后才发出的消息

EN_ERRSPACE:  编辑框无法申请足够的动态内存来满足需要

EN_HCCROLL:   用户在水平滚动条上单击鼠标

EN_KILLFOCUS; 编辑框获失去焦点

EN_MAXTEX;    超出了规定的最大字符就会发出消息

EN_SETFOCUS;  获得焦点

EN_UPDATE;    在编辑框准备显示改变了正文时发送该消息

EN_VSCROLL;   用户在垂直滚动条上单击鼠标

10.只读消息

EM_SETREADONLY;   只读消息,用法: SendMessage(hEdit1, EM_SETREADONLY, 1, 0);

11.屏蔽系统右键菜单(重写回调函数)

LONG_PTR oldProc;//保存旧的回调函数地址

//在初始消息中重新设置Edit控件的回调函数

BOOL MyWinDialog::OnInitDialog(WPARAM wParam, LPARAM lParam)

{

AfxCWin::OnInitDialog(wParam, lParam);

//TODO:初始化代码

HWND hEditWnd = ::GetDlgItem(m_hWnd, IDC_EDIT2);

//重新设置Edit控件的回调函数

  • oldProc = SetWindowLongPtr(hEditWnd, GWLP_WNDPROC, (LONG_PTR)EditProc);

//新的回调函数

LONG_PTR CALLBACK EditProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)

{

switch (uMsg)

{

case WM_RBUTTONDOWN:

{

//添加自己的右键菜单,如果不添加直接返回1就能屏蔽掉系统菜单了

HMENU hSub = GetSubMenu(pMyDlg->EditMenu, 0);

POINT pt;

GetCursorPos(&pt);

TrackPopupMenu(hSub, TPM_LEFTBUTTON | TPM_TOPALIGN | TPM_RIGHTBUTTON,pt.x, pt.y, 0,pMyDlg->GetHwnd(), NULL);

}

return 1;

default:

break;

}

//返回旧的回调函数

return CallWindowProc((WNDPROC)oldProc, hWnd, uMsg, wParam, lParam);

}

12.动态创建控件

//Edit控件的创建

HWND hEdit1 = 0;

HWND hEdit2 = 0;

//创建单行控件

hEdit1 = ::CreateWindowW(TEXT("Edit"), TEXT("Edit Control1"),

WS_CHILD|WS_VISIBLE|ES_LEFT,

200, 20, 100, 20, hWnd, (HMENU)10001, g_hInstance, NULL);//单行文本

//创建多行控件

hEdit2 = ::CreateWindow(TEXT("Edit"), TEXT("Edit Control2\r\n多行文本控件"), WS_CHILD | WS_VISIBLE | ES_LEFT | ES_MULTILINE | ES_WANTRETURN | WS_VSCROLL | ES_AUTOVSCROLL,

250, 50, 150, 80, hWnd, (HMENU)10002, g_hInstance, NULL);

Win32 SDK(四)Edit控件用法的更多相关文章

  1. win32: 文本编辑框(Edit)控件响应事件

    过去几年,关于文本编辑框(Edit)控件的响应事件,我都是在主程序 while(GetMessage(&messages, NULL, 0, 0)) { ... } 捕获. 总感觉这种方式让人 ...

  2. win32 sdk列表视图控件(ListCtrl或ListView)资料整理

    列表视图控件是一种非常常用的控件,在需要以报表形式显示数据时,列表控件通常是最好的选择,许多专用的数据报表控件,也是在它的基础上派生而来.与树视图类似,列表控件可以由多个子项目组成,可以设置为Icon ...

  3. win32 sdk绘制ListBox控件

    1>产生: // HWND CreateLB(HWND parentWnd) { HWND hListBox=0; hListBox = CreateWindow("LISTBOX&q ...

  4. win32 sdk 列表视图控件绘制

    ////////////////////////////////////////////////////////////// LRESULT ListViewCustomDraw(HWND hwnd, ...

  5. 增加duilib edit控件的提示功能和多种文字颜色

    转载请说明原出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/41786407 duilib的CEditUI控件内部使用了win32的原生 ...

  6. win32 修改Edit控件文本颜色与背景色

    #define WM_CTLCOLORMSGBOX 0x0132 #define WM_CTLCOLOREDIT 0x0133 //编辑控件Edit #define WM_CTLCOLORLISTBO ...

  7. C++ 一个程序获取另一个程序Edit控件的内容

    //一个程序获取另一个程序Edit控件的内容 //根据指定程序的标题名获取改程序窗口的句柄 HWND hWnd=::FindWindow(NULL,"zhang001"); if( ...

  8. vc 在edit控件中动态插入数据滚动显示

    内存从网上论坛摘抄整理 思路:给控件设置多行属性,设置垂直滚动条,Auto Vscroll设置为true,放入文本后把插入点设置到末尾 pEdit->LineScroll(pEdit->G ...

  9. MFC学习之EDIT控件初始化

    //四种方法为EDIT控件初始化     //调用系统API     HWND hEidt = ::GetDlgItem(m_hWnd,IDC_EDIT1);     ::SetWindowText( ...

  10. 关于Datagridview控件用法的一些总结(设置列chicun)

    1. 关于Datagridview控件用法的一些总结:http://www.cnblogs.com/mingjiatang/p/4968049.html

随机推荐

  1. 图片接口JWT鉴权实现

    图片接口JWT鉴权实现 前言 之前做了个返回图片链接的接口,然后没做授权,然后今天键盘到了,也是用JWT来做接口的权限控制. 然后JTW网上已经有很多文章来说怎么用了,这里就不做多的解释了,如果不懂的 ...

  2. Windows/Linux 通过 ssh 打开 远程服务器 GUI程序

    背景 在 Windows + ssh(Cygwin) + Linux(运行在虚拟机中的Ubuntu) 是一个很舒服的方案,但是偶尔需要用到 图形界面. 如果需要通过ssh打开远程服务器端的程序,需要X ...

  3. 无业游民写的最后一个.net有关项目框架

    理想很丰满,现实往往很残酷. 一种按照ddd的方式,根据业务来把自己需要的模块一个一个写出来,再按照模块把需要的接口一个一个的写出来,堆砌一些中间件,以及解耦的command,handler等等 ,一 ...

  4. 传统RNN网络及其案例--人名分类

    传统RNN网络及其案例--人名分类 传统的RNN模型简介 RNN 先上图 这图看起来莫名其妙,想拿着跟CNN对比着学第一眼看上去有点摸不着头脑,其实我们可以把每一个时刻的图展开来,如下 其中,为了简化 ...

  5. 3562-IgH EtherCAT主站开发案例

  6. SpringBoot实现Mysql读写分离

    前言 在高并发的场景中,关于数据库都有哪些优化的手段? 常用的有以下的实现方法:读写分离.加缓存.主从架构集群.分库分表等,在互联网应用中,大部分都是读多写少的场景,设置两个库,主库和读库. 主库的职 ...

  7. 新版SpringBoot-Spring-Mybatis事务控制

    快速创建SpringBoot+Spring+Mybatis项目 https://start.spring.io 删除pom中mysql依赖的runtime pom.xml中添加druid依赖 < ...

  8. Spark大数据集群日常开发过程遇到的异常及解决思路汇总

    总结/朱季谦 一.出现java.lang.IllegalAccessError: tried to access method com.google.common.base.Stopwatch.()V ...

  9. 洛谷·P1130

    #include<iostream> #include<utility> using namespace std; typedef long long ll; #define ...

  10. Java-JDBC的对象DriverManager,Connection,ResultSet,PreparedStatement,工具类:JDBCUTILS,JDBC控制事务

    1. 概念 Java DataBase Connectivity Java 数据库连接 Java语言操作数据库 JDBC本质:其实是官方(sun)公司的一套操作所有关系型数据库的规则,即接口.各个数据 ...