掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ActiveXのピクチャプロパティを変更するには? (ID:64275)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
WindowsXP Pro SP2 VC++.NET 2003 MFC でActiveXを作成しました。 <CxxxCtrlクラス> (xxx.h) protected: CPictureHolder m_pic; protected: IPictureDisp* GetPicture(void); void SetPicture(IPictureDisp* pVal); (xxx.cpp) #include <msstkppg.h>・・・追加 カスタムプロパティ(Picture)をクラスウィザードで追加 BEGIN_DISPATCH_MAP(CxxxCtrl, COleControl) DISP_FUNCTION_ID(CxxxCtrl, "AboutBox", DISPID_ABOUTBOX, AboutBox, VT_EMPTY, VTS_NONE) DISP_PROPERTY_EX_ID(CxxxCtrl, "Picture", dispidPicture, GetPicture, SetPicture, VT_PICTURE) END_DISPATCH_MAP() void CxxxCtrl::DoPropExchange(CPropExchange* pPX) { ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wVerMajor)); COleControl::DoPropExchange(pPX); PX_Picture(pPX, "Picture", m_pic); } BEGIN_PROPPAGEIDS(CxxxCtrl, 4) PROPPAGEID(CxxxPropPage::guid) PROPPAGEID(CLSID_StockColorPage) PROPPAGEID(CLSID_StockFontPage) PROPPAGEID(CLSID_StockPicturePage) END_PROPPAGEIDS(CxxxCtrl) void CxxxCtrl::OnResetState() { COleControl::OnResetState(); m_pic.CreateEmpty(); } IPictureDisp* CxxxCtrl::GetPicture(void) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); return m_pic.GetPictureDispatch(); } void CxxxCtrl::SetPicture(IPictureDisp* pVal) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); m_pic.SetPictureDispatch(pVal); InvalidateControl(); SetModifiedFlag(); } void CxxxCtrl::OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid) { m_pic.Render(pdc, rcBounds, rcBounds); } という単純なものです。 ActiveXコントロールテストコンテナではプロパティページのピクチャページ でピクチャを変更すると表示も変わります。 ただ、別のプロジェクトのダイアログに挿入し、デザインでピクチャを選択し、 コンパイルをすると正常に選択したピクチャが表示されるのですが、 一度、デザイン画面に戻り、ピクチャを変更した場合、 デザイン画面上は選択したピクチャが表示されるのですが、コンパイル、実行 すると前のピクチャが表示されます。 原因がわからなくて困っています。 よろしくご指導お願い致します。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.