窗口设计(50分)

  • 主题发起人 主题发起人 ouwx
  • 开始时间 开始时间
O

ouwx

Unregistered / Unconfirmed
GUEST, unregistred user!
一般Windows程式的標題棒位於視窗的上方,我們可利用該標題棒來移動視窗。

請設計一個程式,示範如何利用C++Builder(或 MFC)實作出,置於視窗左方的綠色標題棒。

如圖:
5oYWTCAeM4GrgvFvB-k5Jo9cSOZQZ87C.gif
 
最后编辑:
样式请看http://dgxyl.net/IMG00001.gif
 
设计一个无边框的窗体,然后在窗体上添加一个PANEL控件(ALIGN==ALLEFT)
然后添加一些时间来处理有关的拖动,颜色显示等,不知可行否?
gz
 
comfan2001的方法可行,我有一个做windows xp类型的form就是这样做的。
 
剩余部分参见:
在private部分加入下列代码:
procedure wmnchittest(var msg:twmnchittest);
message wm_nchittest;
在程序部分加入以下代码:
procedure TForm1.wmnchittest(var msg:twmnchittest);
begin
inherited;
if (htclient=msg.result) then msg.result:=htcaption;
end;
  上面的关键代码虽然只有两行,但它实现了鼠标直接拖动窗体的目的。
代码的原理是利用窗体的WM_NCHITTEST消息,
这个消息是当光标移动、鼠标按下或释放时发生的,
当程序检测到鼠标在窗体中按下的消息后(消息的值为htClient),
将鼠标在标题栏上按下时产生的消息(值为htCaption)传递出去,
这样就巧妙的欺骗程序认为是标题栏被按下,当然就可拖动窗体了。
 
使用控件:1stclass2000ProVcl5
 
接受答案了.
 

Similar threads

后退
顶部