VC++でのイベント処理はどこに書かれてる? – プログラミング – Home

VC++でのイベント処理はどこに書かれ...
 
通知
すべてクリア

[解決済] VC++でのイベント処理はどこに書かれてる?


ふゆこ
 ふゆこ
(@ふゆこ)
ゲスト
結合: 23年前
投稿: 16
Topic starter  

VC++超初心者です。今までVBでの開発をしていました。
Cは読める程度で、C++のオブジェクト指向の考え方は頭では分かっています。
試しにボタンをクリックするとスタティックテキスト(VBで言う所のラベル?)に文字を表示する、
という単純な物を作りたかったのですが、それすらさっぱりわかりません。
MFC AppWizard(exe)のダイアログベースから作ったのですが、
これではOKボタンをクリックすると画面消去されるのでここを改造しようと思いましたが、
それがどこに書かれているか分かりません。
クリック時処理はどこにあるんでしょうか?
レベルの低すぎる質問ですみません。


引用未解決
トピックタグ
けん★
 けん★
(@けん★)
ゲスト
結合: 23年前
投稿: 28
 

ども!おはつです けん★です

ボタンのクリックイベントは最初はどこにも記述されていないので、
ボタンをダブルクリックしてください。
するとメンバ関数の追加というのが出てきてそこで好きな関数名をつけると ファイル名Dlg.cppに
関数として追加されますので、そこに処理を記述してください。


返信引用
ふゆこ
 ふゆこ
(@ふゆこ)
ゲスト
結合: 23年前
投稿: 16
Topic starter  

お返事ありがとうございます。
確かにダブルクリックで関数は追加されましたが、デフォルトで「OKクリックで画面が消去される」という処理が
入ってますよね?これはどこに記述されているのでしょうか?


返信引用
けん★
 けん★
(@けん★)
ゲスト
結合: 23年前
投稿: 28
 

それは ファイル名.cppの
BOOL CMyファイル名App::InitInstance()
の中
if (nResponse == IDOK)
{
// TODO: ダイアログが <OK> で消された時のコードを
// 記述してください。
}
else if (nResponse == IDCANCEL)
{
// TODO: ダイアログが <キャンセル> で消された時のコードを
// 記述してください。
}
ここでやってますよ


返信引用
CdS
 CdS
(@CdS)
ゲスト
結合: 24年前
投稿: 176
 

MFCのソースでCDialog::OnOKを検索すれば分かると思いますが、そこでEndDialogをしています。
(実際はそのEndDialogでWin32APIのEndDialogを呼んでいます)
通常、「C:\Program Files\Microsoft Visual Studio\VC98\MFC\」に入っています。


返信引用
ふゆこ
 ふゆこ
(@ふゆこ)
ゲスト
結合: 23年前
投稿: 16
Topic starter  

みなさん、ご回答ありがとうございます。
OKボタンをクリックしてメンバ関数OnOKを作成するとこの関数内で「CDialog::OnOK()」を
呼び出す部分が追加されますが、このメンバ関数を追加しなくても(AppWizardで作成しただけでも)
実際はOKクリックでプログラムが終了しますよね?
けん★さんのご回答にあったInitInstance()の中だけではそのままでは何もせずに抜けてるのに
なぜ終了するのでしょうか?
またCDialog::OnOK()はDLGCORE.cppの関数ですが、プロジェクトに含まれていなくても呼び出せるのですか?

・・・こんなレベルの議論を延々としていても許されるのでしょうか?
もし許されるのならまた教えて下さい。


返信引用
けん★
 けん★
(@けん★)
ゲスト
結合: 23年前
投稿: 28
 

ども けん★です

新規作成時(AppWizard)には確かにOnOKメンバ関数がありませんが、
スケルトンがOKボタンとCANCELボタン押下時に自動的にCDialog::OnOK()を呼び出しているようです。

前記のInitInstance()は終了時の処理を書くところでした。勘違いしてました。申し訳ございませんでした。

OnOKは<afxwin.h>ファイルをincludeすることによって使用できるようになっています。
includeはスケルトン作成時に自動的に行われています


返信引用
ふゆこ
 ふゆこ
(@ふゆこ)
ゲスト
結合: 23年前
投稿: 16
Topic starter  

ありがとうございました。
自動でソースを作ってくれるのはありがたいですが、理解するのは難しい・・・。
一応OKクリックで画面消去せずにスタティックテキストに文字を表示、というのはできました。
これからもたびたびお世話になると思いますがよろしくお願いします。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました