我建了一个Dialog。每次一点击回车键,Dialog就关闭了。该如何实现标题功能?
解决方案 »
- mfc打印出图形后别的窗口一旦经过后图形就会消失
- vc中如何检测两个按钮被按下?
- 使用CAtlHttpClient类请求post方法得到的数据有问题!
- vc7.0中没有ClassWizard?
- ie问题
- 如何用ADO修改字段属性?比如我要修改字段Name的字段大小为20,索引为无重复
- Opencv 查找模板图像轮廓
- Api Hook与 屏幕取词
- 求助各位大哥: 如何把两幅位图相减?请给段代码
- vc webbrowser可以模拟 在图片上 右键另存为吗
- 请教:单打按钮后自动打开IE并指向某个登陆页面,更重要的是,它需要自动传递用户名和密码完成登陆工作。
- MFC创建的对话框程序加上toolbar后响应消息的问题
或者在Dialog::OnOk()中加入
CWnd *pWnd = GetFocus();
if (pWnd->GetDlgCtrlID() != IDOK)
{
NextDlgCtrl();
return;
}
CDialog::OnOK();
void CmyView::OnkeyDown(UNIT nChar,UNIT nRepCnt,UNIT nFlags)
{
if(nChar==VK_ENTER)
{
传数据
}
}
基本对话框。是什么导致点击回车键关闭对话框的。
删除掉这两个按钮后按下回车也还是会退出这是因为,具有default button属性的按钮系统对其消息的处理是并不直接通过这个按钮的。而是另外生成一条消息送进程序消息队列得到执行的。
因此,如果你不想按下回车就退出。那就得自行处理这个按钮的消息处理。简单一句话,对着这个按钮双击,回车确定。删掉这一句代码 CDialog::OnOK();
BOOL CDlgDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message == WM_KEYDOWN)
{
if(pMsg->wParam == VK_RETURN)
{
UINT nID = GetFocus()->GetDlgCtrlID();
switch( nID)
{
case IDOK:
break;
default:
NextDlgCtrl();
return TRUE;
}
}
}
}
这里特别处理IDOK是由于Enter键在对话框中默认动作是触发OK按钮。如果你不想这么处理,可以删除有关语句。