我有一个编辑文本控件,我想在按下SHIFT键时子类允许使用小写字符,因为默认情况下允许控件只接受大写字符。
所以我的问题是如何将控件中的输入模式从低级改为大写。
我正在使用WIN32,我成功捕获了WM_CHAR事件:
WNDPROC ancienneEditProc;
LRESULT CALLBACK EditTextProc(HWND hwnd,UINT mssg,WPARAM wParam,LPARAM lParam)
{
开关(mssg)
{
案例WM_CHAR:
{
char character [2];
character [0] =(char)wParam;
character [1] = 0;
如果(HIWORD(函数GetKeyState(VK_SHIFT)))
{
AnsiLower(字符);
}
wParam = character [0];
}
打破;
}
return CallWindowProc(ancienneEditProc,hwnd,mssg,wParam,lParam);
}
但问题是如何在捕获WM_CHAR后更新编辑文本控件以接受小写。
答案 0 :(得分:0)
我假设您正在使用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/en-us/library/3zzfkd75%28v=vs.71%29.aspx