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

■MFC相談室 mfc17d.dll■

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/11/21(火) 10:38:31
Microsoft Foundation Classライブラリ専用スレです。

前スレ
■MFC相談室 mfc16d.dll■
http://pc8.2ch.net/test/read.cgi/tech/1146117893/
0002デフォルトの名無しさん2006/11/21(火) 10:54:08
2GET
0003デフォルトの名無しさん2006/11/21(火) 14:30:37
意外と使えるCMemFile
>>1乙
0004デフォルトの名無しさん2006/11/21(火) 23:02:46
>>3
> 意外と使えるCMemFile

その CMemFileの内容を、ディスクに保存せずに、CHtmlView で
表示出来ないかなぁ。

0005デフォルトの名無しさん2006/11/21(火) 23:38:42
質問です。
今SDIアプリケーションで開発しているのですが
メインフレームのタイトルが
xxxxx - xxxxxxxxxx
のようにハイフンがついております。
このハイフンを消すことは可能でしょうか?
0006デフォルトの名無しさん2006/11/22(水) 00:11:42
リソースのString TableのIDR_MAINFRAMの値が
〜\n\n〜\n\n\n〜\n〜
となっていると思うけれど、このうちのどれかの〜がメインフレームのタイトルになっていて、そのハイフンを消せばタイトルからハイフン消える。
000752006/11/22(水) 10:36:07
>>6
ありがとうございます。消えました。
0008デフォルトの名無しさんNGNG?2BP(200)
>>4
CHtmlView::GetHtmlDocumentでhtmlドキュメントのIDispatchを取得して、
IHTMLDocument2::writeで注入。
0009デフォルトの名無しさん2006/11/22(水) 22:05:49
MFCを勉強するのに定評のある本を教えて下さい。お願いします
できれば2、3冊くらい
0010デフォルトの名無しさん2006/11/22(水) 22:58:59
スレ違い
0011デフォルトの名無しさん2006/11/23(木) 02:55:20
>>10
いや、そうは思わんけど・・・w
0012デフォルトの名無しさん2006/11/23(木) 06:21:35
シルトの標準講座MFC
      ↓
MFCのライブラリのソース読む

