鉴于我在 GDI 中实现双缓冲:
static HDC hdc;
static HDC backDC;
static HBITMAP backBuffer;
static HGDIOBJ oldBitmap;
static RECT client;
case WM_CREATE:
hdc=GetDC(hWnd);
GetClientRect(hWnd, &client);
backDC=CreateCompatibleDC(hdc);
backBuffer=CreateCompatibleBitmap(hdc,client.right,client.bottom);
oldBitmap=SelectObject(backDC,backBuffer);
ReleaseDC(hWnd,hdc);
case WM_PAINT:
Rectangle(backDC, 0, 0,client.right,client.bottom); // displays rectangle the
size of client to draw on it
hdc = BeginPaint(hWnd, &ps);
BitBlt(hdc,0,0,client.right,client.bottom,backDC,0,0,SRCCOPY);
// TODO: Add any drawing code here...
EndPaint(hWnd, &ps);
如何处理调整大小?我试图做的一件事是
case WM_SIZE:
client.right=LOWORD(lParam);
client.bottom=HIWORD(lParam);
SendMessage(hWnd,WM_CREATE,NULL,NULL);
它的作用是,一旦我收到带有新客户端坐标的 resize 消息,它就会将消息发送到 WM_CREATE 并且它实际上可以工作....但是!它会造成大量泄漏,因为我基本上每次都会创建一个新位图而不会破坏它。有人可以告诉我是否有更好的方法吗?谢谢