技術資料/ActiveX
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#contents
*全般 [#ge5db1c2]
**プロパティ追加 [#q20c02b5]
+クラスビューの_DXxxでプロパティ追加(取得/設定メソッド)
GetPropSample()
SetPropSample()
+クラスビューのCXxxCtrlにプロパティ保持用のメンバ変数をpr...
m_PropSample
+自動生成されたSet/Getメソッドを実装
+必要があれば、プロパティページを実装(コンテナ側の"Gener...
+デザイン時に表示するプロパティなら、CXxxCtrl::DoPropExch...
PX_Long(pPX, _T("PropSample"), m_PropSample, 0);
+必要があれば、odl(idl)ファイルのプロパティのIDのところに...
[id(0), helstring("Sampleプロパティ")]
+デザイン時に表示したくないプロパティは、nonbrowsable属性...
[id(0), nonbrowsable]
+実行時に呼び出されたくないプロパティは、restrictedをつけ...
+列挙体のプロパティは、整数型で定義しておき、idl/odlファ...
~http://support.microsoft.com/kb/191872/ja
**メソッド追加 [#idb82fe7]
+クラスビューの_DXxxでメソッド追加
-省略可能引数は、C++の仕様と異なる。Variant型の値として引...
-オーバロードや可変個引数は定義できない。
-引数付きコンストラクタも実装できない。
-配列はどう渡す?
-実行時に呼び出されたくないメソッドは、restrictedをつける?
**プロパティページ追加 [#f1bd769c]
+ダイアログリソースを追加する(IDD_PROPPAGE_XXXをテンプレ...
+ダイアログのクラスを追加する。COlePropPageクラスを継承す...
+ストリングテーブルで、新しいプロパティページの識別名とキ...
+それぞれ、以下の場所を書き換える。~
UpdateRegistry()の処理~
既定クラスCOlePropertyPageのコンストラクタ呼出(メンバ初...
+ActiveXコントロールのプロパティとの関連付け~
クラスウィザードでコントロールに対応する変数を追加する際...
チェックボックスならBOOL型プロパティなど、制約はある。~
→コントロール変数の場合は?~
+コントロールのプロパティにOLE_COLORなどのOLE専用の変数を...
|CLSID_CColorPropPage|カラー|OLE_COLOR|
|CLSID_CFontPropPage|フォント|LPPICTUREDISP?|
|CLSID_CPicturePropPage|ピクチャ|LPFONTDISP?|
**コントロールのスタイルの動的変更 [#pf25c7fd]
コントロールのウィンドウスタイル(および拡張スタイルなど...
あとは、スタイルを変更したいタイミングでCOleControl::Recr...
**デザイン時の処理 [#ld22175d]
-デバッグ
~VS付属のテストコンテナではできないので、自分でテストコン...
~コンポーネント側のプロジェクトで、デバッグ用のexeをVCに...
C:\Program Files\Microsoft Visual Studio\COMMON\MSDev98\...
(起動引数) "C:\Current\TMP\CWork\tester\tester.dsw"
-COleControl::AmbientUserMode()でデザイン時か実行時か知る...
-デザイン時の描画更新をしようとしてInvalidateRect()呼ぶと...
-コントロールのビットマップは、左下のピクセルを透過色と見...
-実行時に非表示のOCXなどサイズを変更されたくない場合は、C...
*その他 [#g9fb2eb0]
**プロパティやメソッドの順番を入れ替えた場合 [#mb7848f2]
自動的に生成されたプロパティやメソッドに関するコードは記...
~特にディスパッチID関係は最重要。ここがおかしいと、プロパ...
~※そもそもIDの順番は並び替えない方がよいが。。
**Windowsコントロールをサブクラス化する場合 [#o60072c0]
以下の処理が必要となる。~
(ほとんどはプロジェクト作成時のウィザードでサブクラス化...
参考:[[MFC ActiveX コントロール : Windows コントロールの...
+COleControl::IsSubclassedControl()のオーバーライド。~
コントロールがサブクラス化されている場合はTRUEを返す。
+COleControl::PreCreateWindow()のオーバーライド。~
コントロールのスタイルの詳細設定。
+OnDraw()内のDoSuperclassPaint()の呼び出し。~
コントロール外観の描画を、基底のウィンドウクラスに任せる。
+返送されたWindowメッセージを処理するメンバ関数の用意と実...
対応するイベントハンドラを実装する。
上記の内、1と3に関しては必要な定義と実装が全てウィザード...
2に関しては、必要に応じてスタイルの設定処理を追加すること...
~
4に関しては、OCM_COMMANDメッセージのハンドラのみ自動的に...
しかし、その他に必要なハンドラがある場合は適宜追加する必...
&font(#ff0000){→クラスウィザードによる追加はできない?手...
**ライセンス [#v64e7c71]
ActiveXコントロールのプロジェクト作成時の設定で、ランタイ...
~そうすることで、プロジェクトが以下のようにライセンスファ...
-xxx.licファイルのテンプレートが作成され、プロジェクトに...
-ビルド時に自動的にコピーされるようにカスタムビルド設定が...
~→プロジェクトの設定と、ツリー上のxxx.licファイルのプロパ...
~この設定は、ビルド時に自動的にocxと同フォルダにlicファイ...
~別になくてもよい?
-以下のライセンスチェック用コードが追加される。
[CXxxCtrl.cpp / CXxxCtrl.h]
(グローバル変数)
_szLicFileName[]:ライセンスファイル名
_szLicString[] :ライセンスキー文字列
(メンバ関数)
CXxxCtrl::CXxxCtrlFactory::VerifyUserLicence():ライセ...
CXxxCtrl::CXxxCtrlFactory::GetLicenceKey() :ライセ...
※また、CXxxCtrl::CXxxCtrlFactory::VerifyLicence()をオ...
ライセンスチェック方法を変更できるらしい。
また、以下の点に注意する必要がある。
-ライセンスファイルは、登録したOCX(DLL)と同フォルダに置く...
-ライセンスチェックに失敗すると、開発環境でコントロールと...
-ライセンスファイルが無くても、既にそのコントロールを使用...
終了行:
#contents
*全般 [#ge5db1c2]
**プロパティ追加 [#q20c02b5]
+クラスビューの_DXxxでプロパティ追加(取得/設定メソッド)
GetPropSample()
SetPropSample()
+クラスビューのCXxxCtrlにプロパティ保持用のメンバ変数をpr...
m_PropSample
+自動生成されたSet/Getメソッドを実装
+必要があれば、プロパティページを実装(コンテナ側の"Gener...
+デザイン時に表示するプロパティなら、CXxxCtrl::DoPropExch...
PX_Long(pPX, _T("PropSample"), m_PropSample, 0);
+必要があれば、odl(idl)ファイルのプロパティのIDのところに...
[id(0), helstring("Sampleプロパティ")]
+デザイン時に表示したくないプロパティは、nonbrowsable属性...
[id(0), nonbrowsable]
+実行時に呼び出されたくないプロパティは、restrictedをつけ...
+列挙体のプロパティは、整数型で定義しておき、idl/odlファ...
~http://support.microsoft.com/kb/191872/ja
**メソッド追加 [#idb82fe7]
+クラスビューの_DXxxでメソッド追加
-省略可能引数は、C++の仕様と異なる。Variant型の値として引...
-オーバロードや可変個引数は定義できない。
-引数付きコンストラクタも実装できない。
-配列はどう渡す?
-実行時に呼び出されたくないメソッドは、restrictedをつける?
**プロパティページ追加 [#f1bd769c]
+ダイアログリソースを追加する(IDD_PROPPAGE_XXXをテンプレ...
+ダイアログのクラスを追加する。COlePropPageクラスを継承す...
+ストリングテーブルで、新しいプロパティページの識別名とキ...
+それぞれ、以下の場所を書き換える。~
UpdateRegistry()の処理~
既定クラスCOlePropertyPageのコンストラクタ呼出(メンバ初...
+ActiveXコントロールのプロパティとの関連付け~
クラスウィザードでコントロールに対応する変数を追加する際...
チェックボックスならBOOL型プロパティなど、制約はある。~
→コントロール変数の場合は?~
+コントロールのプロパティにOLE_COLORなどのOLE専用の変数を...
|CLSID_CColorPropPage|カラー|OLE_COLOR|
|CLSID_CFontPropPage|フォント|LPPICTUREDISP?|
|CLSID_CPicturePropPage|ピクチャ|LPFONTDISP?|
**コントロールのスタイルの動的変更 [#pf25c7fd]
コントロールのウィンドウスタイル(および拡張スタイルなど...
あとは、スタイルを変更したいタイミングでCOleControl::Recr...
**デザイン時の処理 [#ld22175d]
-デバッグ
~VS付属のテストコンテナではできないので、自分でテストコン...
~コンポーネント側のプロジェクトで、デバッグ用のexeをVCに...
C:\Program Files\Microsoft Visual Studio\COMMON\MSDev98\...
(起動引数) "C:\Current\TMP\CWork\tester\tester.dsw"
-COleControl::AmbientUserMode()でデザイン時か実行時か知る...
-デザイン時の描画更新をしようとしてInvalidateRect()呼ぶと...
-コントロールのビットマップは、左下のピクセルを透過色と見...
-実行時に非表示のOCXなどサイズを変更されたくない場合は、C...
*その他 [#g9fb2eb0]
**プロパティやメソッドの順番を入れ替えた場合 [#mb7848f2]
自動的に生成されたプロパティやメソッドに関するコードは記...
~特にディスパッチID関係は最重要。ここがおかしいと、プロパ...
~※そもそもIDの順番は並び替えない方がよいが。。
**Windowsコントロールをサブクラス化する場合 [#o60072c0]
以下の処理が必要となる。~
(ほとんどはプロジェクト作成時のウィザードでサブクラス化...
参考:[[MFC ActiveX コントロール : Windows コントロールの...
+COleControl::IsSubclassedControl()のオーバーライド。~
コントロールがサブクラス化されている場合はTRUEを返す。
+COleControl::PreCreateWindow()のオーバーライド。~
コントロールのスタイルの詳細設定。
+OnDraw()内のDoSuperclassPaint()の呼び出し。~
コントロール外観の描画を、基底のウィンドウクラスに任せる。
+返送されたWindowメッセージを処理するメンバ関数の用意と実...
対応するイベントハンドラを実装する。
上記の内、1と3に関しては必要な定義と実装が全てウィザード...
2に関しては、必要に応じてスタイルの設定処理を追加すること...
~
4に関しては、OCM_COMMANDメッセージのハンドラのみ自動的に...
しかし、その他に必要なハンドラがある場合は適宜追加する必...
&font(#ff0000){→クラスウィザードによる追加はできない?手...
**ライセンス [#v64e7c71]
ActiveXコントロールのプロジェクト作成時の設定で、ランタイ...
~そうすることで、プロジェクトが以下のようにライセンスファ...
-xxx.licファイルのテンプレートが作成され、プロジェクトに...
-ビルド時に自動的にコピーされるようにカスタムビルド設定が...
~→プロジェクトの設定と、ツリー上のxxx.licファイルのプロパ...
~この設定は、ビルド時に自動的にocxと同フォルダにlicファイ...
~別になくてもよい?
-以下のライセンスチェック用コードが追加される。
[CXxxCtrl.cpp / CXxxCtrl.h]
(グローバル変数)
_szLicFileName[]:ライセンスファイル名
_szLicString[] :ライセンスキー文字列
(メンバ関数)
CXxxCtrl::CXxxCtrlFactory::VerifyUserLicence():ライセ...
CXxxCtrl::CXxxCtrlFactory::GetLicenceKey() :ライセ...
※また、CXxxCtrl::CXxxCtrlFactory::VerifyLicence()をオ...
ライセンスチェック方法を変更できるらしい。
また、以下の点に注意する必要がある。
-ライセンスファイルは、登録したOCX(DLL)と同フォルダに置く...
-ライセンスチェックに失敗すると、開発環境でコントロールと...
-ライセンスファイルが無くても、既にそのコントロールを使用...
ページ名: