在Onpaint中调用 CWnd *pWnd;
pWnd = GetDlgItem(IDC_Img);
ShowBitmap(pWnd);然后再ShowBitmap中填充Img区域,再拷贝一个位图,但是位图重绘有问题。
另外,怎么得到对话框的hInstance来load位图,可以这么用吗?
hBmp=LoadBitmap(theApp.m_hInstance,"MyBitmap");
BOOL ShowBitmap::ShowBitmap(CWnd *pWnd)
{
HANDLE hBmp;
HDC hBitmapDC;
HDC hMemDC;
PAINTSTRUCT PtrStr;
int bitmapWidth=266;
int bitmapHeight=64;
HGDIOBJ prevObject;
HBRUSH fill;
HDC hdcRect;
CRect rect; pWnd->GetClientRect(&rect); hdcRect=::GetDC(pWnd->m_hWnd);
fill=CreateSolidBrush(0xFFFFFF); // Select white brush
prevObject=SelectObject(hdcRect,fill);
FillRect(hdcRect,&rect,fill); // Paint white rect
SelectObject(hdcRect,prevObject);
DeleteObject(fill);
::ReleaseDC(pWnd->m_hWnd,hdcRect); hBmp=LoadBitmap(theApp.m_hInstance,"MyBitmap");
hBitmapDC=::BeginPaint(pWnd->m_hWnd,&PtrStr);
hMemDC=CreateCompatibleDC(hBitmapDC);
SelectObject(hMemDC,hBmp);
//Place Bitmap in center of paint area
BitBlt(hBitmapDC,
rect.left, // x
rect.top, // y
bitmapWidth, // width
bitmapHeight, // height
hMemDC,0,0,SRCCOPY);
DeleteDC(hMemDC);
::EndPaint(pWnd->m_hWnd,&PtrStr); return true;
}
pWnd = GetDlgItem(IDC_Img);
ShowBitmap(pWnd);然后再ShowBitmap中填充Img区域,再拷贝一个位图,但是位图重绘有问题。
另外,怎么得到对话框的hInstance来load位图,可以这么用吗?
hBmp=LoadBitmap(theApp.m_hInstance,"MyBitmap");
BOOL ShowBitmap::ShowBitmap(CWnd *pWnd)
{
HANDLE hBmp;
HDC hBitmapDC;
HDC hMemDC;
PAINTSTRUCT PtrStr;
int bitmapWidth=266;
int bitmapHeight=64;
HGDIOBJ prevObject;
HBRUSH fill;
HDC hdcRect;
CRect rect; pWnd->GetClientRect(&rect); hdcRect=::GetDC(pWnd->m_hWnd);
fill=CreateSolidBrush(0xFFFFFF); // Select white brush
prevObject=SelectObject(hdcRect,fill);
FillRect(hdcRect,&rect,fill); // Paint white rect
SelectObject(hdcRect,prevObject);
DeleteObject(fill);
::ReleaseDC(pWnd->m_hWnd,hdcRect); hBmp=LoadBitmap(theApp.m_hInstance,"MyBitmap");
hBitmapDC=::BeginPaint(pWnd->m_hWnd,&PtrStr);
hMemDC=CreateCompatibleDC(hBitmapDC);
SelectObject(hMemDC,hBmp);
//Place Bitmap in center of paint area
BitBlt(hBitmapDC,
rect.left, // x
rect.top, // y
bitmapWidth, // width
bitmapHeight, // height
hMemDC,0,0,SRCCOPY);
DeleteDC(hMemDC);
::EndPaint(pWnd->m_hWnd,&PtrStr); return true;
}
解决方案 »
- 编译连接都成功,Ctrl+F5运行不起来是咋回事?
- 如何让某控件始终位于另一控件之上,不管是否拥有焦点???
- MDIGetActive()不能获得激活子窗口指针问题
- [急切求助]关于VC环境下使用正则表达式的问题!!!
- VC软件怎么获取一个网站用户是否已登录的信息
- 请教 opengl上如何把文本绘上去呀 ?
- 要下载网络文件,却得不到正确长度
- VC与CB的比较,我公司内部争论的问题,请大家帮忙例出两种开发工具
- 急!!!请教关于手动添加CTreeCtrl后,消息的处理问题,不胜感激!!肯定给分
- 一个简单的c++程序,在vc++下编译,出现了两个错误,请高手看看。
- 在文档类中应如何调用视图类中的OnDraw()函数?
- 我是一名VC新手,请帮忙看一下程序,问题出在什么地方?
用BeginPaint得到的DC,不需要再GetDC;重绘时要根据PAINTSTRUCT中的参数,不要一律重绘,也不需要每次都Load位图。