■MFC相談室 mfc21d.dll■

このエントリーをはてなブックマークに追加
952デフォルトの名無しさん:2011/08/21(日) 19:48:13.61
>>951
イベントハンドラなしに動かしたいと考えてます。
OnInitDialogでの処理では駄目だと思うのですが、
何を使ったらよいのか分からない状態です。

便利なクラスとかサンプルなどを教えて頂けると幸いです。
よろしくお願い致します。
953デフォルトの名無しさん:2011/08/22(月) 11:57:12.76
>>950
タイマーで経過表示でもしたいのか?
何故OnInitDialog()ではダメだと思ったのか?
954デフォルトの名無しさん:2011/08/22(月) 14:21:39.65
ダイアログの外からの指示でかきかえたいのか、
ダイアログの中だけで完結してもいいのか、

とか聞こうと思ったんだけど、イベントハンドラとか
言ってるってことは、実行中に画面書き替えたいとか
そういうこと?
InvalidateしてUpdateWindowするとか、
DoEventみたいなことしたいなら、
{MSG msg;
while (::PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE)) {
AfxGetThread()->PumpMessage();
}}
呼ぶとかしてみては
955デフォルトの名無しさん:2011/08/22(月) 16:19:57.18
MFCが(に限らないだろうが)嫌いなのは、MS独自のtypedefが多すぎ。

おまいらは社内規格で良いだろうが、それにつき合わされる外部の
人間はウンザリ。もう、いいかげんにしろと。
956デフォルトの名無しさん:2011/08/22(月) 16:28:05.27
スレ違いだ。消えろ
957デフォルトの名無しさん:2011/08/22(月) 16:37:32.53
いやだ。廃棄物のお前にいわれたくねw
958デフォルトの名無しさん:2011/08/22(月) 18:07:08.87
952です。
>>953
子ダイアログでプログレスバーみたいなものを作りたいためです。
OnInitDialog()では、処理はするけど1,2,3・・・99,100のように順々に表示されず、いきなり100が子ダイアログ表示されるのではないのでしょうか。
そのため、OnInitDialog()では駄目だと思いました。間違ってたらすいません。

>>954
私はダイアログの中だけで完結させたものを作りたいと考えてます。
子ダイアログ生成後に画面を書き換えるという操作をしたいと考えてます。
InvalidateしてUpdateWindowするというのと、DoEventについて調べてみようと思います。

アドバイスありがとうございました。
959デフォルトの名無しさん:2011/08/24(水) 23:30:48.92
>>958
OnInitDialogの中でSetTimerでタイマーセットして、
OnTimerでカウントアップすればいいんじゃないの?
960 忍法帖【Lv=38,xxxPT】 :2011/08/25(木) 09:48:54.27
もしかして:
モードレスダイアログ?
つーか、MFCだからポップアップウインドウか。
961デフォルトの名無しさん:2011/08/29(月) 18:43:55.64
初期表示の際にピクチャーコントロールの上に図形を描写するには
どうすればいいでしょうか。
962デフォルトの名無しさん:2011/08/29(月) 19:19:52.96
もっと詳細を書かないと分からないよ。

ビットマップを貼りたいだけなら
・リソースにビットマップを追加する
・リソースエディタでTypeをビットマップにする
・Imageに追加したビットマップのIDを指定する
で出来る。
プログラム内部で色々な図形を書きたいならオーナー描画を勉強すべし。
(その場合ピクチャーコントロールは忘れていい)
963デフォルトの名無しさん:2011/08/29(月) 22:32:02.79
>>962
ありがとうございます
ピクチャーコントロールはできてるんですが
その上に図形を描写したいんです。
964デフォルトの名無しさん:2011/09/03(土) 15:34:11.78
画面のちらつきについて質問

あるダイアログにスタティックテキストとリストコントロール載せてるんですが、
スタティックテキストの内容を1秒に1回更新していて結構ちらつきます。
このちらつきを抑えるためにダイアログにWS_EX_COMPOSITEDっていうウィンドウスタイル指定してるんですが、
この方法だと、リストコントロールのヘッダ以外が描画されなくなってしまいます。
なんかいい方法ありますか?

環境
Vista
VC2008 Pro
965デフォルトの名無しさん:2011/09/03(土) 19:50:17.86
>>964
普通だと内容更新は即再描画に繋がっているから、
WM_SETREDRAW+InvalidateRectで描画をWM_PAINTまで遅延させてみたらどう?
DWMが何か空気呼んでうまくやってくれそうな気がしないでもない。
966デフォルトの名無しさん:2011/09/05(月) 06:10:11.94
ドッキングダイアログってまだないの?.netでも良いの無かったな
967デフォルトの名無しさん:2011/09/05(月) 07:59:24.56
SDIでCMDIChildWndを作りたいんだけど無理っぽいです
968デフォルトの名無しさん:2011/09/05(月) 13:17:09.20
MDI自体はMFCとは無関係だから
作ろうと思えばいつでも作れる
969デフォルトの名無しさん:2011/09/06(火) 05:59:48.91
MFCプロジェクトをVisual Studio上で作成しました。

