atldemoprop.h

来自「VC.net 的一些有用的技巧」· C头文件 代码 · 共 81 行

H
81
字号
// ATLDemoProp.h : CATLDemoProp 的声明


#pragma once

#include "resource.h"       // 主符号
#include "ATLDemo.h"

// CATLDemoProp

class ATL_NO_VTABLE CATLDemoProp :
	public CComObjectRootEx<CComSingleThreadModel>,
	public CComCoClass<CATLDemoProp, &CLSID_ATLDemoProp>,
	public IPropertyPageImpl<CATLDemoProp>,
	public CDialogImpl<CATLDemoProp>
{
public:
	CATLDemoProp() 
	{
		m_dwTitleID = IDS_TITLEATLDemoProp;
		m_dwHelpFileID = IDS_HELPFILEATLDemoProp;
		m_dwDocStringID = IDS_DOCSTRINGATLDemoProp;
	}

	DECLARE_PROTECT_FINAL_CONSTRUCT()

	HRESULT FinalConstruct()
	{
		return S_OK;
	}
	
	void FinalRelease() 
	{
	}

	enum {IDD = IDD_ATLDEMOPROP};

DECLARE_REGISTRY_RESOURCEID(IDR_ATLDEMOPROP)


BEGIN_COM_MAP(CATLDemoProp) 
	COM_INTERFACE_ENTRY(IPropertyPage)
END_COM_MAP()

BEGIN_MSG_MAP(CATLDemoProp)
	COMMAND_HANDLER(IDC_SIDES, EN_CHANGE, OnEnChangeSides)
	CHAIN_MSG_MAP(IPropertyPageImpl<CATLDemoProp>)
END_MSG_MAP()

// Handler prototypes:
//  LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
//  LRESULT CommandHandler(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
//  LRESULT NotifyHandler(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);

	STDMETHOD(Apply)(void)
	{
		USES_CONVERSION;
		ATLTRACE(_T("CATLDemoProp::Apply\n"));
		for (UINT i = 0; i < m_nObjects; i++)
		{
			CComQIPtr<IMyATLCtrl, &IID_IMyATLCtrl> pPoly(m_ppUnk[i]);
			short nSides = (short)GetDlgItemInt(IDC_SIDES);
			if FAILED(pPoly->put_Sides(nSides))
			{
				CComPtr<IErrorInfo> pError;
				CComBSTR strError;
				GetErrorInfo(0, &pError);
				pError->GetDescription(&strError);
				MessageBox(OLE2T(strError), _T("Error"), MB_ICONEXCLAMATION);
				return E_FAIL;
			}
		}
		m_bDirty = FALSE;
		return S_OK;
	}
	LRESULT OnEnChangeSides(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
};


OBJECT_ENTRY_AUTO(__uuidof(ATLDemoProp), CATLDemoProp)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?