MFCはこれぐらいで十分
あとはwin32apiでもやった方がいい
0013デフォルトの名無しさん2006/11/23(木) 15:28:54
MFCを使ってMDIプログラムを作っています。
子画面の作成方法は分かったのですが、
それにダイアログのようにコントロールを貼り付ける方法が分かりません・・・
CFormViewを土台にクラスを作ると子画面にできないですし、
CMDIChildWndを土台にクラスを作るとコントロールが使えません
両方の良いとこ取りをしたようなクラスはありませんか?
もしくは子画面でコントロールを使う方法を知りませんか?
(上は標準作成の子画面ではなく自作するクラスの方の話です)
0014デフォルトの名無しさん2006/11/23(木) 15:36:46
MDIで普通にコントロール使えるだろ
0015デフォルトの名無しさん2006/11/23(木) 16:03:54
>>14
色々と試してみたのですが無理でした
クラスの新規作成でCMDIChildWndを継承したクラスを作り、
グローバル関数でインスタンス生成して呼び出していますが、
表示されないですし、コントロールも貼り付けられませんです
0016デフォルトの名無しさん2006/11/23(木) 16:36:10
ウイザードでMDIにしたら普通にできたけど
0017デフォルトの名無しさん2006/11/23(木) 16:41:34
>>16
標準で作られる子画面ではなくてですか?
0018デフォルトの名無しさん2006/11/23(木) 16:45:09
sdiでフォームビューにするのと同じ
初心者向けの入門書でも読んどけ
0019デフォルトの名無しさん2006/11/23(木) 17:44:38
>>13
通常はウィザードで選択したViewで表示を行い、特定のDocumentを扱う場合のみ
新しいView(FormView派生)で表示したいってことかな?
002092006/11/23(木) 18:19:49
>>12
�dクス!さっそくやってみます。
0021デフォルトの名無しさん2006/11/23(木) 19:26:44
ドキュメントテンプレート追加したら
任意のviewで表示できるけど
0022デフォルトの名無しさん2006/11/23(木) 19:58:58
>>13
FormViewのMDI子ウィンドウはウィザードで普通にできるけれど、
もしかして、スプリッタやろうとしてるんじゃないのかな?
それならウィザードじゃ、FormViewはじかれて、できない。
FormViewの派生自作し、CreateStaticでスプリッタ作らないと。
Doc2つ作ってそれぞれにDoc-View割り付ける方法もあるらしいけれど、
オーソドックスに行くなら、この例ならTreeViewをウィザード使ってDoc-View使って、FormViewはDoc-View使わず、他のクラスからのアクセスはFormViewのオブジェクト宣言。
0023222006/11/23(木) 20:02:04
それと、FormViewのスプリッタをウィザードが認めてないのは、
作ってみればわかるけど、スクロールバーでボタンなどのコントロールが隠れたりして、
ありえないというか、まずチマタじゃ見ないFormになる。
蛇流ゆえに作っていくと色々とワナがあるよ。
0024222006/11/23(木) 20:12:08
左ツリーで右ブラウザ上のFORMみたいなことをやりたいなら、
CVIEWで作って、CMDIChildWndのハンドル取得して、オーナードローがいいよ。
DDX使えなくて、MFCの恩恵は使えないけど。
0025デフォルトの名無しさん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)で表示状態に戻ってしまいます…。
0026デフォルトの名無しさん2006/11/23(木) 20:47:56
>>25
非表示なものにSetRedraw()やInvalidate()をする意味は?
非表示の間は描画処理は必要ないでしょ。
0027デフォルトの名無しさん2006/11/23(木) 20:48:11
>>25
SetRedrawの実際の処理WM_SETREDRAWをMSDNで見ても何も書いてないね。
m_button1の表示状態見て処理するしかないんじゃない?
0028252006/11/23(木) 21:30:17
>>26
>>27
非表示なものにSetRedrawをするわけではなくて、
SetRedrawの最中に、更新結果によっては非表示にする
ということをやりたかったのです。

SetRedraw(FALSE)をした以上は、
最後は必ずSetRedraw(TRUE)を呼ばないとダメですよねぇ。
0029デフォルトの名無しさん2006/11/23(木) 21:31:21
this->SetRedraw(FALSE);
this->SetRedraw(TRUE);
this->Invalidate();
もしくは
SetRedraw(FALSE);
SetRedraw(TRUE);
Invalidate();
にしたらうまくいったけど、なんでか分からん。
0030デフォルトの名無しさん2006/11/23(木) 22:04:46
editから入力された文字列を受け取るにはどうしたら
いいんでしょうか?
誰か教えてください。
それと勉強できるホームページとか。
よろしくです。
0031デフォルトの名無しさん2006/11/23(木) 23:33:34
>>31
つ[MSDN]
0032132006/11/23(木) 23:40:38
ご回答ありがとうございます
返事が遅くなって申し訳ございません


>>19
そうです
普段はウィザード生成の標準子画面で操作を行い、
ボタンが押されたときに別の子画面を表示する感じです
(他にも同じ子画面が複数表示されないような制御も
行いたいと考えています)

>>22-24
基本的にやりたいことは単純にダイアログのようにコントロールが
貼り付けられて、それへの操作を処理のトリガとする子画面を持つ
MDIアプリを作りたいだけです
しかし、思ったように上手く、とても困っている状況です


つい数ヶ月前までVBしか経験のない状態でしたので、VC++6.0(MFC)の
ドキュメントビューアーキテクチャなども理解できていません
MFCで作れないWindowsアプリは無いと聞いたのと処理速度の問題から
こちらの言語での開発を始めたのですが・・・
■ このスレッドは過去ログ倉庫に格納されています