掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ShellExecuteで開くマイコンピュータのサイズと位置を指定する (ID:61005)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> ただ、マイコンピュータを2つスクリーン上に表示するのが目的で、そのため画面の住み分けをしたいと考えました。 住み分けがよくわかりませんが、べたにかくとこんな感じ? # マイコンピュータではなくマイコンピュータを表示しているエクスプローラですよね? #include <windows.h> #include <tchar.h> struct MyComputers { HWND hWnd1; HWND hWnd2; }; BOOL CALLBACK EnumWindowsProc( HWND hWnd, LPARAM lParam ) { static TCHAR szTitle[ MAX_PATH ]; ::GetWindowText( hWnd, szTitle, sizeof( szTitle ) / sizeof( TCHAR ) ); if ( !_tcscmp( szTitle, TEXT( "マイ コンピュータ" ) ) ) { MyComputers* mc = reinterpret_cast< MyComputers* >( lParam ); if ( mc->hWnd1 ) { mc->hWnd2 = hWnd; return FALSE; } mc->hWnd1 = hWnd; } return TRUE; } int main() { MyComputers mc = { 0 }; ::ShellExecute( NULL, TEXT( "explore" ), TEXT( "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}" ), NULL, NULL, SW_HIDE ); ::ShellExecute( NULL, TEXT( "explore" ), TEXT( "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}" ), NULL, NULL, SW_HIDE ); ::EnumWindows( EnumWindowsProc, reinterpret_cast< LPARAM >( &mc ) ); const int screenX = ::GetSystemMetrics( SM_CXSCREEN ); const int screenY = ::GetSystemMetrics( SM_CYSCREEN ); if ( ::IsWindow( mc.hWnd1 ) ) { ::MoveWindow( mc.hWnd1, 0, 0, screenX / 2, screenY, TRUE ); ::ShowWindow( mc.hWnd1, SW_SHOW ); } if ( ::IsWindow( mc.hWnd2 ) ) { ::MoveWindow( mc.hWnd2, screenX / 2, 0, screenX / 2, screenY, TRUE ); ::ShowWindow( mc.hWnd2, SW_SHOW ); } return 0; } ちなみに、具体的にMFCのコードに書き換えるところはないです。 いちいちCWndクラス使う必要性はないです。 > 初心者でMFCしか分からず 結構怖いですな、、、MFCかわからないという状態はありえないと思うけど。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.