⑴ MFC下面一段程序是一个对话框上OK按钮的消息处理函数
我也没看出来你这个代码里面哪个是显示对话框的。我也没全理解你要表达的意思。不过我猜测了下你的意思
我的理解::你想按ok按钮,然后弹出来一个对话框,这个对话框里面显示一些你需要他显示的内容,比如说显示一个加法的结果数据。
如果是我所说的那样。
一:建立一个新的dialog对话框。设定好模型。添加控件。在控件里面设置你需要的功能按钮等。编辑代码,让其可以再你点击主dialog的时候可以弹出来想要的效果。
二:在主dialog中关联你新设定的dialog,在ok按钮中直接写一个弹出显示新建立的dialog的函数。SHOW(XXX);
我觉得这样应该可以达到效果。
⑵ mfc中新建了一个对话框,点击对话框的取消按钮,对话框和主框架一起关闭了
再左侧点击资源,然后进入你要编码的对话框,然后双击取消按钮,把这行CDialog::OnOK()注释掉 就可以了。我建议你这么写,新建一个对话框,加入类名为:CNewDialog.加入再主对话框里有一个按钮,点击则显示新建的对话框,这么写就行,CNewDialog tmp=new NewDialog();
int option=tmp.domodal();if(option==ID_CANCEL){。。。。。写下你点取消想做的事情}
代码有可能大小写或者函数拼写有错误
⑶ MFC基于对话框 点击自建按钮 关闭对话框
正确的写法参见微软官方文章 msdn.microsoft.com/en-us/library/6ex01tfy.aspx
在按钮响应函数OnBnClicked..... 中调用 CDialog::EndDialog( ID ),这里ID可以随便填,建议使用你按钮本身的ID号,这样在退出后还可以通过判断ID号确定是通过哪个按钮退出的。
⑷ mfc控件消息对话框
1、按钮也是一个窗口,当点击对话框上的按钮控件的时候,这个消息的hwnd指向的是控件还是对话框的句柄?
点击按钮时的消息是由操作系统获取的,随后发送给主程序的消息循环(这里指你的对话框)
2、自定义一个继承自CButton的类,在主对话框中对按钮控件做了变量关联之后,消息会传递到控件变量所在自定义类中处理,期间的过程是怎样的?是消息的句柄指向控件对象还是对话框把消息转给控件对象的。控件关联是使用了消息反射吗
这个一时半会儿说不清楚,详情请参考深入浅出MFC,上面有详细过程。
⑸ MFC中对话框的调用,按钮的处理
想达成的效果是修改的话弹修改确认对话框,删除的时候弹删除确认对话框吗?
修改的是IDOK?
IDOK!=dlg.DoModal() 这里如果点修改,这个条件成立
IDOK!=MessageBox("是否修改记录?","学生管理",...)
这个是判断弹出的确认信息是不是没有点OK
那就是说点修改,会弹这个对话框,但这个对话框不能点OK...
你要达到什么效果呢?
⑹ MFC中点击按钮弹出对话框
资源视图-->Dialog-->右键-->添加资源-->新建-->对话框-->对话框按右键--添加类。例如:添加CMyNewDlg类,在所要调的代码中(按钮点击方法中),先加头文件#include "CMyNewDlg.h ",之后在按钮点击方法中:
void COnclickDlg::OnBnClickedOk()
{
CMyNewDlg Dlg;
Dlg.DoModal();
}
⑺ MFC如何改变消息框的三个按钮的文本值
MessageBox 上的按钮文字并不能直接修改,一种方法可以使用钩子,间接修改按钮上的文字,另一种就是自己做一个类似 MessageBox 功能的对话框。
下面的例子是使用钩子做的,关键代码如下:
//定义一个钩子句柄
HHOOKhMsgBoxHook;
//定义CBT钩子过程
LRESULTCALLBACKMsgBoxCBTProc(intnCode,WPARAMwParam,LPARAMlParam)
{
switch(nCode){
caseHCBT_ACTIVATE:
HWNDhWnd=(HWND)wParam;
SetDlgItemText(hWnd,IDYES,_T("重测"));
SetDlgItemText(hWnd,IDNO,_T("继续"));
SetDlgItemText(hWnd,IDCANCEL,_T("取消"));
return0;
}
returnCallNextHookEx(hMsgBoxHook,nCode,wParam,lParam);
}
//定义一个MsgBox函数
intMsgBox(HWNDhWnd,LPCTSTRlpText,LPCTSTRlpCaption,UINTuType)
{
hMsgBoxHook=SetWindowsHookEx(WH_CBT,MsgBoxCBTProc,NULL,GetCurrentThreadId());
intret=MessageBox(hWnd,lpText,lpCaption,uType);
UnhookWindowsHookEx(hMsgBoxHook);
returnret;
}
voidCdemo5Dlg::OnBnClickedButton1()
{
//调用MsgBox
MsgBox(GetSafeHwnd(),_T("是否重新测试?"),_T("IL&RL"),MB_ICONQUESTION|MB_YESNOCANCEL);
}
运行结果:
⑻ MFC 对话框 如何使工具栏按钮有提示信息,求高手帮忙,添加字符串表(String Table)不好使
ToolTip是Win32中一个通用控件,MFC中为其生成了一个类CToolTipCtrl,总的说来其使用方法是较简单的,下面讲一下它的一般用法和高级用法。
一般用法步骤:
添加CToolTipCtrl成员变量 m_tt。
在父窗口中调用EnableToolTips(TRUE);
在窗口的OnCreate(或者其他适当的位置)中向ToolTip中添加需要显示Tip的子窗口,并同时指定相应的显示字串CToolTipCtrl::AddTool(pWnd,"string to display")。
重载父窗口的 BOOL PreTranslateMessage(MSG* pMsg) ,在函数中调用 m_tt.RelayEvent(pMsg)。
下面假设在窗口CWndYour中使用CToolTipCtrl
在类定义中添加变量说明:
class CWndYour:xxx
{
CToolTipCtrl m_tt;
}
在OnCreate中添加需要显示Tip的子窗口
CWndYour::OnCreate(....)
{
EnableToolTips(TRUE);
m_tt.Create(this);
m_tt.Activate(TRUE);
CWnd* pW=GetDlgItem(IDC_CHECK1);//得到窗口指针
m_tooltip.AddTool(pW,"Check1");//添加
........
}
在BOOL PreTranslateMessage(MSG* pMsg)中添加代码
BOOL CWndYour::PreTranslateMessage(MSG* pMsg)
{
{
m_tt.RelayEvent(pMsg);
}
return CParentClass::PreTranslateMessage(pMsg);
}
这样当鼠标移动到相应的子窗口上时会显示出相应的ToolTip。
动态改变ToolTip的显示内容的方法及步骤:
上面所讲的1、2、4步骤。
在增加ToolTip时不指定显示的字串,而是使用LPSTR_TEXTCALLBACK。
在窗口中增加消息映射 ON_NOTIFY_EX( TTN_NEEDTEXT, 0, SetTipText )。
在窗口中增加一个函数用于动态提供显示内容,其原型为 BOOL SetTipText( UINT id, NMHDR * pTTTStruct, LRESULT * pResult ),下面的代码可以根据传入的参数判定应该显
示的内容。
BOOL CWndYour::SetTipText( UINT id, NMHDR * pTTTStruct, LRESULT * pResult )
{
TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pTTTStruct;
UINT nID =pTTTStruct->idFrom; //得到相应窗口ID,有可能是HWND
if (pTTT->uFlags & TTF_IDISHWND) //表明nID是否为HWND
{
nID = ::GetDlgCtrlID((HWND)nID);//从HWND得到ID值,当然你也可以通过HWND值来判断
switch(nID)
case(IDC_YOUR_CONTROL1)
strcpy(pTTT->lpszText,your_string1);//设置
return TRUE;
break;
case(IDC_YOUR_CONTROL2)
//设置相应的显示字串
return TRUE;
break;
}
return(FALSE);
}
⑼ MFC怎么弹出对话框或者警告框
1、首先输入代码:
int result =MessageBox( TEXT("提示的内容") , TEXT("提示的内容") ,MB_YESNO);
switch(result)
⑽ 在MFC新建了一个基于对话框的程序,怎么添加一个按钮,然后点这个按钮对话框就关闭了消息处理函数怎么写
从工具条拖一个按钮到资源视图的对话框,然后双击按钮,弹出一个框,按确定。这样跳转到代码窗口,在按钮代码里添加
exit(0);
这样肯定行了