小伙伴们有点迫不及待了么,来看一看Hello World吧:

新建一个空的win32项目,新建一个main.cpp文件,将以下代码复制进去:

#include <windows.h>
#include <tchar.h> int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
::MessageBox(NULL, _T("Hello World !"), NULL, NULL);
return 0;
}

  

运行即可看到如下结果:

    
 
    咦,这不是win32程序么,你小子忽悠我?
    ~O(∩_∩)O~ 这正是Alberl想要说的:duilib仅仅是一个基于win32的UI库而已,并不是用了duilib以后,它就不是win32程序了。
很多小伙伴在群里问怎么加托盘,加程序图标等等,可能觉得duilib应该会像MFC一样提供很多封装好的类;或者觉得duilib有实现托盘的功能;或者觉得duilib完全替代了win32和MFC。所以这里Alberl提醒下: duilib并没有像MFC那样把所有的东西全包了,它仅仅包装了UI部分而已,其他的还是需要用win32、MFC的知识,所以除了UI部分,其他的都和duilib木有关系,小伙伴们直接搜索windows相应的关键字就行啦。
    再次强调:把duilib当作一个类库用,而不是一个语言、IDE、框架 ~\(^o^)/~
 
    下面我们来看一看duilib的Hello World。
(注意:
1、本教程使用的是duilib目前最新的代码,不会下载最新代码的,请阅读【2013 duilib入门简明教程 -- VS环境配置(2)
2、编译错误的,说明还没配置好环境,请阅读【2013 duilib入门简明教程 -- VS环境配置(2)
3、鉴于许多网友后面有各种小问题,所以建议大家先下载整个教程的源码,下载请进【2013 duilib入门简明教程 -- 总结 (20)
)   

#pragma once
#include <UIlib.h>
using namespace DuiLib; #ifdef _DEBUG
# ifdef _UNICODE
# pragma comment(lib, "DuiLib_ud.lib")
# else
# pragma comment(lib, "DuiLib_d.lib")
# endif
#else
# ifdef _UNICODE
# pragma comment(lib, "DuiLib_u.lib")
# else
# pragma comment(lib, "DuiLib.lib")
# endif
#endif class CDuiFrameWnd : public CWindowWnd, public INotifyUI
{
public:
virtual LPCTSTR GetWindowClassName() const { return _T("DUIMainFrame"); }
virtual void Notify(TNotifyUI& msg) {} virtual LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
{
LRESULT lRes = 0; if( uMsg == WM_CREATE )
{
CControlUI *pWnd = new CButtonUI;
pWnd->SetText(_T("Hello World")); // 设置文字
pWnd->SetBkColor(0xFF00FF00); // 设置背景色 m_PaintManager.Init(m_hWnd);
m_PaintManager.AttachDialog(pWnd);
return lRes;
} if( m_PaintManager.MessageHandler(uMsg, wParam, lParam, lRes) )
{
return lRes;
} return __super::HandleMessage(uMsg, wParam, lParam);
} protected:
CPaintManagerUI m_PaintManager;
}; int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
CPaintManagerUI::SetInstance(hInstance); CDuiFrameWnd duiFrame;
duiFrame.Create(NULL, _T("DUIWnd"), UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE);
duiFrame.ShowModal();
return 0;
}

  

    一个Hello World就完成了,是不是很简单呢^_^
    PS:上述代码除了显示了文字以外,还有以下特点:
    1、鼠标移到客户区(绿色部分)时,鼠标样式会变成手型
    2、调整窗口大小以及最大化时,Hello World会自适应窗口的大小,一直都居中
    3、如果想改变背景颜色的话,直接调用SetBkColor就行啦,是不是比win32和MFC方便呢~\(^o^)/~

