我使用GetOpenFileName函数来创建通用的打开文件的对话框,初始化和是在窗体的
WS_CREATE中:代码如下:
ofn.lStructSize=sizeof(OPENFILENAME);
ofn.hwndOwner=hWnd;
ofn.hInstance=hIns;
ofn.lpstrFilter="Bmp Files(*.BMP)\0*.bmp\0All files(*.*
ofn.lpstrCustomFilter=NULL;
ofn.nMaxCustFilter=0;
ofn.nFilterIndex=0;
ofn.lpstrFile=NULL;
ofn.nMaxFile=255;
ofn.lpstrFileTitle=NULL;
ofn.nMaxFileTitle=255;
ofn.lpstrInitialDir="d:\\";
ofn.lpstrTitle=NULL;
ofn.Flags=0;
ofn.nFileOffset=0;
ofn.nFileExtension=0;
ofn.lpstrDefExt="bmp";
ofn.lCustData=0;
ofn.lpfnHook=NULL;
ofn.lpTemplateName=NULL;
然后我在我的一个菜单项消息命令中调用如下:
case WM_COMMAND:
switch(wParam){
case IDM_LOADBMP:
ofn.Flags=OFN_HIDEREADONLY | OFN_CREATEPROMPT; ofn.lpstrTitle="打开";
if (!GetOpenFileName(&ofn))
MessageBox(hWnd,"can not open the file","file",
else
{
MessageBox(hWnd,"open is ok","open",0);
MessageBox(hWnd,ofn.lpstrFile,"open file",0);
}
我测试函数调用是成功的,但是在我的变量中却没有我需要返回的文件名,
ofn.lpstrFile仍然为NULL,请各位指教。
谢谢。
WS_CREATE中:代码如下:
ofn.lStructSize=sizeof(OPENFILENAME);
ofn.hwndOwner=hWnd;
ofn.hInstance=hIns;
ofn.lpstrFilter="Bmp Files(*.BMP)\0*.bmp\0All files(*.*
ofn.lpstrCustomFilter=NULL;
ofn.nMaxCustFilter=0;
ofn.nFilterIndex=0;
ofn.lpstrFile=NULL;
ofn.nMaxFile=255;
ofn.lpstrFileTitle=NULL;
ofn.nMaxFileTitle=255;
ofn.lpstrInitialDir="d:\\";
ofn.lpstrTitle=NULL;
ofn.Flags=0;
ofn.nFileOffset=0;
ofn.nFileExtension=0;
ofn.lpstrDefExt="bmp";
ofn.lCustData=0;
ofn.lpfnHook=NULL;
ofn.lpTemplateName=NULL;
然后我在我的一个菜单项消息命令中调用如下:
case WM_COMMAND:
switch(wParam){
case IDM_LOADBMP:
ofn.Flags=OFN_HIDEREADONLY | OFN_CREATEPROMPT; ofn.lpstrTitle="打开";
if (!GetOpenFileName(&ofn))
MessageBox(hWnd,"can not open the file","file",
else
{
MessageBox(hWnd,"open is ok","open",0);
MessageBox(hWnd,ofn.lpstrFile,"open file",0);
}
我测试函数调用是成功的,但是在我的变量中却没有我需要返回的文件名,
ofn.lpstrFile仍然为NULL,请各位指教。
谢谢。
ofn.lpstrFile=NULL;
这一行代码应该改写一下,参考如下:
char szFileName[255]="";
ofn.lpstrFile = szFileName;
然后,在结果中: MessageBox(hWnd,szFileName,"open file",0);