摘自网址:http://czvc.com/down.asp?id=96
| 演示截图: | ![]() |
| 代码简介或代码解析: | |
| 消息框大全 实现步骤: 1 创建一个DLG程序 2 添加5个新的对话框资源ID分别为:MsgBoxSimple,MsgBoxOption,MsgBoxCustom,并调整其大小使他们尺寸一样 3 为2中所添加的对话框创建新的类 class CPageSimple : public CPropertyPage class CPageOption : public CPropertyPage class CPageCustom : public CPropertyPage 保存在property.h和property.cpp中。 4 在ShowBmpInPropertyBtnAreaDlg.h中加入 #include "property.h" ... public: CPropertySheet m_MyPropertySheet; //定义属性表变量 CPageSimple m_page1; //以下定义属性页成员变量 CPageOption m_page2; CPageCustom m_page3; 5 在对话框IDD_MESSAGEBOXES模板中加入一个Picture控件,ID设为IDC_PROPSHEET,并调整其大小使其与对话框MsgBoxSimple大小相似 6 在CMessageBoxesDlg::OnInitDialog()中加入 //属性表和属性页的成员变量我已经在头文件中定义过了 //现在把属性页加入到属性表中 m_MyPropertySheet.AddPage(&m_page1); m_MyPropertySheet.AddPage(&m_page2); m_MyPropertySheet.AddPage(&m_page3); //显示非摸态的属性表 m_MyPropertySheet.Create(this, WS_CHILD | WS_VISIBLE, 0); //当对话框搜索下一个Tab项时,WS_EX_CONTROLPARENT标记避免了死循环发生的可能性 //他可以让对话框搜索到属性表中的子窗体控件,就象对话框窗体上的其他普通控件一样。 m_MyPropertySheet.ModifyStyleEx (0, WS_EX_CONTROLPARENT); //允许用户TAB键切换到属性表 m_MyPropertySheet.ModifyStyle( 0, WS_TABSTOP ); //显示属性表 CRect rcSheet; GetDlgItem( IDC_PROPSHEET )->GetWindowRect( &rcSheet ); ScreenToClient( &rcSheet ); m_MyPropertySheet.SetWindowPos( NULL, rcSheet.left-7, rcSheet.top-7, 0, 0, SWP_NOZORDER | SWP_NOSIZE | SWP_NOACTIVATE ); 7 添加一些按钮,映射各按钮的单击消息,并为响应函数编写代码如下 void CPageSimple::OnSimplestBtn() { MessageBox("这是最最简单的消息框"); } void CPageSimple::OnSimpleBtn() { AfxMessageBox("另一个简单的消息框"); } void CPageOption::OnOkBtn() { MessageBox("仅仅一个按钮确定的消息框", "信息提示消息框", MB_OK|MB_ICONINFORMATION); m_Message = "你只是确认了一下"; UpdateData(FALSE); } void CPageOption::OnOkcancelBtn() { int Response; Response = MessageBox("在这个消息框中你可以选择确定和取消" "\n\n你也可以在此写下对行信息文本" "\n这是你的权利", "选择消息框", MB_OKCANCEL|MB_ICONASTERISK); if( Response == IDOK ) { m_Message = "你选择了确定"; UpdateData(FALSE); } else { m_Message = "你取消了"; UpdateData(FALSE); } } void CPageOption::OnYesnoBtn() { int Response; Response = MessageBox("你吃过了吗?我意思是指从昨天到现今", "信息提示", MB_YESNO|MB_ICONQUESTION); if( Response == IDYES ) { m_Message = "那么,我不需要再给你什么了"; UpdateData(FALSE); } else { m_Message = "那么走吧,正好我也没有吃,咱们一块去吃火锅!"; UpdateData(FALSE); } } void CPageOption::OnYesnocancelBtn() { int Response; Response = MessageBox("当你删除一个目录的时候,或者一个文档改动后," "\n退出程序的时候,这个消息框就会出现", "文档保存提示消息框", MB_YESNOCANCEL|MB_ICONWARNING); if( Response == IDYES ) { m_Message = "执行操作."; UpdateData(FALSE); } else if( Response == IDNO ) { m_Message = "不操作"; UpdateData(FALSE); } else { m_Message = "取消"; UpdateData(FALSE); } } void CPageOption::OnRetrycancelBtn() { int Response; Response = MessageBox("失败乃成功之母" "\n请Try吧:)", "重试提示消息框", MB_RETRYCANCEL|MB_ICONWARNING); if( Response == IDRETRY ) { m_Message = "理所当然,重新来过!"; UpdateData(FALSE); } else { m_Message = "你屈服了"; UpdateData(FALSE); } } void CPageOption::OnAbortretryignoreBtn() { int Response; Response = MessageBox("这个就是最最令人厌恶的消息框了" "\n\n它的出现往往意味着程序出现了致命的错误,你不得不终止它,再次运行", "灾难消息框", MB_ABORTRETRYIGNORE|MB_ICONSTOP); if( Response == IDRETRY ) { m_Message = "理所当然,重新来过!"; UpdateData(FALSE); } else if( Response == IDIGNORE ) { m_Message = "成大事者必不拘小姐"; UpdateData(FALSE); } else { m_Message = "算你狠!"; UpdateData(FALSE); } } void CPageCustom::OnSeconddefaultBtn() { int BtnClicked; BtnClicked = MessageBox("注意看看默认按钮是否你需要的之后在回车不迟", "默认按钮消息框", MB_YESNOCANCEL|MB_ICONINFORMATION|MB_DEFBUTTON2); if( BtnClicked == IDYES ) MessageBox("你按下了第一个按钮: 是"); else if( BtnClicked == IDNO ) MessageBox("你按下了第二个按钮: 否 即你接受了默认选择."); else MessageBox("你按下了第三个按钮: 取消"); } void CPageCustom::OnThirddefaultBtn() { int BtnClicked; BtnClicked = MessageBox("注意看看默认按钮是否你需要的之后在回车不迟", "默认按钮消息框", MB_ABORTRETRYIGNORE|MB_ICONSTOP|MB_DEFBUTTON3); if( BtnClicked == IDABORT ) MessageBox("你按下了第一个按钮: ABORT"); else if( BtnClicked == IDRETRY ) MessageBox("你按下了第二个按钮: RETRY"); else MessageBox("你忽略了错误即你情愿接受默认选择"); } | |

浙公网安备 33010602011771号