[Sciter系列] MFC下的Sciter–1.创建工程框架

时间:2021-09-29 06:18:49

Sciter SDK中提供的Win32下例程很多,唯独使用很多(对我个人而言)的MFC框架下Sciter程序的构建讲的很少,虽然MFC有这样那样的诟病,但是不可否认的是编写一般的小项目,这仍然是大多数人最好的选择。

本系列文章的目的就是一步步构建出一个功能可用,接口基本完善的基于MFC框架的SciterFrame程序,以此作为以后程序的基础。其中,文章中按照如下逻辑编排(解决如下问题):

1、使用什么环境

2、完成什么功能

3、如何完成


1、工程环境: VS2010 + Win7 32位 + Sciter-SDK

建议:由于新版的SDK(Sciter3)为兼容XP和Win7,XP下使用了GDI+,Win7下使用了Direct2D,所以头文件中使用了d3d1.h,这导致在VS2010更低的版本上无法找到这个头文件(在我的电脑上查找之后发现的这个问题),最妥当解决办法就是安装Direct X SDK,将DX SDK的include和lib路径加入工程。

2、本文完成的功能:创建一个可以显示出Hello World对应HTML界面的工程。

3、具体步骤如下:

首先,使用VS2010,【新建】-> 【项目】->【Visual C++】->【MFC】-> 【MFC应用程序】,名称为HelloWorld,【确定】-> 【下一步】,在【应用程序类型】中,选择【基于对话框】,【使用Unicode】,建议【在静态库中使用MFC】,其他默认,【完成】。 

[Sciter系列] MFC下的Sciter–1.创建工程框架

 

至此,基础的MFC工程已经创建完成,将工程代码编译一遍,确保无误。

 

其次,我们的目标是在界面上显示我们使用HTML制作的HelloWorld界面,所以要先做两件事:

一、删除原来界面上的所有默认控件(如果不删除,其实也不影响后面的运行,只是不好看而已)

二、制作一个HTML页面(现在暂时制作一个可用的页面,编码问题以后处理)。

我的HTML界面代码如下:

// index.htm
// 使用记事本编辑就可以,使用默认编码
// 以上三行不用复制
</html>
<html>
<head>
<title>Hello World</title>
</head>
<body bgcolor="#00AAAA" >
<h1>Hello World!</h1>
<h2>哈哈,今天我出生了!</h2>
</body>
</html>

 

最后,开始我们正式的代码处理:

一、将Sciter-SDK的include文件夹复制到工程源代码文件夹内,即res的同级目录下

二、将Sciter-SDK的lib文件夹内的Sciter32.lib(32位系统)复制到res同级目录下

三、将刚才编写的index.htm文件复制到同样的位置

完成后的情况如下:

[Sciter系列] MFC下的Sciter–1.创建工程框架

工程目录:

[Sciter系列] MFC下的Sciter–1.创建工程框架

 

四、打开 HelloWorldDlg.h,头部添加头文件和lib引用

//头文件和lib引用
#include "include/sciter-x.h"
#pragma comment(lib,"sciter32.lib")

 

五、使用类向导,添加消息处理函数

【项目】->【类向导】(快捷键:Ctrl+Shift+X),按照如下设定:

[Sciter系列] MFC下的Sciter–1.创建工程框架

 

修改代码如下:

LRESULT CHelloWorldDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// Sciter过滤窗口消息,如果是Sciter引擎处理过的就直接返回
LRESULT lRet;
BOOL bHandled = FALSE;
lRet = SciterProcND(m_hWnd,message,wParam,lParam,&bHandled);
if ( bHandled )
{
return lRet;
} //当窗口创建时,加载HTML文件
if ( message == WM_CREATE )
{
SciterLoadFile(m_hWnd,_T("index.htm"));
} return CDialogEx::WindowProc(message, wParam, lParam);
}

 

至此,编译没问题的话,基础代码已经完成。

将Sciter-SDK中bin目录下的Sciter32.dll 复制一份到项目Debug目录下,即和生成的HelloWorld.exe放在一起,将index.htm文件也Copy一份到这里来,运行HelloWorld.exe程序,不出意外的话这个程序就可以运行了!

我的程序截图如下:

[Sciter系列] MFC下的Sciter–1.创建工程框架

 


可能出现的问题:

1、页面能够显示,但是中文乱码

解决:这个问题的出现和网页出现乱码一样的,建议尽量使用支持多种编码的文本编辑器编写HTML页面,可以设置HTML页面文件编码为GB2312。为了长远考虑,可以将文件保存为UTF-8+BOM编码,没有BOM标志似乎仍会乱码,并在文件头加入<meta charset="utf-8"/>。

2、一切都按照文章中的来,窗口背景仍然是灰色的什么也没有

解决:这个问题一般都不会发生,如果真有,可以尝试相应WM_ERASEBKGND消息,直接返回true。如果仍然没效果,则一定是程序哪个地方有了小错误,建议新建工程重新来过。

 

其他问题出现后请发表评论。

 

源码下载地址:http://pan.baidu.com/s/1mUoOK

Sciter-SDK下载地址:http://www.terrainformatica.com/sciter/sciter-sdk.zip

官网地址:http://www.terrainformatica.com

 


CSDN博客: http://blog.csdn.net/bbdxf

cnBlogs博客http://www.cnblogs.com/bbdxf

