こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

子ウィンドウの操作について(VC++)

Windows98 Visual C++6.0

雛型でMDIを作成して、アクティブな子ウィンドウに記述されている文字列を操作したいと思っています。

ダイアログボックスを表示して、その中のボタンを押したら、アクティブな子ウィンドウから文字列を取得しある処理した結果をダイアログボックスのtextに表示したいと考えています。

今のところダイアログボックスを表示する所まで出来ています。

問題点は

1.アクティブな子ウィンドウのハンドルはどのようすれば取得できるのでしょうか?
使用すべき関数名等を教えてください。

2.アクティブな子ウィンドウに記述されているデータを取得するには、GetWindowTextやsendMessageで出来るのでしょうか?(なるべくならSJISで処理をしたいと考えているのですが。)

わかりずらい質問かも知れませんが宜しくお願いします。

投稿日時 - 2002-12-08 17:27:08

QNo.423239

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

GetWindowText()を呼び出せばいいのでは。

CString strTitle;
CMDIChildWnd *pChild=(CMDIChildWnd*) pFrame->GetActiveFrame();
pChild->GetWindowText(strTitle);

http://msdn.microsoft.com/ja-jp/library/db50wx7h.aspx

投稿日時 - 2014-01-06 00:03:02

ANo.1

1.アクティブな子ウィンドウのハンドルは
CFrameWnd::GetActiveView()で取得できます。

2.アクティブな子ウィンドウに記述されているデータを取得するには
 これはビューの作り方によりけりです。またコンパイル時にUnicodeを選択しなければSJISで取得できるのが普通だと思います。

投稿日時 - 2002-12-14 21:28:25

補足

回答してくれて、ありがとうございます。

現在は、

CMDIFrameWnd *pFrame=(CMDIFrameWnd*)AfxGetApp()->m_pMainWnd;

//アクティブなMDI子ウィンドウを取得する

CMDIChildWnd *pChild=(CMDIChildWnd*) pFrame->GetActiveFrame();

//アクティブなMDI子ウィンドウに結びつけられているアクティブなビューを取得する

CTestEditView *pView=(CTestEditView*)pChild->GetAcitveView();



データがCTestEditView->m_pShadowBufferにあるのを発見したのですが、
これを取得しようとしたら、protectedメンバで宣言されているらしく、C2248のエラーが出てしまいました。

で、Afxext.hを書き換えるのは嫌だったのですが、

protected:

int m_nTabStops;
LPTSTR m_pShadowBuffer;
....
...



public:
LPTSTR m_pShadowBuffer;

protected:
int m_nTabStops;
UINT ....
...

に書き換えたにも関わらず、C2248のエラーが出てしまいます。現在のところ全くわかりません。何か助言をお願いします。

投稿日時 - 2002-12-16 11:28:59

あなたにオススメの質問