何もしなくても、アプリケーションの再起動時にCDockablePaneの状態やスタイルやリボンの状態が復元されるのですが
この情報の保存先はどこにあるのでしょうか?
970デフォルトの名無しさん:2011/09/06(火) 06:45:03.37
レジストリ
971964:2011/09/06(火) 07:14:17.47
>>965
ありがとうございます。
試してみます。
972969:2011/09/06(火) 08:24:47.15
>>970
みつかりまんた
あんがと
973デフォルトの名無しさん:2011/09/09(金) 00:26:56.08
VisualStudio2010と2008のMFCは違うのか。
再起動マネージャとかちょっと試してみたいな。
2008用に更新パッケージとかないのかな。
974デフォルトの名無しさん:2011/09/10(土) 09:28:08.33
MFC で新規プロジェクトを作成すると、StdAfx.hができますが
このファイルの目的は何で、何が記述されているんですか?
975デフォルトの名無しさん:2011/09/10(土) 09:58:30.99
>>974
そのままヘッダーファイル読めば良いじゃん
mfcの理解が深まるぞ
976デフォルトの名無しさん:2011/09/10(土) 14:24:19.10
Visual Studio 2010 です。
 MFC でDLLを作りたいです、しかしダイアログなどは必要ありません、このようなMFC のDLL の作り方なのですが、これでいいでしょうか?

新規プロジェクト→Win32 コンソール アプリケーション→アプリケーションの設定より下記の項目にチェックを入れる

アプリケーションの種類
コンソールアプリケーション

追加のオプション
空のプロジェクト

共通ヘッダーファイルを追加
MFC
977デフォルトの名無しさん:2011/09/10(土) 14:31:40.65
一点間違えてました

アプリケーションの種類
☓コンソールアプリケーション
○DLL
です
978デフォルトの名無しさん:2011/09/10(土) 23:33:27.39
それでいいです
979デフォルトの名無しさん:2011/09/12(月) 12:14:01.15
CHtmlEditViewって、GUI操作でブラウザ画面?の文字や画像をDeleteしたりできますか?
980デフォルトの名無しさん:2011/09/12(月) 18:28:47.23
    _, ,_  | | | ||
