トップページ⇒tech
1001コメント333KB

★初心者にVisual C++を教えるスレ★ Part25

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2007/01/10(水) 00:00:39
1 : ◆Manna2uCLg :2005/04/15(金) 13:33:14
Visual C++入門者・初心者からの質問を、
お兄ちゃん達が優しく、時には厳しく回答してくれるスレッドです。

■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう。
・できるだけ具体的に。

質問の仕方については次のページが大変参考になります。
http://www.hyuki.com/writing/techask.html
http://myu.daa.jp/osiete/

■回答するにあたって
・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。
 (MSDNのどの項目だとか、何のキーワードでGoogleするとか)
・ネタや煽りは軽く流しましょう。

過去スレ、関連スレなどは>>2-5。
0002デフォルトの名無しさん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
0003デフォルトの名無しさん2007/01/10(水) 00:04:52
【関連スレ】
■MFC相談室 mfc17d.dll■
http://pc10.2ch.net/test/read.cgi/tech/1164073111/l50
Win32API質問箱 Build48
http://pc10.2ch.net/test/read.cgi/tech/1166172047/l50
鬱だ氏のう DirectX (Part 16)
http://pc8.2ch.net/test/read.cgi/tech/1133007002/l50
【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 130
http://pc10.2ch.net/test/read.cgi/tech/1159613789/l50
C++相談室 part55
http://pc10.2ch.net/test/read.cgi/tech/1164951094/l50
C/C++の宿題を片付けます 80代目
http://pc10.2ch.net/test/read.cgi/tech/1166969820/l50
【初心者歓迎】C/C++室 Ver.33【環境依存OK】
http://pc10.2ch.net/test/read.cgi/tech/1164376287/l50

【関連サイト】
猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
MSDN ライブラリ ※変更された
http://msdn.microsoft.com/library/ja/
http://msdn2.microsoft.com/ja-jp/library/ ;(2005のことはこっち)
Platform SDK Update ※変更された
http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&;displaylang=en
Google
http://www.google.co.jp/
0004デフォルトの名無しさん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
0005デフォルトの名無しさん2007/01/10(水) 00:40:00
>>1乙
0006デフォルトの名無しさん2007/01/10(水) 07:53:59
【ネガティブ派遣根性チェック】

3つ以上、思い当たる点があればアナタの性格はひん曲がっており、ネガティブ負け組人生を歩んでいます。

□派遣先の社員の意見にはたとえ間違っていても反対しない
□派遣先から「いつまでもここで仕事してくださいね」と言われるようになりたい
□自社に仕事を持ち帰れるように言われるとムカつく
□自社で仕事なんてできるわけがない
□派遣/受託の差異を指摘する人間はムカつく
□派遣先には仕事だけでなく自分のプライベートについても指示して欲しい
□自分の月額金額を知らない
□派遣先社員より自分の生涯収入が低いのは当然だ
□派遣先に尻尾を振り、いつまでも一緒に仕事をすることが大切だ
□今のプロジェクトが終わっても同じ派遣先に常駐したい
0007デフォルトの名無しさん2007/01/10(水) 15:13:31
UIスレッドについての質問です
メインから子スレッドにメッセージを飛ばしたいのですがうまくいきません
PostThreadMessageを使い第一引数にはスレッドのm_nThreadIDを渡しています

子スレッド側のソースにはON_THREAD_MESSAGEを使って配置しています

しかしメッセージがきている様子はありませんPostThreadMessageじゃないのでしょうか?
コンパイラはエラーをだしていませんでした
0008デフォルトの名無しさん2007/01/10(水) 15:25:58
メッセージがきている様子が無いのは何で確認したの。
メッセージループの中?
000972007/01/10(水) 15:28:06
MFCなのでメッセージマップに対応した関数のところに
ブレークポイントをつけていたのですが反応がありませんでした
0010デフォルトの名無しさん2007/01/10(水) 16:09:57
試しにPreTranslateMessageを通過してるかみてみて
0011デフォルトの名無しさん2007/01/10(水) 16:10:06
とりあえずPostThreadMessageの戻り値を確認
001272007/01/10(水) 16:22:33
PreTranslateMessageを子スレッドにオーバーライドしたんですが
PostThreadMessageのあとに通過していませんでした
001372007/01/10(水) 16:52:51
virtual BOOL PreTranslateMessage(MSG *pMsg){return 1;}

