在按下shift时,对编辑文本控件进行子类化以接受小写字符

时间:2012-11-27 13:28:53

标签: c++ winapi

我有一个编辑文本控件,我想在按下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后更新编辑文本控件以接受小写。

1 个答案:

答案 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