李 李亚平 Unregistered / Unconfirmed GUEST, unregistred user! 1999-01-28 #1 我想写一个小工具,需要将我的一个子窗体或者按钮附在别的软件窗体上(比如说快捷工具条,或者一个类似TP97的菜单条),用户一按下按钮,这个小工具就能够完成功能
T tqz Unregistered / Unconfirmed GUEST, unregistred user! 1999-01-28 #2 这得那个软件同意吧? 比如想在word中插入按钮,就要调Word Basic,或者用OLE Auto,实质是一样的。 当然你可以硬让你的按钮(其实应该是个窗口)显示在那个软件的特定位置,Hook 那个软件的Move,Maximize等消息,做到如影随形,让用户看不出是'粘'上去的。 //好像挺有趣的...
这得那个软件同意吧? 比如想在word中插入按钮,就要调Word Basic,或者用OLE Auto,实质是一样的。 当然你可以硬让你的按钮(其实应该是个窗口)显示在那个软件的特定位置,Hook 那个软件的Move,Maximize等消息,做到如影随形,让用户看不出是'粘'上去的。 //好像挺有趣的...
A Another_eYes Unregistered / Unconfirmed GUEST, unregistred user! 1999-01-28 #3 知道怎么做花哨的TitleBar吗?(就是window上面那条兰色的)它就是把个窗口贴在 原来该是Title的地方,只要监视WM_MOVE, WM_MOVING, WM_SIZE就能实现了
T tqz Unregistered / Unconfirmed GUEST, unregistred user! 1999-01-28 #4 >知道怎么做花哨的TitleBar吗?(就是window上面那条兰色的)它就是把个窗口贴在 >原来该是Title的地方,只要监视WM_MOVE, WM_MOVING, WM_SIZE就能实现了 嗯,这样的控件我也收藏了几个。可那是自己的窗口呀。贴在其他程序上的按钮还没有 吧?恐怕要做Message Hook 了。
>知道怎么做花哨的TitleBar吗?(就是window上面那条兰色的)它就是把个窗口贴在 >原来该是Title的地方,只要监视WM_MOVE, WM_MOVING, WM_SIZE就能实现了 嗯,这样的控件我也收藏了几个。可那是自己的窗口呀。贴在其他程序上的按钮还没有 吧?恐怕要做Message Hook 了。
C chenke Unregistered / Unconfirmed GUEST, unregistred user! 1999-01-29 #5 用Fn*.*监视所有的Message,画一个窗体或做一个无窗体的按钮,激活显示, 其他不用说了吧。
沉 沉默使劲 Unregistered / Unconfirmed GUEST, unregistred user! 1999-01-29 #6 用VC++可以做到,但是我不会用DELPHI做. c 的源程序: ::MoveWindow(m_hWnd,900,0,40,40,TRUE);//将你的子窗体移动到合适的位置 m_hWnd是想贴过去的子窗体的句柄 ::SetParent(m_hWnd,HWND(0x52c));//HWND(0x52c)目的窗体的句柄; okey. 在DELPHI时,SetParent我不知道如何将句柄handle转换成twincontrol类型.
用VC++可以做到,但是我不会用DELPHI做. c 的源程序: ::MoveWindow(m_hWnd,900,0,40,40,TRUE);//将你的子窗体移动到合适的位置 m_hWnd是想贴过去的子窗体的句柄 ::SetParent(m_hWnd,HWND(0x52c));//HWND(0x52c)目的窗体的句柄; okey. 在DELPHI时,SetParent我不知道如何将句柄handle转换成twincontrol类型.
C chenke Unregistered / Unconfirmed GUEST, unregistred user! 1999-01-29 #7 挂hook while Truedo begin if 要贴的窗口激活 then 以激活状态显示你的窗体; end; 这应该可以吧。
H huizhang Unregistered / Unconfirmed GUEST, unregistred user! 1999-01-29 #8 在Delphi自己的程序中是十分简单的, 只要改变某个控件的parent属性就行了, 比如 把一个form2中的Button1移动到Form1中来: 1. 新建一个App, 默认有一个Form1, 在Form1中加一个Button1 2. 再新建一个form2, 在Form2中也加一个Button1 3. 在Unit1中的uses后面加上Unit2 4. Form1的Button1Click事件如下: procedure TForm1.Button2Click(Sender: TObject); begin Form2.Button1.parent:=Form1; Form2.Button1.Left := 20; Form2.Button1.Top:=100; end;
在Delphi自己的程序中是十分简单的, 只要改变某个控件的parent属性就行了, 比如 把一个form2中的Button1移动到Form1中来: 1. 新建一个App, 默认有一个Form1, 在Form1中加一个Button1 2. 再新建一个form2, 在Form2中也加一个Button1 3. 在Unit1中的uses后面加上Unit2 4. Form1的Button1Click事件如下: procedure TForm1.Button2Click(Sender: TObject); begin Form2.Button1.parent:=Form1; Form2.Button1.Left := 20; Form2.Button1.Top:=100; end;
H huizhang Unregistered / Unconfirmed GUEST, unregistred user! 1999-01-29 #9 用API函数CreateWindow应该能够在相应的Window下直接建立Control, 在做一个 服务程序或者hook截获发个这个Control的WM_COMMAND消息做相应的处理
H huizhang Unregistered / Unconfirmed GUEST, unregistred user! 1999-03-31 #12 还要怎样说才算明白? 请看CreateWindow的帮助.