POLYPROP.H
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:2k
源码类别:

Windows编程

开发平台:

Visual C++

  1. // PolyProp.h : Declaration of the CPolyProp
  2. #ifndef __POLYPROP_H_
  3. #define __POLYPROP_H_
  4. #include "Polygon.h"        // definition of IPolyCtl
  5. #include "resource.h"       // main symbols
  6. EXTERN_C const CLSID CLSID_PolyProp;
  7. /////////////////////////////////////////////////////////////////////////////
  8. // CPolyProp
  9. class ATL_NO_VTABLE CPolyProp :
  10. public CComObjectRootEx<CComSingleThreadModel>,
  11. public CComCoClass<CPolyProp, &CLSID_PolyProp>,
  12. public IPropertyPageImpl<CPolyProp>,
  13. public CDialogImpl<CPolyProp>
  14. {
  15. public:
  16. CPolyProp()
  17. {
  18. m_dwTitleID = IDS_TITLEPolyProp;
  19. m_dwHelpFileID = IDS_HELPFILEPolyProp;
  20. m_dwDocStringID = IDS_DOCSTRINGPolyProp;
  21. }
  22. enum {IDD = IDD_POLYPROP};
  23. DECLARE_REGISTRY_RESOURCEID(IDR_POLYPROP)
  24. BEGIN_COM_MAP(CPolyProp)
  25. COM_INTERFACE_ENTRY(IPropertyPage)
  26. END_COM_MAP()
  27. BEGIN_MSG_MAP(CPolyProp)
  28. COMMAND_HANDLER(IDC_SIDES, EN_CHANGE, OnChangeSides)
  29. CHAIN_MSG_MAP(IPropertyPageImpl<CPolyProp>)
  30. END_MSG_MAP()
  31. // Handler prototypes:
  32. //  LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  33. //  LRESULT CommandHandler(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
  34. //  LRESULT NotifyHandler(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
  35. STDMETHOD(Apply)(void)
  36. {
  37. USES_CONVERSION;
  38. ATLTRACE(_T("CPolyProp::Applyn"));
  39. for (UINT i = 0; i < m_nObjects; i++)
  40. {
  41. CComQIPtr<IPolyCtl, &IID_IPolyCtl> pPoly(m_ppUnk[i]);
  42. short nSides = (short)GetDlgItemInt(IDC_SIDES);
  43. if FAILED(pPoly->put_Sides(nSides))
  44. {
  45. CComPtr<IErrorInfo> pError;
  46. CComBSTR         strError;
  47. GetErrorInfo(0, &pError);
  48. pError->GetDescription(&strError);
  49. MessageBox(OLE2T(strError), _T("Error"), MB_ICONEXCLAMATION);
  50. return E_FAIL;
  51. }
  52. }
  53. m_bDirty = FALSE;
  54. return S_OK;
  55. }
  56. LRESULT OnChangeSides(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
  57. {
  58. SetDirty(TRUE);
  59. return 0;
  60. }
  61. };
  62. #endif //__POLYPROP_H_