Tôi đang làm việc trên ứng dụng Win32 GUI sử dụng API Win32 thuần túy (không có MFC hoặc .NET). Vấn đề tôi gặp phải là việc kiểm soát xuất hiện trong suốt. Tôi đã tìm ra một phương pháp mà làm việc cho hầu hết mọi thứ, trong Windows Vista + I làm điều này trong WndProc:Điều khiển trong suốt Win32 trên tất cả các phiên bản củaWindows
case WM_CTLCOLORSTATIC:
{
SetBkMode((HDC)wParam, TRANSPARENT);
return (INT_PTR)::GetStockObject(NULL_PEN);
}
break;
Trong Windows XP, tôi làm điều này trong WndProc:
case WM_CTLCOLORSTATIC:
{
HBRUSH hbr = (HBRUSH)DefWindowProc(hDlg, message, wParam, lParam);
::DeleteObject(hbr);
SetBkMode((HDC)wParam, TRANSPARENT);
return (LRESULT)(HBRUSH)(COLOR_WINDOW);
}
Bây giờ Điều này làm việc cho hầu hết các điều khiển, tuy nhiên tôi nhận được một nền trong suốt trên nhãn trên đầu trang của một điều khiển hộp nhóm mà rút ra các dòng hộp nhóm thông qua văn bản. Tôi bắt đầu làm việc hướng tới một trường hợp chỉ cho các hộp nhóm nhưng tôi chắc chắn rằng đây là một vấn đề phải được giải quyết trước đây và tôi không muốn phát minh lại bánh xe.
Có phương pháp thử và kiểm tra để kiểm soát xuất hiện trong suốt không?
Cảm ơn, J
Tôi không nghĩ bạn nên xóa bàn chải như vậy ... – Anders
Bạn có chắc chắn rằng kênh alpha có sẵn trên tất cả các nền tảng bạn muốn không? Còn những người phải sử dụng ứng dụng của bạn trên PC chạy Terminal Services, Remote Desktop hoặc Windows Server thì sao?Bạn có ý gì bởi "Tất cả các phiên bản của cửa sổ"? Windows 98? Đó cũng là Win32! Có thể bạn có thể nói "Tất cả các phiên bản Windows từ Windows XP và mới hơn" nếu đó là ý của bạn. –
Bạn có lẽ đúng về điều đó, nó hoạt động cho dù tôi xóa bàn chải hay không. Tôi không nhớ mình đã lấy mã đó từ đâu nhưng có một lời giải thích là tại sao bàn chải lại bị xóa như thế. – JWood