首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC 教學

打造 Dreamweaver 風格多視窗應用:任務列獨立顯示、無主視窗感知、共享資料

     編輯:VC 教學

特徵分析

  • 每個編輯視窗在任務列獨立顯示按鈕。
  • 關閉任一視窗不影響其他視窗。
  • 視窗間共享設定 (如儲存路徑)。
  • 實際上屬於同一進程,共用 `Application` 物件。

實現關鍵

  1. 隱藏主視窗 & Application:修改 `WinMain`,設 `Application->ShowMainForm = false`、`ShowWindow(Application->Handle, SW_HIDE)`,並將主視窗 `Visible = false`。
  2. 子視窗父視窗設為桌面:`Form2->ParentWindow = GetDesktopWindow()`,使其在任務列獨立顯示。
  3. 同步視窗風格:用 `Get/SetWindowLong(GWL_STYLE)` 將主視窗風格複製給子視窗,保持外觀一致。
  4. 計數器管理生命週期:主視窗 `FormCount` 記錄子視窗數;子視窗 `OnClose` 遞減,歸零時 `Application->Terminate()`。

核心代碼片段


// WinMain 修改
Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Application->ShowMainForm = false;
ShowWindow(Application->Handle, SW_HIDE); // 隱藏 Application 視窗
Form1->Visible = false; // 必須額外隱藏主視窗
Application->Run();

// Form1 OnCreate
int style = GetWindowLong(Handle, GWL_STYLE);
for (int i=0; i<2; i++) {
    TForm2 *F = new TForm2(NULL);
    F->ParentWindow = GetDesktopWindow();
    F->Caption = (i==0)?"F":"G";
    SetWindowLong(F->Handle, GWL_STYLE, style);
    F->Show();
}
FormCount = 2;

// Form2 OnClose
if (Form1->FormCount > 1) Form1->FormCount--;
else Application->Terminate();

資料共享

主視窗作為資料容器 (單例),子視窗透過 `Form1->SharedPath` 等屬性讀寫共享設定。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved