C clark Unregistered / Unconfirmed GUEST, unregistred user! 1998-12-08 #1 象PicaView那样,可以在右键菜单中显示略图。。。<br>谢谢
C clark Unregistered / Unconfirmed GUEST, unregistred user! 1998-12-09 #3 我知道,改注册表,但是,当右键点击图象文件是,我的程序如何,得到Handle并<br>插入位图菜单项,具体一点好吗?谢谢
D dwwang Unregistered / Unconfirmed GUEST, unregistred user! 1998-12-09 #4 为什么不看看Delph demos/shellext/contmenu.dpr<br>的例子呢?那里好像全有了.
A Alan Jiang Unregistered / Unconfirmed GUEST, unregistred user! 1999-01-19 #5 参见<<Windows 95程序员指南>><br>好像有个类似IContextMenu的ole接口<br>我记不清了.<br>不过书名没错,我自己在程序中就得到过你要的右键菜单.<br>等我查一下书后再回答你.<br>
参见<<Windows 95程序员指南>><br>好像有个类似IContextMenu的ole接口<br>我记不清了.<br>不过书名没错,我自己在程序中就得到过你要的右键菜单.<br>等我查一下书后再回答你.<br>
草 草动 Unregistered / Unconfirmed GUEST, unregistred user! 1999-01-23 #6 此段代码可获取任何窗口的Handle,类名,以及位置等旗帜。<br>任何右键快捷菜单也不例外。<br> 先在Form中放入一个Label及一个Timer,在Timer的OnTimer<br>事件中加入下面的代码:<br> <br>procedure TForm1.Timer1Timer(Sender: TObject);<br>var<br> Tp :Tpoint;<br> Hnd :Hwnd;<br> Tx char;<br> Rect :TRect;<br>begin<br> GetCursorPos(Tp);<br> Hnd:=WindowFromPoint(Tp);<br><br> GetMem(Tx,255);<br><br> GetClassname(Hnd,Tx,255);<br> Windows.GetClientRect(Hnd,Rect);<br> MapWindowPoints(Hnd,0,Rect,2);<br><br> Label1.Caption:=<br> '(Handle:'+IntTostr(Hnd)<br> +' ClassName:'+String(Tx)<br> +')Left:'+inttostr(Rect.Left)+';'<br> +'Top:'+inttostr(Rect.Top)+';'<br> +'Height:'+inttostr(Rect.Bottom-Rect.Top)+';'<br> +'Width:'+inttostr(Rect.right-Rect.Left);<br><br> FreeMem(Tx,255);<br><br>//if (OldHnd=Hnd) then Exit;<br><br> if not (Hnd=Form1.Handle) then<br> begin<br><br> if Tp.X+Width<Screen.Width then<br> Left:=Tp.X+10 else<br> Left:=Screen.Width-Width;<br><br> if (string(Tx)=string('#32768')) then<br> Top:=Rect.Bottom+10 else begin<br> if Tp.Y+50<Screen.Height then<br> Top:=Tp.Y+10 else<br> Top:=Screen.Height-50;<br> end;<br> end;<br>// OldHnd:=Hnd;<br>end;<br>
此段代码可获取任何窗口的Handle,类名,以及位置等旗帜。<br>任何右键快捷菜单也不例外。<br> 先在Form中放入一个Label及一个Timer,在Timer的OnTimer<br>事件中加入下面的代码:<br> <br>procedure TForm1.Timer1Timer(Sender: TObject);<br>var<br> Tp :Tpoint;<br> Hnd :Hwnd;<br> Tx char;<br> Rect :TRect;<br>begin<br> GetCursorPos(Tp);<br> Hnd:=WindowFromPoint(Tp);<br><br> GetMem(Tx,255);<br><br> GetClassname(Hnd,Tx,255);<br> Windows.GetClientRect(Hnd,Rect);<br> MapWindowPoints(Hnd,0,Rect,2);<br><br> Label1.Caption:=<br> '(Handle:'+IntTostr(Hnd)<br> +' ClassName:'+String(Tx)<br> +')Left:'+inttostr(Rect.Left)+';'<br> +'Top:'+inttostr(Rect.Top)+';'<br> +'Height:'+inttostr(Rect.Bottom-Rect.Top)+';'<br> +'Width:'+inttostr(Rect.right-Rect.Left);<br><br> FreeMem(Tx,255);<br><br>//if (OldHnd=Hnd) then Exit;<br><br> if not (Hnd=Form1.Handle) then<br> begin<br><br> if Tp.X+Width<Screen.Width then<br> Left:=Tp.X+10 else<br> Left:=Screen.Width-Width;<br><br> if (string(Tx)=string('#32768')) then<br> Top:=Rect.Bottom+10 else begin<br> if Tp.Y+50<Screen.Height then<br> Top:=Tp.Y+10 else<br> Top:=Screen.Height-50;<br> end;<br> end;<br>// OldHnd:=Hnd;<br>end;<br>
T tqz Unregistered / Unconfirmed GUEST, unregistred user! 1999-01-23 #8 大家扯远了。<br>要把自己的程序作为Ole Server,如Alan Jiang(他的english name 与我一样<br>所说,实现IContextMenu接口。<br>看看Inside OLE吧。
大家扯远了。<br>要把自己的程序作为Ole Server,如Alan Jiang(他的english name 与我一样<br>所说,实现IContextMenu接口。<br>看看Inside OLE吧。
E elan Unregistered / Unconfirmed GUEST, unregistred user! 1999-02-09 #9 tgz 说得对。这跟菜单的句柄没有关系,要用到微软 com 模型来编写程序。不过如果要像PicView那样在菜单中显示一张图片的话,要用IContexMenu2接口,而不是IContexMenu接口。