• ベストアンサー

タイトルバーの変更

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

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

 こんばんは。 //win32ネイティブなら LPCTSTR lpsz = TEXT("aaa"); ::SendMessage(hWnd, WM_SETTEXT, 0, (LPARAM)lpsz); //MFCなら pWnd->SetWindowText(TEXT("aaa")); //C++/CLIマネージドなら form->Text = "aaa";  で出来ると思います。

whiterozes
質問者

補足

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

その他の回答 (1)

回答No.2

 こんばんは。補足頂きました。  此れは難しいですねえ・・・。プロセス間メモリを使用して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); }

関連するQ&A