输入小写字母,自动变成大写

时间:2022-04-02 09:11:47
环境:microsoft visual studio 2010

OS:windows 7

问题:在editcontrol里面,无论输入小写字母还是大写字母,都显示大写字母。

16 个解决方案

#1


你的键盘caps lock按键是不是按了一下,你自己看看右上角的caps lock灯是不是高亮。或者你拿一个记事本,在文本输入内容,看看还是不是大小写。再次,把记事本的内容复制到VS的编辑器里面,看看还是不是大写。

#2


不好意思,可能我没说清楚问题。

我是想实现这个功能,
在editcontrol里面,
无论输入小写字母还是大写字母,都显示大写字母。

#3


1.class CMyEdit:CEdit
{};
2.响应WM_CHAR

#4


1.class CMyEdit:CEdit
{};
2.响应WM_CHAR

#5


俺好像实现过,俺找找。

#6


在 WM_CHAR消息中直接处理就行了;在判断ascii值,不难

#7


俺好像实现过,俺找找。

#8


在 WM_CHAR消息中直接处理就行了;在判断ascii值,不难

#9


引用 4 楼 chunyou128 的回复:
1.class CMyEdit:CEdit
{};
2.响应WM_CHAR


能说详细一点吗?
我不熟悉visual studio的使用方法。

#10


俺好像实现过,俺找找。

#11


WM_CHAR是什么意思,能详细说明,实现方法吗?

#13


Edit里有这个属性,选中就可以了。。不用自己写代码...

#14


BOOL CTesteditDlg::PreTranslateMessage(MSG* pMsg) 
{
// TODO: Add your specialized code here and/or call the base class
if( WM_CHAR == pMsg->message )
{
CWnd *pWnd = GetFocus();
if( pWnd )
{
if( IDC_EDIT1 == pWnd->GetDlgCtrlID() )
{
if( pMsg->wParam >= 'a' && pMsg->wParam <= 'z' )
{
pMsg->wParam -= 0x20;
}
}
}
}

return CDialog::PreTranslateMessage(pMsg);
}

#15


不需要写代码
在Edit控件的属性里,找到UpperCase 属性,选择TRUE,即可。

#16


BOOL CXXDlg::PreTranslateMessage(MSG* pMsg) 
{
// TODO: Add your specialized code here and/or call the base class
CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT1);
ASSERT(pEdit);
if(WM_CHAR == pMsg->message && pEdit->GetSafeHwnd() == pMsg->hwnd)
{
if(_istlower(pMsg->wParam))
{
pMsg->wParam -= 0x20;
}
}
return CDialog::PreTranslateMessage(pMsg);
}

#1


你的键盘caps lock按键是不是按了一下,你自己看看右上角的caps lock灯是不是高亮。或者你拿一个记事本,在文本输入内容,看看还是不是大小写。再次,把记事本的内容复制到VS的编辑器里面,看看还是不是大写。

#2


不好意思,可能我没说清楚问题。

我是想实现这个功能,
在editcontrol里面,
无论输入小写字母还是大写字母,都显示大写字母。

#3


1.class CMyEdit:CEdit
{};
2.响应WM_CHAR

#4


1.class CMyEdit:CEdit
{};
2.响应WM_CHAR

#5


俺好像实现过,俺找找。

#6


在 WM_CHAR消息中直接处理就行了;在判断ascii值,不难

#7


俺好像实现过,俺找找。

#8


在 WM_CHAR消息中直接处理就行了;在判断ascii值,不难

#9


引用 4 楼 chunyou128 的回复:
1.class CMyEdit:CEdit
{};
2.响应WM_CHAR


能说详细一点吗?
我不熟悉visual studio的使用方法。

#10


俺好像实现过,俺找找。

#11


WM_CHAR是什么意思,能详细说明,实现方法吗?

#12


#13


Edit里有这个属性,选中就可以了。。不用自己写代码...

#14


BOOL CTesteditDlg::PreTranslateMessage(MSG* pMsg) 
{
// TODO: Add your specialized code here and/or call the base class
if( WM_CHAR == pMsg->message )
{
CWnd *pWnd = GetFocus();
if( pWnd )
{
if( IDC_EDIT1 == pWnd->GetDlgCtrlID() )
{
if( pMsg->wParam >= 'a' && pMsg->wParam <= 'z' )
{
pMsg->wParam -= 0x20;
}
}
}
}

return CDialog::PreTranslateMessage(pMsg);
}

#15


不需要写代码
在Edit控件的属性里,找到UpperCase 属性,选择TRUE,即可。

#16


BOOL CXXDlg::PreTranslateMessage(MSG* pMsg) 
{
// TODO: Add your specialized code here and/or call the base class
CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT1);
ASSERT(pEdit);
if(WM_CHAR == pMsg->message && pEdit->GetSafeHwnd() == pMsg->hwnd)
{
if(_istlower(pMsg->wParam))
{
pMsg->wParam -= 0x20;
}
}
return CDialog::PreTranslateMessage(pMsg);
}