深入浅出CChart 每日一课——快乐高四第四十一课 投石问路,SoUI探险第一关之弹出窗口

SoUI是什么?SoUI是启程软件(也就是黄大师个人)开发的一个C++ DirectUI库。

DirectUI也是当前桌面开发的趋势和潮流,已经出现了很多商业或者开源的DirectUI库。以前的课程,已经介绍了CChart在炫彩界面库、DuiLib这两个DirectUI库中的使用。

关于SoUI,其实笨笨早就听说了,但一直未曾接触。近期,SoUI的作者黄大师联系了笨笨,看CChart能否在SoUI中使用。因此,在黄大师的协助下,笨笨初步学习了一下SoUI。对SoUI有所了解后,发现SoUI真是博大精深,这里笨笨对黄大师表示有如黄河之水泛滥,一发不可收拾的景仰之情。

原则上来说,只要是Windows的程序,CChart都应该能使用,当然不同情况下使用的复杂度有所不同。SoUI也不例外。

为了让CChart在SoUI下使用,一开始不能整太复杂的,还是以了解情况为主。这里,我们先在SoUI下做一个弹出窗口,用于绘图。说到底,弹出窗口也是一种应用场景。

笨笨从Github上下载了SoUI的分支SoUI3,采用的IDE是VS2010。

首先要做的工作当然是编译SoUI,配置SoUI的环境,这里就不赘述了。下面正式开始工作。

第一步,新建一个C++项目,选择“Soui3Wizard应用程序”模板,名称为“LessonA41”。

点击“确定”后,在下一屏直接选择“完成”。或者一路选择“下一步”。

第二步,在内层LessonA41文件夹里新建一个CChart文件夹,把CChart的库文件拷贝过去。现在实际上只需要Chart.h和Chartu.lib这两个文件。选择Chartu.lib的原因是SoUI默认是宽字节版的。

第三步,打开MainDlg.h文件,在#pragma once的后面,添加如下代码。

#include "CChart\Chart.h"
using namespace NsCChart;
#pragma comment(lib,"CChart/CChartu.lib")

同时,给CMainDlg类添加一个变量。

HWND	m_hWndChart;

第四步,打开MainDlg.cpp文件。

在OnInitDialog函数里,添加如下代码。

m_hWndChart = CreatePopupChartWnd(m_hWnd, kTypeXY, L"第一个SoUI程序");

注意这里采用CreatePopupChartWnd建立了一个m_hWnd的子窗口。第一个参数也可以选择为NULL。CreatePopupChartWnd实际上就是Windows接口CreateWindow的一个简单包装,建立了一个窗口类名为”ChartCtrl”的窗口。

在OnClose函数里,添加如下代码。

::DestroyWindow(m_hWndChart);

现在可以编译了!编译完成后,把Chartu.dll文件拷贝到外层的Debug文件夹里,就可以运行了。

SoUI的窗口是隐藏在这个窗口后面的。

现在这个CChart窗口里面是空的,太没意思了!我们还是在里面增加一些数据吧。

第五步,在MainDlg.cpp文件的OnInitDialog函数里,添加如下代码。

    int len = 100;
	for(int i=0; i<len; ++i)
	{
		GetChart(m_hWndChart)->AddPoint2D(i, i*i/2.0/len/len);
	}
	GetChart(m_hWndChart)->SetTitle(L"测试弹出窗口");

注意到,这里用GetChart(HWND)函数获得了CChart类的指针,然后调用CChart的相关函数。这个函数的参数必须是窗口类名为“ChartCtrl”的窗口句柄,不然将返回NULL。

运行结果如图。

看来在SoUI中使用弹出窗口绘图完全没有问题,也没有任何难度。不过呢,大多数情况下,估计SoUI的开发者不会用弹出窗口,所以这节课的方法没有什么卵用。笨笨只是用来测试一下,顺便呢,了解一下SoUI。

下节课将介绍稍微复杂一点的用法。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值