今天俺创建了一个对话框程序先把那2个默认按钮删了,然后开始添加代码和控件,等做完以后俺测试的时候在编辑框中输入完数据一回车结果对话框没了,当时立马就不会了,当机了2、3秒立马想到可能是那2个按钮默认接受回车的属性没有去掉,我想请教各位会的人,教教俺,最好能一步一步的,俺笨,谢谢了。
解决方案 »
- 求VC2008下的occi开发包
- 求教:wxMBConv是什么?
- 简单局域网通信程序
- VC Dll中函数重复初始化问题?
- MFC中滚动条的问题!!
- !指针用法思考,请大家发表意见
- SOS 如何注册OWC10.DLL ????
- 看过<<VC技术内幕>>的朋友请进来!一个关于视图类的问题----在线等侯!
- 有游戏开发高手没?请教地图绘制的问题!!
- 救人啊!为什么NSPlayer和ActiveMovie控件在VB中总是报错?只有109分了全送
- _beginthreadex undeclared identifier与Please use the /MD switch for _AFXDLL build
- socket发送与接收的困惑
Specifies that a carriage return be inserted when the user presses the ENTER key while entering text into a multiline edit control in a dialog box. If you do not specify this style, pressing the ENTER key has the same effect as pressing the dialog box's default push button. This style has no effect on a single-line edit control. 应该是编辑框和Defult Button两个一块导致的.去掉Default Button属性,或者修改Default Button的消息响应,不退出程序。
只写一句UpdateData()用来响应回车更新数据
CYourDlgClass::OnOK()
{
// 什么都不要写;
{
如果要从中间顺号重选,按住CTL或SHIFT。
CCommonScriptDialog::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if( WM_KEYDOWN == pMsg->message )
{
if( VK_ESCAPE == pMsg->wParam )
{
return TRUE;
}
else if( VK_RETURN == pMsg->wParam )
{
return TRUE;
}
} return CDialog::PreTranslateMessage(pMsg);
}
然后把OnOk(),OnCancel()注释了(也有可能消息处理函数没这两,那就不用管了)
正解 如果要使用到回车,就在return ture前操作
把按钮的Default属性去掉,换个ID,让它映射OnButtonOK()函数,在里面CDialgo::OnOK();
{
if( WM_KEYDOWN == pMsg->message )
{
if( VK_ESCAPE == pMsg->wParam )
{
return TRUE;
}
else if( VK_RETURN == pMsg->wParam )
{
return TRUE;
}
} return CDialog::PreTranslateMessage(pMsg);
}