社区
C++ Builder
帖子详情
小难题!!!!!
COKING
2003-01-12 12:05:17
怎么在SaveDialog没选定文件的时候,按《确定》键把它关掉?
...全文
38
16
打赏
收藏
小难题!!!!!
怎么在SaveDialog没选定文件的时候,按《确定》键把它关掉?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
COKING
2003-01-13
打赏
举报
回复
ok!!!!谢了!!!!@_@
「已注销」
2003-01-12
打赏
举报
回复
您预先写一个默认的filename 如“未命名”(当然 您得取一个再蹊跷点的 如 @未命名)
这样就可以支持“确定”了
你发现还是“未命名”
那么你就可以判断用户没有选中了
Friecin
2003-01-12
打赏
举报
回复
SaveDialog是封装WinAPI标准对话框的,如果你想这么做,就需要直接调用API函数,来进行调整:
int DialogBoxParam(HINSTANCE hinstance,LPCTSTR lpTemplateName,HWND hWndParent,DLGPROC lp DialogFunc,LPARAM dwInitParam);
具体我没有试验过。
还有,说说你的意图,也许可以用其他方式解决实际问题。
s98231106
2003-01-12
打赏
举报
回复
不知道
jishiping
2003-01-12
打赏
举报
回复
不知道楼主为什么要这样做?是不是想让用户选择一个目录啊?如果这样的话,可以使用
BCB的函数SelectDirectory就可以了。
bool __fastcall SelectDirectory(const AnsiString Caption, const WideString Root,
AnsiString &Directory);
jishiping
2003-01-12
打赏
举报
回复
用API写可以,但是用BCB的控件就不行了。
warton
2003-01-12
打赏
举报
回复
如果filename不为空,就可以了
l_clove
2003-01-12
打赏
举报
回复
SaveDialog在没选定的时候,filename不是""么,判断一下就可以了吧
jishiping
2003-01-12
打赏
举报
回复
这个方法,对于SaveDialog一样使用,因为"保存"和“打开”按钮的ID是一样的,都是IDOK,也就是1。
jishiping
2003-01-12
打赏
举报
回复
我开始也是这么写的,可是不行啊,后来就改用钩子了。Windows可能做了什么手脚吧,至于是什么手脚,我就没有去研究了(估计是钩子方面的)。另外我举个例子,MessageBox这个函数,大家都不陌生。可是你用FindWindowEx,却怎么也找不到MessageBox这个窗口。用钩子才可以找到这个窗口句柄。
COKING
2003-01-12
打赏
举报
回复
再问一下,JSP大哥,下面的代码为什么不可以呀!!!你的代码SaveDialog可以吗?
FARPROC OldProc;
LRESULT CALLBACK MyProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM Param)
{
if(uMsg==WM_COMMAND&&wParam==ID_OK)
return MessageBox(0,"aaaa","bbbb",MB_OK);
else
return CallWindowProc(OldProc,hwnd,uMsg,wParam,Param);
}
//----------------------------------------------------------------
void __fastcall TForm1::SaveDialog1Show(TObject *Sender)
{
(long)OldProc=SetWindowLong(SaveDialog1->Handle,GWL_WNDPROC,(long)MyProc);
}
halibut
2003-01-12
打赏
举报
回复
要只是想选取目录,用SelectDirectory()函数就行啊!
jishiping
2003-01-12
打赏
举报
回复
在执行完OpenDialog1->Execute()后,用ExtractFileDir(OpenDialog1->FileName)就得到选择的目录了。
jishiping
2003-01-12
打赏
举报
回复
下面的代码就可以了,但是需要注意,OpenDialog1的属性ofFileMustExist
必须为false才可以。
static HWND hOkWnd = NULL;
static HHOOK hHook = NULL;
LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode < 0)
return CallNextHookEx(hHook, nCode, wParam, lParam);
MOUSEHOOKSTRUCT* pmhs = (MOUSEHOOKSTRUCT*)lParam;
if (wParam==WM_LBUTTONUP && pmhs->hwnd==hOkWnd) {
SendMessage(GetParent(hOkWnd), CDM_SETCONTROLTEXT,
edt1, (long)"(None)");
}
return 0;
}
//OpenDialog1的OnShow事件
void __fastcall TForm1::OpenDialog1Show(TObject *Sender)
{
hOkWnd = GetDlgItem(GetParent(OpenDialog1->Handle), IDOK);
hHook = SetWindowsHookEx(WH_MOUSE, (FARPROC)MouseProc,
NULL, GetCurrentThreadId());
}
//OpenDialog1的OnClose事件
void __fastcall TForm1::OpenDialog1Close(TObject *Sender)
{
if (hHook!=NULL) UnhookWindowsHookEx(hHook);
}
大大怪老张
2003-01-12
打赏
举报
回复
用jsp提供的函数来选择目录就好了。
COKING
2003-01-12
打赏
举报
回复
我确实要选目录的!
我用SetWindowLong 替换了对话框的WND_PROC后。来处理WM_COMMAND消息,
居然在点<确定>时,WM_COMMAND它是不触发的,而其他消息都能抓到的。
《确定》的ID 为ID_OK,
《取消》的ID 为ID_CANCEL,
这些我知道的。在点《确定》时处理。我要处理的。。。
Java初期万年历源代码
这个是Java中初学者所遇到一个小
难题
!此程序对于前期学者比较有用!
资源站 骚老板资源网整站源码 带2GB数据.txt
品质没有
难题
!!! 为确保原版主题包不泄露,本网站RIPRO为开源系统老版本,请自主拆换原版 构建
难题
:如果最上边提醒报错或是主页缩列图失效请在wordpress网站根目录里的一些著作权文件删除,根目录下全部.PHP文件里的...
hasog:建成项目运营2年,遇到了无数的
难题
和痛点,苦于市面并没有相似需求的项目,此项目专为解决需求痛点进行重新开发!加了很多新特性!基于Tp6开发的一个商城系统,适合刚起步的创业型公司。【开发中】
建成项目运营2年,遇到了无数的
难题
和痛点,苦于市面并没有相似需求的项目,此项目专为解决需求痛点进行重新开发!加了很多新特性!基于Tp6开发的一个商城系统,适合刚起步的创业型公司。 !!还在开发中!预计3月...
超强系统加速器(适合配置较低的电脑用户)
如果你觉得自己的电脑(或本本)配置低,上网、玩游戏卡的要命,而又难得花大本钱去升级,那么这款小小的加速器就可以成为你解决
难题
的关键。它占用空间极小,不过1M,只要已启动就可以轻松关掉系统里不必要的服务,...
无线网卡离线安装方式.rar
但是小伙伴们会发现安装好的系统是没办法连无线网的,但是身边又没有办法连接有线。经过两天的摸索与搜资料,总算解决了这一
难题
,将压缩包解压后再执行压缩包里文本的命令行重启就OK 啦!!!
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章