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]; 字符[0] = (char)wParam; 字符[1] = 0; if(HIWORD(GetKeyState(VK_SHIFT))) { AnsiLower(字符); } wParam = 字符[0]; } 休息; } return CallWindowProc(ancienneEditProc, hwnd, mssg, wParam, lParam); 但问题是如何在捕获 WM_CHAR 后更新编辑文本控件以接受小写。

4

1 回答 1

0

I assume you are using win32 or MFC text edit. Just catch WM_CHAR event.

On MFC, use a message map :

in your .h

class YourEdit public CEdit
{
    afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
    DECLARE_MESSAGE_MAP()
};

in your .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);
}

see : http://msdn.microsoft.com/en-us/library/3zzfkd75%28v=vs.71%29.aspx

于 2012-11-27T13:48:04.333 回答