如何用MoveWindow()和SetWindowPos()来改变窗口大小,最好有个例子!
我是个菜鸟希望老鸟们给我点指导谢谢了!

解决方案 »

  1.   

    就用SDK上的例子吧这是MovewWindow的
    #define ID_FIRSTCHILD  100 
    #define ID_SECONDCHILD 101 
    #define ID_THIRDCHILD  102 
     
    LONG APIENTRY MainWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) 

        RECT rcClient; 
        int i; 
     
        switch(uMsg) 
        { 
            case WM_CREATE: // creating main window  
     
                // Create three invisible child windows.             for (i = 0; i < 3; i++) 
                { 
                    CreateWindowEx(0, 
                                   "ChildWClass", 
                                   (LPCTSTR) NULL, 
                                   WS_CHILD | WS_BORDER, 
                                   0,0,0,0, 
                                   hwnd, 
                                   (HMENU) (int) (ID_FIRSTCHILD + i), 
                                   hinst, 
                                   NULL); 
                }
     
                return 0; 
     
            case WM_SIZE:   // main window changed size 
     
                // Get the dimensions of the main window's client 
                // area, and enumerate the child windows. Pass the 
                // dimensions to the child windows during enumeration. 
     
                GetClientRect(hwnd, &rcClient); 
                EnumChildWindows(hwnd, EnumChildProc, (LPARAM) &rcClient); 
                return 0;         // Process other messages. 
        } 
        return DefWindowProc(hwnd, uMsg, wParam, lParam); 

     
    BOOL CALLBACK EnumChildProc(HWND hwndChild, LPARAM lParam) 

        LPRECT rcParent; 
        int i, idChild; 
     
        // Retrieve the child-window identifier. Use it to set the 
        // position of the child window. 
     
        idChild = GetWindowLong(hwndChild, GWL_ID); 
     
        if (idChild == ID_FIRSTCHILD) 
            i = 0; 
        else if (idChild == ID_SECONDCHILD) 
            i = 1; 
        else 
            i = 2; 
     
        // Size and position the child window.  
     
        rcParent = (LPRECT) lParam; 
        MoveWindow(hwndChild, 
                   (rcParent->right / 3) * i, 
                   0, 
                   rcParent->right / 3, 
                   rcParent->bottom, 
                   TRUE); 
     
        // Make sure the child window is visible. 
     
        ShowWindow(hwndChild, SW_SHOW); 
     
        return TRUE;
    }
    这是SetWindowPos的HWND hwndOwner; 
    RECT rc, rcDlg, rcOwner; 
     
        case WM_INITDIALOG: 
     
            // Get the owner window and dialog box rectangles. 
     
            if ((hwndOwner = GetParent(hwndDlg)) == NULL) 
            {
                hwndOwner = GetDesktopWindow(); 
            }        GetWindowRect(hwndOwner, &rcOwner); 
            GetWindowRect(hwndDlg, &rcDlg); 
            CopyRect(&rc, &rcOwner); 
     
             // Offset the owner and dialog box rectangles so that 
             // right and bottom values represent the width and 
             // height, and then offset the owner again to discard 
             // space taken up by the dialog box. 
     
            OffsetRect(&rcDlg, -rcDlg.left, -rcDlg.top); 
            OffsetRect(&rc, -rc.left, -rc.top); 
            OffsetRect(&rc, -rcDlg.right, -rcDlg.bottom); 
     
             // The new position is the sum of half the remaining 
             // space and the owner's original position. 
     
            SetWindowPos(hwndDlg, 
                HWND_TOP, 
                rcOwner.left + (rc.right / 2), 
                rcOwner.top + (rc.bottom / 2), 
                0, 0,          // ignores size arguments 
                SWP_NOSIZE); 
     
            if (GetDlgCtrlID((HWND) wParam) != ID_ITEMNAME) 
            { 
                SetFocus(GetDlgItem(hwndDlg, ID_ITEMNAME)); 
                return FALSE; 
            } 
            return TRUE; 
      

  2.   

    MoveWindow(100,100,400,400,NULL);
    就可以将窗口定义为400,400大小,位置为100,100;