首页 文章

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

提问于
浏览
1

我有一个编辑文本控件,我希望子类在按下SHIFT键时允许使用小写字符,因为默认情况下允许控件只接受大写字符 .

所以我的问题是如何将控件中的输入模式从低级更改为大写 .

我正在使用WIN32,我成功捕获了WM_CHAR事件:WNDPROC ancienneEditProc; LRESULT CALLBACK EditTextProc(HWND hwnd,UINT mssg,WPARAM wParam,LPARAM lParam){switch(mssg){
case WM_CHAR:{char character [2]; character [0] =(char)wParam; character [1] = 0; if(HIWORD(GetKeyState(VK_SHIFT))){AnsiLower(character); } wParam = character [0];打破} return CallWindowProc(ancienneEditProc,hwnd,mssg,wParam,lParam);但问题是如何在捕获WM_CHAR后更新编辑文本控件以接受小写 .

1 回答

  • 0

    我假设您正在使用win32或MFC文本编辑 . grab 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

相关问题