模仿QQ2011的登陆界面有很多种方法,下面我介绍一下我自己的设计方法以及在设计过程中所用到的技术关键点:

附截图两张:

登陆界面中用到的技术关键点有:

一、背景的绘制

QQ2011登陆界面的背景分为两部分,上半部分用一个Picture Control(图片控件),向里面可视化的添加一幅位图就ok了。下半部分在OnInitDialog()函数中调用SetBackgroundColor()函数改变对话框的背景颜色。

二、系统菜单(最大化、最小化、关闭按钮)和登录按钮的自绘制

最大化、最小化、关闭按钮以及登录按钮都是自绘制按钮,由CBitmapButton类来自绘制按钮。

头文件中:

CBitmapButton m_bitmapButton_MinWindow;
 CBitmapButton m_bitmapButton_MaxWindow;

CBitmapButton m_bitmapButton_CloseWindow;
 CBitmapButton m_bitmapButton_Land;

源文件中:

m_bitmapButton_MinWindow.LoadBitmaps(IDB_MIN1,IDB_MIN2);
m_bitmapButton_MaxWindow.LoadBitmaps(IDB_MAX1,IDB_MAX2);
m_bitmapButton_CloseWindow.LoadBitmaps(IDB_CLOSE2,IDB_CLOSE1);
m_bitmapButton_Land.LoadBitmaps(IDB_LAND1,IDB_LAND2);

通过CBitmapButton类的成员函数就可以很方便的为自绘制按钮贴上不同状态的位图。

三、输入账号的组合框控件的使用,以及向组合框中添加图像列表

输入账号的组合框要用到扩展的组合框控件(Extended Combo box),往组合框中添加图像列表要用到CBitmapList类

源文件实现如下:

m_pImageList = new CImageList();
 m_pImageList->Create(16, 16, ILC_COLOR8, 0, 4);
 m_pImageList->Add(AfxGetApp()->LoadIcon(IDI_ICON1));
 m_pImageList->Add(AfxGetApp()->LoadIcon(IDI_ICON2));
 m_pImageList->Add(AfxGetApp()->LoadIcon(IDI_ICON3));
 m_pImageList->Add(AfxGetApp()->LoadIcon(IDI_ICON4));
 m_ComboBoxEx.SetImageList(m_pImageList);

for(int i=0; i<m_pImageList->GetImageCount(); i++)
 {
  COMBOBOXEXITEM cbi ={0};
  CString str;
  int nItem;

cbi.mask = CBEIF_IMAGE | CBEIF_INDENT | CBEIF_OVERLAY |
   CBEIF_SELECTEDIMAGE | CBEIF_TEXT;

cbi.iItem = i;
  if (i==0)
  {
   cbi.pszText="875291736";
  }
  if (i==1)
  {
   cbi.pszText="717555344";
  }
  if (i==2)
  {
   cbi.pszText="858628250";
  }
  if (i==3)
  {
   cbi.pszText="1194527617";
  }
  cbi.cchTextMax = str.GetLength();
  cbi.iImage = i;
  cbi.iSelectedImage = i;
  cbi.iOverlay = 2;
  cbi.iIndent = 0;//(i & 0x03); //Set indentation according
  nItem =m_ComboBoxEx.InsertItem(&cbi);
   }

四、在线状态菜单的实现

在线状态的实现,从外观上看是左边一幅表示状态的位图右边一个向下的箭头,表示有一个下拉菜单,实际上它就是一个自绘制贴图按钮,跟上面的登录按钮一样,下拉列表实际上就是一个菜单(CMenu类的对象),当单击按钮时在该单击事件的响应函数中让menu在相应位置显示出来就行了。

状态按钮的实现:

m_bitmapButton_State.LoadBitmaps(IDB_BITHIDEUP,IDB_BITHIDDOWM);

下拉列表:

下拉列表用menu实现,就可以很方便的用CMenu的成员函数为其添加状态位图

menu.LoadMenuA(IDR_MENU_STATE);
 menu.GetSubMenu(0)->SetMenuItemBitmaps(0,MF_BYPOSITION,&m_bmp_online1,&m_bmp_online1);
 menu.GetSubMenu(0)->SetMenuItemBitmaps(1,MF_BYPOSITION,&m_bmp_qme,&m_bmp_qme);
 menu.GetSubMenu(0)->SetMenuItemBitmaps(3,MF_BYPOSITION,&m_bmp_leave,&m_bmp_leave);
 menu.GetSubMenu(0)->SetMenuItemBitmaps(4,MF_BYPOSITION,&m_bmp_busy,&m_bmp_busy);
 menu.GetSubMenu(0)->SetMenuItemBitmaps(5,MF_BYPOSITION,&m_bmp_nodis,&m_bmp_nodis);
 menu.GetSubMenu(0)->SetMenuItemBitmaps(7,MF_BYPOSITION,&m_bmp_steal,&m_bmp_steal);
 POINT ptCursor;
 GetCursorPos(&ptCursor);
 menu.GetSubMenu(0)->TrackPopupMenu(
  TPM_LEFTALIGN |TPM_RIGHTBUTTON,
  ptCursor.x, ptCursor.y + 6,
  this);
 menu.Detach();

