GetPropSample() SetPropSample()
m_PropSample
PX_Long(pPX, _T("PropSample"), m_PropSample, 0);
[id(0), helstring("Sampleプロパティ")]
[id(0), nonbrowsable]
http://support.microsoft.com/kb/191872/ja
CLSID_CColorPropPage | カラー | OLE_COLOR |
CLSID_CFontPropPage | フォント | LPPICTUREDISP? |
CLSID_CPicturePropPage | ピクチャ | LPFONTDISP? |
コントロールのウィンドウスタイル(および拡張スタイルなど)の設定は、COleControl::PreCreateWindow()をオーバーライドして記述する。
あとは、スタイルを変更したいタイミングでCOleControl::RecreateControlWindow()をコールすることでPreCreateWindow()を経てコントロールが再生成される。
VS付属のテストコンテナではできないので、自分でテストコンテナのプロジェクトをダイアログなどで作っておき、コンポーネントを貼っておく。
コンポーネント側のプロジェクトで、デバッグ用のexeをVCにし、引数にテストコンテナを渡すことで、デバッグで起動できる。
C:\Program Files\Microsoft Visual Studio\COMMON\MSDev98\Bin\MSDEV.EXE (起動引数) "C:\Current\TMP\CWork\tester\tester.dsw"
自動的に生成されたプロパティやメソッドに関するコードは記述される順番が重要な場合が多い。
特にディスパッチID関係は最重要。ここがおかしいと、プロパティページで編集した項目と違う項目の値が変わったりする。
※そもそもIDの順番は並び替えない方がよいが。。
以下の処理が必要となる。
(ほとんどはプロジェクト作成時のウィザードでサブクラス化を指定することで自動生成される。)
参考:MFC ActiveX コントロール : Windows コントロールのサブクラス化
上記の内、1と3に関しては必要な定義と実装が全てウィザードによって行われるため、何も変更する必要はない。
2に関しては、必要に応じてスタイルの設定処理を追加することができる。
4に関しては、OCM_COMMANDメッセージのハンドラのみ自動的に作成される。(WM_COMMANDに対応)
しかし、その他に必要なハンドラがある場合は適宜追加する必要がある。例えば、ツリービューコントロールをサブクラス化している場合のOCM_NOTIFYメッセージのハンドラなど。(WM_NOTIFYに対応)
→クラスウィザードによる追加はできない?手書きで追加するしかないのか?
ActiveXコントロールのプロジェクト作成時の設定で、ランタイムライセンスにチェックをつける。
そうすることで、プロジェクトが以下のようにライセンスファイルを扱う設定となる。
→プロジェクトの設定と、ツリー上のxxx.licファイルのプロパティ
この設定は、ビルド時に自動的にocxと同フォルダにlicファイルをコピーするためだけなので、
別になくてもよい?
[CXxxCtrl.cpp / CXxxCtrl.h] (グローバル変数) _szLicFileName[]:ライセンスファイル名 _szLicString[] :ライセンスキー文字列 (メンバ関数) CXxxCtrl::CXxxCtrlFactory::VerifyUserLicence():ライセンスチェック関数 CXxxCtrl::CXxxCtrlFactory::GetLicenceKey() :ライセンスキー取得 ※また、CXxxCtrl::CXxxCtrlFactory::VerifyLicence()をオーバライドすることで、 ライセンスチェック方法を変更できるらしい。
また、以下の点に注意する必要がある。