功能表和資源: 功能表合併
這份文件詳細說明控制視覺編輯和就地啟動適當的 OLE 文件應用程式的必要步驟。 就地啟動帶給容器和伺服器的一項挑戰 (元件) 的應用程式。 使用者會保留在同一個框架視窗 (在容器文件的內容),但實際上正在執行另一個應用程式 (伺服器)。 這需要資源的容器和伺服應用程式間的協調。
本文所涵蓋的主題包括:
功能表配置
工具列和狀態列
功能表配置
第一步是協調功能表的配置。 如需詳細資訊,請參閱功能表建立一節中功能表程式設計考量在Windows SDK。
容器應用程式應該建立新的功能表,以內嵌的項目就地啟動時,才使用。 最起碼,此功能表應該包含下列命令,列出的順序:
檔案開啟時所用相同的檔案] 功能表。 (通常是其他功能表項目會放在下一個項目之前)。
兩個連續的分隔符號。
檔案開啟時所用相同的視窗] 功能表 (只有當容器應用程式在 MDI 應用程式中的)。 某些應用程式可能有其他功能表,例如 [選項] 功能表中,屬於此群組,而不用在功能表上,當內嵌項目就地啟動。
注意事項
可能有其他會影響到容器文件,例如 [縮放檢視的功能表。這些容器功能表會出現在這個功能表資源中的二個分隔符號之間。
伺服器 (元件) 應用程式也應該建立一個新的功能表,特別為就地啟動。 它應該是像檔案開啟時所使用的功能表,但不使用功能表項目,例如檔案和管理伺服器文件,而非資料的視窗。 一般而言,此功能表包含下列任一動作:
編輯] 功能表來開啟檔案時所使用的那一個完全相同。
分隔字元。
物件編輯功能表,例如在 Scribble 範例應用程式中的 [畫筆] 功能表。
分隔字元。
[說明] 功能表。
如需範例,請查看的容器和伺服的某些範例就地功能表配置。 若要讓範例更清楚地查看已移除的每個功能表項目詳細資料。 容器的就地功能表包含下列項目:
IDR_CONTAINERTYPE_CNTR_IP MENU PRELOAD DISCARDABLE
BEGIN
POPUP "&File C1"
MENUITEM SEPARATOR
POPUP "&Zoom C2"
MENUITEM SEPARATOR
POPUP "&Options C3"
POPUP "&Window C3"
END
連續的分隔符號指示該伺服程式功能表的第一個部份應該在哪裡。 現在請看一下該伺服程式就地功能表:
IDR_SERVERTYPE_SRVR_IP MENU PRELOAD DISCARDABLE
BEGIN
POPUP "&Edit S1"
MENUITEM SEPARATOR
POPUP "&Format S2"
MENUITEM SEPARATOR
POPUP "&Help S3"
END
此處的分隔符號指示第二組的容器功能表項目應該在哪裡。 產生的功能表結構時,在這個容器內就地啟動這台伺服器中的物件,如下所示:
BEGIN
POPUP "&File C1"
POPUP "&Edit S1"
POPUP "&Zoom C2"
POPUP "&Format S2"
POPUP "&Options C3
POPUP "&Window C3"
POPUP "&Help S3"
END
如您所見,分隔符號已替換成不同群組的每個應用程式的功能表。
伺服應用程式時,應該也提供和就地功能表相關聯的對應鍵對應表。 容器會將它們合併到它自己的對應鍵對應表。
當就地啟動內嵌項目時,架構便會載入就地功能表。 它接著會詢問其功能表該伺服程式就地啟動,並將它分隔符號的所在。 這是如何將功能表合併。 您功能表從容器來操作檔案和視窗的位置,並讓您從伺服器取得功能表來操作項目。
工具列和狀態列
伺服器應用程式應該建立新的工具列,並將其點陣圖儲存在不同的檔案。 應用程式精靈產生應用程式會將這個點陣圖儲存在一個稱為 ITOOLBAR 的檔案。BMP。 當您的伺服器項目就會啟動的位置,及應該包含相同的項目和一般工具列,但移除圖示,它代表在 [檔案] 與 [視窗] 功能表上的項目時,新的工具列將會取代容器應用程式的工具列。
這個工具列會在載入您COleIPFrameWnd-衍生的類別,為您建立應用程式精靈。 [狀態] 列是由容器應用程式處理的。 如需有關實作就地框架視窗的詳細資訊,請參閱伺服器: 實作一個伺服程式。