■MFC相談室 mfc17d.dll■at TECH
■MFC相談室 mfc17d.dll■ - 暇つぶし2ch281:デフォルトの名無しさん
07/01/05 13:58:48
先生!なぜかループが一回も回りません!

282:デフォルトの名無しさん
07/01/06 09:18:47
>>281
femaleが空なんじゃないか?
つーか、FEMALE_MAXが0なのか。

283:デフォルトの名無しさん
07/01/06 09:43:43
//if(female[i].GetAge()<16)
//   continue;

こういう余計な制限もとっちゃおうぜ。

284:デフォルトの名無しさん
07/01/06 09:44:44
//if(female[i].IsMarried()==TRUE)
//   continue;

よく考えたらこれだって別に大した制限じゃねぇな。

285:デフォルトの名無しさん
07/01/06 09:46:04
if(female[i].GetAge()>35)
   continue;

さすがに遠慮したいから入れておこうな。

286:デフォルトの名無しさん
07/01/06 09:47:49
>>281
しょうがない、female -> maleに置き換えるんだ。

287:デフォルトの名無しさん
07/01/06 10:06:14
MFC使ってるやつ少ないのかと思ってたけど
くだらない話になると書き込みが増えるな
ROMってるやつ多いのか?

288:デフォルトの名無しさん
07/01/06 12:06:22
VisualC++ .net Standard使用
CImageのLoadFromResourceに関して質問です
BITMAPリソースは読み込むことができるのですが、jpgファイルをバイナリリソースとして格納した場合に、こいつを読み取ってくれません
LoadResourceを使ってtmpファイルでも書き込んでからCImage::Loadなんて馬鹿馬鹿しいですし
何とか簡単にリソースに埋め込んだバイナリデータのjpgを読み込ませる方法はないでしょうか?
ちなみに、こんな感じでやってます

CImage image;
image.LoadFromResource(GetModuleHandle(NULL),ResourceID);

289:デフォルトの名無しさん
07/01/06 12:20:49
あまりにもバグって気持ち悪くなってきた

290:デフォルトの名無しさん
07/01/06 13:06:39
VC6にはCImageないんだよな

291:デフォルトの名無しさん
07/01/06 13:19:40
DIB程度ならCreateDIBSectionをCBitmapにAttachとかで済むから、あまり困らなかったな。

