2017-11-20 9 views
-1

누군가이 코드를 살펴볼 것입니까? 창 크기를 조정할 때 STATIC 컨트롤을 움직이는 공식이 다릅니다. 나중에 코드에서 생성 된 핸들을 보유하는 ChatRoomMessages 변수가 있습니다. CreateWindow의 시간에 y 위치를 유지하는 변수가 있기 때문에 같은 위치에서 트래버스합니다. ChatRoomMessages[i]y[i] (어느 것이 y 위치입니까? RECT)을 얻고 크기를 조정할 때 창을 이동해야합니다. 원하는 경우 또는 전자 메일로 코드를 업로드 할 수 있습니다. 이 사이트에 적합하지 않은 경우 잘못된 알고리즘을 삭제하십시오. 훌륭한 솔루션을 제안 할 수 있다면.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의 끝까지 이동했기 때문에 뭔가 다른 것이 틀림 없습니다. 프로그램이 시작되었습니다 .. 그 시점에서 모든 기능을 호출하고 두 번째로 처리했을 때 얼마나 쉽게 작동하는지 이상적이었습니다. 나는 너무 혼란스러워서 대답 해 주셔서 감사합니다. 내가 휴식을 잊어 버린 것을 결코 눈치 채지 못했습니다. –

답변

0
  • 1) 비주얼 스튜디오 내 기능을 재 컴파일되지 않았습니다. 그래서 나는 빌드를 청소해야했다.
  • 2) 나는 WM_SIZING에서 sizingRect를 얻고 있었다. WM_SIZE 맨 아래에 넣었고 (분명히 시작할 때조차도) 리콜 할 때 2 개의 사각형이 있습니다. 내가 그랬과가 지금 작업이다 .. 단순히 내가 VS 이전 컴파일에서 인라인 함수에 추가 된 발견

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