资源描述:
《mfc图片加载方法参考》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、加背景图片的一种方法显示位图原理:1、声明一个CBitmap对象,并从资源中加位图。2、创建一个兼容的DC,用CDC的成员函数CreateCompatibleDC。3、用CDC的成员函数SelectObject将位图选入到兼容DC中。4、用CDC的成员函数BitBlt来输出位图。Windows在向窗口发送WM_PAINT消息之前,总会发送一个WM_ERASEBKGND消息通知该窗口擦除背景,默认情况下,Windows将以窗口的背景色清除该窗口。可以响应窗口(包括子元素)的WM_ERASEBKGND,以更改它们的背景。WM_ERASEBKGND的映射函数原型如下:afx_msgBOOLOnE
2、raseBkgnd(CDC*pDC);返回值:指定背景是否已清除,如果为FALSE,系统将自动清除参数:pDC指定了绘制操作所使用的设备环境。用图片控件,好像图片最多色彩数不超过256色,也就是8位,但是用代码在里面写的方法就可以解决这个问题了.大致代码时:BOOLCUi4Dlg::OnInitDialog(){//加载位图//CBitmapm_Back;m_Back.LoadBitmap(IDB_BACK);}BOOLCUi4Dlg::OnEraseBkgnd(CDC*pDC){CDCdc;GetWindowRect(rect);GetClientRect(rect);SetWindow
3、Posdc.CreateCompatibleDC(pDC);dc.SelectObject(&m_Back);//获取BITMAP对象BITMAPhb;m_Back.GetBitmap(&hb);//获取窗口大小CRectrt;GetClientRect(&rt);//显示位图pDC->StretchBlt(0,0,rt.Width(),rt.Height(),&dc,0,0,hb.bmWidth,hb.bmHeight,SRCCOPY);returnTRUE;}HBRUSHCUi4Dlg::OnCtlColor(CDC*pDC,CWnd*pWnd,UINTnCtlColor){//设置透
4、明背景模式pDC->SetBkMode(TRANSPARENT);//设置背景刷子为空return(HBRUSH)::GetStockObject(HOLLOW_BRUSH);}6窗口的最前端显示WindowsAPI改变窗口的属性。一直保持在窗口的最前端,函数SetWindowPos声明如下:WINUSERAPIBOOLWINAPISetWindowPos(__inHWNDhWnd,//hWnd是窗口的句柄。__in_optHWNDhWndInsertAfter,//hWndInsertAfter是窗口Z顺序属性。__inintX,//X是窗口在X轴的位置。__inintY,//Y是窗口在
5、Y辆的位置。__inintcx,//cx是窗口的宽度。__inintcy,//cy是窗口的高度。__inUINTuFlags//uFlags是选择设置的标志。);调用这个函数的例子如下:LRESULTCCaiWinMsg::OnCommand(intnID,intnEvent){switch(nID)//菜单选项命令响应:{caseIDC_CREATEBTN://显示一个按钮。if(!m_hBtn){m_hBtn=CreateWindow(_T("BUTTON"),_T("按钮"),WS_VISIBLE
6、WS_CHILD
7、BS_PUSHBUTTON,50,50,100,32,m_hWnd,
8、(HMENU)IDC_BTN,m_hInstance,NULL);}break;caseIDC_BTN:OutputDebugString(_T("按钮按下r"));{staticboolbChangeText=true;if(bChangeText){SetWindowText(m_hBtn,_T("改变它"));//设置按钮的文字。MoveWindow(m_hBtn,10,10,100,32,TRUE);//改变按钮窗口的位置和大小。//改变主窗口为最顶端窗口。SetWindowPos(m_hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE
9、SWP_NOSI
10、ZE);}else{SetWindowText(m_hBtn,_T("按钮"));//设置按钮的文字。MoveWindow(m_hBtn,50,50,100,32,TRUE);//改变按钮窗口的位置和大小。//改变主窗口为普通窗口。SetWindowPos(m_hWnd,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE
11、SWP_NOSIZE);}//每一次都改变。bChangeText=!bChange