>>288
::CreateStreamOnHGlobalとCImage::Load(IStream *)を使えば、ファイル無しでできる。
効率から言うと、バイナリリソースアクセス用のIStream実装を書いた方が良いけど('A`)マンドクセ

292:デフォルトの名無しさん
07/01/07 01:51:10
初期状態でドッキングされていないツールバー(フローティングツールバー?)の作り方を教えてください
普通のツールバー(ドッキングされているツールバー)はスケルトン作成(SDI or MDI)したソースを見れば
分かりそうな感じですが、それとスタイルが違うツールバーはどのように作れば良いですか?
グーグルで調べているのですが、思ったような情報に行き当たらず困っております

293:デフォルトの名無しさん
07/01/07 02:56:21
MDI野郎の文体だね

294:デフォルトの名無しさん
07/01/07 03:26:52
>>291
サンクス
CreateStreamOnHGlobalでいけました
というか、IPictureをかまさないとストリームにならないのでかましたわけですが
これを使うとCImageの意味がまったくをもってないですね(笑)

295:デフォルトの名無しさん
07/01/07 10:14:35
MFCのフローティングツールバーはMFCが自力でやってるから
具体的な方法はMFCのソース読めばわかるよ
確かバーの上に張り付いてるやつを別ウインドウ開いて丸ごと引っ越すだけだったと思う。

296:デフォルトの名無しさん
07/01/08 17:20:10
>>295
レスありがとうございます

ど素人(入社1年目)なので、それだけですとやり方が分かりません・・・

297:デフォルトの名無しさん
07/01/08 17:27:33
追加で質問をさせてください

ツールバー上のアイテム(ボタン?)をドラッグした時に
点線の四角形またはそのアイテムのアイコン(半透明)を
ドラッグ中のマウスポインタの横に表示させるにはどうすれば良いですか?
イメージとしては、VC++でダイアログリソース編集時にコントロールアイコンを
ツールバーからドラッグした時のような感じで

298:デフォルトの名無しさん
07/01/08 18:01:41
>>296
自力で調べて判らないようなら上司なり先輩なりに聞け。
それでも判らないようならあんたには不適当な要求仕様なのだからそう上司(なり指示した人間)に言え。

299:デフォルトの名無しさん
07/01/08 18:30:36
>>298
スレタイを2万5千回ぐらい嫁。

300:デフォルトの名無しさん
07/01/08 18:36:21
>>299
6時間も7時間もやってらんない。

301:デフォルトの名無しさん
07/01/08 18:47:17
>>299
相談室だから>>298のようなアドバイスもアリじゃないか

302:デフォルトの名無しさん
07/01/08 18:52:35
>>298は的確だと思ったな

あと2ちゃんで仕事をにおわせると答えてもらいにくくなるよ
タダで教えてその内容で相手は金を得るわけだし

303:デフォルトの名無しさん
07/01/08 18:52:59
>>301
要求仕様のさばき方相談室じゃないんだよー

304:デフォルトの名無しさん
07/01/08 19:37:22
会社だったら違う人に仕事まわすだけだろ
できない仕事をかかえこまないように

305:デフォルトの名無しさん
07/01/08 22:18:54
>>296でわからないっつーのはもうアレだ。
なんつーか色々と色んなことが困難だw

306:デフォルトの名無しさん
07/01/08 22:19:30
いや、>>295な。

307:デフォルトの名無しさん
07/01/08 23:27:04
>>292,296
質問の意味が2通りに取れるんだが
MFC標準のCToolBarをフローティング状態で表示したいってこと?
それとも独自にフローティングツールバーを実装したいってこと?

おそらく前者の意味で聞いてるんだと思うけど、
それならCFrameWnd::FloatControlBar()でフローティング状態にできるよ。
後者なら、MFCのソースを参考に自分で書けとしか言えません。

308:デフォルトの名無しさん
07/01/09 11:46:02
ダイアログバーにIDC_STATICのスタティックテキストを貼り付けると、
そのテキスト上でのマウスドラッグはバーのドラッグ処理になりますが、
これってどのような仕組みなのでしょうか。
ダイアログバー内に貼り付けた自作ウィンドウクラスにも
このような動作を組み込みたいんです。

OnNcHitTestでHTTRANSPARENTやHTCAPTIONを返してみても
まったく動かなかったり、コントロールだけが動いたり、
ダイアログバー内でダイアログ自身が動いてしまったりと、
仕組みがわからずに苦戦しています。

同じスタティックテクストでも
IDC_STATIC以外の名前を付けるとドラッグにならないようなので、
コントロールバークラスがIDC_STATICに対して
なにか特別なことでもやっているのでしょうか。

309:デフォルトの名無しさん
07/01/09 12:48:24
初心者はIDC_STATICではまる

310:デフォルトの名無しさん
07/01/09 12:51:33
初心者 IDC_STATIC の検索結果 約 211 件中 1 - 10 件目 (0.25 秒)

311:デフォルトの名無しさん
07/01/13 23:36:22
ドキュメントビューアーキテクチャという概念がよく分かりません

ドキュメント: プログラム内で共有するデータを扱う, メンバ変数がたくさんある, ファイル入出力
ビュー: ユーザとのインタフェースを扱う, 描画を取り仕切る, コントロール管理

の認識でOKですか?

312:デフォルトの名無しさん
07/01/13 23:58:14
いや

313:デフォルトの名無しさん
07/01/14 00:00:08
>>311
概ねOKじゃね?
どっちかっていうとその役割よりドキュメントとビューがセットで1つになってること(ドキュメントテンプレートってのなかった?)
新規作成でできるもんがドキュメント+ビューを型にしたインスタンスであることって方が重要のような気がするがわかっているならOK。

そうすると自然にMDIのアプリは

1.メインフレーム(メニューとかくっついてる)
2.(ドキュメント+ビュー)X新規作成で生成された数分
3.その他のツールウィンドウやダイアログ

で構成されることになる。
VCだと

・メインフレーム(メニューとかくっついてる)
・ソースコードエディターとかリソースエディター等など(新規作成からできる奴)
・ソリューションエクスプローラーとかアウトプットウィンドウとか・・・

にあたる。
強引に「こうやって作れよ!」っていう型なんで設計からしてこうやってなってないと駄目っちゃ駄目だなw

314:311
07/01/14 00:12:54
ありがとうございます

315:スイ
07/01/14 00:22:26 BE:311467872-2BP(0)
えっと、すいません、↓で討論?みたいなのをしているんですけど、
URLリンク(jbbs.livedoor.jp)
私は、真珠さんって少し変わった趣味を持った人だなー、とかは思いますけど、それだけで叩いたりするのってひどいと思いませんか?
私はあまりネットには詳しくないのでよくわからないんですが、なんかほなみんさんが2chとか言ってたので調べてみると見つかったので書き込んでみました。
このままだと真珠さんがかわいそうなんで、誰か真珠さん側についてほなみんさんを叩き返してくれませんか?私じゃ勝てそうにないので。

316:デフォルトの名無しさん
07/01/14 00:46:00
↓ハイ、次の方どうぞ。

317:デフォルトの名無しさん
07/01/14 01:44:25
えっと、これ本番ですか?


318:デフォルトの名無しさん
07/01/14 06:58:08
>>313
なんで初心者に向かって何の前置きも無しに、あまりお目にかからないMDIのさらにレアな
複数のドキュメントタイプを持つアプリの解説を始めるのか、理解に苦しむよ。
VS2005でMFCアプリのデフォルトプロジェクトがMDIになったのは大失敗な気がする。

>>311
URLリンク(msdn2.microsoft.com)(VS.80).aspx
この解説が分かりやすいよ。

319:デフォルトの名無しさん
07/01/14 08:06:10
>>318
ええ!?
>>313のどこをどう読めばが複数ドキュメントの解説がメインになってるの?
とんだ濡れ衣だ!勘違いなら謝ってよ!

320:デフォルトの名無しさん
07/01/14 08:06:57
X複数ドキュメント
○複数ドキュメントタイプ

321:デフォルトの名無しさん
07/01/14 09:00:21
>新規作成でできるもんがドキュメント+ビューを型にしたインスタンスであることって方が
>重要のような気がするがわかっているならOK。

SDIでは100%成り立たないし、単一のドキュメントタイプをもつMDIなら自明で重要性は感じられない。
これが重要な意味を持つのは複数のドキュメントタイプをもつMDIしかないように思った。
確信犯だと思ったんだが、気に障ったのなら謝るよ。漏れの知らない世界があるんだろうね。

322:デフォルトの名無しさん
07/01/14 10:00:53
>>321
え?じゃあ、君の勝手な妄想で俺につっかかってきたの?
それとあきらかにその文章で複数ドキュメントタイプの説明なんて書いてないのにその態度はなんなの。
しかも、確信犯の使い方も間違ってるし。
こんなの業務でやったら大変だぜ。改めろよ。

323:デフォルトの名無しさん
07/01/14 10:23:18
いや、改めなくていいから一切社会活動を行なわないでください。

324:デフォルトの名無しさん
07/01/14 10:27:37
>VS2005でMFCアプリのデフォルトプロジェクトがMDIになったのは大失敗な気がする。
これ昔からだろ、2005ではじめて触ったのか

325:デフォルトの名無しさん
07/01/14 11:07:34
SDI MDI
MFC以前からある

ドキュメント/ビュー
MFC2.0で追加された

326:デフォルトの名無しさん
07/01/14 12:59:31
CFrameWndの派生クラスをドキュメントテンプレートから閉じるにはどうしたらいいでしょうか。
つまり class CHogeDocTemplate : public C[Single/Multi]DocTemplate
の OpenDocumentFile で特定のフレームを閉じる様にしたいのですが、
閉じる時に CFrameWnd::DestroyWindow や OnCloseDocument を使うと
OnClose が呼びだされないがこれで大丈夫なのか、
だめだとしたら正しい閉じ方はどうなのかを教えていただきたいのです。
よろしくお願いします。

327:デフォルトの名無しさん
07/01/14 13:14:37
普通に閉じればいいじゃん

328:デフォルトの名無しさん
07/01/14 13:34:04
CFrameWnd::OnCloseからDestroyWindow呼んでるから
OnClose が呼びだされないのは当たり前

329:デフォルトの名無しさん
07/01/14 13:39:10
>>327
普通にとはどのようにでしょうか?

>>328
その通りです。OnClose から閉じる方がドキュメントを閉じる等の処理も
正しく行われるように読めたので出来ればそうしたく質問しております。

330:デフォルトの名無しさん
07/01/14 13:47:01
OnCloseからOnCloseDocument呼んでるから
OnCloseDocumentからOnClose が呼びだされないのは当たり前

331:デフォルトの名無しさん
07/01/15 21:50:20
OnCloseはウィンドウを閉じる時
OnDocumentCloseはドキュメントを閉じる時
と考えれば何も問題ないべ

332:デフォルトの名無しさん
07/01/16 04:24:49
CPUやメモリをあまり気にせずにプログラム書いてたら
起動しただけでCPU使用率50%という異常な状態になっていました。
このプログラム自体、起動と同時に行う処理はほとんどなく、
SDIのスケルトンと同じようなもののはずなんですが。。

処理がないのにCPU使用率が高いまま下がらないのは
原因としてどのようなことが考えられますか?
もしくは原因を調べる方法とかってありますか?

333:win32apiスレ17
07/01/16 04:36:15
スレリンク(tech板:17番)
に最初書き込みましたが、こちらのが適切かなと思って移動してきました。

Acrobatのページサムネール表示、あるいはPowerPointのスライド一覧表示のように、
イメージのリストを表示し、かつ、その順番をマウスのドラッグで調整したいと思ってます。
ドラッグ中、イメージが挿入される場所にカーソルの様な縦線が出てきて欲しいなと思ってます。

こういうコントロールの既存の実装やコードのサンプルなど御存知でしたら御教示頂けないでしょうか?
codeguru、codeprojectは廻ってみたものの、どうにもサムネールの表示どまりでして・・・


334:デフォルトの名無しさん
07/01/16 05:27:51
>>332
情報少なすぎでどうespしろと?


335:デフォルトの名無しさん
07/01/16 05:36:21
>>333
自分でエディタとか作ったことない?


336:デフォルトの名無しさん
07/01/16 08:03:52
>>332
プロファイルで

337:デフォルトの名無しさん
07/01/16 09:03:52
ある場所から突然malloc(255)がNULLになります。直前のmallocは必ず成功で、場所は一定
HEAP、スタックを2000000(2M)や20000000(20M)で試しましたが、タイミングや場所は変わらないようです
お手上げです。解決策をお知りの方おりませんか?

338:デフォルトの名無しさん
07/01/16 09:15:52
直前のmallocまでのすべての戻り値をここにさらしてごらん

339:デフォルトの名無しさん
07/01/16 09:42:17
直前のmallocの戻り値でいいですか?

malloc(255);//必ず成功。 戻り値:0x00b72e68
WideCharToMultiByte
MultiByteToWideChar
malloc(255);//必ず失敗

こんな感じです

340:デフォルトの名無しさん
07/01/16 09:59:04
ヒープ壊してんじゃねえの

341:デフォルトの名無しさん
07/01/16 10:05:25
解決しました!
MultiByteToWideCharを2度使いmallocのサイズを指定していたのですが、wchar単位でNULLが含まれていないため少なくなっていました
成功するほうをmalloc((len+1)*sizeof(wchar_t));で動きました。
ありがとうございました。

342:デフォルトの名無しさん
07/01/16 12:49:33
CStringWじゃ駄目なのか?

343:デフォルトの名無しさん
07/01/16 17:35:59
>>332です。

>>336
ありがとうございます。
プロファイルで調べたところOnIdle()のreturnが原因だったようです。

そのreturnのことで質問なのですが、
OnIdle内でのレンダリングによってCGアニメーションを表示するプログラムを書いているのですが、
return TRUE;だと前述のようにCPU使用率が高くなるのですが、
アニメーションは正常に表示されます。
return CWinApp::OnIdle(lCount);だとCPU使用率の問題は解消されるのですが
OnIdle()が呼ばれる間隔が長くなるためか、アニメーションが滑らかに表示できません。

この2つを同時にクリアできる良い方法はありませんか?
よろしくお願いします。

344:デフォルトの名無しさん
07/01/16 19:02:17
んー、、、目的の fps が取れてるなら Sleep(0)を呼ぶとかどうだろう、Sleep(1)でもいいが

345:デフォルトの名無しさん
07/01/16 19:27:01
ほっといてやれ

346:デフォルトの名無しさん
07/01/16 21:57:57
>>344
ありがとうございます!!
どうやらすごく基本的なことのようですね。。

347:デフォルトの名無しさん
07/01/18 21:52:58
マルチラインエディットボックスで
水平方向のスクロールバーの位置から
列の何文字目から表示している知りたいのですが
どうすればいいのでしょうか?

やりたいことはエディットボックスの中身を編集して
かきかえても書き換える前と同じ位置を表示したいのです。
LineScrollを使用すれば垂直はうまくいくのですが、水平がうまくできません。

また、SetScrollPosを使用してもエディットボックス内が更新されないのでこまっています。

348:デフォルトの名無しさん
07/01/18 23:52:25
>>347
「書き換えても書き換える前と同じ位置」というのもよくわからないんだけど、
わざわざスクロールバーを使っているのはなぜ?
単純にGetSelでカーソル位置を取得しておいてSetSelで戻すだけじゃダメ?
あと、エディットボックスの更新するにはUpdateData(FALSE)とUpdateWindow()
じゃない?
質問がよくわかってないのではずしてるかも知れんけど。

349:347
07/01/19 14:44:11
>>348 さん
レスありがとうございます。

自己解決しました

350:デフォルトの名無しさん
07/01/19 16:13:48
CWnd* CWnd::GetDlgItem(int nID); で得られるCWndのインスタンスの解放は
誰に責任があるんでしょうか?ソースコードを少し追ってみると、独自のアロケータ
でごにょごにょやってるような感じなんですが。

351:350
07/01/19 16:23:11
自己解決しました。こういう一時的に作ったオブジェクトはMFCが勝手に
CWinApp::OnIdle() → CWnd::DeleteTempMap() あたりで解放するんですね。



352:デフォルトの名無しさん
07/01/19 16:23:37
ソース追うのもいいけど、ヘルプもみよう

353:デフォルトの名無しさん
07/01/19 16:34:29
いや、だってヘルプには「返されるポインタは、一時的なポインタです。後で使用するために保存しておくことはできません。
」としか書いてないから、誰がどこでいつ解放するか気になるじゃん?

354:デフォルトの名無しさん
07/01/19 16:39:54
一時的なポインタを解放するのか?

355:デフォルトの名無しさん
07/01/19 17:09:59
そりゃ解放するでしょ。問題は誰がいつどこで開放するかであって、それに
よって「一時的なポインタ」とやらの有効範囲が決まってくるわけだから。

356:デフォルトの名無しさん
07/01/19 17:21:08
クラスがなんだかわかってないのでは?

357:デフォルトの名無しさん
07/01/19 18:22:15
あれ、FromHandle()あたりからDeleteTempMap()をたどって知ったんだったかな、、、
ヘルプだけで一時的なCWnd*がいつ消されるかも読んだ気がしたが・・・

358:デフォルトの名無しさん
07/01/19 18:27:04
>>357
それがヘルプに書いてあれば悩む必要がないのにね。

359:デフォルトの名無しさん
07/01/22 18:39:22
すいません。
自作でエクスプローラ風アプリケーションを作りたいのですが、
それ風なサンプルを説明しているサイトとか知りませんか?

全く、それ系のインターフェイス名も知らないんで、
ググれなく困っています。

360:デフォルトの名無しさん
07/01/22 19:00:58
せっかく教えても無駄になりそうだからやめておこう

361:デフォルトの名無しさん
07/01/22 20:54:50
>>359
えー!!
そんな殺生なぁ

362:361
07/01/22 20:56:48
>>360
おねがいっす!!

363:デフォルトの名無しさん
07/01/23 11:03:34
質問なんですけど
AppクラスからDocumentクラスのポインタの取得方法を教えてください
よろしくお願いします。

364:デフォルトの名無しさん
07/01/23 11:12:52
自分で持ってそうな気がするけど

365:デフォルトの名無しさん
07/01/23 11:13:20
Viewが一つだけなら
GetFirstDocTemplatePosition()、GetNextDocTemplate()、GetFirstDocPosition()、GetNextDoc()
あたりで。

366:363
07/01/23 11:19:24
>365
GetFirstDocPosition()、GetNextDoc()で取得できました。
ありがとうございます。

367:デフォルトの名無しさん
07/01/25 16:20:26
スライダについて質問です

slider.SetRange(0, 100, true);
slider.SetTicFreq(10);
slider.SetPos(0);

このようなスライダを作り、スライダで設定した値をEditBoxに表示しています。
このとき、スライダのつまみをドラッグした場合には正しい値が得られますが
クリックで設定しようとした場合が上手くいきません

例えば、70を設定しようと思って該当する目盛りのあたりをクリックすると、
70の位置には来ず、マウスボタンが押されるたびに60と80で切り替ってしまいます。
クリックでも値を設定できるようにするには、何か特殊な処理が必要なのでしょうか?




368:デフォルトの名無しさん
07/01/25 18:32:40
スライダの現在位置が0の時に70の位置をクリックしたら
0+GetPageSize()で得られる位置に移動するのがスライダ
コントロールの仕様だと思うんですが。

仕様が気に入らないのであれば、自分で必要なイベントを拾ってSetPos()すれば良い。

369:デフォルトの名無しさん
07/01/26 01:06:48
CEdit::SetFoces()に関する質問です。

任意のテキストフィールドをフォーカスさせたい場合は
CEdit::SetFocus()を行うと実現できますが、
このとき、フォーカス対象のテキストフィールドに文字列が
入力されているとき、文字列全体を範囲選択した状態で
フォーカス移動させるにはどのような手法があるでしょうか?

イメージとしてはタブでフォーカス移動させたときのような感じです。

よろしくお願い致します。

370:369
07/01/26 01:14:49
ごめんなさい。自己解決しました。

CEdit::SetFocus();
CEdit::SetSel(0,-1);
で実現できるようでした。

371:デフォルトの名無しさん
07/01/27 01:54:56
ダイヤログベースのアプリです。
英語化について教えてほしいです。

タイトルアイコンをクリックした時のシステムメニューや、
AfxMessageBoxを表示させたときのキャンセルの表示など
あらかじめ用意されている部分に日本語が表示されますが、
すべて、一切がっさいを英語にしたいと考えています。

どのような方法で英語かすることができるでしょうか?

372:デフォルトの名無しさん
07/01/27 02:56:08
>371

アプリケーションを実行するとき、デフォルトのコードページを英語に変更する。
でも、システムのバグをたたくこともあるからお勧めしない。


373:デフォルトの名無しさん
07/01/27 06:21:45
英語環境でビルドしてあるやつでもそうなるから
OSの問題だろ

374:デフォルトの名無しさん
07/01/27 13:08:41
だから実行時指定

375:デフォルトの名無しさん
07/01/27 15:15:32
>>371
日本語関連を全くインストールしていない、設定も悉く日本にしていない端末で、実行する。

376:デフォルトの名無しさん
07/01/27 15:21:43
MFCは全くの初心者なのですが、MFCにもバージョンはあると思うのですが
Visuall C++(VC6)に付属のMFCのバージョンはいくらになりますか?


377:デフォルトの名無しさん
07/01/27 15:31:00
6.0

378:デフォルトの名無しさん
07/01/27 17:48:04
WikipediaのMFCの項目、批判の所見てワロタ。
どこの知障だよ、書いたの。

379:デフォルトの名無しさん
07/01/27 18:41:44
>378
DelphiやJavaはライブラリらしい。しかも、C++はコンパイル時間が長いらしい。

380:372
07/01/27 19:01:12
>371

あと、afxMessageBoxにはユーザ拡張用の前呼び出し処理があるから、
それを横取りして自作のメッセージボックスを表示する。

とかかな。


381:デフォルトの名無しさん
07/01/27 19:01:26
コンパイル時間は長いとは思うけど、他のオブジェクト指向言語と
比べてどうなのかはわからんな。

ただ、「C++だから」ってより「色々インクルードするから」長いんだけど。


382:デフォルトの名無しさん
07/01/27 19:06:08
実行時コンパイルの方が好感もたれるのか

383:デフォルトの名無しさん
07/01/27 19:52:07
すみませんMFCど素人です
ANSIの
unsigned char foo[64]
MFCではどの様に書いたらいいのでしょうか?
コンパイラはVC6です

384:デフォルトの名無しさん
07/01/27 20:20:34
unsigned char foo[64]

385:デフォルトの名無しさん
07/01/27 20:47:58
ガベコレがないのが致命的欠点であるかどうかは検証不可能だから
これはもちろんWikipediaに書いてはいけない。

Delphiの方にもしょうもない書き込みしてるが、
群を抜いているのなら特定のソフトウェアをあげつらう必要はなかろうに。
「中立的な観点」を欠いてしまっているのが分らないのかね。

386:デフォルトの名無しさん
07/01/27 23:24:57
何で C# って使われてないの?
VC++ ネイティブのより多少計算とか遅いかもしれないけどさ、
開発が VB 並にめっちゃ楽だし、
文法は Java そっくりで習得も移行も容易だし、
全体的にスマートな印象を受けるじゃん
いい加減 VC++ 信仰は止めて欲しいんだよね
一々 Windows と UNIX(Linux) 版を作りたくねーんだよ
もうさ、時代は中間言語の時代だと思うね
頼むから、ネイティブ信仰は止めようぜ


387:デフォルトの名無しさん
07/01/27 23:34:26
>>386
TPOで使い分けるでFAだろ。
まあその手の議論は実りがないから他でやったほうがいいな。

388:デフォルトの名無しさん
07/01/28 08:18:59
InitDialog中で、必要なファイルがあるかのチェックをして
なければSendMessage(WM_CLOSE);として終了するようにしているのですが
一瞬Windowが表示されてしまいます。。。
Windowを表示させずにそのまま終了する方法はないでしょうか?

389:デフォルトの名無しさん
07/01/28 08:37:30
ダイアログ出す前に調べる

390:デフォルトの名無しさん
07/01/28 10:07:30
>>388
モーダルならEndDialog、モードレスならDestroyWindow。

391:デフォルトの名無しさん
07/01/28 11:06:29
ほほぉ、それからそれから?

392:デフォルトの名無しさん
07/01/28 12:29:47
VC8のMFCではダイアログボックスに貼り付けるボタンやテキストボックスのサイズや
表示位置をそれぞれのプロパティから数値で詳細に設定できるのですが、VC6のMFCでは
そのようなプロパティに項目が見当たりません、VC6で皆さんは位置決めやサイズを
何処で設定されているのでしょうか?

393:デフォルトの名無しさん
07/01/28 13:03:17
テキストエディタ

394:デフォルトの名無しさん
07/01/28 13:16:13
>>389、390
ありがとうございました!

395:デフォルトの名無しさん
07/01/28 16:34:24
ダイアログベースのアプリです。
ウインドウサイズをマウスで自由に変更できるようにするには
どのような設定、または処理を作れば良いでしょうか?
SDI/MDIベースでないとできないですか?

396:デフォルトの名無しさん
07/01/28 16:48:03
いいえ。

397:デフォルトの名無しさん
07/01/28 17:04:26
サイズ可変のスタイル付ければダイアログ自体のサイズは変えられるようになるが
中のコントロールもそれにあわせて調整したければ、自分で書くしかない。

398:デフォルトの名無しさん
07/01/28 17:17:53
>>397さん
お返事ありがとうございます。
サイズ可変のスタイルのつけ方は、具体的なコードイメージを教えていただけないでしょうか。
ダイアログ内部に設置したCEditのコントロールもあわせて変更するように実装します。

399:396
07/01/28 17:44:13
スルーされたから要点だけ突っ込み。
>サイズ可変のスタイルのつけ方は、具体的なコードイメージを教えていただけないでしょうか。
MSDN嫁。リソースで定義したダイアログならリソースエディタのプロパティの該当項目をチェックするだけ。

>ダイアログ内部に設置したCEditのコントロールもあわせて変更するように実装します。
サイズ変更のメッセージハンドラを書く必要がある(勿論そこでCEditのサイズを調整する)ので、
初心者向けの解説サイトでも探して解説を読め。

400:デフォルトの名無しさん
07/01/28 18:57:22
すいません。でも方法教えていただきありがとうございました。
これからはMSDNみてから質問します。
CEditのほうもありがとうございました。

401:デフォルトの名無しさん
07/01/28 21:19:27
>>392ですが、どうしたらいい?


402:デフォルトの名無しさん
07/01/28 21:38:35
>>401
VC6の場合画面の右下のステータスバーに座標とサイズが表示されてるから
それを見ながら、マウスかキーボードで配置する。
[↑↓←→]で位置の変更、[Shift]+[↑↓←→]でサイズ変更。
もしくはリソーススクリプトを直接編集する。

403:デフォルトの名無しさん
07/01/29 05:11:45
ダイアログ上にコントロールを大量に貼り付けて等間隔に位置を合わせるtips。

1.テキストエディタで.rcファイルを開く。
2.DIALOG内のCONTROL行をcsvファイルとして保存する。
3.以下省略。

404:デフォルトの名無しさん
07/01/29 05:36:57
すごい大量のとき役立ちそうだなw

405:デフォルトの名無しさん
07/01/29 06:20:10
ダイアログエディタに位置そろえる機能ついてるけど

406:デフォルトの名無しさん
07/01/29 15:36:03
>>403の3.の部分はストリングテーブルを書くときに便利だな。
defineと日本語/英語の文字列が一気に書ける。同時に仕様書も作れて一挙両得。
defineの数値はドラッグすれば1づつ増やせるからバグもでない。

407:デフォルトの名無しさん
07/01/30 23:29:19
フレームウィンドウとかの OnDestroy について質問です
通常 OnDestroy の中では親クラスの OnDestroy を呼んでいますが、
その親の OnDestroy の直前の部分でメモリ開放処理を行うのは良くないですか?
リストに登録されているアイテムを開放したいのですが・・・

408:デフォルトの名無しさん
07/01/30 23:50:16
>>407
良くないと思う理由は?
リストってリストボックスやリストビューコントロールのこと?

409:デフォルトの名無しさん
07/01/31 00:00:58
>>408
CListCtrl のことです
これに new で生成したオブジェクトを登録?しています
そのまま終了するとメモリリークが発生してしまうので、
ウィンドウが破棄される直前に開放しようと思いました
それで OnDestroy に追加することにしました

良くないと思った理由は、親クラスの OnDestroy を
呼んでいるところの下にデフォルトで「ここに追加」
的なコメントが入っているからです

410:デフォルトの名無しさん
07/01/31 00:10:13
CListCtrlが消えるのいつなん?
プログラムが生成→消滅→生成→消滅→・・・ってやってるか
生成→表示→非表示→表示→非表示→・・・消滅ってやってるかでタイミング違ってくるじゃん。
生成したインスタンスを消したいタイミングはいつよ?
最終的に(それがいつだかはアプリにもよるが)インスタンスを確実に消滅さしときゃ問題ねーんだしよ。

411:デフォルトの名無しさん
07/01/31 00:29:46
リストは起動時から終了時までずっと表示です
終了時に一覧情報を保存して破棄することにしています

できるだけ綺麗な(オブジェクト指向的な)ソースコードを
書きたいので、親の OnDestroy の前が正解か後ろが正解か
が気になります

412:デフォルトの名無しさん
07/01/31 00:49:58
>>411
WM_DESTROYを処理してる間は、子ウィンドウは存在している。
URLリンク(msdn2.microsoft.com)

リストビューアイテムに設定しているデータを削除するのは、LVN_DELETEITEM, LVN_DELETEALLITEMSでやるといい。

413:デフォルトの名無しさん
07/01/31 00:51:06
>>412
ありがとうございます!
やってみます!

414:デフォルトの名無しさん
07/01/31 00:52:14
>>411
だったらOnDestroyは関係ないんじゃない?
つか、親のOnDestroy後にCListCtrlにアクセスされたら(するのか?)死ぬじゃない。
親のデストラクタでdeleteしとけばいいんじゃね?やってみ、やってみ。やってみたら結果報告ヨロ

415:デフォルトの名無しさん
07/01/31 00:53:07
CMainFrame::OnDestroy()の前後どっちか2択と言われたら後に1票。

個人的には、Documentで扱っているデータなら
CHogeDocument::OnCloseDocument() or OnSaveDocument()
ViewのみでやってるならCHogeView::PostNcDestroy()でやると思う。
CMainFrameにCListCtrlのデータ持たせるとViewからデータへの
アクセスが面倒じゃない?

416:デフォルトの名無しさん
07/01/31 01:08:09
>>414-415
ありがとうございます!
いろいろと試してみます!

417:デフォルトの名無しさん
07/01/31 08:40:38
親ウインドウと関係あるのはopenからcloseまで
closeしたらウインドウ関係ないから心配いらん

>綺麗な(オブジェクト指向的な)ソースコード

普通はデストラクタで解放

418:デフォルトの名無しさん
07/02/01 00:21:49
CListCtrl コントロールのイベント処理ですが
クリック時とダブルクリック時とで処理を分けたいと思っています
しかし、ダブルクリック時には先に必ずクリックイベントが
発生してしまってうまくいきません
NM_DBLCLK の直前に NM_CLICK が発生するのを
防ぐことはできませんか?

419:デフォルトの名無しさん
07/02/01 00:53:14
仮にNM_CLICKが発生しないようにしたらシングルクリック時の処理が出来ない。
コントロールの身になって考えれば、ユーザーのクリックがシングルなのかダブルの1発目
なのかの判断はできない。

シングルクリック時の処理開始をしばらく待ってみる以外手はないと思う。

420:デフォルトの名無しさん
07/02/01 01:11:47
>>419
レスありがとうございます
つまり、NM_DBLCLK 前には NM_CLICK が
絶対に発生してしまうということですね
何か良い手はないですかね・・・

421:デフォルトの名無しさん
07/02/01 01:20:02
だからシングルクリックのイベント後、しばらく待ってみてダブルクリックが来ないようなら
シングルの処理。来たらダブルの処理するだけ。

VBのサンプルではタイマー使ってるみたい。
URLリンク(support.microsoft.com)

422:デフォルトの名無しさん
07/02/01 09:45:30
本来はダブルクリックってーのは、シングルクリック→メニュー等選択
のショートカットだから、シングルクリックのあとにダブルクリックがきても
何も困らないんだけどな。
ダブルクリックを変なことに使おうとするからこうなる

423:デフォルトの名無しさん
07/02/03 19:33:32
これからMFCの勉強を始めたいのですが
書籍の「標準講座MFC」って今でも役に立つでしょうか?

MFC6.0ってちょっと古いみたいですが、最新のバージョン(MFC8.0?)と
大きく違うところってあるのでしょうか

424:デフォルトの名無しさん
07/02/03 20:20:00
仕事でどうしても必要なのか?
でなければ止めとけ。

425:デフォルトの名無しさん
07/02/03 20:42:57
>>423
新しいUI関連のクラスがいくつか無いだけで、基本はそんなに変わってないと思うけど。

426:デフォルトの名無しさん
07/02/03 21:18:50
URLリンク(www.shoeisha.com)
ソースは公開されてる

427:デフォルトの名無しさん
07/02/03 21:57:59
お前ら教えてください。
ツールバーのボタンに文字列のみ表示したいのですが、
TBBUTTON::iBitmapにNULLを指定しただけでは
イメージ(アイコン?)のスペースの分のスペースが空き、
そこから先から文字列が描画されてしまいます。
どうすればいんでしょうか?

428:デフォルトの名無しさん
07/02/03 22:40:06
CToolBarでできそうな気がするけど

429:427
07/02/03 22:47:49
>>428
なるほど!
CToolBar::SetSizes()の中にやり方が書いてありました。
助かったよ!ありがとう!

430:デフォルトの名無しさん
07/02/04 09:09:06
今、Visual C++ 6.0 を使ってるのだが、開発環境をバージョンアップしようとしたら
どれを導入すればいいのだろう?

無料で配布されている Visual C++ 2005 Express は MFC は入ってないんですよね?

それとも、あと少し待って次のバージョンが出たときのほうがいいんでしょうかね。

431:デフォルトの名無しさん
07/02/04 09:26:03
>>430
そりゃおめ、vista上で動くモン買えや。
いま、XPでなにやら揃えるのは無駄でしょ?

432:デフォルトの名無しさん
07/02/04 11:30:15
IEのメニューの用に画面に収まりきらないメニューがある場合は
「>>」を表示し、「>>」を押せば残りのメニューが表示されるようにしたいのですが、
そういったコントロールがあるのでしょうか?
どなたかヒントだけでもわかる方おられましたら教えてやって下さい。

433:デフォルトの名無しさん
07/02/04 11:39:00
軍人や警官の袖に付いている山形の袖章のことをいうのだそうです(多分)。

434:デフォルトの名無しさん
07/02/04 12:05:06
USECHEVRONあたりで探せば?


435:432
07/02/04 12:31:54
>>434
「>>」はChevronって言うんですか用語自体知りませんでした。
Chevronでぐぐればすぐにでてきました。
教えていただかなければ数日ははまるとこでした、
ありがとうございます。

436:デフォルトの名無しさん
07/02/04 14:14:26
フランス車に詳しければ直ぐに判るんだがな。

437:デフォルトの名無しさん
07/02/04 22:58:24
CFont::CreateFontとかCFont::CreateFontIndirectって
CFont オブジェクトを使い終わったら、最初にデバイス コンテキストからフォントを選択して、それから、CFont オブジェクトを削除します。
ってあるけどデストラクタで解放してくれないの?

解放しないままアプリ終了したらリソースリークするのかな?

438:デフォルトの名無しさん
07/02/04 23:01:29
CClientDC::SelectObject
よばなきゃ問題ないのか???
よくわからん

439:デフォルトの名無しさん
07/02/04 23:06:49
エディットボックス内のフォントを変更すのみで
DCで直接使用しない場合は問題ないのか???

MSさんさっぱりわかりませんorz

440:デフォルトの名無しさん
07/02/04 23:19:29
SetFontで

441:デフォルトの名無しさん
07/02/05 00:11:26
>>437
デバイスコンテキストに選択されたままだと解放されないと思った。

442:デフォルトの名無しさん
07/02/05 17:27:27
CHtmlViewについてお聞きしたいのですが
URLリンク(www.microsoft.com)
ここを参考にしてタブではないブラウザを作成したのですがこの通りに記述しても
JAVAスクリプトで行っているブラウザのリサイズが正常に動きません。

テスト用に適当に選んだサイトですが
URLリンク(www3.ocn.ne.jp)
ここのsmall windowを押してもフレームのサイズが変更されません。
RecalcLayout等してもダメでした。メインフレームが正しくリサイズされる
方法をどなかた教えて頂けないでしょうか。

環境
VC6.0 WindowsXp SP2

443:デフォルトの名無しさん
07/02/05 20:47:25
|あいう |^|
|えおか| | |
| | |
| | |
5| | |
| | |
| リッチエディット   | |
| | |
| | |
10| | |
| | |
| | |
| | |
| | |
15|--------------------------|↓|

スクロールバー

こんな感じの画面を作ることになったのですが
右のスクロールバーと左の行数のコントロール?(何でもいい)で
同期をとりたいのですがどのようにしたらよいのでしょうか?
なにかヒントでもありましたらご教授をお願いいたします。
環境:VC++2005 MFC

444:デフォルトの名無しさん
07/02/06 01:38:15
すみません。CFileFind について、みなさんのお知恵を貸してください。
エディットボックスに入力したパスを CFileDialog で開く、という処理を作ってまして、
入力したパスの存在チェックを CFileFind で行っています。

ですが、C:\ や、\\hoge\ 等、ドライブのルートを指定した場合に存在を検出できず、
前回開いたフォルダがFileDialog で開かれてしまい、困っています。

どなたか良い方法をご存知でしたら、ご教授ください。
よろしくお願い致します。

445:デフォルトの名無しさん
07/02/06 02:55:00
単独で現れる\記号の数をカウントすればいいんじゃないかい
"\\"はReplaceで別の記号に置き換えるとかして、
その後で"\"が1個だけならルート

446:デフォルトの名無しさん
07/02/06 04:19:44
つか、そのまえになんでCFileFindってそんな厨仕様なの?
なんか意味あんじゃね?

447:デフォルトの名無しさん
07/02/06 06:07:07
試してないけどCFileDialogで存在しないパスは指定できないような気がするけど

448:デフォルトの名無しさん
07/02/06 06:14:37
ああそうか指定したパスをCFileDialogで開きたいのか

449:デフォルトの名無しさん
07/02/06 06:39:44
>>444
ルートディレクトリが検出されないのは、内部で呼び出しているAPI側(FindFirstFile)の仕様。
CFileFindの仕様としては書かれてないかも。

FindFirstFileの説明にはルートディレクトリの属性を取得するにはGetFileAttributesを使えと書いてある。

450:デフォルトの名無しさん
07/02/06 06:42:23
ところでみんなフルコントロールの拒否とかってどうやって判断してる?

451:デフォルトの名無しさん
07/02/08 17:40:42
メニューをoffice風にするため調べたら
”ツールボックスからメニューをペタペタ”をすればいいらしい
しかし、MFCを使わなければならないことが判明

win32アプリにツールボックスからメニューをペタペタはできない
Wwindowsフォームで作るとできる
しかしForm.h、Form.resxとか変なファイルが中身見ると分けわかんなくなってるしWinmainがないぞ
C++とMFCは別物なのか!!


2005express

452:デフォルトの名無しさん
07/02/08 18:10:06
>>451
それは.NET frameworkじゃね

453:デフォルトの名無しさん
07/02/08 18:12:30
知らないうちにC++/CLIを使っている。いかんこれはゲイツの罠だ。

454:デフォルトの名無しさん
07/02/12 00:31:01
初めて任されたツールが遂に完成シマスタ^^
予定では後一週間あるので連休明けはブラックボックステストと
ロゴの作成にかかりたいのですが、VC6 MFCのリソースエディータって
しょぼいですね(^^;フリーでお勧めのリソース編集ソフト知ってたら
教えてくださいオナガイシマス

455:デフォルトの名無しさん
07/02/12 03:21:06
>>454
ロゴの作成にリソースエディタってお前馬鹿じゃないのか?

456:デフォルトの名無しさん
07/02/12 08:22:50
いるんだよ、ソースコードもロゴ画像もIDEで編集しないと気がすまない馬鹿って奴が。

457:松井康明
07/02/12 10:05:18
>>456
バカバカ言ってないで教えてやれよ

458:デフォルトの名無しさん
07/02/12 10:22:31
ロゴの作成をMFCスレで質問するのは脳に異常があるんだろうな
進行が進まないうちに早めに治療を受けたほうがいいよ

459:デフォルトの名無しさん
07/02/12 11:40:34
>>457
教えるも何も、「画像を作る」って聞いたら藻前様は何を使うと仰るのですか?
#ふつー、画像編集ソフトを使うと思うのだが。

460:デフォルトの名無しさん
07/02/12 21:25:22
別にいいんじゃね、リソースエディタでも。センスがあれば。

461:デフォルトの名無しさん
07/02/13 05:43:02
>リソースエディタでロゴ作成業務 8H
やべぇw脳勃起してきたw

462:デフォルトの名無しさん
07/02/15 10:25:44
印刷プレビューをダイアログベースのプログラム(VC6.0)で実現するにはどうすればよいのでしょうか?
検索するとSDI/MDIのプログラムばかりで途方に暮れています。


463:デフォルトの名無しさん
07/02/15 11:57:02
MFCのソース見れ

464:デフォルトの名無しさん
07/02/15 12:47:54
印刷プレビューのアーキテクチャ
URLリンク(msdn2.microsoft.com)(VS.80).aspx

465:デフォルトの名無しさん
07/02/19 13:44:30
りえ子、結婚してくれ

466:465
07/02/19 14:17:23
自己解決しました


467:デフォルトの名無しさん
07/02/19 14:54:28
おめでとう

468:デフォルトの名無しさん
07/02/19 20:27:55
いや、うまくいったら、自己解決とは言わない気が…。


469:デフォルトの名無しさん
07/02/19 22:17:09
自己解決 = 脳内解決
だな

470:デフォルトの名無しさん
07/02/22 14:48:31
誰か、知っている方、教えてもらえませんか。
リストの表示で、拡張スタイルにLVS_EX_HEADERDRAGDROPを指定し
仮想リストビューでアイテムの表示を行っております。
そして、カラムのドラッグ&ドロップで順番を入れ替える事が出来るのですが、
順番を入れ替えると、カラムのアイテム表示が、新しい表示と古い表示の両方が
出てしまいます。なぜでしょう?
------------------------
Colum1 | Colum2 | Colum3
------------------------
1 | 2 | 3
1 | 2 | 3

カラムの順番を入れ替えて、幅を広げると
古い表示が出てくる。
------------------------
Colum1 | Colum3 | Colum2
------------------------
1 | 3 2 | 2
1 | 3 2 | 2


VS.2005でMFCをスタティックでリンクに設定しております。



471:デフォルトの名無しさん
07/02/22 15:02:59
123→132は判った。
123→312ではどうなる?

472:470
07/02/22 15:20:09
>>471
312ではColum3の表示が"3 1 2"となりました。


473:470
07/02/22 15:21:42
>>471
あ、言葉が足りませんでした。
Colum3のアイテム表示が"3 1 2"です。

474:デフォルトの名無しさん
07/02/22 15:53:06
なんとなく、メモリ管理が失敗している悪寒。

475:470
07/02/22 16:19:39
原因が判りました。
スタイルにLVS_OWNERDRAWFIXEDが指定されていました。
MFCのROWLIST サンプルを元に、変更を加えていったのですが、
CListViewExで、LVS_OWNERDRAWFIXEDが指定されておりました。
レスをしてくれた方がには、お礼申し上げます。

476:デフォルトの名無しさん
07/02/22 20:26:53
MFCを使って、できるだけ簡単にHTMLメールを
ダイアログベースで表示したいのですが、
どんな方法があるでしょうか?



477:デフォルトの名無しさん
07/02/22 21:13:27
もうちょっと仕様検討してから来てください

478:デフォルトの名無しさん
07/02/22 22:17:26
>>477
できるだけ簡単にできる方法に合わせて仕様を決めようかと思って。


479:デフォルトの名無しさん
07/02/22 22:51:31
メールを表示するソフトなんて聞いたことがない

480:デフォルトの名無しさん
07/02/23 10:17:31
HTMLを表示(レンダリング)するコントロールを探せ

481:デフォルトの名無しさん
07/02/23 10:19:12
よくあるペイントソフトのような複数の画像表示ウィンドウに
共通のパレットダイアログを持つようなプログラムを作ろうと考えています。
MDIで生成すると、例えばファイル→開くを選択すると
ドキュメント以外にビューも生成されて、ビューが持っているパレットダイアログ(モードレス)
までが複数生成されてしまいますが、これを阻止するにはどのようにすればよいのでしょうか?

482:デフォルトの名無しさん
07/02/23 10:26:24
パレットをビューに持たせてるのが間違い。

483:デフォルトの名無しさん
07/02/23 10:33:26
>>482
確かにおっしゃるとおりです。
ウィンドウを切り替えたときにパレットの内容をアクティブなウィンドウの
情報に変えたいので、そのあたりの情報などを管理できる部分にまとめようと思うのですが
この場合、パレットを持たせるのはMainFrameでしょうか?

484:デフォルトの名無しさん
07/02/23 21:47:33
すいません教えてください。
VC++6.0です。
ツールバーのボタンに対してプロパティからプロンプトという項目を設定すると実行時にボタンの説明文が出せますよね。
あれをダイアログのボタンやエディットボックスにも出したいのですがどうすればいいでしょうか。


485:デフォルトの名無しさん
07/02/23 21:54:39
つ CToolTipCtrl

486:484
07/02/23 22:23:14
即レスありがとうございます。
調べてみます。

487:デフォルトの名無しさん
07/02/26 13:49:06 BE:87345195-2BP(222)
>>483
CDialogBar

488:デフォルトの名無しさん
07/02/26 18:13:00
自分自身のProductVersion の読み出し方法は?

色々探したのですが、どうも自分自身のProductVersionを
読み出す方法が見つかりません。

自身の実行ファイルのフルパスを探し出し.... という方法は
見つけましたが、何だかなぁという感じで。

CString::LoadString のような感じで読み出す方法はないのでしょうか?


489:デフォルトの名無しさん
07/02/26 18:53:34
ストリングテーブルになかったか?

490:デフォルトの名無しさん
07/02/26 18:54:56
なんだ質問者が答えてるじゃないか
キチガイの独り言はやめほしいな

491:デフォルトの名無しさん
07/02/26 19:18:29
>>489
> ストリングテーブルになかったか?

ストリングテーブルには登録されてないよ。


492:デフォルトの名無しさん
07/02/26 19:19:07
>>490
> なんだ質問者が答えてるじゃないか
> キチガイの独り言はやめほしいな

CString::LoadString で読み出せるのか?
IDは、何を設定するの?


493:デフォルトの名無しさん
07/02/26 19:43:48
何だかなぁ

494:デフォルトの名無しさん
07/02/26 19:53:29
わざわざ教えてやっても何だかなぁと言われたら馬鹿だし

495:デフォルトの名無しさん
07/02/26 20:02:23
>>488
URLリンク(tgws.fromc.jp)

496:デフォルトの名無しさん
07/02/26 20:04:24
FindResourceから始めれば出来なくは無いな。

497:483
07/02/26 21:52:54
>>487
CDialogBarを利用してみました。ソースは以下の通りです。

(MainFrm.cpp)
if (!m_wndDlgBar.Create(this, IDD_DIALOG_HOGE,
CBRS_ALIGN_TOP, AFX_IDW_DIALOGBAR)){
TRACE0("ダイアログバーの作成に失敗しました。\n");
return -1;
}

しかし、ダイアログを移動するとダイアログのあった場所が再描画されません。
CBRS_ALIGN_TOPを指定しているせいでしょうか?
また、サイズがリソースで作成したものと変わっていたり(横いっぱいに広がっている。ALIGN_TOPの影響?)
しています。

URLリンク(www.alpha-net.ne.jp)
このようなドッキングされた状態の作成方法はいろいろ紹介されているのを確認しましたが、
通常のモーダレスダイアログのような振る舞いをさせる方法が分かりません。(任意の座標に表示させるとか)
どういった方法をそればいいのでしょうか?

498:デフォルトの名無しさん
07/02/26 22:02:08
ダイアログバーのサンプルならMSDNについてる

499:デフォルトの名無しさん
07/02/26 23:07:39
ウインドウの動かしかたも知らんのか

500:デフォルトの名無しさん
07/02/27 11:53:59
こうですか?
うまくいきました!!

501:MDI今日始めます
07/02/27 18:18:27
すみません。ど素人ですm(__)m

MDIのプログラム今日始めました。ウィザードでMDIのプロジェクトを作成後、
クラスビューでOnDraw(CDC* pDC)という関数を発見し、これで描画できると
思いましたが、子ウィンドウを新規作成するたびに同じ描画を繰り返すだけ。
子ウィンドウ毎に違う描画をしたいのですが、どうしたらいいんでしょう?

メインのソースたどろうにも、CWinApp::OnFileNewはライブラリになっていて
ソースの実体が無くどうしていいのかわかりません(ToT

502:デフォルトの名無しさん
07/02/27 18:40:27
その違う描画、は何を持って違うことになるのか
それによってOnDrawでの動作を変えりゃいいだろ

503:デフォルトの名無しさん
07/02/27 18:40:34 BE:62112948-2BP(222)
同じ描画になるのは同じ描画しかしないコードを書いているから。
CView::OnDrawでCDocumentのインスタンスを識別してそれぞれで描画するようにしれ。

504:デフォルトの名無しさん
07/02/28 01:39:33
ListViewの初期化方法、削除方法を教えてください。

505:デフォルトの名無しさん
07/02/28 13:40:52
>>504
MSDN読め

506:デフォルトの名無しさん
07/02/28 22:14:14
教えてください。
VC++6.0でMDIです。
MDIの子ウィンドウとしてCFormViewを継承したクラスが2つあります。
このクラスを仮にA,Bとします。
Aのウィンドウのボタンが押されたときにBのウィンドウの
エディットボックスの内容を更新したいのですがどうすればよいでしょうか。
MDIGetActiveとGetNextWindowをつかってウィンドウをたどっていき
if(pWnd->IsKindOf(RUNTIME_CLASS(B)))で判定すればBのウィンドウの
ポインタが取れると思ったのですが、このif文がなぜか真になりません。
何がまずいのでしょうか。

507:デフォルトの名無しさん
07/02/28 23:27:13
>>506
MFCの問題っちゅーかプログラミング能力の問題じゃねぇの?それ。
まあ、問題の切り分けができないってのもわからないでもないが・・・
そういう機能はAとB2つに影響を与えることができるクラスに付けなきゃ駄目だよ。
AやBはその機能を呼ぶだけ。
>>203-205の問題と似てネーか?

508:デフォルトの名無しさん
07/03/01 09:30:44
>>506

そもそも基本ができていない
やろうとしていることの前に、基本から勉強しなおせ


509:デフォルトの名無しさん
07/03/01 15:05:40
基本的な質問なのです、よろしくお願いします。
VS2005でMFCアプリケーション(ダイアログベース)を作ったのですが。
新規にダイアログベースを作成してそのまま何も加工せずにセットアップ
ウィザードを使ってsetup.exeを作って他のPCでインストールしようとしたら
.NET framwork2.0をするように指示する画面がでました。
これは、VS2005で開発したものはframework2.0が必要?それとも
インストーラーがframework2.0が必要?なんですか?
frameworkが必要ないとおもってMFCにしたのですが、framework不要に
する設定ありますか?よろしくお願いします。

510:デフォルトの名無しさん
07/03/01 15:07:08
訂正です。
x  .NET framwork2.0をするように指示する画面がでました。
○ .NET framwork2.0をインストールするように指示する画面がでました。

511:デフォルトの名無しさん
07/03/01 15:45:02
CHtmlDialog使ってる?

512:デフォルトの名無しさん
07/03/01 17:30:44
それはじめてききましたので意識的にはつかってないかと

513:デフォルトの名無しさん
07/03/01 18:51:13
んー、普通に作ればいらんけどな。
とりあえず、新規プロジェクトで何もしないでウィザードだけでできあがったダイアログで
試したらどうなる?

514:デフォルトの名無しさん
07/03/01 18:51:54
セットアップがあやしいな

515:デフォルトの名無しさん
07/03/01 21:06:55
『標準講座MFC6.0―Visual C++による効率的なWindowsプログラミング』
という本を以前読んで、大変勉強になったのを覚えています。
無くしたので、他の本と一緒に買おうかと思うのですが、どうせならVC++.net
関連の本がいいと思っています。サンプルも欲しいです。
何かお勧めはありますでしょうか?



516:デフォルトの名無しさん
07/03/01 22:50:39
VC++2003 のリソースエディタで作成したポップアップメニューについて質問です

やりたいことは簡単でポップアップメニューのサブメニュー(横に開いたやつ)を
状況(その時の変数値など)に応じてグレーアウト(Enable が FALSE の状態)したいだけです

OnUpdateXX(メニュー名) で pCmdUI->Enable(FALSE) することで
普通のポップアップメニューをグレーアウトすることはできました
しかし、ポップアップメニューのサブメニューに同じようなことをやってもうまくいくません
サブメニューを選択して初めて OnUpdateXX と OnXX が走っているようです
どうにかして同じようにサブメニューをグレーアウトさせることはできないでしょうか?

517:デフォルトの名無しさん
07/03/01 22:54:35
スレ違い。書籍スレへどうぞ。

518:デフォルトの名無しさん
07/03/01 23:19:43
そんなことおっしゃらずに教えて頂けないでしょうか?

519:デフォルトの名無しさん
07/03/02 00:42:30
>518
ここはMFCスレ。.netやりたいならそういうスレで聞けば?MFCなら標準講座でいいだろうし。

520:デフォルトの名無しさん
07/03/02 09:27:14
なんで.NETだと思うんだ?

521:デフォルトの名無しさん
07/03/02 12:20:53
>>516
OnUpdate~に頼らず、自分でグレーアウトさせる。

522:デフォルトの名無しさん
07/03/02 14:04:34
VC++6.0使っています。
MFCでAPIである
SetWindowText(hWnd ,"(@_@)");
を使いたいのですが、MFC上でこの関数を実行すると
ウィンドウハンドルの引数が省略されてしまい、コンパイルできません。
MFC上で、任意にウィンドウハンドルを指定してSetWindowText関数を
使う方法はありますでしょうか?



523:デフォルトの名無しさん
07/03/02 14:09:24
スコープ演算子

524:デフォルトの名無しさん
07/03/02 14:20:29
>>522

C++ の基礎からやりなおせ


525:デフォルトの名無しさん
07/03/02 14:32:43
>>523
>>524
ありがとうございます。
勉強しながらなので、
お教えいただいたヒントを元に
答えを探ってみたいと思います。

526:デフォルトの名無しさん
07/03/02 14:39:48
>>523
>>524
どこに対してスコープを設定すればよいのか
見当もつかなかったので、試しに関数の頭にスコープ演算子だけつけてみたら
なぜかうまくいきました。


527:デフォルトの名無しさん
07/03/02 14:55:29
>>522
>MFCでAPIである 
WindowsのAPIなのかMFCクラスのメンバー関数なのかはっきりしる。

528:デフォルトの名無しさん
07/03/02 15:03:02
すでに解決済

529:デフォルトの名無しさん
07/03/04 15:31:06
CListBoxなどのコントロールでの文字列の扱いは
TCHAR(LPCTSTRとか)になってますが
実行時にマルチバイトでCListBoxを使うか
UNICODEで使うかを選択することはできないものなんですか?

530:デフォルトの名無しさん
07/03/04 15:33:45
マクロはコンパイル時に展開されるから
マクロ使わないで使い分ければいい

531:529
07/03/04 15:45:56
>>530
すいません。その辺知識不足なんですが、
Win32APIで例えるとANSI版とUNICODE版があって、
それを使い分けれるってことですか?

532:デフォルトの名無しさん
07/03/05 10:54:26
いいえ、MBCS版とUNICODE版です。

533:デフォルトの名無しさん
07/03/05 12:45:59
知識はいらない
MFCのソース見るだけ

534:デフォルトの名無しさん
07/03/05 13:15:40
ライブラリが違うな

535:529
07/03/05 21:33:00
ソース見たところ、
MBCS版とUNICODE版を同時に使える仕様にはなってない感じですが…。
よくわからんです。

とりあえず素直に別々にコンパイルして
本体を98系とNT系に分けて用意する方が楽っぽいですね。

536:デフォルトの名無しさん
07/03/06 10:23:29
実行時に切り替える必要はない

537:デフォルトの名無しさん
07/03/08 19:12:36
>>509 の人です。
VS2005で作ったMFCプログラムを同様にVS2005のセットアップウィザードを作ったsetup.exe
で実行してFramework2.0をインストすれというメッセージが出たものです。
結論からいうと、このsetup.exeを使わないで~~~.exeだけをコピーして動作させたら動きました。
MFCはスタティックリンクしました。ということで容疑者はセットアップウィザードらしいことが
判明。まあ使わなければいいという短絡的な結論になりました。

538:デフォルトの名無しさん
07/03/08 21:00:41
あほか
容疑者はおまえだよ
セットアッププロジェクトをきちんと作れば何の問題もない



539:デフォルトの名無しさん
07/03/09 00:20:07
MFC にtemplateを組み合わせたフレームワーックってあります?

例えばCCOMBOBOXにSetItemDataPtr使ってある型を足してく場合とかに
をやってくれるようなtemplate関数とかが用意してあるやつとか

MFCのコントロールとtemplateを組み合わせるのって普通はしないものなんでしょうか?
上記のある型を設定した後にプログラムからSetItemDataptrで設定した型のある値を指定したら
SetCurSel あたりで指定した項目に対応するやつを選択状態にしてくれるようなやつとか



540:デフォルトの名無しさん
07/03/09 00:25:10
ダイアログ以外だとポトぺタってできないんですか?

541:デフォルトの名無しさん
07/03/09 00:36:03
ポトペタしたいなら.NETの方がいいよ

542:デフォルトの名無しさん
07/03/09 03:03:47
VB6の間違いだろ

543:デフォルトの名無しさん
07/03/10 00:47:51
FormViewは?

544:デフォルトの名無しさん
07/03/10 01:38:01
VC++のエディタのようなウィンドウを作ろうとしています。
(テキスト表示の右側に●とか矢印が出るウィンドウ)
それで、自分なり考えたのですが、

1. CEditView からビューを作成。
2. OnCreateで左側のマージンを空ける。
3. OnDrawとかで●とか矢印を書く。

でも、そもそもOnDrawが呼ばれません。
他のアプローチがあれば教えていただけないでしょうか?
ちなみに当方WindowsのGUIプログラミングはド素人です。

545:デフォルトの名無しさん
07/03/10 06:23:12
CEditViewの中はCviewにeditコントロールを貼り付けてあるだけで
位置調整に関係するのはCEditView::CalcWindowRectあたりか

546:デフォルトの名無しさん
07/03/10 10:52:35
>>544
CEditView なんぞ使ったらだめ。
CView に全部自前で実装しろ。
どのみち、ど素人にできるテーマではない。
その前にいろいろ勉強してから出直して来い。



547:デフォルトの名無しさん
07/03/10 13:31:21
>>544
とりあえず参考までに。
URLリンク(www.vcppclub.com)

548:544
07/03/11 00:45:00
>>545-547
レスありがとうございます。
>>545
こんなメンバがあったのですね。しらなんだ orz
勉強になります。
>>546
ごめんなさい。今勉強中で行き詰まったので、ちょっと甘えてみました。
>>547
てか、行番号のところに●とか矢印描画したらやりたいことそのままではないですか!!
まだ、ちゃんとソース見られてませんが、これからじっくり追って行きたいと思います。
ありがとうございます。

良スレ発見!!

549:548
07/03/17 14:50:17
            __,,..、、- - - .、、...,,___
       ,,、‐''"~ ̄            ̄``''‐、、
     /                      \
    /                         ヽ
   /                           ヽ
   /  / ~~` '' ‐- 、、 ,,__   __ ,,..、、 -‐ '' "~~\  ヽ
   |  /    __           ̄       __   ヽ  |
  .|  {  ´   ‐- ....__    __... -‐   `   } .|
  .|  〉,,・^'' - .,,      ~  i ~    __,,.- ^`・、.〈  |
./ ̄|  /,/~ヽ、  `'' ‐--‐ ,.| 、‐-‐'' "~   _ノ~\,ヽ | ̄ヽ
| (` | / ヽ,,_____`‐-、_、..,,___ノ八ヽ___,,.._-‐_'"´___,, ノ ヽ .|'´) |
| }.| ./'   \二二・二../ ヽ  / ヽ、二・二二/  'ヽ | { |
.| //| .|          / |  |. \         | |ヽヽ|
.| .| | .|        /    |  |.    \       | | | .|
|ヽ.| |      /     .|  |.     ヽ      .| .|./ .|
 |  .| |     /      |  |        ヽ     |  | /   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ヽ .| |    /       .|  |       ヽ    |  | /  |  用件を
  .ヽ.| |    /     '二〈___〉二`       ヽ   |  |./  <
    | |          `-;-′         |  |     |  聞こうか…
     iヽ|.      ,,... -‐"`‐"`'‐- 、、     |/i       \_________
     |  ヽ     /...---‐‐‐‐‐----.ヽ    /  .|
     |   ヽ.    ,, -‐ ''"~ ~"'' ‐- 、    /   |
    .|    ヽ         !          ./   .|
    ,,|     ヽ.         |        ./     |、
    |\.     ヽ            /     /.|
   .|.  \.      ヽ、____   ___/    /   .|
   '     `            ̄ ̄       ´     '

550:デフォルトの名無しさん
07/03/18 01:58:13
CDialogBarのダイアログで
List Controlを利用しているのですが
カラムを初期化するタイミングはどれがよろしいのでしょうか?

CDialogの場合はOnInitDialogがあったんですが
CDialogBarには無いみたいで

551:デフォルトの名無しさん
07/03/18 10:07:39
>>550
Create()の中で、CDialogBar::Create()呼び出し後にやってます


552:デフォルトの名無しさん
07/03/19 23:04:42
CPropertySheetEx/CPropertyPageEx(PSH_WIZARD97)を利用して、
各ページの上部ヘッダ部に画像付きのウィザードを作成しています。

Windows Vista上で、この方法で作成したウィザードを実行すると、
なぜか各ページの上部の画像が表示されなくなってしまいます。
(Windows XPでは問題なく表示されます)

これを回避する方法はありますでしょうか?


553:デフォルトの名無しさん
07/03/20 10:47:48
Vistaを見捨てる

554:デフォルトの名無しさん
07/03/21 03:11:06
Vistaの互換性の問題なのか、>>552のプログラムがトンチキなのか

555:デフォルトの名無しさん
07/03/21 19:50:40
先生、MFCでアプリ作ってたらエロイ人が
「.NETのメニューみたいにかっこよくしろ」
とか言ってきました。

556:デフォルトの名無しさん
07/03/21 19:59:11
そもそも2ちゃんねるで聞くなんてww
最新スレ50しか読んでないが、質問主は殆ど玉砕だな
昔の2ちゃんねるは玉石混在で光るものもあったが、今は石しかない
プログラム技術@2ch掲示板なんて止めて、
質問主を煽る技術@2ch掲示板として、スレッドも一つか二つにまとめたらどうよ

557:デフォルトの名無しさん
07/03/21 20:03:16
本気で困ってたら2chなんかで聞かないって
特にム板はクズの集まりだしな

558:デフォルトの名無しさん
07/03/21 20:16:01
【審議中】
    ∧,,∧  ∧,,∧
 ∧ (´・ω・) (・ω・`) ∧∧
( ´・ω) U) ( つと ノ(ω・` )
| U (  ´・) (・`  ) と ノ
 u-u (l    ) (   ノu-u
     `u-u'. `u-u'

559:デフォルトの名無しさん
07/03/21 22:34:13
手前の二人に耳が無いのが気になる

560:デフォルトの名無しさん
07/03/22 17:49:07
>>556-557
トンチキな質問をして煽られたのか。

>>559
「手前」と思わせといて、実は下。
つまり、上に乗っかってる奴で隠れている。

561:デフォルトの名無しさん
07/03/25 03:44:26
>>556
       _,,:-ー''" ̄ ̄ ̄ `ヽ、
     ,r'"           `ヽ.
 __,,::r'7" ::.              ヽ_
 ゙l  |  ::              ゙) 7
  | ヽ`l ::              /ノ )
 .| ヾミ,l _;;-==ェ;、   ,,,,,,,,,,,,,,,_ ヒ-彡|
  〉"l,_l "-ー:ェェヮ;::)  f';;_-ェェ-ニ ゙レr-{   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  | ヽ"::::''   ̄´.::;i,  i `'' ̄    r';' }   | 久々にトンチキ
 . ゙N l ::.  ....:;イ;:'  l 、     ,l,フ ノ   | 玉石混在で光るものもあった
 . |_i"ヽ;:...:::/ ゙'''=-='''´`ヽ.  /i l"  < のが、昔の2chなんだよな
   .| ::゙l  ::´~===' '===''` ,il" .|'".    | 今は石しかないから困る
    .{  ::| 、 :: `::=====::" , il   |     \________
   /ト、 :|. ゙l;:        ,i' ,l' ノト、
 / .| \ゝ、゙l;:      ,,/;;,ノ;r'" :| \
'"   |   `''-、`'ー--─'";;-'''"   ,|   \_



562:デフォルトの名無しさん
07/03/25 03:46:22
>>559
pd3dDevice->SetRenderState(D3DRS_ZENABLE, TRUE);


563:デフォルトの名無しさん
07/03/26 00:12:04
コナミの麻雀ゲームの名前なんだっけ

564:デフォルトの名無しさん
07/03/26 05:06:26
真・麻雀だろ、スーファミの

565:デフォルトの名無しさん
07/03/28 03:33:23
mobile fan club の略

携帯で月額料金を支払って登録すると会員になるファンクラブのこと

会員になると

チケットの先行予約やデジタル会報の閲覧

待受け画像や着うた、着メロ、ムービー等のサービスを利用できる。


566:デフォルトの名無しさん
07/03/28 03:34:20
Mass Flow Controlerの略称。

気体の流量制御装置のこと。

真空装置などに微量、あるいは一定流量の気体を導入する時などに使用される。


567:デフォルトの名無しさん
07/03/28 14:03:09
URLリンク(ja.wikipedia.org)

568:デフォルトの名無しさん
07/03/28 15:27:02
スレリンク(gamestg板)

1 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2007/03/12(月) 15:26:41 ID:VIP/Boon
語れ

2 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2007/03/12(月) 15:27:05 ID:9qlxL9Bm
>>1
ちょ、何そのIDwwwwwwwwwwwwwwwwwwwwwwww

569:sage
07/03/29 01:36:44 BE:830995788-2BP(0)
質問です。

XP, Vista 上で動くプログラムを書いているのですが、
ダイアログやその他のUI系フォントとして、XPだと
MS Gothic 系 に、Vista だと主に メイリオ にしたいと考えて
います。

名前直指定とかは行わず、テーマとかシステムに
即したコードにしたいのですが、そもそもMFCのダイアログに
使われるフォントを、うまく切り替える方法すら分かりません。

そもそも、OSのフォントの扱いからしてよく分かってないのですが、
ここから調べていきたいと考えています。

なにかいい解決策がないでしょうか?

570:デフォルトの名無しさん
07/03/29 01:46:24
MFCのダイアログの文字って
リソースで指定するんじゃないんの?


571:569
07/03/29 01:53:07 BE:363560674-2BP(0)
>>570
その通りで、リソースで指定しています。ひとまず、ダイアログの
プロパティにて、"Use System Font" を true にしています。
そうすると、フォント名が"MS Shell Dlg" になります。

あと、開発環境を忘れていましたので、書いておきます。
VS2005 pro sp1
xp sp2, vista

572:デフォルトの名無しさん
07/03/29 06:02:23
ダイアログのフォントを変えたい場合は CDialog::CreateIndirect を使う。
それかダイアログを表示した後でコントロールごとにフォントを変更する。

573:デフォルトの名無しさん
07/04/07 13:39:04
親ダイアログの初期化処理が行われていることを知らせるために、
ポップアップダイアログを作って、プログレスバーで処理中が
わかるようにしようとしています。

プログレスバーは処理が行われていることが分かればよく、
タイマイベントに応じて単純にカウントアップするだけです。

具体的な手順として
①親ダイアログのOnInitDialogで、プログレスバーをもつ子ダイアログを作成
②子ダイアログのタイマイベントを起動(SetTimer)

③親ダイアログの初期化処理
(この間に、子ダイアログのWM_TIMERイベントでプログレスバーをカウントアップ)

④子ダイアログのタイマイベントを終了(KillTimer)
⑤親ダイアログのOnInitDialog終了

としています。
しかし意図した通りには動作しません。
原因として、②で起動したタイマイベントが、⑤のあとに動作を開始しているためです。
(④の処理をコメントアウトしたところ、親ダイアログの表示後に、
OnTimerイベントが呼び出されていることを確認しました。)

そこで質問なのですが、

(i) ②で起動したタイマが、実際は⑤のあとまで起動されない理由と、
(ii) ②で起動したタイマを、②のタイミングで動作させる方法

です。わかる方いらっしゃったらお願いします。


574:デフォルトの名無しさん
07/04/07 13:53:48
>>573
(i)WM_TIMERはメッセージキューに置かれるが
そのメッセージを取りに行く処理(メッセージポンプ)が処理が終わるまで行われていないため。
(ii)子ダイアログを別スレッドで作成する。

とりあえずこれ読んで
URLリンク(msdn2.microsoft.com)

575:デフォルトの名無しさん
07/04/07 14:22:49
>574
ありが㌧。
ただ、子ダイアログを別スレッドにしても、
メッセージポンプ自体が動いてないのだとすると、
子ダイアログの描画がイベントはちゃんとおこなわれるのん?

576:デフォルトの名無しさん
07/04/07 14:39:40
>>575
>>574のURLを読んでくれ

577:デフォルトの名無しさん
07/04/07 14:56:30
(゚д゚)読まぬ!

578:デフォルトの名無しさん
07/04/07 17:31:31
読みたくないんだい

579:デフォルトの名無しさん
07/04/07 23:09:10
>>573
(ii)どうしてもタイマ使いたいってんなら>>574の通り

親のOnInitDialog()の進行状況を表示したいだけなら
親側からユーザー定義メッセージをSendMessage()してやればよい
これ一番単純


このスレ死んでんのかと思ってたよ
>>573が態々ネタ創作したようにも見えるが

580:デフォルトの名無しさん
07/04/08 01:13:11
タイマを使うのが、コード書く分には一番楽だなあ、ぐらいの考えです。
スレッド化はしてみたけど、どうにもうまく動かないところ。
別のところでこけてるのだろけど、いまのとこ原因不明です。

進行を知らせるダイアログをシングルトンで実装して、
MFCクラス、一般C++クラスを問わず、時間のかかる処理のときは、
動作中であることを気軽に示せるようにして、↓みたいな使い方を考えてます。

LoadingDialog->inst()->starg()

//時間のかかる処理

LoadingDialog->inst()->stop()

581:デフォルトの名無しさん
07/04/08 06:13:47
普通に考えたら時間のかかる処理を別スレッドにする。
プログレスバーはステータスバーに表示

582:デフォルトの名無しさん
07/04/08 08:25:19
>>580
逆に考えるんだ。
GUIスレッドはあくまでもGUIに徹し、時間の掛かる処理はワーカスレッドで行なう。
それがイベントドリブンということだ。

583:デフォルトの名無しさん
07/04/08 08:25:41
質問は普通のプログラムの作りかたじゃなくて楽したいということか
だったらどうでもいいや

あと、よく考えたらWinRarなんかはダイアログにプログレスバーだな
あれはダイアログ側で時間のかかる処理か

584:デフォルトの名無しさん
07/04/10 14:26:50
>>571
XP用とヴィスタ用の両方のダイアログを作る
OS種別でどっちかを使う


585:デフォルトの名無しさん
07/04/10 20:08:54
>>556です
>>573
整理した方がいいよ
ワーカースレッドのタイミングで描画させようとすると君のようなパラドックスに嵌ります
この場合ワンクッション置いて、子ダイアログの遷移を親ダイアログがGETできるようにすれば
いいと思う、(インラインでGET関数を記述すればいい、SET関数も必要になると思う)
あくまでも主体は親で子は遷移を知らせるだけ(描画できるタイミングを通知)
一見普通に処理しているように見えてもワーカースレッドのタイミングで描画を行う
プログラムは間違いなく破綻します。

586:デフォルトの名無しさん
07/04/10 20:25:44
>>558です
>>556に騙されるな

587:デフォルトの名無しさん
07/04/10 20:51:13
>>586
>>585だが
なんだよ、マジレスしてるのにww
いいよ585の反対で実装してごらん面白いことになるよww
それから>>573は簡単だからタイマー割り込み使うって書いてたけど
MFCでタイマーの使い方ってネットでたまに見かけるけど
まともな使い方してない場合が多いよMSDNのコードも漏れ的には不満なんだが

588:デフォルトの名無しさん
07/04/10 21:31:23
>>586です
>>556です」とか突然言い出すからネタで返しただけ。気にするな。
で、まともじゃないタイマーの使い方の説明キボンヌ。何か気になる。

589:デフォルトの名無しさん
07/04/11 13:37:48
各種コントロールを乗せた、WS_CHILD スタイルのダイアログ リソースを用意して、
CControlBar 派生クラスの OnCreate で CDialog::Create を呼び出して
コントロールバーの中にダイアログを入れています。
このとき、ダイアログ上のコントロールのメッセージは、
どうやって受け取ったらよいでしょうか?

int CFooControlBar::OnCreate(.....)
{
......
// コントロールを乗せたダイアログをリソースから読み取る
m_hogeDlg.Create(IDD_HOGE_DIALOG, this);
m_hogeDlg.ShowWindow(SW_SHOW);
}

m_hogeDlg のメッセージを受け取るには?

590:586
07/04/11 19:42:13
>>588
マジレスはもうおしまい後は自分で考えてねww
それではそっけないのでヒントは 「一意」
サービスしすぎww以上
>>>589
C++から勉強しなおした方がいいYOというか
585で説明してるしww
皆さん結果を求めたいがために焦りすぎ、実装する以上もっと気の細かい
シーケンスが必要ですww
質問「何々の関数に、赫々しかじかの引数を与えましたが結果がでません」
答え「準備不足です」



591:556
07/04/11 19:44:18

すまん>>556です

592:デフォルトの名無しさん
07/04/12 09:38:16
CListCtrlについて質問です。
ある関数で、CStringの文字列を引数として渡し、リスト内に同じ項目が
存在しない場合、追加処理を行っています。

LVFINDINFO listInfo;
listInfo.flags = LVFI_STRING;
listInfo.psz = inStr;

// Itemを検索
int findItem = listCtrl.FindItem(&listInfo);

このとき、FindItemを使って検索するときに大文字と小文字を別物として検索することはできますか?
今のままだと、AAAの後にaaaを追加しようとしたときに既に追加されていると判断され、
リストにはAAAしか存在しない状態になってしまいます。


593:デフォルトの名無しさん
07/04/12 09:49:38
>>592
できない。

594:デフォルトの名無しさん
07/04/12 11:10:59
>>592
FindItemで見つけた後、一致しているかどうか自分でチェックしたら?

595:デフォルトの名無しさん
07/04/13 03:27:54
つ仮想リストビュー

596:592
07/04/13 14:43:38
ありがとうございました。FindItemで見つけた後strcmpで再度比較することで対応しました。
ただ、3つ以上重複した場合(aaaa,AAAA,AAAA, aaAAなど)、の場合、
AAAAのが2つ重複して追加される問題があるので
仮想リストビューにする方法も含めて、何か対応を考えて見ます

597:デフォルトの名無しさん
07/04/13 23:24:35
見つかった文字列+1を指すポインタアドレスを引数として再起呼び出しをすれば如何?

598:デフォルトの名無しさん
07/04/14 14:07:26
メッセージを投げたいオブジェクトを生成するために
安易に画面も持たないのに CDialog を継承したクラスをCreate してたり
するんだけど、(要は他のオブジェクトからメッセージを投げるのに、
有効なm_hWndが欲しいだけ)
CDialog じゃなくて CWnd を継承して有効な m_hWnd をもつ
オブジェクトを生成する手段ってあります?

599:デフォルトの名無しさん
07/04/14 15:13:15
CWndを継承すればいいじゃない。何が問題なんだ?

600:598
07/04/14 16:07:09
>>599
CWnd を継承したオブジェクトを Create しても
h_hWnd は 0x0000 なので CDialog を Create してます
なにか、画面に関係しないで CWnd を Create して 有効な
h_hWnd を得られれば文句無いんですが

601:デフォルトの名無しさん
07/04/14 17:12:16
うちでは問題なく作成できるから、あなたのコードに問題がある。

602:デフォルトの名無しさん
07/04/14 18:04:49
コントロールバー (CControlBar) にツールバー (CToolBar) を乗せることはできないでしょうか?

603:デフォルトの名無しさん
07/04/14 18:23:04
>>598
::CreateWindowExでメッセージonlyウィンドウ作って、
CWnd::SubclassWindow使えばいいんじゃね?

604:デフォルトの名無しさん
07/04/14 18:33:19
仮想リストビューってSetItemCountEx()で設定できるのは
1億件までですよね?ドキュメントにはDWORDの最大数まで
サポートしているようなことが書いてありますが、
実際にそこまで設定することは出来ますか?
SetItemCountExを辿っていくとSendMessageで投げていますが、
1億を越える数字を設定するとSendMessageがFALSEを返すので
APIのバグのような気もしますけど。


605:デフォルトの名無しさん
07/04/14 18:36:08
>>604
出来ません。

606:デフォルトの名無しさん
07/04/14 19:05:42
>>604
>ドキュメントにはDWORDの最大数までサポートしているようなことが書いてありますが
実際はメモリ量とか空間の限界とかあるから無理。

607:デフォルトの名無しさん
07/04/14 19:13:09
SetItemCountEx の仕様見ると int になってるけど

608:デフォルトの名無しさん
07/04/14 19:29:02
そりゃまあ実際に限界があるのは仕方ないけど、
なんで「一億」にしてあるのかがわからん。
100000001件にすると表示されないのな。ワロス。
MSDNに書いとけよ。これじゃアメリカ国民全員の名前を
リストコントロールで表示することは出来ないじゃん。
マイクロソフトのくせに自国民の数すらサポートできない
コントロールを作るなんて非難の対象だな


609:デフォルトの名無しさん
07/04/14 20:35:56
大丈夫、マイクロソフトなんて国はないから自国民は一人もいないので。

610:598
07/04/15 08:16:10
>>601>>603
ありがとうございます
今は休み中にてVSEしかないのでMFCが無いので試せないので
明日にでも試そうと思います
ちなみに画面を持たないCWndオブジェクトをCreate()する場合、
どんな引数が望ましいのでしょうか?


611:デフォルトの名無しさん
07/04/15 09:00:12
非表示ウインドウでもhWndはあるだろ
なかったらShowWindowで表示することもできない


ShowWindow
指定されたウィンドウの表示状態を設定します。

BOOL ShowWindow(
HWND hWnd, // handle to window
int nCmdShow // show state of window
);

パラメータ

hWnd
ウィンドウのハンドルを指定します。

nCmdShow
ウィンドウの表示状態を指定します。

612:デフォルトの名無しさん
07/04/15 22:16:49
質問です。
MFCで作成したソフトを公開したいのですが、VS.net2003の入っていないパソコンで
自分の作ったソフトを実行してみると、
mfc71d.dll msvcp71d.dll msvcr71d.dll
が必要です、とでてきます。
これらのdllは勝手に配布しても大丈夫なのでしょうか?

613:デフォルトの名無しさん
07/04/15 22:30:07
いいえ、デバッグ版を勝手に配布してはいけません。

614:デフォルトの名無しさん
07/04/15 22:34:11
>>613 mfc71.dll などdがついていないものなら配布しても大丈夫なのでしょうか?

615:デフォルトの名無しさん
07/04/15 23:04:36
>>614
MSに訊け。つーか付属ドキュメントくらい読め。

616:デフォルトの名無しさん
07/04/16 00:55:13
>615
便乗で質問なんだが、その手の質問は
MSDN購読してなくても答えてもらえるの?

617:デフォルトの名無しさん
07/04/16 06:01:25
そういう重要なことを正規ユーザーが知らないはずがない。
無料のexpressユーザー?と思ったけど
MFCなら製品版使ってるんだろうし、どうやって手に入れたんだろう?

618:デフォルトの名無しさん
07/04/16 17:40:12
すいません。くぐっても答えが見つからないので教えてください。
MFC AppWizerdで作ったDLLを
Win32 Application(SDK)から呼び出せますでしょうか?

619:デフォルトの名無しさん
07/04/16 22:46:38
DLLの作りによる

620:デフォルトの名無しさん
07/04/21 20:43:01
…そのまんまやなw

621:デフォルトの名無しさん
07/04/27 02:12:22
>>617
> 正規ユーザーが知らないはずがない
いや、キッチリとは知らんよ俺は
VC4,VC6,VS8の正規ユーザーなんだけどさw


622:デフォルトの名無しさん
07/04/27 07:54:49
そらあほだ。

623:デフォルトの名無しさん
07/04/27 11:35:15
電車乗ったことあるけどキップの買い方知らないとかそういうレベル

624:デフォルトの名無しさん
07/04/27 11:36:16
地方の人は知らないかもしれないけれど、今や切符を買わなくても電車に乗れるからねぇ。

625:デフォルトの名無しさん
07/04/27 12:38:59
喩えの誤謬に突っ込む莫迦ありき。

626:デフォルトの名無しさん
07/04/27 13:00:28
いや、寧ろ誤謬と思ってないからこそ。
実際、知らなくても利用できると言いたかった。

627:デフォルトの名無しさん
07/04/27 14:21:36
他のソフトならいざ知らず、開発ツールでそんなやつがいるとは驚きだw

628:デフォルトの名無しさん
07/04/27 14:56:35
_bstr_t strData[3];
strData[0] = "0000";
strData[1] = "1111";
strData[2] = "2222";

COleSafeArray sa;
sa.CreateOneDim(VT_BSTR, 3, strData);

_variant_t va = sa;

とやってみると、_variant_tのコンストラクタで例外が出てしまいます。
sa.CreateOneDim(VT_BSTR, 3, strData);
sa.CreateOneDim(VT_BSTR, 3);
とすると通過するので、CreateOneDim()にstrDataを渡す方法が
間違ってるのかなと思うんですけど、
_bstr_t配列はどうやって渡すものなんでしょうか。
それとも、CreateOneDim()には_bstr_t配列は渡せない?


629:デフォルトの名無しさん
07/04/27 14:58:29
> sa.CreateOneDim(VT_BSTR, 3, strData);
> sa.CreateOneDim(VT_BSTR, 3);
> とすると通過するので

sa.CreateOneDim(VT_BSTR, 3, strData);
の部分を
sa.CreateOneDim(VT_BSTR, 3);
とすると通過するので

のミスです。失礼しました。
よろしくお願いいたします。

630:デフォルトの名無しさん
07/04/27 16:25:30
_bstr_tの配列≠BSTRの配列

631:デフォルトの名無しさん
07/04/27 16:41:39
>>630
ということは、_bstr_t配列のままだとCreateOneDim()に直接は渡せないということですよね。
SAFEARRAYとかはまったくの未知で、このへんの使いかたって、
ネット上を探してもなかなか見つからないのですが、
_bstr_t配列やCString配列からCreateOneDim()に渡すBSTR配列を作る方法って、ご存知無いでしょうか。

632:デフォルトの名無しさん
07/04/27 17:06:44
ソース見るかメモリダンプして内部構造調べてみれば?

633:デフォルトの名無しさん
07/04/27 17:21:39
切符買わないってどうやるの?

634:デフォルトの名無しさん
07/04/27 17:29:32
オレはもう何年も切符買ってないなあ
Suicaとパスネットでやってきたが、最近はパスネットもいらなくなったし
オートチャージで入金もない。
車はETCで料金所はとまらないし、旅行先でレンタカー
借りるときもETC車載かどうかを気にしてる

635:デフォルトの名無しさん
07/04/27 17:30:45
飛行機もfelica携帯使ってチェックインもカウンターに行かないし
並ぶことがほとんどなくなった

636:デフォルトの名無しさん
07/04/27 23:24:51
で、これらは相談か?

637:デフォルトの名無しさん
07/04/28 02:40:31
いいえ相談ではありません
日本語の練習です


638:デフォルトの名無しさん
07/04/28 11:12:47
VC6 MFCです
プロジェクトの設定の、デバッグ、C/C++、リンクにプロジェクトオプションがあるのだが
コマンドラインからビルドする場合この引数をどの様に渡したらいいの?


639:デフォルトの名無しさん
07/04/28 11:21:41
CL をコマンドラインから起動するときは、次の構文でオプションとファイル名を指定します。

CL [option...] file... [option | file]... [lib...] [@command-file] [/link link-opt...]

640:デフォルトの名無しさん
07/04/28 11:40:00
>>639
サンクス

641:デフォルトの名無しさん
07/04/29 02:23:43
msdev MyProject.dsp /MAKE "MyProject - Win32 Debug" /REBUILD
とかは?

642:デフォルトの名無しさん
07/04/30 22:58:55
おそらくかなり初歩的な質問なのですが、ダイアログから別ダイアログを開くためにはどうすればよいのでしょうか?
VBのShowのようなコマンドがあるのかと思ったのですが、よくわかりませんでした。
よろしくお願いします。

643:デフォルトの名無しさん
07/04/30 23:05:30
CAboutDlgを参考に

644:デフォルトの名無しさん
07/05/01 05:06:10
>>642
インスタンス生成してから
a) Create() して ShowWindow()
b) DoModal()
のどちらでも。つか、MSDNくらい嫁。

645:デフォルトの名無しさん
07/05/01 12:44:36
VC6 MFCです
メニュー→ツール→オプション→ディレクトリ配下の
インクルードファイル、ライブラリファイルは何処に保存されているのしょうか?
C:\program Files\Microsoft Visual Studio配下はgrepしてみましたがありませんでした
レジストリに記録されているのでしょうか?
知ってる人いたら教えてホスイ


646:デフォルトの名無しさん
07/05/01 13:45:47
パスの順番でファイルを検索する。

647:デフォルトの名無しさん
07/05/01 14:50:26
>>645
ちょっと探してみたがレジストリの
HKEY_CURRENT_USER\Software\Microsoft\DevStudio\6.0\Build System\Components\Platforms\Win32 (x86)\Directories
に入ってるみたいだよ

648:デフォルトの名無しさん
07/05/01 17:28:42
>>647
>>645ですが
神が降臨しました、ありがとう実は現在ではVC6 MFCのUIが非常に悪いので
秀丸のマクロと融合させてできる限りの操作を秀丸中心にお行おうと思っていたところです
そういう訳で探していました、本当にありがとね
処でMFCで作成したプログラムはコマンドラインからビルド、コンパイルまで出来るのでしょうか?
(rcファイルはVCで作ってあると仮定してです)?

649:デフォルトの名無しさん
07/05/01 17:40:50
そりゃあできるっしょ。
プロジェクトのプロパティで、コンパイルとリンクのコマンドライン見られなかったっけ
それ参考にしたらいいと思う。

650:デフォルトの名無しさん
07/05/01 17:45:48
>>649
サンクスです、取り合えず今レジのバックアップを保存したところです
これからゴリゴリとマクロを書いていきますww

651:デフォルトの名無しさん
07/05/01 18:35:22
全然見当はずれの方向に進んでるみたいだけど
相当頭堅そうだから本人のやりたいようにやらせて置くのが一番だな
わざわざレジストリの場所教えてやったやつはかわいそう

652:デフォルトの名無しさん
07/05/01 21:19:12
Platform SDKについてるMFCのソースをビルドすれば
OSについてるものとまったく同じDLLが出来上がるんですか?

653:デフォルトの名無しさん
07/05/02 00:37:19
おい、Platform SDKはもう無くなったって、誰か教えてやれ。

654:デフォルトの名無しさん
07/05/02 17:48:50
VC2005 MFCです。
複数のモードレスダイアログを入れ子のような感じで作成したいのですが
孫のウィンドウを作成したところで正常に動作しなくなってしまいました。
実際のコードは下のように書いています。

//ビューでマウスがクリックされたら子ウィンドウとしてモードレスダイアログを生成
void CtestView::OnLButtonDown(UINT nFlags, CPoint point)
{
CTestDlg *testdlg;
testdlg = new CTestDlg();
testdlg->Create(CTestDlg::IDD);
testdlg->SetParent(this);
testdlg->ShowWindow(SW_SHOW);
CView::OnLButtonDown(nFlags, point);
}

//ビューで作成した子ウィンドウのボタンが押されたら、孫のモードレスダイアログを生成
void CTestDlg::OnBnClickedButton1()
{
CTestDlgB *testdlg;
testdlg = new CTestDlgB();
testdlg->Create(CTestDlgB::IDD);
testdlg->SetParent(GetParent());
testdlg->ShowWindow(SW_SHOW);
}

何か根本的な勘違いをしてしまっているのでしょうか?
初歩的な質問ですいません、よろしくお願いします。


655:654
07/05/02 17:52:31
少し変えて試してみたコードをそのまま書き込んでしまいました。
testdlg->SetParent(GetParent());

testdlg->SetParent(this);
でした。

656:デフォルトの名無しさん
07/05/02 18:58:47
「正常に動作しなくなってしまいました」を説明してくれ。
解決の重要な手がかりなんだから。

657:デフォルトの名無しさん
07/05/02 19:14:54
関係ないけど
モーダルならそういう風にローカル変数でもいいけど
モードレスだと関数抜けた後のことが気になる。

658:デフォルトの名無しさん
07/05/02 19:17:27
ローカル変数ではないでしょ。
PostNcDestroy で delete this が入ってるか、メッセージで何とかしてるのかと

659:654
07/05/02 21:03:30
>>656
すいません、説明不足でした。
わかっている限りだと2パターンの変な挙動をしていて
1つはダイアログのウィンドウ自体は生成されているようでウィンドウの移動などはできるのですが
再描画のコードが動作していない時のような感じになる事があるのと(必ずというわけでも無いようです)
生成した孫ウィンドウがアクティブな間は何の問題も無く動作しているように見えるのですが
一度、子のウィンドウをアクティブにしてしまうとアプリケーション自体がフリーズしたような
状態になってしまうといった感じです。
念のためSDIの新規プロジェクトを作り直して見ても結果は同じでした。

>>657,658
一応 PostNcDestroy で delete this をしていました。
こういう場合でもスタティックかグローバル変数にしておいた方が安全なのでしょうか?


660:デフォルトの名無しさん
07/05/02 21:44:10
>659
思いつきで書いただけだから
「関係ないけど」と断ってる

661:デフォルトの名無しさん
07/05/02 21:45:08
>>659
URLリンク(msdn2.microsoft.com)
>if hWndNewParent is not NULL and the window was previously a child of the desktop,
> you should clear the WS_POPUP style and set the WS_CHILD style before calling SetParent.
>Windows 2000/XP: When you change the parent of a window, you should synchronize the UISTATE of both windows.

なんでSetParent使ってるの?
ダイアログリソースに子スタイル設定して、Createで親指定すればいいのに。

662:デフォルトの名無しさん
07/05/03 00:14:49
あの最低な質問かもしれないですが、万が一という可能性もあるかもしれないので
質問させてください
MFCでコンソールアプリって作成出来ないですよね、バージョンは問いません。


663:デフォルトの名無しさん
07/05/03 00:24:43
いや、普通にできるが。

664:デフォルトの名無しさん
07/05/03 00:52:33
>>663
え~まじっすか?
新規作成→プロジェクトからはMFC ActiveX ContorolWizard or MFC AppWizard(dll) or MFC AppWizard(exe)しかないのだけど?
これじゃあコンソールアプリは作成できないよね?


665:デフォルトの名無しさん
07/05/03 00:57:51
>>664
Win32コンソールプロジェクトを選択して、詳細でMFCサポート追加しろ。

666:デフォルトの名無しさん
07/05/03 01:16:56
>>665
そういう裏技があったのね、サンクス

667:デフォルトの名無しさん
07/05/05 09:51:02
CStringを返す関数から戻ってきたクラスは自分で廃棄しないでも良いですか?

668:デフォルトの名無しさん
07/05/05 10:28:54
CStringを返すと、呼び出し側ではそれのコピーを受け取るだろう。

669:デフォルトの名無しさん
07/05/06 00:16:24
よくこういう仕様のクラスあるけど腐ってるよね?>CString
一見便利そうに見えるけどインスタンスがハッキリしないから
すげー扱いづらい
こういう仕様デフォにする奴ってアフォだろ

なげー文字列をCStringで扱うとアフォかってほど遅くなる
結局、使えない

670:デフォルトの名無しさん
07/05/06 00:49:03
   ○○○
  ○(・ω・)○ ソンナコトイワレテモ
   ○○○   ウチ、ボン・デ・ライオンヤシ
  .c(,_uuノ

671:デフォルトの名無しさん
07/05/07 11:46:34
>>669
>インスタンスがハッキリしないから
君が何を言っているのか判らないよ…
理解できてないだけじゃ?

672:デフォルトの名無しさん
07/05/07 11:54:13
>>669
せめて他の文字列を取り扱う手段と比較してから結論を出してくれ。

673:デフォルトの名無しさん
07/05/07 17:21:39
なんか、C/C++以外の言語と勘違いしてんじゃね?


674:デフォルトの名無しさん
07/05/07 18:55:30
リソースエディタでダイアログボックスを作って、
CDialogを継承した派生クラスを作りました。
コントロールは、追加したメンバ変数を操作して
扱えましたが、ダイアログ自身はどうやれば操作
できるのでしょうか。
タイトルバーの文字列を変更する方法を模索中です。
this->SetWindowText("タイトル文字列");
を試すと異常終了だし。

675:デフォルトの名無しさん
07/05/07 19:29:26
宇宙天地 與我力量 降伏群魔 迎来曙光
我が左手に封じられし鬼よ
今こそその力を、示せえーー!!
うおおおおおおーーー!!!
俺の生徒に、手を出すなあーーー!!!!

676:デフォルトの名無しさん
07/05/07 20:10:38
>>674
異常終了の詳細キボンヌ

677:デフォルトの名無しさん
07/05/07 20:22:51
>>676
「Visual C++ Runtime Error [中止][無視][キャンセル]」
のような感じ文面のダイアログが出て終了。

本来ならそれで正解のはずということでしょうか。
何らかのプログラム上のミスが原因で異常終了が出てるのではないか
という意味でしょうか。

678:デフォルトの名無しさん
07/05/07 20:30:27
SetWindowTextをどこで呼び出してる?
コンストラクタの中とかじゃダメだよ。
ちゃんとウィンドウが作成されてCDialogオブジェクトに
アタッチされてからじゃないと。

679:デフォルトの名無しさん
07/05/07 20:40:02
>>672
じゃ、mallocで確保した領域に突っ込んだ文字列でいいよ
これで想像付く?
後付けであれがないこれがないごちゃごちゃいうなよぶっ殺すぞ


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch