编辑框问题
编辑框编辑时,如何在按下回车时自动换行? 问题点数:20、回复次数:10Top
1 楼everandforever(Forever)回复于 2002-10-23 16:53:13 得分 1
加上 WANT RETURN 属性.Top
2 楼everandforever(Forever)回复于 2002-10-23 16:55:36 得分 1
还有MULTILINE属性.Top
3 楼zhanvi(流浪代码)回复于 2002-10-23 17:03:34 得分 0
不行啊,我试过了Top
4 楼YP2002CN(混世阿呆)回复于 2002-10-23 17:04:19 得分 0
同上.
同上Top
5 楼zhanvi(流浪代码)回复于 2002-10-23 17:10:17 得分 0
我知道是什么问题了,是因为对话框默认的回车是退出程序,我就把他给屏蔽了,但是如果不屏蔽的话,焦点不在编辑框上的时候按回车就会退出程序,谁有好的方案?
谢谢!
Top
6 楼andy_lau(天行键,君子当自强不息!)回复于 2002-10-23 17:43:20 得分 10
WANT RETURN 属性.
MULTILINE属性.
另外就是你所说的那样屏蔽enter健
可以相应wm_char在其中,截获enter健,大致如下:
OnChar()
{
if(是enter健)
return;
}
或重载PreTranslageMessage()作相应的判断
类是下面的例子:
如果设定控件NUMBER属性的话将只能键入数字键,有时候不太合适。
因此派生一个CEdit的子类,然后重载OnChar函数。
由于键码1-26分别对应CtrlA-CtrlZ,因此需要允许编辑控制键,
同时还要允许数字键和小数点。VC6.0调试通过。
void CNumEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) {
// TODO: Add your message handler code here and/or call default
if((nChar>0 && nChar<27) || // 允许控制字符如 Ctrl-C、Ctrl-V 等
::isdigit(nChar) || nChar == (UINT)'.')
CEdit::OnChar(nChar, nRepCnt, nFlags);
}
最后在自己的对话框中声明一个自己的编辑框变量,并将它与控件绑定。绑定方法有两
种:
1. 通过ClassWizard添加对应的CEdit变量,然后手工将.h头文件中的变量类型由CEdit
改为CNumEdit即可。VS.net中还可以直接绑定自己定义的派生类CNumEdit,就不需要手
工去改了。
2. 直接手工添加CNumEdit变量到对话框,然后在重载对话框的 OnInitDialog函数,加
入下面语句:
CMyNumEditA.SubclassDlgItem(IDC_EDIT1,this);
CMyNumEditB.SubclassDlgItem(IDC_EDIT2,this);
Top
7 楼zhang865(老人家慢走)回复于 2002-10-24 15:02:58 得分 0
BOOL CTestdesDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message == WM_KEYDOWN && (pMsg->wParam == VK_ESCAPE || pMsg->wParam == VK_RETURN))
{
// OnKeyDown((UINT)pMsg->wParam,(UINT)pMsg->lParam,(UINT)pMsg->lParam);
return TRUE;
}
return CDialog::PreTranslateMessage(pMsg);
}
Top
8 楼ruihuahan(飞不起来的笨鸟)回复于 2002-10-24 15:18:48 得分 0
subclass the edit controlTop
9 楼zhanvi(流浪代码)回复于 2002-10-25 10:02:21 得分 0
我的本意是,既不想屏蔽回车,又想把VC缺省的回车快捷建给禁用啊Top
10 楼njsg_zeng(大猫)回复于 2002-10-28 09:16:14 得分 8
重载虚函数OnOK(),里面代码为空,另外将OK按钮改名去掉default button属性,再生成对应函数,添加代码CDialog::OnOK()即可
Top




