1 名前:デフォルトの名無しさん mailto:sage [2006/11/21(火) 10:38:31 ] Microsoft Foundation Classライブラリ専用スレです。 前スレ ■MFC相談室 mfc16d.dll■ pc8.2ch.net/test/read.cgi/tech/1146117893/
6 名前:デフォルトの名無しさん mailto:sage [2006/11/22(水) 00:11:42 ] リソースのString TableのIDR_MAINFRAMの値が 〜\n\n〜\n\n\n〜\n〜 となっていると思うけれど、このうちのどれかの〜がメインフレームのタイトルになっていて、そのハイフンを消せばタイトルからハイフン消える。
7 名前:5 mailto:sage [2006/11/22(水) 10:36:07 ] >>6 ありがとうございます。消えました。
8 名前:デフォルトの名無しさん mailto:sage [2006/11/22(水) 15:55:30 BE:27175027-2BP(200)] >>4 CHtmlView::GetHtmlDocumentでhtmlドキュメントのIDispatchを取得して、 IHTMLDocument2::writeで注入。
9 名前:デフォルトの名無しさん mailto:sage [2006/11/22(水) 22:05:49 ] MFCを勉強するのに定評のある本を教えて下さい。お願いします できれば2、3冊くらい
10 名前:デフォルトの名無しさん mailto:sage [2006/11/22(水) 22:58:59 ] スレ違い
11 名前:デフォルトの名無しさん mailto:sage [2006/11/23(木) 02:55:20 ] >>10 いや、そうは思わんけど・・・w
12 名前:デフォルトの名無しさん mailto:sage [2006/11/23(木) 06:21:35 ] シルトの標準講座MFC ↓ MFCのライブラリのソース読む MFCはこれぐらいで十分 あとはwin32apiでもやった方がいい
13 名前:デフォルトの名無しさん [2006/11/23(木) 15:28:54 ] MFCを使ってMDIプログラムを作っています。 子画面の作成方法は分かったのですが、 それにダイアログのようにコントロールを貼り付ける方法が分かりません・・・ CFormViewを土台にクラスを作ると子画面にできないですし、 CMDIChildWndを土台にクラスを作るとコントロールが使えません 両方の良いとこ取りをしたようなクラスはありませんか? もしくは子画面でコントロールを使う方法を知りませんか? (上は標準作成の子画面ではなく自作するクラスの方の話です)
14 名前:デフォルトの名無しさん mailto:sage [2006/11/23(木) 15:36:46 ] MDIで普通にコントロール使えるだろ
15 名前:デフォルトの名無しさん [2006/11/23(木) 16:03:54 ] >>14 色々と試してみたのですが無理でした クラスの新規作成でCMDIChildWndを継承したクラスを作り、 グローバル関数でインスタンス生成して呼び出していますが、 表示されないですし、コントロールも貼り付けられませんです
16 名前:デフォルトの名無しさん mailto:sage [2006/11/23(木) 16:36:10 ] ウイザードでMDIにしたら普通にできたけど
17 名前:デフォルトの名無しさん [2006/11/23(木) 16:41:34 ] >>16 標準で作られる子画面ではなくてですか?
18 名前:デフォルトの名無しさん mailto:sage [2006/11/23(木) 16:45:09 ] sdiでフォームビューにするのと同じ 初心者向けの入門書でも読んどけ
19 名前:デフォルトの名無しさん mailto:sage [2006/11/23(木) 17:44:38 ] >>13 通常はウィザードで選択したViewで表示を行い、特定のDocumentを扱う場合のみ 新しいView(FormView派生)で表示したいってことかな?
20 名前:9 mailto:sage [2006/11/23(木) 18:19:49 ] >>12 dクス!さっそくやってみます。
21 名前:デフォルトの名無しさん mailto:sage [2006/11/23(木) 19:26:44 ] ドキュメントテンプレート追加したら 任意のviewで表示できるけど
22 名前:デフォルトの名無しさん mailto:sage [2006/11/23(木) 19:58:58 ] >>13 FormViewのMDI子ウィンドウはウィザードで普通にできるけれど、 もしかして、スプリッタやろうとしてるんじゃないのかな? それならウィザードじゃ、FormViewはじかれて、できない。 FormViewの派生自作し、CreateStaticでスプリッタ作らないと。 Doc2つ作ってそれぞれにDoc-View割り付ける方法もあるらしいけれど、 オーソドックスに行くなら、この例ならTreeViewをウィザード使ってDoc-View使って、FormViewはDoc-View使わず、他のクラスからのアクセスはFormViewのオブジェクト宣言。
23 名前:22 mailto:sage [2006/11/23(木) 20:02:04 ] それと、FormViewのスプリッタをウィザードが認めてないのは、 作ってみればわかるけど、スクロールバーでボタンなどのコントロールが隠れたりして、 ありえないというか、まずチマタじゃ見ないFormになる。 蛇流ゆえに作っていくと色々とワナがあるよ。
24 名前:22 mailto:sage [2006/11/23(木) 20:12:08 ] 左ツリーで右ブラウザ上のFORMみたいなことをやりたいなら、 CVIEWで作って、CMDIChildWndのハンドル取得して、オーナードローがいいよ。 DDX使えなくて、MFCの恩恵は使えないけど。
25 名前:デフォルトの名無しさん [2006/11/23(木) 20:29:23 ] void CTestDlg::OnButton2() { m_button1.ShowWindow(SW_HIDE); } これにより、ボタン2を押すとボタン1は非表示状態になるのですが、 void CTestDlg::OnButton3() { m_button1.SetRedraw(FALSE); m_button1.SetRedraw(TRUE); m_button1.Invalidate(); } としてボタン3を押すと、ボタン1が再び出てきてしまいます。 Invalidateだけだと出てきません。 SetRedrawって、SW_HIDEも勝手に戻してしまうものなのでしょうか? これから作ろうとしているものは、 SetRedraw(FALSE)〜SetRedraw(TRUE)の間でいろいろ内部情報の更新をして、 その結果に合わせて表示状態も切り替えようとしているのですが、 非表示にしても、最後のSetRedraw(TRUE)で表示状態に戻ってしまいます…。
26 名前:デフォルトの名無しさん mailto:sage [2006/11/23(木) 20:47:56 ] >>25 非表示なものにSetRedraw()やInvalidate()をする意味は? 非表示の間は描画処理は必要ないでしょ。
27 名前:デフォルトの名無しさん mailto:sage [2006/11/23(木) 20:48:11 ] >>25 SetRedrawの実際の処理WM_SETREDRAWをMSDNで見ても何も書いてないね。 m_button1の表示状態見て処理するしかないんじゃない?
28 名前:25 [2006/11/23(木) 21:30:17 ] >>26 >>27 非表示なものにSetRedrawをするわけではなくて、 SetRedrawの最中に、更新結果によっては非表示にする ということをやりたかったのです。 SetRedraw(FALSE)をした以上は、 最後は必ずSetRedraw(TRUE)を呼ばないとダメですよねぇ。
29 名前:デフォルトの名無しさん mailto:sage [2006/11/23(木) 21:31:21 ] this->SetRedraw(FALSE); this->SetRedraw(TRUE); this->Invalidate(); もしくは SetRedraw(FALSE); SetRedraw(TRUE); Invalidate(); にしたらうまくいったけど、なんでか分からん。
30 名前:デフォルトの名無しさん [2006/11/23(木) 22:04:46 ] editから入力された文字列を受け取るにはどうしたら いいんでしょうか? 誰か教えてください。 それと勉強できるホームページとか。 よろしくです。
31 名前:デフォルトの名無しさん mailto:sage [2006/11/23(木) 23:33:34 ] >>31 つ[MSDN]
32 名前:13 [2006/11/23(木) 23:40:38 ] ご回答ありがとうございます 返事が遅くなって申し訳ございません >>19 そうです 普段はウィザード生成の標準子画面で操作を行い、 ボタンが押されたときに別の子画面を表示する感じです (他にも同じ子画面が複数表示されないような制御も 行いたいと考えています) >>22-24 基本的にやりたいことは単純にダイアログのようにコントロールが 貼り付けられて、それへの操作を処理のトリガとする子画面を持つ MDIアプリを作りたいだけです しかし、思ったように上手く、とても困っている状況です つい数ヶ月前までVBしか経験のない状態でしたので、VC++6.0(MFC)の ドキュメントビューアーキテクチャなども理解できていません MFCで作れないWindowsアプリは無いと聞いたのと処理速度の問題から こちらの言語での開発を始めたのですが・・・
33 名前:デフォルトの名無しさん mailto:sage [2006/11/23(木) 23:59:31 ] MSDN2の 「フォーム ベースの MFC アプリケーションの作成を開始するには」 これでフォームひとつはできるはず。
34 名前:デフォルトの名無しさん mailto:sage [2006/11/24(金) 00:32:44 ] 1つのドキュメントに対して複数のビューを切り替えて表示する方法は MSDNにのってるよ。 support.microsoft.com/kb/141499/JA/ このサンプルでは切り替える時に今までのViewを削除してるので ちょっと変更が必要。切り替えより生成が面倒な感じ。 SDIで切り替える場合はこっち support.microsoft.com/kb/141334/JA//
35 名前:デフォルトの名無しさん [2006/11/24(金) 00:40:42 ] >>33-34 ありがとうございます それらのサイトで調べてみます
36 名前:デフォルトの名無しさん mailto:sage [2006/11/24(金) 00:54:03 ] >>21 のいうようにドキュメントテンプレ追加する。最初のトリだけ書くと 1:新規MFCウィザードMDI、後すべてデフォルトでプロジェクト作成。 2:リソースで新規ダイアログ作る 3:新規フォームじゃなく新規クラスでCFormViewの派生クラスを作る(2のリソースID指定) 4:新規クラスでCDocumentの派生クラスを作る 5:リソースstringテーブルに次を追加する Form\n\nForm(*.frm)\n.frm 注)\n\nの間に何か入れるとアプリケーション立ち上がり時、もしくはメニュー>新規作成時にCViewとCFormView選択可になる。 今は、CViewのみ立ち上がる。 6:C〜AppのInitInstance実装のAddDocTemplate(pDocTemplate);の下に以下を追加 pDocTemplate = new CMultiDocTemplate( IDR_〜,//5のstringID RUNTIME_CLASS(C〜Doc),//4のクラス名 RUNTIME_CLASS(CMDIChildWnd), RUNTIME_CLASS(C〜View));//3のクラス名 AddDocTemplate(pDocTemplate); 6:このファイルの頭の#includeの後に追加した、FormViewとDocumentクラスの.hファイルを#includeを記述 7:これで実行(Formを確認したい時は4の\n\nの間に何か入れる) けれど、C++はできるなら、VCは普通はWIN32アプリから入るんだけど、この先かなり難儀するかもしれないな。
37 名前:デフォルトの名無しさん [2006/11/24(金) 01:00:01 ] >>36 細かなご回答、ありがとうございます その手順で試してみます
38 名前:デフォルトの名無しさん mailto:sage [2006/11/24(金) 01:03:03 ] 36追加で2のダイアログのスタイルはチャイルド、境界線は「しない」に指定
39 名前:13 [2006/11/24(金) 01:08:10 ] 皆様、丁寧なご回答ありがとうございました 教えて頂いたことを試してみます
40 名前:デフォルトの名無しさん mailto:sage [2006/11/24(金) 01:22:00 ] 更に先のことになるけれど、 CViewのメニューなりからのイベントでCFormViewを開く時は、 CChildFrameのオブジェクトを取得して(CViewクラスからならGetParentFrameで取得できる。 ドキュメントテンプレにdoc-frame-viewの枠組みは登録されているので、新たにnewしてはいけない。) これを*pChldFrmとすると、 イベントハンドラに if(!pChldFrm->LoadFrame(・・・ { return FALSE;//もしくは失敗した時の例外処理 }というようにFormを作り、 pChldFrm->ShowWindow(〜/*定数*/); pChldFrm->UpdateWindow(); して表示してやる。
41 名前:デフォルトの名無しさん mailto:sage [2006/11/24(金) 01:30:34 ] 訂正 Form\n\nForm(*.frm)\n.frm を \nForm\n\nForm(*.frm)\n.frm しておいてもらえるかな。やれば意味わかると思う。
42 名前:デフォルトの名無しさん mailto:sage [2006/11/24(金) 01:55:21 ] それと、includeの順番はこの場合必ず、 #include"C〜Doc.h" #include"C〜View.h" の順番で。たまたまコンパイルビルドとおっちゃうかもしれないけど、 includeの順番はとっても重要だから。
43 名前:デフォルトの名無しさん [2006/11/25(土) 13:15:51 ] >>40-42 ありがとうございました この件に関しての問題は解決しました 次はDLL側にある子画面を呼び出し側(MDI)で表示/利用することに 挑戦しようと思います また質問に来るかもしれませんが、よろしくお願いします
44 名前:デフォルトの名無しさん [2006/11/26(日) 14:17:52 ] CToolbarCtrlクラスを使っています。 このクラスで256色以上のビットマップを 貼り付けるにはどうしたらよいのでしょうか? リソースエディタ上は16色しかでません。 何かうまい方法ありましたらご教授願いたいです。
45 名前:44 [2006/11/26(日) 14:33:20 ] 環境はVC++6です。
46 名前:デフォルトの名無しさん mailto:sage [2006/11/26(日) 16:02:20 ] >>44 www.google.co.jp/search?q=CToolBar+256+&ie=Shift_JIS&oe=Shift_JIS&hl=ja 256bitmap使うだけなら簡単だけど、あれこれカスタマイズしようとすると結構大変。
47 名前:44 [2006/11/26(日) 16:32:37 ] ありがとうございました。
48 名前:デフォルトの名無しさん [2006/11/26(日) 18:01:17 ] MDIアプリケーションでビューを class CMyList : public CListView としたのですけど、以下の一連の処理、 OnPreparePrinting() OnBeginPrinting() OnPrepareDC() OnPrint() OnEndPrinting() が、ファイルメニューの印刷プレビュー項目を選択すると呼び出されるのですが、 同じく、印刷項目からですと何の反応もありません。 標準的な機能として呼び出されるのが当たり前と思っていたので、 ちょっと困ってしまっています。 OnPrint()に印刷処理を記述してプリンターに出力したいのですが、 どのようにしたら良いのかご存知の方、教えていただけませんか。 環境は.NET2003+XP SP.2です。 (後々のメンテナンスのことも考えて、 あまりトリッキーなことをしないで実装できるのが理想です。。。)
49 名前:デフォルトの名無しさん [2006/11/27(月) 21:30:49 ] すいません、どなたかマルチモニタ環境があるかたに 試していただきたいんですけど、 ・SDIアプリケーションをデフォルトのままビルド ・デバッグ開始してツールバーをフローティングさせる ・そのツールバーをセカンダリモニタ上に移動 とやったあと、そのツールバーをサイズ変更できますか? 自分の環境(VC6.0)ではセカンダリモニタ上ではサイズ変更できないんですけど…。
50 名前:デフォルトの名無しさん mailto:sage [2006/11/27(月) 22:15:40 ] ダイアログベースのアプリで、Client領域に背景ビットマップを貼り付けています。 このダイアログの上で他のウィンドウをぐりぐり動かすとダイアログが再描画された時に 背景が部分的に欠けてしまう(ダイアログの地の色が出る)事があるんですが、 これってどんな理由が考えられるでしょうか。
51 名前:50 [2006/11/27(月) 22:27:39 ] WinXP+VC6.0です
52 名前:デフォルトの名無しさん [2006/11/27(月) 22:40:32 ] VC6 MDI に MDI タブ機能を追加するにはどうしたらいいですか?
53 名前:デフォルトの名無しさん mailto:sage [2006/11/27(月) 23:30:57 ] そういう機能は存在しない
54 名前:デフォルトの名無しさん mailto:sage [2006/11/28(火) 00:13:23 ] >>48 標準的なCViewのサブクラスは印刷時に CView::OnFilePrint();を呼び出している。 ただしCListViewから呼び出しても印刷できるかどうか わからん。
55 名前:デフォルトの名無しさん mailto:sage [2006/11/28(火) 19:46:02 ] >>49 試した。確かにサイズ変更できない。 原因は非公開クラスのCDockContext内のStretch()にあって dockcont.cppの314-315行目のサイズ取得のところ。 最新のMFCではこっそりと修正されてる。 (VC6SP6) HWND hWndDesk = ::GetDesktopWindow(); ::GetWindowRect(hWndDesk, &rectDesk); (VC2005) rectDesk.left=GetSystemMetrics(SM_XVIRTUALSCREEN); rectDesk.top=GetSystemMetrics(SM_YVIRTUALSCREEN); rectDesk.right=rectDesk.left+GetSystemMetrics(SM_CXVIRTUALSCREEN); rectDesk.bottom=rectDesk.top+GetSystemMetrics(SM_CYVIRTUALSCREEN); VC6ではCToolBarとCDockContextを派生させて対処するしかない(当方では一応成功)。 非公開クラスなのでググってもほとんど情報がないけど 修正内容は違うがCDockContextを弄ってるのはあった。 www.ddj.com/184410272 英語だがStep3,Step4の文章が多少参考になる。 www.tkb-soft.hmcbest.com/diary_2005_03.htm 日本語。最後の方がグダグダでかなり強引。
56 名前:デフォルトの名無しさん mailto:sage [2006/11/29(水) 01:44:19 ] 質問です。 フォルダやファイルのフルコントロール拒否ってどうやってみたらいいでしょうか? 今はとりあえず、書きこんで見て書けなかったら・・・とかやっています。 もっとスマートな方法はないでしょうか?
57 名前:デフォルトの名無しさん [2006/11/29(水) 06:17:19 ] 質問なんですけど。 IEの履歴ウィンドウみたいなのあるじゃないですか? あのスプリッタに「X 閉じるボタン」が付いてるやつ。 あれってMFCの機能で実現出来るものですかね? スプリッタウィンドウにして一つのViewをFormViewにして その中に各種のコントロールを設置すればそれっぽくなりますけど 閉じるボタンが押された時に、スプリッタを完全に非表示にしないといけない訳で スプリッタの大きさ0じゃなく、動的にスプリッタの数を変更とか出来るのでしょうか?
58 名前:デフォルトの名無しさん mailto:sage [2006/11/29(水) 08:58:38 ] >IEの履歴ウィンドウみたいなのあるじゃないですか? あれはBrowser Extension の Explorer Bar msdn2.microsoft.com/en-us/library/aa753587.aspx >あれってMFCの機能で実現出来るものですかね? 本人次第
59 名前:デフォルトの名無しさん mailto:sage [2006/11/29(水) 09:49:59 ] CSplitterWnd内部では当然ペインの数は管理しているので サブクラスで操作(数だけじゃないよ)すればできる。 流れ書こうかと思ったけどCodeGuruとか見たほうが早い。 ペインが左右に1つずつしかないなら、ほんの数行で済むはず。
60 名前:デフォルトの名無しさん mailto:sage [2006/11/29(水) 10:31:28 ] >>58 なるほど… そういう物だったんですね… >>59 今、色々試していた所、CDialogBarを利用して 似たような事が出来るかも知れないと思いました。 出来ればVC++のIDEみたく、ドッキング可能にもしたかったので こっちの方がより理想に近いのかもしれません。
61 名前:49 [2006/11/29(水) 20:45:04 ] >>55 試していただきありがとうございます。 やっぱりこれグラフィックカードの問題とかではなかったんですか…。 ツールバーももちろんなんですが、 support.microsoft.com/kb/143255/ja ↑を参考にサイズ変更可能なダイアログバーを用意したんですけど、 セカンダリモニタ上でサイズ変更ができないのがかなり痛いです。 これって、VC6のままMFCだけ最新のものを使うということは無理で、 VC2005の環境にしてしまうか、派生クラスを自分で作ることになるんですよね? ドッキングを捨ててモードレスダイアログにしてしまったほうがいいのかな…。 まずは教えていただいたサイトなどを元にして なんとか挑戦してみたいと思います。 ありがとうございました。
62 名前:デフォルトの名無しさん [2006/11/29(水) 22:26:25 ] ウィンドウやダイアログ(以下、あわせて子画面と記述)を追加するMFC拡張のDLLを作成しています 仕組みそのものは簡単で、アプリケーションからグローバル関数を通じて呼び出されます グローバル関数は子画面ごとに用意し、関数の引数にポインタを指定する形でデータの受け渡しを行います それで早速これを作り始めたのですが、自分の知識が乏しいこともあって問題が発生してしまいました それは、ウィンドウを上手く表示させて処理させることができないということです ダイアログの方はモーダル表示であるためか、特に問題なく表示させて処理させることができました しかし、ウィンドウの方は違いました 新規クラス作成でCFormViewを継承したクラスを追加しているのですが、生成の段階で問題が発生してしまいます コンストラクタがprotectedとなっているため、newで生成したときにエラーとなるのです これは手動でpublicに変えることで表面上は解決しました しかし、標準でprotectedになっていたことには何か意味があるのではないかと不安に思えてきました 大丈夫なのでしょうか? また他にも問題があります それは、メモリの開放です ウィンドウはモーダルではないため、基本的にグローバル変数として使っています これが問題となるのはユーザが閉じるボタンでウィンドウをデストロイした場合です グローバス関数では、対応するウィンドウのグローバル変数がNULLでない場合に明示的にDestroyWindowを呼んでいます その後にdeleteをしております しかし、ユーザがすでにウィンドウをデストロイしていた場合、エラーが発生します これをどうにか防ぎたいのです ウィンドウがすでにデストロイされていることを知る手段はありませんか? またはメモリが未開放であることを知る手段はありませんか? とても困っております 知恵を貸してください
63 名前:デフォルトの名無しさん mailto:sage [2006/11/29(水) 23:18:34 ] >>62 Viewの作成は通常newは使わず CView *MyView = (CView *)RUNTIME_CLASS(CMyView)->CreateObject(); context設定して MyView->Create( ・・・ ); とかいう感じ。 後半はframeを保持しているのがどっちか不明なのでパス。
64 名前:62 [2006/11/30(木) 00:09:29 ] >>63 レスに大感謝です 参考にさせて頂きます グローバル変数を保持しているのはDLLです つまり、ウィンドウ&ダイアログは常にDLLの管理下にあります アプリケーションは子画面の表示を指示するのとデータ受け渡しのみです
65 名前:デフォルトの名無しさん [2006/11/30(木) 00:50:10 ] MDIのドッキングウィンドウってどうやればできますか?
66 名前:デフォルトの名無しさん [2006/11/30(木) 04:17:02 ] >>65 私も興味あります。 VC++6というか、VisualStudioのようなMDIを実現する方法。
67 名前:60 [2006/11/30(木) 04:56:11 ] >>66 前書き込んだ者ですけど、多分、ダイアログバーを自分で改造して 似た様な物が出来るんじゃないかと思うんですが。 設置したコントロールもダイアログの状態によって位置、大きさを変更する等して。 外観は全部自分で独自に描画して似せて。 例えば、あの二本線のRebarみたいなのも自分で描画して。 CDialogBarのDDXが効かないのは、CDialogに書き直せば確かOKだった筈ですし。
68 名前:デフォルトの名無しさん [2006/11/30(木) 19:00:30 ] アプリケーションの英語化作業中です リソースを日本語版と英語版を用意して、以下のような設定にしています 英語版ビルド時には日本語を無視 日本語の場合には英語リソースを無視 この方法でビルドした場合、ダイアログに直接貼り付けてあるStaticテキストや ボタンのCaption等は正しく言語の切替が行われていますが StringTableから読み込んで表示する場合、英語版が全て空白になってしまいます 正しく読むにはどうしたらいいでしょうか?
69 名前:デフォルトの名無しさん mailto:sage [2006/11/30(木) 19:09:49 ] 英語と日本語でそれぞれプロジェクト作って比べてみれば馬鹿でもわかる。
70 名前:68 [2006/11/30(木) 19:43:41 ] すみません、解決しました 開発しているのはプラグインなのですが、対象となるソフトの言語設定を変更したら上手く行きました
71 名前:49 [2006/11/30(木) 22:37:56 ] >>55 CDockContextの派生クラスを作成し、以下の3つをオーバーライド。 ・virtual void StartResize(int nHitTest, CPoint pt); ・void Stretch(CPoint pt); ・BOOL Track(); StartResize()とTrack()は、CDockContextのものをそのまま手を入れずにコピー。 Stretch()は、例の部分をVC2005版に修正し、それ以外はそのままコピー。 そのほかに、これらの関数で使われている定数や構造体の宣言をそのままコピー。 CToolBarの派生クラスを作成し、EnableDocking()をオーバーライド。 m_pDockContext = new CDockContext(this); の部分を、上のCDockContextの派生クラスをnewするように修正し、 それ以外はそのままコピー。 というソースファイルを作成し、 SDIのツールバーをこのCToolBarの派生クラスに置き換えてみたところ、 無事にセカンダリモニタ上でもサイズできました。 「当方では一応成功」っていうのも、やはりこのような感じなのでしょうか?
72 名前:62 [2006/11/30(木) 22:54:50 ] とりあえずウィンドウをDLL側で生成して表示させることはできました フレームとビューとドキュメントをCCreateContextで連結させるのに苦労しました 上手に表示されたときはとってもハッピーになりました さて、申し訳ないですが本日も質問があります それはビュー(CFormView)に張り付けたダイアログリソースについてです なぜか分からないですが、呼び出しアプリケーション側のダイアログリソースに置き換わってしまいます DLLのダイアログリソースが表示されません Resource.hが怪しいと思っていますが、どうすれば解決できるのか分かりません アドヴァイスを頂けませんか? あと、昨日の質問が残っています >>62 の後半、メモリ開放についてです CFormWndのインスタンスを持っているのはDLL側です ユーザが閉じるボタンやAlt+F4でデストロイしたことを察知して2度デストロイやdeleteするのを防ぎたいです 大変にクリティカルな問題なのでとても悩んでいます インターネット検索や書籍で解決策を探していますが、まだ解決には至っていません アドヴァイスをお願いします
73 名前:デフォルトの名無しさん mailto:sage [2006/12/01(金) 00:14:31 ] >>72 相変わらずFrameの位置が不明瞭です... 次の3つの内から一つを選択しなさい。 1.Exe側のCMainFrameにDLL側で作成したCFormViewを結合している 2.ExeとDLLにそれぞれFrame&Viewの対がある 3.その他 上段で上手に表示されたと書いてるけど、中段読むとFrameとViewの 結合に失敗してるし訳分からない。別な話? 下段CFormWndのbase class はCFormView or CFrameWnd ?
74 名前:72 [2006/12/01(金) 00:16:17 ] >>73 すみません 選択肢1が該当します
75 名前:デフォルトの名無しさん [2006/12/01(金) 00:27:52 ] dll内でnewしたインスタンスはdll内でdeleteしないといけないのでしょうか。
76 名前:デフォルトの名無しさん mailto:sage [2006/12/01(金) 00:49:13 ] >>74 であれば、Viewをdeleteする必要はない。 FrameとViewが正しく結合されていれば、exe側Frameが閉じられる際に自動で削除される。 CView::PostNCDestroy()参照。
77 名前:デフォルトの名無しさん mailto:sage [2006/12/01(金) 01:11:51 ] >>75 うん
78 名前:デフォルトの名無しさん mailto:sage [2006/12/01(金) 01:18:01 ] >>75 例えば開発時に、EXEがReleaseでDLLがDebugだとすると。 メモリ管理のランタイムが別になるんで、EXEでnewしたメモリをDLLで開放しようとすると、 当然そんなメモリは管理してないから落ちてしまうと。
79 名前:デフォルトの名無しさん mailto:sage [2006/12/01(金) 01:27:38 ] exe-dllで使用しているMFCのバージョンが同じで >>78 の言うことに気をつけていれば 問題ないんじゃないの? 77は根拠を示すべし。
80 名前:デフォルトの名無しさん mailto:sage [2006/12/01(金) 06:53:15 ] >>79 別のアプリで確保したメモリを別のアプリで解放できるか?って話しになるんじゃない?
81 名前:デフォルトの名無しさん mailto:sage [2006/12/01(金) 09:12:04 ] この子は何をほざいているのだろう・・・
82 名前:デフォルトの名無しさん mailto:sage [2006/12/01(金) 10:26:11 ] >>79 バージョンが同じでも、MFCをスタティックリンクしてるとダメだよ。
83 名前:デフォルトの名無しさん mailto:sage [2006/12/01(金) 14:28:49 ] 論点がばらけ過ぎてる
84 名前:55 mailto:sage [2006/12/01(金) 19:42:03 ] >>71 そんな感じです。というより全く同じですね。 VC6ではやむを得ないと思います。 >>65-67 www.codeproject.com/docking/ www.codeguru.com/cpp/w-d/docking/ スクリーンショット見た感じ、↓のが参考になるかも。 www.codeguru.com/cpp/w-d/docking/article.php/c1447/ www.codeguru.com/cpp/w-d/docking/article.php/c1451/ www.codeproject.com/docking/sizecbar.asp >>62 &>>72 どっかのスレで参考になる文献はないかと聞かれたから URL貼ったんだが全く読んでないんだな。 考えられる原因の一つは、delete this;して自殺するクラスがあるということ。 CFrameWndやCViewがまさにそういうクラスなのでその可能性があるんじゃない? 76も答えてくれてる通り。
85 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 16:41:12 ] VC++.NET2003で開発しています。 MDIから別プロジェクトの画面を子画面として表示させたいのですが、 どういう風に作ればいいのでしょうか。
86 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 17:26:41 ] またMDIか
87 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 17:32:47 ] このまえ質問してたやつはどこに消えた?
88 名前:49 [2006/12/03(日) 13:05:02 ] >>84 やはりこういう派生になるのですね。安心しました。 VC7でも同じ問題が発生するようで、VC2005じゃないと直ってないようです。
89 名前:40 mailto:sage [2006/12/03(日) 16:05:47 ] >CViewのメニューなりからのイベントでCFormViewを開く時は、 の続きで、Viewの差し替えは、Viewクラスでのメニューイベントハンドラーで CWinApp* myapp=AfxGetApp(); CDocTemplate* mydoctemp=(CDocTemplate*)RUNTIME_CLASS(CDocTemplate); POSITION myps=myapp->GetFirstDocTemplatePosition(); mydoctemp=myapp->GetNextDocTemplate(myps);//テンプレートリストの1番目を選択するイテレータ mydoctemp=myapp->GetNextDocTemplate(myps);//テンプレートリストの2番目を選択するイテレータ mydoctemp->OpenDocumentFile(NULL); でドキュメントテンプレートに入れられた2番目のViewを新規子ウィンドウで表示できたよ
90 名前:デフォルトの名無しさん [2006/12/04(月) 13:59:24 ] ダイアログにタブコントロールを乗せ、複数のリストビューの表示をタブで切り替える ソフトを書いていたんですが、タブに重ねたリストビューの列サイズを操作すると リストビューの表示が乱れる現象が出てしまいました。 www.uploda.org/uporg604606.zip.html サンプルプロジェクトです。VC2005で作りました。 www.uploda.org/uporg604603.gif 1つめのリスト。こういう感じで一番右の列境界をタブの外へ右にドラッグすると スクロールバーが現れます。通常の動作です。 www.uploda.org/uporg604604.gif 2つめのリスト。1つ目と同じく一番右の列境界を右へドラッグするとスクロールバー が現れるタイミングで表示が乱れます。 どうして2つ目のリストでのみ表示が乱れるのか悩んだ結果、ダイアログのリソース 定義ファイル中の、 > CONTROL "",IDC_LIST1,"SysListView32",LVS_REPORT | (以下略) > CONTROL "",IDC_TAB1,"SysTabControl32",0x0,7,7,173,186 > CONTROL "",IDC_LIST2,"SysListView32",LVS_REPORT | (以下略) を > CONTROL "",IDC_LIST1,"SysListView32",LVS_REPORT | (以下略) > CONTROL "",IDC_LIST2,"SysListView32",LVS_REPORT | (以下略) > CONTROL "",IDC_TAB1,"SysTabControl32",0x0,7,7,173,186 と順番を入れ替えると表示が乱れなくなりました。逆に、タブの行をリストの先頭 に持っていくと今度は両方のタブでリストの表示が乱れるようになります。 結果オーライといえばそれまでなんですが、どうしてこれで問題が解決するのか納得が いきません。リソース中の定義順が何に影響しているのでしょうか?
91 名前:デフォルトの名無しさん mailto:sage [2006/12/04(月) 14:05:47 ] 普通はプロパティシート
92 名前:デフォルトの名無しさん mailto:sage [2006/12/04(月) 14:46:26 ] >>90 Zオーダーの問題じゃね?
93 名前:デフォルトの名無しさん [2006/12/04(月) 16:30:03 ] Zオーダーの問題
94 名前:90 mailto:sage [2006/12/04(月) 22:53:30 ] 確かにZオーダの問題でした。どうもありがとうございます。 リソース定義の順番がZオーダになるというのが将来にわたって保障された 仕様なのかどうかが疑問なので、コントロールを重ねる場合のZオーダは きちんとSetWindowPosでコード中に書いておくことにします。
95 名前:デフォルトの名無しさん [2006/12/06(水) 06:13:15 ] VC6.0のMFCで作ったプログラムを実行したときにレジストリへ一切書き込まないようにしたいのですが HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\MUICache に VS_VERSION_INFO の FileDescription の値が書き込まれてしまいます。 FileDescription を消しても実行ファイル名が変わりに書き込まれてしまいます。 どうしたら書き込まないように出来るでしょうか?
96 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 10:01:56 ] そのキーを書込み禁止にすると(・∀・)イイヨ!!
97 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 23:59:45 ] CFtpConnectionを使ってFTPクライアントを実験的に作ってみたのですが、 PASVモードを使ったときにどのポートが使われているかというのは どうやって取得すれば良いでしょうか?
98 名前:デフォルトの名無しさん [2006/12/12(火) 21:25:29 ] CListCtrl (以下、リスト)をレポート形式で使用しているのですが、 このリストの特定セルだけ背景色を変えるにはどうしたら良いですか? ステータス値に応じてセルの色が変わるような機能を実現したいのですが……
99 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 21:26:36 ] ダイアログ上に複数のスタティックなコントロールを配置しています。 各コントロール毎に違う背景色を設定したいのですがどのようにすればよいのでしょうか? OnCtlColor()メソッド内でコントロールの判定ができればよいと思うのですが・・・。 どなたかご教授の程よろしくお願い致します。 OSはWinXP SP2、開発環境はVC++ 2005です。
100 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 21:45:51 ] >>98 カスタムドローじゃねぇの? >>99 普通にウィンドウハンドル比べたらどうよ?
101 名前:98 [2006/12/12(火) 21:47:33 ] >>100 無知で申し訳ないのですが、カスタムドローとはどのようなものですか?
102 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 21:55:03 ] >>101 www.google.co.jp/search?hl=ja&safe=off&c2coff=1&q=%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%83%89%E3%83%AD%E3%83%BC+CListCtrl&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
103 名前:98 [2006/12/12(火) 21:57:44 ] >>102 すみません、自分で検索するべきでした どうもありがとうございました
104 名前:99 mailto:sage [2006/12/12(火) 22:00:20 ] >>100 レスありがとうございます。 if(GetDlgItem(IDC_STATIC_COLOR1) == pWnd){ AfxMessageBox(L"一番目のコントロール"); } //以降コントロールの数分else if 試しにこんなコードでやってみたのですが引っかかりませんでした。 比較処理が悪いのでしょうか?
105 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 22:06:07 ] MFCってpWnd->m_hWnd == GetDlgItem(IDC_STATIC_COLOR1)->m_hWndってやらなくてもいいんだっけ? まあ、駄目だったら、そもそもIDC_STATIC_COLOR1が本当にそいつの直下に配置してあるコントロールなのかどうなのか ってところがあやしいんじゃね?
106 名前:99 mailto:sage [2006/12/12(火) 22:22:41 ] >>105 OnInitDialog内で GetDlgItem(IDC_STATIC_COLOR1)->SetWindowText("あいう"); で文字は表示されたので問題はないと思うのですが・・・。 もう少し調べてみます。
107 名前:99 mailto:sage [2006/12/12(火) 22:31:54 ] >>105 すみません、教えていただいた pWnd->m_hWnd == GetDlgItem(IDC_STATIC_COLOR1)->m_hWnd でできていました。(メッセージボックスが表示されていなかったのでできていないと思っていました) どうもありがとうございます。
108 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 22:38:02 ] それはえがった
109 名前:デフォルトの名無しさん [2006/12/13(水) 16:35:12 ] VC6を使って、MDIアプリにMDIタブを実装したい まずは、CMainFrame に MDIタブ用の CDocBar を配置したいのだが、 どこをどうオーバーライドしたらいいんだ? CMainFrame::recalcLayout() あたり?
110 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 17:02:48 ] またお前か
111 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 19:25:44 ] その前にMDIの作り方は間違っていないのかね? なんだかこの間からぶち当たった問題をことごとく質問してないか?
112 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 19:32:03 ] 相談室だから質問しています
113 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 19:34:02 ] >>112 相談しようぜ。 MDIの基本的な部分はOKなん?
114 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 19:52:36 ] ここは自分でできもしないことを相談する所か?
115 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 20:17:28 ] まあ、MFCスレってここしかないんだから、そう厳しいこといわんと。 MFCって結構むずいじゃん。 俺、ドキュメントビューアーキテクチャーとかいう仕組み覚えるのに何日も必要だったぞ。 まず、ドキュメントビューアーキテクチャーの構造なんて大して重要なもんだと思ってなかったし(SDIで組んでたのもあって)。 この状態でMDIプログラミング特攻すると、はっきりいってハマルじゃんw
116 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 20:57:27 ] プロパティシートについて質問があります。 ダイアログをいくつか作成(このときフォントをMSゴシックの12ptに変更)し、 各ダイアログ毎にクラスを作成(CPropertyPageクラスの派生クラス)して メインメニューに[プロパティ]項目を追加、そのイベント内で ・プロパティシートのインスタンス生成 ・プロパティページをプロパティページにAddPage ・DoModalで表示 しています。 このとき、表示された各ページのフォントサイズが標準のMS UI Gothicの9pt で表示されてしまっています。なのでCPropertySheetの派生クラスを作り、 OnInitDialog内でフォントサイズの変更を行ってみたのですが変化なしでした。 なぜこのような現象が起こるのでしょうか?
117 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 21:00:50 ] プロパティシート使ったことないけど タブコントロールなら、全ページフォントを設定する必要があるな。 プロパティシートにもそんなのあんじゃね?(適当w)
118 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 21:10:57 ] OnInitDialog内でGetPage()->SetFont();は行っているのですが それでも変わらないんですよ。各ページのコントロールのサイズも ちっちゃくなってますし。全ページのコントロールの位置、サイズ、フォントを 設定しないといけないんでしょうか。
119 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 21:42:18 ] CPropertySheet フォント で検索
120 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 21:44:25 ] MDIの基本的な部分はたぶんオケ だからおいらの相談に答えてくれよー
121 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 21:46:33 ] >>119 あ、やっぱ、手動なんだw
122 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 21:48:25 ] >>120 ドキュメントビューアーキテクチャ(なげぇなw)の理解は大丈夫ということでOK?
123 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 21:57:52 ] >まずは、CMainFrame に MDIタブ用の CDocBar を配置したいのだが、 MFCにCDocBarなんてあったけ?
124 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 22:20:15 ] >>123 すまん CDockBar だった CDockBar はアンドキュメンテッドなクラスで、CControlBar を配置するための滑走路みたいなものだよ
125 名前:116 mailto:sage [2006/12/13(水) 22:43:28 ] >>119 SendMessageToDescendants()?でフォントは変更できましたが、 サイズとかの変更の仕方が分かりませんでした。
126 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 23:09:57 ] MFCを理解しようとしないで自分のやりたいことだけ質問する馬鹿ばっかりだな
127 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 23:33:37 ] MFCのすべてを理解してるなら、すべての質問・相談にちゃっちゃ答えて神になってくれ
128 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 23:47:28 ] 何のためにソースがついてるんだろ
129 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 23:49:05 ] 非効率だよね。 まず、全体っちゅーか概要ぐらいは理解しないと なにやるにも知ってる人間にお伺いを立てないと何もできなくなっちゃうぞ。
130 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 01:57:25 ] なんかMFC使うほうがかえって面倒くさそうだ
131 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 03:22:11 ] 馬鹿じゃねぇの
132 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 07:02:17 ] >>130 そういうときもある。
133 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 09:06:58 ] コントロールのサイズと位置はピクセル単位じゃなくてダイアログベース単位で、 ダイアログベース単位はフォントの幅が元になってる。 だからダイアログのフォントを変えると コントロールのサイズと位置もフォントに比例して変わる。 このフォントサイズはダイアログを作る時に指定した ダイアログボックステンプレートに定義されている。 ダイアログを作った後でフォントを変えても コントロールは既に作成されてしまっているから コントロールのサイズと位置は後で指定したフォントには影響されない。 以上ここまでMFCに限らずWin32でも同様 プロパティシートがリソースで定義されたダイアログのフォントを無視しているということは たぶんメモリ上に読み込んだダイアログボックステンプレートのフォントを書き換えてから その変更を加えたダイアログボックステンプレートでダイアログを作っているのではないか と推測されるけど、あとはCPropertyPageのソース等を読めばわかることだから省略
134 名前:デフォルトの名無しさん [2006/12/14(木) 10:51:38 ] ☆ チン ☆ チン 〃 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ヽ ___\(\・∀・)< MDIタブ実装方法 まだー? \_/⊂ ⊂_)_ \_______ / ̄ ̄ ̄ ̄ ̄ ̄ ̄/| |  ̄  ̄ ̄ ̄ ̄ ̄ ̄:| :| | .|/
135 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 11:22:30 ] ソースを読めばわかることだから省略
136 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 11:43:33 ] MDIタブのこと書こうか迷ってたんだけど、AAみて踏ん切りがついたよ。
137 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 13:05:50 ] MDIタブの何を書こうかと迷ってたんだ?
138 名前:デフォルトの名無しさん mailto:sage [2006/12/16(土) 17:26:02 ] Button(OKやCancelや適用など)をDisableにしたいのですが、どの関数を使うのですか? SetCheck()かと思ったのですが違うようでした。。
139 名前:デフォルトの名無しさん mailto:sage [2006/12/16(土) 17:46:32 ] >>138 基本クラスのメンバEnableWindowで
140 名前:デフォルトの名無しさん mailto:sage [2006/12/16(土) 18:12:46 ] なるほど… やってみます。ありがとうございました。
141 名前:デフォルトの名無しさん [2006/12/17(日) 19:17:51 ] リストコントロール(CListCtrl)をリードオンリにするにはどうすれば良いですか?
142 名前:デフォルトの名無しさん [2006/12/17(日) 19:21:10 ] 2つ目の質問です ツリーリストコントロールって標準で存在しませんか? 存在しない場合はどうすれば使えますか? MFCで作ったフリーソフトでツリーリストが使われていたので、 何らかの方法でできるのではないかと考えているのですが・・・ ちなみに、今の自分の技術力では自作は無理です
143 名前:デフォルトの名無しさん [2006/12/17(日) 19:25:35 ] 3つ目の質問です MDI子ウィンドウのビュー(フォームビュー)でリストコントロール(CListCtrl)を使っているのですが、 他の子ウィンドウがリスト部分の前に重なった後、リスト部分をクリックしてリストがある子ウィンドウを アクティブにすると重なっていたリスト部分だけが再描画されません 原因はまったく不明です どのようにすれば子ウィンドウがアクティブになった時に正常に再描画されるようにできますか?
144 名前:デフォルトの名無しさん [2006/12/17(日) 19:29:21 ] 最後の質問です MDI子ウィンドウのビューでリストコントロールを使っているのですが、 子ウィンドウのサイズ変更にあわせてリストのサイズを動的に変更するには どのようにすれば良いですか? VC#ではプロパティ画面で簡単に設定できたのですが、 VC++にはないのでとても困っています・・・ 以上4つ質問させて頂きました 何かご存知の方は、ご回答をよろしくお願いしますm(_ _)m
145 名前:デフォルトの名無しさん mailto:sage [2006/12/17(日) 19:37:53 ] 最後のやつの答えは 子ウィンドウのサイズ変更にあわせてリストのサイズを動的に変更する
146 名前:デフォルトの名無しさん mailto:sage [2006/12/17(日) 19:45:00 ] MDI野郎の質問は意味不明
147 名前:デフォルトの名無しさん mailto:sage [2006/12/17(日) 19:51:36 ] 具体的にはOnSizeとかOnSizingとかOnExitSizeMoveとか用途に合わせて使うと吉。
148 名前:デフォルトの名無しさん mailto:sage [2006/12/17(日) 19:53:22 ] >>141 普通リードオンリーでできんじゃねぇっけ? リソースファイルの方の設定に編集できるとかできないとかそういうプロパティあった希ガス。
149 名前:デフォルトの名無しさん mailto:sage [2006/12/17(日) 20:00:56 ] >>142 昔、俺がみたのは自力で描画してたのしかみたことないな。 今、どうなってるのかはよくわからん。
150 名前:デフォルトの名無しさん mailto:sage [2006/12/17(日) 21:27:01 ] >141-144 勉強してないの丸わかりなんだけど よくリストコントロール表示できたね どっかからソースぱくってきた?
151 名前:デフォルトの名無しさん mailto:sage [2006/12/17(日) 21:43:34 ] たしかにこうなんもかんもわからんようだとどうしようもないなw
152 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 01:37:33 ] いつも質問しっぱなしで消えて行く人と文体がそっくりだな
153 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 16:59:07 ] お願いします。MFCを使い大量の点を打って画像を描画するプログラムを作っています。 点の数は数千を越えていると思うのですが かなり処理に時間がかかります。 自分なりに色々調べたところ SetPixelは遅い ということがわかりました 同時に BitBlt とか 裏画面 などと 高速化に関するワードも出てきましたが 全く分かりませんでした この言葉で全て解決しようとするのが悪いのですが 初心者です。 しかし、時間が本当に無いので時間をかけて勉強して… ができません。 ちなみに 点は一色です。 SetPixelの遅さを解決する方法で まだ分かり易いだろう と思う方法を教えていただけませんか?
154 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 17:15:42 ] かなり遅いって具体的に何秒?たった数千なら一瞬のはずだけど...
155 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 17:27:01 ] えっ・・・ そうなんですか? 具体的にはループ回数が3万でそのうちの一部の点を 描画しているので、最大でも3万ですね 1万は越えているかも知れませんが… 時間は3分から5分程度でした。
156 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 17:31:20 ] うちのPCは最新鋭からは程遠いセレロンだけど10万個の点をSetPixelで 描いても0.1秒ぐらいだったよ。(裏画面とか未使用) 描画以外の部分に時間かかってるんじゃないかな。
157 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 17:35:59 ] 配列に直接描画すればいいんじゃない?
158 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 17:39:17 ] そうでしたか… スペック的には確実問題になるほどではありません。 ループ回数を増やすと比例関数的に時間も延びたので てっきりそこが問題だと思っていました。 そうなるとどこに時間がかかっているのか全く分かりませんね… ランダムウォークさせているのんですが そこか 1024*768もの配列を作って その中身全てを参照(検索)するという作業を 何度かしているのも原因かもしれませんね。 mallocなんかも全く使っていませんし… ループ回数をこれ以上にするとエラーになり途中で動作が止まってしまうのも 同じ原因から来ているのかも… しかし ここまでくるとここで相談させてもらう内容ではなくなってしまいますね。
159 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 17:42:35 ] 1024*768*30000=230億強 それは遅いだろ...
160 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 17:57:38 ] >BitBlt とか 裏画面 などと 高速化に関するワードも出てきましたが全く分かりませんでした >初心者です >時間が本当に無いので時間をかけて勉強して… ができません。 結論: 無理
161 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 17:57:46 ] 最後に一回だけ描画すればいいのに いちいちSetPixel使うからだよ。
162 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 18:01:51 ] えっと 最後に一回だけ描画してます。 まぁ特に考えてたわけではなく、むしろ本当は描画の 様子が分かるように1回1回点を打ちたかったのですが それができなくて 最後にだけ描画してます。 (点を打つ配列に目印をいれて最後にその部分だけ描画) 結論を言うと そのループ及び巨大な配列の中身を参照するのに 時間がかかってるというわけなんですね・・・ >>160 ってことでFAですかね。 検索の仕方や配列の使用法などを再考してみますね。 こんなくだ質に付き合ってくださってありがとうございました。
163 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 18:13:41 ] SetPixelをループに入れてる時点で一回だけじゃないじゃん。
164 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 18:17:04 ] GDIにじゃなくてメモリに対して書くようにすればいいんじゃないの?
165 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 18:20:29 ] たった一色ならcharで1024*768の配列をnewして 0か1を直接書き込めばいいじゃない。 その後BMPに変換すれば?
166 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 18:54:30 ] 正直MFCと全然関係ない
167 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 19:57:42 ] 1280*1024の画面全体の約130万ピクセルでも数秒だね 遅いというのは一瞬じゃないということ 自分で試さずに質問するのはやめてほしい。
168 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 00:26:28 ] >>162 そういう時は、SetPixelだけをコメントアウトしてみる。 そうすれば、それが犯人かどうか分かる。
169 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 00:53:12 ] 質問者じゃないけど試しにBitmapBits弄ってみたら 130万pixelなんて問題にならないぐらい強烈に早いね。 今後使う機会があるかは微妙だけど勉強になったよ。 >>170 スレ違い房乙
170 名前:153です mailto:sage [2006/12/19(火) 00:55:54 ] さらにレスしていただいたんですね。 >>163 確かにループには入ってますね でもループもしないで1回だけ なんて できるんですか >>164 そのような方法がある事は調べていたときにわかったんですが なかなか理解できなかったんですよね >>165 今は理解できないんで ちょっと考えて見ます^^; ありがとうございます。 >>166 ですね。 158で自分でも言ってますが。 すみませんでした。 >>167 そうなんですか。 >遅いというのは一瞬じゃない そうですね 自分で試さずに とは 何のことでしょう? 確かに SetPixelに時間がかかっていたかどうかは 自分で画面全体にSetPixelで塗りつぶしてみれば分かったんですね… そうだ と思い込んでしまったので思いつきませんでした ごめんなさい。
171 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 01:15:49 ] >>168 さんもありがとうございます。 そんな方法もありますね 次回から参考にします! >>169 スレ汚しすみませんでした。
172 名前:デフォルトの名無しさん [2006/12/19(火) 02:51:30 ] >>171 つーか、普通にSetPixelとGetPixelが遅い。 GDI+を使っているならこれで速くなるっぽいことが書いてある。 junki.lix.jp/csgr/002ColorDataAccess1.htm
173 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 08:21:41 ] > 描画しているので、最大でも3万ですね > 1万は越えているかも知れませんが… > > 時間は3分から5分程度でした。 描画しているのは最大でも3万で時間は3分から5分
174 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 14:48:18 ] とりあえず、ビットマップ作ってメモリDCで選択して そこに描画してBitBltするという、昔ながらのやり方を 試すのが今後のためにいいと思うが。
175 名前:153 mailto:sage [2006/12/19(火) 14:54:29 ] >>172 VC++ のMFCです。 >>174 そうですよね。 いい機会ですし勉強して使えるようにしたいと思います。
176 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 16:20:57 ] ほとんどMFCと関係ない
177 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 23:24:44 ] では MDIタブの実装方法についてお話してください よろしくおながいします
178 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 23:36:11 ] mfcにMDIタブなんてものは存在しない
179 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 23:58:47 ] イヤです
180 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 10:36:29 ] >>178 存在しないから作るんですよ
181 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 10:49:58 ] じゃあmfc関係無いのでは
182 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 11:18:15 ] >>141 LVN_ITEMCHANGING >>142 LVITEM::iIndent' >>143 WS_CLIPSIBLINGS
183 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 12:37:11 ] MFCのMDIを拡張して作るんだから関係あるし、難易度が高い MFCを使わず、まったくゼロから MDIタブを作るのならそれほど難しくはない と混じれ酢してみる
184 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 13:08:57 ] 決まった作り方が存在しないから好きなように勝手に作れ
185 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 13:18:05 ] 好きなように作りたいんだけど、作り方がわからないんだよぉ〜
186 名前:デフォルトの名無しさん mailto:sage [2006/12/21(木) 01:17:54 ] ダメです
187 名前:デフォルトの名無しさん mailto:sage [2006/12/21(木) 10:24:22 ] MDIタブを作るには、フレームウィンドウの上部(or左or右or下)にMDIタブのための領域を確保する必要がある そのためには void CMainFrame::RecalcLayout(BOOL bNotify) をオーバライドすればいいぞ どうオーバライドするかは自分で調べろ
188 名前:デフォルトの名無しさん mailto:sage [2006/12/23(土) 01:28:04 ] イヤです
189 名前:デフォルトの名無しさん mailto:sage [2006/12/23(土) 14:47:20 ] VC++6.0 WinXPProで開発を行っております。 XPログオン時のユーザ名とパスワードが正しいかどうかを、開発したプログラム上で 確認したいと思っているのですが、どのようにすればよろしいでしょうか。
190 名前:デフォルトの名無しさん mailto:sage [2006/12/23(土) 14:51:25 ] 誤爆? ここはライブラリの専用スレですよ
191 名前:デフォルトの名無しさん mailto:sage [2006/12/23(土) 14:55:43 ] >>190 スイマセン、他スレで聞いてきます。
192 名前:デフォルトの名無しさん mailto:sage [2006/12/23(土) 15:26:31 ] ウィンドウにスクロールバーがあるかどうかを調べたいのですが、 どうすれば取得できるでしょうか?
193 名前:デフォルトの名無しさん mailto:sage [2006/12/23(土) 15:35:00 ] WS_HSCROLLやWS_VSCROLLスタイルが付いてるか調べればいいんじゃないかな
194 名前:デフォルトの名無しさん mailto:sage [2006/12/23(土) 15:42:35 ] GetWindowLongで取得すればいいのでしょうか? 色々調べてみたのですが、GetWindowLongの使い方がいまいちよく分からないです。。 具体的にどう使えばいいか、ご教授願えますでしょうか(><
195 名前:デフォルトの名無しさん mailto:sage [2006/12/23(土) 15:49:27 ] MSDN見ろよ
196 名前:デフォルトの名無しさん mailto:sage [2006/12/23(土) 15:56:33 ] MSDN見てます。 LONG lStyle = ::GetWindowLong(m_hWnd, GWL_STYLE); で取れると思うんですけど、そこからどうすればいいか分からないんです。 どこを見れば分かりますか?
197 名前:デフォルトの名無しさん mailto:sage [2006/12/23(土) 16:04:12 ] ビット演算も知らんのか?
198 名前:デフォルトの名無しさん mailto:sage [2006/12/23(土) 16:07:05 ] MFCの質問じゃない
199 名前:デフォルトの名無しさん mailto:sage [2006/12/23(土) 16:20:22 ] ビットで入ってるんですね。 MFC以前の問題ですか・・・ もっとよく調べてきます。
200 名前:デフォルトの名無しさん mailto:sage [2006/12/23(土) 23:28:32 ] MFCとは関係ないね>>199
201 名前:デフォルトの名無しさん [2006/12/24(日) 22:58:19 ] 質問があります。 現在、ダイアログAのボタンを押すと、ダイアログAを隠して ダイアログBをモードレス表示し、 表示されたダイアログBのボタンを押すと、ダイアログBを隠して、 ダイアログAをモードレス表示するツールを作成しております。 そこで、ダイアログAのボタンを押すと、ダイアログAを隠して ダイアログBをモードレスで表示することは出来たのですが モードレスで開いたダイアログBのボタンを押すと、 ダイアログAをモードレスで開く方法がわかりません。 教えてください。 よろしくお願いします。
202 名前:デフォルトの名無しさん mailto:sage [2006/12/24(日) 23:20:22 ] ダイアログAがやったのと同じ事をダイアログBでやればいいだけじゃん
203 名前:デフォルトの名無しさん mailto:sage [2006/12/25(月) 05:05:35 ] >>202 エスパー値が低いのに初心者の質問に答えるな。話がややこしくなる。 要は循環参照になっちまってコンパイルできねぇんだろ? つまり、 メインウィンドウ→ダイアログA→ダイアログB→ダイアログA→ダイアログB って構造だとダイアログAとダイアログBが循環してしまって駄目なわけだ。 なので メインウィンドウ→ダイアログA →ダイアログB としてメインの方でダイアログAのボタンX、ダイアログBのボタンXの 内容を処理するようなもんを作る必要があるとそういうことだろ? この処理をやるにはダイアログAとBのインスタンスはメインの方にもったほうがいい。 そんでメインの方で 1.ダイアログAがあったら消して、ダイアログBを出す処理 2.ダイアログBがあったら消して、ダイアログAを出す処理 を実装する。 んで、ダイアログAのボタンXでは1を発動させるような処理(親にSendMessageで独自のメッセージ飛ばすのがいいかな?) んで、ダイアログBのボタンXでは2を発動させるような処理 を組めば完成とそういうことだ。多分w
204 名前:デフォルトの名無しさん mailto:sage [2006/12/25(月) 08:32:31 ] Windowsの電卓の10進と16進の切り替えがそんな感じだな あれは表に出ない親ウインドウがあってそこから2つのダイアログを切り替えてる しまった、ここまで書いて全然MFCと関係ないのに気がついた
205 名前:デフォルトの名無しさん mailto:sage [2006/12/25(月) 14:39:50 ] >203は別に独自のメッセージである必要もないね。 MFCなら仮想親ダイアログにメンバでABダイアログがぶら下がっているだろうから ダイアログからは親のメンバを呼ぶだけでいい。 >>204 ほ〜らMFCらしくなったでしょw
206 名前:デフォルトの名無しさん mailto:sage [2006/12/25(月) 20:24:54 ] なんですぐMFCと関係無い方向に行くんだ?
207 名前:デフォルトの名無しさん mailto:sage [2006/12/25(月) 20:25:25 ] はっ おまいらちゃんとMFCがわかっているのか?
208 名前:デフォルトの名無しさん mailto:sage [2006/12/25(月) 21:03:39 ] >>206 行くっつぅか元々>192からしてMFCと・・・
209 名前:デフォルトの名無しさん mailto:sage [2006/12/25(月) 21:27:26 ] APIでウィンドウも出せないくせにMFC使うな と誰かが言ってた。
210 名前:デフォルトの名無しさん mailto:sage [2006/12/25(月) 21:50:49 ] VS2005 MFCを使用しています。 プロパティシートでSendMessageToDescendants()を使用し、 各ページのフォントサイズを変更しているのですが なぜかリストコントロール内のフォントサイズだけ変更されません。 (ヘッダーは変更されていました。) SendMessageToDescendants()を使用せず、リストコントロール のSetFont()を使用すれば変更できるのですが、リストコントロール に合わせてすべてのページですべてのコントロールにSetFontをするのは 避けたいです。なにかいい方法はありませんでしょうか?
211 名前:デフォルトの名無しさん mailto:sage [2006/12/25(月) 22:06:20 ] >>210 この前の質問どうなったっけ?
212 名前:デフォルトの名無しさん mailto:sage [2006/12/25(月) 22:23:31 ] >>211 今までリストコントロールを利用していないシートの コーディングを行っていたのでてっきりうまく変更されていた ものとばかり思っていたのですが、リストにデータを挿入して 表示したところリスト内のサイズだけ小さかったので 再度質問させていただきました。
213 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 01:30:22 ] 1. 専門用語を知らないMFC初心者が質問 2. 知ってる人が専門用語をあまり使わずに解説 3. 理解できない別の知ったか初心者が 「MFCと関係ない」 4. 質問者が3にむかついて失踪 最近この流れが多い。3の人は1年ぐらいROMって欲しい。
214 名前:デフォルトの名無しさん [2006/12/26(火) 08:50:07 ] すいません教えてください。 C/C++を一通り勉強して、mfcでビュッフォンの針のシミュレーションプログラムを 作ろうと思ってるんですが、ダイアログベースで、ピクチャボックスに描画しようとして も上手くいきません。CClient の矩形をCRectで取り bottomとrightを数値で覚えさして、シミュレーション用の横棒を引くため bottomを横棒の数で割り、movetoとlinetoでそれぞれの位置に線を引いたのですが (用は、数値が1ならクライアント領域が二等分されるようになり 数値が2ならクライアント領域が三等分されるような形) 上手く等分されません。 なにか良い方法か、サンプルのあるページがあれば教えてください。
215 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 08:57:16 ] 描画に使った数値が合ってるかどうかぐらい調べてから質問しろよ
216 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 08:59:08 ] シミュレーションの前に、簡単な線でも描けるようになってから質問しろよ。
217 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 09:35:12 ] 日本語でかかず、プログラムを示せや
218 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 09:58:29 ] デバッグメッセージで、moveto、linetoに渡す数字表示させて並べてみな
219 名前:デフォルトの名無しさん [2006/12/26(火) 18:47:19 ] VC6でMDIアプリを開発しています。 子フレームを最大化した状態でドキュメントを切り替えると、最大化されない子フレームウィンドウ枠が 一瞬描画されてしまいます。 これを防ぐにはどうしたらいいのでしょうか?
220 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 19:35:30 ] 普通に作ればいい
221 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 19:57:59 ] 普通に作ったら 子フレームウィンドウ枠が一瞬描画 されるんだけど これは いったい誰がだしているの?
222 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 21:20:18 ] お前が作ったプログラム
223 名前:デフォルトの名無しさん [2006/12/27(水) 17:33:42 ] CFormViewの中に設置したレポート型のリストビューで アイテムを右クリックしたときにポップアップメニューを 表示させてそのアイテムにのみ処理をしたいのですが どうすればいいのでしょうか
224 名前:デフォルトの名無しさん mailto:sage [2006/12/27(水) 18:50:12 ] 簡単にできそうな気がして何が問題かよくわからん ここで質問しなきゃわからないような何か特殊な問題あったか?
225 名前:デフォルトの名無しさん mailto:sage [2006/12/27(水) 18:56:59 ] OnRButtonDownの追加により リストビューで右クリックのイベントをとるまでいけたんですが メニューの表示や選ばれたアイテムの取得方法がわかりません 簡単なら教えてくださいお願いします
226 名前:225 mailto:sage [2006/12/27(水) 18:57:47 ] 今はOnContextMenuに変えています
227 名前:デフォルトの名無しさん mailto:sage [2006/12/27(水) 19:06:13 ] 特に難しい問題はないはずだから調べればわかると思う。
228 名前:デフォルトの名無しさん mailto:sage [2006/12/27(水) 19:20:28 ] リストビューで項目の右クリックをとるのはNotify使うんじゃなかったかな あまりにも懐かしすぎて、過去のソース見ないと思いだせんがNM_RCLICKとかあったと思う
229 名前:219 mailto:sage [2006/12/27(水) 19:21:19 ] void CMDIFrameWnd::MDIActivate( CWnd* pWndActivate ) を使って、子フレームを切り替えているのだが、このメソッドをコールすると 一瞬現在アクティブなウィンドウに WM_MDIACTIVATE が送られ、 その前後に子フレームが再描画されるとこまでわかった どうしたら子フレームの再描画をとめられるんだ? 誰か助けて。おねがい
230 名前:デフォルトの名無しさん [2006/12/27(水) 19:37:15 ] 調べろカス
231 名前:デフォルトの名無しさん mailto:sage [2006/12/27(水) 19:42:24 ] 普通のMDIでもそうなるならそういう仕様 普通のMDIではそうならないなら普通のMDIと同じにすればいい
232 名前:225 mailto:sage [2006/12/28(木) 10:44:01 ] >>228 NM_RCLICKで右クリックのイベントは取れました 右クリックしたときのアイテムの取得はどうすればいいのでしょうか?
233 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 11:20:58 ] >>232 ttp://msdn2.microsoft.com/en-us/library/ms670614.aspx
234 名前:225 mailto:sage [2006/12/28(木) 11:25:06 ] 返答ありがとうございます 調べてみたら CListCtrl::GetFirstSelectedItemPosition で取れるようです
235 名前:225 mailto:sage [2006/12/28(木) 12:24:51 ] 次は右クリックを押したときにメニューを表示させたいんですが 表示はできましたが最初のメニューだけすごく小さいのです サブメニューは普通に表示されます以下ソースです CMenu menu; CPoint posMouse; VERIFY(menu.LoadMenu(IDR_MENU1)); ::GetCursorPos(&posMouse); menu.TrackPopupMenu( TPM_LEFTALIGN | TPM_RIGHTBUTTON, posMouse.x, posMouse.y, this);
236 名前:225 mailto:sage [2006/12/28(木) 12:32:21 ] 自己解決しました CMenu* pPopup = menu.GetSubMenu(0); pPopup->TrackPopupMenu( TPM_LEFTALIGN | TPM_RIGHTBUTTON, posMouse.x, posMouse.y, this);
237 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 12:45:14 ] ここはおまえの日記帳じゃねえ。 1週間くらい悩むような問題を質問しろよ。
238 名前:225 mailto:sage [2006/12/28(木) 15:30:47 ] ニートじゃないのに1週間も悩んでられるかよ 文句しか言えない無知は黙ってろ
239 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 16:43:49 ] 配列で作ったマルチスレッドの破棄をメインスレッド側からするには どうすればいいのでしょうか?調べたんですがflagを立てるやり方しか見つかりません その方法ではユーザーインターフェーススレッドのような複雑な処理をしているときになると 通じないと思いますぜひ知恵をお貸しください
240 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 16:46:34 ] MFCと関係ない
241 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 16:49:19 ] MFCで開発してますがVC++のほうで聞いたほうがよかったですか?
242 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 16:54:48 ] 普通にMFCクラスから派生して作ったのでMFCだと思うんですが なにがどう関係ないのかの説明をいただきたい
243 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 16:55:13 ] UIスレッドはPostQuitでいいじゃん
244 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 17:00:28 ] PostQuit?
245 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 17:06:24 ] PostQuitとはトレードクラスのメンバ関数ですか? そのようなものは無いと思うんですが
246 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 17:14:10 ] PostQuitMessageだろう
247 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 17:15:53 ] PostQuitMessageだとスレッドどころかアプリケーション終了しますよ
248 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 17:34:50 ] UIスレッドなら スレッド側に、メッセージ受けると終了するような仕組みを作る。 メインスレッドからスレッドにPostMessage or PostThreadMessage。 必要に応じて、メインスレッドはスレッドが終了するまで待機。
249 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 17:37:02 ] なるほど ありがとうございますやってみます
250 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 22:05:29 ] VC6 で組んだプロジェクトが VC7 でコンパイル出来なくて困ってます。 ユーザー定義メッセージのとこなんですが。 メッセージマップで ON_MESSAGE(WM_USER_ENDTHREAD, OnUserEndthread) ヘッダで afx_msg void OnUserEndthread(UINT wParam, LONG lParam); 実体部で void CPg1::OnUserEndthread(UINT wParam, LONG lParam) { ; } としているのですが、コンパイル時に pg1.cpp(130): error C2440: 'static_cast' : 'void (__thiscall CPg1::* )(UINT,LONG)' から 'LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)' に変換できません。 とでます。 VC6 では問題ないのですが・・・。 ご教授下されば有難く思います。
251 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 22:17:09 ] エラーメッセージそのまんまじゃん
252 名前:250 mailto:sage [2006/12/28(木) 22:30:23 ] >251 void を LRESULT にしろってことですかね? ユーザ定義メッセージハンドラの仕様が変わったというだけのことですか。
253 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 22:44:34 ] 相当古いよそれ
254 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 02:14:54 ] 俺はGetWindowLongでとった値をどうキャストかけても警告だったかエラーだったか消えなくて悩んだ覚えがあるな。 結局、どうしたっけな・・・。
255 名前:239 mailto:sage [2006/12/29(金) 12:15:18 ] PostThreadMessageでメイン側からWM_QUITメッセージを飛ばし終了させようとしたのですが Instanceでの処理は止まらないので終了することができません WM_QUITの代わりのメッセージを作ったとしても終了処理をどうすればいいのでしょうか Instance→Run→ExitInstanceの流れを通らないとスレッドの破棄は難しいのでしょうか? >>248 さんの終了処理するような処理をどうすれば実装できるか困っています
256 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 12:36:41 ] >>255 文字通り、サブスレッド側でメッセージを受け取れば宜しい。 逆に言えば、サブスレッド側をそのように作らないといけない。 詳細は、サブスレッドの作りが判らないしスレ違いになるので割愛。
257 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 01:57:47 ] 質問です。 タブ上にリストコントロールを表示する為、メンバ変数作って OnInitDialog関数内でリストをCreateしています。 (タブはリソースエディタで貼り付けています) 表示はできたんですけどなぜかリスト内の項目が選択できません。 なんででしょう?とりあえずこんな感じで作ってます。 m_Tab.GetClientRect(&rcRect); ClientToScreen(&rcRect); rcRect.left -= 21; rcRect.right -= 5; rcRect.top += 44; rcRect.bottom += 52; m_ListCtrl.Create(LVS_SINGLESEL|WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_NOCOLUMNHEADER|LVS_REPORT|LVS_SHOWSELALWAYS, rcRect, GetParent(), IDC_JOURNALSHOWSET_LIST_KP);
258 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 02:20:50 ] >表示はできたんですけど 本当に? GetParent()はダイアログの親ウィンドウを返してると思うんだけど。
259 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 09:25:15 ] こいつ思い出した 結果オーライ > 90 名前:デフォルトの名無しさん[] 投稿日:2006/12/04(月) 13:59:24 > ダイアログにタブコントロールを乗せ、複数のリストビューの表示をタブで切り替える > ソフトを書いていたんですが、タブに重ねたリストビューの列サイズを操作すると > リストビューの表示が乱れる現象が出てしまいました。 > > (中略) > > 結果オーライといえばそれまでなんですが、どうしてこれで問題が解決するのか納得が > いきません。リソース中の定義順が何に影響しているのでしょうか?
260 名前:デフォルトの名無しさん [2006/12/30(土) 15:35:51 ] MDIタブ age
261 名前:デフォルトの名無しさん [2006/12/30(土) 15:57:27 ] メニュー項目を選択すると CSliderCtrl を WS_POPUP で作って表示させる処理を ダイアログに追加していたんですが、ダイアログを終了する時にビープが一発鳴る ようになってしまいました。 どこで鳴ってるのかデバッガで追ってみたところ、InitInstance の最終行、return FALSE; で出て行ったあとのようです。この先も追いたいんですが、F11ではこれ以上追えません でした。どういう風にデバッグすればいいでしょうか?
262 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 16:50:16 ] ダイアログを終了する時にInitInstanceなのか?
263 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 17:21:32 ] ダイアログベースのMFCアプリケーションなので、ダイアログの終了=アプリ の終了という構図です。Wizardが作ったコードそのままですけど、下記のような 雰囲気です。 BOOL MyDialogApp::InitInstance() { いろいろ初期化 CMyDialogDlg dlg; m_pMainWnd = &dlg; INT_PTR nResponse = dlg.DoModal(); if (nResponse == IDOK) ; else if (nResponse == IDCANCEL) ; return FALSE; }
264 名前:デフォルトの名無しさん mailto:sage [2007/01/01(月) 19:01:01 ] >>260 ヒント: void CMainFrame::RecalcLayout(BOOL bNotify) CWnd::RepositionBars()
265 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 11:56:09 ] 先月からMFCを勉強し始めた者です。 以下のようにCFileDialogを使用して、ファイルの読み込み処理をつくりました。 これを、ビューの領域に表示するにはどうすればいいのでしょうか? 「void CFOpenView::OnDraw(CDC* pDC)」に処理を書けばいいと思うのですが、全然わかりません。 どなたか、教えてください。 void CFOpenDoc::OnFileRead() { CFileDialog CFDlg(TRUE, _T("txt"), NULL, OFN_HIDEREADONLY, _T("TEXTファイル(*.txt)|*.txt|すべてのファイル(*.*)|*.*||")); CString String, FilePath; CStdioFile StdFile; if( CFDlg.DoModal() == IDOK){ FilePath = CFDlg.GetPathName(); if(StdFile.Open(FilePath,CFile::modeRead)){ StdFile.ReadString(String); StdFile.Close(); } else { AfxMessageBox(_T("ファイルが開けない")); } } }
266 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 12:09:43 ] Hello, Worldと同じ 文字列を表示するだけ
267 名前:265 mailto:sage [2007/01/03(水) 12:39:21 ] >>266 レスありがとうございます。 試してみます。
268 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 17:20:42 ] ダイアログベースのプログラムを作成しています。 フォームにボタンを配置して、そのボタンのCaptionを動的に変更したいのですが、方法が分かりません。 CButtonクラスメンバの中にもそれっぽい関数が見付からず途方に暮れてます。 方法があれば教えてください。お願いします。
269 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 18:40:16 ] CButtonの基底クラスのメンバ関数
270 名前:268 mailto:sage [2007/01/03(水) 19:06:07 ] >>269 ありがとうございます。 普通にSetWindowTextで変更できたのですね。 助かりました。
271 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 20:22:26 ] VC++2005上でVBMP3.dllというライブラリを使用し、MP3を再生するプログラムを作成しています。 MP3ファイルをオープンするために呼び出す関数 vbmp3_openはヘッダ中に以下のように宣言されています。 BOOL APIENTRY vbmp3_open(const char* pszName, InputInfo* pInfo); で、プログラム中で vbmp3_open(FileName, &pInfo); // FileNameはCString型 としたところ、Debugでのコンパイルは成功するのですがReleaseのコンパイルが以下のエラーとともに失敗します。 error C2664: 'vbmp3_open' : 1 番目の引数を 'CString' から 'const char *' に変換できません。 この変換を実行可能なユーザー定義変換演算子がないか、または演算子を呼び出せません。 といった状態です。解決方法はありませんでしょうか。
272 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 21:16:14 ] Unicodeネタいい加減飽きた('A`)
273 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 09:35:43 ] 簡単な質問だと答えがすぐに返ってくるねぇ MDIタブの実装方法は難しくてここの住人に答えるのは無理ってことかぁ
274 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 09:55:03 ] MFCにMDIタブがあればすぐ教えてやるけど ないものは教えられない
275 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 10:05:09 ] 用意された機能は使えるけど 自分でMFCを拡張してタブを実装する技術はないってことだな>274
276 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 10:05:35 ] MFCの設計に含まれていない以上、 Office2007のリボンの実装方法聞いてるのと同じようなものだからなあ。 頑張れば出来るんじゃね?としか言いようが無い。
277 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 10:07:56 ] 275は仲間を見つけて喜んでいるようだ
278 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 13:46:54 ] MFCにMDIタブを実装した経験のある おいらが来ましたよ んで何が聞きたいんだ?
279 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 21:35:19 ] 奥さんが欲しいです
280 名前:デフォルトの名無しさん mailto:sage [2007/01/05(金) 02:58:20 ] >>279 以下のように2行コメントにしてみて for(int i=0; i<FEMALE_MAX; i++){ if(female[i].IsMarried()==TRUE) continue; if(female[i].GetAge()<16) continue; // if(female[i].CheckQuality()==FALSE) // continue; propose(female[i]); }
281 名前:デフォルトの名無しさん mailto:sage [2007/01/05(金) 13:58:48 ] 先生!なぜかループが一回も回りません!
282 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 09:18:47 ] >>281 femaleが空なんじゃないか? つーか、FEMALE_MAXが0なのか。
283 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 09:43:43 ] //if(female[i].GetAge()<16) // continue; こういう余計な制限もとっちゃおうぜ。
284 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 09:44:44 ] //if(female[i].IsMarried()==TRUE) // continue; よく考えたらこれだって別に大した制限じゃねぇな。
285 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 09:46:04 ] if(female[i].GetAge()>35) continue; さすがに遠慮したいから入れておこうな。
286 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 09:47:49 ] >>281 しょうがない、female -> maleに置き換えるんだ。
287 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 10:06:14 ] MFC使ってるやつ少ないのかと思ってたけど くだらない話になると書き込みが増えるな ROMってるやつ多いのか?
288 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 12:20:49 ] あまりにもバグって気持ち悪くなってきた
290 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 13:06:39 ] VC6にはCImageないんだよな
291 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 13:19:40 ] DIB程度ならCreateDIBSectionをCBitmapにAttachとかで済むから、あまり困らなかったな。 >>288 ::CreateStreamOnHGlobalとCImage::Load(IStream *)を使えば、ファイル無しでできる。 効率から言うと、バイナリリソースアクセス用のIStream実装を書いた方が良いけど('A`)マンドクセ
292 名前:デフォルトの名無しさん [2007/01/07(日) 01:51:10 ] 初期状態でドッキングされていないツールバー(フローティングツールバー?)の作り方を教えてください 普通のツールバー(ドッキングされているツールバー)はスケルトン作成(SDI or MDI)したソースを見れば 分かりそうな感じですが、それとスタイルが違うツールバーはどのように作れば良いですか? グーグルで調べているのですが、思ったような情報に行き当たらず困っております
293 名前:デフォルトの名無しさん mailto:sage [2007/01/07(日) 02:56:21 ] MDI野郎の文体だね
294 名前:デフォルトの名無しさん mailto:sage [2007/01/07(日) 03:26:52 ] >>291 サンクス CreateStreamOnHGlobalでいけました というか、IPictureをかまさないとストリームにならないのでかましたわけですが これを使うとCImageの意味がまったくをもってないですね(笑)
295 名前:デフォルトの名無しさん mailto:sage [2007/01/07(日) 10:14:35 ] MFCのフローティングツールバーはMFCが自力でやってるから 具体的な方法はMFCのソース読めばわかるよ 確かバーの上に張り付いてるやつを別ウインドウ開いて丸ごと引っ越すだけだったと思う。
296 名前:デフォルトの名無しさん [2007/01/08(月) 17:20:10 ] >>295 レスありがとうございます ど素人(入社1年目)なので、それだけですとやり方が分かりません・・・
297 名前:デフォルトの名無しさん [2007/01/08(月) 17:27:33 ] 追加で質問をさせてください ツールバー上のアイテム(ボタン?)をドラッグした時に 点線の四角形またはそのアイテムのアイコン(半透明)を ドラッグ中のマウスポインタの横に表示させるにはどうすれば良いですか? イメージとしては、VC++でダイアログリソース編集時にコントロールアイコンを ツールバーからドラッグした時のような感じで
298 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 18:01:41 ] >>296 自力で調べて判らないようなら上司なり先輩なりに聞け。 それでも判らないようならあんたには不適当な要求仕様なのだからそう上司(なり指示した人間)に言え。
299 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 18:30:36 ] >>298 スレタイを2万5千回ぐらい嫁。
300 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 18:36:21 ] >>299 6時間も7時間もやってらんない。
301 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 18:47:17 ] >>299 相談室だから>>298 のようなアドバイスもアリじゃないか
302 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 18:52:35 ] >>298 は的確だと思ったな あと2ちゃんで仕事をにおわせると答えてもらいにくくなるよ タダで教えてその内容で相手は金を得るわけだし
303 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 18:52:59 ] >>301 要求仕様のさばき方相談室じゃないんだよー
304 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 19:37:22 ] 会社だったら違う人に仕事まわすだけだろ できない仕事をかかえこまないように
305 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 22:18:54 ] >>296 でわからないっつーのはもうアレだ。 なんつーか色々と色んなことが困難だw
306 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 22:19:30 ] いや、>>295 な。
307 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 23:27:04 ] >>292 ,296 質問の意味が2通りに取れるんだが MFC標準のCToolBarをフローティング状態で表示したいってこと? それとも独自にフローティングツールバーを実装したいってこと? おそらく前者の意味で聞いてるんだと思うけど、 それならCFrameWnd::FloatControlBar()でフローティング状態にできるよ。 後者なら、MFCのソースを参考に自分で書けとしか言えません。
308 名前:デフォルトの名無しさん [2007/01/09(火) 11:46:02 ] ダイアログバーにIDC_STATICのスタティックテキストを貼り付けると、 そのテキスト上でのマウスドラッグはバーのドラッグ処理になりますが、 これってどのような仕組みなのでしょうか。 ダイアログバー内に貼り付けた自作ウィンドウクラスにも このような動作を組み込みたいんです。 OnNcHitTestでHTTRANSPARENTやHTCAPTIONを返してみても まったく動かなかったり、コントロールだけが動いたり、 ダイアログバー内でダイアログ自身が動いてしまったりと、 仕組みがわからずに苦戦しています。 同じスタティックテクストでも IDC_STATIC以外の名前を付けるとドラッグにならないようなので、 コントロールバークラスがIDC_STATICに対して なにか特別なことでもやっているのでしょうか。
309 名前:デフォルトの名無しさん mailto:sage [2007/01/09(火) 12:48:24 ] 初心者はIDC_STATICではまる
310 名前:デフォルトの名無しさん mailto:sage [2007/01/09(火) 12:51:33 ] 初心者 IDC_STATIC の検索結果 約 211 件中 1 - 10 件目 (0.25 秒)
311 名前:デフォルトの名無しさん [2007/01/13(土) 23:36:22 ] ドキュメントビューアーキテクチャという概念がよく分かりません ドキュメント: プログラム内で共有するデータを扱う, メンバ変数がたくさんある, ファイル入出力 ビュー: ユーザとのインタフェースを扱う, 描画を取り仕切る, コントロール管理 の認識でOKですか?
312 名前:デフォルトの名無しさん mailto:sage [2007/01/13(土) 23:58:14 ] いや
313 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 00:00:08 ] >>311 概ねOKじゃね? どっちかっていうとその役割よりドキュメントとビューがセットで1つになってること(ドキュメントテンプレートってのなかった?) 新規作成でできるもんがドキュメント+ビューを型にしたインスタンスであることって方が重要のような気がするがわかっているならOK。 そうすると自然にMDIのアプリは 1.メインフレーム(メニューとかくっついてる) 2.(ドキュメント+ビュー)X新規作成で生成された数分 3.その他のツールウィンドウやダイアログ で構成されることになる。 VCだと ・メインフレーム(メニューとかくっついてる) ・ソースコードエディターとかリソースエディター等など(新規作成からできる奴) ・ソリューションエクスプローラーとかアウトプットウィンドウとか・・・ にあたる。 強引に「こうやって作れよ!」っていう型なんで設計からしてこうやってなってないと駄目っちゃ駄目だなw
314 名前:311 [2007/01/14(日) 00:12:54 ] ありがとうございます
315 名前:スイ [2007/01/14(日) 00:22:26 BE:311467872-2BP(0)] えっと、すいません、↓で討論?みたいなのをしているんですけど、 jbbs.livedoor.jp/bbs/read.cgi/game/19692/1168442603/ 私は、真珠さんって少し変わった趣味を持った人だなー、とかは思いますけど、それだけで叩いたりするのってひどいと思いませんか? 私はあまりネットには詳しくないのでよくわからないんですが、なんかほなみんさんが2chとか言ってたので調べてみると見つかったので書き込んでみました。 このままだと真珠さんがかわいそうなんで、誰か真珠さん側についてほなみんさんを叩き返してくれませんか?私じゃ勝てそうにないので。
316 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 00:46:00 ] ↓ハイ、次の方どうぞ。
317 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 01:44:25 ] えっと、これ本番ですか?
318 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 06:58:08 ] >>313 なんで初心者に向かって何の前置きも無しに、あまりお目にかからないMDIのさらにレアな 複数のドキュメントタイプを持つアプリの解説を始めるのか、理解に苦しむよ。 VS2005でMFCアプリのデフォルトプロジェクトがMDIになったのは大失敗な気がする。 >>311 msdn2.microsoft.com/ja-jp/library/4x1xy43a (VS.80).aspx この解説が分かりやすいよ。
319 名前:デフォルトの名無しさん [2007/01/14(日) 08:06:10 ] >>318 ええ!? >>313 のどこをどう読めばが複数ドキュメントの解説がメインになってるの? とんだ濡れ衣だ!勘違いなら謝ってよ!
320 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 08:06:57 ] X複数ドキュメント ○複数ドキュメントタイプ
321 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 09:00:21 ] >新規作成でできるもんがドキュメント+ビューを型にしたインスタンスであることって方が >重要のような気がするがわかっているならOK。 SDIでは100%成り立たないし、単一のドキュメントタイプをもつMDIなら自明で重要性は感じられない。 これが重要な意味を持つのは複数のドキュメントタイプをもつMDIしかないように思った。 確信犯だと思ったんだが、気に障ったのなら謝るよ。漏れの知らない世界があるんだろうね。
322 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 10:00:53 ] >>321 え?じゃあ、君の勝手な妄想で俺につっかかってきたの? それとあきらかにその文章で複数ドキュメントタイプの説明なんて書いてないのにその態度はなんなの。 しかも、確信犯の使い方も間違ってるし。 こんなの業務でやったら大変だぜ。改めろよ。
323 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 10:23:18 ] いや、改めなくていいから一切社会活動を行なわないでください。
324 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 10:27:37 ] >VS2005でMFCアプリのデフォルトプロジェクトがMDIになったのは大失敗な気がする。 これ昔からだろ、2005ではじめて触ったのか
325 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 11:07:34 ] SDI MDI MFC以前からある ドキュメント/ビュー MFC2.0で追加された
326 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 12:59:31 ] CFrameWndの派生クラスをドキュメントテンプレートから閉じるにはどうしたらいいでしょうか。 つまり class CHogeDocTemplate : public C[Single/Multi]DocTemplate の OpenDocumentFile で特定のフレームを閉じる様にしたいのですが、 閉じる時に CFrameWnd::DestroyWindow や OnCloseDocument を使うと OnClose が呼びだされないがこれで大丈夫なのか、 だめだとしたら正しい閉じ方はどうなのかを教えていただきたいのです。 よろしくお願いします。
327 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 13:14:37 ] 普通に閉じればいいじゃん
328 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 13:34:04 ] CFrameWnd::OnCloseからDestroyWindow呼んでるから OnClose が呼びだされないのは当たり前
329 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 13:39:10 ] >>327 普通にとはどのようにでしょうか? >>328 その通りです。OnClose から閉じる方がドキュメントを閉じる等の処理も 正しく行われるように読めたので出来ればそうしたく質問しております。
330 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 13:47:01 ] OnCloseからOnCloseDocument呼んでるから OnCloseDocumentからOnClose が呼びだされないのは当たり前
331 名前:デフォルトの名無しさん mailto:sage [2007/01/15(月) 21:50:20 ] OnCloseはウィンドウを閉じる時 OnDocumentCloseはドキュメントを閉じる時 と考えれば何も問題ないべ
332 名前:デフォルトの名無しさん [2007/01/16(火) 04:24:49 ] CPUやメモリをあまり気にせずにプログラム書いてたら 起動しただけでCPU使用率50%という異常な状態になっていました。 このプログラム自体、起動と同時に行う処理はほとんどなく、 SDIのスケルトンと同じようなもののはずなんですが。。 処理がないのにCPU使用率が高いまま下がらないのは 原因としてどのようなことが考えられますか? もしくは原因を調べる方法とかってありますか?
333 名前:win32apiスレ17 mailto:sage [2007/01/16(火) 04:36:15 ] pc10.2ch.net/test/read.cgi/tech/1168708801/17 に最初書き込みましたが、こちらのが適切かなと思って移動してきました。 Acrobatのページサムネール表示、あるいはPowerPointのスライド一覧表示のように、 イメージのリストを表示し、かつ、その順番をマウスのドラッグで調整したいと思ってます。 ドラッグ中、イメージが挿入される場所にカーソルの様な縦線が出てきて欲しいなと思ってます。 こういうコントロールの既存の実装やコードのサンプルなど御存知でしたら御教示頂けないでしょうか? codeguru、codeprojectは廻ってみたものの、どうにもサムネールの表示どまりでして・・・
334 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 05:27:51 ] >>332 情報少なすぎでどうespしろと?
335 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 05:36:21 ] >>333 自分でエディタとか作ったことない?
336 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 08:03:52 ] >>332 プロファイルで
337 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 09:03:52 ] ある場所から突然malloc(255)がNULLになります。直前のmallocは必ず成功で、場所は一定 HEAP、スタックを2000000(2M)や20000000(20M)で試しましたが、タイミングや場所は変わらないようです お手上げです。解決策をお知りの方おりませんか?
338 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 09:15:52 ] 直前のmallocまでのすべての戻り値をここにさらしてごらん
339 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 09:42:17 ] 直前のmallocの戻り値でいいですか? malloc(255);//必ず成功。 戻り値:0x00b72e68 WideCharToMultiByte MultiByteToWideChar malloc(255);//必ず失敗 こんな感じです
340 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 09:59:04 ] ヒープ壊してんじゃねえの
341 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 10:05:25 ] 解決しました! MultiByteToWideCharを2度使いmallocのサイズを指定していたのですが、wchar単位でNULLが含まれていないため少なくなっていました 成功するほうをmalloc((len+1)*sizeof(wchar_t));で動きました。 ありがとうございました。
342 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 12:49:33 ] CStringWじゃ駄目なのか?
343 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 17:35:59 ] >>332 です。 >>336 ありがとうございます。 プロファイルで調べたところOnIdle()のreturnが原因だったようです。 そのreturnのことで質問なのですが、 OnIdle内でのレンダリングによってCGアニメーションを表示するプログラムを書いているのですが、 return TRUE;だと前述のようにCPU使用率が高くなるのですが、 アニメーションは正常に表示されます。 return CWinApp::OnIdle(lCount);だとCPU使用率の問題は解消されるのですが OnIdle()が呼ばれる間隔が長くなるためか、アニメーションが滑らかに表示できません。 この2つを同時にクリアできる良い方法はありませんか? よろしくお願いします。
344 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 19:02:17 ] んー、、、目的の fps が取れてるなら Sleep(0)を呼ぶとかどうだろう、Sleep(1)でもいいが
345 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 19:27:01 ] ほっといてやれ
346 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 21:57:57 ] >>344 ありがとうございます!! どうやらすごく基本的なことのようですね。。
347 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 21:52:58 ] マルチラインエディットボックスで 水平方向のスクロールバーの位置から 列の何文字目から表示している知りたいのですが どうすればいいのでしょうか? やりたいことはエディットボックスの中身を編集して かきかえても書き換える前と同じ位置を表示したいのです。 LineScrollを使用すれば垂直はうまくいくのですが、水平がうまくできません。 また、SetScrollPosを使用してもエディットボックス内が更新されないのでこまっています。
348 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 23:52:25 ] >>347 「書き換えても書き換える前と同じ位置」というのもよくわからないんだけど、 わざわざスクロールバーを使っているのはなぜ? 単純にGetSelでカーソル位置を取得しておいてSetSelで戻すだけじゃダメ? あと、エディットボックスの更新するにはUpdateData(FALSE)とUpdateWindow() じゃない? 質問がよくわかってないのではずしてるかも知れんけど。
349 名前:347 mailto:sage [2007/01/19(金) 14:44:11 ] >>348 さん レスありがとうございます。 自己解決しました
350 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 16:13:48 ] CWnd* CWnd::GetDlgItem(int nID); で得られるCWndのインスタンスの解放は 誰に責任があるんでしょうか?ソースコードを少し追ってみると、独自のアロケータ でごにょごにょやってるような感じなんですが。
351 名前:350 mailto:sage [2007/01/19(金) 16:23:11 ] 自己解決しました。こういう一時的に作ったオブジェクトはMFCが勝手に CWinApp::OnIdle() → CWnd::DeleteTempMap() あたりで解放するんですね。
352 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 16:23:37 ] ソース追うのもいいけど、ヘルプもみよう
353 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 16:34:29 ] いや、だってヘルプには「返されるポインタは、一時的なポインタです。後で使用するために保存しておくことはできません。 」としか書いてないから、誰がどこでいつ解放するか気になるじゃん?
354 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 16:39:54 ] 一時的なポインタを解放するのか?
355 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 17:09:59 ] そりゃ解放するでしょ。問題は誰がいつどこで開放するかであって、それに よって「一時的なポインタ」とやらの有効範囲が決まってくるわけだから。
356 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 17:21:08 ] クラスがなんだかわかってないのでは?
357 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 18:22:15 ] あれ、FromHandle()あたりからDeleteTempMap()をたどって知ったんだったかな、、、 ヘルプだけで一時的なCWnd*がいつ消されるかも読んだ気がしたが・・・
358 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 18:27:04 ] >>357 それがヘルプに書いてあれば悩む必要がないのにね。
359 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 18:39:22 ] すいません。 自作でエクスプローラ風アプリケーションを作りたいのですが、 それ風なサンプルを説明しているサイトとか知りませんか? 全く、それ系のインターフェイス名も知らないんで、 ググれなく困っています。
360 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 19:00:58 ] せっかく教えても無駄になりそうだからやめておこう
361 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 20:54:50 ] >>359 えー!! そんな殺生なぁ
362 名前:361 mailto:sage [2007/01/22(月) 20:56:48 ] >>360 おねがいっす!!
363 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 11:03:34 ] 質問なんですけど AppクラスからDocumentクラスのポインタの取得方法を教えてください よろしくお願いします。
364 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 11:12:52 ] 自分で持ってそうな気がするけど
365 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 11:13:20 ] Viewが一つだけなら GetFirstDocTemplatePosition()、GetNextDocTemplate()、GetFirstDocPosition()、GetNextDoc() あたりで。
366 名前:363 mailto:sage [2007/01/23(火) 11:19:24 ] >365 GetFirstDocPosition()、GetNextDoc()で取得できました。 ありがとうございます。
367 名前:デフォルトの名無しさん [2007/01/25(木) 16:20:26 ] スライダについて質問です slider.SetRange(0, 100, true); slider.SetTicFreq(10); slider.SetPos(0); このようなスライダを作り、スライダで設定した値をEditBoxに表示しています。 このとき、スライダのつまみをドラッグした場合には正しい値が得られますが クリックで設定しようとした場合が上手くいきません 例えば、70を設定しようと思って該当する目盛りのあたりをクリックすると、 70の位置には来ず、マウスボタンが押されるたびに60と80で切り替ってしまいます。 クリックでも値を設定できるようにするには、何か特殊な処理が必要なのでしょうか?
368 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 18:32:40 ] スライダの現在位置が0の時に70の位置をクリックしたら 0+GetPageSize()で得られる位置に移動するのがスライダ コントロールの仕様だと思うんですが。 仕様が気に入らないのであれば、自分で必要なイベントを拾ってSetPos()すれば良い。
369 名前:デフォルトの名無しさん [2007/01/26(金) 01:06:48 ] CEdit::SetFoces()に関する質問です。 任意のテキストフィールドをフォーカスさせたい場合は CEdit::SetFocus()を行うと実現できますが、 このとき、フォーカス対象のテキストフィールドに文字列が 入力されているとき、文字列全体を範囲選択した状態で フォーカス移動させるにはどのような手法があるでしょうか? イメージとしてはタブでフォーカス移動させたときのような感じです。 よろしくお願い致します。
370 名前:369 mailto:sage [2007/01/26(金) 01:14:49 ] ごめんなさい。自己解決しました。 CEdit::SetFocus(); CEdit::SetSel(0,-1); で実現できるようでした。
371 名前:デフォルトの名無しさん [2007/01/27(土) 01:54:56 ] ダイヤログベースのアプリです。 英語化について教えてほしいです。 タイトルアイコンをクリックした時のシステムメニューや、 AfxMessageBoxを表示させたときのキャンセルの表示など あらかじめ用意されている部分に日本語が表示されますが、 すべて、一切がっさいを英語にしたいと考えています。 どのような方法で英語かすることができるでしょうか?
372 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 02:56:08 ] >371 アプリケーションを実行するとき、デフォルトのコードページを英語に変更する。 でも、システムのバグをたたくこともあるからお勧めしない。
373 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 06:21:45 ] 英語環境でビルドしてあるやつでもそうなるから OSの問題だろ
374 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 13:08:41 ] だから実行時指定
375 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 15:15:32 ] >>371 日本語関連を全くインストールしていない、設定も悉く日本にしていない端末で、実行する。
376 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 15:21:43 ] MFCは全くの初心者なのですが、MFCにもバージョンはあると思うのですが Visuall C++(VC6)に付属のMFCのバージョンはいくらになりますか?
377 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 15:31:00 ] 6.0
378 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 17:48:04 ] WikipediaのMFCの項目、批判の所見てワロタ。 どこの知障だよ、書いたの。
379 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 18:41:44 ] >378 DelphiやJavaはライブラリらしい。しかも、C++はコンパイル時間が長いらしい。
380 名前:372 mailto:sage [2007/01/27(土) 19:01:12 ] >371 あと、afxMessageBoxにはユーザ拡張用の前呼び出し処理があるから、 それを横取りして自作のメッセージボックスを表示する。 とかかな。
381 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 19:01:26 ] コンパイル時間は長いとは思うけど、他のオブジェクト指向言語と 比べてどうなのかはわからんな。 ただ、「C++だから」ってより「色々インクルードするから」長いんだけど。
382 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 19:06:08 ] 実行時コンパイルの方が好感もたれるのか
383 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 19:52:07 ] すみませんMFCど素人です ANSIの unsigned char foo[64] MFCではどの様に書いたらいいのでしょうか? コンパイラはVC6です
384 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 20:20:34 ] unsigned char foo[64]
385 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 20:47:58 ] ガベコレがないのが致命的欠点であるかどうかは検証不可能だから これはもちろんWikipediaに書いてはいけない。 Delphiの方にもしょうもない書き込みしてるが、 群を抜いているのなら特定のソフトウェアをあげつらう必要はなかろうに。 「中立的な観点」を欠いてしまっているのが分らないのかね。
386 名前:デフォルトの名無しさん [2007/01/27(土) 23:24:57 ] 何で C# って使われてないの? VC++ ネイティブのより多少計算とか遅いかもしれないけどさ、 開発が VB 並にめっちゃ楽だし、 文法は Java そっくりで習得も移行も容易だし、 全体的にスマートな印象を受けるじゃん いい加減 VC++ 信仰は止めて欲しいんだよね 一々 Windows と UNIX(Linux) 版を作りたくねーんだよ もうさ、時代は中間言語の時代だと思うね 頼むから、ネイティブ信仰は止めようぜ な
387 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 23:34:26 ] >>386 TPOで使い分けるでFAだろ。 まあその手の議論は実りがないから他でやったほうがいいな。
388 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 08:18:59 ] InitDialog中で、必要なファイルがあるかのチェックをして なければSendMessage(WM_CLOSE);として終了するようにしているのですが 一瞬Windowが表示されてしまいます。。。 Windowを表示させずにそのまま終了する方法はないでしょうか?
389 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 08:37:30 ] ダイアログ出す前に調べる
390 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 10:07:30 ] >>388 モーダルならEndDialog、モードレスならDestroyWindow。
391 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 11:06:29 ] ほほぉ、それからそれから?
392 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 12:29:47 ] VC8のMFCではダイアログボックスに貼り付けるボタンやテキストボックスのサイズや 表示位置をそれぞれのプロパティから数値で詳細に設定できるのですが、VC6のMFCでは そのようなプロパティに項目が見当たりません、VC6で皆さんは位置決めやサイズを 何処で設定されているのでしょうか?
393 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 13:03:17 ] テキストエディタ
394 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 13:16:13 ] >>389 、390 ありがとうございました!
395 名前:デフォルトの名無しさん [2007/01/28(日) 16:34:24 ] ダイアログベースのアプリです。 ウインドウサイズをマウスで自由に変更できるようにするには どのような設定、または処理を作れば良いでしょうか? SDI/MDIベースでないとできないですか?
396 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 16:48:03 ] いいえ。
397 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 17:04:26 ] サイズ可変のスタイル付ければダイアログ自体のサイズは変えられるようになるが 中のコントロールもそれにあわせて調整したければ、自分で書くしかない。
398 名前:デフォルトの名無しさん [2007/01/28(日) 17:17:53 ] >>397 さん お返事ありがとうございます。 サイズ可変のスタイルのつけ方は、具体的なコードイメージを教えていただけないでしょうか。 ダイアログ内部に設置したCEditのコントロールもあわせて変更するように実装します。
399 名前:396 mailto:sage [2007/01/28(日) 17:44:13 ] スルーされたから要点だけ突っ込み。 >サイズ可変のスタイルのつけ方は、具体的なコードイメージを教えていただけないでしょうか。 MSDN嫁。リソースで定義したダイアログならリソースエディタのプロパティの該当項目をチェックするだけ。 >ダイアログ内部に設置したCEditのコントロールもあわせて変更するように実装します。 サイズ変更のメッセージハンドラを書く必要がある(勿論そこでCEditのサイズを調整する)ので、 初心者向けの解説サイトでも探して解説を読め。
400 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 18:57:22 ] すいません。でも方法教えていただきありがとうございました。 これからはMSDNみてから質問します。 CEditのほうもありがとうございました。
401 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 21:19:27 ] >>392 ですが、どうしたらいい?
402 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 21:38:35 ] >>401 VC6の場合画面の右下のステータスバーに座標とサイズが表示されてるから それを見ながら、マウスかキーボードで配置する。 [↑↓←→]で位置の変更、[Shift]+[↑↓←→]でサイズ変更。 もしくはリソーススクリプトを直接編集する。
403 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 05:11:45 ] ダイアログ上にコントロールを大量に貼り付けて等間隔に位置を合わせるtips。 1.テキストエディタで.rcファイルを開く。 2.DIALOG内のCONTROL行をcsvファイルとして保存する。 3.以下省略。
404 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 05:36:57 ] すごい大量のとき役立ちそうだなw
405 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 06:20:10 ] ダイアログエディタに位置そろえる機能ついてるけど
406 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 15:36:03 ] >>403 の3.の部分はストリングテーブルを書くときに便利だな。 defineと日本語/英語の文字列が一気に書ける。同時に仕様書も作れて一挙両得。 defineの数値はドラッグすれば1づつ増やせるからバグもでない。
407 名前:デフォルトの名無しさん [2007/01/30(火) 23:29:19 ] フレームウィンドウとかの OnDestroy について質問です 通常 OnDestroy の中では親クラスの OnDestroy を呼んでいますが、 その親の OnDestroy の直前の部分でメモリ開放処理を行うのは良くないですか? リストに登録されているアイテムを開放したいのですが・・・
408 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 23:50:16 ] >>407 良くないと思う理由は? リストってリストボックスやリストビューコントロールのこと?
409 名前:デフォルトの名無しさん [2007/01/31(水) 00:00:58 ] >>408 CListCtrl のことです これに new で生成したオブジェクトを登録?しています そのまま終了するとメモリリークが発生してしまうので、 ウィンドウが破棄される直前に開放しようと思いました それで OnDestroy に追加することにしました 良くないと思った理由は、親クラスの OnDestroy を 呼んでいるところの下にデフォルトで「ここに追加」 的なコメントが入っているからです
410 名前:デフォルトの名無しさん [2007/01/31(水) 00:10:13 ] CListCtrlが消えるのいつなん? プログラムが生成→消滅→生成→消滅→・・・ってやってるか 生成→表示→非表示→表示→非表示→・・・消滅ってやってるかでタイミング違ってくるじゃん。 生成したインスタンスを消したいタイミングはいつよ? 最終的に(それがいつだかはアプリにもよるが)インスタンスを確実に消滅さしときゃ問題ねーんだしよ。
411 名前:デフォルトの名無しさん [2007/01/31(水) 00:29:46 ] リストは起動時から終了時までずっと表示です 終了時に一覧情報を保存して破棄することにしています できるだけ綺麗な(オブジェクト指向的な)ソースコードを 書きたいので、親の OnDestroy の前が正解か後ろが正解か が気になります
412 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 00:49:58 ] >>411 WM_DESTROYを処理してる間は、子ウィンドウは存在している。 ttp://msdn2.microsoft.com/en-us/library/ms632620.aspx リストビューアイテムに設定しているデータを削除するのは、LVN_DELETEITEM, LVN_DELETEALLITEMSでやるといい。
413 名前:デフォルトの名無しさん [2007/01/31(水) 00:51:06 ] >>412 ありがとうございます! やってみます!
414 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 00:52:14 ] >>411 だったらOnDestroyは関係ないんじゃない? つか、親のOnDestroy後にCListCtrlにアクセスされたら(するのか?)死ぬじゃない。 親のデストラクタでdeleteしとけばいいんじゃね?やってみ、やってみ。やってみたら結果報告ヨロ
415 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 00:53:07 ] CMainFrame::OnDestroy()の前後どっちか2択と言われたら後に1票。 個人的には、Documentで扱っているデータなら CHogeDocument::OnCloseDocument() or OnSaveDocument() ViewのみでやってるならCHogeView::PostNcDestroy()でやると思う。 CMainFrameにCListCtrlのデータ持たせるとViewからデータへの アクセスが面倒じゃない?
416 名前:デフォルトの名無しさん [2007/01/31(水) 01:08:09 ] >>414-415 ありがとうございます! いろいろと試してみます!
417 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 08:40:38 ] 親ウインドウと関係あるのはopenからcloseまで closeしたらウインドウ関係ないから心配いらん >綺麗な(オブジェクト指向的な)ソースコード 普通はデストラクタで解放
418 名前:デフォルトの名無しさん [2007/02/01(木) 00:21:49 ] CListCtrl コントロールのイベント処理ですが クリック時とダブルクリック時とで処理を分けたいと思っています しかし、ダブルクリック時には先に必ずクリックイベントが 発生してしまってうまくいきません NM_DBLCLK の直前に NM_CLICK が発生するのを 防ぐことはできませんか?
419 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 00:53:14 ] 仮にNM_CLICKが発生しないようにしたらシングルクリック時の処理が出来ない。 コントロールの身になって考えれば、ユーザーのクリックがシングルなのかダブルの1発目 なのかの判断はできない。 シングルクリック時の処理開始をしばらく待ってみる以外手はないと思う。
420 名前:デフォルトの名無しさん [2007/02/01(木) 01:11:47 ] >>419 レスありがとうございます つまり、NM_DBLCLK 前には NM_CLICK が 絶対に発生してしまうということですね 何か良い手はないですかね・・・
421 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 01:20:02 ] だからシングルクリックのイベント後、しばらく待ってみてダブルクリックが来ないようなら シングルの処理。来たらダブルの処理するだけ。 VBのサンプルではタイマー使ってるみたい。 support.microsoft.com/kb/109865/ja
422 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 09:45:30 ] 本来はダブルクリックってーのは、シングルクリック→メニュー等選択 のショートカットだから、シングルクリックのあとにダブルクリックがきても 何も困らないんだけどな。 ダブルクリックを変なことに使おうとするからこうなる
423 名前:デフォルトの名無しさん mailto:sage [2007/02/03(土) 19:33:32 ] これからMFCの勉強を始めたいのですが 書籍の「標準講座MFC」って今でも役に立つでしょうか? MFC6.0ってちょっと古いみたいですが、最新のバージョン(MFC8.0?)と 大きく違うところってあるのでしょうか
424 名前:デフォルトの名無しさん mailto:sage [2007/02/03(土) 20:20:00 ] 仕事でどうしても必要なのか? でなければ止めとけ。
425 名前:デフォルトの名無しさん mailto:sage [2007/02/03(土) 20:42:57 ] >>423 新しいUI関連のクラスがいくつか無いだけで、基本はそんなに変わってないと思うけど。
426 名前:デフォルトの名無しさん mailto:sage [2007/02/03(土) 21:18:50 ] www.shoeisha.com/book/hp/pc/book/MFCMaster/ ソースは公開されてる
427 名前:デフォルトの名無しさん [2007/02/03(土) 21:57:59 ] お前ら教えてください。 ツールバーのボタンに文字列のみ表示したいのですが、 TBBUTTON::iBitmapにNULLを指定しただけでは イメージ(アイコン?)のスペースの分のスペースが空き、 そこから先から文字列が描画されてしまいます。 どうすればいんでしょうか?
428 名前:デフォルトの名無しさん mailto:sage [2007/02/03(土) 22:40:06 ] CToolBarでできそうな気がするけど
429 名前:427 [2007/02/03(土) 22:47:49 ] >>428 なるほど! CToolBar::SetSizes()の中にやり方が書いてありました。 助かったよ!ありがとう!
430 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 09:09:06 ] 今、Visual C++ 6.0 を使ってるのだが、開発環境をバージョンアップしようとしたら どれを導入すればいいのだろう? 無料で配布されている Visual C++ 2005 Express は MFC は入ってないんですよね? それとも、あと少し待って次のバージョンが出たときのほうがいいんでしょうかね。
431 名前:デフォルトの名無しさん [2007/02/04(日) 09:26:03 ] >>430 そりゃおめ、vista上で動くモン買えや。 いま、XPでなにやら揃えるのは無駄でしょ?
432 名前:デフォルトの名無しさん [2007/02/04(日) 11:30:15 ] IEのメニューの用に画面に収まりきらないメニューがある場合は 「>>」を表示し、「>>」を押せば残りのメニューが表示されるようにしたいのですが、 そういったコントロールがあるのでしょうか? どなたかヒントだけでもわかる方おられましたら教えてやって下さい。
433 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 11:39:00 ] 軍人や警官の袖に付いている山形の袖章のことをいうのだそうです(多分)。
434 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 12:05:06 ] USECHEVRONあたりで探せば?
435 名前:432 [2007/02/04(日) 12:31:54 ] >>434 「>>」はChevronって言うんですか用語自体知りませんでした。 Chevronでぐぐればすぐにでてきました。 教えていただかなければ数日ははまるとこでした、 ありがとうございます。
436 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 14:14:26 ] フランス車に詳しければ直ぐに判るんだがな。
437 名前:デフォルトの名無しさん [2007/02/04(日) 22:58:24 ] CFont::CreateFontとかCFont::CreateFontIndirectって CFont オブジェクトを使い終わったら、最初にデバイス コンテキストからフォントを選択して、それから、CFont オブジェクトを削除します。 ってあるけどデストラクタで解放してくれないの? 解放しないままアプリ終了したらリソースリークするのかな?
438 名前:デフォルトの名無しさん [2007/02/04(日) 23:01:29 ] CClientDC::SelectObject よばなきゃ問題ないのか??? よくわからん
439 名前:デフォルトの名無しさん [2007/02/04(日) 23:06:49 ] エディットボックス内のフォントを変更すのみで DCで直接使用しない場合は問題ないのか??? MSさんさっぱりわかりませんorz
440 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 23:19:29 ] SetFontで
441 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 00:11:26 ] >>437 デバイスコンテキストに選択されたままだと解放されないと思った。
442 名前:デフォルトの名無しさん [2007/02/05(月) 17:27:27 ] CHtmlViewについてお聞きしたいのですが www.microsoft.com/japan/msdn/columns/webteam/webteam02052001.aspx ここを参考にしてタブではないブラウザを作成したのですがこの通りに記述しても JAVAスクリプトで行っているブラウザのリサイズが正常に動きません。 テスト用に適当に選んだサイトですが www3.ocn.ne.jp/~motiya/java/sample-4/window_choice1.htm ここのsmall windowを押してもフレームのサイズが変更されません。 RecalcLayout等してもダメでした。メインフレームが正しくリサイズされる 方法をどなかた教えて頂けないでしょうか。 環境 VC6.0 WindowsXp SP2
443 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 20:47:25 ] |あいう |^| |えおか| | | | | | | | | 5| | | | | | | リッチエディット | | | | | | | | 10| | | | | | | | | | | | | | | 15|--------------------------|↓| スクロールバー こんな感じの画面を作ることになったのですが 右のスクロールバーと左の行数のコントロール?(何でもいい)で 同期をとりたいのですがどのようにしたらよいのでしょうか? なにかヒントでもありましたらご教授をお願いいたします。 環境:VC++2005 MFC
444 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 01:38:15 ] すみません。CFileFind について、みなさんのお知恵を貸してください。 エディットボックスに入力したパスを CFileDialog で開く、という処理を作ってまして、 入力したパスの存在チェックを CFileFind で行っています。 ですが、C:\ や、\\hoge\ 等、ドライブのルートを指定した場合に存在を検出できず、 前回開いたフォルダがFileDialog で開かれてしまい、困っています。 どなたか良い方法をご存知でしたら、ご教授ください。 よろしくお願い致します。
445 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 02:55:00 ] 単独で現れる\記号の数をカウントすればいいんじゃないかい "\\"はReplaceで別の記号に置き換えるとかして、 その後で"\"が1個だけならルート
446 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 04:19:44 ] つか、そのまえになんでCFileFindってそんな厨仕様なの? なんか意味あんじゃね?
447 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 06:07:07 ] 試してないけどCFileDialogで存在しないパスは指定できないような気がするけど
448 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 06:14:37 ] ああそうか指定したパスをCFileDialogで開きたいのか
449 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 06:39:44 ] >>444 ルートディレクトリが検出されないのは、内部で呼び出しているAPI側(FindFirstFile)の仕様。 CFileFindの仕様としては書かれてないかも。 FindFirstFileの説明にはルートディレクトリの属性を取得するにはGetFileAttributesを使えと書いてある。
450 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 06:42:23 ] ところでみんなフルコントロールの拒否とかってどうやって判断してる?
451 名前:デフォルトの名無しさん [2007/02/08(木) 17:40:42 ] メニューをoffice風にするため調べたら ”ツールボックスからメニューをペタペタ”をすればいいらしい しかし、MFCを使わなければならないことが判明 win32アプリにツールボックスからメニューをペタペタはできない Wwindowsフォームで作るとできる しかしForm.h、Form.resxとか変なファイルが中身見ると分けわかんなくなってるしWinmainがないぞ C++とMFCは別物なのか!! 2005express
452 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 18:10:06 ] >>451 それは.NET frameworkじゃね
453 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 18:12:30 ] 知らないうちにC++/CLIを使っている。いかんこれはゲイツの罠だ。
454 名前:デフォルトの名無しさん mailto:sage [2007/02/12(月) 00:31:01 ] 初めて任されたツールが遂に完成シマスタ^^ 予定では後一週間あるので連休明けはブラックボックステストと ロゴの作成にかかりたいのですが、VC6 MFCのリソースエディータって しょぼいですね(^^;フリーでお勧めのリソース編集ソフト知ってたら 教えてくださいオナガイシマス
455 名前:デフォルトの名無しさん mailto:sage [2007/02/12(月) 03:21:06 ] >>454 ロゴの作成にリソースエディタってお前馬鹿じゃないのか?
456 名前:デフォルトの名無しさん mailto:sage [2007/02/12(月) 08:22:50 ] いるんだよ、ソースコードもロゴ画像もIDEで編集しないと気がすまない馬鹿って奴が。
457 名前:松井康明 mailto:sage [2007/02/12(月) 10:05:18 ] >>456 バカバカ言ってないで教えてやれよ
458 名前:デフォルトの名無しさん mailto:sage [2007/02/12(月) 10:22:31 ] ロゴの作成をMFCスレで質問するのは脳に異常があるんだろうな 進行が進まないうちに早めに治療を受けたほうがいいよ
459 名前:デフォルトの名無しさん mailto:sage [2007/02/12(月) 11:40:34 ] >>457 教えるも何も、「画像を作る」って聞いたら藻前様は何を使うと仰るのですか? #ふつー、画像編集ソフトを使うと思うのだが。
460 名前:デフォルトの名無しさん mailto:sage [2007/02/12(月) 21:25:22 ] 別にいいんじゃね、リソースエディタでも。センスがあれば。
461 名前:デフォルトの名無しさん mailto:sage [2007/02/13(火) 05:43:02 ] >リソースエディタでロゴ作成業務 8H やべぇw脳勃起してきたw
462 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 10:25:44 ] 印刷プレビューをダイアログベースのプログラム(VC6.0)で実現するにはどうすればよいのでしょうか? 検索するとSDI/MDIのプログラムばかりで途方に暮れています。
463 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 11:57:02 ] MFCのソース見れ
464 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 12:47:54 ] 印刷プレビューのアーキテクチャ msdn2.microsoft.com/ja-jp/library/edak6tf8 (VS.80).aspx
465 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 13:44:30 ] りえ子、結婚してくれ
466 名前:465 mailto:sage [2007/02/19(月) 14:17:23 ] 自己解決しました
467 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 14:54:28 ] おめでとう
468 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 20:27:55 ] いや、うまくいったら、自己解決とは言わない気が…。
469 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 22:17:09 ] 自己解決 = 脳内解決 だな
470 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 15:02:59 ] 123→132は判った。 123→312ではどうなる?
472 名前:470 mailto:sage [2007/02/22(木) 15:20:09 ] >>471 312ではColum3の表示が"3 1 2"となりました。
473 名前:470 mailto:sage [2007/02/22(木) 15:21:42 ] >>471 あ、言葉が足りませんでした。 Colum3のアイテム表示が"3 1 2"です。
474 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 15:53:06 ] なんとなく、メモリ管理が失敗している悪寒。
475 名前:470 mailto:sage [2007/02/22(木) 16:19:39 ] 原因が判りました。 スタイルにLVS_OWNERDRAWFIXEDが指定されていました。 MFCのROWLIST サンプルを元に、変更を加えていったのですが、 CListViewExで、LVS_OWNERDRAWFIXEDが指定されておりました。 レスをしてくれた方がには、お礼申し上げます。
476 名前:デフォルトの名無しさん [2007/02/22(木) 20:26:53 ] MFCを使って、できるだけ簡単にHTMLメールを ダイアログベースで表示したいのですが、 どんな方法があるでしょうか?
477 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 21:13:27 ] もうちょっと仕様検討してから来てください
478 名前:デフォルトの名無しさん [2007/02/22(木) 22:17:26 ] >>477 できるだけ簡単にできる方法に合わせて仕様を決めようかと思って。
479 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 22:51:31 ] メールを表示するソフトなんて聞いたことがない
480 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 10:17:31 ] HTMLを表示(レンダリング)するコントロールを探せ
481 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 10:19:12 ] よくあるペイントソフトのような複数の画像表示ウィンドウに 共通のパレットダイアログを持つようなプログラムを作ろうと考えています。 MDIで生成すると、例えばファイル→開くを選択すると ドキュメント以外にビューも生成されて、ビューが持っているパレットダイアログ(モードレス) までが複数生成されてしまいますが、これを阻止するにはどのようにすればよいのでしょうか?
482 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 10:26:24 ] パレットをビューに持たせてるのが間違い。
483 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 10:33:26 ] >>482 確かにおっしゃるとおりです。 ウィンドウを切り替えたときにパレットの内容をアクティブなウィンドウの 情報に変えたいので、そのあたりの情報などを管理できる部分にまとめようと思うのですが この場合、パレットを持たせるのはMainFrameでしょうか?
484 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 21:47:33 ] すいません教えてください。 VC++6.0です。 ツールバーのボタンに対してプロパティからプロンプトという項目を設定すると実行時にボタンの説明文が出せますよね。 あれをダイアログのボタンやエディットボックスにも出したいのですがどうすればいいでしょうか。
485 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 21:54:39 ] つ CToolTipCtrl
486 名前:484 mailto:sage [2007/02/23(金) 22:23:14 ] 即レスありがとうございます。 調べてみます。
487 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 13:49:06 BE:87345195-2BP(222)] >>483 CDialogBar
488 名前:デフォルトの名無しさん [2007/02/26(月) 18:13:00 ] 自分自身のProductVersion の読み出し方法は? 色々探したのですが、どうも自分自身のProductVersionを 読み出す方法が見つかりません。 自身の実行ファイルのフルパスを探し出し.... という方法は 見つけましたが、何だかなぁという感じで。 CString::LoadString のような感じで読み出す方法はないのでしょうか?
489 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 18:53:34 ] ストリングテーブルになかったか?
490 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 18:54:56 ] なんだ質問者が答えてるじゃないか キチガイの独り言はやめほしいな
491 名前:デフォルトの名無しさん [2007/02/26(月) 19:18:29 ] >>489 > ストリングテーブルになかったか? ストリングテーブルには登録されてないよ。
492 名前:デフォルトの名無しさん [2007/02/26(月) 19:19:07 ] >>490 > なんだ質問者が答えてるじゃないか > キチガイの独り言はやめほしいな CString::LoadString で読み出せるのか? IDは、何を設定するの?
493 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 19:43:48 ] 何だかなぁ
494 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 19:53:29 ] わざわざ教えてやっても何だかなぁと言われたら馬鹿だし
495 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 20:02:23 ] >>488 ttp://tgws.fromc.jp/prog/versioninfo/
496 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 20:04:24 ] FindResourceから始めれば出来なくは無いな。
497 名前:483 [2007/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の影響?) しています。 ttp://www.alpha-net.ne.jp/users2/uk413/vc/VCT_DlgBar.html このようなドッキングされた状態の作成方法はいろいろ紹介されているのを確認しましたが、 通常のモーダレスダイアログのような振る舞いをさせる方法が分かりません。(任意の座標に表示させるとか) どういった方法をそればいいのでしょうか?
498 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 22:02:08 ] ダイアログバーのサンプルならMSDNについてる
499 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 23:07:39 ] ウインドウの動かしかたも知らんのか
500 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 11:53:59 ] こうですか? うまくいきました!!
501 名前:MDI今日始めます [2007/02/27(火) 18:18:27 ] すみません。ど素人ですm(__)m MDIのプログラム今日始めました。ウィザードでMDIのプロジェクトを作成後、 クラスビューでOnDraw(CDC* pDC)という関数を発見し、これで描画できると 思いましたが、子ウィンドウを新規作成するたびに同じ描画を繰り返すだけ。 子ウィンドウ毎に違う描画をしたいのですが、どうしたらいいんでしょう? メインのソースたどろうにも、CWinApp::OnFileNewはライブラリになっていて ソースの実体が無くどうしていいのかわかりません(ToT
502 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 18:40:27 ] その違う描画、は何を持って違うことになるのか それによってOnDrawでの動作を変えりゃいいだろ
503 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 18:40:34 BE:62112948-2BP(222)] 同じ描画になるのは同じ描画しかしないコードを書いているから。 CView::OnDrawでCDocumentのインスタンスを識別してそれぞれで描画するようにしれ。
504 名前:デフォルトの名無しさん [2007/02/28(水) 01:39:33 ] ListViewの初期化方法、削除方法を教えてください。
505 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 13:40:52 ] >>504 MSDN読め
506 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 23:27:13 ] >>506 MFCの問題っちゅーかプログラミング能力の問題じゃねぇの?それ。 まあ、問題の切り分けができないってのもわからないでもないが・・・ そういう機能はAとB2つに影響を与えることができるクラスに付けなきゃ駄目だよ。 AやBはその機能を呼ぶだけ。 >>203-205 の問題と似てネーか?
508 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 09:30:44 ] >>506 そもそも基本ができていない やろうとしていることの前に、基本から勉強しなおせ
509 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 15:05:40 ] 基本的な質問なのです、よろしくお願いします。 VS2005でMFCアプリケーション(ダイアログベース)を作ったのですが。 新規にダイアログベースを作成してそのまま何も加工せずにセットアップ ウィザードを使ってsetup.exeを作って他のPCでインストールしようとしたら .NET framwork2.0をするように指示する画面がでました。 これは、VS2005で開発したものはframework2.0が必要?それとも インストーラーがframework2.0が必要?なんですか? frameworkが必要ないとおもってMFCにしたのですが、framework不要に する設定ありますか?よろしくお願いします。
510 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 15:07:08 ] 訂正です。 x .NET framwork2.0をするように指示する画面がでました。 ○ .NET framwork2.0をインストールするように指示する画面がでました。
511 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 15:45:02 ] CHtmlDialog使ってる?
512 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 17:30:44 ] それはじめてききましたので意識的にはつかってないかと
513 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 18:51:13 ] んー、普通に作ればいらんけどな。 とりあえず、新規プロジェクトで何もしないでウィザードだけでできあがったダイアログで 試したらどうなる?
514 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 18:51:54 ] セットアップがあやしいな
515 名前:デフォルトの名無しさん [2007/03/01(木) 21:06:55 ] 『標準講座MFC6.0―Visual C++による効率的なWindowsプログラミング』 という本を以前読んで、大変勉強になったのを覚えています。 無くしたので、他の本と一緒に買おうかと思うのですが、どうせならVC++.net 関連の本がいいと思っています。サンプルも欲しいです。 何かお勧めはありますでしょうか?
516 名前:デフォルトの名無しさん [2007/03/01(木) 22:50:39 ] VC++2003 のリソースエディタで作成したポップアップメニューについて質問です やりたいことは簡単でポップアップメニューのサブメニュー(横に開いたやつ)を 状況(その時の変数値など)に応じてグレーアウト(Enable が FALSE の状態)したいだけです OnUpdateXX(メニュー名) で pCmdUI->Enable(FALSE) することで 普通のポップアップメニューをグレーアウトすることはできました しかし、ポップアップメニューのサブメニューに同じようなことをやってもうまくいくません サブメニューを選択して初めて OnUpdateXX と OnXX が走っているようです どうにかして同じようにサブメニューをグレーアウトさせることはできないでしょうか?
517 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 22:54:35 ] スレ違い。書籍スレへどうぞ。
518 名前:デフォルトの名無しさん [2007/03/01(木) 23:19:43 ] そんなことおっしゃらずに教えて頂けないでしょうか?
519 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 00:42:30 ] >518 ここはMFCスレ。.netやりたいならそういうスレで聞けば?MFCなら標準講座でいいだろうし。
520 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 09:27:14 ] なんで.NETだと思うんだ?
521 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 12:20:53 ] >>516 OnUpdate〜に頼らず、自分でグレーアウトさせる。
522 名前:デフォルトの名無しさん [2007/03/02(金) 14:04:34 ] VC++6.0使っています。 MFCでAPIである SetWindowText(hWnd ,"(@_@)"); を使いたいのですが、MFC上でこの関数を実行すると ウィンドウハンドルの引数が省略されてしまい、コンパイルできません。 MFC上で、任意にウィンドウハンドルを指定してSetWindowText関数を 使う方法はありますでしょうか?
523 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 14:09:24 ] スコープ演算子
524 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 14:20:29 ] >>522 C++ の基礎からやりなおせ
525 名前:デフォルトの名無しさん [2007/03/02(金) 14:32:43 ] >>523 >>524 ありがとうございます。 勉強しながらなので、 お教えいただいたヒントを元に 答えを探ってみたいと思います。
526 名前:デフォルトの名無しさん [2007/03/02(金) 14:39:48 ] >>523 >>524 どこに対してスコープを設定すればよいのか 見当もつかなかったので、試しに関数の頭にスコープ演算子だけつけてみたら なぜかうまくいきました。
527 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 14:55:29 ] >>522 >MFCでAPIである WindowsのAPIなのかMFCクラスのメンバー関数なのかはっきりしる。
528 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 15:03:02 ] すでに解決済
529 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 15:31:06 ] CListBoxなどのコントロールでの文字列の扱いは TCHAR(LPCTSTRとか)になってますが 実行時にマルチバイトでCListBoxを使うか UNICODEで使うかを選択することはできないものなんですか?
530 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 15:33:45 ] マクロはコンパイル時に展開されるから マクロ使わないで使い分ければいい
531 名前:529 mailto:sage [2007/03/04(日) 15:45:56 ] >>530 すいません。その辺知識不足なんですが、 Win32APIで例えるとANSI版とUNICODE版があって、 それを使い分けれるってことですか?
532 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 10:54:26 ] いいえ、MBCS版とUNICODE版です。
533 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 12:45:59 ] 知識はいらない MFCのソース見るだけ
534 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 13:15:40 ] ライブラリが違うな
535 名前:529 mailto:sage [2007/03/05(月) 21:33:00 ] ソース見たところ、 MBCS版とUNICODE版を同時に使える仕様にはなってない感じですが…。 よくわからんです。 とりあえず素直に別々にコンパイルして 本体を98系とNT系に分けて用意する方が楽っぽいですね。
536 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 10:23:29 ] 実行時に切り替える必要はない
537 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 19:12:36 ] >>509 の人です。 VS2005で作ったMFCプログラムを同様にVS2005のセットアップウィザードを作ったsetup.exe で実行してFramework2.0をインストすれというメッセージが出たものです。 結論からいうと、このsetup.exeを使わないで~~~.exeだけをコピーして動作させたら動きました。 MFCはスタティックリンクしました。ということで容疑者はセットアップウィザードらしいことが 判明。まあ使わなければいいという短絡的な結論になりました。
538 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 21:00:41 ] あほか 容疑者はおまえだよ セットアッププロジェクトをきちんと作れば何の問題もない
539 名前:デフォルトの名無しさん [2007/03/09(金) 00:20:07 ] MFC にtemplateを組み合わせたフレームワーックってあります? 例えばCCOMBOBOXにSetItemDataPtr使ってある型を足してく場合とかに をやってくれるようなtemplate関数とかが用意してあるやつとか MFCのコントロールとtemplateを組み合わせるのって普通はしないものなんでしょうか? 上記のある型を設定した後にプログラムからSetItemDataptrで設定した型のある値を指定したら SetCurSel あたりで指定した項目に対応するやつを選択状態にしてくれるようなやつとか
540 名前:デフォルトの名無しさん [2007/03/09(金) 00:25:10 ] ダイアログ以外だとポトぺタってできないんですか?
541 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 00:36:03 ] ポトペタしたいなら.NETの方がいいよ
542 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 03:03:47 ] VB6の間違いだろ
543 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 00:47:51 ] FormViewは?
544 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 01:38:01 ] VC++のエディタのようなウィンドウを作ろうとしています。 (テキスト表示の右側に●とか矢印が出るウィンドウ) それで、自分なり考えたのですが、 1. CEditView からビューを作成。 2. OnCreateで左側のマージンを空ける。 3. OnDrawとかで●とか矢印を書く。 でも、そもそもOnDrawが呼ばれません。 他のアプローチがあれば教えていただけないでしょうか? ちなみに当方WindowsのGUIプログラミングはド素人です。
545 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 06:23:12 ] CEditViewの中はCviewにeditコントロールを貼り付けてあるだけで 位置調整に関係するのはCEditView::CalcWindowRectあたりか
546 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 10:52:35 ] >>544 CEditView なんぞ使ったらだめ。 CView に全部自前で実装しろ。 どのみち、ど素人にできるテーマではない。 その前にいろいろ勉強してから出直して来い。
547 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 13:31:21 ] >>544 とりあえず参考までに。 ttp://www.vcppclub.com/samples/vwdoc/p_leditor/leditor.html
548 名前:544 mailto:sage [2007/03/11(日) 00:45:00 ] >>545-547 レスありがとうございます。 >>545 こんなメンバがあったのですね。しらなんだ orz 勉強になります。 >>546 ごめんなさい。今勉強中で行き詰まったので、ちょっと甘えてみました。 >>547 てか、行番号のところに●とか矢印描画したらやりたいことそのままではないですか!! まだ、ちゃんとソース見られてませんが、これからじっくり追って行きたいと思います。 ありがとうございます。 良スレ発見!!
549 名前:548 [2007/03/17(土) 14:50:17 ] __,,..、、- - - .、、...,,___ ,,、‐''"~ ̄  ̄``''‐、、 / \ / ヽ / ヽ / / ~~` '' ‐- 、、 ,,__ __ ,,..、、 -‐ '' "~~\ ヽ | / __  ̄ __ ヽ | .| { ´ ‐- ....__ __... -‐ ` } .| .| 〉,,・^'' - .,, ~ i ~ __,,.- ^`・、.〈 | ./ ̄| /,/~ヽ、 `'' ‐--‐ ,.| 、‐-‐'' "~ _ノ~\,ヽ | ̄ヽ | (` | / ヽ,,_____`‐-、_、..,,___ノ八ヽ___,,.._-‐_'"´___,, ノ ヽ .|'´) | | }.| ./' \二二・二../ ヽ / ヽ、二・二二/ 'ヽ | { | .| //| .| / | |. \ | |ヽヽ| .| .| | .| / | |. \ | | | .| |ヽ.| | / .| |. ヽ .| .|./ .| | .| | / | | ヽ | | / / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ヽ .| | / .| | ヽ | | / | 用件を .ヽ.| | / '二〈___〉二` ヽ | |./ < | | `-;-′ | | | 聞こうか… iヽ|. ,,... -‐"`‐"`'‐- 、、 |/i \_________ | ヽ /...---‐‐‐‐‐----.ヽ / .| | ヽ. ,, -‐ ''"~ ~"'' ‐- 、 / | .| ヽ ! ./ .| ,,| ヽ. | ./ |、 |\. ヽ / /.| .|. \. ヽ、____ ___/ / .| ' `  ̄ ̄ ´ '
550 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 01:58:13 ] CDialogBarのダイアログで List Controlを利用しているのですが カラムを初期化するタイミングはどれがよろしいのでしょうか? CDialogの場合はOnInitDialogがあったんですが CDialogBarには無いみたいで
551 名前:デフォルトの名無しさん [2007/03/18(日) 10:07:39 ] >>550 Create()の中で、CDialogBar::Create()呼び出し後にやってます
552 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 23:04:42 ] CPropertySheetEx/CPropertyPageEx(PSH_WIZARD97)を利用して、 各ページの上部ヘッダ部に画像付きのウィザードを作成しています。 Windows Vista上で、この方法で作成したウィザードを実行すると、 なぜか各ページの上部の画像が表示されなくなってしまいます。 (Windows XPでは問題なく表示されます) これを回避する方法はありますでしょうか?
553 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 10:47:48 ] Vistaを見捨てる
554 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 03:11:06 ] Vistaの互換性の問題なのか、>>552 のプログラムがトンチキなのか
555 名前:デフォルトの名無しさん [2007/03/21(水) 19:50:40 ] 先生、MFCでアプリ作ってたらエロイ人が 「.NETのメニューみたいにかっこよくしろ」 とか言ってきました。
556 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 19:59:11 ] そもそも2ちゃんねるで聞くなんてww 最新スレ50しか読んでないが、質問主は殆ど玉砕だな 昔の2ちゃんねるは玉石混在で光るものもあったが、今は石しかない プログラム技術@2ch掲示板なんて止めて、 質問主を煽る技術@2ch掲示板として、スレッドも一つか二つにまとめたらどうよ
557 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 20:03:16 ] 本気で困ってたら2chなんかで聞かないって 特にム板はクズの集まりだしな
558 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 20:16:01 ] 【審議中】 ∧,,∧ ∧,,∧ ∧ (´・ω・) (・ω・`) ∧∧ ( ´・ω) U) ( つと ノ(ω・` ) | U ( ´・) (・` ) と ノ u-u (l ) ( ノu-u `u-u'. `u-u'
559 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 22:34:13 ] 手前の二人に耳が無いのが気になる
560 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 17:49:07 ] >>556-557 トンチキな質問をして煽られたのか。 >>559 「手前」と思わせといて、実は下。 つまり、上に乗っかってる奴で隠れている。
561 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん 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でコンソールアプリって作成出来ないですよね、バージョンは問いません。
663 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 00:24:43 ] いや、普通にできるが。
664 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 00:52:33 ] >>663 え〜まじっすか? 新規作成→プロジェクトからはMFC ActiveX ContorolWizard or MFC AppWizard(dll) or MFC AppWizard(exe)しかないのだけど? これじゃあコンソールアプリは作成できないよね?
665 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 00:57:51 ] >>664 Win32コンソールプロジェクトを選択して、詳細でMFCサポート追加しろ。
666 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 01:16:56 ] >>665 そういう裏技があったのね、サンクス
667 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 09:51:02 ] CStringを返す関数から戻ってきたクラスは自分で廃棄しないでも良いですか?
668 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 10:28:54 ] CStringを返すと、呼び出し側ではそれのコピーを受け取るだろう。
669 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 00:16:24 ] よくこういう仕様のクラスあるけど腐ってるよね?>CString 一見便利そうに見えるけどインスタンスがハッキリしないから すげー扱いづらい こういう仕様デフォにする奴ってアフォだろ なげー文字列をCStringで扱うとアフォかってほど遅くなる 結局、使えない
670 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 00:49:03 ] ○○○ ○(・ω・)○ ソンナコトイワレテモ ○○○ ウチ、ボン・デ・ライオンヤシ .c(,_uuノ
671 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 11:46:34 ] >>669 >インスタンスがハッキリしないから 君が何を言っているのか判らないよ… 理解できてないだけじゃ?
672 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 11:54:13 ] >>669 せめて他の文字列を取り扱う手段と比較してから結論を出してくれ。
673 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 17:21:39 ] なんか、C/C++以外の言語と勘違いしてんじゃね?
674 名前:デフォルトの名無しさん [2007/05/07(月) 18:55:30 ] リソースエディタでダイアログボックスを作って、 CDialogを継承した派生クラスを作りました。 コントロールは、追加したメンバ変数を操作して 扱えましたが、ダイアログ自身はどうやれば操作 できるのでしょうか。 タイトルバーの文字列を変更する方法を模索中です。 this->SetWindowText("タイトル文字列"); を試すと異常終了だし。
675 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 19:29:26 ] 宇宙天地 與我力量 降伏群魔 迎来曙光 我が左手に封じられし鬼よ 今こそその力を、示せえーー!! うおおおおおおーーー!!! 俺の生徒に、手を出すなあーーー!!!!
676 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 20:10:38 ] >>674 異常終了の詳細キボンヌ
677 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 20:22:51 ] >>676 「Visual C++ Runtime Error [中止][無視][キャンセル]」 のような感じ文面のダイアログが出て終了。 本来ならそれで正解のはずということでしょうか。 何らかのプログラム上のミスが原因で異常終了が出てるのではないか という意味でしょうか。
678 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 20:30:27 ] SetWindowTextをどこで呼び出してる? コンストラクタの中とかじゃダメだよ。 ちゃんとウィンドウが作成されてCDialogオブジェクトに アタッチされてからじゃないと。
679 名前:デフォルトの名無しさん [2007/05/07(月) 20:40:02 ] >>672 じゃ、mallocで確保した領域に突っ込んだ文字列でいいよ これで想像付く? 後付けであれがないこれがないごちゃごちゃいうなよぶっ殺すぞ
680 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 20:43:58 ] >>678 エディットコントロールやスタティックテキストの値を変更している直後 で呼び出してます。 SetWindowTextで正解で、やはり何かプログラム上のミスでしたか。 わかりました、ありがとうございます。
681 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 20:50:22 ] CDialogもCWndの派生クラスだしな そもそもエラーで止まったところで何エラーなのか調べなさいよ
682 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 20:58:27 ] イヤです
683 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 22:29:57 ] >>679 想像も何も、あんたが比較して実際に遅いかどうか判断しなさいよ。
684 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 22:39:03 ] >>683 CStringは糞だろ 文字列に1文字ずつ足していくとどんどん遅くなってく類だろw
685 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 22:42:11 ] どうやって足しているのか興味深いなぁ。 まさかとは思うが、CString foo = ""; for (;;) {foo = foo + '-'; std::cout << foo << std::endl;} とかしちゃってるんだろうかw
686 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 23:04:49 ] 横レスだけど、それで突然思い出したから自分用のメモ代わりに書いとく。 CString hoge, hoge2; strcpy(hoge.GetBuffer(20), "this is a test."); hoge=""; //クリアしたつもりだけど何故かクリアされていない int length=hoge.GetLength(); //この値は確かにゼロ hoge2=hoge; //でもhogeもhoge2も"this is..."が入る hoge="AAA"; //これなら上書きされる int length2=hoge.GetLength(); //この値は3 hoge=""; //今度はきちんとクリアされる
687 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 23:06:47 ] >>685 mStr += strbuff; mStrはCString型のメンバ変数、strbuffは引数からうけとったchar* メソッド実行するたびに鬱になるw 後、CStringの変数を引数に突っ込んで中身を変更したいときとかウザイ transUnko(char* unko,char* chinko) ってときにいちいち移し変えなきゃいけねぇじゃん それか transUnko(CString *unko,char *chinko) 作らなきゃいけねぇじゃん(俺の知識だと) 後、 strXXX系の関数でいい感じにすでにこさえてあるC言語自分ライブラリ使いたいときも面倒 つーか、気軽に文字列型として扱えないところがウンコだね うにこーど?いらねぇってw対応予定ねーよ。マジでw って書いてみたけどさ、 もし簡単にできるにしてもできることがわかりにきぃ ねっとりべっとりしてやがんだこのクラス つかいにくーい!
688 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 23:18:12 ] MFC以外でもCString使いたいという話をよく聞くし、 MFCの中では評判いいクラスだと思う。 慣れないと使いにくいのは確か
689 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 23:24:37 ] >686 CString::GetBuffer 解説 GetBuffer 関数から返されるポインタを使って文字列の内容を変更するときは、 次に他の CString メンバ関数を使う前に、ReleaseBuffer 関数を呼び出す必要があります。
690 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 23:38:10 ] MFCを使うDLLの遅延ロードってNGなのかな? というのも、delayimp.libの中ではAfxLoadLibrary()ではなく、 LoadLibrary()を使っているから、どうなんだろう??
691 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 01:12:30 ] もともと遅延ロードってのは、セグメントを分けてれば Windows がちゃんとやってくれたんだよな。 MFCが自動的にやってくれるようになっただけで。
692 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 03:18:26 ] GetBuffer 関数から返されるポインタを使って文字列の内容を変更するときは、 次に他の CString メンバ関数を使う前に、ReleaseBuffer 関数を呼び出す必要があります。 CString hoge, hoge2; strcpy(hoge.GetBuffer(20), "this is a test."); hoge=""; //クリアしたつもりだけど何故かクリアされていない int length=hoge.GetLength(); //この値は確かにゼロ hoge2=hoge; //でもhogeもhoge2も"this is..."が入る ↑↑↑ここでコンパイル時にエラー出してくれりゃいいのに hoge="AAA"; //これなら上書きされる int length2=hoge.GetLength(); //この値は3 hoge=""; //今度はきちんとクリアされる
693 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 05:58:01 ] >>692 逆だな。ReleaseBuffer()する前にそうやってバッファを変更できないようにするためにGetBuffer()があるんだ。 つまり、fclose()しないでfopen()し直して、ファイルが更新されていないって文句言うようなもんだ。 >>687 少なくとも、レガシーな文字列とCStringを混在させて使うのが間違い。 型が違うのだから、相互にそのまま使えないのは当然だと思うが。 例えばprintf()に渡すように文字列を変更しないならキャストオペレータのお蔭で手間要らずなんだし。 Ex. void printSample(const char * foo) {printf("%s\n", foo);} CString bar = "Bar"; printSample(bar); 文字列を変更する関数は参照でも渡せばいいし。 Ex. void buildString(CString & foo) {foo += foo;} CString bar = "Bar"; buildString(bar);
694 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 11:21:24 ] いまいち、>692 がなにをしたいのか、全くわからん。 C++の事を何か勘違いしてるんじゃないだろうか。
695 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 11:25:02 ] レガシー大好きっ娘に何言っても無駄
696 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 22:15:50 ] ATLやWTLってSTLやBOOST、LOKIと親和性ありますか?
697 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 22:56:29 ] ないよ
698 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 23:29:51 ] STLと親和性高いWin32GUIライブラリがあった気がするんだが思い出せない
699 名前:デフォルトの名無しさん [2007/05/08(火) 23:45:24 ] リストビューオブジェクトに一次元配列を直接セットする方法はないでしょうか? いまはループで回してsetItemでセル一個ずつにセットしてます。 もっと効率がいい方法があればいいのですが。 よろしくお願いします。
700 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 00:47:08 ] >>699 つLVS_OWNERDATA
701 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 01:13:12 ] >>698 Win32 GUI Generics www.torjo.com/win32gui/ sourceforge.net/projects/win32gui/
702 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 14:03:56 ] >>694 >C++の事を何か勘違いしてるんじゃないだろうか。 いやいや、 >↑↑↑ここでコンパイル時にエラー出してくれりゃいいのに なんて書くくらいだから 勘違いとかそういうレベルじゃない。
703 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 15:19:50 ] ATL/STLはSTLと一緒に使える
704 名前:デフォルトの名無しさん [2007/05/09(水) 21:51:00 ] VC6.0で下記のページをみてステータスバーをダイアログにセットしたのですが、 SetTextしても文字が表示されません。 ttp://athomejp.com/goldfish/mfc/dialog/statusbar.asp MSDN等調べてみたのですが、実装方法がいろいろありすぎて、 どれが最適で何をしたらいいのかわかりませんでした。 すみませんが、よろしくお願い致します。
705 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 21:58:18 ] >>701 ちょっと期待してたんだけど、全然更新されてないね…
706 名前:デフォルトの名無しさん [2007/05/13(日) 01:32:28 ] 宣伝なんだが、構いませんね! wiki.livedoor.jp/vipshogi/d/FrontPage ここで、将棋の駒を擬人化するプロジェクトをやってるんだけど、プログラマにソースをもって逃げられてしまいました。 ついては、オープンソースで、新しくプログラムを作ろうと思っています。 MFCを使って作られたプログラムを弄れて、ギャルゲっぽいものに興味があって、協力出来る人がいたら、来てくれませんか。 現行スレは、↓です。 wwwww.2ch.net/test/read.cgi/news4vip/1178980360/ 宜しくお願い致します。
707 名前:デフォルトの名無しさん [2007/05/13(日) 01:41:34 ] >>706 追記です。 現行スレが落ちていたら、↓に書き込みを下さい。 ex14.vip2ch.com/test/read.cgi/part4vip/1178465966/
708 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 02:10:27 ] >>706 少しはまともな奴がいるっぽいけど 雑魚ばっかで話にならない 所詮妄想ばっかり先行してる烏合の衆か。 将棋部分に興味ないとかまったくわかんないとかレスが出るだけで俺は参加したくない。 馬鹿じゃねぇの 突破口だけいうと フリーで将棋プログラム公開してる人に頼み込んで 画像表示部分だけちょいっと弄らせてもらって好きな絵表示できるようにしてもらったほうが ナンボか可能性ある。
709 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 02:39:52 ] >>708 どこを見たのか分からんが結構な物言いだな、特に前半 ちらっと覗いてみたが、そんなレスはなかったと思うが
710 名前:デフォルトの名無しさん [2007/05/13(日) 03:27:34 ] >>709 だいたいこの状況じゃ 一番苦しいのってまちがいなくメインプログラマーでしょ? 絶対やんねぇよ ゲーム製作をなめてる 絵のことしか興味ないならビューワーでも作ってろっての 好き勝手要望出すだけの立場の奴等なんかプログラマーは殺意しか湧かない ゲーム製作現場だって金もらえるからしょうがなく仕事してるのがプログラマーだ この状況でソフト作ったらまちがいなくすべて俺の手柄だと俺だったら思うね。ていうか間違いねーよ。 それなのにオープンソースにします?はぁ?ふざけろ だからさ、こういうのやるつもりなら企画をする人間が間違いなくメインプログラマーを張れる人間でなければ絶対に頓挫する ゲーム製作で一番大変なのはまちがいなくプログラマーだ 実際身動きとれないでしょ? どういうシステムにしてどういう形のデータが必要になるのか? プログラマーがいなくてもここまではできますっていう部分あるか? 欠片も浮かばねーだろ?一歩も身動きがとれないでしょ?
711 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 04:12:48 ] うん、しかも金の流れが気になるー 偉そうにリーダー気取ってる奴の懐にいくらか入ってんじゃねーの? ブログとも繋がってるしな
712 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 06:21:48 ] >Q、バグ多すぎってレベルじゃねーぞ!! > A、バグ報告は多ければ多いほど、プログラム修正の参考になります。 なりません。
713 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 08:30:02 ] 手伝うどころか、優越感を得るための突っ込み先になってるな 大人気ないぜ
714 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 08:31:06 ] >>711 え、どこに繋がってる?
715 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 12:30:42 ] >>713 興味が先行してうっかりこれのメインプログラマーになっちゃった奴が可哀想だなと
716 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 14:10:01 ] VC++ 2005で開発を行っています。 CListCtrlで「大きいアイコン」表示をした時、スクロールの方向はどうしても、横スクロールになってしまいますが、 これを縦スクロールに変更したいと思っています。 どうやれば、縦スクロールに変わるのでしょうか。 よろしくお願いします。
717 名前:デフォルトの名無しさん [2007/05/13(日) 14:43:03 ] くだすれVisual C++(超初心者用)その4 pc11.2ch.net/test/read.cgi/tech/1164787254/946-951 から引っ越してきました。よろしくお願いします。 VS2005のMFCです。 CMainFramのID_FILE_NEWからOnFileNew関数を追加しました。 この関数で必要な処理の後、追加前の本来の処理を呼びだすか、 同等の処理を行いたいのですが方法がわかりません。その方法を教えてください。
718 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 14:44:14 ] >717 馬鹿には使えないからあきらめましょう
719 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 14:47:10 ] 教えるだけ無駄だな
720 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 15:33:57 ] MFCに嫌気がさした人の数→ pc11.2ch.net/test/read.cgi/tech/1059196520/
721 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 16:12:08 ] >717 OnFileNewを呼ぶ
722 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 16:12:30 ] >>717 どちらかというと、CDocument::OnNewDocumentでどうにかすべきじゃね?
723 名前:717 mailto:sage [2007/05/13(日) 16:19:03 ] とりあえず解決しました。 CMainFrameにメッセージを割りあてたのが間違いでした。 CWinAppにプロテクトのOnFileNewがあってこれがデフォルトの処理のようです。 CxxAppに割り当てて、もとからあった ON_COMMAND(ID_FILE_NEW, &CWinApp::OnFileNew)を削除したら目的の動作になりました。 OnFileNewがプロテクトメンバだったので無いとか呼べないとか思ってしまったようです。
724 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 16:29:45 ] >>715 なるほど、このスレの住人に対する優越感だったってわけか
725 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 16:43:45 ] なんかよくわからんこと言ってるけどそのwiki誰に金入ってるかわからんぞ
726 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 16:50:27 ] >>725 アフィってこと? そんな感じに見えないんだけど……。
727 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 17:07:40 ] 可哀想だと思う事が優越感だって、わからんのかね
728 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 17:49:34 ] >>726 じゃあ、稼がせてやったらいいよw
729 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 18:18:01 ] >>728 質問に答えないで笑うだけとは、お前、アフォにしか見えんな そんなに貶めたいなら、向こうで文句言ってくればいいだろうに こっちに問題を持ち込むなよ
730 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 18:22:59 ] >>729 そのレスを>>706 に付けずに俺に言う辺り、お前も相当頭おかしいだろw
731 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 18:27:15 ] >>730 反応するよりましだと思うが まあいいや、お前がいなくなったらまたこよう
732 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 18:32:43 ] なんか、大変な事になってる…… 俺はただ単に、アフィしてるような場所ならいかないけど、そうじゃないなら手伝っても良いかなって思っただけなんだけど
733 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 18:50:05 ] だからそういう話はあっちでやってくれ頼む
734 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 20:27:54 ] >>716 お願いします。
735 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 23:10:24 ] >>716 LVS_ALIGNTOP。 プロパティウィンドウなら、表示-Alignment-Topを選択。
736 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 00:31:26 ] >>735 ありがとうございます、一発で解決しました。
737 名前:デフォルトの名無しさん [2007/05/17(木) 01:56:51 ] CMenu の TrackPopupMenu でポップアップ表示状態で処理がいったん停止している状態のプログラムがあるとします これに対して外部からの通信などによって破棄処理がキックされたとします すると TrackPopupMenu の後の処理が終わっていないためなのかエラーとなって不正終了してしまいます これを防ぐにはどうしたら良いでしょうか? (≒ OnDestroy でポップアップを正常に終了させるにはどうしたら良いでしょうか?) ( つまり TrackPopupMenu の後の処理を実行させるということです) VK_ESCAPE をポップアップの親ウィンドウに SendMessage することなどを考え付いたのですが、 それでもうまくいかずにほとほと困っております 何かご存知でしたら教えてくださいm(_ _)m
738 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 18:27:58 BE:27175027-2BP(222)] >ポップアップ表示状態で処理がいったん停止している状態 にならないようにする=時間のかかる処理の合間にメッセージループを回すようにする
739 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 18:39:02 ] >>738 TrackPopupMenu の動作を知らんのか
740 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 00:15:39 ] >>737 >TrackPopupMenu の動作云々の前にお前が何をしたいのかが解らんなw
741 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 10:29:32 ] >>737 EndMenu
742 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 12:17:31 ] CStringのFormatMessageはFORMAT_MESSAGE_FROM_SYSTEM使えないですか?
743 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 12:43:18 ] CString::FormatMessageのソース見ればわかる
744 名前:デフォルトの名無しさん [2007/05/22(火) 00:53:15 ] >>741 情報ありがとうございます ところで、その関数はどのように使用すればよろしいですか? インターネットで検索してみたのですが、適切な情報が見つからなかったのですが……
745 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 01:55:02 ] >>744 ttp://msdn2.microsoft.com/en-us/library/ms647637.aspx
746 名前:デフォルトの名無しさん [2007/05/22(火) 22:37:22 ] >>745 ありがとうございます 英語ですか…… 中学の時英語は常に1or2だった自分には辛いですねorz
747 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 05:34:15 ] Win32APIに(*´Д`)ハァハァできるようになれば、すぐ読めるようになるよ♪ マニュアル英文だから変な構文も使われていないし、まともに日本語訳する必要も無い。
748 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 14:33:09 ] CMainFrame::OnInitMenuPopup()で メニューのポップアップ内を動的に作ろうとしてるんですけど、 このポップアップ項目の種類(たとえば「お気に入り」とか)は どうやって調べればよいのでしょうか。 ポップアップ項目自身にはIDは付けられませんよね。 メニューの複数箇所やコンテキストメニューにも 同じ「お気に入り」ポップアップを置きたいので、 OnInitMenuPopup()の中で「お気に入りかどうか」を判断したいのですが。
749 名前:デフォルトの名無しさん [2007/05/25(金) 18:33:49 ] 誘導されてきました。 通信受信プログラムで受信データをエディットコントロール(複数行表示)に表示しているのですが、 以下のコードでは、エディットコントロールに文字列を追加する際に必ずスクロールされてしまいます。 スクロールされない方法を教えてください。 LineScrollで戻すと、1行書くごとに「下へスクロール→上へスクロール」となり、上下にスクロールが発生してしまい とても見づらくなってしまいます。 「スクロールなし」でエディットコントロールに文字列を追加できないものでしょうか? int iLen = edit->GetWindowTextLength(); edit->SetSel(iLen, iLen); edit->ReplaceSel("Hello\n"); WinXP & Visual Studio 2003 & mfc7です。
750 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 18:36:41 ] >>749 pc11.2ch.net/test/read.cgi/tech/1178432985/594 の名前欄は調べた?
751 名前:デフォルトの名無しさん [2007/05/25(金) 19:09:59 ] >>750 そ、そんなところに... (^^;) やってみます。
752 名前:印刷が遅いのですが mailto:sage [2007/05/26(土) 12:43:26 ] ただいま、印刷のテストをしてます。 ネットで見つけたサンプルコードで、印刷はできたのですが、 ものすごく遅いのです。 3000*3000の画像をプリントするのに、1時間かかります! WindowsXPですが、他のアプリから印刷する場合は数分で印刷できるので、 プリンタやOSやドライバの問題ではなく、プログラムの仕方の問題だと思うのですが、 単純にプリンタ用のpDCに画像を送るだけでは速くはならないのでしょうか?
753 名前:印刷が遅いのですが mailto:sage [2007/05/26(土) 12:51:16 ] 以下は、ネットで見つけたサンプルコードで、このままでパターンが印字されます。 〜View::OnFilePrint(){ CPrintDialog myPtDlg(FALSE); HDC myPtDC; CDC myDC; DOCINFO myDocInfo; if(myPtDlg.DoModal() == IDOK){ myPtDC = myPtDlg.GetPrinterDC(); myDC.Attach(myPtDC); myDocInfo.cbSize = sizeof(myDocInfo); myDocInfo.lpszDocName = NULL; myDocInfo.lpszOutput = NULL; myDocInfo.lpszDatatype = NULL; myDocInfo.fwType = 0; myDC.StartDoc(&myDocInfo); CDC* pDC=GetDC(); myDC.StartPage(); for(y=0;y<3000;y++){ for(x=0;x<3000;x1++){ myDC.FillSolidRect(x,y,1,1,RGB(x,y,+y)); } } myDC.EndPage(); myDC.EndDoc(); ReleaseDC(pDC); ::DeleteDC(myPtDC); } }
754 名前:印刷が遅いのですが mailto:sage [2007/05/26(土) 13:06:10 ] すみません>>753 の訂正です。CDC* pDC=GetDC(); は不用でした。 >>753 のコードをいじれば画像も印刷できるのですが、遅いです。 たとえば、下のように記述すると速いのですが、 for(y=0;y<30;y++){ for(x=0;x<30;x1++){ myDC.FillSolidRect(x,y,100,100,RGB(x,y,x+y)); } } 大きい画像の場合は、1ドットずつ描くしかないですよね?
755 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 14:11:23 ] いいえ
756 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 15:04:14 ] >>754 なんで大きい画像だと1どっとずつやるしかないの?
757 名前:印刷が遅いのですが mailto:sage [2007/05/26(土) 15:48:38 ] >>756 1ドットずつやらないで済む方法があれば、それを知りたいわけです。
758 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 16:25:45 ] 頭悪いな
759 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 16:59:17 ] >>757 小さい画像は1ドットずつじゃないの?
760 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 17:00:51 ] ドットインパクトプリンタの話はスレ違いだぞ
761 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 17:04:24 ] 試しに3000*3000のビットマップ印刷してみれば?
762 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 17:08:29 ] >>757 BitBltとかいう関数ねぇ?
763 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 17:09:47 ] >>760 みたとこアホの子なので問題の切り分けなんて無理でしょう
764 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 17:28:15 ] 1ドット書くのにFillSolidRect使うアホ
765 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 17:41:42 ] もうちょっと頭使ってもバチ当らないよねw
766 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 17:59:20 ] 3Dを使うゲームよりドット絵のゲームが好きだ!!!!
767 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 18:13:36 ] >>766 ∧_∧ ( ・ω・) <俺にそんなこと言われてもね ( MFC ) ./ つ ( / ̄∪ ∧_∧ ( ・ω・) <どっちかっていうと俺の出番じゃね? ( GDI+) ./ つ ( / ̄∪ ∧_∧ ( ・ω・) <いやいや俺だろ (DirectX) ./ つ ( / ̄∪
768 名前:印刷が遅いのですが mailto:sage [2007/05/26(土) 18:15:28 ] >>755-766 そんなことを言ってる貴方たちも、本当は知らないのでしょう? それとも印刷に関しては企業秘密かなんかですか? 自分が苦心して見つけた方法を、簡単に他人に話したくない気持ちはわかりますよ。 一緒に問題を解決しようという気持ちはないわけですか? 自分が知ってる方法が、最善だという確信があるわけですか? BitBltを使う方法はもちろん知ってます。 ただ、それだと若干手順が増えますのでね。
769 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 18:22:16 ] >>768 だから俺がBitBltって教えてやったじゃんw
770 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 18:22:16 ] おぬしなにやつじゃ
771 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 18:25:19 ] >>768 何様だよお前w BitBlt抱えて空へ羽ばたけよw
772 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 18:26:18 ] >そんなことを言ってる貴方たちも、本当は知らないのでしょう? 適材適所なので、あんたの求めるケースの適切解は内容が判らない限り説明しようが無い。 >それとも印刷に関しては企業秘密かなんかですか? 企業秘密にならない範囲でなら説明するに吝かではない。 >自分が苦心して見つけた方法を、簡単に他人に話したくない気持ちはわかりますよ。 勝手に判られても困る。寧ろ、それが判ると言い張るならもう少し言葉を選べ。 >一緒に問題を解決しようという気持ちはないわけですか? ないな。 >自分が知ってる方法が、最善だという確信があるわけですか? いいや、あくまでも適材適所。 >BitBltを使う方法はもちろん知ってます。 >ただ、それだと若干手順が増えますのでね。 増えるから何? 手順が増えてもそれが適切解なら選択すべきでは? #適切解かどうかは知らんが。
773 名前:印刷が遅いのですが mailto:sage [2007/05/26(土) 18:42:00 ] >>772 >>ただ、それだと若干手順が増えますのでね。 >増えるから何? 手順が増えてもそれが適切解なら選択すべきでは? そうですか。 だらだら、手順が増えていいなら、どんなこともできますよ。 一応、なるべく、簡潔なコードで、よりよい効果を期待してプログラムをしてるわけで、 コードの増えるBitBlt以外にも方法があるかどうか知りたかったのですが、 BitBltが最善なら、それで行くことにしますよ。
774 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 18:46:19 ] ダメだこりゃ
775 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 19:09:17 ] 馬鹿な・・騙りじゃなかったのか
776 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 19:15:19 ] apiを無駄に3000*3000回呼んでも見た目が大事だよな
777 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 19:23:20 ] >>773 おお、成長したじゃんw 1ドット書くのにFillSolidRect使ってたアホの言葉とは思えないねw
778 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 20:03:39 ] >>777 sylphys.ddo.jp/upld2nd/manani2/src/1180177396812.jpg
779 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 23:43:50 ] まあ、昔は大きな画像をプリンタDCに BitBlt出来なかったって事はある。 だから、ひとつひとつFillRectしたような実装や、大きいBitmapを小さく小分けしてBltしたりとか、 そりゃ小技を使ったよ。 それ、いまでも、ダメなのかな。
780 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 00:05:18 ] いくらか小分けにすればいいだけであって1ドットずつはやらんよなw
781 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 00:29:43 ] もっと簡潔なやり方があるに違いない病だな
782 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 07:14:12 ] WinMainの記述はどこのフォルダのなんと言うファイルに書かれていますか?
783 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 07:42:55 ] >>782 君の心の中に・・・
784 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 09:22:51 ] appcore.cpp(96): // in non-running state until WinMain appmodul.cpp(19): // export WinMain to force linkage to this module appmodul.cpp(21): extern int AFXAPI AfxWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, appmodul.cpp(25): _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, appmodul.cpp(28): // call shared/exported WinMain appmodul.cpp(29): return AfxWinMain(hInstance, hPrevInstance, lpCmdLine, nCmdShow); appterm.cpp(27): // Standard cleanup called by WinMain and AfxAbort makefile(402): $D\winmain.obj $D\barcore.obj $D\bartool.obj $D\bardlg.obj \ wincore.cpp(3553): // Standard init called by WinMain winfrm.cpp(762): nCmdShow = pApp->m_nCmdShow; // use the parameter from WinMain winmain.cpp(18): // Standard WinMain implementation winmain.cpp(21): int AFXAPI AfxWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, alpha\mfc42.prf(961): ?AfxWinMain@@YAHPAUHINSTANCE__@@0PADH@Z alpha\mfc42u.prf(761): ?AfxWinMain@@YAHPAUHINSTANCE__@@0PAGH@Z intel\mfc42.def(1341): ?AfxWinMain@@YGHPAUHINSTANCE__@@0PADH@Z @ 1576 NONAME intel\mfc42.prf(466): ?AfxWinMain@@YGHPAUHINSTANCE__@@0PADH@Z intel\mfc42d.def(949): ?AfxWinMain@@YGHPAUHINSTANCE__@@0PADH@Z @ 1190 NONAME intel\mfc42u.def(1334): ?AfxWinMain@@YGHPAUHINSTANCE__@@0PAGH@Z @ 1569 NONAME intel\mfc42u.prf(321): ?AfxWinMain@@YGHPAUHINSTANCE__@@0PAGH@Z intel\mfc42ud.def(946): ?AfxWinMain@@YGHPAUHINSTANCE__@@0PAGH@Z @ 1187 NONAME