[ACPPAGE] Convert CLayerUIPropPage to use CPropertyPageImpl
[reactos.git] / dll / shellext / acppage / CLayerUIPropPage.hpp
index 8b9cce8..ac4886d 100644 (file)
@@ -6,6 +6,7 @@
  */
 
 class CLayerUIPropPage :
+    public CPropertyPageImpl<CLayerUIPropPage>,
     public CComCoClass<CLayerUIPropPage, &CLSID_CLayerUIPropPage>,
     public CComObjectRootEx<CComMultiThreadModelNoCS>,
     public IShellExtInit,
@@ -20,26 +21,45 @@ public:
 
 
     // IShellPropSheetExt
-    STDMETHODIMP AddPages(LPFNADDPROPSHEETPAGE pfnAddPage, LPARAM lParam);
+    STDMETHODIMP AddPages(LPFNADDPROPSHEETPAGE pfnAddPage, LPARAM lParam)
+    {
+        HPROPSHEETPAGE hPage = Create();
+        if (hPage && !pfnAddPage(hPage, lParam))
+            DestroyPropertySheetPage(hPage);
+
+        return S_OK;
+    }
+
     STDMETHODIMP ReplacePage(UINT, LPFNADDPROPSHEETPAGE, LPARAM)
     {
         return E_NOTIMPL;
     }
 
+    VOID OnPageAddRef()
+    {
+        InterlockedIncrement(&g_ModuleRefCnt);
+    }
+
+    VOID OnPageRelease()
+    {
+        InterlockedDecrement(&g_ModuleRefCnt);
+    }
+
     HRESULT InitFile(PCWSTR Filename);
-    INT_PTR InitDialog(HWND hWnd);
-    INT_PTR OnCommand(HWND hWnd, WORD id);
-    void UpdateControls(HWND hWnd);
-    INT_PTR DisableControls(HWND hWnd);
+    void UpdateControls();
+    INT_PTR DisableControls();
     BOOL HasChanges() const;
 
-    void OnRefresh(HWND hWnd);
-    void OnApply(HWND hWnd);
+    int OnSetActive();
+    int OnApply();
+    LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
+    LRESULT OnCtrlCommand(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled);
+    LRESULT OnEditModes(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled);
+    LRESULT OnClickNotify(INT uCode, LPNMHDR hdr, BOOL& bHandled);
 
     static INT_PTR CALLBACK PropDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
     static INT_PTR CALLBACK EditModesProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
 
-
 protected:
     CString m_Filename;
     BOOL m_IsSfcProtected;
@@ -50,6 +70,17 @@ protected:
     CSimpleArray<CString> m_RegistryCustomLayers, m_CustomLayers;
 
 public:
+    enum { IDD = IDD_ACPPAGESHEET };
+
+    BEGIN_MSG_MAP(CLayerUIPropPage)
+        MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
+        COMMAND_RANGE_HANDLER(IDC_CHKRUNCOMPATIBILITY, IDC_CHKDISABLEVISUALTHEMES, OnCtrlCommand)
+        COMMAND_ID_HANDLER(IDC_EDITCOMPATIBILITYMODES, OnEditModes)
+        NOTIFY_CODE_HANDLER(NM_CLICK, OnClickNotify)
+        NOTIFY_CODE_HANDLER(NM_RETURN, OnClickNotify)
+        CHAIN_MSG_MAP(CPropertyPageImpl<CLayerUIPropPage>)
+    END_MSG_MAP()
+
     DECLARE_REGISTRY_RESOURCEID(IDR_ACPPAGE)
     DECLARE_NOT_AGGREGATABLE(CLayerUIPropPage)