请教:如何在文件对话框(通用)的toolbar上加按钮 请教:如何在文件对话框(通用)的toolbar上加按钮并能够响应事件要做一个全局的,就是在系统中出现的文件对话框都改成自己的定制的请大家提供一些思路分不够再加 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 定制文件对话框例子http://www.vckbase.com/document/viewdoc/?id=417系统中出现的文件对话框都改成自己的定制的这不太现实替换系统文件, APIHook, 用Hook自动子类化文件对话框, 方法很多, 都不怎么方便 在OnInitDialog() 中添加如下代码BOOL bRet=CFileDialog::OnInitDialog(); if (bRet == TRUE) { //* //CWnd *h1=GetParent()->GetDlgItem(IDOK); //h1->SetWindowText("Add"); this->HideControl(IDOK); this->HideControl(0x470); //combo框 this->HideControl(0x441); //文件类型 this->HideControl(IDCANCEL); //取消按钮 }然后建立自己的对话框类,继承自CFileDialog然后你就可以在自己的对话框上创建你需要功能 还是自己重载CFileDialog类吧!来得快! 我看了别人定制文件对话框的例子都只是在对话框上定制可以在对话框上的Toolbar上添加按钮吗另外用APIHOOK需要HOOK哪些API 用一个直接一点的方法:先获取ToolBar上某一项的显示的位置区域(RECT)然后创建一个Button,按钮的位置就设置在该Rect上!这样也能得到你想要的效果! spy++上可以查看toolbar的classname是ToolbarWindow32你可以通过这个名称去获得toolbar的窗口句柄你就可以在这个Toolbar上添加按钮了重写一个CfileDlg在OnInitDialog中设一个进程类钩子HookHandle = SetWindowsHookEx(WH_CALLWNDPROC, (HOOKPROC) Hooker,(HINSTANCE)NULL, (DWORD)GetCurrentThreadId());在钩子函数中判断Toolbar句柄CWPSTRUCT* x = (CWPSTRUCT*)lParam;GetClassName(x -> hwnd, szClassName, MAX_CHAR); if(strcmp(_strlwr(szClassName), "toolbarwindow32") == 0){hWndToolbar = x -> hwnd;//这个就是toolbar的句柄}然后添加一个按钮TBBUTTON Button;//自己设置这个button属性::SendMessage(hWndToolbar, TB_INSERTBUTTON, 0, (LPARAM)&Button);你可以试试这个方法至于hook系统filedialog,需要全局钩子不过我也没想到什么好方法关注一下 datetime控件的问题 在打印过程中改变打印方向,1页纵 2页横 3页纵。。。。 网格列表控件wsGrid 开放原代码,大家快去看看! 这样的方法在picture控件里面怎么不能显示图片? VC中如何做到根据传入的字符串动态调用函数? 一个vc工程由几个人做,但是怎么把做好的东西整合起来呢 我想学tcp/ip,望高手能提供相关书籍或者资料 为什么clistCtrl 一开始背景颜色不对? 真难..字符串间如何进行 转换!!!! 请教关于音频G.711,G.721,G.729的编程。 mfc 中链表问题求助! 关于ON_COMMAND_RANGE
定制文件对话框例子
http://www.vckbase.com/document/viewdoc/?id=417系统中出现的文件对话框都改成自己的定制的这不太现实
替换系统文件, APIHook, 用Hook自动子类化文件对话框, 方法很多, 都不怎么方便
if (bRet == TRUE)
{
//*
//CWnd *h1=GetParent()->GetDlgItem(IDOK);
//h1->SetWindowText("Add");
this->HideControl(IDOK);
this->HideControl(0x470); //combo框
this->HideControl(0x441); //文件类型
this->HideControl(IDCANCEL); //取消按钮
}
然后建立自己的对话框类,继承自CFileDialog然后你就可以在自己的对话框上创建你需要功能
我看了别人定制文件对话框的例子
都只是在对话框上定制
可以在对话框上的Toolbar上添加按钮吗另外用APIHOOK需要HOOK哪些API
先获取ToolBar上某一项的显示的位置区域(RECT)
然后创建一个Button,按钮的位置就设置在该Rect上!
这样也能得到你想要的效果!
你可以通过这个名称去获得toolbar的窗口句柄你就可以在这个Toolbar上添加按钮了
重写一个CfileDlg
在OnInitDialog中设一个进程类钩子
HookHandle = SetWindowsHookEx(WH_CALLWNDPROC, (HOOKPROC) Hooker,(HINSTANCE)NULL, (DWORD)GetCurrentThreadId());
在钩子函数中判断Toolbar句柄
CWPSTRUCT* x = (CWPSTRUCT*)lParam;
GetClassName(x -> hwnd, szClassName, MAX_CHAR);
if(strcmp(_strlwr(szClassName), "toolbarwindow32") == 0)
{
hWndToolbar = x -> hwnd;//这个就是toolbar的句柄
}
然后添加一个按钮
TBBUTTON Button;//自己设置这个button属性
::SendMessage(hWndToolbar, TB_INSERTBUTTON, 0, (LPARAM)&Button);你可以试试这个方法至于hook系统filedialog,需要全局钩子
不过我也没想到什么好方法
关注一下