【问题标题】:Visual C++ open Dialog Box when button clicked单击按钮时 Visual C++ 打开对话框
【发布时间】:2015-07-23 00:36:40
【问题描述】:

所以我是 C++ 编程新手,也是使用 Visual Studio 2010 的新手。基本上我有一台 FLIR 热像仪;我需要编辑一个适合我需要的 eBUS SDK 中提供的 GUI。

我想要做的是在单击设置按钮时打开一个新对话框。我只是不确定在按钮处理程序中使用什么代码来打开对话框。我在按钮处理程序中放置了不同的代码来测试它,设置按钮工作正常。

这是代码需要进入的按钮处理程序。

void PvSimpleUISampleDlg::OnBnClickedSettings()
{

}

这是资源文件中我想将按钮连接到的对话框。它被称为IDD_SETTINGS。实际的按钮称为IDB_SETTINGS,不确定是否相关。

IDD_SETTINGS DIALOGEX 0, 0, 506, 300
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Settings"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
    DEFPUSHBUTTON   "OK",IDOK,449,279,50,14

END

我不确定要添加哪些其他代码,但我是全新的,因此无论您提供多少帮助/建议,我们将不胜感激。

【问题讨论】:

    标签: c++ visual-studio-2010 mfc dialog


    【解决方案1】:

    如果您使用的是 MFC 框架(CDialog 类),那么您可以使用您创建的 settings-dialog 资源创建一个新的 CDialog 对象。

    CDialog::DoModal() 函数是您想要的,如果您想要一个简单的弹出框来吸引您的注意力,直到它被 OK 或 Cancel 关闭。

    在您的源文件中:

    void PvSimpleUISampleDlg::OnBnClickedSettings()
    {
        CDialog mySettings( IDD_SETTINGS );
        INT_PTR returnCode = -1;
        returnCode = mySettings.DoModal();
    
        switch( returnCode ) {
        case IDOK :
          //gather your input fields here 
    
          break;
        case IDCANCEL :
          //do something
          break;
    
        case -1:
        default:
           //error creating box
        }
    }
    

    这是一个使用 CDialog 类作为起点的链接,用于在单击 OK 后从框中提取信息: https://msdn.microsoft.com/en-us/library/619z63f5.aspx

    【讨论】:

    • 谢谢!这正是我想要的!
    猜你喜欢
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2018-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多