レスありがとうございます。遅れますた
>>937 ::AfxGetApp()->GetMainWnd()->SendMessage(WM_UPDATESTATUSBAR, ...)
みたいな感じでメッセージを投げています。(WM_UPDATESTATUSBARはユーザメッセージ
です)
>>938 WaitForSingleObjectで測定終了を待っていました。これが原因のようです。
教えていただいたMSDN読んだのですがデッドロックの項目にWait〜の件は
書かれてないですね。
Win32マルチスレッドプログラミングという書籍も読んだのですがやはり書かれて
ませんでした。
Wait〜で待っている以上、SendMessageといえどもOSはCPU時間を割いてくれないのですね。
勉強になりますた。
レスくださったみなさんどうもありがとうございました。。。
940 :
デフォルトの名無しさん:05/02/20 15:55:12
質問です。VC++にて開発中です。
クラスウィザードでCEdtiにint型の変数を設定すると、
実行時にDoDataExchangeで以下のような警告が出力されます。
Warning: initial dialog data is out of range.
変数の範囲を1-9999にすると警告が出ます。0-9999だと出ません。
解決方法をご存知の方がいらっしゃいましたらお願いします。
>>940 コンストラクタで1(つーか自分の指定した範囲内の数値)を入れて味噌。
941とかぶっちゃいましたが
意図するところは同じです orz
>>941, 942
解決しました。ありがとうございました。
945 :
??:05/02/20 20:40:01
AppWizardで自動生成されるWindowsメニューでの
IDR_MAINFRAMEの、
MENUITEM "ツール バー(&T)", ID_VIEW_TOOLBARや、
MENUITEM "ステータス バー(&S)", ID_VIEW_STATUS_BAR
は、MFCのどこでハンドルされているのでしょうか?
−− 消去や再表示など。
又はデバッガでトレースする方法(適当なブレーク
ポイントなど)を教えて下さい。
>>945 MFCソース内をID_VIEW_TOOLBARやID_VIEW_STATUS_BARで検索してみる気はないのかい?
>>946 検索する気がないから尋ねているんです。
ワロス
949 :
デフォルトの名無しさん:05/02/21 22:22:14
主張としては正当だね。
回答者も答えるかどうかで自らの主張を示せばいい。
CWinThreadの派生クラスを作ってCreateThread(0,0)を呼び出すとRun()が
動き始めるんですが、これをワーカースレッドとして使うのは問題ないですか?
>>953 多分永遠にメッセージを待つことになるのでスレッドが終わらなくなる。
InitInstanceがFALSEを返せばRunは呼ばれない。
>>954 そうなんですか・・・ありがとう御座います。
続けざまの質問且つCWinThreadの理解不足で申し訳ないのですが、
CWinThread::CreateThreadというのはどういう用途で使われるのでしょうか?
AfxBeginThreadのようにスレッド関数のポインタを渡したりはしないのですよね?
>>955 以下、MSDN
| 呼び出したプロセスのアドレス空間内で実行されるスレッドを作成します。
| 1 ステップでスレッドを作成し実行するには AfxBeginThread 関数を使います。
| 連続したスレッドの作成とスレッドの実行を繰り返すときに
| スレッド オブジェクトを再利用したいときは CreateThread を使います。
>>956 私もそれはMSDNで読んだのですが、どうも下記の
| 連続したスレッドの作成とスレッドの実行を繰り返すときに
| スレッド オブジェクトを再利用したいときは CreateThread を使います。
この意味がよくわからなかったんですよね・・・。
CreateThreadを呼び出す事でどのスレッドが起動されるのかと言う所が
わからないと言った感じです。抽象的な物言いで申し訳ありません。
MFCとちょっと離れるかもしれませんが・・・
CString str = "0x12345678";
これをDWORD型に格納したいのですが、
何か良い関数等ありますでしょうか?
テキストファイルに出力された値を読み込みたいのですが…
strtolか・・・
失礼しました。
960 :
デフォルトの名無しさん:05/02/22 20:20:07
StrToInt
>>957 AfxBeginThread() って、
CWinThread 作って CreateThread 呼び出すくらいしか
やってなくて、で生成したスレッドが実行するのは
ワーカースレッド: AfxBeginThread に渡した関数
インタフェーススレッド:_AfxThreadEntry() 関数(非公開)
この _AfxThreadEntry() の中で、CWinThread の InitInstance() だの
Run() だのが呼び出されてる。
>>961 成る程ですね!ありがとうございました。
963 :
デフォルトの名無しさん:05/02/23 18:07:52
すいません、質問なのですがスプリットウィンドウの幅を動的に変更するにはどの様にすれば良いのでしょうか?
自己解決しました
VC++6.0を使ってます。
ファイルの読み込み中など、モーダルなダイアログを出して
逐次表示を更新→終わったら即ダイアログ閉 をやりたいのですが、
CDialog::DoModal()で呼び出すとどこに実行が移るのかわかりません。
DoDataExchange()だとウインドウを開いたときと閉じるときに2回実行されてうまくないです。
いちいちOKボタンを押してダイアログを閉じるのも嫌です。
こういう場合は自分でメンバ関数を作って、CDialog::Create()、CDialog::ShowWindow()したあと
そのメンバ関数を呼び出すのがいいのでしょうか?
いちいちお前の日本語モドキを解読して答えるのも嫌です。
>>965 だね。DoModalするとダイアログ側に実行権が移っちゃうんで。
逐次表示を更新ならスレッド作らないとだめだな
SetTimer(1,1000,NULL);
for (aPlaying = TRUE; aPlaying; ) {
//Do somethig
if (::PeekMessage(&message, NULL, 0, 0, PM_REMOVE)) {
::TranslateMessage(&message);
::DispatchMessage(&message);
}
Sleep(1);
}
こんな感じで擬似スレッドつくれば?
そんな無茶苦茶な設計にするより、素直にスレッド使ったほうがすっきりする。
972 :
デフォルトの名無しさん:05/02/24 23:30:29
クソスレ立てんなヴォケ!!
ちょっとワロってしまった…
これで画面に表示してある、
例えば「1」「2」「3」「4」「5」という文字をを識別して表示するみたいな事って出来るんでしょうか?
できるよ
意味がわからん
画像処理?
ワンパターンマッチング?
MFCを始めたばかりの若造です。
CText(ラベルという?)に表示されている文字を画面から
はみ出たら改行されるようにしたいのですが、設定の仕
方が分かりません。
大きな文字をウィンドウ上に表示したいのですが、
SetFontでフォントサイズを大きくしたのですが、
ウィンドウ上に収まりきらない文字の場合、文字
切れしてしまいます。
これを解決する良い方法はないのでしょうか?
>979
スタティックテキストです。
スマソ
これは通常内部でいじったりはしないのですか?
MFCならプロパティに改行って項目が普通にあった気がしたが?
>>983 ないから質問してるんです
知らない人は黙っててください
つーか、改行使う理由が分からない。
つーかデフォルトで勝手に改行されはずなんだけど。
方法を変えてDrawTextで対応してみます。
MFCを行うのは初めてで、どのやり方が一番適切か
分からなかったため聞きました。
ありがとうございました。