プログラムを書こう!

実務や自作アプリ開発で習得した役に立つソフトウェア技術情報を発信するブログ

C++/CLI

C++/CLIで小数値を四捨五入する。

はじめに 小数値を計算して使用すると、どうしても誤差が生じます。 そのため有効桁数で四捨五入して使用するため、四捨五入する方法を調査しました。 Math.Roundメソッド 四捨五入するにはMathクラスのRoundメソッドを利用します。 小数値を四捨五入するRou…

C++/CLIでString型の文字列をchar型に変換する。

はじめに アンマネージコードと混在したプロジェクトで、String型の文字列をchar型に変換する必要がありました。 Stringクラスに変換用のメソッドがないか探しましたが見当たらないため、変換方法を調査しました。 変換方法 String型の文字列をchar型に変換…

C++/CLIでデリゲートを利用する。

はじめに ユーザへの通知用にメッセージを表示するダイアログを作成することはよくあると思います。 ダイアログにはOKボタンを用意し、ユーザがメッセージを確認したときに、OKボタンを押下してダイアログを閉じるようにします。 その際、それぞれの状況で個…

C++/CLIでInvokeRequiredによる異なるスレッドか判断できない状況

はじめに 複数のフォームを切り替えるアプリで、処理スレッドからの処理結果をフォーム上のラベルに表示する処理がありました。 処理結果が返却されるタイミングでどの画面が表示されているかわからないため、すべての画面で同じ処理を行うようにしました。 …

C++/CLIでボタンの枠線を表示しない。

はじめに ボタンに画像を張り付けて、画像をボタン代わりにしようとしました。 その際ボタンの枠線が表示されたままだったので、ボタンの枠線を消すにはどうしたらよいか調べました。 FlatStyleプロパティ ボタンのスタイルを設定するFlatStyleプロパティが…

C++/CLIでアプリが実行されるディレクトリを取得する。

はじめに 不具合調査などのためにログをファイルに出力しておくことはよくあると思います。 今回もログファイルを作成しようと考えましたが、出力場所をどこにするかお客様と相談しました。 その結果、アプリが動作しているディレクトリに作成することになり…

C++/CLIのファイル書き込みではまったこと。

はじめに 設定値がソース上にべた書きされている画面があったのですが、それを設定ファイルで外出ししてほしいと依頼があり対応しました。 要件としてはそんなに難しい要素はないためすぐ終わると思っていたのですが、書き込み処理ではまりました。 はまった…

C++/CLIでレジストリに値を書き出す。

はじめに 前回レジストリから値を読み込む方法をまとめましたので、今回はレジストリに値を書き出す方法をまとめてみます。 RegistryKey.SetValueメソッド レジストリの値の読み込み同様、レジストリへの値の書き出しは、RegistryKey.SetValueメソッドを利用…

C++/CLIでレジストリから値を読み込む。

はじめに アプリの設定値などはiniファイルやレジストリに保持するのが一般的だと思います。 今回はレジストリから保存された値を読み込む方法をまとめてみました。 RegistryKeyクラス レジストリはRegistryKeyクラスで操作します。 対象となるCurrentUserの…

C++/CLIでファイルが存在するかしないかチェックする。

はじめに ファイルを操作する場合、ファイルが存在しない状態で操作しようとすると、アプリは予期せぬ動作になります。 そのためファイルが存在するかどうかチェックする方法を調べてみました。 Existsメソッド ファイルが存在しているかどうかは、Fileクラ…

C++/CLIでフォームの左上のアイコンを非表示にする。

はじめに 仕事でですが、ある画面の実装中に仕様書の画面イメージをよく見てみると、フォームの左上のアイコンが表示されていないことに気が付きました。 そのためフォームの左上のアイコンを非表示にする方法を調べてみました。 ShowIconプロパティ フォー…

C++/CLIでテキストファイルにテキストデータを書き出す。

はじめに 前回テキストファイルからテキストデータを読み込む方法をご紹介しました。 今回はテキストファイルにテキストデータを書き出す方法をご紹介します。 StreamWriterクラス 前回紹介したStreamReaderクラスと対になるStreamWriterクラスを使用します…

C++/CLIでテキストファイルからテキストデータを読み込む。

はじめに テキストファイルの読み込みですが、他の言語のJava、Objective-CやSwiftで同じような処理を行ったことがあるので、見当をつけて調べました。 StreamReaderクラス StreamReaderクラスを使えば、テキストファイルを読み込めます。 読み込み方は3種類…

C++/CLIで別アプリを起動する。

はじめに もともと起動用のアプリから目的のアプリを起動する仕組みのシステムで、以下のような変更が必要となりました。 今まで通り起動用アプリから目的のアプリを起動するパターン 目的のアプリを直接起動するパターン 起動用アプリは既存のアプリでおそ…

C++/CLIで配列を使う。

はじめに C++/CLIで配列を使おうと思いましたが、アンマネージ配列となるC言語形式の配列が使えませんでした。 そこでマネージ配列の使い方を調べてみました。 マネージ配列 マネージ配列を宣言するにはarrayキーワードで宣言する必要がありました。 array<…

C++/CLIでアプリの多重起動を禁止する。

はじめに 今回の仕事で作成したアプリが多重起動禁止という仕様でした。 アプリの多重起動のチェック方法を知りませんでしたが、その時一緒に作業をしている人がその方法を教えてくれたので、まとめてみました。 多重起動を禁止する方法 多重起動かどうかチ…

C++/CLIで改行文字列を取得する。

はじめに プログラムで改行文字列を使うことはよくあると思います。 皆さんもよくご存じだと思いますが、改行文字列はOSごとに異なっており、WindowsはCL/LF(¥r¥n)、UnixはLF(¥n)、MacはCR(¥r)となっています。 これらの改行文字を自分で定数定義してもよい…

C++/CLIでコマンドライン引数を取得する。

はじめに 今回作成したアプリで、起動時にコマンドライン引数により表示する画面を切り替える機能が必要でした。 そのためC++/CLIでコマンドライン引数を取得する方法を調べました。 コマンドライン引数を取得する方法 コマンドライン引数を取得する方法は、…

C++/CLIでフォームが表示された時/非表示になった時に処理する。

はじめに C++/CLIでWindowsアプリを作成した際に、フォームが表示された時とフォームが非表示になった時に処理したい状況がありました。iOSアプリやAndroidアプリでは、そのようなタイミングで呼び出されるライフサイクルメソッドが用意されているのを知って…