2017-11-20 3 views
-1

誰かがこのコードを見ますか?ウィンドウのサイズを変更するときにSTATICコントロールを移動するための異なる式があります。私はChatRoomMessages変数を持っていて、後でコードで作成されたハンドルを保持しています。 CreateWindowの時刻にyの位置を保持する変数があるので、同じ位置でそれらをトラバースします。 ChatRoomMessages[i]y[i]RECTのy位置)を取得し、サイズ変更時にウィンドウを移動する必要があります。あなたが望むなら、電子メールをアップロードすることができます。これがサイトに適切でない場合は、私の悪いアルゴリズムを削除してください。偉大なソリューションを提案できれば。WM_SIZEとMoveWindow

HWND ChatRoomMessages[100]; 

int y[100]; 

case WM_SIZING: 
{ 
    GetClientRect(hWnd, &sizingRect); 
} 
case WM_SIZE: 
{ 

    signed int y1; 
    RECT sizingRect2; 
    GetClientRect(hWnd, &sizingRect2); 
    if ((sizingRect2.bottom - sizingRect.bottom) > 0) { 

     for (int x1 = 0; x1 < 100; x1++) 
     { 
      //MessageBox(hWnd2, L"WM_SIZE Called", L"Message", MB_OK | MB_ICONQUESTION); 
      y[x1] -= (sizingRect2.bottom - sizingRect.bottom) - (j*100); 
      MoveWindow((HWND)ChatRoomMessages[x1], 0, y[x1], sizingRect2.right - 50, 100, TRUE); 

     } 
    } 
    else { 


    } 
+0

を使用します。とにかく、ありがとう。 –

+1

休憩を追加しましたか? 'case WM_SIZING:... break;' –

+0

私はWM_SIZINGがウィンドウのサイズ変更にぴったりだったと思っていましたが、WM_SIZEの終わりまでクライアントを取得するために何か別のものでなければなりません。プログラムが始まりました。その時点ですべての機能を呼び出しました.2回目に処理したとき、どのように簡単に機能するのが理想的でした。私はとても混乱していたので、あなたの答えをありがとう。私は休憩を忘れたことに気付かなかった。 –

答えて

0
  • 1)Visual Studioは、私の機能を再コンパイルされませんでした。だから私はビルドをきれいにしなければならなかった
  • 2)私はWM_SIZINGからsizingRectを取得していました。私はそれを私のWM_SIZEの一番下に置き、それが(明らかに始まってからでも)リコールするときに、2つの長方形があります。私はそれをしたと私はそれが今までと取り組んだ。.. VSは、以前のコンパイルからインライン関数に追加されたが分かっただけで

y[i] = y[i] + (sizingRect2.bottom - sizingRect.bottom);

関連する問題