这是打开文件所用的代码
if (GetOpenFileName(&ofn)==TRUE)
{
::SetWindowText(::GetDlgItem(hdlg,IDC_EDIT4),ofn.lpstrFile);
}
//图片加载代码
hbitmap=(HBITMAP)LoadImage(NULL,path,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
“打开文件”选择后 ,关闭对话框,然后再打开,控件图片就不能加载了。
如果打开“打开文件对话框”后,不做选择,关闭对话框,再打开图片显示正常,这是什么原因呢?
if (GetOpenFileName(&ofn)==TRUE)
{
::SetWindowText(::GetDlgItem(hdlg,IDC_EDIT4),ofn.lpstrFile);
}
//图片加载代码
hbitmap=(HBITMAP)LoadImage(NULL,path,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
“打开文件”选择后 ,关闭对话框,然后再打开,控件图片就不能加载了。
如果打开“打开文件对话框”后,不做选择,关闭对话框,再打开图片显示正常,这是什么原因呢?
看hbitmap是否为NULL
Debug下看看LoadImage成功了没?path路径对不?相对路径还是绝对路径?你不是搞的相对路径吧?
char szFile[2048];
BOOL OpenFileDialog(HWND hWnd)
{
OPENFILENAME ofn;
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
// must !
ofn.lpstrFile = szFile;
ofn.nMaxFile = sizeof(szFile);
//
ofn.lpstrFile[0] = '\0';
//no extention file! ofn.lpstrFilter="Any file(*.*)\0*.*\0ddfs\0ddfs*\0";
return(GetOpenFileName((LPOPENFILENAME)&ofn));
}
hbitmap=(HBITMAP)LoadImage(NULL,path,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
if(hbitmap==NULL)
{
MessageBox(NULL,path,"提示:",MB_OK);
MessageBox(NULL,"找不到位图资源","提示:",MB_OK);
return;}
该是什么原因呢?
path对不对?
static TCHAR szFilter[] = TEXT( "3ds Files(*.3ds)\0*.3ds\0 ");//
static TCHAR szFileName[MAX_PATH], szTitleName[MAX_PATH];//
ofn.lStructSize = sizeof(OPENFILENAME) ;
ofn.hwndOwner = NULL; //
ofn.hInstance = NULL;
ofn.lpstrFilter = szFilter;
ofn.lpstrCustomFilter = NULL;
ofn.nMaxCustFilter = 0;
ofn.nFilterIndex = 0;
ofn.lpstrFile = szFileName;
ofn.nMaxFile = MAX_PATH;
ofn.lpstrFileTitle = szTitleName;
ofn.nMaxFileTitle = MAX_PATH;
ofn.lpstrInitialDir= NULL;
ofn.lpstrTitle = NULL;
ofn.Flags = 0;
ofn.nFileOffset = 0;
ofn.nFileExtension =0;
ofn.lpstrDefExt =TEXT( "3ds");
ofn.lCustData =0;
ofn.lpfnHook = NULL ;
ofn.lpTemplateName = NULL ;
if (GetOpenFileName(&ofn)==TRUE)
{
::SetWindowText(::GetDlgItem(hdlg,IDC_EDIT4),ofn.lpstrFile);
}