ActiveX コントロールに含まれるプロパティ ページの動作について

こんにちは、Visual Studio サポートチームです。 今回は、ActiveX コントロールに含まれるプロパティ ページの動作についてご案内いたします。 ActiveX コントロールには、コントロールのプロパティ値を確認したり変更するために便利なプロパティ ページを開発者が追加することができます。 1 つの ActiveX コントロールに複数のプロパティ ページを持つことも可能ですが、このプロパティ ページの遷移や、プロパティ ページ内の変更の適用を通知するタイミングは、プロパティ シート側の動作に依存します。 Visual Studio のデザイナーにおけるプロパティ シートの動作は、Visual Studio のバージョンやデザイナーの種類によっても異なっており、プロパティ ページを切り替えた際に自動的に適用されるものや、プロパティ ページを切り替えても自動的には適用されず個別に [適用] ボタンを押下する必要があるものがあります。 例として A)  .NET Framework の Windows フォーム デザイナーの場合にはプロパティ ページの切り替えで値が適用されますが、B) MFC のダイアログ エディターの場合にはページの切り替えでは変更は反映されず、「適用」ボタンを押下する必要があります。   A)  .NET Framework の Windows フォーム デザイナーの場合 B) MFC のダイアログ エディターの場合 このようなプロパティ ページ上での値の変更が適用されるタイミングを、ActiveX コントロールの開発者が制御することはできません。このため、例えば、ページの切り替えにより変更適用のためのメソッドが呼び出されることを前提としたコントロールの設計は避けていただく必要がある点にご留意ください。 また、ActiveX コントロールのご利用者様におかれましては、プロパティ…


リソース エディター上で ActiveX コントロールのメニューが表示されない現象について

こんにちは、Visual Studio サポートチームです。 今回は、Visual C++ 6.0 では使用できていたものの、現行の Visual C++ では使用できなくなっている機能の一つについてご案内します。   リソース編集時の ActiveX コントロールのメニューについて Visual C++ 6.0 では、リソース エディターを使用したダイアログ リソースの編集時に、ダイアログに配置された ActiveX コントロールを右クリックすることで、コンテキスト メニューに対応する Verb 表示することが可能となっていました。また、同様の機能は、現行バージョンの Visual Studio における .NET Framework アプリケーションの Windows Form のデザイン画面でも利用可能です。 しかしながら、現行バージョンの Visual C++ のリソース エディターではこの機能が廃止されており、ActiveX コントロール側で適切に EnumVerbs メソッドを実装していた場合であっても、メニューに表示することができなくなっています。このため、編集時に利用可能なメニューとして ActiveX コントロールが提供していた拡張機能などが使用できない場合があります。 この動作は、ActiveX コントロール側の実装の問題などではなく、Visual C++ における機能の廃止に起因しています。また、現在のところ リソース エディターで本機能が改めて提供される予定はありません。 Visual C++ 6.0 で本機能を利用されていたご利用者様や ActiveX…


Visual Studio 2015 / 2017 で発生する可能性がある _snscanf_s 関数の問題について

こんにちは、Visual Studio サポート チームです。 今回は、Visual Studio 2015 / 2017 で発生する可能性がある _snscanf_s 関数の問題とその影響についてご案内します。 この問題は以下のように Stack Overflow でも報告されておりましたが、この度、複数のお客様から弊社へお問い合わせをいただきましたので本ブログでもご紹介させていただきます。より多くの開発者様のお役に立てましたら幸いです。   VC2015で、double変数ddx_textのトラブル https://ja.stackoverflow.com/questions/16592/vc2015%E3%81%A7-double%E5%A4%89%E6%95%B0ddx-text%E3%81%AE%E3%83%88%E3%83%A9%E3%83%96%E3%83%AB   現象 _snscanf_s 関数で浮動小数点書式を指定した場合、先頭が ‘0’ で始まる場合に終端文字 ‘\0’ が正しく扱われず、_snscanf_s 関数に指定した文字数全体に対して解析が行われます。例えば、文字配列の内容が “0\02\0” であった場合、_snscanf_s 関数で期待される結果は 0 ですが、不具合により実際には 2 が返されます。 また、MFC ライブラリの DDX_Text 関数では内部で _snscanf_s 関数を使用しているため、この問題の影響を受けて、入力した値と異なる値が浮動小数点型変数に格納される可能性があります。エディット コントロールに “0” を入力した場合、文字列バッファの “0\0” 以降の値はスタックの状態によって不定となるため、DDX_Text 関数で変数に格納される値も不定となります。   原因 Visual Studio 2015 以降で利用されている新しい C ランタイム…


Windows 10 Anniversary Update 以前の OS 上で、Visual Studio 2017 を使用して .NET Framework 4.7 アプリケーションを開発する方法について

こんにちは、 Visual Studio サポート チームです。 今回は、Windows 10 Anniversary Update 以前の OS 上で、Visual Studio 2017 を使用して .NET Framework 4.7 アプリケーションを開発する方法をご紹介します。   背景 Windows 10 Creators Update (バージョン 1703) 上で Visual Studio 2017 を使用すると、特定のパッケージなどをインストールしなくても、.NET Framework 4.7 アプリケーションを開発することが可能です。これは、Windows 10 Creators Update  には .NET Framework 4.7 が同梱されているためです。 一方、Windows 10 Anniversary Update (バージョン 1607) 以前の OS には .NET Framework 4.7…


Visual Studio 2017 で Visual C++ ”14” ランタイム ライブラリをインストーラーに含めた場合に発生する問題について (2)

こんにちは、Visual Studio サポート チームです。 今回は、先日ご案内した以下の記事に関連して、新しいバージョンのVisual C++ ランタイム ライブラリをご利用される際に発生する可能性がある問題とその対処方法をご案内いたします。   Visual Studio 2017 で Visual C++ “14” ランタイム ライブラリをインストーラーに含めた場合に発生する問題について https://blogs.msdn.microsoft.com/jpvsblog/2017/06/22/vs2017-vc14-installer/   現象 作成したパッケージに含まれる Visual C++ “14” ランタイム ライブラリよりも、さらに新しいバージョンの Visual C++ “14” ランタイム ライブラリが既にインストールされているにもかかわらず、インストーラーの実行時にランタイム ライブラリのインストールが求められる。   原因 Visual C++ ランタイム ライブラリ用の Product.xml では、対象の製品がインストールされているかどうかの検証に Product Code を使用します。 この検証では、対象の Product Code の製品がインストールされているかどうかを調べますが、Visual C++ ランタイム ライブラリはアップデートごとに新しい Product Code を採番しているため、インストール対象のランタイム ライブラリよりも新しいバージョンのライブラリが既にインストールされていたとしても、それらは検出されないため、ライブラリのインストールが必要と判断される動作となります。…


Visual Studio 2017 で Visual C++ “14” ランタイム ライブラリをインストーラーに含めた場合に発生する問題について

こんにちは、Visual Studio サポート チームです。 今回は Microsoft Visual Studio 2017 に含まれる Visual C++ “14” ランタイム ライブラリを必須コンポーネントに含めてインストーラーを作成する場合に発生する可能性がある問題と対処方法をご案内いたします。 <2017 年 7 月 4 日追記> Product.xml に指定する Product 属性の内容につきましては、Visual Studio 2017 RTMに対する値でのご案内となっております。 ダウンロード ページから入手していただける最新の Visual C++ 2017 Redistributable のバージョンに対する Product 属性の値につきましては、現在正しい値を確認中です。 確認の結果が得られ次第この記事にてご案内いたしますので、大変恐れ入りますが今しばらくお待ちください。 <2017 年 7 月11 日修正> Visual C++ “14” ランタイム ライブラリのインストーラーの入手先に関する記述を修正しました。   現象 a) [アプリケーションと同じ場所から必須コンポーネントをダウンロードする] を指定して Visual C++…


Visual Studio 2012 以降のバージョンにおけるセットアップ プロジェクトについて

こんにちは、Visual Studio サポート チームです。 今回は Visual Studio 2012 以降のバージョンにおけるセットアップ プロジェクトの扱いと、セットアップ プロジェクトの作成にご利用いただける拡張機能についてご案内します。   Visual Studio を使用して Windows インストーラー形式のインストーラー パッケージを開発する方法として、Visual Studio 2010 以前のバージョンではセットアップ プロジェクトが用意されていましたが、Visual Studio 2012 以降ではセットアップ プロジェクトは提供されておらず、多くのお客様では InstallShield などのサードパーティ製品をご利用いただいています。 しかしながら、従来のようにセットアップ プロジェクトを開発されたいというお客様からのご要望も多いことから、Visual Studio 2013 以降を対象として、Visual Studio 2010 以前のセットアップ プロジェクトと同等の機能を提供する Visual Studio 拡張機能が以下のとおり公開されています。   Microsoft Visual Studio 2013 Installer Projects https://marketplace.visualstudio.com/items?itemName=UnniRavindranathan-MSFT.MicrosoftVisualStudio2013InstallerProjects Microsoft Visual Studio 2015 Installer Projects https://marketplace.visualstudio.com/items?itemName=VisualStudioProductTeam.MicrosoftVisualStudio2015InstallerProjects…


Visual Studio 2008 で作成したプロジェクトを変換すると MSB4211 の警告が表示される

こんにちは、Visual Studio サポートチームです。 今回は Visual Studio 2008 で作成した Visual C++ のプロジェクトを、Visual Studio 2010、2012、および 2013 のプロジェクトに変換した場合に、MSB4211 の警告が表示される現象についてご案内します。 なお、この問題は Visual Studio 2015 以降では修正されています。   現象 Visual Studio 2008 で作成したプロジェクトを、Visual Studio 2010、2012、および 2013 のプロジェクトに変換した場合に、以下の警告が表示される場合があります。   警告メッセージ例 ——————————– Sample.vcproj: MSB4211: C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets (87,5); プロパティ “TargetPlatformVersion” は初めて値に設定されますが、これは “C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120Microsoft.Cpp.Common.props(103,5)” で既に使用されています。 ——————————– ※ TargetPlatformVersion のマクロ名はプロジェクトにより異なるものが表示されます。   原因 本警告は Visual…


Visual Studio 2010 Service Pack 1 の入手方法について

こんにちは、Visual Studio サポートチームです。 今回は Visual Studio 2010  Service Pack 1 の入手方法についてご案内します。 Visual Studio 2010  Service Pack 1 のダウンロード センターからの公開は既に終了しています。Windows Update から入手することも可能ですが、オフライン環境に適用する必要がある場合などには、以下の方法で ISO ファイルを入手することもできます。 ISO ファイルの入手方法   A) MSDN サブスクリプションをお持ちの場合 1. MSND サブスクリプションのダウンロード ページにサインインします。   https://msdn.microsoft.com/ja-jp/subscriptions/downloads/   2. 「Visual Studio 2010 Service Pack」などのキーワードで検索し、「Visual Studio 2010 Service Pack 1 (x86) – DVD (Multiple Languages)」 をダウンロードします。    …


Visual Studio 2017 のインストール後に Visual Studio SDK の COM 参照でエラーとなる現象について

こんにちは、Visual Studio サポート チームです。 今回は Visual Studio 2017 のインストール後に、Visual Studio SDK のコンポーネントを COM 参照している Visual Studio アドイン プロジェクトや Visual Studio 拡張機能プロジェクトにおいて、参照エラーが発生する現象と対処方法についてご案内します。 なお、本現象は Visual Studio アドイン プロジェクトや Visual Studio 拡張機能プロジェクトの開発時に発生する可能性のある問題ですが、ビルド済みの既存のアドインや拡張機能をご利用いただく際に問題が生じることはありませんので、この点はご安心ください。   現象 Visual Studio 2017 のインストール後、以前のバージョンの Visual Studio 拡張機能のプロジェクトなどで、Visual Studio SDK のコンポーネントを COM 参照している場合に、下図のような参照エラーが発生します。   Visual Studio 2017 インストール前 Visual Studio 2017 インストール後   また、ビルド時に次のようなエラー メッセージが出力されます。…