VC++6.0のダイアログベースでプログラミングを行っています。
IDC_BOTTOB6が押されたら、IDD_ABOUTBOXを表示するようにしたいのですが、
うまくいきません。
//
// DialogProc - ダイアログボックス プローシジャ
//
LRESULT CALLBACK DlgProc(HWND hDlg, UINT uMessage, WPARAM wParam, LPARAM lParam)
{
switch (uMessage)
{
case WM_COMMAND:
switch(LOWORD(wParam)){
case IDCANCEL:
TermApp(hDlg);
if (hDll != NULL)// DLLロード済み?
{
FreeLibrary(hDll);// DLLのハンドラ開放
}
DestroyWindow(hDlg);
break;
case IDC_BUTTON6: {
CDialog aboutDlg(IDD_ABOUTBOX);
INT_PTR nRet = -1;
nRet = aboutDlg.DoModal();
// Handle the return value from DoModal
switch ( nRet )
{
case -1: {
MessageBox(NULL,"Dialog box could not be created!", NULL, MB_OK);
}
break;
case IDABORT:
// Do something
break;
case IDOK:{
// Do something
}
break;
default:{
// Do something
}
break;
};
}
上記のようにプログラムしていますが、コンパイルは通るのですが、実行するとエラーで落ちます。
Debug Assertion Failed
Program: C:/.....test.exe
File: afxwin1.inl
Line: 22
何か原因が分かりましたら、ご教授頂けると幸いです。
以上、宜しくお願いします。
No.2ベストアンサー
- 回答日時:
で……
>File: afxwin1.inl
>Line: 22
にはなんと書かれています?
LOWORD(wParam)
でボタンのコントロールIDしか見ていないようですが…HIWORD(wParam)はチェックしていないのでしょうか?
BN_PAINTやBN_SETFOCUS、BN_KILLFOCUSなどの「ボタンを押した」以外でも
LOWORD(wParam) == IDC_BUTTON6な状態もありえますけど、そのヘンは大丈夫なんですか?
# BN_PAINTのたびにダイアログ開いたりしたら…無限ループにハマりませんかねぇ?
ダイアログを開いた時(CreateDialog()等)にもBN_PAINTが飛んでくるかも知れませんけど…
そうなると、メインダイアログの初期化中…ということになったりしませんか?
回答、有難うございます。
VC++6.0初心者の為、回答の内容がよく分かりません。
勉強します。
実は、このプログラムは、某社のサンプルプログラムを
見よう見真似で改造したもので、全体の構造がよく分かっていません。
また、かなり特殊なプログラムらしく、内容がよく分からないのが現状です。
もし、上記の回答に関し、具体的なソースコードのあるURL等ご存知でしたら、
教えて頂けると助かります。
以上、宜しくお願いします。
No.3
- 回答日時:
とりあえず、一番簡単そうな猫でもわかるシリーズです。
「MFC編INDEX」
http://www.kumei.ne.jp/c_lang/indexmfc.html
あと役立ちそうな書籍。中古で買うしか無いです。
「Amazon.co.jp: Visual C++6.0プログラミング 基礎編―MFCを活用したWindowsアプリケーション開発: 田中 正造: 本」
http://www.amazon.co.jp/dp/479730779X/
「Amazon.co.jp: 新Visual C++6.0入門 ビギナー編 (Visual C++6.0実用マスターシリーズ): 林 晴比古: 本」
http://www.amazon.co.jp/dp/4797307609/
この本は現役ですが、少し難しいかも。
「Amazon.co.jp: 標準講座MFC6.0―Visual C++による効率的なWindowsプログラミング (Programmer’s SELECTION): ハーバート シルト, 田中 正造, Herbert Schildt, コスモワークス: 本」
http://www.amazon.co.jp/dp/4881357042/
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- JavaScript jsで、switch文で書かれた分をif文にできませんか。 1 2022/07/28 15:10
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
- C言語・C++・C# C++のcase文の書き方 4 2023/02/24 20:50
- C言語・C++・C# C++のcinの動作 5 2023/02/26 00:13
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- Visual Basic(VBA) Vbaで数式をポーランド記法に変換するコードを作って実行しようとするとフリーズします。 1 2022/05/24 17:53
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ドライバ開発の勉強方法を教え...
-
Qtを勉強するのに何か良い書籍...
-
3次元データを3D表示
-
NCルータープログラム学習方法
-
WEBサーバソフトの作成
-
PHPでショッピングカートを自作...
-
Ps+のフリープレイでDestiny2の...
-
String^の^自体が何を意味して...
-
Windows Media Playerを開くと...
-
iCloudフォトライブラリ内の画...
-
Google ColaboでGUI作成
-
本格的なGUIを作るのにおすすめ...
-
scipy っていうのをいれようと...
-
標準ライブラリだけでgetch関数...
-
stricmp
-
VB と VC++ と VC#の違いは?
-
cでなぜguiアプリが作成出来る...
-
declaration of 'index' shadow...
-
boostのアンインストールについて
-
VC++とVC#の違いを教えて下さい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
IPアドレス、サブネットマスク...
-
ヤフー知恵袋みたいなサイトを...
-
Qtを勉強するのに何か良い書籍...
-
in_addrのs_addr?
-
C言語等での画像処理の勉強方法
-
スクレイピングについて【初心者】
-
RS232Cの制御について詳しく書...
-
MSP430のプログラム学習
-
Win32APIのおすすめ実用書
-
MFCについて詳しく書かれている...
-
タイピングゲームのプログラミ...
-
C/C++でHTMLソースの取得はでき...
-
本の誤植について
-
CかVBでポートを制御する方法
-
T-kernelに関しての質問です。
-
月額15,000円のプログラミング...
-
OpenOffice.org BaseはAccessの...
-
eclipseで関数printfを解決でき...
-
大阪梅田でプログラミング関係...
-
OLEの構造化ストレージについて...
おすすめ情報