1 名前:デフォルトの名無しさん [2007/01/10(水) 00:00:39 ] 1 : ◆Manna2uCLg :2005/04/15(金) 13:33:14 Visual C++入門者・初心者からの質問を、 お兄ちゃん達が優しく、時には厳しく回答してくれるスレッドです。 ■質問するにあたって ・エラーや警告のときはエラーメッセージを書きましょう。 ・開発環境も書きましょう。 ・できるだけ具体的に。 質問の仕方については次のページが大変参考になります。 www.hyuki.com/writing/techask.html myu.daa.jp/osiete/ ■回答するにあたって ・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。 (MSDNのどの項目だとか、何のキーワードでGoogleするとか) ・ネタや煽りは軽く流しましょう。 過去スレ、関連スレなどは>>2-5 。
2 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 00:01:18 ] Part24 ttp://pc10.2ch.net/test/read.cgi/tech/1158296664/ Part23 ttp://pc8.2ch.net/test/read.cgi/tech/1140711893/ Part22 ttp://pc8.2ch.net/test/read.cgi/tech/1131443284/ Part21 ttp://pc8.2ch.net/test/read.cgi/tech/1124806288/ Part20 ttp://pc8.2ch.net/test/read.cgi/tech/1120222322/ Part19 ttp://pc8.2ch.net/test/read.cgi/tech/1116209988/ Part18 ttp://pc8.2ch.net/test/read.cgi/tech/1113539594/ Part17 ttp://pc8.2ch.net/test/read.cgi/tech/1107926989/ Part16 ttp://pc8.2ch.net/test/read.cgi/tech/1101022051/ Part15 ttp://pc5.2ch.net/test/read.cgi/tech/1097880265/ Part14 ttp://pc5.2ch.net/test/read.cgi/tech/1093672937/ Part13 ttp://pc5.2ch.net/test/read.cgi/tech/1089011118/ Part12 ttp://pc5.2ch.net/test/read.cgi/tech/1083585833/ Part11 ttp://pc5.2ch.net/test/read.cgi/tech/1077965179/ Part10 ttp://pc5.2ch.net/test/read.cgi/tech/1074933908/ ※ Part09 ttp://pc5.2ch.net/test/read.cgi/tech/1068983609/ ※ Part08 ttp://pc5.2ch.net/tech/kako/1063/10630/1063029371.html Part07 ttp://pc5.2ch.net/tech/kako/1056/10562/1056280510.html Part06 ttp://pc5.2ch.net/tech/kako/1052/10529/1052931903.html Part05 ttp://pc5.2ch.net/tech/kako/1048/10486/1048698321.html Part04 ttp://pc5.2ch.net/tech/kako/1044/10441/1044196393.html Part03 ttp://pc5.2ch.net/tech/kako/1038/10381/1038160750.html Part02 ttp://pc3.2ch.net/tech/kako/1030/10309/1030985362.html Part01 ttp://pc3.2ch.net/tech/kako/1023/10235/1023530449.html
3 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 00:04:52 ] 【関連スレ】 ■MFC相談室 mfc17d.dll■ pc10.2ch.net/test/read.cgi/tech/1164073111/l50 Win32API質問箱 Build48 pc10.2ch.net/test/read.cgi/tech/1166172047/l50 鬱だ氏のう DirectX (Part 16) pc8.2ch.net/test/read.cgi/tech/1133007002/l50 【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 130 pc10.2ch.net/test/read.cgi/tech/1159613789/l50 C++相談室 part55 pc10.2ch.net/test/read.cgi/tech/1164951094/l50 C/C++の宿題を片付けます 80代目 pc10.2ch.net/test/read.cgi/tech/1166969820/l50 【初心者歓迎】C/C++室 Ver.33【環境依存OK】 pc10.2ch.net/test/read.cgi/tech/1164376287/l50 【関連サイト】 猫でもわかるプログラミング www.kumei.ne.jp/c_lang/ MSDN ライブラリ ※変更された msdn.microsoft.com/library/ja/ msdn2.microsoft.com/ja-jp/library/ (2005のことはこっち) Platform SDK Update ※変更された www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en Google www.google.co.jp/
4 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 00:05:23 ] 【このスレの前身 VisualC++相談室 過去スレ】 part 1 ttp://piza.2ch.net/tech/kako/970/970607517.html part 2 ttp://piza.2ch.net/tech/kako/981/981630730.html part 3 ttp://piza2.2ch.net/tech/kako/993/993186053.html part 4 ttp://pc.2ch.net/tech/kako/1002/10021/1002165477.html part 5 ttp://pc.2ch.net/tech/kako/1006/10068/1006834463.html part 6 ttp://pc.2ch.net/tech/kako/1011/10116/1011615035.html part 7 ttp://pc.2ch.net/tech/kako/1017/10178/1017843192.html part 8 ttp://pc.2ch.net/tech/kako/1022/10224/1022499000.html part 9 ttp://pc5.2ch.net/tech/kako/1036/10368/1036897197.html
5 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 00:40:00 ] >>1 乙
6 名前:デフォルトの名無しさん [2007/01/10(水) 07:53:59 ] 【ネガティブ派遣根性チェック】 3つ以上、思い当たる点があればアナタの性格はひん曲がっており、ネガティブ負け組人生を歩んでいます。 □派遣先の社員の意見にはたとえ間違っていても反対しない □派遣先から「いつまでもここで仕事してくださいね」と言われるようになりたい □自社に仕事を持ち帰れるように言われるとムカつく □自社で仕事なんてできるわけがない □派遣/受託の差異を指摘する人間はムカつく □派遣先には仕事だけでなく自分のプライベートについても指示して欲しい □自分の月額金額を知らない □派遣先社員より自分の生涯収入が低いのは当然だ □派遣先に尻尾を振り、いつまでも一緒に仕事をすることが大切だ □今のプロジェクトが終わっても同じ派遣先に常駐したい
7 名前:デフォルトの名無しさん [2007/01/10(水) 15:13:31 ] UIスレッドについての質問です メインから子スレッドにメッセージを飛ばしたいのですがうまくいきません PostThreadMessageを使い第一引数にはスレッドのm_nThreadIDを渡しています 子スレッド側のソースにはON_THREAD_MESSAGEを使って配置しています しかしメッセージがきている様子はありませんPostThreadMessageじゃないのでしょうか? コンパイラはエラーをだしていませんでした
8 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 15:25:58 ] メッセージがきている様子が無いのは何で確認したの。 メッセージループの中?
9 名前:7 [2007/01/10(水) 15:28:06 ] MFCなのでメッセージマップに対応した関数のところに ブレークポイントをつけていたのですが反応がありませんでした
10 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 16:09:57 ] 試しにPreTranslateMessageを通過してるかみてみて
11 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 16:10:06 ] とりあえずPostThreadMessageの戻り値を確認
12 名前:7 [2007/01/10(水) 16:22:33 ] PreTranslateMessageを子スレッドにオーバーライドしたんですが PostThreadMessageのあとに通過していませんでした
13 名前:7 [2007/01/10(水) 16:52:51 ] virtual BOOL PreTranslateMessage(MSG *pMsg){return 1;} 子スレッドのヘッダファイルに追加したのはこれですが間違ってますか?
14 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 16:58:16 ] んー、、、そうなるとPostが失敗しているか、Post先が違うかじゃないのかな
15 名前:7 [2007/01/10(水) 17:03:49 ] PostThreadMessageの返り値は1でした post先は子スレッドのメンバ変数のm_nThreadIDで指定するんじゃないんですか?
16 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 17:12:03 ] 俺も初心者だけど、 PreTranslateMessageは自分で処理した時(普通に処理されたくない時)にTRUEを返すんじゃないの? 必ずreturn 1じゃ全てのメッセージを握り潰しちゃうんじゃないかな。
17 名前:7 [2007/01/10(水) 17:17:50 ] オーバーライドしても通過しなかったのでreturn 1も通ってないことになります
18 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 17:22:47 ] 子スレッド側でモーダルダイアログ出してるとか
19 名前:7 [2007/01/10(水) 17:29:49 ] 子スレッドでダイアログ等の表示はやっていません
20 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 17:32:02 ] メッセージキューそのものはあるんだよね? Sleep入れながらしつこく何回か送ってみても反応なし?
21 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 17:32:12 ] 子スレッドのメッセージループはちゃんと回ってるのか?
22 名前:7 [2007/01/10(水) 17:40:25 ] 子スレッドのメッセージマップはこんな感じでううでしょうか? BEGIN_MESSAGE_MAP(CWinThreadの派生クラス名, CWinThread) ON_THREAD_MESSAGE(ユーザー定義のメッセージ,割り当てる関数名) END_MESSAGE_MAP() スリープをいれながらやってみましたが無反応でした メッセージキューやメッセージループはマップに追加だけでは駄目なのでしょうか?
23 名前:7 [2007/01/10(水) 18:07:32 ] 子スレッド(TestThread)のヘッダファイル afx_msg void TestMssage(UINT afg, LONG aty); 子スレッド(TestThread)のソースファイル BEGIN_MESSAGE_MAP(TestThread, CWinThread) ON_THREAD_MESSAGE(WM_TEST,TestMssage) END_MESSAGE_MAP() . . . void TestThread::TestMssage(UINT afg, LONG aty){} メインソースファイル TestThread Testes; . . . PostThreadMessage(Testes.m_nThreadID,WM_TEST,1,1); 指摘お願いします
24 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 18:10:04 ] 子スレッドのメッセージループはちゃんと回ってるのか?
25 名前:7 [2007/01/10(水) 18:12:42 ] スレッドメッセージループはRunの中なのですか? 子スレッドはInitInstance()内で処理をし続けているので メッセージループがRunにあるとすれば回っていないと思います
26 名前:7 [2007/01/10(水) 18:23:30 ] InitInstanceの処理中に他の処理を割り込ませることは無理なのですか?
27 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 18:34:58 ] UIスレッドなんだろ、なんでそんなことしてるんだ
28 名前:7 [2007/01/10(水) 18:43:49 ] UIスレッドでの処理中にユーザ側からポチっとなっと スレッドのリスタートやら破棄やらいろいろしたいのです つまり処理中に割り込んでまた初めからすぐにスタートのような感じです フラグ変数を立てるやり方だとどこでそれがくるかわからないし反映も遅いし ソースがフラグだらけになってしまうと思います
29 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 18:46:27 ] メッセージポンプはRun()の中。 InitInstance()で処理し続けちゃダメ。 初期化だけしてすぐ終われ。
30 名前:7 [2007/01/10(水) 18:51:13 ] >>29 そうするとRunをオーバーライドしてそこに処理を書くということでしょうか? うーんでもRunの中はメッセージを待つのでまずいような でもそうなると処理中は割り込めないような・・・ どうすればいいのでしょうか?
31 名前:デフォルトの名無しさん [2007/01/10(水) 18:59:25 ] VisualC++6.0の入門書を読み始めました。 時代の流れに乗り遅れないためにと、始めたのですが、 VisualC++はどういうアプリケーションで使われているのでしょうか?
32 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 20:00:33 ] 入門書から既に時代遅れな件について
33 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 20:00:37 ] >>30 UIを扱うスレッドで長い時間がかかる処理をする、ということ自体がダメ。 だから「UIだけを扱うスレッドを走らせよう」って発想が出て「UIスレッド」って呼ばれるのよ。 処理に割り込みなんて、自分で書かないとできない。 (TerminateProcessやTerminateThreadはDLL絡みとかで問題がある) 長い時間がかかる処理を中断させたいなら、その処理内で中断フラグをちょくちょく見るしかない。
34 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 01:33:23 ] 先スレの992ですが 外人さんの作った、VC6のプログラムを、VC8に移植しているのですが日本語表示が上手く出来ません、 >>996 の手ほどきで 1.プロジェクトのプロパティでリソースのカルチャを日本語にする 2.リソースビューでIDD_ABOUTBOXをシングルクリックしプロパティのLanguageを日本語 3.リソースビューでIDD_ABOUTBOXをダブルクリックしFontを日本語Fontに変更 間でしたのですが 4.ダイアログに適当に日本語を設定しビルドと、 >>あとPG内で_tsetlocaleはしておいたほうが無難。 とアドバイスしてくれてたのですが _tsetlocaleで検索すると _tsetlocale(LC_ALL,_T(""));に設定しなさいとか出てきたのですが、これってMFCの場合ですよね?
35 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 01:41:56 ] 補足します、現在の文字コードはマルチバイトに設定しています、 コンパイラの設定を上記の変更をしたおかげで、リストビューのタイトルメニュー等は 日本語表示が出来るようになったのですが 日本語データを読込んで表示する部分で変換が出来ていません(文字化けします) なるべく手間を掛けずに日本語表示できる方法があれば教えてください。
36 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 01:47:21 ] >>34 いいえ、_tsetlocaleはMFCのものではありません。Cランタイムの関数です。
37 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 01:54:27 ] >>36 そうですか、_tsetlocaleを使う場合何か特別なヘッダーファイルを インストールしないとだめなのでしょうか? _tsetlocale(LC_ALL,_T(""));こう記述すると error C2065: 'LC_ALL' : 定義されていない識別子です。 error C3861: '_T': 識別子が見つかりませんでした error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません となるのですが?
38 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 02:07:14 ] >>37 #include <locale.h>です。MSDNぐらいは見ましょう。 >日本語データを読込んで表示する部分で変換が出来ていません 読み込んだデータじゃなく固定で "てきとう" を表示しようとしたら表示できます?
39 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 02:07:14 ] >>37 msdn 読んでくれ。
40 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 02:14:12 ] すみません、良く調べますそれから報告ですが 現在64個のエラーが出ているのですが、エラーのリストを秀丸に貼り付けて正規表現の置換を使って分析したら。 : error C2664: 'lstrcpyW' : 1 番目の引数を 'char [100]' から 'LPWSTR' に変換できません。 : 1 番目の引数を 'char [100]' から 'LPCWSTR' に変換できません。 : error C2440: '=' : 'const char [1]' から 'LPWSTR' に変換できません。 の2種類だけですが解決の糸がかりになりませんでしょうか?
41 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 02:16:06 ] >>40 35で言ってる >補足します、現在の文字コードはマルチバイトに設定しています があやしい。'lstrcpyW'はUNICODE用。
42 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 02:24:22 ] なんども、すみません 35の時点ではマルチバイトでしたが日本語変換できないので _tsetlocale(LC_ALL,_T(""));を使うにために現在はUNICODEに設定しています
43 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 04:22:03 ] > _tsetlocale(LC_ALL,_T(""));を使うにために現在はUNICODEに設定しています 悪いけど、お前さんに今の作業を完了させる事は難しい気がする。 LPCWSTR とか _T() とか、調べるべきキーワード沢山あるじゃん。
44 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 07:31:01 ] _tsetlocale使うのにUNICODEを設定する必要は無いと思うが。
45 名前:7 [2007/01/11(木) 10:06:05 ] >>33 マルチスレッドで長く複雑な処理は難しいということですか フラグをちょくちょく見るにはソースのなかにちょくちょく チェックするためのif文等をいれていくしかないのでしょうか? そうするぐらいならタイマ割り込みのようなもので スレッド側で定期的に監視させたいのですが UIスレッドの処理中に子スレッド側で タイマ割り込みのようなことはできるのでしょうか?
46 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 10:19:16 ] >>45 ワーカースレッドにしとけ
47 名前:7 [2007/01/11(木) 10:26:21 ] ワーカースレッドだと複雑な処理は難しいでしょう JAVAなら割り込みメソッドがちゃんと用意されてるみたいです www.javaworld.jp/technology_and_programming/-/10795-5.html
48 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 10:34:04 ] InitInstance内で済まそうとしてるってことは単純な処理としか思えんが・・・
49 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 10:37:28 ] >>47 の内容みたけど、その程度ならEvent使えば同じことできるじゃん
50 名前:7 [2007/01/11(木) 10:38:56 ] 今のところUIスレッドから派生したクラスの中で作った メンバ関数をInitInstance内の中で呼び出すしかないと思ってやってるんですが 初心者なので他になにか良い方法があれば教えてください
51 名前:7 [2007/01/11(木) 10:43:23 ] Eventは使ったことがないのですが調べてみます 参考ページがあれば教えてもらえたらうれしいです
52 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 10:49:13 ] つまり、ユーザーインターフェースは入力も出力も必要ない 割り込みは必要ってことでいいのかな
53 名前:7 [2007/01/11(木) 10:53:17 ] はい 子スレッドの状態を見るのはメイン側にメッセージを飛ばして解決しています
54 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 11:16:02 ] 単純な処理を複雑にやりたいということか
55 名前:7 [2007/01/11(木) 11:19:17 ] クラスで実装しないと厳しいので単純でもないです
56 名前:7 [2007/01/11(木) 11:23:34 ] 初期化はコンストラクタ内でやっています InitInstanceかRunいがいに処理を置ける場所がないように見えます 処理はし続けているので単純と言われれば単純ですね メッセージを待って処理をするタイプではないです
57 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 11:38:24 ] Javaの例も割り込みは自分でチェックするか例外が発生するしかないようだし イベントの発生をチェックしては。 Sleepが絡むときはSleepのスレッド作ってそこからイベント、かなあ 最近のMFC知らんけどもっといい方法あるのかな
58 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 11:51:18 ] .NETのSystem.Threading.Threadを派生する感じで実装するといい。 これでスレッドとクラスが一対一になって扱いやすくなる、といいな。 MFC使ってるみたいだから、 メンバにCWinThreadのポインタと中断用のCEventを用意して、 StartでAfxBeginThreadでタスクメンバ関数を起動、 ただし、CREATE_SUSPENDEDで起動 - CWinThread.m_bAutoDelete=FALSE - CWinThread.ResumeThread() の手順を踏んでおく。 タスクメンバ関数は中断用CEventを適時監視しつつ処理を実行する。 AbortではCEvent.SetEvent()。 JoinはWaitForSingleObjectをINFINITEで、 IsAliveはWaitForSingleObjectをウェイト0で呼び出す。 ちなみに、CWinThreadポインタの破棄は、 もう一度スレッドを起動しなおす時か、デストラクタの時だけにした方が色々楽。 中断するときは、Abort->Join呼び出しでスレッド停止待ち。 自然に完了を待つには、SetTimerのハンドラでIsAlive見て確認、ってのが一番楽。
59 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 12:20:44 ] 何この馬鹿? 教えるだけ無駄だろ > 25 名前:7[] 投稿日:2007/01/10(水) 18:12:42 > スレッドメッセージループはRunの中なのですか? > 子スレッドはInitInstance()内で処理をし続けているので > メッセージループがRunにあるとすれば回っていないと思います > > 26 名前:7[] 投稿日:2007/01/10(水) 18:23:30 > InitInstanceの処理中に他の処理を割り込ませることは無理なのですか?
60 名前:7 [2007/01/11(木) 12:22:41 ] MFCで.NETのクラスを派生ですか どうやればできるのかわかりません クラスの追加ウィザードからできるのでしょうか? 環境はVC++7.0です
61 名前:7 [2007/01/11(木) 12:24:50 ] >>59 すいません初心者なもので あとそれは引用だけでまったく答えになっていませんよね
62 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 12:30:13 ] 馬鹿を晒しものにしてやってるだけだから気にしなくていいよ
63 名前:7 [2007/01/11(木) 12:32:43 ] >>61 そうですか初心者を教えるスレで初心者相手に 馬鹿にして猿山大将気取りのなにが楽しいのか わかりませんが気にしないことにします
64 名前:7 [2007/01/11(木) 12:33:33 ] >>62 さんでした^^;
65 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 12:40:12 ] 初心者ならともかく馬鹿に教えることは不可能
66 名前:7 [2007/01/11(木) 12:52:20 ] >>65 >>25 >>26 の時点では InitInstanceの処理中に割り込みをするにはメッセージを使うのかもしれないと 思っていたのでRun関数は通っていないのでメッセージ待ちは他の場所がるのかと 勘違いしていました この時点での初心者と馬鹿の違いを教えてもらいたいところですが それはまたスレ違いだと思いますので 馬鹿ですいませんがVC++を教えてもらえないでしょうか?^^;
67 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 12:56:56 ] 割り込みって書いてる時点で、Windowsアプリの知識が根本的に足りないと感じた。
68 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 12:57:11 ] 便乗質問ですが ワーカースレッドでは実現困難で、UIスレッドを使うべきケースが思い浮かびません。 いくつかサンプルを拾って見てみたのですが、サンプルを書くために必然性なしにUIスレッドに しているとしか思えないようなモノばかりでした。 CWinApp以外ではどういう時に使ってます?
69 名前:デフォルトの名無しさん [2007/01/11(木) 12:57:52 ] 一つ聞かせて頂きたいんですけど、C++はCの上位互換ですけど C++が出来てCが出来ない人って居るんでしょうか?
70 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 13:02:29 ] そうでもない
71 名前:7 [2007/01/11(木) 13:02:53 ] >>67 子スレッドの処理中にメイン側の合図で他の処理をすることが目的なので 割り込みと表現したのですが^^;
72 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 13:04:48 ] >>69 STLとboostが使えないと何も出来ない、という人はいるかも。
73 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 13:08:34 ] >>71 Windowsではそういうことはできない。 メッセージでも、明示的/暗黙的にメッセージを処理できる状態にしてやらないと処理できない。
74 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 13:13:38 ] スレッドと言いながら関数に割り込みかけてる。
75 名前:7 [2007/01/11(木) 13:19:41 ] >>73 できないとなるとフラグメンバ変数かシグナル状態を変えて ソース内で定期的にif文を記述しでチェックするしかないのでしょうか そうなると>>58 さんの方法がまだ理解できてないんですが 同じような方法ということでしょうか?
76 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 13:22:22 ] 関数の中のループに割り込みかけたいらしい。
77 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 13:24:58 ] winnyはC++で書かれていますが、winMXもC++で書かれているのですか?
78 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 13:37:41 ] >>75 フラグ変数がCEventオブジェクトになっただけ
79 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 13:45:15 ] >>75 普通、重たい処理はループしてるから遅いわけで、ループ一回りに掛かる時間は ごくわずか。そのループ中に1行eventの状態チェック入れるだけ。 ループしてないのに重いとか、ループ一回りが遅いというなら75の言うとおりになるかも。
80 名前:77 mailto:age [2007/01/11(木) 16:10:41 ] 誰か知りませんでしょうか?
81 名前:デフォルトの名無しさん [2007/01/11(木) 16:34:28 ] VisualStudio2003を使用してMFCでモードレスダイアログを実装しようとしています。 support.microsoft.com/kb/403848/ja こちらのページを見て、そのとおりに記述しているのですが、コンストラクタ内の Create文を通ってもダイアログが表示されません。OSはWinXPです。 問題がわかる方、またはその他の良い方法を知っている方がいましたらよろしくお願いします。
82 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 16:37:50 ] >>81 ダイアログのID はIDDですか?
83 名前:82 mailto:sage [2007/01/11(木) 16:49:15 ] >>81 ごめん、ちょっとやってみた。 ダイアログのプロパティでVisible をtrueにするか new したあとで ShowWindow(SW_NORMAL) 呼んでみな
84 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 18:47:13 ] MFC使うなら2005Expressじゃダメですか?VC8.0あたり買ってこないとダメ? 後これといった質問はないのですが、 此処での初心者ってのはどこまでが初心者なんですか?
85 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 19:24:55 ] >>81 特に問題なくダイアログ表示できた
86 名前:81 mailto:sage [2007/01/11(木) 19:29:46 ] >>82 IDDでした また、Visibleにしたところ、ちゃんと表示されるようになりました。 (今までのは作成だけされて見えていなかったということでしょうか? タスクを見ているとメモリ使用量だけはCreateした分だけ増えていたので・・・) ありがとうございました!
87 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 21:30:29 ] まあそうみたいだな。 モードレスダイアログは作りっぱなしでSHOW、HIDEするケースが多いから ShowWindow()も試しておいたほうがいいと思うよ。
88 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 22:06:09 ] プログラム関連ではないのですが、質問です。 resource.hのファイル名を変更してTestResource.hとしました。 以降このファイルにリソースのdefine値を連動させておくため、 リソースファイルのincludeをresource.hからTestResource.hに変更した まではよかったのですが、リソース変更後に保存するとなぜかinclude 先がresource.hに戻ってしまいます。これはどうしてなんでしょうか? 解決法を知っている方いましたらお教えください。お願いします。
89 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 22:10:17 ] 変えるとなんかいいことあるの?
90 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 22:13:38 ] >>88 リソースビューで、xx.rcを右クリックしてインクルードファイルの設定替えればいい つーか、ヘルプに書いてあると思うが
91 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 22:25:06 ] >>84 Express Edition には MFC はついてこないので パッケージ版を購入してくるべし。
92 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 22:34:15 ] >90 できました、ありがとうございます。
93 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 22:36:49 ] >>91 本当ですか。。。。所持金ヤバイのにorz2万とかムリス アカデミはなんか無理そうだし・・・
94 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 22:55:38 ] >7にはこのコードをあげる。よい子は使っちゃダメだぞ。 typedef void (*throwFuncType)(); void dothrow_func(){ throw 300;} DWORD CALLBACK threadproc( void * ){ printf("BeginThread\n"); int i=0; try{ while(1) { i++; } }catch( int ){ printf("\n%d: catched exception.\n",i); } return 0; } int main(){ throwFuncType dothrow_ptr = dothrow_func; DWORD id; HANDLE hThread = CreateThread(NULL,0,threadproc,NULL,0,&id); char t[255]; fgets(t,200,stdin); CONTEXT context; context.ContextFlags = CONTEXT_CONTROL; SuspendThread( hThread); GetThreadContext(hThread, &context); context.Eip = (DWORD)dothrow_ptr; SetThreadContext(hThread, &context); ResumeThread( hThread); WaitForSingleObject(hThread,INFINITE); }
95 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 23:10:33 ] >>93 アカデミックはスタンダード相当でMFCもきちんとあるはずだぞ。
96 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 23:28:20 ] >>94 こんな手があったのか。面白いけどちょっと怖いな。
97 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 23:34:16 ] >>95 学生じゃ無くて無理そうなのでは
98 名前:デフォルトの名無しさん mailto:sage [2007/01/12(金) 13:33:06 ] MFCのデータベースプログラミングをしようとして ODBCを使ってみたんですがテーブルごとにクラスが作られてしまいますが いろいろなテーブルを取得したい場合はどうすればいいのでしょうか?
99 名前:デフォルトの名無しさん mailto:sage [2007/01/12(金) 15:25:55 ] >>98 自分で直接CDatabaseやらCRecordsetやらをいじくればいいが、 今時ならせめてADOかOLEDBを使うのを薦める。
100 名前:デフォルトの名無しさん mailto:sage [2007/01/12(金) 16:16:14 ] 環境 VC++7.0 Windows2000 保存と取り出しができているので成功しているはずなんですが INIファイルで保存と取り出しはできたのですが保存先がわかりません プロジェクト名.INIで保存されてるはずのファイルがみつかりません ファイルの検索でもひっかかりません Windows2000だとどこか特別な場所に保存されるのでしょうか? m_pszProfileNameもデバッグ時に確かめましたがプロジェクト名でした ソース m_iData1 = 20; m_sString1 = "mojiretsu"; …… // INIファイルに情報を保存する CWinApp* pApp = AfxGetApp(); pApp->WriteProfileInt("ProgramData", "IntData1", m_iData1); pApp->WriteProfileString("ProgramData", "String1", m_sString1); // INIファイルから情報を取り込む CWinApp* pApp = AfxGetApp(); m_iData = pApp->GetProfileInt("ProgramData", "IntData1", 0); m_sString1 = pApp->GetProfileString("ProgramData", "String1", NULL);
101 名前:デフォルトの名無しさん mailto:sage [2007/01/12(金) 16:23:00 ] プロジェクト名.INI に保存されるというのはどこに書いてあった? まあ2000ならwin.ini でもなくてレジストリにマッピングされてると思うけど。