-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 {
}
사용. 어쨌든 고마워. –
휴식 시간을 추가 했습니까? 'case WM_SIZING : ... break;' –
WM_SIZING이 윈도우의 크기를 조정할 수 있다고 생각했지만, 클라이언트를 WM_SIZE의 끝까지 이동했기 때문에 뭔가 다른 것이 틀림 없습니다. 프로그램이 시작되었습니다 .. 그 시점에서 모든 기능을 호출하고 두 번째로 처리했을 때 얼마나 쉽게 작동하는지 이상적이었습니다. 나는 너무 혼란스러워서 대답 해 주셔서 감사합니다. 내가 휴식을 잊어 버린 것을 결코 눈치 채지 못했습니다. –