>>951 イベントハンドラなしに動かしたいと考えてます。
OnInitDialogでの処理では駄目だと思うのですが、
何を使ったらよいのか分からない状態です。
便利なクラスとかサンプルなどを教えて頂けると幸いです。
よろしくお願い致します。
>>950 タイマーで経過表示でもしたいのか?
何故OnInitDialog()ではダメだと思ったのか?
ダイアログの外からの指示でかきかえたいのか、
ダイアログの中だけで完結してもいいのか、
とか聞こうと思ったんだけど、イベントハンドラとか
言ってるってことは、実行中に画面書き替えたいとか
そういうこと?
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が多すぎ。
おまいらは社内規格で良いだろうが、それにつき合わされる外部の
人間はウンザリ。もう、いいかげんにしろと。
スレ違いだ。消えろ
957 :
デフォルトの名無しさん:2011/08/22(月) 16:37:32.53
いやだ。廃棄物のお前にいわれたくねw
952です。
>>953 子ダイアログでプログレスバーみたいなものを作りたいためです。
OnInitDialog()では、処理はするけど1,2,3・・・99,100のように順々に表示されず、いきなり100が子ダイアログ表示されるのではないのでしょうか。
そのため、OnInitDialog()では駄目だと思いました。間違ってたらすいません。
>>954 私はダイアログの中だけで完結させたものを作りたいと考えてます。
子ダイアログ生成後に画面を書き換えるという操作をしたいと考えてます。
InvalidateしてUpdateWindowするというのと、DoEventについて調べてみようと思います。
アドバイスありがとうございました。
>>958 OnInitDialogの中でSetTimerでタイマーセットして、
OnTimerでカウントアップすればいいんじゃないの?
もしかして:
モードレスダイアログ?
つーか、MFCだからポップアップウインドウか。
961 :
デフォルトの名無しさん:2011/08/29(月) 18:43:55.64
初期表示の際にピクチャーコントロールの上に図形を描写するには
どうすればいいでしょうか。
もっと詳細を書かないと分からないよ。
ビットマップを貼りたいだけなら
・リソースにビットマップを追加する
・リソースエディタでTypeをビットマップにする
・Imageに追加したビットマップのIDを指定する
で出来る。
プログラム内部で色々な図形を書きたいならオーナー描画を勉強すべし。
(その場合ピクチャーコントロールは忘れていい)
963 :
デフォルトの名無しさん:2011/08/29(月) 22:32:02.79
>>962 ありがとうございます
ピクチャーコントロールはできてるんですが
その上に図形を描写したいんです。
画面のちらつきについて質問
あるダイアログにスタティックテキストとリストコントロール載せてるんですが、
スタティックテキストの内容を1秒に1回更新していて結構ちらつきます。
このちらつきを抑えるためにダイアログにWS_EX_COMPOSITEDっていうウィンドウスタイル指定してるんですが、
この方法だと、リストコントロールのヘッダ以外が描画されなくなってしまいます。
なんかいい方法ありますか?
環境
Vista
VC2008 Pro
>>964 普通だと内容更新は即再描画に繋がっているから、
WM_SETREDRAW+InvalidateRectで描画をWM_PAINTまで遅延させてみたらどう?
DWMが何か空気呼んでうまくやってくれそうな気がしないでもない。
ドッキングダイアログってまだないの?.netでも良いの無かったな
SDIでCMDIChildWndを作りたいんだけど無理っぽいです
MDI自体はMFCとは無関係だから
作ろうと思えばいつでも作れる
MFCプロジェクトをVisual Studio上で作成しました。
何もしなくても、アプリケーションの再起動時にCDockablePaneの状態やスタイルやリボンの状態が復元されるのですが
この情報の保存先はどこにあるのでしょうか?
レジストリ
971 :
964:2011/09/06(火) 07:14:17.47
>>965 ありがとうございます。
試してみます。
972 :
969:2011/09/06(火) 08:24:47.15
VisualStudio2010と2008のMFCは違うのか。
再起動マネージャとかちょっと試してみたいな。
2008用に更新パッケージとかないのかな。
MFC で新規プロジェクトを作成すると、StdAfx.hができますが
このファイルの目的は何で、何が記述されているんですか?
>>974 そのままヘッダーファイル読めば良いじゃん
mfcの理解が深まるぞ
Visual Studio 2010 です。
MFC でDLLを作りたいです、しかしダイアログなどは必要ありません、このようなMFC のDLL の作り方なのですが、これでいいでしょうか?
新規プロジェクト→Win32 コンソール アプリケーション→アプリケーションの設定より下記の項目にチェックを入れる
アプリケーションの種類
コンソールアプリケーション
追加のオプション
空のプロジェクト
共通ヘッダーファイルを追加
MFC
一点間違えてました
アプリケーションの種類
☓コンソールアプリケーション
○DLL
です
978 :
デフォルトの名無しさん:2011/09/10(土) 23:33:27.39
それでいいです
CHtmlEditViewって、GUI操作でブラウザ画面?の文字や画像をDeleteしたりできますか?
_, ,_ | | | ||
ヤダァ(`Д´(ω・´川)<おばさんが君の布団でオナラしてあげるよ
| ̄ ̄ ̄ ̄ ̄ ̄ ゙̄|
| | ̄ ̄ ̄ ̄| |
| | @ @| |
| |@ @ | |
| |____| |
|__________|
(⌒ ⌒;:゙:ヽ.' 。 /. ゚
从 `(´⌒;`:;ノ:人;;⌒`:" / 从 。
.(´;(´⌒(;・"⌒`);/`):';⌒`)`)。.' ゚
。((;;; _, ,_). | | | ||" :';))’: (⌒ ⌒;:゙:
(`Д´(ω;´川) ゚(⌒ ;:゙。:ヽ.'/)
| ̄ ̄ ̄ ̄ ̄ ̄ ゙̄|`):';⌒`)`)。.' ゚
| | ̄ ̄ ̄ ̄| |⌒`).(´;(´⌒(;・"⌒`);
| | @ @| | ブボボ!ブボボボボボボボボボボボボ!!!
| |@ @ | |⌒`) :; 从 )
| |____| |(⌒)) \ ))
|__________| ヽ
981 :
デフォルトの名無しさん:2011/09/14(水) 08:54:23.66
MFCの32bitアプリがあります。
64bitに移行するのは可能ですか?
変なことしてなきゃ64bitOSでも動作するだろ
CMDIChildWnd ではなく、CWnd (あるいはCMainFrameのような) 上に、(Splitterのある2ペインの)分割Windowを作成したいのですが、可能ですか?
MDIとは無縁のただの分割ウィンドウを作りたいだけなのですが、サンプルはMDIのものばかりで、どのように実現すればよいのかよく分かりませんでした
というより、Splitterの付いた(汎用?)2ペインウィンドウの作成方法を教えてください。お願いします。
CSplitterWnd 使うやつでいいのかな?
プロジェクトを作るとき、アプリケーションの種類をシングルドキュメントにし、
プロジェクト形式をWindows エクスプローラにすれば要望通りのものになるかと。
986 :
983: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);
とすることで望み通りに動きました
ありがとうございました。
987 :
983: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);
}
プロジェクト作成時に追加できる出力ペインを使ってみるとかは?
回答お願いしますとか、むかつく聞き方だな
自分で調べろ、屑
>>990 988ではないがそんなに気になるか?
単に質問か解答を区別して書き込んでるだけだと思うのだが
>>988 どこまでを古いログと見なすつもりなんだ?
>>988 この手の質問で「上手く行きません」ってよく書くけど、どこがどううまくいかないか書けば答えやすいのに・・・。
それはともかく、ツッコミどころ満載だけど、
100行超えたとき全部クリアするなら、SetWindowTextで設定すれば良いんじゃないの?
>m_EdLogMsg.SetSel(0, 1);
>m_EdLogMsg.Clear();
の意味わかってる?
>>988 >void testDlg::__printf_s(CHAR szMsgBuffer[])
中身と逸脱した糞みたいな関数名だな。
以前windowsのメモ貼でどれぐらいのサイズまで扱えるか実験したけど
editコントロールの上限(0x7FFFFFFE)越えるサイズでも大丈夫だった。
自前で メモリ用意すればいけるみたい
997 :
デフォルトの名無しさん:2011/09/15(木) 23:51:56.26
>>993 一行増える度に一番古い行を一行消す様にしたいです。
ListViewのほうがよさそう
un
ko
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。