创建任意形状的窗口在哪,创建图形窗口
1、新建一个应用向导项目,选择选基于文档或者对话框都可以。
2、添加两个图片,如下,第二张图片把第一张图片的中间部分镂空,也即删除该部分区域,让背景透明
3、添加位图资源,导入上面的那两张图片。
4、新建一个基类为拥塞窗口的类透明的,代码如下:
头文件:
[cpp:崩溃]展开sourceview plaincopyprint?
//TransparentWnd .h #如果!defined(AFX _ transparent wnd _ H _ _ INCLUDED _)# definea FX _ transparent wnd _ H _ _ INCLUDED _ # if _ MSC _ VER 1000 # pragmaonce # endif类ctransparnentwnd:public cwnd { public:ctransparnentwnd();voidCreateTransparent(lpctstrpttitle,RECT rect,unsignedshortMaskID,unsignedshortBitmapID);voidSetupRegion(CDC*pDC,unsignedshortMaskID);public://Overrides//classwizardgenertedvirtualfunctionoverrides//{ { AFX _ VIRTUAL(ctransparenwnd)//} } AFX _ VIRTUAL//Implementation public:VIRTUAL ~ ctransparnentwnd();protected:unsignedshortm _ BitmapID;//Generatedmessagemapfunctions protected://{ { AFX _ MSG(ctransparenwnd)AFX _ msgvoidOnPaint();afx _ msgBOOLOnEraseBkgnd(CDC * pDC);afx _ msgvoidOnLButtonDown(UINTnFlags,c点);//} } AFX _ MSG DECLARE _ MESSAGE _ MAP()};//{ { AFX _ INSERT _ LOCATION } }//Microsoft visual c++ willinsertatadditionaldeclarationimmediately before previous line .#endif
实现文件:
[cpp:崩溃]展开sourceview plaincopyprint?
//透明nd .卡片打印处理机(Card Print Processor的缩写)包括stdafx。h包括透明的。h包括断言。h # ifdef _ debug # define wdebug _ new # un fthis _ file static artis _ file[]=_ _ _ _ _ _ _ _文件;-伊甸园字幕组=-翻译:粒粒粒尘紫月猫姐风景校对:阿衡时间轴:邦德猪创建一个背景透明的窗体* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * void ctransparnate nd:create transparent(lpctstrptettle、RECT、unsignedshortmaskid、signed horbitmapid){ createex(0、afxreworkrwndclass(0)、pTitle、ws _ popup ws _ sysmenu、rect、NULL、NULL); 安装区域(GetWindowDC()、MAS kid);m_BitmapID=BitmapID:-不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不创建一个背景透明的窗体*安装区域(疾控中心*pDC,未签署的rth MAS kid)* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * cbit bitmap cbit bitmap; cbitmap * poldmembmp=null彩色参考列;乳膏;乳膏;intx,y;crgnwndrgn、rgntempgetwindowrect(crect);cbitmap(全球定位系统)。加载位图(马斯基德):模因DC .创建兼容的DC(PDC);pOldMemBmp=memDC .选择对象(CBI tap);wndrgn(消歧义)。create director n(0,0,cRect).宽度()、宽度.height();for(x=0);x=cRect .宽度();x { for(y=0);y=cRect .height();y ){col=memDC .GetPixel(x,y);if(col=0){ rgntemp .createrectorn(x,y,x 1,y1);wndrgn(消歧义)。组合(wndRgn、rgnTemp、rgn _ xorg);rgntemp公司delete object():} } if(pOldMemBmp)memDC .选择对象(poldmembmp);SetWindowRgn((HRGN)wndRgn,true);-不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不响应鼠标左键点击,让窗口可移动**本报告迟交,是因为需要更多的资料post消息(WM _ ncbutton down、HTCAPTION、make LPAR(point。x、点。y));-不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不加载图片一作为背景(三)在《生物多样性公约》的框架内,在《生物多样性公约》的框架内,在《生物多样性公约》和《生物多样性公约》的框架内,在《生物多样性公约》的框架内,促进和保护生物多样性;GetWindowRect(矩形);疾控中心;cbitbitmap cbitbitmapcbitmap * poldmembmp=nullcbitmap(全球定位系统)。LoadBitmap(m_BitmapID):模因DC .创建兼容的DC(PDC);pOldMemBmp=memDC .选择对象(CBI tap);pDC- BitBlt(0,0,矩形)。宽度()、矩形.Height()、memDC、0.0、srccopyif(pOldMemBmp)memDC .选择对象(poldmembmp);返回TRUE:} voidctransparency nd:onpaint(){ cpaintdcdc(this);//在此添加绘图代码!在这里!}
5修改项目中的应用程式。卡片打印处理机(Card Print Processor的缩写)文件的初始实例()函数,如下:
[cpp]视图plaincopyprint?
boolapp:init instance(){ setregistrkey(_ t( localappwizard-generadapplications));ctrl transparency * pframe=新ctrl transparency;m _ pman in=pf铜;克里特岛(0.0、200、250);pf frame-create transparent( transparency ,rect,IDB_BITMAP2,IDB _ bitmap 1);脉波频率(Pulse Frequency的缩写)铜显示窗口(SW _ show);pf frame-更新窗口();返回真:}
6 ._运行看结果:
7 .自己试试!
8 ._扩展:
我们可以制作一组连续的图片构成动画,然后按照上面的方法动态更改窗口背景图片,可以作出更加好看的动画窗口,试试。