c/c++
江荣波
这个作者很懒,什么都没留下…
展开
-
C++中explicit关键字作用
explicit是c++中不太常用的一个关键字,其作用是用于修饰构造函数,告诉编译器定义对象时不做隐式转换。原创 2015-04-08 13:29:51 · 1051 阅读 · 1 评论 -
DirectUI界面编程(六)实现右键弹出菜单
本节向大家介绍一下右键弹出菜单是如何实现的。效果如下,在窗口中点击鼠标右键弹出菜单,点击菜单项能够响应菜单点击事件。 使用Duilib库实现的弹出菜单,实际上也是一个Windows窗口,因此我们需要创建两个窗口(主窗口和菜单窗口),然后响应主窗口的鼠标右键点击事件,在主窗口右键点击事件的响应函数中获取鼠标位置,將菜单窗口的位置调整为当前鼠标位置,同时把窗口设置为显示即可。菜单窗口的xml布局文原创 2015-08-01 12:33:10 · 4765 阅读 · 1 评论 -
DirectUI界面编程(三)从XML文件中加载界面
Duilib支持xml界面布局,使得界面设计与逻辑处理相分离,本节介绍如何从xml文件中加载界面元素。 我们需要以下几个步骤:创建并初始化CPaintManagerUI对象。创建CDialogBuilder对象,调用CDialogBuilder对象的Create函数加载xml文件,该函数返回界面元素根节点。调用CPaintManagerUI的AttachDialog將界面元素根节点附加到CP原创 2015-07-19 14:47:21 · 3421 阅读 · 0 评论 -
DirectUI界面编程(二)绘制一个按钮
上节介绍了使用源码方式构建Duilib应用的项目配置,并创建了一个最简单的基于Duilib库的窗口,细心的读者会发现,当我们点击窗口的关闭按钮时,应用并没有真的退出,因为我们并没有对窗口事件进行处理,本节我们在窗口中绘制一个按钮并响应窗口及按钮的相关事件。在窗口中绘制一个按钮我们需要以下几个步骤:创建并初始化CPaintManagerUI对象,CPaintManagerUI类是Duilib库的绘图原创 2015-07-18 19:57:23 · 4012 阅读 · 1 评论 -
Duilib应用修改程序图标方法
本文向大家介绍如何修改duilib应用图标,对于win32或者mfc应用来说,我们可以在注册窗口类时指定WNDCLASS结构体的HIcon属性。那么duilib应用该怎样处理呢?大家都知道Windows是基于消息驱动的操作系统,对于duilib应用,我们可以向窗口发送STM_SETICON消息来完成,这种方法也适用于win32/mfc应用。接下来我们看一下在Visual Studio中的操作步原创 2015-08-09 21:29:52 · 5420 阅读 · 0 评论 -
win32应用禁止改变窗口大小方法
一种简单的处理方法是在调用CreateWindow函数时指定的窗口样式中去掉WS_THICKFRAME样式。 如果你使用的样式中已经包含该样式,例如WS_OVERLAPPEDWINDOW,我们可以將WS_OVERLAPPEDWINDOW和WS_THICKFRAME进行按位异或运算来实现。hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPE原创 2015-07-04 22:41:41 · 10958 阅读 · 1 评论 -
DirectUI界面编程(五)WindowImplBase的使用
上节笔者向大家介绍了Duilib的界面布局并在最后编写了一个仿QQ旋风的界面,但是由于我们屏蔽了系统的标题栏,读者可能已经发现,我们的窗口没办法移动,同样也不能通过拖动来改变窗口的大小。这就需要我们对WM_NCHITTEST消息进行处理,该消息的LPARAM参数存放鼠标的x坐标和y坐标,在程序中需要对x/y坐标位置进行判断,当坐标落在下图红色线框位置时,我们向窗口过程函数返回HTCAPTION,这样原创 2015-07-26 21:57:39 · 5739 阅读 · 2 评论 -
DirectUI界面编程(一)创建第一个应用
1.获取Duilib库文件通过上一节大家对DirectUI界面设计有了初步的了解,本节开始我们一起学习Duilib界面库的使用。 首先我们需要获取Duilib库,目前最新版本为2.0,最新版本源码托管在Github上,项目地址: https://github.com/duilib/duilib 笔者选择的版本为1.1版,该版本可以从Google Code上获取: https://code.g原创 2015-07-11 15:54:19 · 11963 阅读 · 2 评论 -
Visual Studio添加lib到链接依赖项的几种方法
使用第三方库文件编写应用时经常会出现链接错误:错误 22 error LNK2019: 无法解析的外部符号.....该符号在函数.....在....中被引用出现这个错误的原因很简单,链接器在將库文件中代码链接到目标文件中时,在依赖lib中找不到函数的实现部分。 在Visual Studio中有三种办法可以將lib文件添加到链接依赖项中,在链接处理时就会从这些库文件中查找需要链接到目标文件中的原创 2015-05-11 23:18:01 · 16728 阅读 · 0 评论 -
使用tinyxml2库解析xml
tinyxml2简介tinyxml2是c++编写的轻量级的xml解析器,而且是开放源代码的,在一些开源的游戏引擎中用的比较多。源码托管在github上。 源码地址:https://github.com/leethomason/tinyxml2tinyxml2使用起来非常简单,下载源码后无需编译成lib文件,直接將tinyxml2.h和tinyxml2.cpp两个文件添加到你自己的工程中即可。原创 2015-04-25 10:24:13 · 8999 阅读 · 1 评论 -
error C4996: 'setmode': The POSIX name for this item is deprecated解决方案
在使用VS2012编译zlib库官方提供的案例程序 zpipe.c 中代码时报错: 信息如下:错误 1 error C4996: 'setmode': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _setmode. See online help for detai原创 2015-04-20 21:56:52 · 7998 阅读 · 0 评论 -
error C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead解决方案
vs2012使用c语言函数fopen操作文件时报错:错误 1 error C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.原创 2015-04-23 10:45:51 · 2953 阅读 · 0 评论 -
Windows平台下使用pthreads开发多线程应用
pthreads简介POSIX 1003.1-2001标准定义了编写多线程应用程序的API(应用程序编程接口),这个接口通常被称为pthreads。在常见的操作系统中,例如Unix、Linux、MacOS等都使用pthreads作为操作系统的线程。原创 2015-04-15 09:47:09 · 2566 阅读 · 0 评论 -
C++中友元类使用场合
在C++中我们可以將函数定义成类的友元函数,这样在函数中就可以访问类的私有成员。与函数相同,类也可以作为另一个类的友元类,在友元类中可以访问另外一个类的所有成员。 声明友元类的方法很简单,只需在类中写下如下语句:friend class 类名;接下来我们看一个案例,假如我们需要设计一个模拟电视机和遥控器的程序,代码如下。原创 2015-04-17 10:48:52 · 6207 阅读 · 1 评论 -
DirectUI界面编程(四)界面布局详解
Duilib的界面布局使用xml文件进行描述,在Duilib v1.1版本的xml布局文件中我们可以使用以下这些标签(后续版本标签有扩充): 这些标签总的来讲可以分为三类:窗口类,该类别中只有一个Window标签,它表示一个Window窗口,是每个xml布局文件的根节点,也是必不可少的元素。容器类,和该类别相关的标签有ChildLayout、Container、VerticalLayout、H原创 2015-07-24 22:53:10 · 4992 阅读 · 0 评论