cppquery:用C++模仿jquery的探索

获取cppquery: https://github.com/coderebot/cppquery


CPPQuery是什么

CPPQuery是仿照jquery,顾名思义,就是c++ query。它是针对windows API的GUI,提供一套类似jquery的接口。目的是:简化GUI的编程,最终目的是构建一个更加简洁和智能的MVC架构。主要目标有:
  • 将GUI中分散的代码集中处理,特别是各种事件处理代码;
  • 提供一个数据绑定框架,实现数据和控件之间的智能联动;
  • 提供一个数据源框架,实现容器类数据的自动填充、数据变化的联动;
  • 提供一套类似CSS的界面风格控制框架,分离界面的显示与控制。
cppquery使用c++的模板为主要手段,通过模板模拟闭包和匿名函数,期望达到类似jquery的使用方法。

cppquery的大部分代码将以模板的形式出现,因此,cppquery是一个非常小巧和轻量的GUI封装库。 cppquery初期将考虑cover MFC的大部分特性,如View-Document架构等;后期将提供一个可以制作绚丽界面的图形库。

为什么做CPPQuery?

现在的Windows GUI其实已经有很多成熟的库了,如MFC,商业的有UIPower等。但是,这些库都有类似的架构,一般都是将一个窗口封装到一个类里面,如果你要编写界面,必须编写一个对应的类。很多的控件,都对应这一个类。 
虽然使用了C++的继承特性,但是每个类的接口都有差别,要完成一个任务,通常需要记住很多类和他们的接口。
近年来,随着HTML5的发展和jquery的兴起,一种新的界面开发框架出现了,这种框架不是面向对象,而是面向切面的。比如,jquery可以通过CSS选择子,在不需要了解HTML DOM结构的情况下,就可以得到想要的节点,并添加事件处理句柄、改变页面的显示状态。这种方法分离的更彻底,代码的耦合更低,而且使用更加简单。更重要的是,它很多地方采用异步模式,这大大提高了界面的反应速度和用户体验。
有鉴于此,我做cppquery,期望将这种思想引入到Native的界面开发中。

之所以选择Windows平台,主要是windows平台的用户受众更多,开发者也更多;我自己也比较熟悉windows开发;windows平台更加成熟,我不需要考虑过多底层实现的问题,专心于上层的架构。
在windows上取得成功后,可以推广到其他平台,如android(事实上android平台已经有一个 aquery了)。

开始

目前CPPQuery只实现了最简单的功能。
我使用VS生成一个Win32工程,只有一个简单的窗口,有一个菜单,只有“Exit"和"About"两个菜单项。这是VS自动生成的代码,我修改这个代码,功能保持不变,但是实现方法,使用cppquery。

先给个代码一览:

// cppquery.cpp : Defines the entry point for the application.
//

#include "stdafx.h"
#include "cppquerytest.h"
#include "api/cppquery.h"
using namespace cppquery;

#define MAX_LOADSTRING 100

// Global Variables:
HINSTANCE hInst;								// current instance
TCHAR szTitle[MAX_LOADSTRING];					// The title bar text
TCHAR szWindowClass[MAX_LOADSTRING];			// the main window class name
HWND g_hMainWnd;

// Forward declarations of functions included in this code module:
ATOM				MyRegisterClass(HINSTANCE hInstance);
BOOL				InitInstance(HINSTANCE, int
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值