Win32控件使用——Edit控件

Drecik学习经验分享

转载请注明出处:http://blog.csdn.net/drecik__/article/details/8112844


Edit控件是一个很强大的输入控件,可以处理很多样式,通过VS的控件属性来设置,有单行,多行,密码框,滚动条等。

和Button控件一样,编辑框想父窗口发送WM_COMMAND消息,各个参数的意义也和Button控件的一样:

  • LOWORD(wParam)   子窗口ID
  • HIWORD(wParam)   通知码
  • lParam 子窗口句柄

其中通知码可以如下所示:


  • EN_SETFOCUS 编辑控件获得输入焦点
  • EN_KILLFOCUS 编辑控件失去输入焦点
  • EN_CHANGE 编辑控件的内容将改变
  • EN_UPDATE 编辑控件的内容已变化
  • EN_ERRSPACE 编辑控件没有空间了
  • EN_MAXTEXT 编辑控件没有控件完成插入了
  • EN_HSCROLL 编辑控件水平滚动条被单击了
  • EN_VSCROLL 编辑控件垂直滚动条被单击了

获得Edit控件输入的内容可以通过之前讨论过的通用函数(参考前面的博文),GetWindowText等。

下面列举下常用的使用SendMessage发送给编辑控件的消息:

	// 剪切,复制,删除当前选择内容;
	SendMessage( hWndEdit, WM_CUT, 0, 0 );
	SendMessage( hWndEdit, WM_COPY, 0, 0 );
	SendMessage( hWndEdit, WM_CLEAR, 0, 0 );

	// 将剪贴板上的文本插入到编辑控件的当前位置;
	SendMessage( hWndEdit, WM_PASTE, 0, 0 );

	// 获得当前选择文本的初始位置和终止位置,终止位置时最后一个字符+1;
	SendMessage( hWndEdit, EM_GETSEL, &iStart, &iEnd );

	// 选择文本;
	SendMessage( hWndEdit, EM_SETSEL, iStart, iEnd );

	// 使用其他文本取代当前选择的文本;
	SendMessage( hWndEdit, EM_REPLACESEL, 0, (LPARAM)szString );

	// 获得编辑器的行数;
	iCount = SendMessage( hWndEdit, EM_GETLINECOUNT, 0, 0 );

	// 获得从编辑缓冲区起点到这行的位移量,如果iLine为-1则默认为插入符号所在行;
	iOffset = SendMessage( hWndEdit, EM_LINEINDEX, iLine, 0 );

	// 得到所在行的的长度;
	iLength = SendMessage( hWndEdit, EM_LINELENGTH, iLine, 0 );

	// 复制某一行到缓冲区;
	iLength = SendMessage( hWndEdit, EM_GETLINE, iLine, (LPARAM)szBuffer );

你可能感兴趣的:(Win32控件使用——Edit控件)