電子書籍の厳選無料作品が豊富!

例えばタイトルバーが"abc"というウィンドウがあったとして、そのウィンドウのタイトルバーを"aaa"という風に変更したいのですが、やり方がわかりません。ご教授の方、よろしくお願いします。 ちなみに開発環境はVC++です。

A 回答 (2件)

 こんばんは。



//win32ネイティブなら
LPCTSTR lpsz = TEXT("aaa");
::SendMessage(hWnd, WM_SETTEXT, 0, (LPARAM)lpsz);

//MFCなら
pWnd->SetWindowText(TEXT("aaa"));

//C++/CLIマネージドなら
form->Text = "aaa";

 で出来ると思います。

この回答への補足

自分のウィンドウは変更できたのですが、
別のプロセスのウィンドウの場合はどうやればいいのでしょうか。

補足日時:2009/03/22 14:54
    • good
    • 0

 こんばんは。

補足頂きました。

 此れは難しいですねえ・・・。プロセス間メモリを使用してWM_SETTEXTを送信しても無理でした。
 他プロセスのウィンドウも自分の作成したアプリならば、WM_COPYDATAで遣り取り出来ます。

//送信側
TCHAR buf[] = TEXT("aaa");
COPYDATASTRUCT cds = {0};
cds.cbData = sizeof(buf) / sizeof(buf[0]);//\0文字も含めて送信する
cds.lpData = buf;
const INT iResult = ::SendMessage(hWndOutProcess, WM_COPYDATA, 0, (LPARAM)&cds);

//受信側
LRESULT CALLBACK WndProc(HWND hWnd,UINT msg,UINT wParam,LONG lParam)
{
switch(msg)
{
case WM_COPYDATA:
{
COPYDATASTRUCT* pdata = (COPYDATASTRUCT*)lParam;
::SendMessage(hWnd, WM_SETTEXT, 0, (LPARAM)pdata->lpData);
}
}
return DefWindowProc(hWnd,msg,wParam,lParam);
}
    • good
    • 0

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