以上就是我自己模仿QQ2011登录界面所用到的方法,可能不是最好的方法,与腾讯的产品也有一定的不一致。如果大家有好的方法,可以共同交流共同进步。

VS2010模仿QQ2011登陆界面相关推荐

  1. Qt 之 模仿 QQ登陆界面——功能篇(一)

    一.简述 今天是2017年第一篇技术文章,12月末事情太多,一直没来得及更新博客.今天继 Qt 之 模仿 QQ登陆界面--样式篇 这一篇 来简单地看一下对登录界面做的一些功能,主要是登录用户下拉列表和 ...

  2. ios swift模仿qq登陆界面,xml布局

    给大家推荐两个学习的地址: 极客学院的视频:http://www.jikexueyuan.com/path/ios/ 一个博客:http://blog.csdn.net/lizhongfu2013/a ...

  3. Qt 之 模仿 QQ登陆界面——旋转窗口篇

    #一.简述 今天是新的一年第一篇博客,有大半个月没有更新博客了.我想是时候,打开电脑.拿起键盘.开始在我的代码之路上披荆斩棘,斩杀恶龙. 今天就继续来分享QQ登录界面的那些事.QQ登录界面的标题栏有一 ...

  4. Android之模仿微信登陆界面(一)

    本次做的xml是登录和注册界面,用的是button的自定义图标 <RelativeLayout xmlns:android="http://schemas.android.com/ap ...

  5. HTML模仿静态京东登陆界面

    使用简单的html+css 进行京东登陆界面的简单模仿 并没有对css和html进行分开编辑 效果如图 素材元素私信获取 代码如下: <!doctype html> <html la ...

  6. android模仿qq登录界面,初识Android二之小试牛刀模仿实现qq登陆界面

    初识Android二之小试牛刀模仿实现qq登陆界面.俗话说得好,老师踢开门,修行在自己.勉勉强强学完生命周期,然后悠悠闲闲听了两节课后,老师就布置了一个登陆界面的实现,于是,磕磕绊绊的修行之路开始了. ...

  7. java代码完全手写模仿qq登录界面

    这是我模仿QQ2015版界面,实现的基本功能有登陆验证,重置等,当然直接复制代码运行是不一样的,还要注意自己插入自己的图片. 结果截图如下所示: import java.awt.BorderLayou ...

  8. Android仿新浪微博弹出界面动画,Android仿新浪微博启动界面或登陆界面(1)

    本文为大家分享了Android模仿新浪微博启动界面&登陆界面的具体实现代码,供大家参考,具体内容如下 启动界面 主要有两个功能: 1.加载启动动画 2.判断网络,有者直接进入登陆界面,否则去设 ...

  9. 京东登陆界面(静态)

    ps:模仿的京东的登陆界面,但只是个静态的,还没有怎么熟练运用javascript的知识,代码如下 <!DOCTYPE html> <html><head>< ...

最新文章

  1. C程序设计-----第1次作业
  2. 华为鸿蒙10月17日,华为宣布10月17日重磅新机:鸿蒙系统+全球首发屏下摄像头...
  3. 生信多组学整合工具的比较研究
  4. java内存泄漏总结
  5. css html基础书,htmlcss基础知识汇总,新人必看!
  6. python execute_command err_Python management.execute_from_command_line方法代碼示例
  7. 第二次小组实践作业小组每日进度汇报:2017-11-29
  8. Excel不好吗?为什么非要用Python做数据分析
  9. html和css实现时间表,前端 CSS : 6# 纯 CSS 实现时间线
  10. php的原子操作,php实现含有redis命令的原子操作
  11. C#控制台应用程序执行结果一闪而过的解决方法
  12. DBConvert Studio - 数据库迁移和同步 - Crack
  13. C++经典算法题-有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
  14. c语言中取小数函数,C / C++ 保留小数函数(setprecision(n)的一些用法总结)
  15. 关于电脑新建共享文件夹相关教程
  16. Java分别获取指定日期的年月日
  17. 使用icomoon引入字体图标及扩充字体图标的方法
  18. 使用switch编写一个四则运算(+、-、*、/)
  19. php用chrome打不开,chrome打不开任何网页怎么回事_一招解决chrome打不开任何网页的方法-系统城...
  20. 心理学与计算机应用,心理学可以和计算机结合做些什么么?

热门文章

  1. JavaScript调用原生API获取手机型号
  2. 如何解决出现 unable to resolve host 问题
  3. JAVA-打印圆形三种代码
  4. android串口获取电子秤数据,c# 打开电子秤串口并读取电子秤数据
  5. 路由+ros+linux,ROS+openwrt(旁路由) IP分流稳定出国方案 ESXI高端玩法
  6. 系统安装:苹果电脑Windows完美分区法
  7. C语言求一万以内的超级素数,用C语言求素数的优化.doc
  8. 怎么把pdf分割成一页一页的
  9. Pinia食用指南-基础
  10. 地图工具类:02坐标系与84坐标系转换