在MDI Application 啟動時檢查命令列參數並開啟 MDI Child Form。
在程式啟動時,若於 MDI Form 尚未建立完成時,例如Constructro, OnCreate, OnShow 等函數開啟 MDI Child Form 會產生以下錯誤:
Cannot create form. No MDI forms are currently active.
MDI Child Form 必須等 MDI Form 物件建立之後才可開啟。
這個問題有二個解決方法:參考來源:http://www.delphigroups.info/3/4/437727.html
法一:增加自建訊息(Message)
1. 增加一個自建設息,例如:APPWM_CHECKPARAMS
2. 在 MDI Form 的 Constructor 送出這個訊息
PostMessage(Handle, APPWM_CHECKPARAMS, 0, 0);
3. 覆寫 MDIForm 的 WndProc,若 MDIForm收到 APPWM_CHECKPARAMS 則檢查命令列參數並開啟 MDI Chile Form。
void __fastcall TForm1::WndProc(TMessage &Message)
{
if( Message.Msg == APPWM_CHECKPARAMS )
{
// check for the filename here, opening child windows if needed...
}
else
TForm::WndProc(Message);
}
}
法二:在 OnPaint
(參考來源)
在程式中增加一個布林變數,判斷OnPaint是否為第一次執行。若是第一次則檢查命令列參數並開啟 MDI Chile Form。但因為每次 OnPaint 是都必須判斷,不是好的方法。
Subscribe to:
Post Comments (Atom)
[Qt] 執行檔需要哪些 Dll?
1. 使用 Qt 的 windeployqt.exe 工具 (在 C:\Qt\Qt5.14.1\5.14.1\msvc2017\bin\)。 a. 把執行檔 myProgram.exe 放在某個資料夾。 b. 在檔案總管這個資料夾按 Shift 和滑鼠右鍵,開啟 Po...
-
From: http://bcbjournal.org/articles/vol3/9901/Working_with_version_information.htm?PHPSESSID=eb3eea609943c3d1bb8294288b945696 January 1999 ...
-
[Reference] http://www.programmer-club.com.tw/ShowSameTitleN/cb/10992.html 在主程式 WinMain() 加入下面程式碼 WINAPI WinMain(HINSTANCE, HINSTANCE, LPST...
-
看這裏 http://social.technet.microsoft.com/Forums/en/w7itpronetworking/thread/1f22d98f-e150-4a54-9967-1641fa86dbc5
No comments:
Post a Comment