网上说得毫不轻松啊,如下:
实现步骤:
1、插入一个对话框资源,放置一个分组框,其ID设为stc32=0x45f,然后放置其他想要的控件
设置对话框的属性:Style: Child Border: None Clip siblings 3D外观 控制
2、为对话框设置相应的实现类,从CDialog派生,然后将基类改为CFileDialog
3、修改构造函数
定义:
public:
CSpecialDlg(BOOL bOpenFileDialog,
LPCTSTR lpszDefExt = NULL,
LPCTSTR lpszFileName = NULL,
DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
LPCTSTR lpszFilter = NULL,
CWnd* pParentWnd = NULL);
实现:
CSpecialDlg::CSpecialDlg(BOOL bOpenFileDialog, LPCTSTR lpszDefExt, LPCTSTR lpszFileName,
DWORD dwFlags, LPCTSTR lpszFilter, CWnd* pParentWnd) :
CFileDialog(bOpenFileDialog, lpszDefExt, lpszFileName, dwFlags, lpszFilter, pParentWnd)
{
//turn on the template
m_ofn.Flags |= OFN_ENABLETEMPLATE;//get the right module handle
m_ofn.hInstance = AfxGetResourceHandle();//set the template to load
m_ofn.lpTemplateName = MAKEINTRESOURCE(IDD_SPECIAL_DLG);//change the window title
m_ofn.lpstrTitle="Delete File";
}
4、响应自定义模板上控件的消息:
void CSpecialDlg::OnButton1()
{HWND hwndControl;
//获得通用对话框上控件的句柄:1是“打开”按钮的Control IDhwndControl = ::GetDlgItem(GetParent()->m_hWnd,1);
//改变标题
::SetWindowText(hwndControl,"Delete All");}
5、使用
CSpecialDlg dlg(TRUE);
dlg.DoModal();我在vc.net中全盘照做,可是文件对话框说什么就是不给我出来了!!!!!help阿!!!急!!
实现步骤:
1、插入一个对话框资源,放置一个分组框,其ID设为stc32=0x45f,然后放置其他想要的控件
设置对话框的属性:Style: Child Border: None Clip siblings 3D外观 控制
2、为对话框设置相应的实现类,从CDialog派生,然后将基类改为CFileDialog
3、修改构造函数
定义:
public:
CSpecialDlg(BOOL bOpenFileDialog,
LPCTSTR lpszDefExt = NULL,
LPCTSTR lpszFileName = NULL,
DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
LPCTSTR lpszFilter = NULL,
CWnd* pParentWnd = NULL);
实现:
CSpecialDlg::CSpecialDlg(BOOL bOpenFileDialog, LPCTSTR lpszDefExt, LPCTSTR lpszFileName,
DWORD dwFlags, LPCTSTR lpszFilter, CWnd* pParentWnd) :
CFileDialog(bOpenFileDialog, lpszDefExt, lpszFileName, dwFlags, lpszFilter, pParentWnd)
{
//turn on the template
m_ofn.Flags |= OFN_ENABLETEMPLATE;//get the right module handle
m_ofn.hInstance = AfxGetResourceHandle();//set the template to load
m_ofn.lpTemplateName = MAKEINTRESOURCE(IDD_SPECIAL_DLG);//change the window title
m_ofn.lpstrTitle="Delete File";
}
4、响应自定义模板上控件的消息:
void CSpecialDlg::OnButton1()
{HWND hwndControl;
//获得通用对话框上控件的句柄:1是“打开”按钮的Control IDhwndControl = ::GetDlgItem(GetParent()->m_hWnd,1);
//改变标题
::SetWindowText(hwndControl,"Delete All");}
5、使用
CSpecialDlg dlg(TRUE);
dlg.DoModal();我在vc.net中全盘照做,可是文件对话框说什么就是不给我出来了!!!!!help阿!!!急!!
解决方案 »
- VC操作word如何全选word的第一页
- 用EVC或VC编一个 想IP设置的对话框??
- 单文档如何让下拉菜单缺省显示所有项
- 怎么理解振铃现象 为什么理想低通滤波器电子元件不能实现 什么是幅频函数
- 关于命名管道连接的问题
- 单击CTreeCtrl某节点,并没有让被选种的节点处于高亮状态,不知道怎么回事?
- 问一个关于tracert的问题!
- 有关消息接受者的困惑?请高手解惑?
- 对话框应用程序并不调用Run,那它的消息检索和处理是在那儿实现的呢?
- 急求<<windows程序设计>>一书,电子版也行 急急急
- !!如何用VC++实现作图,要能存储修改等功能(有很大难度,请教高手)!!
- 如何让自己的对话框在Windows登录框前出现,重载Gina.dll可以吗?
但是,可惜的是,这个对话框模板上我不能放置DataGrid控件!!!否则启动不了!
还有,谁知道"打开"按钮的ID是多少???
HWND hwndControl; //获得通用对话框上控件的句柄:1是“打开”按钮的Control IDhwndControl = ::GetDlgItem(GetParent()->m_hWnd,1);
//改变标题
::SetWindowText(hwndControl,"Delete All");
Open按钮: 1
Cancel按钮: 2
file name(Edit Combo): 1152
folder(Combo): 1137
read only(Label): 1040
file extension(Combo): 1136
FolderView(ListView): 1
ToolBar: 1088 //补充:
FolderView的id和Open一样,是列举文件夹下文件名那个List,选择文件夹路径的下拉框是1137。
工具栏(1088,可以选择FolderView的排列方式)在NT4.0下没有,Win2000和WinXP中才有。