求教一窗体控制的问题

___NULL 2007-02-11 01:15:33
举个例子,桌面上有一壁纸,上面有一个按钮图案,我希望我的窗口可以在按钮的位置完成一个鼠标点击操作,但又不能在所有窗体最上方影响其他窗体,而且还不能被"显示桌面"按钮所最小化。

目前我只能让其不受"显示桌面"影响,但却无法避免占据最上方窗口。
请问各位这要如何处理,才能不让窗体占据在最上方,从而不影响其他程序?
...全文
239 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
withcsharp 2007-02-12
  • 打赏
  • 举报
回复
还有 你的那个btn 最好 用 speedbtn
withcsharp 2007-02-12
  • 打赏
  • 举报
回复
FormStyle = fsStayOnTop

void __fastcall TForm2::CreateParams(TCreateParams & Param)
{
//调用基类
TForm::CreateParams(Param);

//去掉窗口标题区
Param.Style=Param.Style & ~WS_CAPTION;
Param.Style=Param.Style | WS_POPUP;
//设为总在最上面
Param.ExStyle=Param.ExStyle | WS_EX_TOPMOST;
//设Windows Owner为Desktop Window
Param.WndParent=GetDesktopWindow();
}


// 设Windows Owner为Desktop Window
CACACACACA 2007-02-12
  • 打赏
  • 举报
回复
搞个鼠标钩子, 过滤鼠标点击消息, 判断在不在那个"按钮"矩型里面就行了.
___NULL 2007-02-12
  • 打赏
  • 举报
回复
不行哦

withcsharp 提供的方法只能保证不被“显示桌面”最小化,但却一直占据顶端位置,这会影响其它应用

cumtjianbolu 好像也不行,“显示桌面”后就被最下化了。
cumtjianbolu 2007-02-12
  • 打赏
  • 举报
回复
将这个窗体New出来的时候可以尝试如下的方式,将窗体的Parent设置为当前窗口,同时不要模态显示就可以了
if(!frmSJDQuery)
{
frmSJDQuery = new TfrmSJDQuery(this);
frmSJDQuery->Parent = this;
}
frmSJDQuery->Show();
Waiting4you 2007-02-12
  • 打赏
  • 举报
回复
试了半天,搞不定,mark先
___NULL 2007-02-12
  • 打赏
  • 举报
回复
经测试无效
laowang2 2007-02-12
  • 打赏
  • 举报
回复
...
Param.WndParent=NULL;
haoanzi 2007-02-11
  • 打赏
  • 举报
回复
!!

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