正常情况,将目标LNK快捷方式拖拽到调试器里或者附加目标进程,调试器就应该保存目标程序的绝对路径.
下次再F3打开对话框就应该默认打开上一次调试程序的目录.当我和GPT交流了一会,把这个功能加上后.死活是无效的.
问了GPT也就是生硬的回答, 给的代码也是有问题.
GetOpenFileName1
当出了问题再问GPT,回答依然是教科书式的回答.
GetOpenFileName2
经过多次测试发现目录只能写 "\" 不能用 "/", 另外, 如果默认是要打开C盘, 只能写 "C:", 不能写成 "C:\\"
而我在实际测试中, 第一次按GPT的写成 "C:\\" 是可以正常打开C盘目录的, 但是第二次之后测试的就一直是失败的.原因不清楚.
总之将 "C:" 后面的双斜干去掉,就一直能正常打开C目录了.下面是按GPT给出的代码,修改后正常的代码.
[C++] 纯文本查看 复制代码 #include <windows.h>
#include <commdlg.h>
void OpenFileDialog()
{
OPENFILENAME ofn; // common dialog box structure
char szFile[260]; // buffer for file name
// Initialize OPENFILENAME
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = NULL;
ofn.lpstrFile = szFile;
ofn.lpstrFile[0] = '\0';
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = "All Files\0*.*\0Text Files\0*.TXT\0";
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = "C:"; // 设置初始目录
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
// Display the Open dialog box
if (GetOpenFileName(&ofn) == TRUE)
{
// User selected a file
MessageBox(NULL, ofn.lpstrFile, "Selected File", MB_OK);
}
else
{
// Handle errors here
DWORD dwError = CommDlgExtendedError();
if(dwError != 0)
{
// Display an error message box
char errorMsg[100];
sprintf(errorMsg, "GetOpenFileName failed with error code %lu", dwError);
MessageBox(NULL, errorMsg, "Error", MB_OK | MB_ICONERROR);
}
}
}
int main()
{
OpenFileDialog();
return 0;
}
总之打开的绝对路径后面不要加双斜干就对了.
|