OPENFILENAME ofn; // common dialog box structure
char szFile[260]; // buffer for file name
HWND hwnd; // owner window
HANDLE hf; // file handle// Initialize OPENFILENAME
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hwnd;
ofn.lpstrFile = szFile;
// Set lpstrFile[0] to '\0' so that GetOpenFileName does not
// use the contents of szFile to initialize itself.
ofn.lpstrFile[0] = '\0';
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = "All\0*.*\0Text\0*.TXT\0";
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;// Display the Open dialog box. if (GetOpenFileName(&ofn)==TRUE) //
hf = CreateFile(ofn.lpstrFile,
GENERIC_READ,
0,
(LPSECURITY_ATTRIBUTES) NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
(HANDLE) NULL);但是程序运行却没有出现对话框.经查证,应该是if (GetOpenFileName(&ofn)==TRUE)函数返回值不对.不知道要如何解决这样的问题呢?
char szFile[260]; // buffer for file name
HWND hwnd; // owner window
HANDLE hf; // file handle// Initialize OPENFILENAME
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hwnd;
ofn.lpstrFile = szFile;
// Set lpstrFile[0] to '\0' so that GetOpenFileName does not
// use the contents of szFile to initialize itself.
ofn.lpstrFile[0] = '\0';
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = "All\0*.*\0Text\0*.TXT\0";
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;// Display the Open dialog box. if (GetOpenFileName(&ofn)==TRUE) //
hf = CreateFile(ofn.lpstrFile,
GENERIC_READ,
0,
(LPSECURITY_ATTRIBUTES) NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
(HANDLE) NULL);但是程序运行却没有出现对话框.经查证,应该是if (GetOpenFileName(&ofn)==TRUE)函数返回值不对.不知道要如何解决这样的问题呢?
解决方案 »
- 如何截取本程序CWebBrowser2中的JSON封包
- _cdecl修饰名的问题
- 怎么识别文件图标
- 如何写系统创建文件或者有文件复制进来的钩子过程 应该获取什么钩子消息
- VC探讨群--22006089,欢迎加入
- 如何导入外部图片啊
- 100分请教一个视频采集卡的问题
- 急!急!急!急!急!我安装Visual studio 6.0中文版不能够成功,是什么原因??
- 请帮个忙 ActiveX 控件 XpropertiesWnd.ocx 调用 ActiveX控件 XFloorWnd.ocx的程序
- Help! Thanks! 高手指点 Vc++迷惘者!!!!
- 由于插入的D L L在进程的寿命期中早早地就进行了加载,因此在调用函数时应该格外小心。调用k e r n e l 3 2 . d l l中的函数时应该不会出现什么问题,不过调用其他D L L中的函数时就可能产生一些问题。
- 多线程调试的怪问题
{
public:
OPENFILENAME m_ofnstruct;
BEGIN_MSG_MAP(FileBrowserCtrl)
MESSAGE_HANDLER(WM_EDITBROWSER_PRESS, OnFileBrowserCtrlPress)
CHAIN_MSG_MAP(CEditBrowserCtrl)
END_MSG_MAP()
FileBrowserCtrl()
{
_tcsncpy(m_Filter,_T("所有文件(*.*)\0*.*\0\0"),500);
memset((void *)&m_ofnstruct, 0, sizeof(OPENFILENAME));
m_ofnstruct.lpstrTitle = _T("选择文件");
m_ofnstruct.lpstrFilter = m_Filter;
m_ofnstruct.nFilterIndex = 0;
m_ofnstruct.Flags = OFN_CREATEPROMPT | OFN_LONGNAMES |OFN_EXPLORER|OFN_ENABLEHOOK;//|OFN_ENABLESIZING ;
}
LRESULT OnFileBrowserCtrlPress(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
TCHAR InitDir[MAX_PATH] = {0};
GetWindowText(InitDir,MAX_PATH);
if(_tcsclen(InitDir) == 0)
::GetCurrentDirectory(MAX_PATH,InitDir); if(!::PathFileExists(InitDir))
::PathRemoveFileSpec(InitDir); BYTE OFN_Struct[88];
OPENFILENAME* ofnstruct = (OPENFILENAME*) OFN_Struct;
memset(ofnstruct, 0, sizeof(OFN_Struct));
memcpy((void *)ofnstruct,(void *)&m_ofnstruct,sizeof(OPENFILENAME));
ofnstruct->lStructSize = sizeof(OFN_Struct); TCHAR filebuffer[255] = {0};
TCHAR *sFileName;
m_ofnstruct.hwndOwner = m_hWnd;
ofnstruct->lpstrFile = filebuffer;
ofnstruct->nMaxFile = 256;
ofnstruct->lpstrInitialDir = InitDir;
if ( GetOpenFileName( ofnstruct ) )
{
sFileName = ofnstruct->lpstrFile;
SetWindowText(sFileName);
int len = _tcslen(sFileName);
SetSel(len,len,FALSE);
}
return 0;
} void SetFilter(LPCTSTR filter)
{
_tcsncpy(m_Filter,filter,500);
}protected:
TCHAR m_Filter[512];
};