[英]Subclassing an edit text control to accept lowercase characters when shift is pressed
我有一个编辑文本控件,我想在按下SHIFT键时将其子类化为允许小写字母,因为默认情况下该控件只接受大写字母。
所以我的问题是如何将控件中的键入模式从小写更改为大写。
我正在使用WIN32,我成功捕获了WM_CHAR事件:WNDPROC ancienneEditProc; LALLULT CALLBACK EditTextProc(HWND hwnd,UINT mssg,WPARAM wParam,LPARAM lParam){switch(mssg){
大小写WM_CHAR:{char character [2]; 字符[0] =(char)wParam; 字符[1] = 0; if(HIWORD(GetKeyState(VK_SHIFT))){AnsiLower(character); } wParam = character [0]; } break; } return CallWindowProc(ancienneEditProc,hwnd,mssg,wParam,lParam); 但是问题是,在捕获WM_CHAR之后,如何更新编辑文本控件以接受小写字母。
我假设您正在使用win32或MFC文本编辑。 只需捕获WM_CHAR事件。
在MFC上,使用消息映射:
在你的.h中
class YourEdit public CEdit
{
afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
DECLARE_MESSAGE_MAP()
};
在你的.cpp中
BEGIN_MESSAGE_MAP(YourEdit, CEdit)
ON_WM_CHAR()
END_MESSAGE_MAP()
YourEdit::::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
nchar = toupper(nchar);
CWnd::OnChar(nChar,nRepCnt,nFlags);
}
参见: http : //msdn.microsoft.com/zh-cn/library/3zzfkd75%28v=vs.71%29.aspx
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.