Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
制作对话框 我想问一下,C++中有一种简单的方法来让对话框(OpenFieldLax,SaveFieldLogic)这样写: ' VB6 Example 'Setting up the "open file" dialog box. openDiag.DialogTitle = "Select a file to open" openDiag.Filter = "Exe files | *.exe" 'Ensures only EXE files can be selected. openDiag.ShowOpen 'Opens up the dialog 'Takes the filename that was selected in the dialog and stores it in your OpenPath var and 'also displays it in the textbox openPath = openDiag.FileName txtfilepath.Text = openPath_C++_Windows_Class_Dialog - Fatal编程技术网

制作对话框 我想问一下,C++中有一种简单的方法来让对话框(OpenFieldLax,SaveFieldLogic)这样写: ' VB6 Example 'Setting up the "open file" dialog box. openDiag.DialogTitle = "Select a file to open" openDiag.Filter = "Exe files | *.exe" 'Ensures only EXE files can be selected. openDiag.ShowOpen 'Opens up the dialog 'Takes the filename that was selected in the dialog and stores it in your OpenPath var and 'also displays it in the textbox openPath = openDiag.FileName txtfilepath.Text = openPath

制作对话框 我想问一下,C++中有一种简单的方法来让对话框(OpenFieldLax,SaveFieldLogic)这样写: ' VB6 Example 'Setting up the "open file" dialog box. openDiag.DialogTitle = "Select a file to open" openDiag.Filter = "Exe files | *.exe" 'Ensures only EXE files can be selected. openDiag.ShowOpen 'Opens up the dialog 'Takes the filename that was selected in the dialog and stores it in your OpenPath var and 'also displays it in the textbox openPath = openDiag.FileName txtfilepath.Text = openPath,c++,windows,class,dialog,C++,Windows,Class,Dialog,我假设我需要使用类,但我真的不知道如何编写这种代码 任何帮助都将不胜感激 @@@最终编辑@@@ 这段代码在VS2010中粘贴到WIN32项目中时似乎没有编译 给了我这些错误: error C2065: 'ofn' : undeclared identifier c:\documents and settings\User\my documents\visual studio 2010\projects\program\program\program.cpp error C2065: 'ofn'

我假设我需要使用类,但我真的不知道如何编写这种代码

任何帮助都将不胜感激

@@@最终编辑@@@

这段代码在VS2010中粘贴到WIN32项目中时似乎没有编译

给了我这些错误:

error C2065: 'ofn' : undeclared identifier  c:\documents and settings\User\my documents\visual studio 2010\projects\program\program\program.cpp
error C2065: 'ofn' : undeclared identifier  c:\documents and settings\User\my documents\visual studio 2010\projects\program\program\program.cpp
error C2065: 'ofn' : undeclared identifier  c:\documents and settings\User\my documents\visual studio 2010\projects\program\program\program.cpp
error C2065: 'ofn' : undeclared identifier  c:\documents and settings\User\my documents\visual studio 2010\projects\program\program\program.cpp
error C2065: 'ofn' : undeclared identifier  c:\documents and settings\User\my documents\visual studio 2010\projects\program\program\program.cpp
error C2065: 'ofn' : undeclared identifier  c:\documents and settings\User\my documents\visual studio 2010\projects\program\program\program.cpp
error C2065: 'ofn' : undeclared identifier  c:\documents and settings\User\my documents\visual studio 2010\projects\program\program\program.cpp
error C2065: 'ofn' : undeclared identifier  c:\documents and settings\User\my documents\visual studio 2010\projects\program\program\program.cpp
error C2065: 'ofn' : undeclared identifier  c:\documents and settings\User\my documents\visual studio 2010\projects\program\program\program.cpp
error C2065: 'ofn' : undeclared identifier  c:\documents and settings\User\my documents\visual studio 2010\projects\program\program\program.cpp
error C2065: 'ofn' : undeclared identifier  c:\documents and settings\User\my documents\visual studio 2010\projects\program\program\program.cpp
error C2065: 'ofn' : undeclared identifier  c:\documents and settings\User\my documents\visual studio 2010\projects\program\program\program.cpp
error C2065: 'OFN_EXPLORER' : undeclared identifier c:\documents and settings\User\my documents\visual studio 2010\projects\program\program\program.cpp
error C2065: 'OFN_FILEMUSTEXIST' : undeclared identifier    c:\documents and settings\User\my documents\visual studio 2010\projects\program\program\program.cpp
error C2065: 'OFN_HIDEREADONLY' : undeclared identifier c:\documents and settings\User\my documents\visual studio 2010\projects\program\program\program.cpp
error C2065: 'OPENFILENAME' : undeclared identifier c:\documents and settings\User\my documents\visual studio 2010\projects\program\program\program.cpp
error C2065: 'OPENFILENAME' : undeclared identifier c:\documents and settings\User\my documents\visual studio 2010\projects\program\program\program.cpp
error C2070: ''unknown-type'': illegal sizeof operand   c:\documents and settings\User\my documents\visual studio 2010\projects\program\program\program.cpp
error C2070: ''unknown-type'': illegal sizeof operand   c:\documents and settings\User\my documents\visual studio 2010\projects\program\program\program.cpp
error C2146: syntax error : missing ';' before identifier 'ofn' c:\documents and settings\User\my documents\visual studio 2010\projects\program\program\program.cpp
error C2228: left of '.Flags' must have class/struct/union  c:\documents and settings\User\my documents\visual studio 2010\projects\program\program\program.cpp
error C2228: left of '.hwndOwner' must have class/struct/union  c:\documents and settings\User\my documents\visual studio 2010\projects\program\program\program.cpp
error C2228: left of '.lpstrDefExt' must have class/struct/union    c:\documents and settings\User\my documents\visual studio 2010\projects\program\program\program.cpp
error C2228: left of '.lpstrFile' must have class/struct/union  c:\documents and settings\User\my documents\visual studio 2010\projects\program\program\program.cpp
error C2228: left of '.lpstrFilter' must have class/struct/union    c:\documents and settings\User\my documents\visual studio 2010\projects\program\program\program.cpp
error C2228: left of '.lpstrTitle' must have class/struct/union c:\documents and settings\User\my documents\visual studio 2010\projects\program\program\program.cpp
error C2228: left of '.lStructSize' must have class/struct/union    c:\documents and settings\User\my documents\visual studio 2010\projects\program\program\program.cpp
error C2228: left of '.nMaxFile' must have class/struct/union   c:\documents and settings\User\my documents\visual studio 2010\projects\program\program\program.cpp
IntelliSense: identifier "OFN_EXPLORER" is undefined    c:\documents and settings\User\my documents\visual studio 2010\projects\program\program\program.cpp
IntelliSense: identifier "OFN_FILEMUSTEXIST" is undefined   c:\documents and settings\User\my documents\visual studio 2010\projects\program\program\program.cpp
IntelliSense: identifier "OFN_HIDEREADONLY" is undefined    c:\documents and settings\User\my documents\visual studio 2010\projects\program\program\program.cpp
IntelliSense: identifier "OPENFILENAME" is undefined    c:\documents and settings\User\my documents\visual studio 2010\projects\program\program\program.cpp 
IntelliSense: identifier "OPENFILENAME" is undefined    c:\documents and settings\User\my documents\visual studio 2010\projects\program\program\program.cpp
IntelliSense: too many arguments in function call   c:\documents and settings\User\my documents\visual studio 2010\projects\program\program\program.cpp
关于如何修复此错误,有什么建议吗

