MFC OnSize()中绘制的第一张图片无法显示,其他图片可以正常显示,为什么?
时间: 2024-02-17 08:02:24 浏览: 25
在 MFC 的 `OnSize()` 函数中绘制的第一张图片无法显示,可能是因为你没有正确的获取窗口的大小。在 `OnSize()` 函数中,窗口的大小发生了变化,需要重新绘制窗口中的内容。因此,在绘制图片之前,你需要正确的获取窗口的大小。具体的做法如下:
1. 在 `OnSize()` 函数中添加以下代码:
```cpp
void CMyView::OnSize(UINT nType, int cx, int cy)
{
CView::OnSize(nType, cx, cy);
Invalidate(); // 或者 InvalidateRect(NULL, TRUE);
}
```
2. 在 `OnDraw()` 函数中获取窗口的大小并绘制图片。例如:
```cpp
void CMyView::OnDraw(CDC* pDC)
{
CRect rect;
GetClientRect(&rect);
// 绘制第一张图片
CImage image1;
image1.Load(_T("path/to/image1.jpg"));
image1.Draw(pDC->GetSafeHdc(), rect);
// 绘制其他图片
CImage image2;
image2.Load(_T("path/to/image2.jpg"));
rect.top += image1.GetHeight();
image2.Draw(pDC->GetSafeHdc(), rect);
CImage image3;
image3.Load(_T("path/to/image3.jpg"));
rect.top += image2.GetHeight();
image3.Draw(pDC->GetSafeHdc(), rect);
}
```
这样,在窗口大小发生变化时,就会自动触发重绘,从而正确的获取窗口的大小并显示绘制的图片。