■MFC相談室 mfc17d.dll■
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/11/21(火) 10:38:31前スレ
■MFC相談室 mfc16d.dll■
http://pc8.2ch.net/test/read.cgi/tech/1146117893/
0132デフォルトの名無しさん
2006/12/14(木) 07:02:17そういうときもある。
0133デフォルトの名無しさん
2006/12/14(木) 09:06:58ダイアログベース単位はフォントの幅が元になってる。
だからダイアログのフォントを変えると
コントロールのサイズと位置もフォントに比例して変わる。
このフォントサイズはダイアログを作る時に指定した
ダイアログボックステンプレートに定義されている。
ダイアログを作った後でフォントを変えても
コントロールは既に作成されてしまっているから
コントロールのサイズと位置は後で指定したフォントには影響されない。
以上ここまでMFCに限らずWin32でも同様
プロパティシートがリソースで定義されたダイアログのフォントを無視しているということは
たぶんメモリ上に読み込んだダイアログボックステンプレートのフォントを書き換えてから
その変更を加えたダイアログボックステンプレートでダイアログを作っているのではないか
と推測されるけど、あとはCPropertyPageのソース等を読めばわかることだから省略
0134デフォルトの名無しさん
2006/12/14(木) 10:51:38☆ チン 〃 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄
ヽ ___\(\・∀・)< MDIタブ実装方法 まだー?
\_/⊂ ⊂_)_ \_______
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄/|
|  ̄  ̄ ̄ ̄ ̄ ̄ ̄:| :|
| .|/
0135デフォルトの名無しさん
2006/12/14(木) 11:22:300136デフォルトの名無しさん
2006/12/14(木) 11:43:330137デフォルトの名無しさん
2006/12/14(木) 13:05:500138デフォルトの名無しさん
2006/12/16(土) 17:26:02SetCheck()かと思ったのですが違うようでした。。
0139デフォルトの名無しさん
2006/12/16(土) 17:46:32基本クラスのメンバEnableWindowで
0140デフォルトの名無しさん
2006/12/16(土) 18:12:46やってみます。ありがとうございました。
0141デフォルトの名無しさん
2006/12/17(日) 19:17:510142デフォルトの名無しさん
2006/12/17(日) 19:21:10ツリーリストコントロールって標準で存在しませんか?
存在しない場合はどうすれば使えますか?
MFCで作ったフリーソフトでツリーリストが使われていたので、
何らかの方法でできるのではないかと考えているのですが・・・
ちなみに、今の自分の技術力では自作は無理です
0143デフォルトの名無しさん
2006/12/17(日) 19:25:35MDI子ウィンドウのビュー(フォームビュー)でリストコントロール(CListCtrl)を使っているのですが、
他の子ウィンドウがリスト部分の前に重なった後、リスト部分をクリックしてリストがある子ウィンドウを
アクティブにすると重なっていたリスト部分だけが再描画されません
原因はまったく不明です
どのようにすれば子ウィンドウがアクティブになった時に正常に再描画されるようにできますか?
0144デフォルトの名無しさん
2006/12/17(日) 19:29:21MDI子ウィンドウのビューでリストコントロールを使っているのですが、
子ウィンドウのサイズ変更にあわせてリストのサイズを動的に変更するには
どのようにすれば良いですか?
VC#ではプロパティ画面で簡単に設定できたのですが、
VC++にはないのでとても困っています・・・
以上4つ質問させて頂きました
何かご存知の方は、ご回答をよろしくお願いしますm(_ _)m
0145デフォルトの名無しさん
2006/12/17(日) 19:37:53子ウィンドウのサイズ変更にあわせてリストのサイズを動的に変更する
0146デフォルトの名無しさん
2006/12/17(日) 19:45:000147デフォルトの名無しさん
2006/12/17(日) 19:51:360148デフォルトの名無しさん
2006/12/17(日) 19:53:22普通リードオンリーでできんじゃねぇっけ?
リソースファイルの方の設定に編集できるとかできないとかそういうプロパティあった希ガス。
0149デフォルトの名無しさん
2006/12/17(日) 20:00:56昔、俺がみたのは自力で描画してたのしかみたことないな。
今、どうなってるのかはよくわからん。
0150デフォルトの名無しさん
2006/12/17(日) 21:27:01勉強してないの丸わかりなんだけど
よくリストコントロール表示できたね
どっかからソースぱくってきた?
0151デフォルトの名無しさん
2006/12/17(日) 21:43:340152デフォルトの名無しさん
2006/12/18(月) 01:37:330153デフォルトの名無しさん
2006/12/18(月) 16:59:07点の数は数千を越えていると思うのですが かなり処理に時間がかかります。
自分なりに色々調べたところ SetPixelは遅い ということがわかりました
同時に BitBlt とか 裏画面 などと 高速化に関するワードも出てきましたが
全く分かりませんでした
この言葉で全て解決しようとするのが悪いのですが 初心者です。
しかし、時間が本当に無いので時間をかけて勉強して… ができません。
ちなみに 点は一色です。 SetPixelの遅さを解決する方法で
まだ分かり易いだろう と思う方法を教えていただけませんか?
0154デフォルトの名無しさん
2006/12/18(月) 17:15:420155デフォルトの名無しさん
2006/12/18(月) 17:27:01具体的にはループ回数が3万でそのうちの一部の点を
描画しているので、最大でも3万ですね
1万は越えているかも知れませんが…
時間は3分から5分程度でした。
0156デフォルトの名無しさん
2006/12/18(月) 17:31:20描いても0.1秒ぐらいだったよ。(裏画面とか未使用)
描画以外の部分に時間かかってるんじゃないかな。
0157デフォルトの名無しさん
2006/12/18(月) 17:35:590158デフォルトの名無しさん
2006/12/18(月) 17:39:17ループ回数を増やすと比例関数的に時間も延びたので
てっきりそこが問題だと思っていました。
そうなるとどこに時間がかかっているのか全く分かりませんね…
ランダムウォークさせているのんですが そこか
1024*768もの配列を作って その中身全てを参照(検索)するという作業を
何度かしているのも原因かもしれませんね。
mallocなんかも全く使っていませんし…
ループ回数をこれ以上にするとエラーになり途中で動作が止まってしまうのも
同じ原因から来ているのかも…
しかし ここまでくるとここで相談させてもらう内容ではなくなってしまいますね。
0159デフォルトの名無しさん
2006/12/18(月) 17:42:35それは遅いだろ...
0160デフォルトの名無しさん
2006/12/18(月) 17:57:38>初心者です
>時間が本当に無いので時間をかけて勉強して… ができません。
結論: 無理
0161デフォルトの名無しさん
2006/12/18(月) 17:57:46いちいちSetPixel使うからだよ。
0162デフォルトの名無しさん
2006/12/18(月) 18:01:51まぁ特に考えてたわけではなく、むしろ本当は描画の
様子が分かるように1回1回点を打ちたかったのですが
それができなくて 最後にだけ描画してます。
(点を打つ配列に目印をいれて最後にその部分だけ描画)
結論を言うと そのループ及び巨大な配列の中身を参照するのに
時間がかかってるというわけなんですね・・・
>>160 ってことでFAですかね。
検索の仕方や配列の使用法などを再考してみますね。
こんなくだ質に付き合ってくださってありがとうございました。
0163デフォルトの名無しさん
2006/12/18(月) 18:13:410164デフォルトの名無しさん
2006/12/18(月) 18:17:040165デフォルトの名無しさん
2006/12/18(月) 18:20:290か1を直接書き込めばいいじゃない。
その後BMPに変換すれば?
0166デフォルトの名無しさん
2006/12/18(月) 18:54:300167デフォルトの名無しさん
2006/12/18(月) 19:57:42遅いというのは一瞬じゃないということ
自分で試さずに質問するのはやめてほしい。
0168デフォルトの名無しさん
2006/12/19(火) 00:26:28そういう時は、SetPixelだけをコメントアウトしてみる。
そうすれば、それが犯人かどうか分かる。
0169デフォルトの名無しさん
2006/12/19(火) 00:53:12130万pixelなんて問題にならないぐらい強烈に早いね。
今後使う機会があるかは微妙だけど勉強になったよ。
>>170 スレ違い房乙
0170153です
2006/12/19(火) 00:55:54>>163
確かにループには入ってますね
でもループもしないで1回だけ なんて できるんですか
>>164
そのような方法がある事は調べていたときにわかったんですが
なかなか理解できなかったんですよね
>>165
今は理解できないんで ちょっと考えて見ます^^;
ありがとうございます。
>>166
ですね。 158で自分でも言ってますが。 すみませんでした。
>>167
そうなんですか。 >遅いというのは一瞬じゃない そうですね
自分で試さずに とは 何のことでしょう?
確かに SetPixelに時間がかかっていたかどうかは
自分で画面全体にSetPixelで塗りつぶしてみれば分かったんですね…
そうだ と思い込んでしまったので思いつきませんでした ごめんなさい。
0171デフォルトの名無しさん
2006/12/19(火) 01:15:49そんな方法もありますね 次回から参考にします!
>>169
スレ汚しすみませんでした。
0172デフォルトの名無しさん
2006/12/19(火) 02:51:30つーか、普通にSetPixelとGetPixelが遅い。
GDI+を使っているならこれで速くなるっぽいことが書いてある。
http://junki.lix.jp/csgr/002ColorDataAccess1.htm
0173デフォルトの名無しさん
2006/12/19(火) 08:21:41> 1万は越えているかも知れませんが…
>
> 時間は3分から5分程度でした。
描画しているのは最大でも3万で時間は3分から5分
0174デフォルトの名無しさん
2006/12/19(火) 14:48:18そこに描画してBitBltするという、昔ながらのやり方を
試すのが今後のためにいいと思うが。
0176デフォルトの名無しさん
2006/12/19(火) 16:20:570177デフォルトの名無しさん
2006/12/19(火) 23:24:44よろしくおながいします
0178デフォルトの名無しさん
2006/12/19(火) 23:36:110179デフォルトの名無しさん
2006/12/19(火) 23:58:470180デフォルトの名無しさん
2006/12/20(水) 10:36:29存在しないから作るんですよ
0181デフォルトの名無しさん
2006/12/20(水) 10:49:580182デフォルトの名無しさん
2006/12/20(水) 11:18:15>>142 LVITEM::iIndent'
>>143 WS_CLIPSIBLINGS
0183デフォルトの名無しさん
2006/12/20(水) 12:37:11MFCを使わず、まったくゼロから MDIタブを作るのならそれほど難しくはない
と混じれ酢してみる
0184デフォルトの名無しさん
2006/12/20(水) 13:08:570185デフォルトの名無しさん
2006/12/20(水) 13:18:050186デフォルトの名無しさん
2006/12/21(木) 01:17:540187デフォルトの名無しさん
2006/12/21(木) 10:24:22そのためには void CMainFrame::RecalcLayout(BOOL bNotify) をオーバライドすればいいぞ
どうオーバライドするかは自分で調べろ
0188デフォルトの名無しさん
2006/12/23(土) 01:28:040189デフォルトの名無しさん
2006/12/23(土) 14:47:20XPログオン時のユーザ名とパスワードが正しいかどうかを、開発したプログラム上で
確認したいと思っているのですが、どのようにすればよろしいでしょうか。
0190デフォルトの名無しさん
2006/12/23(土) 14:51:25ここはライブラリの専用スレですよ
0191デフォルトの名無しさん
2006/12/23(土) 14:55:43スイマセン、他スレで聞いてきます。
0192デフォルトの名無しさん
2006/12/23(土) 15:26:31どうすれば取得できるでしょうか?
0193デフォルトの名無しさん
2006/12/23(土) 15:35:000194デフォルトの名無しさん
2006/12/23(土) 15:42:35色々調べてみたのですが、GetWindowLongの使い方がいまいちよく分からないです。。
具体的にどう使えばいいか、ご教授願えますでしょうか(><
0195デフォルトの名無しさん
2006/12/23(土) 15:49:270196デフォルトの名無しさん
2006/12/23(土) 15:56:33LONG lStyle = ::GetWindowLong(m_hWnd, GWL_STYLE);
で取れると思うんですけど、そこからどうすればいいか分からないんです。
どこを見れば分かりますか?
0197デフォルトの名無しさん
2006/12/23(土) 16:04:120198デフォルトの名無しさん
2006/12/23(土) 16:07:050199デフォルトの名無しさん
2006/12/23(土) 16:20:22MFC以前の問題ですか・・・
もっとよく調べてきます。
0200デフォルトの名無しさん
2006/12/23(土) 23:28:320201デフォルトの名無しさん
2006/12/24(日) 22:58:19現在、ダイアログAのボタンを押すと、ダイアログAを隠して
ダイアログBをモードレス表示し、
表示されたダイアログBのボタンを押すと、ダイアログBを隠して、
ダイアログAをモードレス表示するツールを作成しております。
そこで、ダイアログAのボタンを押すと、ダイアログAを隠して
ダイアログBをモードレスで表示することは出来たのですが
モードレスで開いたダイアログBのボタンを押すと、
ダイアログAをモードレスで開く方法がわかりません。
教えてください。
よろしくお願いします。
0202デフォルトの名無しさん
2006/12/24(日) 23:20:220203デフォルトの名無しさん
2006/12/25(月) 05:05:35エスパー値が低いのに初心者の質問に答えるな。話がややこしくなる。
要は循環参照になっちまってコンパイルできねぇんだろ?
つまり、
メインウィンドウ→ダイアログ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
0204デフォルトの名無しさん
2006/12/25(月) 08:32:31あれは表に出ない親ウインドウがあってそこから2つのダイアログを切り替えてる
しまった、ここまで書いて全然MFCと関係ないのに気がついた
0205デフォルトの名無しさん
2006/12/25(月) 14:39:50MFCなら仮想親ダイアログにメンバでABダイアログがぶら下がっているだろうから
ダイアログからは親のメンバを呼ぶだけでいい。
>>204
ほ〜らMFCらしくなったでしょw
0206デフォルトの名無しさん
2006/12/25(月) 20:24:540207デフォルトの名無しさん
2006/12/25(月) 20:25:25おまいらちゃんとMFCがわかっているのか?
0208デフォルトの名無しさん
2006/12/25(月) 21:03:39行くっつぅか元々>192からしてMFCと・・・
0209デフォルトの名無しさん
2006/12/25(月) 21:27:26と誰かが言ってた。
0210デフォルトの名無しさん
2006/12/25(月) 21:50:49プロパティシートでSendMessageToDescendants()を使用し、
各ページのフォントサイズを変更しているのですが
なぜかリストコントロール内のフォントサイズだけ変更されません。
(ヘッダーは変更されていました。)
SendMessageToDescendants()を使用せず、リストコントロール
のSetFont()を使用すれば変更できるのですが、リストコントロール
に合わせてすべてのページですべてのコントロールにSetFontをするのは
避けたいです。なにかいい方法はありませんでしょうか?
0211デフォルトの名無しさん
2006/12/25(月) 22:06:20この前の質問どうなったっけ?
0212デフォルトの名無しさん
2006/12/25(月) 22:23:31今までリストコントロールを利用していないシートの
コーディングを行っていたのでてっきりうまく変更されていた
ものとばかり思っていたのですが、リストにデータを挿入して
表示したところリスト内のサイズだけ小さかったので
再度質問させていただきました。
0213デフォルトの名無しさん
2006/12/26(火) 01:30:222. 知ってる人が専門用語をあまり使わずに解説
3. 理解できない別の知ったか初心者が 「MFCと関係ない」
4. 質問者が3にむかついて失踪
最近この流れが多い。3の人は1年ぐらいROMって欲しい。
0214デフォルトの名無しさん
2006/12/26(火) 08:50:07C/C++を一通り勉強して、mfcでビュッフォンの針のシミュレーションプログラムを
作ろうと思ってるんですが、ダイアログベースで、ピクチャボックスに描画しようとして
も上手くいきません。CClient の矩形をCRectで取り
bottomとrightを数値で覚えさして、シミュレーション用の横棒を引くため
bottomを横棒の数で割り、movetoとlinetoでそれぞれの位置に線を引いたのですが
(用は、数値が1ならクライアント領域が二等分されるようになり
数値が2ならクライアント領域が三等分されるような形)
上手く等分されません。
なにか良い方法か、サンプルのあるページがあれば教えてください。
0215デフォルトの名無しさん
2006/12/26(火) 08:57:160216デフォルトの名無しさん
2006/12/26(火) 08:59:080217デフォルトの名無しさん
2006/12/26(火) 09:35:120218デフォルトの名無しさん
2006/12/26(火) 09:58:290219デフォルトの名無しさん
2006/12/26(火) 18:47:19子フレームを最大化した状態でドキュメントを切り替えると、最大化されない子フレームウィンドウ枠が
一瞬描画されてしまいます。
これを防ぐにはどうしたらいいのでしょうか?
0220デフォルトの名無しさん
2006/12/26(火) 19:35:300221デフォルトの名無しさん
2006/12/26(火) 19:57:59これは いったい誰がだしているの?
0222デフォルトの名無しさん
2006/12/26(火) 21:20:180223デフォルトの名無しさん
2006/12/27(水) 17:33:42アイテムを右クリックしたときにポップアップメニューを
表示させてそのアイテムにのみ処理をしたいのですが
どうすればいいのでしょうか
0224デフォルトの名無しさん
2006/12/27(水) 18:50:12ここで質問しなきゃわからないような何か特殊な問題あったか?
0225デフォルトの名無しさん
2006/12/27(水) 18:56:59リストビューで右クリックのイベントをとるまでいけたんですが
メニューの表示や選ばれたアイテムの取得方法がわかりません
簡単なら教えてくださいお願いします
0226225
2006/12/27(水) 18:57:470227デフォルトの名無しさん
2006/12/27(水) 19:06:130228デフォルトの名無しさん
2006/12/27(水) 19:20:28あまりにも懐かしすぎて、過去のソース見ないと思いだせんがNM_RCLICKとかあったと思う
0229219
2006/12/27(水) 19:21:19を使って、子フレームを切り替えているのだが、このメソッドをコールすると
一瞬現在アクティブなウィンドウに WM_MDIACTIVATE が送られ、
その前後に子フレームが再描画されるとこまでわかった
どうしたら子フレームの再描画をとめられるんだ?
誰か助けて。おねがい
0230デフォルトの名無しさん
2006/12/27(水) 19:37:150231デフォルトの名無しさん
2006/12/27(水) 19:42:24普通のMDIではそうならないなら普通のMDIと同じにすればいい
■ このスレッドは過去ログ倉庫に格納されています