子スレッドのヘッダファイルに追加したのはこれですが間違ってますか?
0014デフォルトの名無しさん2007/01/10(水) 16:58:16
んー、、、そうなるとPostが失敗しているか、Post先が違うかじゃないのかな
001572007/01/10(水) 17:03:49
PostThreadMessageの返り値は1でした
post先は子スレッドのメンバ変数のm_nThreadIDで指定するんじゃないんですか?
0016デフォルトの名無しさん2007/01/10(水) 17:12:03
俺も初心者だけど、
PreTranslateMessageは自分で処理した時(普通に処理されたくない時)にTRUEを返すんじゃないの?
必ずreturn 1じゃ全てのメッセージを握り潰しちゃうんじゃないかな。
001772007/01/10(水) 17:17:50
オーバーライドしても通過しなかったのでreturn 1も通ってないことになります
0018デフォルトの名無しさん2007/01/10(水) 17:22:47
子スレッド側でモーダルダイアログ出してるとか
001972007/01/10(水) 17:29:49
子スレッドでダイアログ等の表示はやっていません
0020デフォルトの名無しさん2007/01/10(水) 17:32:02
メッセージキューそのものはあるんだよね?
Sleep入れながらしつこく何回か送ってみても反応なし?
0021デフォルトの名無しさん2007/01/10(水) 17:32:12
子スレッドのメッセージループはちゃんと回ってるのか?
002272007/01/10(水) 17:40:25
子スレッドのメッセージマップはこんな感じでううでしょうか?

BEGIN_MESSAGE_MAP(CWinThreadの派生クラス名, CWinThread)
ON_THREAD_MESSAGE(ユーザー定義のメッセージ,割り当てる関数名)
END_MESSAGE_MAP()

スリープをいれながらやってみましたが無反応でした
メッセージキューやメッセージループはマップに追加だけでは駄目なのでしょうか?
002372007/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);

指摘お願いします
0024デフォルトの名無しさん2007/01/10(水) 18:10:04
子スレッドのメッセージループはちゃんと回ってるのか?
002572007/01/10(水) 18:12:42
スレッドメッセージループはRunの中なのですか?
子スレッドはInitInstance()内で処理をし続けているので
メッセージループがRunにあるとすれば回っていないと思います
002672007/01/10(水) 18:23:30
InitInstanceの処理中に他の処理を割り込ませることは無理なのですか?
0027デフォルトの名無しさん2007/01/10(水) 18:34:58
UIスレッドなんだろ、なんでそんなことしてるんだ
002872007/01/10(水) 18:43:49
UIスレッドでの処理中にユーザ側からポチっとなっと
スレッドのリスタートやら破棄やらいろいろしたいのです

つまり処理中に割り込んでまた初めからすぐにスタートのような感じです
フラグ変数を立てるやり方だとどこでそれがくるかわからないし反映も遅いし
ソースがフラグだらけになってしまうと思います
0029デフォルトの名無しさん2007/01/10(水) 18:46:27
メッセージポンプはRun()の中。
InitInstance()で処理し続けちゃダメ。
初期化だけしてすぐ終われ。
003072007/01/10(水) 18:51:13
>>29
そうするとRunをオーバーライドしてそこに処理を書くということでしょうか?
うーんでもRunの中はメッセージを待つのでまずいような
でもそうなると処理中は割り込めないような・・・
どうすればいいのでしょうか?
0031デフォルトの名無しさん2007/01/10(水) 18:59:25
VisualC++6.0の入門書を読み始めました。
時代の流れに乗り遅れないためにと、始めたのですが、
VisualC++はどういうアプリケーションで使われているのでしょうか?
0032デフォルトの名無しさん2007/01/10(水) 20:00:33
入門書から既に時代遅れな件について
0033デフォルトの名無しさん2007/01/10(水) 20:00:37
>>30
UIを扱うスレッドで長い時間がかかる処理をする、ということ自体がダメ。
だから「UIだけを扱うスレッドを走らせよう」って発想が出て「UIスレッド」って呼ばれるのよ。