[Sciter系列] MFC下的Sciter–1.创建工程框架的更多相关文章

  1. &lbrack;Sciter系列&rsqb; MFC下的Sciter&ndash&semi;5&period;Sciter中GUI线程研究

    [Sciter系列] MFC下的Sciter–5.Sciter中GUI线程研究,目前MFC存在问题,win32没问题. 本系列文章的目的就是一步步构建出一个功能可用,接口基本完善的基于MFC框架的Sc ...

  2. &lbrack;Sciter系列&rsqb; MFC下的Sciter&ndash&semi;4&period;HTML与图片资源内置

    [Sciter系列] MFC下的Sciter–4.HTML与图片资源内置,防止代码泄露. 本系列文章的目的就是一步步构建出一个功能可用,接口基本完善的基于MFC框架的SciterFrame程序,以此作 ...

  3. &lbrack;Sciter系列&rsqb; MFC下的Sciter&ndash&semi;3&period;Sciter脚本与底层交互

    [Sciter系列] MFC下的Sciter–3.Sciter脚本与底层交互,脚本调用底层自定义的方法函数. 本系列文章的目的就是一步步构建出一个功能可用,接口基本完善的基于MFC框架的SciterF ...

  4. &lbrack;Sciter系列&rsqb; MFC下的Sciter&ndash&semi;2&period;Sciter中的事件&comma;tiscript&comma;语法

    [Sciter系列] MFC下的Sciter–2.Sciter中的事件,tiscript,CSS部分自觉学习,重点说明Tiscript部分的常见语法和事件用法. 本系列文章的目的就是一步步构建出一个功 ...

  5. &lbrack;Sciter系列&rsqb; MFC下的Sciter–1&period;创建工程框架

      Sciter SDK中提供的Win32下例程很多,唯独使用很多(对我个人而言)的MFC框架下Sciter程序的构建讲的很少,虽然MFC有这样那样的诟病,但是不可否认的是编写一般的小项目,这仍然是大 ...

  6. Ubuntu 16&period;04下使用Eclipse:创建工程时卡死的解决方法

    问题如下: Ubuntu 16.04下使用Eclipse创建工程时出现卡顿和卡死,新建一个MapReduce项目卡了一下午,鼠标变成了圆圈进度条转了一下午,还关不掉. 当我直接去关闭新建项目的窗口时, ...

  7. 【Windows编程】系列第二篇:Windows SDK创建基本控件

    在Win32 SDK环境下,怎么来创建常用的那些基本控件呢?我们知道如果用MFC,简单的拖放即可完成大多数控件的创建,但是我们既然是用Windows SDK API编程,当然是从根上解决这个问题,实际 ...

  8. MFC下OpenGL入门&lpar;可以用)

    MFC下OpenGL入门 源文件 1, 建一工程文件,我这里命名为first,现在first工程里面我们没有添加任何东西,所有的东西都是MFC自动帮我们创建的. 2, 添加链接库.这一步很关键.打开菜 ...

  9. MFC下DLL编程&lpar;图解&rpar;

    MFC下DLL编程(图解) DLL(Dynamic Link Library,动态链接库)是微软公司为Windows和OS/2操作系统设计一种供应用程序在运行时调用的共享函数库.DLL是应用程序的一种 ...

随机推荐

  1. CookContainer 序列化保存

    using System;using System.Collections;using System.Globalization;using System.IO;using System.Net;us ...

  2. PS4 的下载速度问题

    折腾了好久了 AC68u路由自启动修改 hosts 问题,打算FQ另外改善 ps4 下载速度太慢问题. 后来看到几个dns, 直接修改后就速度超快,也不用在路由中添加了, 直接在 ps4 中网络设置中 ...

  3. Win&plus;R运行自定义程序应该这样玩

    互联网是一个“生态圈”,Windows有自己的生态学,有些看似高效的“奇技淫巧”实则只是搞笑. 我很以前十分崇拜善用佳软的站长,对事不对人,有些弊端,只是我们不知道,但并不代表就没有. 有些“恍然大悟 ...

  4. ThinkPHP自动验证

    自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证. 验证规则 数据验证可以进行数据类型.业务规则.安全判断等方面的验证操作.数据验证有两 ...

  5. python连续爬取多个网页的图片分别保存到不同的文件夹

      python连续爬取多个网页的图片分别保存到不同的文件夹 作者:vpoet mail:vpoet_sir@163.com #coding:utf-8 import urllib import ur ...

  6. Ajax交互,浏览器接收不到服务器的Json数据&lpar;跨域问题&rpar;

    该问题的情景如下: 问题描述 Ajax的请求代码放在一台机器上,而服务器的java 路由程序放在另一个机子上,所以Ajax的url填写的是带"http://"  的地址,而不是相对 ...

  7. &lbrack;python爬虫&rsqb;Requests-BeautifulSoup-Re库方案--Requests库介绍

    [根据北京理工大学嵩天老师“Python网络爬虫与信息提取”慕课课程编写  文章中部分图片来自老师PPT 慕课链接:https://www.icourse163.org/learn/BIT-10018 ...

  8. 使用 IntraWeb &lpar;11&rpar; - 基本控件之 TIWButton

    所在单元及继承链: IWCompButton.TIWButton < TIWCustomControl < TIWBaseHTMLControl < TIWBaseControl & ...

  9. Delphi调用网页美化SQL

    百度搜索在线美化SQL语句的网站,为了加快解析速度,这里已下载到本地. 然后delphi用webbrowse载入本地的网页,然后把sql传进去,美化后取出来. 效果如下图 点击下载源码

  10. 详解XMLHttpRequest的跨域资源共享

    0x00 背景 在Browser Security-同源策略.伪URL的域这篇文章中提到了浏览器的同源策略,其中提到了XMLHttpRequest严格遵守同源策略,非同源不可请求.但是,在实践当中,经 ...