怎麼移動一個Form,讓另一個Form跟著? |
尚未結案
|
arisaka_matsuri
高階會員 發表:25 回覆:205 積分:231 註冊:2003-10-19 發送簡訊給我 |
我的程式有兩個Form,Form1和Form2
我想移動Form1時,Form2也跟著移動(相對位置不變)
就像WinAMP那樣,該怎麼做比較好呢?
我有參考過lcsboy大大的文章
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=20073
不過~~是攔截Form1的WM_MOVE嗎?
請各位幫個忙吧~~
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 我的程式有兩個Form,Form1和Form2 我想移動Form1時,Form2也跟著移動(相對位置不變) 就像WinAMP那樣,該怎麼做比較好呢? 我有參考過lcsboy大大的文章 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=20073 不過~~是攔截Form1的WM_MOVE嗎? 請各位幫個忙吧~~ arisaka_matsuri 你好: (1)應該是抓 WM_MOVING 吧 ( > // >>>>>>>> --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
jcjroc
高階會員 發表:21 回覆:279 積分:115 註冊:2002-09-18 發送簡訊給我 |
|
arisaka_matsuri
高階會員 發表:25 回覆:205 積分:231 註冊:2003-10-19 發送簡訊給我 |
感謝RaynorPao和jcjroc的提示
問題已經解決囉~~
順便把 href="http://delphi.ktop.com.tw/topic.php?TOPIC_ID=20073">http://delphi.ktop.com.tw/topic.php?TOPIC_ID=20073
改寫(真的是必殺技,偶比較喜歡這個版本) < class="code">
// Unit1.h
class TForm1 : public TForm
{
__published: // IDE-managed Components
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
__fastcall ~TForm1();
TWndMethod OldWinProc;
void __fastcall Form1Moving(TMessage &Message);
}; // Unit1.cpp
#include "Unit2.h"
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Form2 = new TForm2(this);
Form2->Show();
Form2->Width = Width;
Form2->Height = Height;
Form2->Left = Left;
Form2->Top = Height Top;
OldWinProc = Form1->WindowProc;
Form1->WindowProc = Form1Moving;
}
__fastcall TForm1::~TForm1()
{
delete Form2;
}
void __fastcall TForm1::Form1Moving(TMessage &Message)
{
if(Message.Msg == WM_MOVING)
{
Form2->Left = Form1->Left;
Form2->Top = Form1->Height Form1->Top;
}
else
OldWinProc(Message);
}
發表人 - arisaka_matsuri 於 2003/10/24 12:19:23
|
jcjroc
高階會員 發表:21 回覆:279 積分:115 註冊:2002-09-18 發送簡訊給我 |
這樣不等於多做好多事?
第一你要在LBUTTOMDOWN時先記下WindowPostion
再來於MOUSEMOVE時判斷是否LBUTTON 有按住
然後比對Window Postion 的Offset值 這種做法只在於當Mouse按在任何一區時移動Window好用,也就事說Window的移動是由我們自己決定時.
但如果是正常的Window(有Caption)上,移動的功能是Windows自己做出的,此時只要攔WM_WINDOWPOSCHANGING,WM_WINDOWPOSCHANGED,就知道Window被移動 不過任你用何種方式移動Window終歸會呼叫SetWindowPos,而此API會引發WM_WINDOWPOSCHANGING,WM_WINDOWPOSCHANGED
|
arisaka_matsuri
高階會員 發表:25 回覆:205 積分:231 註冊:2003-10-19 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |