C++

C++に関する記事です。

C言語

Windowsでfwriteを使ってバイナリ出力するとゴミデータが挿入される原因と対策

業務でMFCを使いながらC言語のfwriteを使わなければいけない機会があったのですが、その時少しハマったことがあったので備忘録として残しておきます。 この記事では、Windowsでfwriteを使ってバイナリ出力するとゴミデータが挿入され...
MFC

MFCアプリ上に別のアプリを貼り付ける方法

自分の作成するアプリケーション上に別のアプリケーションを貼り付けたいということがたまにあります。 この記事では、MFCで作成したアプリケーション上に別のアプリケーションを貼り付ける方法について紹介します。 プロジェクトの作成 プロジェクトは...
MFC

MFCでコマンドライン引数を解析

アプリケーションに対して外部からの入力としてコマンドライン引数を渡したいことがよくあります。 特定の拡張子にアプリケーションを紐づければ特定の拡張子のファイルを開くことでアプリケーションに引数としてファイル名が渡されるため、一般的なアプリケ...
VC++

任意のウィンドウのハンドルを取得

Windows上でプログラムからウィンドウの操作を行う場合、「ウィンドウハンドル」と呼ばれるウィンドウを識別するためのハンドルを使用します。 // ウィンドウの位置・サイズ設定 ::MoveWindow(hWnd, 0, 0, 100, 1...
VC++

実行ファイルのパスを取得(Win32)

プログラム内でパスを扱う場合「カレントパス」と「実行ファイルパス」を取り違えることが原因で発生する不具合がよくあります。 「カレントパス」はアプリケーションを実行した場所のことで、必ずしも「実行ファイルパス」と同じになるわけではないのでこう...
MFC

MFCでタスクバーのようなアプリの作り方

機械上で動作するアプリケーションなどで、タスクバーのように画面の端に固定してその上には何もかぶらないようにしたい場合があります。 公式ドキュメントによると、アプリケーションデスクトップツールバー(以下AppBar)を使用することでタスクバー...
MFC

MFCでOpenCVを使用して画像処理

画像処理というとOpenCVが有名で、C++やPythonで使用されるのが一般的です。 一昔前だと、MFCでOpenCVを使用する場合にはパソコンにOpenCVをインストールした上でプロジェクトの設定でライブラリとインクルードの追加を行う必...
MFC

MFCの描画処理でダブルバッファリング(GDI)

描画処理を行う際に画面にちらつきが発生することがたまにあります。 ちらつきの原因は「背景描画」→「オブジェクト描画」が高速で行われることにあり、対策としては一般的にダブルバッファリングという手法が用いられます。 この記事では、MFCでの描画...
MFC

MFCでの基本的な描画処理(GDI)

MFCでGUIの開発を行っている際に「図形の描画をしたい」というタイミングがたまにあります。 図形の描画はプログラミング言語やフレームワークの種類によって書き方が異なるため、文法や構文とは違い他の言語を触っていたからといって「なんとなく書け...
VC++

CStringと他の文字列型、数値型との相互変換

VC++プロジェクトやMFCプロジェクトで文字列型として使用されるCStringと他の文字列型(std::string、char*)、数値型(int、double)との相互変換方法について紹介します。
VC++

LP○○STRの簡単な覚え方

Win32APIの文字列を扱うAPI関数で使用される「LPSTR/LPCSTR/LPWSTR/LPCWSTR/LPTSTR/LPCTSTR」の簡単な覚え方を紹介します。