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


    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】,其他默认,【完成】。 

    gc0

    至此,基础的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文件复制到同样的位置

    完成后的情况如下:

    gc1

    工程目录:

    gc3

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

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

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

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

    gc4

    修改代码如下:

    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程序,不出意外的话这个程序就可以运行了!

    我的程序截图如下:

    gc2


    可能出现的问题:

    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

    CSDN博客:http://blog.csdn.net/bbdxf
    CNBlogs: http://www.cnblogs.com/bbdxf
    本博客内容为本人原创,如有转载请保留出处!尊重他人就是尊重自己!

  • 相关阅读:
    ADO.NET Entity Framework 基本概述
    Team Fundation Server 2010 三
    Team Fundation Server 2010 一
    ADO.NET Data Services Framework 基础概述
    Git忽略已跟踪文件的改动
    菜单
    Eschool校园网平台介绍
    学习DDD与MVC系统架构的开源项目
    学校系统需求
    Firebird embed server
  • 原文地址:https://www.cnblogs.com/bbdxf/p/3367960.html
Copyright © 2020-2023  润新知