処理に割り込みなんて、自分で書かないとできない。
(TerminateProcessやTerminateThreadはDLL絡みとかで問題がある)
長い時間がかかる処理を中断させたいなら、その処理内で中断フラグをちょくちょく見るしかない。
0034デフォルトの名無しさん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の場合ですよね?
0035デフォルトの名無しさん2007/01/11(木) 01:41:56
補足します、現在の文字コードはマルチバイトに設定しています、
コンパイラの設定を上記の変更をしたおかげで、リストビューのタイトルメニュー等は
日本語表示が出来るようになったのですが
日本語データを読込んで表示する部分で変換が出来ていません(文字化けします)
なるべく手間を掛けずに日本語表示できる方法があれば教えてください。
0036デフォルトの名無しさん2007/01/11(木) 01:47:21
>>34
いいえ、_tsetlocaleはMFCのものではありません。Cランタイムの関数です。
0037デフォルトの名無しさん2007/01/11(木) 01:54:27
>>36
そうですか、_tsetlocaleを使う場合何か特別なヘッダーファイルを
インストールしないとだめなのでしょうか?
_tsetlocale(LC_ALL,_T(""));こう記述すると
error C2065: 'LC_ALL' : 定義されていない識別子です。
error C3861: '_T': 識別子が見つかりませんでした
error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
となるのですが?
0038デフォルトの名無しさん2007/01/11(木) 02:07:14
>>37
#include <locale.h>です。MSDNぐらいは見ましょう。

>日本語データを読込んで表示する部分で変換が出来ていません
読み込んだデータじゃなく固定で "てきとう" を表示しようとしたら表示できます?
0039デフォルトの名無しさん2007/01/11(木) 02:07:14
>>37
msdn 読んでくれ。
0040デフォルトの名無しさん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種類だけですが解決の糸がかりになりませんでしょうか?
0041デフォルトの名無しさん2007/01/11(木) 02:16:06
>>40
35で言ってる >補足します、現在の文字コードはマルチバイトに設定しています
があやしい。'lstrcpyW'はUNICODE用。
0042デフォルトの名無しさん2007/01/11(木) 02:24:22
なんども、すみません
35の時点ではマルチバイトでしたが日本語変換できないので
_tsetlocale(LC_ALL,_T(""));を使うにために現在はUNICODEに設定しています
0043デフォルトの名無しさん2007/01/11(木) 04:22:03
> _tsetlocale(LC_ALL,_T(""));を使うにために現在はUNICODEに設定しています 
悪いけど、お前さんに今の作業を完了させる事は難しい気がする。

LPCWSTR とか _T() とか、調べるべきキーワード沢山あるじゃん。
0044デフォルトの名無しさん2007/01/11(木) 07:31:01
_tsetlocale使うのにUNICODEを設定する必要は無いと思うが。
004572007/01/11(木) 10:06:05
>>33
マルチスレッドで長く複雑な処理は難しいということですか

フラグをちょくちょく見るにはソースのなかにちょくちょく
チェックするためのif文等をいれていくしかないのでしょうか?

そうするぐらいならタイマ割り込みのようなもので
スレッド側で定期的に監視させたいのですが
UIスレッドの処理中に子スレッド側で
タイマ割り込みのようなことはできるのでしょうか?
0046デフォルトの名無しさん2007/01/11(木) 10:19:16
>>45
ワーカースレッドにしとけ
004772007/01/11(木) 10:26:21
ワーカースレッドだと複雑な処理は難しいでしょう
JAVAなら割り込みメソッドがちゃんと用意されてるみたいです
http://www.javaworld.jp/technology_and_programming/-/10795-5.html
0048デフォルトの名無しさん2007/01/11(木) 10:34:04
InitInstance内で済まそうとしてるってことは単純な処理としか思えんが・・・
0049デフォルトの名無しさん2007/01/11(木) 10:37:28
>>47 の内容みたけど、その程度ならEvent使えば同じことできるじゃん
005072007/01/11(木) 10:38:56
今のところUIスレッドから派生したクラスの中で作った
メンバ関数をInitInstance内の中で呼び出すしかないと思ってやってるんですが
初心者なので他になにか良い方法があれば教えてください
005172007/01/11(木) 10:43:23
Eventは使ったことがないのですが調べてみます
参考ページがあれば教えてもらえたらうれしいです
0052デフォルトの名無しさん2007/01/11(木) 10:49:13
つまり、ユーザーインターフェースは入力も出力も必要ない
割り込みは必要ってことでいいのかな
005372007/01/11(木) 10:53:17
はい

子スレッドの状態を見るのはメイン側にメッセージを飛ばして解決しています
0054デフォルトの名無しさん2007/01/11(木) 11:16:02
単純な処理を複雑にやりたいということか
005572007/01/11(木) 11:19:17
クラスで実装しないと厳しいので単純でもないです
005672007/01/11(木) 11:23:34
初期化はコンストラクタ内でやっています
InitInstanceかRunいがいに処理を置ける場所がないように見えます
処理はし続けているので単純と言われれば単純ですね

