質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
MFC

MFC (Microsoft Fouondation Class)とは、MicrosoftがVC++用に開発したWindows用アプリケーションのフレームワークです。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

1回答

1235閲覧

VS2017(15.7.4) C++ MFC ActiveX コントロールのプロパティ追加ウィザードがエラーになって追加できない

y42

総合スコア6

MFC

MFC (Microsoft Fouondation Class)とは、MicrosoftがVC++用に開発したWindows用アプリケーションのフレームワークです。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2018/07/03 20:52

新規作成ー>プロジェクトー>MFC ActiveXコントロール
で名前も場所もそのままで OKをクリック

続いて出てくる「名前」のページもデフォルトのまま次へ
次の「設定」ページもデフォルトのまま完了

クラスビューで
MFCAvtiveXContorol5
MFCAvtiveXContorol5Lib
_DMFCAvtiveXContorol5・・これを右クリックして「追加」ー>「プロパティの追加」

をやると、エラーダイアログが出ます


このページのスクリプトでエラーが発生しました。
ライン:1916
文字:9
エラー:未定義またはNULL参照のプロパティ'search'は取得できません
コード:0
URL:file:///C:/Program%20Files%20(x86)/Microsoft%20Visual%20Studio/2017/Professional/Common7/IDE/VC/VCWizards/1041/Common.js

このページのスクリプトを実行し続けますか?


該当ファイル(Common.js)の該当行は throw e; となっていて
その前の

if (-1 != oInterface.DeclarationText.search("dispinterface " + oInterface.Name))

がエラーになっているようなのですが、ここでエラーが出たと言われても困ります

以下のページによると15.8で直るようなのですが
https://developercommunity.visualstudio.com/content/problem/266857/not-able-to-add-properties-via-wizard-for-activex.html

ウィザード無しでの追加は、どこから手を付けていいか見当がつきません

何かいい方法は無いでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

クラスビューで
MFCAvtiveXContorol5
MFCAvtiveXContorol5Lib
_DMFCAvtiveXContorol5・・これを右クリックして「追加」ー>「プロパティの追加」

を直接ソースでやるとしたら、下記を追加してください。
BSTR型のプロパティtestを追加した場合

  • MFCActiveXControl5.idl

IDL

1dispinterface _DMFCActiveXControl5Events 2{ 3 properties: 4 [id(1)] BSTR test; // <- 追加 5 6 methods: 7};
  • MFCActiveXControl5Ctrl.h

C++

1// ディスパッチ と イベント ID 2public: 3 enum { 4 dispidtest = 1 // <- 追加 5 }; 6// 追加ここから 7protected: 8 void OntestChanged(); 9 CString m_test; 10// 追加ここまで 11
  • MFCActiveXControl5Ctrl.cp

C++

1// ディスパッチ マップ 2 3BEGIN_DISPATCH_MAP(CMFCActiveXControl1Ctrl, COleControl) 4 DISP_FUNCTION_ID(CMFCActiveXControl1Ctrl, "AboutBox", DISPID_ABOUTBOX, AboutBox, VT_EMPTY, VTS_NONE) 5 // 以下を追加 6 DISP_PROPERTY_NOTIFY_ID(CMFCActiveXControl1Ctrl, "test", dispidtest, m_test, OntestChanged, VTS_BSTR) 7END_DISPATCH_MAP() 8 91011// CMFCActiveXControl1Ctrl メッセージ ハンドラー 12// 追加ここから 13void CMFCActiveXControl1Ctrl::OntestChanged() 14{ 15 AFX_MANAGE_STATE(AfxGetStaticModuleState()); 16 17 // TODO: ここにプロパティ ハンドラー コードを追加します 18 19 SetModifiedFlag(); 20} 21// 追加ここまで 22

投稿2020/05/01 13:29

KoichiSugiyama

総合スコア3041

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問