50分 如何获取非模式对话框无标题栏句柄??

klkvc386 2008-11-25 02:45:43
我想实现一个像 tooltips 那样的窗口用来显示数据

createtips.Create(IDD_TOOLTIPS,GetDesktopWindow());
createtips.ShowWindow(SW_SHOW);

我想用dll 键盘钩子来关掉他
我要怎么样才能获取的句柄并关掉他
...全文
188 点赞 收藏 12
写回复
12 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
klkvc386 2008-11-26
两天了,终于解决了,
是 FindWindow() 窗口句柄 的问题,
是句柄自己改变了。所以找不到,也就是关不掉的原因!!
晕!!!
回复
cnzdgs 2008-11-25
DLL通过句柄给窗口发消息,由EXE来关。
回复
klkvc386 2008-11-25
既然是自己创建的,把句柄传给DLL就可以了,注意一点,句柄要用共享变量来保存,否则在其它进程中无法使用。


你的意思是说 把句柄从exe 传到 dll 然后在dll 执行关掉dialog 吗?
回复
cnzdgs 2008-11-25
既然是自己创建的,把句柄传给DLL就可以了,注意一点,句柄要用共享变量来保存,否则在其它进程中无法使用。
回复
leslieyan 2008-11-25
用 GetDlgItem 这个函数试试,具体的实用方法可以参见一下 msdn
回复
klkvc386 2008-11-25
我用的就是你说的这个方法,但是,
有时她会关不了,却显示了地二个dialog 第一个没关掉
我用 原有的 tooltip 也就是 windows 那种黄色的提示框
也同样会这样 ,所以我想有没有其他方法取得句柄关掉他,
不知道是不是与失去焦点后,就没法关掉有关!!
回复
gamezealot 2008-11-25
比如你在CMyDlg里
createtips.Create(IDD_TOOLTIPS,this);//必须设置父窗口为CMyDlg
createtips.ShowWindow(SW_SHOW);
在CMyDlg里定义一个自定义消息
enum {WM_CLOSETOOPTIP = WM_USER+100};
ON_MESSAGE(WM_CLOSETOOPTIP, KillToolTipWindow)
并处理这个消息。
LRESULT CMyDlg::KillToolTipWindow(WPARAM wp, LPARAM lp)
{
//干掉窗口的代码
return 0L;
}

然后在dll的函数里
FindWindow(),找到你的CMyDlg的窗口句柄。
SendMessage(hWnd, WM_CLOSETOOPTIP, 0, 0);
这样就好了。

回复
klkvc386 2008-11-25
dll 键盘钩子里
case VK_F8:
SendMessage()


MFC 里接到消息调用以下,这是我原来的代码!
LRESULT CXXXDlg::OnReMoveTooltip(UINT wParam, LONG lParam){
createtips.Destroywindows();
return 0;
}

但是有时候不灵,关不了

tooltip是在exe中create而想要在dll中关闭它,那么就要想办法获得tooltip的母体的窗口句柄,然后给他发消息让他处理tooltip就可以了。

如果是这样的话,要怎么实现阿!?
给各例子!!
回复
gamezealot 2008-11-25
你的tooltip是在哪个里面create?dll里还是exe里?
如果是tooltip和tooltip所依赖的母体是在同一个工程里(同一个dll或同一个exe),则可以使用createtips对象。这样你上面的代码就可以使用。
如果是分开的,tooltip是在exe中create而想要在dll中关闭它,那么就要想办法获得tooltip的母体的窗口句柄,然后给他发消息让他处理tooltip就可以了。
回复
klkvc386 2008-11-25
在dll 里可以这样用吗?

CWnd* pWnd;
pWnd= GetDlgItem(IDD_TOOLTIPS);
pWnd->DestroyWindow();

不知道对不对,帮忙指正一下!?!
回复
lbjfeng 2008-11-25

GetDlgItem(ID,phand);
回复
BH2008 2008-11-25
CWnd::GetDlgItem

CWnd* GetDlgItem( int nID ) const;
void CWnd::GetDlgItem( int nID, HWND* phWnd ) const;

返回值:
指向给定的控件或子窗口的指针。如果没有控件具有nID给出的整数ID,则返回NULL。
返回的指针可能是临时的,不能被保存以供将来使用。

参数: nID 指定了要获取的控件或子窗口的标识符。
phWnd 指向子窗口的指针。

说明:
这个函数获得对话框或其它窗口中指定控件或子窗口的指针。返回的指针通常被强制转换为nID所标识的控件类型
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2008-11-25 02:45
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……