基于Visual C++的异形窗口及数据库便携技术的研究及应用.docVIP

  • 1
  • 0
  • 约5千字
  • 约 10页
  • 2019-08-23 发布于北京
  • 举报

基于Visual C++的异形窗口及数据库便携技术的研究及应用.doc

PAGE PAGE 1 基于VisualC++的异形窗口及数据库便携技术的研究及应用   摘要:提出了一种数据库便携技术,介绍了一种异形窗口技术,并综合利用了VisualC++多线程等技术实现了一个工程实例。还提出了一种新的思路:利用桌面程序和便携式数据库来开发CAI软件,不仅能让学生脱机练习,解决学生宿舍无法访问高校局域网服务器的问题,而且稍加变化即可用于上机考试,灵活机动。通过编程设置数据源的方式配合其他技术手段来达到数据库便携的目的,并对两种数据库便携技术进行了性能上的分析研究。   关键词:异形窗口;数据库便携;数据库性能   中图分类号:TP311文献标识码:A文章编号:1009-3044(2013)12-2764-04   如今基于Web浏览器的B/S程序得以流行,究其原因,不仅是因为B/S程序本身具有使用便捷、易于维护等优点,还与社会及开发人员对B/S应用的盲目跟风有一定关系。针对基于VisualC++技术开发的C/S程序,存在着应用程序的界面美化不够、没有合适的数据库便携技术等问题。   本文介绍了一种异形窗口技术和一种数据库便携解决方案,并利用这种方案开发出一个工程实例。本实例的目的在于解决日常教学中遇到的如下问题:状况较好的校园有线网络往往需要一笔费用,而WLAN也价值不菲且经常不畅通,且高校中普遍存在学生宿舍区无法访问教学区服务器的情况。若采用B/S结构来开发CAI软件,反而要受校园网络状况的限制。相比之下,一款便携的桌面练习系统对于学生学习相关课程具有非常大的优势,很受欢迎。   1一种异形窗口技术   随着Microsoft凭借Windows在操作系统上取得的巨大成绩,Windows用户界面也日益成为业界标准。统一的界面给广大用户对应用软件的学习与使用带来了很大方便。但每天都面对同一副面孔,日久天长难免会产生一些厌倦,开发一些“离经叛道”,一改Windows应用程序千篇一律的“标准”界面,一定会给你带来一种清新的感觉。标准Windows应用程序窗口一般为带有标题栏的浅灰色矩形外观,因而“异形”对话框/窗口也主要是颜色与外形上动手脚。   本文利用位图创建异形对话框原理是根据象素的颜色来进行“扣像”处理,对所有非指定颜色象素区域进行区域组合,并将异形窗口功能封装成类,便于使用。这一技术,实际上就是实现对话框/窗口的位图背景,并且对指定的颜色区域进行透明处理。具体是利用SetTransparentColor来设置某种颜色是透明色。部分关键代码如下:   BOOLCDialogSS::SetTransparentColor(COLORREFcol,BOOLbTrans)   {   if(g_pSetLayeredWindowAttributes==NULL)returnFALSE;   if(bTrans)   {   //把此对话框设置为layered样式   SetWindowLong(m_hWnd,GWL_EXSTYLE,GetWindowLong(m_hWnd,GWL_EXSTYLE)|WS_EX_LAYERED);   //调用pSetLayeredWindowAttributes函数,参数alpha为0   g_pSetLayeredWindowAttributes(m_hWnd,col,0,LWA_COLORKEY);   }   else   {   SetWindowLong(m_hWnd,GWL_EXSTYLE,GetWindowLong(m_hWnd,GWL_EXSTYLE)~WS_EX_LAYERED);   //重绘窗口   ::RedrawWindow(m_hWnd,NULL,NULL,RDW_ERASE|RDW_INVALIDATE|RDW_FRAME|RDW_ALLCHILDREN);   }   returnTRUE;   }   其中是通过如下关键代码来获取到函数指针:   HMODULEhUser32=GetModuleHandle(_T(USER32.DLL));   g_pSetLayeredWindowAttributes=(lpfnSetLayeredWindowAttributes)   GetProcAddress(hUser32,SetLayeredWindowAttributes);   在创建异形窗口时,先创建一副bitmap,将透明的部分设置成某种单色,比如green,然后在代码中作如下初始化:   SetBitmap(IDB_BITMAP_R);//设置背景bitmap   SetTransparentColor(RGB(0,255,0));//设置透明颜色为绿色   本文还实现了一种HUD(平视显示器)效果,即在镂空的钟表界面中间来显

文档评论(0)

1亿VIP精品文档

相关文档