2009-03-05 35 views
10

Tôi đã tạo một cửa sổ với hàm CreateWindowEx(), bây giờ làm thế nào để tôi có được chiều rộng và chiều cao từ cửa sổ mà tôi đã tạo? Điều này nghe có vẻ rất cơ bản để làm, nhưng tôi chỉ không thể tìm thấy bất kỳ câu trả lời; _;Cách lấy chiều rộng và chiều cao từ cửa sổ CreateWindowEx()? C++

Điều này là cần thiết vì chiều cao cửa sổ được tạo tự động tùy thuộc vào cách Windows muốn tạo.

Ngôn ngữ C hoặc C++

Trả lời

24

Sử dụng GetWindowRect. Trừ bên phải từ bên trái để có chiều rộng và đáy từ trên cùng để có chiều cao.

RECT rect; 
if(GetWindowRect(hwnd, &rect)) 
{ 
    int width = rect.right - rect.left; 
    int height = rect.bottom - rect.top; 
} 

Lưu ý phụ, nếu bạn muốn khu vực khách hàng thay vì toàn bộ cửa sổ. Bạn có thể sử dụng GetClientRect. Để biết thông tin khác về cửa sổ, bạn có thể sử dụng GetWindowInfo.

+1

Cảm ơn! đã hoạt động hoàn hảo! –

1

Tôi tin rằng bạn đang tìm kiếm GetWindowInfo

Ví dụ:

HWND window = ::CreateWindowEx(...); 
WINDOWINFO info; 
if (::GetWindowInfo(window, &info)) { 
    ... 
} 
0

Vì không có chỉ dẫn tại sao bạn cần kích thước và kích thước có thể thay đổi nếu kiểu cửa sổ được đặt để bao gồm thuộc tính có thể thay đổi kích thước [và người dùng định lại kích thước cửa sổ bằng cách thu nhỏ/tối đa/khôi phục hoặc kéo cạnh cửa sổ], lựa chọn an toàn nhất của bạn là bao gồm trình xử lý tin nhắn cho WM_SIZE và sử dụng giá trị thông số wparam và lparam để xác định kích thước cửa sổ. Bằng cách này, bạn sẽ luôn biết kích thước hiện tại. WM_SIZE được gọi trong chuỗi thông báo tạo cửa sổ.

Các vấn đề liên quan