MDI 子視窗Show( )一問 |
答題得分者是:jessechan
|
BGman
初階會員 發表:28 回覆:85 積分:42 註冊:2003-01-10 發送簡訊給我 |
|
ddy
站務副站長 發表:262 回覆:2105 積分:1169 註冊:2002-07-13 發送簡訊給我 |
|
jessechan
版主 發表:109 回覆:394 積分:254 註冊:2002-04-05 發送簡訊給我 |
我想到兩種方法,
1. 如果你想要把遙遠的視窗拉回來的話請用,
MDIChild->Position = poDefault;
保證不管捲軸在什麼位置, 視窗一定出現在可見的位置, 請去查一下 Help, 將不同的值設定給這個 property 將可得到不同的效果, 如顯示在視窗中央等... 2. 如果你想要讓程式自動拉捲軸到那個很遠的視窗請用,
ScrollWindowEx(MDIForm->ClientHandle,MDIChild->Left * (-1),MDIChild->Top * (-1),NULL,NULL,NULL,NULL,SW_SCROLLCHILDREN | SW_INVALIDATE | SW_ERASE);
用這個函數要留意幾件事, 第一用完後要呼叫
UpdateWindow(MDIForm->Handle);
來重畫畫面, 第二重畫畫面的動作不會重設捲軸, 所以你還要宣告一個
SCROLLINFO si;
然後在重畫視窗之後,
si.cbSize = sizeof(si);
si.fMask = SIF_POS;
si.nPos = Form1->ClientOrigin.x;
SetScrollInfo(Form1->ClientHandle, SB_HORZ, &si, TRUE);
si.nPos = Form1->ClientOrigin.y;
SetScrollInfo(Form1->ClientHandle, SB_VERT, &si, TRUE);
如此才算大功告成, 我是懶人, 一定會毫不考慮的用第一種方法. Jesse Chan
------
Jesse Chan |
BGman
初階會員 發表:28 回覆:85 積分:42 註冊:2003-01-10 發送簡訊給我 |
感謝兩位高手的解答,看來第二種方法比較符合程式需求!但小弟還有疑問...
ScrollWindowEx( Form1->ClientHandle, Form3->Left * (-1), Form3->Top * (-1), NULL, NULL, NULL, NULL, SW_SCROLLCHILDREN | SW_INVALIDATE | SW_ERASE );如果我有一個Form1 是 MDIForm 而Form2、Form3 是 MDIChild 請問一下 問題一 Form1->ClientHandle 與 Form3->Handle 有什麼不一樣? 為何用Form3->Handle 達不到我要的效果? 問題二 我查了 Help ClientHandle 是指向Clildren 的指標,可是本例來說 我有兩個Clildren 請問,是只到哪一個? 問題三 如果當焦點移至 Form3 ,我想要移到 Form1 的中間位置,而非左上角 我做了以下調整,可是卻沒有作用!可以告訴我哪裡錯了嗎? void __fastcall TForm1::Button1Click(TObject *Sender) { ScrollWindowEx( Form1->ClientHandle, Form3->Left * (-1), Form3->Top * (-1), NULL, NULL, NULL, NULL, SW_SCROLLCHILDREN | SW_INVALIDATE | SW_ERASE ); Form3->Show(); UpdateWindow(Form1->Handle); SCROLLINFO si; si.cbSize = sizeof(si); si.fMask = SIF_POS; si.nPos = Form1->ClientOrigin.x (Form1->Width - Form3->Width)/2; SetScrollInfo(Form1->ClientHandle, SB_HORZ, &si, TRUE); si.nPos = Form1->ClientOrigin.y (Form1->Height - Form3->Height)/2; SetScrollInfo(Form1->ClientHandle, SB_VERT, &si, TRUE); } |
jessechan
版主 發表:109 回覆:394 積分:254 註冊:2002-04-05 發送簡訊給我 |
|
BGman
初階會員 發表:28 回覆:85 積分:42 註冊:2003-01-10 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |