MFCでdllを作成する 1

管理人のタツです。

題の通り、dllを作ってみます。

何気にdll作るのは初めてです。

関係ないですけど、最近仕事とプライベートで忙しくて、
なかなか前みたいにほぼ毎日投稿ってことはできてないんですよね。

目標の週一投稿は頑張って継続できてるんですが。

毎日、しかも複数記事出してるブロガーさんってホント尊敬します。

作りたい処理

とりあえず簡単なものを。

ダイアログで入力された2つの数値を加算するだけの処理を作ります。

加算処理をdll側で。

加算するだけならexeだけでも何の支障も出ないですが、
まぁ練習として。

処理の順は、

  1. 数値を入力する
  2. ボタンを押す
  3. dllで計算が走る
  4. 計算結果をexe側に持ってくる
  5. ダイアログに結果を表示させる

こんな感じです。

作成

プロジェクト作成

Visual Studio 2022で試します。

新規作成から、MFCアプリを選択し、名前つけておきます。

今回、ソリューション名とプロジェクト名は別々にしときます。

ソリューション名をTest、プロジェクト名はExeDialogで。

アプリケーションの種類はダイアログベースで。

完成!

Exe側の処理作成 (メインの画面)

この初期表示のダイアログ使ってもいいですが、
まぁ練習も兼ねてもう一個別のダイアログを作ります。

それを呼び出すためのボタンを適当に配置。
中央のテキストは削除 or 邪魔にならないところへ。

IDはIDC_BUTTON_CALCDLGにしておきます。
後キャプションは適当にそれっぽいものを。
大きさと位置もお好みで。

とりあえずこのボタンをダブルクリックして、
ボタンが押されたときに呼ばれる関数をExeDialogDlg.cppに追加しておきます。

Exe側の処理作成 (計算画面)

続いて新たにダイアログを追加。

リソースビューからDialogを選択し、右クリック→リソースの追加を選択します。

もう一個確認ダイアログが出るので、そのまま新規作成ボタンを押下。

新しいダイアログができるので、ダイアログIDをIDD_DIALOG_CALCに変更。

必要なコントロールは、

  • エディットボックス1
  • エディットボックス2
  • ボタン
  • スタティックテキスト

の4つです。

一気に追加しておきます。

IDはそれぞれ、

  • IDC_EDIT_NUM1
  • IDC_EDIT_NUM2
  • IDC_BUTTON_CALCSTART
  • IDC_STATIC_RESULT

です。エディットボックスは、数字のみの入力をTRUEに設定しました。

後は同じく、計算実行ボタンをダブルクリックして、クラスの追加を行います。

クラス名はCCalcです。

これで、Calc.cppが出来上がります。

とりあえず初期表示だけ完成させます。

表示→クラスビューを選択します。

この状態で先ほど作ったCCalcを選択、プロパティからオーバーライドを選択します。

後はOnInitDialogを追加するだけです。

追加されました。

業務で数年MFC使った開発してますが、
恥ずかしながら実は初めてOnInitDialogの追加をこの方法でできると知りました。

新規にダイアログ作るときはいつも
既存のヘッダー&cppから関数コピーして修正、ってしてました。

話を戻して、何を初期設定するかですが、スタティックテキストです。

CStatic* pStatic = (CStatic*)GetDlgItem(IDC_STATIC_RESULT);
pStatic->SetWindowText(_T("計算を行います。"));

最後に、今作ったダイアログを呼び出さないと話が始まらないので、
メインのダイアログから呼び出します。

ExeDialogDlg.cppに、今作ったヘッダーをインクルードさせます。

#include "Calc.h"

メイン画面の処理追加で行ったOnBnClickedButtonCalcdlg関数内で、以下を追記。

CCalc dlg;
dlg.DoModal();

今回呼び出し先の戻り値はどうでもいいので、これで大丈夫なはず。

Exe起動

とりあえずここまでにして、ビルドします。

((((((((((っ・ω・)っビルド中

出来上がったExeDialog.exeを起動させると。

はい。真ん中のボタン押下で、

はい、できました。

とは言っても、自分としてはこのくらい数十分でできて当たり前なんですけどね。

今回はとりあえずここまでです。

これくらいの分量がやっぱり書きやすいかな。
前のコピーツール作成なんて、1回の分量が書きすぎたせいで、
今ちょっと反省しています。

小さい努力を積み重ねないと。

次回はdll作ります。
後、exe側も数値の読み取りなんかしないとダメですね。

多分、次回で終了。

MFCでdllを作成する 2
前回の記事 続・作成 Exe側の処理作成 (エディットボックスから数字読み取り) エディットボックスから数字を取得します。 リソースビューから前回作成したIDD_DIALOG_CALCを開き、これまた作った「計算実行」ボタンをダブルクリック...

コメント

タイトルとURLをコピーしました