■MFC相談室 mfc17d.dll■
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/11/21(火) 10:38:31前スレ
■MFC相談室 mfc16d.dll■
http://pc8.2ch.net/test/read.cgi/tech/1146117893/
0002デフォルトの名無しさん
2006/11/21(火) 10:54:080003デフォルトの名無しさん
2006/11/21(火) 14:30:37>>1乙
0004デフォルトの名無しさん
2006/11/21(火) 23:02:46> 意外と使えるCMemFile
その CMemFileの内容を、ディスクに保存せずに、CHtmlView で
表示出来ないかなぁ。
0005デフォルトの名無しさん
2006/11/21(火) 23:38:42今SDIアプリケーションで開発しているのですが
メインフレームのタイトルが
xxxxx - xxxxxxxxxx
のようにハイフンがついております。
このハイフンを消すことは可能でしょうか?
0006デフォルトの名無しさん
2006/11/22(水) 00:11:42〜\n\n〜\n\n\n〜\n〜
となっていると思うけれど、このうちのどれかの〜がメインフレームのタイトルになっていて、そのハイフンを消せばタイトルからハイフン消える。
CHtmlView::GetHtmlDocumentでhtmlドキュメントのIDispatchを取得して、
IHTMLDocument2::writeで注入。
0009デフォルトの名無しさん
2006/11/22(水) 22:05:49できれば2、3冊くらい
0010デフォルトの名無しさん
2006/11/22(水) 22:58:590011デフォルトの名無しさん
2006/11/23(木) 02:55:20いや、そうは思わんけど・・・w
0012デフォルトの名無しさん
2006/11/23(木) 06:21:35↓
MFCのライブラリのソース読む
MFCはこれぐらいで十分
あとはwin32apiでもやった方がいい
0013デフォルトの名無しさん
2006/11/23(木) 15:28:54子画面の作成方法は分かったのですが、
それにダイアログのようにコントロールを貼り付ける方法が分かりません・・・
CFormViewを土台にクラスを作ると子画面にできないですし、
CMDIChildWndを土台にクラスを作るとコントロールが使えません
両方の良いとこ取りをしたようなクラスはありませんか?
もしくは子画面でコントロールを使う方法を知りませんか?
(上は標準作成の子画面ではなく自作するクラスの方の話です)
0014デフォルトの名無しさん
2006/11/23(木) 15:36:460015デフォルトの名無しさん
2006/11/23(木) 16:03:54色々と試してみたのですが無理でした
クラスの新規作成でCMDIChildWndを継承したクラスを作り、
グローバル関数でインスタンス生成して呼び出していますが、
表示されないですし、コントロールも貼り付けられませんです
0016デフォルトの名無しさん
2006/11/23(木) 16:36:100017デフォルトの名無しさん
2006/11/23(木) 16:41:34標準で作られる子画面ではなくてですか?
0018デフォルトの名無しさん
2006/11/23(木) 16:45:09初心者向けの入門書でも読んどけ
0019デフォルトの名無しさん
2006/11/23(木) 17:44:38通常はウィザードで選択したViewで表示を行い、特定のDocumentを扱う場合のみ
新しいView(FormView派生)で表示したいってことかな?
0021デフォルトの名無しさん
2006/11/23(木) 19:26:44任意のviewで表示できるけど
0022デフォルトの名無しさん
2006/11/23(木) 19:58:58FormViewのMDI子ウィンドウはウィザードで普通にできるけれど、
もしかして、スプリッタやろうとしてるんじゃないのかな?
それならウィザードじゃ、FormViewはじかれて、できない。
FormViewの派生自作し、CreateStaticでスプリッタ作らないと。
Doc2つ作ってそれぞれにDoc-View割り付ける方法もあるらしいけれど、
オーソドックスに行くなら、この例ならTreeViewをウィザード使ってDoc-View使って、FormViewはDoc-View使わず、他のクラスからのアクセスはFormViewのオブジェクト宣言。
002322
2006/11/23(木) 20:02:04作ってみればわかるけど、スクロールバーでボタンなどのコントロールが隠れたりして、
ありえないというか、まずチマタじゃ見ないFormになる。
蛇流ゆえに作っていくと色々とワナがあるよ。
002422
2006/11/23(木) 20:12:08CVIEWで作って、CMDIChildWndのハンドル取得して、オーナードローがいいよ。
DDX使えなくて、MFCの恩恵は使えないけど。
0025デフォルトの名無しさん
2006/11/23(木) 20:29:23{
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非表示なものにSetRedraw()やInvalidate()をする意味は?
非表示の間は描画処理は必要ないでしょ。
0027デフォルトの名無しさん
2006/11/23(木) 20:48:11SetRedrawの実際の処理WM_SETREDRAWをMSDNで見ても何も書いてないね。
m_button1の表示状態見て処理するしかないんじゃない?
002825
2006/11/23(木) 21:30:17>>27
非表示なものにSetRedrawをするわけではなくて、
SetRedrawの最中に、更新結果によっては非表示にする
ということをやりたかったのです。
SetRedraw(FALSE)をした以上は、
最後は必ずSetRedraw(TRUE)を呼ばないとダメですよねぇ。
0029デフォルトの名無しさん
2006/11/23(木) 21:31:21this->SetRedraw(TRUE);
this->Invalidate();
もしくは
SetRedraw(FALSE);
SetRedraw(TRUE);
Invalidate();
にしたらうまくいったけど、なんでか分からん。
0030デフォルトの名無しさん
2006/11/23(木) 22:04:46いいんでしょうか?
誰か教えてください。
それと勉強できるホームページとか。
よろしくです。
0031デフォルトの名無しさん
2006/11/23(木) 23:33:34つ[MSDN]
003213
2006/11/23(木) 23:40:38返事が遅くなって申し訳ございません
>>19
そうです
普段はウィザード生成の標準子画面で操作を行い、
ボタンが押されたときに別の子画面を表示する感じです
(他にも同じ子画面が複数表示されないような制御も
行いたいと考えています)
>>22-24
基本的にやりたいことは単純にダイアログのようにコントロールが
貼り付けられて、それへの操作を処理のトリガとする子画面を持つ
MDIアプリを作りたいだけです
しかし、思ったように上手く、とても困っている状況です
つい数ヶ月前までVBしか経験のない状態でしたので、VC++6.0(MFC)の
ドキュメントビューアーキテクチャなども理解できていません
MFCで作れないWindowsアプリは無いと聞いたのと処理速度の問題から
こちらの言語での開発を始めたのですが・・・
■ このスレッドは過去ログ倉庫に格納されています