exeコピーツール作成 3

前回の記事

今回はボタン押下時、ラジオボタン選択時に呼ばれる関数追加と、
テキスト系を変えていきます。

前準備 ID変更

少しだけ前準備します。

気づいてはいたのですが、直そうか直さまいか悩んでいて結局放置してましたが、
直したほうがやっぱりわかりやすいので今直します。

何を直すかですが、コントロールIDです。

コントロールIDを見るために、ウィンドウを一つ追加します。
前回「リソースビュー」ウィンドウを追加したのと同じです。

今回は「プロパティ」ウィンドウ。
ボタンやテキストなどの情報が見れます。

「表示」→「プロパティウィンドウ」で追加できます。

右下に枠が出てきました。
お好みでウィンドウの位置を調整できます。
私は「ソリューションエクスプローラ」と「リソースビュー」と「プロパティ」が同じ位置にあるほうが作業しやすいので、
プロパティウィンドウをドラッグしてウィンドウ位置調整

OK!!

最初からすでにウィンドウがある人はこの操作は必要ないですね。

さて、IDを直します。

「Debugボタン」を選択した状態でIDを見ると「IDC_BUTTON1」になっています。

これを「IDC_BUTTON_DEBUG」に書き換えておきます。

ID名はわかりやすいほうが当然いいですからね。

同じくReleaseボタンは「IDC_BUTTON_RELEASE」に、
「フォルダAに移動」ラジオボタンは「IDC_RADIO_FOLDER_A」に、
「分別用」ラジオボタンは「IDC_RADIO_SEPARATE」に、
「現在実行パス」テキストは「IDC_STATIC_PATH」にしておきます。

変更後、念のためrcファイルを見てみると

それぞれ設定したIDに変更されています。

さて、前準備は終わりです。

ボタン押下時の処理

Debugボタンが押下されたときに呼ばれる関数を作成します。

とは言っても1秒で完結します。

リソースビューでダイアログを開き、「Debugボタン」を選択します。
(※rcファイルを開いている場合は一度閉じます)

選択した「Debugボタン」をダブルクリック。
はい、以上!!

するとCopyToolDlg.cppに次の関数が自動追加されます。

同じく「Releaseボタン」、「フォルダAに移動ラジオボタン」、「分別用ラジオボタン」も
ダブルクリック!!

次々自動追加されました。

ちょっとだけ遊んでみます。

各関数内にメッセージボックスを表示させる関数を置いてみます。
これはMFCのグローバル関数で、勝手に用意してくれてます。

AfxMessageBox(_T(""));

AfxMessageBoxについては色々な記事がありますので、そちらを参考に。
これを各箇所に置きます。
わかりやすいように、表示されるメッセージは変えます。

後は保存して、ビルドします。

さてさて、いかほどに…

起動!

Debugボタンを押すと..

よしよし(´▽`*)

ほかのボタンもそれぞれのメッセージが出てきました。

これにて、押下時の処理が確認できましたので、
AfxMessageBox関数は一度削除(or コメントアウト)しておきます。

実行パステキスト変更

現在実行パステキストの表示を少しだけ変更します。

CopyToolDlg.cpp内に、OnInitDialog関数があります。
これは処理の最初に呼ばれる関数で、ここに初期表示の処理を入れます。
(本当の「最初」ではないんですけどね。コンストラクタとか、それよりも前に呼ばれるものもありますが)

初期表示処理を書きます。
ご丁寧に、コメントで「// TODO: 初期化をここに追加します。」とあるので、
その真下に処理を追加します。

CString strText = _T("現在実行パス\n");
strText += _T("ほげほげ ここにパスが表示されるようになるよ");
CStatic* pStatic = (CStatic*)GetDlgItem(IDC_STATIC_PATH);
pStatic->SetWindowTextW(strText);

1行目と2行目はいいでしょう、CString型の文字列を作っています。
2行目に今後、パスの取得処理を施した文字列を入れるようにします。
1行目の\nは改行です。

3行目は、IDC_STATIC_PATHのポインタ取得しています。

4行目は、指定したコントロールのテキストをstrTextに変更しています。

107~110行目追加

rcファイルで「現在実行パス」と設定しましたが、
あれが今回からOnInitDialog内で上書きされます。

保存、ビルドして確認してみます。

上書きされてました。

タイトル追加

OnInitDialog内に処理を追加しました。
せっかくなのでもう一つ、初期表示処理を加えます。

先ほど追加した処理の下にもう一行追加します。

SetWindowText(_T("コピーツール"));

ビルドすると

左上にタイトルが追加されました。

ラジオボタン初期選択

もう一つついでに、初期表示処理を追加しようと思います。

現在、exeを開いたタイミングではラジオボタンはどちらも選択されていませんが、
開いた時には既に「フォルダAに移動」が選択されている状態を作りたいです。
DebugボタンもしくはReleaseボタンが押された時、
どちらも選択されておらずどっちの処理をするんだい!
ってなるのを防ぐためです。

追加する処理は以下です。

CButton* pBtn = (CButton*)GetDlgItem(IDC_RADIO_FOLDER_A);
pBtn->SetCheck(1);

1行目はスタティックテキストと同じ説明です。
2行目で、「フォルダAに移動ラジオボタン」がチェック状態になるようにしています。

順番前後してますが、スタティックの上書きとタイトル追加の間に入れています。

ビルドします。

開いた時には既に「フォルダAに移動」が選択されている状態になりました。

今回はここまで。

次回はコピー処理を書れたらいいけど…
これ、10記事までに終わるんか(;´・ω・)

日記感じで書いてますので、
そこらへんはよろしくお願いします(ᵔᴥᵔ)

コメント

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