64,654
社区成员
发帖
与我相关
我的任务
分享
void HID5000PSoundCardDlg::OnPaint()
{
//添加主界面背景图片
CRect InterfaceRect;
CPaintDC Interfacedc(this);
CBitmap Interfacebitmap;
CBrush Interfacebrush;
CBrush* pOldInterfaceBrush;
Interfacebitmap.LoadBitmap(IDB_BITMAP_BACKGROUND); //这个IDB_BITMAP1要自己添加,文件被定义在resource.h文件中,可以通过Easy USB 51 Programer Test1.rc这个文件来进行资源管理
Interfacebrush.CreatePatternBrush(&Interfacebitmap);//用于绘制背景图的画笔,使用上面的背景图片
pOldInterfaceBrush=Interfacedc.SelectObject(&Interfacebrush);
GetWindowRect(&InterfaceRect);//得到要绘图的区域,如果需要获得窗体在屏幕上的位置,使用GetWindowRect
//InterfaceRect.Width();//宽度
//InterfaceRect.Height();//高度
Interfacedc.Rectangle(0,0,InterfaceRect.Width(),InterfaceRect.Height()); // 这些参数可以调整图片添加位置和大小
//Interfacedc.Rectangle(50,50,InterfaceRect.Width(),InterfaceRect.Height()); // 这些参数可以调整图片添加位置和大小
Interfacedc.SelectObject(pOldInterfaceBrush);
if (IsIconic())//窗口是否处于最小化状态
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);//获取屏幕的像素大小,参数是图标
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);// 得到的是在客户区坐标系下的RECT(即以所在窗口左上角为原点,去掉了标题栏计算,仅仅是个大小,返回值的左上角永远为0,0)
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else//否则直接执行OnPaint函数,这个是父类CDialog的静态方法
{
CDialog::OnPaint();
}
}