一回も披露したことのない豆知識

Windows98 Visual C++6.0

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

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

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

問題点は

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

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

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

A 回答 (2件)

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



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

http://msdn.microsoft.com/ja-jp/library/db50wx7h …
    • good
    • 0

1.アクティブな子ウィンドウのハンドルは


CFrameWnd::GetActiveView()で取得できます。

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

この回答への補足

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

現在は、

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
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!