メッセージを待って処理をするタイプではないです
0057デフォルトの名無しさん2007/01/11(木) 11:38:24
Javaの例も割り込みは自分でチェックするか例外が発生するしかないようだし
イベントの発生をチェックしては。
Sleepが絡むときはSleepのスレッド作ってそこからイベント、かなあ
最近のMFC知らんけどもっといい方法あるのかな
0058デフォルトの名無しさん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見て確認、ってのが一番楽。
0059デフォルトの名無しさん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の処理中に他の処理を割り込ませることは無理なのですか?
006072007/01/11(木) 12:22:41
MFCで.NETのクラスを派生ですか
どうやればできるのかわかりません
クラスの追加ウィザードからできるのでしょうか?
環境はVC++7.0です
006172007/01/11(木) 12:24:50
>>59
すいません初心者なもので
あとそれは引用だけでまったく答えになっていませんよね
0062デフォルトの名無しさん2007/01/11(木) 12:30:13
馬鹿を晒しものにしてやってるだけだから気にしなくていいよ
006372007/01/11(木) 12:32:43
>>61
そうですか初心者を教えるスレで初心者相手に
馬鹿にして猿山大将気取りのなにが楽しいのか
わかりませんが気にしないことにします
006472007/01/11(木) 12:33:33
>>62さんでした^^;
0065デフォルトの名無しさん2007/01/11(木) 12:40:12
初心者ならともかく馬鹿に教えることは不可能
006672007/01/11(木) 12:52:20
>>65
>>25>>26の時点では
InitInstanceの処理中に割り込みをするにはメッセージを使うのかもしれないと
思っていたのでRun関数は通っていないのでメッセージ待ちは他の場所がるのかと
勘違いしていました

この時点での初心者と馬鹿の違いを教えてもらいたいところですが
それはまたスレ違いだと思いますので
馬鹿ですいませんがVC++を教えてもらえないでしょうか?^^;
0067デフォルトの名無しさん2007/01/11(木) 12:56:56
割り込みって書いてる時点で、Windowsアプリの知識が根本的に足りないと感じた。
0068デフォルトの名無しさん2007/01/11(木) 12:57:11
便乗質問ですが
ワーカースレッドでは実現困難で、UIスレッドを使うべきケースが思い浮かびません。
いくつかサンプルを拾って見てみたのですが、サンプルを書くために必然性なしにUIスレッドに
しているとしか思えないようなモノばかりでした。

CWinApp以外ではどういう時に使ってます?
0069デフォルトの名無しさん2007/01/11(木) 12:57:52
一つ聞かせて頂きたいんですけど、C++はCの上位互換ですけど
C++が出来てCが出来ない人って居るんでしょうか?
0070デフォルトの名無しさん2007/01/11(木) 13:02:29
そうでもない
007172007/01/11(木) 13:02:53
>>67
子スレッドの処理中にメイン側の合図で他の処理をすることが目的なので
割り込みと表現したのですが^^;
0072デフォルトの名無しさん2007/01/11(木) 13:04:48
>>69
STLとboostが使えないと何も出来ない、という人はいるかも。
0073デフォルトの名無しさん2007/01/11(木) 13:08:34
>>71
Windowsではそういうことはできない。
メッセージでも、明示的/暗黙的にメッセージを処理できる状態にしてやらないと処理できない。
0074デフォルトの名無しさん2007/01/11(木) 13:13:38
スレッドと言いながら関数に割り込みかけてる。
007572007/01/11(木) 13:19:41
>>73
できないとなるとフラグメンバ変数かシグナル状態を変えて
ソース内で定期的にif文を記述しでチェックするしかないのでしょうか
そうなると>>58さんの方法がまだ理解できてないんですが
同じような方法ということでしょうか?
0076デフォルトの名無しさん2007/01/11(木) 13:22:22
関数の中のループに割り込みかけたいらしい。
0077デフォルトの名無しさん2007/01/11(木) 13:24:58
winnyはC++で書かれていますが、winMXもC++で書かれているのですか?
0078デフォルトの名無しさん2007/01/11(木) 13:37:41
>>75
フラグ変数がCEventオブジェクトになっただけ
0079デフォルトの名無しさん2007/01/11(木) 13:45:15
>>75
普通、重たい処理はループしてるから遅いわけで、ループ一回りに掛かる時間は
ごくわずか。そのループ中に1行eventの状態チェック入れるだけ。
ループしてないのに重いとか、ループ一回りが遅いというなら75の言うとおりになるかも。
0080772007/01/11(木) 16:10:41
誰か知りませんでしょうか?
0081デフォルトの名無しさん2007/01/11(木) 16:34:28
VisualStudio2003を使用してMFCでモードレスダイアログを実装しようとしています。