编辑:

我自己找到的

需要包括

#include <Commdlg.h>
#包括

不需要使用类,实际上你甚至不需要使用C++。Win32为您提供了所有繁重的工作。

C++不包含任何GUI库,因此使用对话框没有任何意义。请参考您正在使用的任何GUI库的文档。

在C(或C++)中,您将创建的实例,并设置其成员。这与上面的示例VB6代码中显示的内容非常相似

链接的文档包含关于该结构的所有不同成员的含义以及应该如何填写的信息,但其中大多数与VB6中的内容相匹配

例如:

OPENFILENAME ofn;
ofn.lpstrTitle = TEXT("Select a file to open");
ofn.lpstrFilter = TEXT("EXE files\0*.exe\0");
/* etc... */
当您设置了所有属性并准备好显示对话框时,魔术就来了。在VB6中,数据结构公开了一个显示对话框的函数(
ShowOpen
),与此不同,在C/Win32中,您需要调用不同的函数来完成此操作

您感兴趣的函数是,它只接受一个参数—指向
OPENFILENAME
结构的指针。该结构的成员用于初始化对话框,该函数还将使用有关用户选择的文件的信息填充结构的成员。函数的返回值指示用户是否指定了文件名并单击了“确定”按钮(非零),或者用户是否单击了“取消”或发生了错误(零;
FALSE

完整的示例代码是,但简化版本是:

TCHAR szFileName[MAX_PATH]; /* string buffer to hold name of the selected file */

OPENFILENAME ofn = {0};
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hWnd;      /* a handle to your window that will own the dialog */
ofn.lpstrFile = szFileName;
ofn.nMaxFile = MAX_PATH;
ofn.lpstrTitle = TEXT("Select a file to open");
ofn.lpstrFilter = TEXT("EXE files\0*.exe\0");
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
/* etc... */

/* Show the dialog. */
if (!GetOpenFileName(&ofn))
{
    /* Either the user clicked Cancel, or an error occurred.
     * You need to handle it here... */
}
else
{
    /* The user selected a file and clicked OK.
     * The name and path to the file is contained in the szFileName buffer. */

    MessageBox(NULL, szFileName, TEXT("You selected the file..."), MB_OK);
}

是的,这方面的一些内容与VB6不同。例如,C没有内置的字符串类型,这使得编写代码有点复杂。如果您对上面的示例代码感到困惑,我非常建议您在学习Win32 API之前先学习C语言。事情会顺利得多,你也不会迷失方向

谢谢你的回答!但是我如何才能将“打开”按钮更改为“保存”按钮?(我知道如何保存文件,我现在只想知道如何更改按钮名称)@Buxme:这是一个不同的功能。您需要的不是
GetOpenFileName
。不过,这两个函数都使用了
OPENFILENAME
结构。