vc++6.0中,我用下面这个句子来选择一个bmp文件并打开.如何在CFileDialog显示的时候右边多出一个区域用来显示单击选中的bmp文件的缩略图呢?
CFileDialog m_Dlg(TRUE,"bmp","*.bmp",OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"Bitmap Files(*.bmp)|*.bmp|All Files(*.*)|*.*||",this);本人菜鸟,请最好说的详细点,有代码最好!谢谢!!
CFileDialog m_Dlg(TRUE,"bmp","*.bmp",OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"Bitmap Files(*.bmp)|*.bmp|All Files(*.*)|*.*||",this);本人菜鸟,请最好说的详细点,有代码最好!谢谢!!
HFILE WINAPI OpenFile(
__in LPCSTR lpFileName,
__out LPOFSTRUCT lpReOpenBuff,
__in UINT uStyle
);
第三个参数指定为OF_READ
使用OPENFILENAME结构,将结构中的 Flags; 成员指定为OFN_ENABLEHOOK,然后为结构中的lpfnHook; 赋值,必须实现自己的挂勾过程.在过程中返回TRUE,表示接受更新.在这个挂勾过程中可以添加自己的代码从而在对话框上显示自己的控件.
UINT_PTR CALLBACK OFNHookProcOldStyle( HWND hdlg,
UINT uiMsg,
WPARAM wParam,
LPARAM lParam
);
其中:
hdlg是对话框的句柄,uiMsg是消息代码,而wParam和lParam是消息的附加信息。当uiMsg是WM_INITDIALOG消息时,lParam指定了OPENFILENAME结构的指针。在MFC中,挂勾过程必须定义成类的静态成员函数或者全局函数,以类的成员函数为例:
在主窗体的头文件(类体里)中加入:
static UINT_PTR CALLBACK OFNHookProcOldStyle1( HWND hdlg,UINT uiMsg,WPARAM wParam,LPARAM lParam);
在cpp文件中加入:
UINT_PTR CChildFrame::OFNHookProcOldStyle1(HWND hdlg,UINT uiMsg,WPARAM wParam,LPARAM lParam)
{
switch(uiMsg)
{
case WM_INITDIALOG:
break;
...
}
return true;
}
对于对话框而言,它窗体初始化时,会发送 WM_INITDIALOG消息,因此这里是初始化对话框界面的好地方。
此挂勾过程在返回值,必须指定为TRUE,然后,你将看不到对话框的背景,并且上面控件的都响应不了事件。
在WM_INITDIALOG的case分支中,使用CreateWindow函数来创建控件,这需要点windows编程知识。
,将FileDialogEx.cpp中的包含文件改成我自己的对话框文件,但编译时总是显示
BitmapCtrlDemoDlg.obj : error LNK2001: unresolved external symbol "public: __thiscall CFileDialogEx::CFileDialogEx(int,char const *,char const *,unsigned long,char const *,class CWnd *)" (??0CFileDialogEx@@QAE@HPBD0K0PAVCWnd@@@Z)
Debug/BitmapCtrlDemo.exe : fatal error LNK1120: 1 unresolved externals
请问这是怎么回事?