
MFCプログラミング初心者ですが、宜しくお願いいたします。
---------------プログラム環境---------------
WinXP2 Visula Studio 2005 Pro
--------------------------------------------
現在、上記の環境で、SDIプログラムを書いています。
ご教示していただきたいことは、分割ウィンドウにおけるそれぞれの窓の
表示内容を変えたいということです。TCP/IPのプログラムで、受信したMessageをstrstrなどで振り分けて、各々の窓に表示したいのですが、
どういう風にやればいいのですか??
なお、一つのViewに受信メッセージを表示させることは出来ました。
非常に困っています。
現在、CMainFrame::OnCreateClient(~~~)とMainFrame.cppに書き、
ウィンドウを3分割にしております。
m_wndSplitter.CreateStatic(this,1,2);
m_wndSplitter.CreateStatic(&m_wndSplitter,2,1,WS_CHILD | WS_VISIBLE,WS_BORDER,m_wndSplitter.IdFromRowCol(0,1));
m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(??View)),~~
m_wndSplitter1.CreateView(0,0,RUNTIME_CLASS(??View)),~~
m_wndSplitter1.CreateView(1,0,RUNTIME_CLASS(??View)),~~
この用に記述しております。
説明しずらいのですが、??Viewの箇所にスケルトンの時にできていたView
クラスを入れてやると、そのエリアに受信メッセージが表示されます。
初心者なので、まと外れかもしれませんが、新しいViewクラスを作成して
なにかやれば、よいのでしょうか?? 現在3つのウィンドウにそれぞれの
メッセージを表示させたいので、Viewクラスはそれぞれ3個なければ、いけないのでしょうか??
わかりずらい説明で申し訳ないですが、宜しくお願いいたします。
No.3ベストアンサー
- 回答日時:
MFCのクラスをそのまま使うってことはないかもしれないけど
あえてそれを無視して、という前提で。
左側は
((CEditView *)m_wndSplitter.GetPane(0,0))->SetWindowText("左だよ");
右側の上は
((CEditView *)m_wndSplitter1.GetPane(0,0))->SetWindowText("上だよ");
右側の下は
((CEditView *)m_wndSplitter1.GetPane(1,0))->SetWindowText("下だよ");
かな。
#実際はSetWindowTextなんか使わないと思うけど、
#ここは一例ということで。
何か勘違いしていたみたいで、基本クラスを派生して、Viewオブジェクトを
指定してやることで、Msgを描画出来ました。
アドバイスありがとうございました。
No.2
- 回答日時:
エクスプローラのように
それぞれのペインに表示させるものが違うのならば
#1さんのおっしゃるようにそれぞれの表示に
対応するCViewの派生クラスが必要でしょう。
すぺて同じ形式の表示ならば同じCViewの派生クラスにしてもいいかな。
どちらにしても、CSplitterWnd::GetPane()
で目的のペインのViewを取得して描画をすればいいかと。
ご回答ありがとうございます。
CSplitterWnd::GetPane()で分割の列と行を取得して、そこに描画すると
いう事は調べている内に出てきてはいたのですが、具体的にどのように
したらいいのでしょうか??すみませんがご教授宜しくお願いいたします。
現在は、説明しにくいですが、3つのウィンドウすべてEditViewクラスに
していて、3つのウィンドウにTextOutなどで、staticに描画する事は出来るのですが、受信したMsgをリアルタイムに表示させたりする事が出来ません。宜しくお願いいたします。
No.1
- 回答日時:
多分3つ必要ですよ。
たとえば,分割して片方をEditView(C***EditView),
片方をView(C***View)にするときは,
m_spWnd.CreateView(0, 0, RUNTIME_CLASS(C***View), CSize(100, 0), pContext);
m_spWnd.CreateView(0, 1, RUNTIME_CLASS(CEdit***View), CSize(0, 0), pContext);
みたいにすれば,できます。
それ以外の方法もあるのかもしれませんが,
自分はこうしてます。
ご回答ありがとうございます。
回答していただいた内容で、
m_spWnd.CreateView(0,0,RUNTIME_CLASS(C***View),CSize(100,0),pContext);
m_spWnd.CreateView(0,1,RUNTIME_CLASS(C***2View),CSize(0,0),pContext);
で、例えばC***Viewの中に、OnDraw関数を使って、
pDC->TextOut(0,0,"窓1");
C***2Viewの中に、
pDC->TextOut(0,0,"窓2");
と、staticに描画する事は出来るのですが、あるTCP/IPの受信メッセージを、それぞれの窓に表示することが、出来ません。
受信したメッセージをそれぞれ振り分けて、それぞれの窓に表示したいの
です。 現在一つの窓にはメッセージを表示出来ているのですが、
新しく作ったEditViewクラスには表示出来ません。
説明がわかりずらいかも知れませんが、宜しくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSSが全く分かりません、お助け...
-
Windows Formアプリからコンソ...
-
DLLファイルの逆コンパイラにつ...
-
プログラマー達は何故、プログ...
-
バッチファイルで以下のような...
-
どちのほうがすきですか?
-
c言語
-
MACで動く実行ファイルをWindow...
-
どなたかこのプログラミングを...
-
終端記号、非終端記号とは
-
【C言語】全角文字の配列を、全...
-
C言語の関数のextern宣言
-
C言語について(初心者)
-
プログラミングc++を全く分か...
-
あってる
-
プログラミング言語でアプリや...
-
次の記述について
-
C#でTreeViewのCheckBoxのサイ...
-
次の日本語の意味を教えて下さい
-
右ビットシフト
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
既定のコンストラクタがない?
-
ダイアログ表示時にチェックボ...
-
FriendとPublicの違い。。。
-
(UWSC) 「#32770」の意味わかり...
-
エディットコントロールでEnter...
-
イベントにAddHandlerされてい...
-
MFCアプリのコマンドラインでパ...
-
ボタンのオーナードローについて
-
MFCのドラッグ&ドロップについて
-
このコンパイルエラーの意味に...
-
オーバーライド関数の呼び出し...
-
C++ protectedにアクセス不可
-
【ASP.NET】 独自で作成したク...
-
個々の関数について継承してい...
-
MFCのCListCtrlでスクロールを検出
-
ダイアログクラスのコントロー...
-
DataGridViewのセルに斜線を引...
-
[MFC] CWnd::MessageBoxの警告...
-
CMainFrameクラスの使い方
-
関数の呼び出し元の検索
おすすめ情報