掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
MessageBox (ID:52714)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
こんにちは。 頼もしくなんてないですよ(^^; 下手なコード書いてOSを落としまくっているだけですから。 >あなたの疑問にまさに答えてくれる良書だと思います。 >著者の苦労話がためになります。 >基本は、処理のためにUIが固まらないように組むことですね。 それじゃ、早速購入して勉強してみますね。 それに、回答者だなんて滅相もない、 私はまだVCを始めたばかりの初心者ですので(^^; >無限ループで数字をカウント、表示し、 >MessageBox で OK を押したら、 >無限ループを脱出するようにすると、 >マルチスレッドの様子がわかると思います。 >(なんか、プライマリとセカンダリの使い方が逆ですが) これ、良いかもしれませんね。 つまり、ウインドウ上のコマンドボタンクリック あたりから、MessageBoxを出すと共に カウントアップを始め、OKで終了とするという事ですね。 >プライマリとセカンダリの使い方が逆ですが というのは? その場合、MessageBoxがセカンダリスレッドでいいですよね? そして、カウントアップがプライマリでいいですよね? これが、普通は逆ですか? >int bContinue = 1, nCount = 0; >makethread( func, &bContinue ); // スレッドを作る機能をまとめた関数。 >while( bContinue ) >{ > fprintf( stderr, "%d\r", nCount ++ ); >} >closethread(); // waitforsingleobject(), closehandle() などを行う関数 >ワーカ(セカンダリ)スレッドでは OK を押すと bContinue を 0 にします。 これがちょっと理解できませんで(^^; while( bContinue ) { fprintf( stderr, "%d\r", nCount ++ ); } これが無限ループで、bContinue =0で ループを脱出というのは理解できます。 makethread( func, &bContinue ); こっちが問題ですね。 int bContinue = 1, nCount = 0; CreateThread(NULL , 0 , ThreadFunc , (LPVOID)&bContinue , 0 , &dwID); while( bContinue ) { fprintf( stderr, "%d\r", nCount ++ ); } closethread(); DWORD WINAPI ThreadFunc(LPVOID pParam) { if MessageBox() == MB_OK { pParam == 0; } return 0; } おおよそ、こんな感じでしょうか?
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.