http://support.microsoft.com/kb/403848/ja

こちらのページを見て、そのとおりに記述しているのですが、コンストラクタ内の
Create文を通ってもダイアログが表示されません。OSはWinXPです。
問題がわかる方、またはその他の良い方法を知っている方がいましたらよろしくお願いします。

0082デフォルトの名無しさん2007/01/11(木) 16:37:50
>>81
ダイアログのID はIDDですか?
0083822007/01/11(木) 16:49:15
>>81
ごめん、ちょっとやってみた。
ダイアログのプロパティでVisible をtrueにするか
new したあとで ShowWindow(SW_NORMAL) 呼んでみな
0084デフォルトの名無しさん2007/01/11(木) 18:47:13
MFC使うなら2005Expressじゃダメですか?VC8.0あたり買ってこないとダメ?

後これといった質問はないのですが、
此処での初心者ってのはどこまでが初心者なんですか?
0085デフォルトの名無しさん2007/01/11(木) 19:24:55
>>81
特に問題なくダイアログ表示できた
0086812007/01/11(木) 19:29:46
>>82
IDDでした

また、Visibleにしたところ、ちゃんと表示されるようになりました。
(今までのは作成だけされて見えていなかったということでしょうか?
タスクを見ているとメモリ使用量だけはCreateした分だけ増えていたので・・・)
ありがとうございました!
0087デフォルトの名無しさん2007/01/11(木) 21:30:29
まあそうみたいだな。
モードレスダイアログは作りっぱなしでSHOW、HIDEするケースが多いから
ShowWindow()も試しておいたほうがいいと思うよ。
0088デフォルトの名無しさん2007/01/11(木) 22:06:09
プログラム関連ではないのですが、質問です。
resource.hのファイル名を変更してTestResource.hとしました。
以降このファイルにリソースのdefine値を連動させておくため、
リソースファイルのincludeをresource.hからTestResource.hに変更した
まではよかったのですが、リソース変更後に保存するとなぜかinclude
先がresource.hに戻ってしまいます。これはどうしてなんでしょうか?
解決法を知っている方いましたらお教えください。お願いします。
0089デフォルトの名無しさん2007/01/11(木) 22:10:17
変えるとなんかいいことあるの?
0090デフォルトの名無しさん2007/01/11(木) 22:13:38
>>88
リソースビューで、xx.rcを右クリックしてインクルードファイルの設定替えればいい
つーか、ヘルプに書いてあると思うが
0091デフォルトの名無しさん2007/01/11(木) 22:25:06
>>84
Express Edition には MFC はついてこないので
パッケージ版を購入してくるべし。
0092デフォルトの名無しさん2007/01/11(木) 22:34:15
>90
できました、ありがとうございます。
0093デフォルトの名無しさん2007/01/11(木) 22:36:49
>>91本当ですか。。。。所持金ヤバイのにorz2万とかムリス
アカデミはなんか無理そうだし・・・
0094デフォルトの名無しさん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);
}
0095デフォルトの名無しさん2007/01/11(木) 23:10:33
>>93
アカデミックはスタンダード相当でMFCもきちんとあるはずだぞ。
0096デフォルトの名無しさん2007/01/11(木) 23:28:20
>>94
こんな手があったのか。面白いけどちょっと怖いな。
0097デフォルトの名無しさん2007/01/11(木) 23:34:16
>>95
学生じゃ無くて無理そうなのでは
0098デフォルトの名無しさん2007/01/12(金) 13:33:06
MFCのデータベースプログラミングをしようとして
ODBCを使ってみたんですがテーブルごとにクラスが作られてしまいますが
いろいろなテーブルを取得したい場合はどうすればいいのでしょうか?
0099デフォルトの名無しさん2007/01/12(金) 15:25:55
>>98
自分で直接CDatabaseやらCRecordsetやらをいじくればいいが、
今時ならせめてADOかOLEDBを使うのを薦める。
0100デフォルトの名無しさん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);
0101デフォルトの名無しさん2007/01/12(金) 16:23:00
プロジェクト名.INI に保存されるというのはどこに書いてあった?

まあ2000ならwin.ini でもなくてレジストリにマッピングされてると思うけど。
■ このスレッドは過去ログ倉庫に格納されています