アプリケーションを終了するには? – プログラミング – Home

アプリケーションを終了するには?
 
通知
すべてクリア

[解決済] アプリケーションを終了するには?


masa
 masa
(@masa)
ゲスト
結合: 25年前
投稿: 12
Topic starter  

皆さんはじめまして開発環境はDevStudio97のVC5.0です

メインウィンドウ上にボタン「終了」を作って「ID_APP_EXT」
を割り当てただけだと何も起こらないのですが、どうしてでしょうか

メニューの「ファイル」→「アプリケーションの終了」には「ID_APP_EXT」があって
終了できるのに?
同じリソースID割り当てただけではだめなんですか


引用未解決
トピックタグ
ku
 ku
(@ku)
ゲスト
結合: 25年前
投稿: 312
 

AfxGetMainWnd()->PostMessage(WM_COMMAND, ID_APP_EXIT);
とでもしてみてください.


返信引用
masa
 masa
(@masa)
ゲスト
結合: 25年前
投稿: 64
 

ID_APP_EXT 以外の IDC_BUTTON1などのリソース割り当てをしコントロールに
対する関数を作成し「AfxGetMainWnd()->PostMessage(WM_CLOSE);」と言うのはやってます

聞きたいのは「ID_APP_EXT」をボタンコントロールのidにしたときメニューと同じ
動きをなぜしないのかを聞きたい


返信引用
ku
 ku
(@ku)
ゲスト
結合: 25年前
投稿: 312
 

逆に,なぜメニューと同じ動作をするのかご存じでしょうか?

SDIについて書いておきます(MDIでは下記の記述は参考程度にしかならないかもしれません).
おそらくCViewの派生クラスをオーナーにしてボタンを作成していると思いますが
メニューはCMainFrame作成の::CreateWindowExで作成しています.
ですからボタンもCMainFrameをオーナーとして作成しないと
メニューに連動しないのではないかと思います.

CButton btn;
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
...
RECT rc = {100, 100, 200, 200};
btn.Create(test, WS_CHILD | WS_VISIBLE, rc, this, ID_APP_EXIT);
}
UINT C???View::OnNcHitTest(CPoint point)
{
return HTCAPTION;
}

CMainFrame::OnCreateでCMainFrameをオーナーにしたところ
ボタンは表示されましたがボタンを押すことができません
Viewが上に乗っているのでボタンを押すことができないのでしょう.
ということでじゃまなViewを移動するためだけにOnNcHitTestを実装しました.

このコードをお試しになるのなら
実行後にViewをつかんで移動させてください.
Viewの移動後にCMainFrameをオーナーにしたボタンを押すことができます.


返信引用
ku
 ku
(@ku)
ゲスト
結合: 25年前
投稿: 312
 

> メニューはCMainFrame作成の::CreateWindowExで作成しています.
正確にはCFrameWnd::CreateExの::CreateWindowExで作成しています.
ですね.


返信引用
masa
 masa
(@masa)
ゲスト
結合: 25年前
投稿: 64
 

関数のオーナーによる違いのためリソースアクセスできないと言うように解釈いたしましたCreateWindowExについては勉強不足のため理解できませんでした


返信引用
ku
 ku
(@ku)
ゲスト
結合: 25年前
投稿: 312
 

VC6だと新規作成のプロジェクトでWin32 Applicationを選ぶと
標準的なHello World!アプリケーションが選べます.
VC5でも似たようなものがあると思います.

これだとCreateWindowの中のメニューを指定するところにNULLを指定してますが
この場合はRegisterClassのメニューを採用するって意味だったと思います.
CreateWindowExとCreateWindowは似たようなもんです.

MFCを使ってないシンプルな構成なのでCreateWindowも理解できるのではないかと思います.


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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