WM_SIZE和MoveWindow

时间:2017-11-20 00:01:38

标签: c++ winapi visual-c++

有人会看这段代码吗?在调整窗口大小时,是否有一个不同的公式来移动STATIC控件。我有一个ChatRoomMessages变量,用于保存代码中稍后创建的句柄。有一个变量在CreateWindow时保持它们的y位置,所以我在相同的位置遍历它们。我需要它来获取ChatRoomMessages[i]y[i](这是RECT中的y位置)并在调整大小时移动窗口。如果您愿意,我可以将代码上传给您或发送电子邮件。如果这不适合该网站,请删除我的错误算法。如果你能提出一个很棒的解决方案。

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 {


    }

1 个答案:

答案 0 :(得分:0)

  • 1)Visual Studio没有重新编译我的函数。所以我不得不清理构建
  • 2)我从WM_SIZING获得了sizingRect。我把它放在我的WM_SIZE的最底部,当它回想起时(即使从它明显开始),有2个矩形。我这样做并且只是使用了

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