OPENFILENAME有关问题,
OPENFILENAME问题,急急急!
OPENFILENAME ofn;
TCHAR szPath[MAX_PATH];
ZeroMemory(szPath, sizeof(szPath)); //为什么没有这句程序运行就什么都没显示,求解释
ZeroMemory(&ofn, sizeof(OPENFILENAME));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = hwnd;
ofn.lpstrFilter = TEXT("应用程序\0*.exe\0*.*\0*.*\0\0");
ofn.lpstrFile = szPath;
ofn.nMaxFile = MAX_PATH;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_DONTADDTORECENT | OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_NONETWORKBUTTON | OFN_PATHMUSTEXIST;
if (GetOpenFileName(&ofn)) {
MessageBox(hwnd, szPath, TEXT("提示"), MB_OK);
}
------解决方案--------------------
因为在执行弹出这个窗口的时候,要使用szPath做为一个条件,使窗口的直接定位到szPath那里,如果szPath为随机数据,就无法定位,窗口就弹不出来了。
------解决方案--------------------
ZeroMemory(szPath, sizeof(szPath));
应该是申请空间,并初始化为0的意思。如果申请了一部分内存区域,没有初始化的话,我只知道在调试状态下是用0XCC来填充的,方便越界检查,如果实在release状态下应该是随即的数据吧,有可能是以前堆栈的残余,会导致程序的错误跳转,有可能。
------解决方案--------------------
OPENFILENAME ofn;
TCHAR szPath[MAX_PATH];
ZeroMemory(szPath, sizeof(szPath)); //为什么没有这句程序运行就什么都没显示,求解释
ZeroMemory(&ofn, sizeof(OPENFILENAME));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = hwnd;
ofn.lpstrFilter = TEXT("应用程序\0*.exe\0*.*\0*.*\0\0");
ofn.lpstrFile = szPath;
ofn.nMaxFile = MAX_PATH;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_DONTADDTORECENT | OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_NONETWORKBUTTON | OFN_PATHMUSTEXIST;
if (GetOpenFileName(&ofn)) {
MessageBox(hwnd, szPath, TEXT("提示"), MB_OK);
}
------解决方案--------------------
因为在执行弹出这个窗口的时候,要使用szPath做为一个条件,使窗口的直接定位到szPath那里,如果szPath为随机数据,就无法定位,窗口就弹不出来了。
------解决方案--------------------
ZeroMemory(szPath, sizeof(szPath));
应该是申请空间,并初始化为0的意思。如果申请了一部分内存区域,没有初始化的话,我只知道在调试状态下是用0XCC来填充的,方便越界检查,如果实在release状态下应该是随即的数据吧,有可能是以前堆栈的残余,会导致程序的错误跳转,有可能。
------解决方案--------------------
- C/C++ code
// TODO: Add your control notification handler code here OPENFILENAME ofn; TCHAR szPath[MAX_PATH]; //ZeroMemory(szPath, sizeof(szPath)); //为什么没有这句程序运行就什么都没显示,求解释 _tcscpy( szPath, _T( "C:\\Windows\\system32\\Drivers\\etc\\*" ) ); ZeroMemory(&ofn, sizeof(OPENFILENAME)); ofn.lStructSize = sizeof(OPENFILENAME); ofn.hwndOwner = this->GetSafeHwnd(); ofn.lpstrFilter = TEXT("应用程序\0*.exe\0*.*\0*.*\0\0"); ofn.lpstrFile = szPath; ofn.nMaxFile = MAX_PATH; ofn.lpstrInitialDir = NULL; ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_NONETWORKBUTTON | OFN_PATHMUSTEXIST; if (GetOpenFileName(&ofn)) { MessageBox(szPath, TEXT("提示"), MB_OK); }