duilib入门简明教程 -- 第一个程序 Hello World(3)的更多相关文章

  1. 2013 duilib入门简明教程 -- 第一个程序 Hello World(3)

    小伙伴们有点迫不及待了么,来看一看Hello World吧: 新建一个空的win32项目,新建一个main.cpp文件,将以下代码复制进去: #include <windows.h> #i ...

  2. duilib入门简明教程 -- 第一个程序 Hello World(3) (转)

    原文转自 http://www.cnblogs.com/Alberl/p/3343579.html 小伙伴们有点迫不及待了么,来看一看Hello World吧: 新建一个空的win32项目,新建一个m ...

  3. 2013 duilib入门简明教程 -- 总结 (20)

        duilib的入门系列就到尾声了,再次提醒下,Alberl用的duilib版本是SVN上第个版本,时间是2013.08.15~       这里给出Alberl最后汇总的一个工程,戳我下载,效 ...

  4. DUILIB入门简明教程

      电子书下载: DUILIB入门简明教程.chm 文章作者:  Alberl 电子书制作: 邓学彬 目录: 2013 duilib入门简明教程 -- 前言(1) 2013 duilib入门简明教程 ...

  5. duilib教程之duilib入门简明教程3.第一个程序 Hello World

    小伙伴们有点迫不及待了么,来看一看Hello World吧:新建一个空的win32项目,新建一个main.cpp文件,将以下代码复制进去: #include <windows.h> #in ...

  6. 2013 duilib入门简明教程 -- 自绘控件 (15)

        在[2013 duilib入门简明教程 -- 复杂控件介绍 (13)]中虽然介绍了界面设计器上的所有控件,但是还有一些控件并没有被放到界面设计器上,还有一些常用控件duilib并没有提供(比如 ...

  7. duilib教程之duilib入门简明教程15.自绘控件

    在[2013 duilib入门简明教程 -- 复杂控件介绍 (13)]中虽然介绍了界面设计器上的所有控件,但是还有一些控件并没有被放到界面设计器上,还有一些常用控件duilib并没有提供(比如菜单控件 ...

  8. duilib教程之duilib入门简明教程13.复杂控件介绍

    首先将本节要介绍的控件全部拖到界面上,并调整好位置,如图:  然后将Name属性改成其他名字,         不能是[控件名+UI+数字]这种,因为这是DuiDesigner默认的名字,它不会实际写 ...

  9. 2013 duilib入门简明教程 -- 部分bug (11)

     一.WindowImplBase的bug     在第8个教程[2013 duilib入门简明教程 -- 完整的自绘标题栏(8)]中,可以发现窗口最大化之后有两个问题,     1.最大化按钮的样式 ...

随机推荐

  1. java代码=========这个代码还是有问题的。不能实现功能呀

    有问题的代码: package com.a.b; import javax.swing.*; import java.awt.Color; import java.awt.event.*; impor ...

  2. keytool生成JKS证书的详细步骤及截图

    注:防止有不必要的空格,尽量不要复制粘贴 1. 依据CFCA所提供的CN生成密钥存储文件和密钥对(创建JKS证书库) keytool -genkey -v -alias slserver -keyal ...

  3. MyBatis 一对一(OneToOne)__SELECT

    1.创建SQL脚本: CREATE TABLE t_person(  id int(3) not null auto_increment,  name varchar(20) default null ...

  4. html 文字垂直居中

    html  文字垂直居中 <span style="float:right; padding-right:30px;line-height:64px" class=" ...

  5. 面向对象银角大王补充2-self就是调用当前方法的对象-静态字段,公有属性-封装的理解-继承的理解,普通方法,静态方法

    self是什么,就是一个函数,就是一个形式参数 4.self就是调用当前方法的对象 静态字段,公有属性 静态字段使用场景,每个对象中保存相同的东西时,可以使用静态字段,公有属性 5.封装的理解 类中封 ...

  6. PHP定时任务Crontab结合CLI模式详解

    从版本 4.3.0 开始,PHP 提供了一种新类型的 CLI SAPI(Server Application Programming Interface,服务端应用编程端口)支持,名为 CLI,意为 ...

  7. php对数组中的值进行排序

    案例 <?php $a = array('1124','1125','1126'); $s1 = 1124; $s2 = 1125; $ks1 = array_search($s1,$a); $ ...

  8. bootstrap+css进行页面布局

    效果 用到了bootstrap中的表格css.圆形css.以及上一页下一页css. 布局页面,填充数据,实现js动态效果(比如点击下一页,上一页),逐步完善. 不仅仅要会使用bootstrap中的样式 ...

  9. js实现可拖动的布局

    思路:采用flex布局,js即时修改固定列的宽度 注意:父元素需设置position:relative:因offsetLeft和offsetTop是相对于具有定位的(position:absolute ...

  10. Windows下搭建PHP开发环境-WEB服务器

    PHP集成开发环境有很多,如XAMPP.AppServ......只要一键安装就把PHP环境给搭建好了.但这种安装方式不够灵活,软件的自由组合不方便,同时也不利于学习.所以我还是喜欢手工搭建PHP开发 ...