繁体   English   中英

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

[英]Subclassing an edit text control to accept lowercase characters when shift is pressed

我有一个编辑文本控件,我想在按下SHIFT键时将其子类化为允许小写字母,因为默认情况下该控件只接受大写字母。

所以我的问题是如何将控件中的键入模式从小写更改为大写。

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

我假设您正在使用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/zh-cn/library/3zzfkd75%28v=vs.71%29.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM