Dreamweaver 每個編輯視窗皆在工作列顯示獨立按鈕,彷彿各自為獨立程式,實則共享同一進程資料。C++ Builder 可透過設定視窗父視窗為桌面並修改 WinMain 隱藏主視窗來實現。
Form1 為主視窗,Form2 設為不自動建立。Form1 加入 public: int FormCount; 記錄子視窗數量。Form1 的 OnCreate 動態建立兩個 Form2 實例,並設定 ParentWindow = GetDesktopWindow():int i = GetWindowLong(this->Handle, GWL_STYLE);
TForm2 *F = new TForm2(NULL);
TForm2 *G = new TForm2(NULL);
F->ParentWindow = GetDesktopWindow(); F->Caption = "F";
G->ParentWindow = GetDesktopWindow(); G->Caption = "G";
this->FormCount = 2;
SetWindowLong(F->Handle, GWL_STYLE, i);
SetWindowLong(G->Handle, GWL_STYLE, i);
F->Show(); G->Show();
WinMain 隱藏主視窗與應用程式工作列圖示:Application->ShowMainForm = false;
ShowWindow(Application->Handle, SW_HIDE);
注意:需同時設定 Form1->Visible = false 才能完整隱藏主視窗。
Form2 的 OnClose 判斷計數決定是否終結應用程式:if (Form1->FormCount > 1)
Form1->FormCount--;
else
Application->Terminate();
工作列出現兩個獨立按鈕 (F、G),關閉任一不影響另一,關閉最後一個才結束程式。視窗間可透過 Form1 共享資料 (如儲存路徑)。