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; 文字[1] = 0; if(HIWORD(GetKeyState(VK_SHIFT))) { AnsiLower(文字); } wParam = 文字[0]; } 壊す; } 戻り値 CallWindowProc(ancienneEditProc、hwnd、msg、wParam、lParam); しかし、問題は、WM_CHAR をキャッチした後、小文字を受け入れるように編集テキスト コントロールを更新する方法です。

4

1 に答える 1

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

于 2012-11-27T13:48:04.333 に答える