ヤダァ(`Д´(ω・´川)<おばさんが君の布団でオナラしてあげるよ
| ̄ ̄ ̄ ̄ ̄ ̄ ゙̄|
|  | ̄ ̄ ̄ ̄|  |
|  |  @  @|  |
|  |@  @  |  |
|  |____|  |
|__________|


(⌒ ⌒;:゙:ヽ.' 。    /.    ゚
从 `(´⌒;`:;ノ:人;;⌒`:" / 从 。
.(´;(´⌒(;・"⌒`);/`):';⌒`)`)。.' ゚
。((;;; _, ,_). | | | ||" :';))’: (⌒ ⌒;:゙:
  (`Д´(ω;´川) ゚(⌒ ;:゙。:ヽ.'/)
| ̄ ̄ ̄ ̄ ̄ ̄ ゙̄|`):';⌒`)`)。.' ゚
|  | ̄ ̄ ̄ ̄|  |⌒`).(´;(´⌒(;・"⌒`);
|  |  @  @|  | ブボボ!ブボボボボボボボボボボボボ!!!
|  |@  @  |  |⌒`) :; 从 )
|  |____|  |(⌒)) \ ))
|__________| ヽ
981デフォルトの名無しさん:2011/09/14(水) 08:54:23.66
MFCの32bitアプリがあります。

64bitに移行するのは可能ですか?
982デフォルトの名無しさん:2011/09/14(水) 09:04:13.46
変なことしてなきゃ64bitOSでも動作するだろ
983デフォルトの名無しさん:2011/09/14(水) 14:26:54.32
CMDIChildWnd ではなく、CWnd (あるいはCMainFrameのような) 上に、(Splitterのある2ペインの)分割Windowを作成したいのですが、可能ですか?
MDIとは無縁のただの分割ウィンドウを作りたいだけなのですが、サンプルはMDIのものばかりで、どのように実現すればよいのかよく分かりませんでした

というより、Splitterの付いた(汎用?)2ペインウィンドウの作成方法を教えてください。お願いします。
984デフォルトの名無しさん:2011/09/14(水) 15:03:45.52
CSplitterWnd 使うやつでいいのかな?
985デフォルトの名無しさん:2011/09/14(水) 15:45:38.55
プロジェクトを作るとき、アプリケーションの種類をシングルドキュメントにし、
プロジェクト形式をWindows エクスプローラにすれば要望通りのものになるかと。
986983:2011/09/15(木) 12:11:08.62
>>984-985
プロジェクト時にシングル&エクスプローラー形式のソースを見た所、
CMainFrame上に
CSplitterWnd m_wndSplitter; を配置し、
OnCreateClient 上にて
CreateStatic(this, 1, 2);
CreateView(0, 0, RUNTIME_CLASS(CHogeView), CSize(100,100), pContext);
CreateView(0, 0, RUNTIME_CLASS(CFugaView), CSize(100,100), pContext);
とすることで望み通りに動きました
ありがとうございました。
987983:2011/09/15(木) 12:12:11.12
CreateView(0, 0, RUNTIME_CLASS(CHogeView), CSize(100,100), pContext);
CreateView(0, 1, RUNTIME_CLASS(CFugaView), CSize(100,100), pContext);
ちょっとミスしたので訂正しときます。
988デフォルトの名無しさん:2011/09/15(木) 18:02:13.12
OS:Windows7
開発環境:VisualStudio2005

回答お願いします。
MFCのエディットコントロールにログを吐き出すプログラムを作ってみました。
大量のログを表示させると途中で止まってしまいます。
なので100行毎に古いログを消すと言う処理を入れてみたのですが上手く行きません。
どうすれば良いか誰か教えて下さい。

引数:エディットボックスに表示する文字列(可変長で\0終端)

CEdit m_EdLogMsg;
void testDlg::__printf_s(CHAR szMsgBuffer[])
{
UINT EditMax; // テキストの最大値
// エディットボックスに表示できる最大バイト数を取得する
EditMax = m_EdLogMsg.GetLimitText();

// 100行を超えたら古いログを消す(本当はEditMax Byteを超えた場合に古いログを消したい)
if(m_EdLogMsg.GetLineCount() > 100){
printf("Log Over.\n");
m_EdLogMsg.SetSel(0, 1);
m_EdLogMsg.Clear();
}
// カーソルを最後に移動させる
m_EdLogMsg.SetSel( EditMax, EditMax, FALSE );

m_EdLogMsg.ReplaceSel(szMsgBuffer,0);
m_EdLogMsg.ReplaceSel("\n",0);
}
989デフォルトの名無しさん:2011/09/15(木) 18:08:46.62
プロジェクト作成時に追加できる出力ペインを使ってみるとかは?
990デフォルトの名無しさん:2011/09/15(木) 18:36:55.40
回答お願いしますとか、むかつく聞き方だな
自分で調べろ、屑
991名無し募集中。。。:2011/09/15(木) 18:52:51.66
MFC相談室 mfc22d.dll
http://hibari.2ch.net/test/read.cgi/tech/1316080347/l50

■忘れた><
992デフォルトの名無しさん:2011/09/15(木) 19:48:19.88
>>990
988ではないがそんなに気になるか?
単に質問か解答を区別して書き込んでるだけだと思うのだが
993デフォルトの名無しさん:2011/09/15(木) 22:22:49.11
>>988
どこまでを古いログと見なすつもりなんだ?
994デフォルトの名無しさん:2011/09/15(木) 22:24:08.12
>>988
この手の質問で「上手く行きません」ってよく書くけど、どこがどううまくいかないか書けば答えやすいのに・・・。
それはともかく、ツッコミどころ満載だけど、
100行超えたとき全部クリアするなら、SetWindowTextで設定すれば良いんじゃないの?

>m_EdLogMsg.SetSel(0, 1);
>m_EdLogMsg.Clear();
の意味わかってる?
995 忍法帖【Lv=40,xxxPT】 :2011/09/15(木) 22:26:21.67
>>988
>void testDlg::__printf_s(CHAR szMsgBuffer[])
中身と逸脱した糞みたいな関数名だな。
996デフォルトの名無しさん:2011/09/15(木) 23:24:02.32
以前windowsのメモ貼でどれぐらいのサイズまで扱えるか実験したけど
editコントロールの上限(0x7FFFFFFE)越えるサイズでも大丈夫だった。
自前で メモリ用意すればいけるみたい
997デフォルトの名無しさん:2011/09/15(木) 23:51:56.26
>>993
一行増える度に一番古い行を一行消す様にしたいです。
998デフォルトの名無しさん:2011/09/15(木) 23:56:38.38
ListViewのほうがよさそう
999デフォルトの名無しさん:2011/09/16(金) 00:09:37.61
un
1000デフォルトの名無しさん:2011/09/16(金) 00:09:52.37
ko
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。