实现类似QQ游戏大厅的界面

lpscjn 2007-06-02 11:44:52
QQ游戏的大厅应该是属于对话框还是文档/视图的类型?或者其他?如何实现?哪位给个例程或者思路也可以。
...全文
496 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
psbeond 2007-06-04
  • 打赏
  • 举报
回复
抽空给你写了一个框架, 你看一下:
先安装:
http://www.iuishop.com/download/LibUIDK3.0.zip
然后编译:
www.iuishop.com/QQGame.rar

我只是演示了怎么做, 工具栏只做了一个按钮, 就是第一个"361俱乐部"那个有效.其它方法类似.
ggglivw 2007-06-04
  • 打赏
  • 举报
回复
建立一个cdialog类型的MFC程序,其他的在上面添加控件、按钮
psbeond 2007-06-04
  • 打赏
  • 举报
回复
对, 对于有能力和时间来说的话, 自己做是首选, 质量自己控制, 也能学到知识. 多看看GDI和绘图消息方面的知识.
lpscjn 2007-06-04
  • 打赏
  • 举报
回复
谢谢楼上,我还是喜欢自己做,哈哈,能学到好多东西,自己从头做的话
eduyu 2007-06-03
  • 打赏
  • 举报
回复
spy++ 查查一切都清楚了。
psbeond 2007-06-03
  • 打赏
  • 举报
回复
这类界面其实非常简单. 所有的工具栏按钮全是普通按钮, 连最小化, 关闭, 最大化也都是按钮.
中间一般是web browser控件.
长尾巴的悟空 2007-06-03
  • 打赏
  • 举报
回复
视类,然后添加其他控件

打完收工~
回风舞雪 2007-06-03
  • 打赏
  • 举报
回复
最上面的,我想,是用贴图来实现的吧
也用用spy查了下
回风舞雪 2007-06-03
  • 打赏
  • 举报
回复
如果是对话框嵌入视图的话,应该是通过CTabCtrl,嵌入的吧
psbeond 2007-06-03
  • 打赏
  • 举报
回复
也不一定非得是对话框, 单文档或多文档. 这只是一种设计模式, 当然, 用对话框是大部分人的首选, 因为比较简单吧. 你可以从CWnd派生一个类作为主窗口, 然后在OnPaint中贴图. 然后按功能和界面, 把主程序分成几个不同的窗口, 然后每个窗口都从CWnd派生. 按逻辑关系把它们设为父子关系. 用程序控制它们的位置等信息. 你也可以使用免费的界面库LibUIDK来完成这项工作, 贴图过程由界面库做,你只需要在皮肤编辑器中指定背景位图就可以. 你也可以下载UUSEE网络播放器, 界面和QQ游戏大厅十分相似, 它是用LibUIDK做的. LibUIDK有收费版本, 提供更多功能, 不过免费版基本也能满足要求了.
www.iuishop.com下载.
lpscjn 2007-06-02
  • 打赏
  • 举报
回复
期待真正的高手。。。。。。
lpscjn 2007-06-02
  • 打赏
  • 举报
回复
我用SPY看过了,上面的不是工具栏,如果是对话框的话,就得嵌入视图然后再切分吧?可是如果是文档/试图的话,上面的类似标题栏工具栏之类的应该怎么弄呢?
lpscjn 2007-06-02
  • 打赏
  • 举报
回复
会就帮个忙,不会就就不会,用不着在这打击人吧。最讨厌这些装老大的家伙,是牛人你拿出点干货来,这算是什么态度?
回风舞雪 2007-06-02
  • 打赏
  • 举报
回复
应该是对话框类型的
左边是TabCtrl+TreeCtrl
右边可能是TabCtrl+ListCtrl
上面可能是工具栏
  • 打赏
  • 举报
回复
如果这个还分不清,琢磨这事就还太早了些。有例程(能是几行代码就搞定的吗)也不一定看得明白。
i_love_pc 2007-06-02
  • 打赏
  • 举报
回复
对话框
lpscjn 2007-06-02
  • 打赏
  • 举报
回复
楼上,呵呵,实际做做你就知道了。问题基本解决了,用的对话框嵌入视图,不过还有很多问题
Y___Y 2007-06-02
  • 打赏
  • 举报
回复
是用什么都可以,不就是贴一些图片上去
第一步:新建一个基于对话框的MFC工程,拖动一棵标准树型控件放于界面之上。添加一个新类CTreeCtrlBT派生自CTreeCtrl。 第二步:为该类添加一些消息响应以及虚函数。其详细作用如下: void PreSubclassWindow(); //用于添加初始化控件的相关信息 WM_SIZE //控件区域发生变化时候的处理 WM_PAINT //绘制控件 WM_MOUSEMOVE //主要获取鼠标所在位置的单元项 第三步:TreeCtrlBT.h中首先声明一个结构用于保存单元项的相关信息,并把所有项的信息放入一个map。实现代码如下: typedef struct tagItemMsg { HTREEITEM hItem; //项的句柄 CBitmap ItemBitmap; //项的位图 COLORREF crTransparent; //透明颜色 tagItemMsg() { hItem = NULL; crTransparent = RGB(255,255,255); } ~tagItemMsg() { if ( ItemBitmap.GetSafeHandle() ) { ItemBitmap.DeleteObject(); } } }ITEM_MSG; typedef map ITEMMSG_MAP; 第四步:计算控件的客户区域大小,以及滚动条滚动的偏移量。详细过程参考源代码 Calculate函数。 第五步:添加接口函数以及成员变量。如下: (注意:TransparentBlt函数,需要包含msimg32.dll) //设置背景位图BOOL SetBackgroudBitmap( UINT nID );BOOL SetBackgroudBitmap(LPCTSTR lpszRecourceName);//设置某一项位图void SetItemBitmap(HTREEITEM hItem, UINT nIdBitmap);void SetItemBitmap(HTREEITEM hItem, LPCTSTR lpszBitmap);//设置展开收缩的图表void SetExpandBitmap(UINT nIdExpand, UINT nIdCollapse, COLORREF crTransparent = RGB(255,255,255));//插入新的项目HTREEITEM InsertItemEx(HTREEITEM hParent, LPCTSTR lpszItem, UINT nIdBitmap = 0, OLORREF crTransparent = RGB(255,255,255));HTREEITEM InsertItemEx(HTREEITEM hParent, LPCTSTR lpszItem, LPCTSTR lpszBitmap, COLORREF crTransparent = RGB(255,255,255));//开启横线void EnableRowLine( BOOL bEnable = TRUE );//是否开启横线BOOL IsEnableRowLine();//开启根节点背景void EnableRootBk( BOOL bEnable = TRUE );//是否开启根节点背景BOOL IsEnableRootBk();//获取某一项信息ITEM_MSG* GetItemMsg(HTREEITEM hItem); 第六步:绘制控件。需要的绘制函数如下: //绘制渐变色矩形区域void GradientFillRect( CDC *pDC, CRect &rect, COLORREF col_from, COLORREF col_to, bool vert_grad ); //绘制控件背景void DrawBackgroudBitmap(CDC* pDc); //绘制单元项void DrawItem( CDC* pDC ); //绘制单元项下部横线void DrawRowLine(CPoint ptBegin, CPoint ptEnd, CDC *pDc = NULL); //绘制展开收缩按钮void DrawExpand(CRect rect, int state,

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