プログラミングに関する記事です。
【プログラミング問題1】ピラミッドの出力
プログラミング初学者のためのプログラミング問題1「ピラミッドの出力」です。 本問題は標準出力への出力を想定していますが、問題の本質はアルゴリズムをコードに落とし込むことなのでブラウザへの出力など他の出力を使用しても問題ありません。 解答例は...
C言語で「最大」「最小」「合計」「平均」「標準偏差」を求める
C言語の学習をしていると割と初めの方の課題で「最大」「最小」「合計」「平均」「標準偏差」を求めよといった課題に出くわすと思います。 条件分岐、繰り返し、配列、関数化が必要となるため、文法の習得を行うには良い課題かと思いますが、Yahoo知恵...
Windowsでfwriteを使ってバイナリ出力するとゴミデータが挿入される原因と対策
業務でMFCを使いながらC言語のfwriteを使わなければいけない機会があったのですが、その時少しハマったことがあったので備忘録として残しておきます。 この記事では、Windowsでfwriteを使ってバイナリ出力するとゴミデータが挿入され...
MFCアプリ上に別のアプリを貼り付ける方法
自分の作成するアプリケーション上に別のアプリケーションを貼り付けたいということがたまにあります。 この記事では、MFCで作成したアプリケーション上に別のアプリケーションを貼り付ける方法について紹介します。 プロジェクトの作成 プロジェクトは...
C言語で重複しない任意の数の乱数を生成
アルゴリズムの勉強をしていると、ソートプログラムなどで大量の乱数データが必要な場合があります。 この記事では、C言語で重複しない任意の数の乱数を生成する方法について紹介します。 乱数の取得方法 C言語で乱数を生成する場合には「rand」関数...
MFCでコマンドライン引数を解析
アプリケーションに対して外部からの入力としてコマンドライン引数を渡したいことがよくあります。 特定の拡張子にアプリケーションを紐づければ特定の拡張子のファイルを開くことでアプリケーションに引数としてファイル名が渡されるため、一般的なアプリケ...
任意のウィンドウのハンドルを取得
Windows上でプログラムからウィンドウの操作を行う場合、「ウィンドウハンドル」と呼ばれるウィンドウを識別するためのハンドルを使用します。 // ウィンドウの位置・サイズ設定 ::MoveWindow(hWnd, 0, 0, 100, 1...
実行ファイルのパスを取得(Win32)
プログラム内でパスを扱う場合「カレントパス」と「実行ファイルパス」を取り違えることが原因で発生する不具合がよくあります。 「カレントパス」はアプリケーションを実行した場所のことで、必ずしも「実行ファイルパス」と同じになるわけではないのでこう...
MFCでタスクバーのようなアプリの作り方
機械上で動作するアプリケーションなどで、タスクバーのように画面の端に固定してその上には何もかぶらないようにしたい場合があります。 公式ドキュメントによると、アプリケーションデスクトップツールバー(以下AppBar)を使用することでタスクバー...
WPFのButtonにTemplateを適用すると部分的にクリック判定されない問題と解決策
WPFでButtonにTemplateを適用した際に部分的にクリックが判定されない問題に出くわして、解決するのに少し苦労したのでその問題と解決策を備忘録としてまとめます。 結構色々なサイトなどを調べてみましたがどうも同じ現象に遭遇してる人が...
JavaScriptでOpenCV.jsを使用して画像処理
画像処理というとOpenCVが有名で、C++やPythonで使用されるのが一般的です。 OpenCVにはJavaScript版のOpenCV.jsがあり、Nodeだけでなくブラウザ上でも画像処理を行うことができます。 ブラウザ上で画像処理を...
MFCでOpenCVを使用して画像処理
画像処理というとOpenCVが有名で、C++やPythonで使用されるのが一般的です。 一昔前だと、MFCでOpenCVを使用する場合にはパソコンにOpenCVをインストールした上でプロジェクトの設定でライブラリとインクルードの追加を行う必...
MFCの描画処理でダブルバッファリング(GDI)
描画処理を行う際に画面にちらつきが発生することがたまにあります。 ちらつきの原因は「背景描画」→「オブジェクト描画」が高速で行われることにあり、対策としては一般的にダブルバッファリングという手法が用いられます。 この記事では、MFCでの描画...
MFCでの基本的な描画処理(GDI)
MFCでGUIの開発を行っている際に「図形の描画をしたい」というタイミングがたまにあります。 図形の描画はプログラミング言語やフレームワークの種類によって書き方が異なるため、文法や構文とは違い他の言語を触っていたからといって「なんとなく書け...
CStringと他の文字列型、数値型との相互変換
VC++プロジェクトやMFCプロジェクトで文字列型として使用されるCStringと他の文字列型(std::string、char*)、数値型(int、double)との相互変換方法について紹介します。