visual c++窗体设计技巧集

visual c++窗体设计技巧集

ID:15331955

大小:70.50 KB

页数:20页

时间:2018-08-02

visual c++窗体设计技巧集_第1页
visual c++窗体设计技巧集_第2页
visual c++窗体设计技巧集_第3页
visual c++窗体设计技巧集_第4页
visual c++窗体设计技巧集_第5页
资源描述:

《visual c++窗体设计技巧集》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、本资料由-校园大学生创业网-提供http://www.chuangyw.com/Visual C++窗体设计技巧集[前言:]有好的界面软件就成功了一半,本文将向您介绍怎样设计一些有“稀奇古怪”形状的窗体,如何设定窗体的颜色、如何设置任务栏和状态栏以及菜单图标等等,通过这些技巧能更深入的理解VC的文档-视图结构。  如何制作透明窗体  使用SetLayeredWindowAttributes可以方便的制作透明窗体,此函数在w2k以上才支持,而且如果希望直接使用的话,可能需要下载最新的SDK。不过此函数在w

2、2k的user32.dll里有实现,所以如果你不希望下载巨大的sdk的话,可以直接使用GetProcAddress获取该函数的指针。  SetLayeredWindowAttributes的函数原型如下:BOOLSetLayeredWindowAttributes(HWNDhwnd,//handletothelayeredwindowCOLORREFcrKey,//specifiesthecolorkeyBYTEbAlpha,//valuefortheblendfunctionDWORDdwFlags/

3、/action);WindowsNT/2000/XP:IncludedinWindows2000andlater.Windows95/98/Me:Unsupported.(注意了,在win9x里没法使用的)Header:DeclaredinWinuser.h;includeWindows.h.Library:UseUser32.lib.  一些常量:WS_EX_LAYERED=0x80000;LWA_ALPHA=0x2;LWA_COLORKEY=0x1;  其中dwFlags有LWA_ALPHA和LWA

4、_COLORKEY  LWA_ALPHA被设置的话,通过bAlpha决定透明度.  LWA_COLORKEY被设置的话,则指定被透明掉的颜色为crKey,其他颜色则正常显示.  要使使窗体拥有透明效果,首先要有WS_EX_LAYERED扩展属性(旧的sdk没有定义这个属性,所以可以直接指定为0x80000).在线代理http://www.dailiav.com/提供部分资料本资料由-校园大学生创业网-提供http://www.chuangyw.com/  例子代码:  在OnInitDialog()加入

5、://加入WS_EX_LAYERED扩展属性SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000);HINSTANCEhInst=LoadLibrary("User32.DLL");if(hInst){ typedefBOOL(WINAPI*MYFUNC)(HWND,COLORREF,BYTE,DWORD); MYFUNCfun=NULL; //取得SetL

6、ayeredWindowAttributes函数指针 fun=(MYFUNC)GetProcAddress(hInst,"SetLayeredWindowAttributes"); if(fun)fun(this->GetSafeHwnd(),0,128,2); FreeLibrary(hInst);}  稍加修改还可以作出淡出淡入的效果.注意第三个参数(128)不要取得太小了,为0的话就完全透明,看不到了。  如何使框架窗口的图标为动画显示  可以用TIMER,但是TIMER不能有效的定时。因为TIM

7、ER发送的是窗口消息,当窗口忙于处理键盘、鼠标等消息时就不能及时处理TIMER,会使间隔时间变得很长。  可以考虑用一个单独得TIMER线程,用Sleep()定时来解决此问题。UINTTimer(LPVOIDparam){ HWNDhWnd=(HWND)param; while(1) {  Sleep(ms);  PostMessage(hWnd,CH_PICTURE,NULL,NULL) }}  Sleep(ms)后发送自定义消息。消息处理函数就选择某一个ICON或BITMAP来显示。如:MyBott

8、on.SetBitmap((HBITMAP)Bitmap[i]);在线代理http://www.dailiav.com/提供部分资料本资料由-校园大学生创业网-提供http://www.chuangyw.com/  Bitmap是一个位图数组,存放有j个位图。消息处理函数运行一次,i就累加一次,当i==j时,i就回到0;  防止窗口闪烁的方法  1、将Invalidate()替换为InvalidateRect()。  Invalidate(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。