1 名前:デフォルトの名無しさん mailto:sage [2006/11/21(火) 10:38:31 ] Microsoft Foundation Classライブラリ専用スレです。 前スレ ■MFC相談室 mfc16d.dll■ pc8.2ch.net/test/read.cgi/tech/1146117893/
562 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 03:46:22 ] >>559 pd3dDevice->SetRenderState(D3DRS_ZENABLE, TRUE);
563 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 00:12:04 ] コナミの麻雀ゲームの名前なんだっけ
564 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 05:06:26 ] 真・麻雀だろ、スーファミの
565 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 03:33:23 ] mobile fan club の略 携帯で月額料金を支払って登録すると会員になるファンクラブのこと 会員になると チケットの先行予約やデジタル会報の閲覧 待受け画像や着うた、着メロ、ムービー等のサービスを利用できる。
566 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 03:34:20 ] Mass Flow Controlerの略称。 気体の流量制御装置のこと。 真空装置などに微量、あるいは一定流量の気体を導入する時などに使用される。
567 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 14:03:09 ] ttp://ja.wikipedia.org/wiki/MFC
568 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 15:27:02 ] game11.2ch.net/test/read.cgi/gamestg/1159375041/ 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 mailto:sage [2007/03/29(木) 01:36:44 BE:830995788-2BP(0)] 質問です。 XP, Vista 上で動くプログラムを書いているのですが、 ダイアログやその他のUI系フォントとして、XPだと MS Gothic 系 に、Vista だと主に メイリオ にしたいと考えて います。 名前直指定とかは行わず、テーマとかシステムに 即したコードにしたいのですが、そもそもMFCのダイアログに 使われるフォントを、うまく切り替える方法すら分かりません。 そもそも、OSのフォントの扱いからしてよく分かってないのですが、 ここから調べていきたいと考えています。 なにかいい解決策がないでしょうか?
570 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 01:46:24 ] MFCのダイアログの文字って リソースで指定するんじゃないんの?
571 名前:569 mailto:sage [2007/03/29(木) 01:53:07 BE:363560674-2BP(0)] >>570 その通りで、リソースで指定しています。ひとまず、ダイアログの プロパティにて、"Use System Font" を true にしています。 そうすると、フォント名が"MS Shell Dlg" になります。 あと、開発環境を忘れていましたので、書いておきます。 VS2005 pro sp1 xp sp2, vista
572 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 06:02:23 ] ダイアログのフォントを変えたい場合は CDialog::CreateIndirect を使う。 それかダイアログを表示した後でコントロールごとにフォントを変更する。
573 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 13:39:04 ] 親ダイアログの初期化処理が行われていることを知らせるために、 ポップアップダイアログを作って、プログレスバーで処理中が わかるようにしようとしています。 プログレスバーは処理が行われていることが分かればよく、 タイマイベントに応じて単純にカウントアップするだけです。 具体的な手順として @親ダイアログのOnInitDialogで、プログレスバーをもつ子ダイアログを作成 A子ダイアログのタイマイベントを起動(SetTimer) B親ダイアログの初期化処理 (この間に、子ダイアログのWM_TIMERイベントでプログレスバーをカウントアップ) C子ダイアログのタイマイベントを終了(KillTimer) D親ダイアログのOnInitDialog終了 としています。 しかし意図した通りには動作しません。 原因として、Aで起動したタイマイベントが、Dのあとに動作を開始しているためです。 (Cの処理をコメントアウトしたところ、親ダイアログの表示後に、 OnTimerイベントが呼び出されていることを確認しました。) そこで質問なのですが、 (i) Aで起動したタイマが、実際はDのあとまで起動されない理由と、 (ii) Aで起動したタイマを、Aのタイミングで動作させる方法 です。わかる方いらっしゃったらお願いします。
574 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 13:53:48 ] >>573 (i)WM_TIMERはメッセージキューに置かれるが そのメッセージを取りに行く処理(メッセージポンプ)が処理が終わるまで行われていないため。 (ii)子ダイアログを別スレッドで作成する。 とりあえずこれ読んで ttp://msdn2.microsoft.com/en-us/library/ms644927.aspx
575 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 14:22:49 ] >574 ありがd。 ただ、子ダイアログを別スレッドにしても、 メッセージポンプ自体が動いてないのだとすると、 子ダイアログの描画がイベントはちゃんとおこなわれるのん?
576 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 14:39:40 ] >>575 >>574 のURLを読んでくれ
577 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 14:56:30 ] (゚д゚)読まぬ!
578 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 17:31:31 ] 読みたくないんだい
579 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 23:09:10 ] >>573 (ii)どうしてもタイマ使いたいってんなら>>574 の通り 親のOnInitDialog()の進行状況を表示したいだけなら 親側からユーザー定義メッセージをSendMessage()してやればよい これ一番単純 このスレ死んでんのかと思ってたよ >>573 が態々ネタ創作したようにも見えるが
580 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 01:13:11 ] タイマを使うのが、コード書く分には一番楽だなあ、ぐらいの考えです。 スレッド化はしてみたけど、どうにもうまく動かないところ。 別のところでこけてるのだろけど、いまのとこ原因不明です。 進行を知らせるダイアログをシングルトンで実装して、 MFCクラス、一般C++クラスを問わず、時間のかかる処理のときは、 動作中であることを気軽に示せるようにして、↓みたいな使い方を考えてます。 LoadingDialog->inst()->starg() //時間のかかる処理 LoadingDialog->inst()->stop()
581 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 06:13:47 ] 普通に考えたら時間のかかる処理を別スレッドにする。 プログレスバーはステータスバーに表示
582 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 08:25:19 ] >>580 逆に考えるんだ。 GUIスレッドはあくまでもGUIに徹し、時間の掛かる処理はワーカスレッドで行なう。 それがイベントドリブンということだ。
583 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 08:25:41 ] 質問は普通のプログラムの作りかたじゃなくて楽したいということか だったらどうでもいいや あと、よく考えたらWinRarなんかはダイアログにプログレスバーだな あれはダイアログ側で時間のかかる処理か
584 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 14:26:50 ] >>571 XP用とヴィスタ用の両方のダイアログを作る OS種別でどっちかを使う
585 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 20:08:54 ] >>556 です >>573 整理した方がいいよ ワーカースレッドのタイミングで描画させようとすると君のようなパラドックスに嵌ります この場合ワンクッション置いて、子ダイアログの遷移を親ダイアログがGETできるようにすれば いいと思う、(インラインでGET関数を記述すればいい、SET関数も必要になると思う) あくまでも主体は親で子は遷移を知らせるだけ(描画できるタイミングを通知) 一見普通に処理しているように見えてもワーカースレッドのタイミングで描画を行う プログラムは間違いなく破綻します。
586 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 20:25:44 ] >>558 です >>556 に騙されるな
587 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 20:51:13 ] >>586 >>585 だが なんだよ、マジレスしてるのにww いいよ585の反対で実装してごらん面白いことになるよww それから>>573 は簡単だからタイマー割り込み使うって書いてたけど MFCでタイマーの使い方ってネットでたまに見かけるけど まともな使い方してない場合が多いよMSDNのコードも漏れ的には不満なんだが
588 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 21:31:23 ] >>586 です 「>>556 です」とか突然言い出すからネタで返しただけ。気にするな。 で、まともじゃないタイマーの使い方の説明キボンヌ。何か気になる。
589 名前:デフォルトの名無しさん [2007/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 mailto:sage [2007/04/11(水) 19:42:13 ] >>588 マジレスはもうおしまい後は自分で考えてねww それではそっけないのでヒントは 「一意」 サービスしすぎww以上 >>>589 C++から勉強しなおした方がいいYOというか 585で説明してるしww 皆さん結果を求めたいがために焦りすぎ、実装する以上もっと気の細かい シーケンスが必要ですww 質問「何々の関数に、赫々しかじかの引数を与えましたが結果がでません」 答え「準備不足です」
591 名前:556 mailto:sage [2007/04/11(水) 19:44:18 ] ↑ すまん>>556 です
592 名前:デフォルトの名無しさん [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 09:49:38 ] >>592 できない。
594 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 11:10:59 ] >>592 FindItemで見つけた後、一致しているかどうか自分でチェックしたら?
595 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 03:27:54 ] つ仮想リストビュー
596 名前:592 mailto:sage [2007/04/13(金) 14:43:38 ] ありがとうございました。FindItemで見つけた後strcmpで再度比較することで対応しました。 ただ、3つ以上重複した場合(aaaa,AAAA,AAAA, aaAAなど)、の場合、 AAAAのが2つ重複して追加される問題があるので 仮想リストビューにする方法も含めて、何か対応を考えて見ます
597 名前:デフォルトの名無しさん [2007/04/13(金) 23:24:35 ] 見つかった文字列+1を指すポインタアドレスを引数として再起呼び出しをすれば如何?
598 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 14:07:26 ] メッセージを投げたいオブジェクトを生成するために 安易に画面も持たないのに CDialog を継承したクラスをCreate してたり するんだけど、(要は他のオブジェクトからメッセージを投げるのに、 有効なm_hWndが欲しいだけ) CDialog じゃなくて CWnd を継承して有効な m_hWnd をもつ オブジェクトを生成する手段ってあります?
599 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 15:13:15 ] CWndを継承すればいいじゃない。何が問題なんだ?
600 名前:598 mailto:sage [2007/04/14(土) 16:07:09 ] >>599 CWnd を継承したオブジェクトを Create しても h_hWnd は 0x0000 なので CDialog を Create してます なにか、画面に関係しないで CWnd を Create して 有効な h_hWnd を得られれば文句無いんですが
601 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 17:12:16 ] うちでは問題なく作成できるから、あなたのコードに問題がある。
602 名前:デフォルトの名無しさん [2007/04/14(土) 18:04:49 ] コントロールバー (CControlBar) にツールバー (CToolBar) を乗せることはできないでしょうか?
603 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 18:23:04 ] >>598 ::CreateWindowExでメッセージonlyウィンドウ作って、 CWnd::SubclassWindow使えばいいんじゃね?
604 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 18:33:19 ] 仮想リストビューってSetItemCountEx()で設定できるのは 1億件までですよね?ドキュメントにはDWORDの最大数まで サポートしているようなことが書いてありますが、 実際にそこまで設定することは出来ますか? SetItemCountExを辿っていくとSendMessageで投げていますが、 1億を越える数字を設定するとSendMessageがFALSEを返すので APIのバグのような気もしますけど。
605 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 18:36:08 ] >>604 出来ません。
606 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 19:05:42 ] >>604 >ドキュメントにはDWORDの最大数までサポートしているようなことが書いてありますが 実際はメモリ量とか空間の限界とかあるから無理。
607 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 19:13:09 ] SetItemCountEx の仕様見ると int になってるけど
608 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 19:29:02 ] そりゃまあ実際に限界があるのは仕方ないけど、 なんで「一億」にしてあるのかがわからん。 100000001件にすると表示されないのな。ワロス。 MSDNに書いとけよ。これじゃアメリカ国民全員の名前を リストコントロールで表示することは出来ないじゃん。 マイクロソフトのくせに自国民の数すらサポートできない コントロールを作るなんて非難の対象だな
609 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 20:35:56 ] 大丈夫、マイクロソフトなんて国はないから自国民は一人もいないので。
610 名前:598 mailto:sage [2007/04/15(日) 08:16:10 ] >>601 >>603 ありがとうございます 今は休み中にてVSEしかないのでMFCが無いので試せないので 明日にでも試そうと思います ちなみに画面を持たないCWndオブジェクトをCreate()する場合、 どんな引数が望ましいのでしょうか?
611 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 09:00:12 ] 非表示ウインドウでもhWndはあるだろ なかったらShowWindowで表示することもできない ShowWindow 指定されたウィンドウの表示状態を設定します。 BOOL ShowWindow( HWND hWnd, // handle to window int nCmdShow // show state of window ); パラメータ hWnd ウィンドウのハンドルを指定します。 nCmdShow ウィンドウの表示状態を指定します。
612 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 22:16:49 ] 質問です。 MFCで作成したソフトを公開したいのですが、VS.net2003の入っていないパソコンで 自分の作ったソフトを実行してみると、 mfc71d.dll msvcp71d.dll msvcr71d.dll が必要です、とでてきます。 これらのdllは勝手に配布しても大丈夫なのでしょうか?
613 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 22:30:07 ] いいえ、デバッグ版を勝手に配布してはいけません。
614 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 22:34:11 ] >>613 mfc71.dll などdがついていないものなら配布しても大丈夫なのでしょうか?
615 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 23:04:36 ] >>614 MSに訊け。つーか付属ドキュメントくらい読め。
616 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 00:55:13 ] >615 便乗で質問なんだが、その手の質問は MSDN購読してなくても答えてもらえるの?
617 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 06:01:25 ] そういう重要なことを正規ユーザーが知らないはずがない。 無料のexpressユーザー?と思ったけど MFCなら製品版使ってるんだろうし、どうやって手に入れたんだろう?
618 名前:デフォルトの名無しさん [2007/04/16(月) 17:40:12 ] すいません。くぐっても答えが見つからないので教えてください。 MFC AppWizerdで作ったDLLを Win32 Application(SDK)から呼び出せますでしょうか?
619 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 22:46:38 ] DLLの作りによる
620 名前:デフォルトの名無しさん [2007/04/21(土) 20:43:01 ] …そのまんまやなw
621 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 02:12:22 ] >>617 > 正規ユーザーが知らないはずがない いや、キッチリとは知らんよ俺は VC4,VC6,VS8の正規ユーザーなんだけどさw
622 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 07:54:49 ] そらあほだ。
623 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 11:35:15 ] 電車乗ったことあるけどキップの買い方知らないとかそういうレベル
624 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 11:36:16 ] 地方の人は知らないかもしれないけれど、今や切符を買わなくても電車に乗れるからねぇ。
625 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 12:38:59 ] 喩えの誤謬に突っ込む莫迦ありき。
626 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 13:00:28 ] いや、寧ろ誤謬と思ってないからこそ。 実際、知らなくても利用できると言いたかった。
627 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 14:21:36 ] 他のソフトならいざ知らず、開発ツールでそんなやつがいるとは驚きだw
628 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 16:25:30 ] _bstr_tの配列≠BSTRの配列
631 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 16:41:39 ] >>630 ということは、_bstr_t配列のままだとCreateOneDim()に直接は渡せないということですよね。 SAFEARRAYとかはまったくの未知で、このへんの使いかたって、 ネット上を探してもなかなか見つからないのですが、 _bstr_t配列やCString配列からCreateOneDim()に渡すBSTR配列を作る方法って、ご存知無いでしょうか。
632 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 17:06:44 ] ソース見るかメモリダンプして内部構造調べてみれば?
633 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 17:21:39 ] 切符買わないってどうやるの?
634 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 17:29:32 ] オレはもう何年も切符買ってないなあ Suicaとパスネットでやってきたが、最近はパスネットもいらなくなったし オートチャージで入金もない。 車はETCで料金所はとまらないし、旅行先でレンタカー 借りるときもETC車載かどうかを気にしてる
635 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 17:30:45 ] 飛行機もfelica携帯使ってチェックインもカウンターに行かないし 並ぶことがほとんどなくなった
636 名前:デフォルトの名無しさん [2007/04/27(金) 23:24:51 ] で、これらは相談か?
637 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 02:40:31 ] いいえ相談ではありません 日本語の練習です
638 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 11:12:47 ] VC6 MFCです プロジェクトの設定の、デバッグ、C/C++、リンクにプロジェクトオプションがあるのだが コマンドラインからビルドする場合この引数をどの様に渡したらいいの?
639 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 11:21:41 ] CL をコマンドラインから起動するときは、次の構文でオプションとファイル名を指定します。 CL [option...] file... [option | file]... [lib...] [@command-file] [/link link-opt...]
640 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 11:40:00 ] >>639 サンクス
641 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 02:23:43 ] msdev MyProject.dsp /MAKE "MyProject - Win32 Debug" /REBUILD とかは?
642 名前:デフォルトの名無しさん [2007/04/30(月) 22:58:55 ] おそらくかなり初歩的な質問なのですが、ダイアログから別ダイアログを開くためにはどうすればよいのでしょうか? VBのShowのようなコマンドがあるのかと思ったのですが、よくわかりませんでした。 よろしくお願いします。
643 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 23:05:30 ] CAboutDlgを参考に
644 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 05:06:10 ] >>642 インスタンス生成してから a) Create() して ShowWindow() b) DoModal() のどちらでも。つか、MSDNくらい嫁。
645 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 12:44:36 ] VC6 MFCです メニュー→ツール→オプション→ディレクトリ配下の インクルードファイル、ライブラリファイルは何処に保存されているのしょうか? C:\program Files\Microsoft Visual Studio配下はgrepしてみましたがありませんでした レジストリに記録されているのでしょうか? 知ってる人いたら教えてホスイ
646 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 13:45:47 ] パスの順番でファイルを検索する。
647 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 14:50:26 ] >>645 ちょっと探してみたがレジストリの HKEY_CURRENT_USER\Software\Microsoft\DevStudio\6.0\Build System\Components\Platforms\Win32 (x86)\Directories に入ってるみたいだよ
648 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 17:28:42 ] >>647 >>645 ですが 神が降臨しました、ありがとう実は現在ではVC6 MFCのUIが非常に悪いので 秀丸のマクロと融合させてできる限りの操作を秀丸中心にお行おうと思っていたところです そういう訳で探していました、本当にありがとね 処でMFCで作成したプログラムはコマンドラインからビルド、コンパイルまで出来るのでしょうか? (rcファイルはVCで作ってあると仮定してです)?
649 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 17:40:50 ] そりゃあできるっしょ。 プロジェクトのプロパティで、コンパイルとリンクのコマンドライン見られなかったっけ それ参考にしたらいいと思う。
650 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 17:45:48 ] >>649 サンクスです、取り合えず今レジのバックアップを保存したところです これからゴリゴリとマクロを書いていきますww
651 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 18:35:22 ] 全然見当はずれの方向に進んでるみたいだけど 相当頭堅そうだから本人のやりたいようにやらせて置くのが一番だな わざわざレジストリの場所教えてやったやつはかわいそう
652 名前:デフォルトの名無しさん [2007/05/01(火) 21:19:12 ] Platform SDKについてるMFCのソースをビルドすれば OSについてるものとまったく同じDLLが出来上がるんですか?
653 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 00:37:19 ] おい、Platform SDKはもう無くなったって、誰か教えてやれ。
654 名前:デフォルトの名無しさん mailto:sage [2007/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 mailto:sage [2007/05/02(水) 17:52:31 ] 少し変えて試してみたコードをそのまま書き込んでしまいました。 testdlg->SetParent(GetParent()); ↓ testdlg->SetParent(this); でした。
656 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 18:58:47 ] 「正常に動作しなくなってしまいました」を説明してくれ。 解決の重要な手がかりなんだから。
657 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 19:14:54 ] 関係ないけど モーダルならそういう風にローカル変数でもいいけど モードレスだと関数抜けた後のことが気になる。
658 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 19:17:27 ] ローカル変数ではないでしょ。 PostNcDestroy で delete this が入ってるか、メッセージで何とかしてるのかと
659 名前:654 mailto:sage [2007/05/02(水) 21:03:30 ] >>656 すいません、説明不足でした。 わかっている限りだと2パターンの変な挙動をしていて 1つはダイアログのウィンドウ自体は生成されているようでウィンドウの移動などはできるのですが 再描画のコードが動作していない時のような感じになる事があるのと(必ずというわけでも無いようです) 生成した孫ウィンドウがアクティブな間は何の問題も無く動作しているように見えるのですが 一度、子のウィンドウをアクティブにしてしまうとアプリケーション自体がフリーズしたような 状態になってしまうといった感じです。 念のためSDIの新規プロジェクトを作り直して見ても結果は同じでした。 >>657 ,658 一応 PostNcDestroy で delete this をしていました。 こういう場合でもスタティックかグローバル変数にしておいた方が安全なのでしょうか?
660 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 21:44:10 ] >659 思いつきで書いただけだから 「関係ないけど」と断ってる
661 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 21:45:08 ] >>659 ttp://msdn2.microsoft.com/en-us/library/ms633541.aspx >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 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 00:14:49 ] あの最低な質問かもしれないですが、万が一という可能性もあるかもしれないので 質問させてください MFCでコンソールアプリって作成出来ないですよね、バージョンは問いません。