アプリが暗黙的な代入演算子でクラッシュする
Windowsアプリ開発(C++ネイティブアプリ)で以下のようなクラスを作成し、そのクラスを使用している関数を繰り返し実行していると突然アプリがクラッシュしました。 クラッシュダンプを見ると、暗黙的に作成されたと思われる代入演算子( operator= )でクラッシュしていました。 下記のコード内では、どこにも代入するコードは入っていないのに、それがなぜ、どこで呼ばれたのか分かりません。 この辺りの動作に詳しい方、アドバイスを頂けますでしょうか? よろしくお願いいたします。 Header file…
C++/CLIでコンパイルエラーC3624 の解決方法が分かりません。
Microsoft Visual Studio Community 2022 (64 ビット) - Current Version 17.11.5 .Net Framework 4.8.09037 System::Windows::Media::Imaging::BitmapImage^ bmp0; System::String^ fs1; bmp0 = gcnew System::Windows::Media::Imaging::BitmapImage(gcnew…
C++/CLI Vector3D型で定義したメンバー変数がValueTypeと認識される
Microsoft Visual Studio Community 2022 (64 ビット) - Current Version 17.11.2 .Net Framework 4.8.1 C++/CLIでマネージド型のdllを作成し、VB.netから参照しています。 <C++/CLI> public ref class TestClass { public: System::Windows::Media::Media3D::Vector3D^ Vector3D_1 = gcnew…
VB.netでのコンパイルエラー:サポートされていない戻り値の型か、またはサポートされていないパラメーター型が指定されています。
Microsoft Visual Studio Community 2022 (64 ビット) - Current Version 17.11.2 .Net Framework 4.8.1 C++/CLIでマネージド型のDLLを作成し、VB.netで参照しています。 DLLは正常にビルドできています。 <C++/CLI> public ref class testclass1 { public: int i1() {return -1;} }; public ref class…
プログラムからOneDrive/ドキュメントのフルパスを得る方法はありますか?
開発環境は Windows11/ VisualC++(MFC)です。 OSのドキュメントフォルダをOneDrive以外に変更している状態で OneDrive下のドキュメントフォルダのフルパスを得る必要が出てきました。 日本語版だと フォルダ名は "ドキュメント"、英語版は "Documents"になっていますが、それ以外の国で違っているようなので、プログラムからフルパスを得たいと考えています。 得る方法があれば教えてください。
C言語 共通ヘッダー作成に関する事
共通ヘッダー作成に関する質問 共通ヘッダー<getputch.h> #ifndef __GETPUTCH #define __GETPUTCH /* MS-Windows系 */ #if defined(_MSC_VER) || (__TURBOC__) || (LSI_C) #include <conio.h> #static void init_getputch(void) {} #static void…
ファイルダブルクリック起動のDDEに関して勉強中
データファイルをダブルクリックしたときに、 DDEを使用したアプリケーション起動、データファイルを開くを実装しており、 そのDDE通信がどのように行われているか勉強中なのですが。 下記は推測も入っています。 ・エクスプローラ側(クライアント側)は、すべてのトップレベルウィンドウに、WM_DDE_INITIATE メッセージ(+ 2 つのアトム)をSendMessage関数で送信します。 ・アプリ側(サーバー側)は、受け取ったアトムが自身の作成したアトムと同じか比較し、同じならば …
VB.netからC++/CLIへの移植がうまくいきません。その2
以下のVB.netソース(正常に動作する)を移植しようとしています。 やりたいことは、2つの異なるクラスのインスタンス間で通信したいのです。 そのために、共通にアクセスできる構造体を媒介しています。 C++/CLIでコンパイルが通るようにする方法を教えて下さい。よろしくお願いします。 ■VB.net Class MainWindow Private Sub MainWindow_Loaded(sender As Object, e As RoutedEventArgs) Handles…
C++/CLI エラーE0291 でコンパイルが通らない
↓C++/CLIのソースコードです。 #include <iostream>//printfの使用で必要 using namespace System; using namespace System::Collections::Generic; ref class testclass1 { public: float x1; System::Collections::Generic::List<int>^ list1;//コンパイルは通る testclass1()…
C++/CLI value structとはどういう意味ですか?
C++/CLI value structとはどういう意味ですか? Microsoft公開のドキュメントでも記載が無いので質問します。 「ref class と ref struct (C++/CLI および C++/CX)」等…
VB.netコードのC++/CLIへの移植がうまくいきません。
<VB.net > Dim SL1 As New HashSet(Of String) SL1.Add("###") Dim s1 = SL1(0) ※これは、成功します。 しかし、Copilotを使って翻訳すると(ライブラリーの参照の仕方は、現在作成中のプロジェクトに合わせてあります。) <C++/CLI> #using <System.Core.dll>//これを記述しないとHashSetが使えない using…
MFC/CStringをの3バイトや4バイト文字を対応出来るように変更する方法はありますか
開発環境は Windows11/ VisualC++(MFC)です。 すこし前に MFC/C++ でCStringにユニコードの3バイトや4バイト文字が入っている時の取り出し方について質問したのですが、CStringからGetAt/Midなどで文字を取り出している箇所は1000箇所以上あるため どう処理をしたら良いか悩んでいます。 今のところ CStringEx(CString)クラスを作り、GetLength/Mid/Left/Rrightを2バイト以上に対応して1000箇所に入れようとしていますが…
C++/CLI 自作クラス(IEquatable)の比較方法がわかりません。
C++/CLI 自作クラス(IEquatable)の比較方法がわかりません。 <C++/CLI> namespace Wrapper { public ref class MyClass { public: int i1; int i2; //コンストラクター MyClass(int _i1, int _i2) { i1 = _i1; i2 = _i2; } bool Equals(MyClass^ other) //staticは使用できない…
MFC/C++ でCStringにユニコードの3バイトや4バイト文字が入っている場合、1文字づつ取り出して CStringArrayに入れたい
MFCのCStringから1文字づつ取り出してCStringArrayに入れようとしています。 CStringにサロゲートペア/結合文字(つまり2バイト以上の文字)が入っていると, CString::GetLength/CString::Mid/CString::GetAtが上手く動かないので、 これらの文字が入っているCStringから1文字づつ文字数分取り出す方法をご教授ください。 環境:Windows11/VS2019 C++ です。 よろしくお願いします。 やっているのはこんな感じです。 for…
MFCアプリでXaml islandsを利用してWinUI3のダイアログを表示したいと考えています、どういった手法で行えばいいですか?
既存のMFCアプリでXaml islandsを利用してWinUI3のダイアログを表示したいと考えています。 Windows App SDK の安定チャネルのリリース ノートで 「バージョン 1.4 XAML Islands が試験段階ではなくなった」 とありますので利用できると考えているのですが、理解しやすい資料が無く困っています。 利用する際の手法、サンプル、おすすめのドキュメント等があれば教えて頂けないでしょうか?
VB.netのクラスのC++/CLIへの配列の移植がうまくいきません。
VB.netのクラスのC++/CLIへの移植がうまくいきません。 <VB.net>正常にコンパイルでき、動作する Class test0401 Public Property arr1() = {} Public Sub New() arr1 = {1, 7, 4} End Sub End Class <C++/CLI>正常にコンパイルでき、動作する public ref class test0402 { public: int FG1; …
GDI+のフォントのパス取得に限界はありますか?
Windows11 MFC/C++でソフトを開発しています。 GDI+を使ってフォントを画面に描画してします。 方法はGraphicsPath::AddStringでフォントのパスを得てGraphics::FillPathで描画しているのですが、 拡張フォント系は全部表示できません。 AddStringは正常に返っているのですが、パスが取れてない感じです。 拡張系のフォント(CJK互換文字 や CJK総合漢字拡張(U+3400~) 等)はGDI+では使えないのでしょうか?
プログラムからフォルダをアクセス制御したい
VisualC++MFCの開発者です。 開発したMFCアプリケーションの起動中、某フォルダの名前を変えたり削除出来ないしたいのですが、 それは可能ですか? 名前を変えたり削除出来ないが出来ない状態でも、自分以外のユーザーがそのフォルダにファイルを作ったり、ファイルを読み込む事が出来る必要があります。
WindowsServer2012R2での初期化していないC++ローカル変数の初期値について
VisualStudio2015でツールセット2012を指定してビルドしたexeを使用しています。 当該プログラムには、初期化していないローカル変数が存在していましたが、WindowsServer2012R2で使用していた時には特に不具合が発生していませんでした。(バグが顕在化しませんでした。) ところが、同exeをWindowsServer2019に移行したところ同ローカル変数の初期値不良による障害が発生してしまいました。 プログラムに当該ローカル変数の値を出力するログを仕込んで繰り返して実行する調査を…
Visual C++ 2015-2022のインストール時にセットアップ失敗する
Visual C++ 2015-2022のインストール時、「セットアップ失敗 0x80070652 - 別のインストールが既に実行されています。」 というダイアログが出て、セットアップできません。 念のためタスクマネージャで見ると「msiexec.exe」は1つしか動いておらず、それを削除して再度インストールを動作させると、セットアップが途中で止まってしまいます(その時にタスクマネージャをみると「msiexec.exe」が起動している)。