MDIChild的移動問題 |
答題得分者是:herbert2
|
lin11112
初階會員 發表:42 回覆:83 積分:25 註冊:2003-02-17 發送簡訊給我 |
|
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
|
lin11112
初階會員 發表:42 回覆:83 積分:25 註冊:2003-02-17 發送簡訊給我 |
|
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
抱歉! 弄錯了. OnPaint 只是給被其他視窗遮住, 重新 Display 時用.
不知您的用途為何, MDIChild 通常一定會有 WS_Caption Bar, 因此一定能被拖拉, 且不會觸發 Form 的 Event. 若要不准被拖拉, 就不可以有 Window Caption Bar, 必須 BorderStyle = bsNone 或 bsDialog, Top, Left 自行於 Constructer 指定. 且要寫個 private 的 CreateParams(TCreateParams &Params), 執行: TForm::CreateParams(Params); Params.Style &= ~WS_CAPTION; (告訴 Windows API 要 Create 無 Caption Bar 的 Window) 另外也要寫個 private 的 DragXxx(TMessage &Msg), 執行: if (GetAsyncKeyState(VK_LBUTTON) < 0) Msg.Result = HTCAPTION; else Msg.Result = HTCLIENT; (讓 Mouse 無法拖拉) 且須在 .h 檔 Private 段寫: BEGIN_MESSAGE_MAP MESSAGE_HANDLER(WM_NCHITTEST,TMessage,DragXxx) END_MESSAGE_MAP(TForm) (指定 Function DragXxx 給 Windows Message) 試看這是否合您需要! |
lin11112
初階會員 發表:42 回覆:83 積分:25 註冊:2003-02-17 發送簡訊給我 |
用這個方法已可以達到Mouse無法移動
但為何連Form上的menu的會無法點選了呢 ===================引 用 herbert2 文 章=================== 抱歉! 弄錯了. OnPaint 只是給被其他視窗遮住, 重新 Display 時用. 不知您的用途為何, MDIChild 通常一定會有 WS_Caption Bar, 因此一定能被拖拉, 且不會觸發 Form 的 Event. 若要不准被拖拉, 就不可以有 Window Caption Bar, 必須 BorderStyle = bsNone 或 bsDialog, Top, Left 自行於 Constructer 指定. 且要寫個 private 的 CreateParams(TCreateParams &Params), 執行: TForm::CreateParams(Params); Params.Style &= ~WS_CAPTION; (告訴 Windows API 要 Create 無 Caption Bar 的 Window) 另外也要寫個 private 的 DragXxx(TMessage &Msg), 執行: if (GetAsyncKeyState(VK_LBUTTON) < 0) Msg.Result = HTCAPTION; else Msg.Result = HTCLIENT; (讓 Mouse 無法拖拉) 且須在 .h 檔 Private 段寫: BEGIN_MESSAGE_MAP MESSAGE_HANDLER(WM_NCHITTEST,TMessage,DragXxx) END_MESSAGE_MAP(TForm) (指定 Function DragXxx 給 Windows Message) 試看這是否合您需要! |
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |