VC知识库文章为你的MFC程序添加宏脚本语言
VS2024之MFC入门到精通教程
VS2024之MFC入门到精通教程MFC(Microsoft Foundation Classes)是微软公司开发的一套基于C++的应用程序框架,旨在简化Windows应用程序的开发。
本文将为你介绍如何从MFC的入门到精通。
MFC是一个功能强大且复杂的框架,因此在学习MFC之前,你应该对C++语言有一定的了解。
了解基本的C++语法、类和对象的概念以及面向对象编程的思想是非常重要的。
首先,你需要安装Visual Studio 2024开发环境,这是一个包含MFC框架的集成开发环境。
安装完成后,你可以创建一个新的MFC应用程序项目。
在创建项目时,你可以选择使用MFC应用程序向导来生成基本的MFC 应用程序结构。
这个向导将帮助你创建一个带有窗口、对话框和控件的桌面应用程序。
一旦你创建了MFC应用程序项目,你就可以开始学习如何操作和管理窗口、对话框和控件了。
MFC提供了一组类和函数来处理用户界面相关的任务,如创建窗口、处理消息和响应用户输入等。
了解和掌握MFC的消息映射机制也是非常重要的。
MFC使用消息映射来处理窗口消息,如点击按钮、鼠标移动或键盘按键等。
你需要了解如何在MFC应用程序中添加消息映射函数,以便正确地处理用户的操作。
此外,MFC还提供了许多其他功能和特性,如数据库访问、多线程编程和国际化支持等。
如果你想进一步提升你的MFC编程技能,你可以深入学习这些领域。
最后,记得在学习MFC过程中多做实践。
尝试创建自己的项目并实现一些简单的功能,这将帮助你更好地理解和应用MFC框架。
总结起来,MFC是Windows应用程序开发的重要工具之一,它提供了丰富的类和函数来简化应用程序开发。
通过学习MFC的基本概念、操作和技巧,你可以成为一名熟练的MFC开发者。
VC知识库文章为你的MFC程序添加宏脚本语言
为你的MFC程序添加宏脚本语言原著: Ernest Laurentin翻译:haily下载源代码屏幕截图简介我总是对脚本控件(msscript.ocx)如何使用和当需要使用的时候,C++ 开发者该如何应对感到惊奇。
可能扩展名(.ocx)使他们觉得,那是vb!在本文中,我将解决这些界限,给出 C++ 开发者使用它的新的理由。
问题描述由于MS开发者的努力而创造的 Windows 脚本技术,使在VB和 C++ 应用中使用vbScript和Jscript变得相当简单的。
开发者只需要知道如何使用Microsoft脚本控件和如何给一个脚本方法传值就可以了。
由此,首先我想要提出的一个包容类是CScriptObject。
这个包容类的使用是非常简单的,她提供了你将会在你应用程序中使用的大部分功能。
它能提供从文件和资源中中载入脚本(文本数据),得到方法列表,选择脚本语言和执行函数和语句的功能。
本类不依赖于MFC,能在控制台程序(console Application)中使用。
对脚本调用首先最重要的是要了解VBScript和Jscript只能处理VARIANT类型的参数。
这就是我建立CSafeArrayHelper类的原因了。
CSafeArrayHelper包容类允许你建立你将要传给你的Script函数的的参数。
class CSafeArrayHelper{public:CSafeArrayHelper();~CSafeArrayHelper();bool Create(VARTYPE vt, UINT cDims, UINT lBound, UINT cCount);bool Destroy();UINT GetDimension();bool Attach(LPSAFEARRAY psa);bool AttachFromVariant(VARIANT* pVariant);LPSAFEARRAY Detach();LPSAFEARRAY GetArray();bool AccessData(void FAR* FAR* pvData);bool UnaccessData();bool Lock();bool Unlock();bool PutElement(long lIndices, void FAR* vData);bool GetElement(long lIndices, void FAR* vData);VARIANT GetAsVariant();protected:LPSAFEARRAY m_pSA;private:};它提供和SAFEARRAY对象同样的功能,但是它对于我们某些人(比如我)来说,使用更简单。
MFC自定义控件编写过程
MFC自定义控件编写过程MFC(Microsoft Foundation Class)是微软公司在Windows操作系统上开发的一套C++应用程序框架。
它提供了一系列的类和函数,使得开发者可以更快、更方便地开发Windows应用程序。
在MFC中,我们可以根据需要自定义控件。
编写MFC自定义控件的过程主要包括以下几个步骤:1.定义控件类:首先,我们需要定义一个派生自CWnd或CButton等基类的控件类。
派生类通常以"C"作为前缀,例如CCustomControl。
在控件类中,我们可以添加自定义的属性和方法。
2.注册控件类:在应用程序初始化时,我们需要调用AfxRegisterClass函数来注册自定义的控件类,以便能够在程序中使用。
3.创建控件对象:在创建控件的对话框或窗口时,我们需要使用Create函数来创建自定义的控件对象。
在Create函数中,我们可以指定控件的位置、大小等属性。
4.响应消息:在控件类中,我们可以重写一些成员函数来响应用户的消息,例如鼠标点击、键盘输入等。
我们可以使用ON_WM_XXX宏将消息和相应的成员函数关联起来。
5.绘制控件:在绘制控件时,我们可以重写控件类的OnPaint函数。
在OnPaint函数中,我们可以使用CDC类的成员函数来绘制自定义的图形。
6.响应交互:根据自定义的需求,我们可以在控件类中重写一些成员函数来响应用户的交互。
例如,在Button控件中,我们可以重写OnLButtonDown函数来响应鼠标左键的点击事件。
7.添加消息处理:在控件类中,我们可以添加自定义的消息处理函数来处理特定的业务逻辑。
例如,在自定义的列表框中,我们可以添加一个AddItem函数来向列表中添加项目。
8.发送和接收消息:在需要与其他窗口或控件进行通信时,我们可以使用SendMessage和PostMessage函数来发送消息,并在控件类中重写相应的消息处理函数来接收并处理这些消息。
MFC程序设计范文
MFC程序设计范文MFC(Microsoft Foundation Classes)是一种用于Windows操作系统的C++类库,它是Microsoft Visual C++应用程序开发的重要组成部分。
MFC提供了一种基于对象的编程模型,可以大大简化Windows GUI(图形用户界面)应用程序的开发过程。
通过MFC库,开发人员可以利用现有的类和功能来创建强大、可靠且可扩展的Windows应用程序。
在MFC程序设计中,通常需要遵循以下步骤:1. 创建一个MFC应用程序项目:首先,在Visual Studio中创建一个新的MFC应用程序项目。
在项目配置向导中,选择应用程序类型(对话框型、SDI型或MDI型)、支持的功能(ActiveX控制和OLE支持)、使用的界面风格等。
2. 编写应用程序代码:在MFC应用程序项目中,主要的代码文件是CWinApp类的派生类和CWnd类的派生类。
- CWinApp类的派生类通常包含应用程序的初始化和结束代码,包括应用程序的全局设置、消息处理程序的注册和初始化等。
- CWnd类的派生类通常用于创建主窗口或对话框,处理消息、事件和用户交互。
3. 设计用户界面:通过Visual Studio的可视化设计器,可以方便地设计应用程序的用户界面。
可以通过拖放控件、调整属性和布局来创建界面元素,如按钮、文本框、列表框等。
4.实现功能代码:在MFC应用程序中,可以使用MFC库提供的丰富功能和类来实现各种功能,如文件操作、数据库访问、多线程处理等。
5. 编译和调试程序:完成代码编写后,可以通过Visual Studio的编译器和调试器来编译和调试应用程序。
可以通过断点、单步执行等功能来查看程序的执行过程和变量的值。
6.发布应用程序:完成调试后,可以将应用程序打包成可执行文件,然后发布给用户使用。
可以将可执行文件、相关的库文件和资源文件打包成安装程序,通过安装程序来安装和部署应用程序。
MFC使用教程范文
MFC使用教程范文MFC(Microsoft Foundation Classes)是微软的一套C++类库,用于开发Windows桌面应用程序。
本教程将向您介绍MFC的基本概念和使用方法。
一、MFC简介MFC是基于面向对象的设计思想,为开发Windows应用程序提供了一套强大的工具和框架。
它提供了诸如窗口、对话框、菜单等常见界面元素的类,并且封装了底层的Windows API,简化了程序的编写过程。
二、MFC应用程序的创建要创建一个MFC应用程序,您可以使用Visual Studio进行操作。
首先,打开Visual Studio,并选择“新建项目”,然后选择“MFC应用程序”模板。
在创建项目的向导中,您可以指定应用程序的名称、位置和其他选项。
接下来,您可以选择所需的特性和模板。
例如,如果需要创建一个对话框应用程序,则可以选择“对话框”模板。
创建完成后,Visual Studio将自动为您生成一个基本的MFC应用程序框架,包括一个主窗口、一个菜单栏、一个工具栏和一个状态栏。
三、MFC界面元素的创建和使用1. 窗口(CWnd类):MFC提供了多种窗口类,如CFrameWnd、CView 等,您可以根据需要选择合适的窗口类来创建窗口。
4. 菜单(CMenu类):MFC通过CMenu类来管理菜单。
您可以创建菜单项并将其添加到菜单中,然后将菜单与窗口相关联。
5. 工具栏(CToolBar类):工具栏是一种常见的界面元素,用于提供快速访问常用命令的按钮。
您可以通过CToolBar类创建和管理工具栏,并将其与窗口相关联。
四、MFC消息机制在MFC中,程序通过消息来进行事件处理。
消息是由操作系统发送给应用程序的,应用程序通过重载消息响应函数来处理不同类型的消息。
在MFC中,您可以通过添加消息映射宏(BEGIN_MESSAGE_MAP和END_MESSAGE_MAP)和消息处理函数(OnXxx系列函数)来处理消息。
vs2008mfc教程
VS2008 MFC教程什么是MFC?MFC(Microsoft Foundation Classes)是一组用于Windows开发的C++类库。
它是一种基于对象的编程框架,旨在简化Windows图形用户界面(GUI)应用程序的开发。
MFC提供了许多预定义的类和函数,可用于创建窗口、对话框、菜单、工具栏等常见界面元素。
使用MFC可以大大加快GUI应用程序的开发速度,并提供Windows应用程序的一致外观和行为。
VS2008中的MFCMFC应用程序在Visual Studio 2008中创建一个MFC应用程序非常简单。
可以选择使用MFC应用程序向导,该向导将引导您完成创建应用程序的过程。
在创建应用程序时,您可以选择使用对话框或单文档/多文档界面。
MFC文件结构一个MFC应用程序通常包含多个文件。
以下是一些主要文件和文件夹:•AppName.cpp:包含应用程序的主要函数WinMain。
•AppName.h:包含应用程序的头文件,声明了应用程序类的成员变量和函数。
•AppNameDoc.cpp、AppNameDoc.h:包含应用程序的文档类,并实现了文档的读写功能。
•AppNameView.cpp、AppNameView.h:包含应用程序的视图类,用于处理用户界面和绘图。
•AppNameDlg.cpp、AppNameDlg.h:如果应用程序使用了对话框界面,则会包含对话框类的文件。
MFC消息映射在MFC中,用户界面中的各种事件(如按钮点击、菜单选择等)被称为消息。
消息映射允许您将特定消息与特定函数关联起来。
例如,当用户点击一个按钮时,MFC将自动调用与该按钮关联的函数,从而实现与按钮相关的操作。
MFC使用宏定义来实现消息映射。
您可以通过在类的消息映射表中添加条目来指定消息和对应的函数。
例如:BEGIN_MESSAGE_MAP(CMyView, CView)ON_COMMAND(ID_FILE_OPEN, &CMyView::OnOpenFile) ON_COMMAND(ID_FILE_SAVE, &CMyView::OnSaveFile) END_MESSAGE_MAP()上述代码将ID_FILE_OPEN和ID_FILE_SAVE消息与CMyView类中的OnOpenFile和OnSaveFile函数相关联。
MFC控件使用详细教程
MFC控件使用详细教程MFC(Microsoft Foundation Class)是微软推出的一套用于开发Windows应用程序的类库。
它提供了许多方便易用的控件,可以快速创建用户界面。
本教程将详细介绍如何使用MFC控件来创建Windows应用程序。
第一步:创建一个MFC应用程序项目要使用MFC控件,首先需要创建一个MFC应用程序项目。
在Visual Studio中,选择"文件"->"新建"->"项目",然后选择"MFC应用程序"模板。
在项目设置中,可以选择使用对话框或视图来作为应用程序的主界面。
第二步:设置控件属性第三步:添加控件消息处理程序控件不仅仅可以显示在界面上,还可以响应用户的操作。
例如,当用户点击按钮时,可以执行一些特定的操作。
要实现这个功能,需要添加控件消息处理程序。
可以通过右键单击控件,选择"添加事件处理程序"来添加控件消息处理程序。
在生成事件处理程序的对话框中,可以选择控件的事件(如点击事件、鼠标移动事件等)和消息的处理函数。
在消息处理函数中,可以编写代码来实现特定的功能。
第四步:编写控件的功能代码在控件的消息处理函数中,可以使用MFC类库提供的函数来实现控件的功能。
例如,如果用户点击了按钮控件,可以使用CButton类的GetWindowText函数来获取按钮的文本,并使用CMessageBox类的MessageBox函数来显示一个消息框。
可以使用类似的方式来处理其他控件的事件。
例如,当用户选择了一个列表框中的项时,可以使用CListBox类的GetCurSel函数来获取选择的项的索引,并根据索引来执行特定的操作。
第五步:编译和运行应用程序完成了控件的添加和功能编写后,可以使用Visual Studio的编译和运行功能来编译和运行应用程序。
在编译过程中,会生成可执行文件和相关的依赖文件。
MFC宏定义详解
很不错的一篇文章,很多不明白的地方在此讲的很清楚,很完整,主要是MFC的宏定义了.站长黑森林推荐!AND_CATCHAND_CATCHAND_CATCH(exception_class,exception _object_point_name)说明:定义一个代码块,它用于获取废除当前TRY块中的附加异常类型。
使用CATCH宏以获得一个异常类型,然后使用AND_CATCH宏获得随后的异常处理代码可以访问异常对象(若合适的话)已得到关于异常的特别原因的更多消息。
在AND_CATCH块中调用THROW_LAST宏以便把处理过程移到下个外部异常框架。
AND_CATCH可标记CATCH或AND_CATCH块的末尾。
注释:AND_CATCH块被定义成为一个C++作用域(由花括号来描述)。
若用户在此作用域定义变量,那么记住他们只在此作用域中可以访问。
他也用于exception_object_pointer_name变量。
ASSERTASSERT(booleanExpression)说明:计算变量的值。
如果结构的值为0,那么此宏便打印一个诊断消息并且成讯运行失败。
如果条件为非0,那么什么也不做。
诊断消息的形式为: assertion failed in file in line 其中name是元文件名,num是源文件中运行失败的中断号。
在Release版中,ASSERT不计算表达式的值也就不中断程序。
如果必须计算此表达式的值且不管环境如何那么用VERIFY 代替ASSERT。
注释:ASSERT只能在Debug版中用ASSERT_VAILDASSERT_VAILD(pObject)说明:用于检测关于对象的内部状态的有效性。
ASSERT_VALID调用此对象的AssertValid成员函数(把它们作为自己的变量来传递)。
在Release版中ASSERT_VALID什么也不做。
在DEBUG版中,他检查指针,以不同于NULL的方式进行检查,并调用对象自己的AssertValid成员函数。
VC6.0使用MFC创建应用程序框架操作步骤行业信息
CListBox
IDC_LIST_RECEIVED
m_listRecetved
Control
CListBox
学习课件
13
定义了一个枚举变量IDD,值 为IDD_TALKC_DIALOG。 这个对话框类就是通过这个 IDD和对话框资源建立了联系。
学习课件
14
学习课件
CTalkcDlg类的 构造函数
#include “MySocket.h”
• 在CTalkcDlg对话框类的talkcDlg.cpp中添加对于控件变量 的初始化代码:
// TODO: Add extra initialization here
//用户添加的控件变量的初始化代码
BOOL CTalkcDlg::OnInitDialog()
成员变量:CMySocket m_sConnectSocket; //用来与服 务器端连接的套接字。
成员函数:void OnClose(); 信。
// 用来处理与服务器端的通
void OnConnect();
void OnReceive();
学习课件
30
7.手工添加的代码
• 在 CTalkcDlg 对 话 框 类 的 talkcDlg.h 中 添 加 对 于 MySocket.h的包含命令,来获得对于套接字支持:
class CTalkcDlg;
学习课件
26
对于MySocket.cpp,有四处添加: ① 应在文件开头,添加包含文件说明。这是因为此套接字类用 到了对话框类的变量。
#include “TalkcDlg.h”
② 在构造函数中,添加对于对话框指针成员变量的初始化代码:
CMySocket::CMySocket() { m_pDlg = NULL; } ③ 在析构函数中,添加对于对话框指针成员变量的终止处理代 码:
mfc使用教程
mfc使用教程MFC使用教程不要标题MFC是Microsoft Foundation Class的缩写,是一套C++的库,用于开发Windows平台的应用程序。
以下是一个简单的MFC使用教程,帮助你了解如何创建一个基本的MFC应用程序。
首先,打开Visual Studio并选择创建新项目。
在项目模板中,选择"MFC应用程序"。
在下一步中,选择"对话框"作为应用程序类型。
接下来,选择项目的名称和位置,然后点击"完成"按钮。
Visual Studio将自动生成一个MFC应用程序的基本框架。
应用程序的主要代码位于"MainFrm.cpp"和"MainFrm.h"文件中。
打开"MainFrm.cpp"文件,你将看到一个名为"Create"的函数。
在这个函数中,可以创建应用程序的主窗口。
在"Create"函数的内部,使用"MFC应用程序向导"提供的函数来创建一个对话框。
例如,可以使用"CDialogEx"类来创建一个简单的对话框。
在"Create"函数的最后,需要调用"ShowWindow"函数显示主窗口,并调用"UpdateWindow"函数来更新窗口。
在"MainFrm.h"文件中,你可以定义应用程序的主窗口类。
例如,可以继承自"CFrameWnd"类,并添加自定义的成员变量和函数。
在"MainFrm.cpp"文件的"Create"函数中,还可以添加一些自定义的代码,例如设置窗口的标题和大小,添加菜单和工具栏等。
最后,编译并运行应用程序。
你应该能够看到一个简单的MFC应用程序的窗口。
visual c++ mfc扩展编程实例
visual c++ mfc扩展编程实例MFC(Microsoft Foundation Class)是Microsoft提供的一个C++类库,它封装了Windows API,使得开发者可以更方便地使用Windows平台的各种功能。
下面是一个简单的Visual C++ MFC扩展编程实例,演示如何创建一个简单的窗口并显示文本。
1. 打开Visual Studio,创建一个新的MFC应用程序项目。
2. 在项目属性中,将“应用程序类型”设置为“MFC应用程序”。
3. 在“源文件”文件夹中,打开“CMyApp”类。
4. 在“CMyApp”类的“OnInitDialog”函数中,添加以下代码:```cppBOOL CMyApp::OnInitDialog(){CMainDialog::OnInitDialog();// 设置窗口标题SetWindowText(_T("MFC扩展编程实例"));// 创建文本控件CWnd* pWnd = GetDlgItem(IDC_STATIC_TEXT);ASSERT(pWnd);CRect rect;pWnd->GetWindowRect(&rect);CString strText;strText.Format(_T("Hello, MFC!"));pWnd->SetWindowText(strText);return TRUE; // 返回TRUE 除非你对WM_COMMAND 设置了一个处理函数}```5. 在“头文件”文件夹中,打开“CMyApp”类的头文件“CMyApp.h”。
6. 在“CMyApp”类中添加一个成员变量:```cppCStatic m_StaticT ext; // 文本控件成员变量```7. 在“CMyApp”类的构造函数中,初始化该成员变量:```cppCMyApp::CMyApp() : CMainDialog(CMyApp::IDD){// 初始化成员变量m_StaticText.SubclassDlgItem(IDC_STATIC_TEXT, this); // 绑定控件ID 和窗口句柄}```。
MFC使用教程范文
MFC使用教程范文MFC(Microsoft Foundation Classes)是微软开发的一种用于Windows操作系统的C++类库,可用于开发图形用户界面(GUI)应用程序。
MFC使用教程将指导您如何使用MFC库来创建基于Windows的应用程序。
第一部分:基本概念和环境设置(200字)在开始使用MFC之前,您需要了解一些基本概念和环境设置。
首先,MFC是一个C++类库,包含了各种用于构建Windows应用程序的类和函数。
它提供了处理窗口、控件、消息等等的功能。
其次,您需要一个C++编译器和开发环境,如Visual Studio。
确保您已经安装了Visual Studio以及所需的MFC组件。
第二部分:创建一个MFC应用程序(300字)步骤1:打开Visual Studio并选择创建“新项目”。
步骤2:选择MFC应用程序向导,并输入项目名称和位置。
步骤3:选择应用程序类型(单文档/多文档/对话框)。
步骤4:在向导的下一步中,选择所需的特性和选项。
步骤5:在应用程序向导中完成剩余设置,并单击“完成”来创建项目。
步骤6:Visual Studio将自动生成与所选应用程序类型相对应的源代码和资源文件。
第三部分:了解主要概念(300字)在了解如何使用MFC库之前,您需要了解一些主要概念。
首先是对话框,它是一个用于显示和与用户交互的窗口。
其次是框架窗口,用于包含和管理窗口的集合。
控件是用于接收和显示用户输入的界面元素,如按钮、文本框等。
消息是在窗口间传递的信息,用于处理用户输入和应用程序的操作。
第四部分:使用MFC库创建控件和处理消息(400字)步骤1:在资源视图中选择对应的对话框或窗口。
步骤2:在工具箱中选择所需的控件,并将其拖放到对话框或窗口上。
步骤3:在类视图中选择对应的对话框或窗口类。
步骤4:在类向导中选择“消息映射”选项,并添加所需的消息处理函数。
步骤5:在消息处理函数中编写代码来处理控件的事件或用户输入。
MFC自定义控件编写过程
MFC自定义控件编写过程MFC(Microsoft Foundation Classes)是一个C++应用程序框架,用于开发Windows应用程序。
它提供了许多已经封装好的类和方法,用于开发Windows GUI应用程序。
MFC提供了丰富的控件,但有时我们可能需要开发自定义控件来满足特定的需求。
下面是MFC自定义控件的编写过程。
1.创建MFC项目首先,打开Visual Studio,并选择创建一个新的MFC应用程序项目。
在创建向导中,选择一个适当的应用程序类型和选项,然后指定项目的名称和位置。
点击“完成”按钮创建项目。
2.设计控件界面3.为控件添加代码4.自定义控件逻辑在项目中生成自定义控件的处理逻辑。
打开控件的源文件,并为其添加相应的消息和事件处理函数。
例如,如果要在按钮控件上添加单击事件处理函数,请在对应的按钮控件的单击事件处理函数中添加代码。
您还可以根据需要添加特定的功能和逻辑。
5.编译和测试在完成自定义控件的编码后,可以进行编译测试。
选择“生成”菜单中的“解决方案”选项,或者使用快捷键Ctrl + Shift + B来编译项目。
然后选择“调试”菜单中的“以调试模式启动”选项,或者使用快捷键F5来运行项目。
检查自定义控件是否按预期工作。
6.部署自定义控件一旦自定义控件编写完成并通过了测试,可以将其部署到其他项目中使用。
将自定义控件的源文件和相关资源文件复制到新的项目中,然后在新的项目中按照相同的方式创建控件界面并添加代码。
总结:MFC自定义控件的编写过程可以简单概括为创建MFC项目、设计控件界面、添加代码、自定义控件逻辑、编译和测试以及部署自定义控件。
通过遵循这个过程,我们可以轻松地在MFC应用程序中开发和使用自定义控件,以满足特定需求。
编写自定义控件需要熟悉MFC框架和相关的C++编程知识,对于有经验的开发人员来说是相对简单的任务。
如何在vc程序中嵌入脚本语言(初稿)
如何在vc程序中嵌入脚本语言今天很多大型程序中都能够见到内嵌脚本进行二次开发的功能,例如ms word,excel,visual studio 等。
一直以来我都希望能在自己的程序中加入同样的功能,经过前一段时间的研究,终于有所心得与大家分享。
在研究过程中,我查找了发现一篇比较有价值的文章(/com/mfcscripthost.asp),其中描述了在vc程序中加入脚本语言的过程。
其原理如下1.首先使用CoCreateInstance()创建某种脚本语言(javascript,vbscript)的引擎,获得某种语言的脚本引擎的接口IActiveScript。
2.实现回调站点接口IActiveScriptSite通过IActiveScript->SetScriptSite()交由脚本引擎回调,在site中可以取得引擎的状态信息,并提供用户的自定义变量的自动化对象。
3.通过IActiveScript->QueryInterface()取得IActiveScriptParse接口,IActiveScriptParse用于解释执行用户的脚本代码。
幸运的是这一系列接口和操作已经被文章的作者封装成CActiveScriptHost类,只需要掌握CreateEngine()(创建脚本引擎),AddScriptCode()(加入用户脚本代码),AddScriptItem ()(加入用户自定义变量)四个常用的方法即可。
下面描述如何在自己mfc程序中使用上述类嵌入脚本和自定义脚本对象的过程,步骤如下。
1.首先将文章所附例子工程中ActiveScriptHost.cpp,ActiveScriptHost.h,Host_Proxy.cpp,Host_Proxy.h,MFCScriptHost.odl拷贝到当前工程中。
2.在当前工程的xxx.rc中加入以下内容,即将类型库加入到程序资源文件中#ifdef _DEBUG1 TYPELIB "Debug\\MFCScriptHost.tlb"#else1 TYPELIB "Release\\MFCScriptHost.tlb"#endif3.在需要使用的类成员中加入CHost_Proxy m_ScriptProxy;成员,在OnCreate或OnInitDialog中加入m_ScriptProxy.CreateEngine( L"JavaScript" );//创建脚本引擎m_ScriptProxy.AddScriptItem(L"test",m_ptestObject->GetUnknown());//加入名称为test的IDispatch对象对象的生成有两种方案,一种是使用MFC方式生成,即对象从CmdTarget继承,并选中automation的radio button(如图表1),并通过Class Wizard中的自动化标签加入方法和属性(如图表2)。
Visual C++ MFC 简明教程(一)
Visual C++ MFC 简明教程(一)Visual C++ MFC 简明教程是一份非常有价值的学习材料,尤其对于那些对 C++ 编程语言和应用程序开发一无所知的初学者来说。
本教程的主要目的是让读者掌握使用 Microsoft Foundation Classes(MFC)框架的 Visual C++ 语言快速创建 Windows 应用程序的方法。
本教程基于 Visual Studio 2017 和 Windows 10 操作系统,以下是一些简单的步骤和说明:第一步,安装 Visual Studio。
可以在 Microsoft 官网上下载Visual Studio 的最新版本。
安装完成后,选择“创建新项目”并选择“MFC 应用程序”作为项目类型。
第二步,添加控件。
可在工具箱中找到并选择相应的控件,例如按钮、文本框等。
在设计模式下,从工具箱拖动控件并放置到窗体上。
第三步,处理控件事件。
在应用程序中,每个控件都有相应的事件。
例如,按钮可以处理“单击”事件。
单击之后,会调用一个相关的函数并执行该事件需要完成的任务。
第四步,添加消息处理程序。
为了处理事件,需要将事件与消息处理函数相关联。
选择控件,右键单击打开“属性”对话框,选择“事件”选项卡,选择相应的事件,然后双击该事件以创建新的消息处理程序。
第五步,编写代码。
可在“OnEventName”函数内编写代码来执行事件所需的特定操作。
例如,当单击按钮时,可以在该函数中编写代码来显示一个文本框中的消息。
最后,可以通过选择“生成”菜单将程序构建到本地计算机上并运行程序以查看结果。
在本教程中,还有许多其他有用的内容,例如如何处理对话框、文件、菜单、工具条、状态栏等。
通过本教程,读者将学习如何使用 MFC 框架快速创建 Windows 应用程序。
总之,如果你正在寻找一份易于理解和实用的 Visual C++ MFC 简明教程,那么这份材料将是你最佳的选择。
它提供了从入门到精通所需的一切内容,而且非常容易上手。
MFC控件使用详细教程
MFC控件使用详细教程MFC(Microsoft Foundation Classes)是微软公司开发的一套面向对象的C++类库,旨在简化Windows应用程序的开发。
其中包括了一系列的控件类,用于构建Windows用户界面。
本文将介绍MFC控件的使用,并提供详细的教程。
1.创建MFC应用程序首先,打开Visual Studio开发环境,选择创建MFC应用程序项目。
在项目向导中,选择“对话框”应用程序类型。
2.添加控件到对话框在MFC应用程序中,用户界面的主要组成部分是对话框。
打开对话框资源文件(通常是一个名为“MainDlg”的文件),可以看到空白的对话框。
从工具箱中选择所需的控件,例如按钮(Button)、文本框(Edit Control)等。
点击工具箱中的控件,然后在对话框上绘制一个矩形,即可在对话框中添加该控件。
3.设置控件属性选中添加的控件,可以在“属性”窗口中设置其属性。
例如,可以设置按钮的文本、大小、位置等。
4.响应控件事件控件可以触发各种事件,例如按钮点击事件。
为了响应这些事件,我们需要添加相应的事件处理程序。
在资源视图中,右键点击对话框资源文件,选择“添加事件处理程序”。
然后,选择要响应的事件,例如按钮的点击事件。
在出现的对话框中,输入事件处理程序的名称,并选择成员变量的名称。
点击“确定”后,Visual Studio会自动生成事件处理程序的代码。
5.控件的常用操作- 设置控件的文本:使用SetWindowText函数,例如SetWindowText("Hello");- 获取控件的文本:使用GetWindowText函数,例如CString str; GetWindowText(str);- 启用或禁用控件:使用EnableWindow函数,例如EnableWindow(FALSE)可以禁用控件;- 显示或隐藏控件:使用ShowWindow函数,例如ShowWindow(SW_HIDE)可以隐藏控件;- 设置或获取控件的位置、大小:使用SetWindowPos和GetWindowRect函数,例如SetWindowPos(NULL, x, y, width, height)可以设置控件的位置和大小;- 样式和外观设置:使用ModifyStyle和SetWindowLong函数,例如在按钮上设置图标和文字风格。
Visual C++ MFC入门教程 控件说明
Visual C++/MFC入门教程VC开发指南1.1 如何学好VC这个问题很多朋友都问过我,当然流汗是必须的,但同时如果按照某种思路进行有计划的学习就会起到更好的效果。
万事开头难,为了帮助朋友们更快的掌握VC开发,下面我将自己的一点体会讲一下:1、需要有好的C/C++基础。
正所谓“磨刀不误砍柴工”,最开始接触VC时不要急于开始Windows程序开发,而是应该进行一些字符界面程序的编写。
这样做的目的主要是增加对语言的熟悉程度,同时也训练自己的思维和熟悉一些在编程中常犯的错误。
更重要的是理解并能运用C++的各种特性,这些在以后的开发中都会有很大的帮助,特别是利用MFC进行开发的朋友对C++一定要能熟练运用。
2、理解Windows的消息机制,窗口句柄和其他GUI句柄的含义和用途。
了解和MFC各个类功能相近的API函数。
3、一定要理解MFC中消息映射的作用。
4、训练自己在编写代码时不使用参考书而是使用Help Online。
5、记住一些常用的消息名称和参数的意义。
6、学会看别人的代码。
7、多看书,少买书,买书前一定要慎重。
8、闲下来的时候就看参考书。
9、多来我的主页。
^O^后面几条是我个人的一点意见,你可以根据需要和自身的情况选用适用于自己的方法。
此外我将一些我在选择参考书时的原则:对于初学者:应该选择一些内容比较全面的书籍,并且书籍中的内容应该以合理的方式安排,在使用该书时可以达到循序渐进的效果,书中的代码要有详细的讲解。
尽量买翻译的书,因为这些书一般都比较易懂,而且语言比较轻松。
买书前一定要慎重如果买到不好用的书可能会对自己的学习积极性产生打击。
对于已经掌握了VC的朋友:这种程度的开发者应该加深自己对系统原理,技术要点的认识。
需要选择一些对原理讲解的比较透彻的书籍,这样一来才会对新技术有更多的了解,最好书中对技术的应用有一定的阐述。
尽量选择示范代码必较精简的书,可以节约银子。
此外最好涉猎一些辅助性的书籍。
VC预处理指令和宏定义
刚接触到MFC编程的人往往会被MFC 向导生成的各种宏定义和预处理指令所吓倒,但是预处理和宏定义又是C语言的一个强大工具。
使用它们可以进行简单的源代码控制,版本控制,预警或者完成一些特殊的功能。
一个经典的例子 使用预处理与宏定义最经典的例子莫过于加在一个头文件中以避免头文件被两次编译。
试想这种的情况,有一个文件headerfile.h 它被包含在headerfile1.h中,同时在headerfile2.h 中也被包含了,现在有一个CPP文件,implement.cpp 包含了headerfile1.h 和headerfile2.h: 假设headerfile.h 中定义了一个全局变量iglobal 。
在编译的时候编译器两次编译headerfile,也就会发现iglobal被定义了两次,这时就会发生变量重定义的编译错误。
传统的解决办法是使用#ifdef 以及#endif 来避免头文件的重复编译,在上面的例子中,只需要加上这么几行: 仔细的考虑上面的宏定义,会发现当编译器编译过一次headerfile.h以后,sma rtnose_2002_6_21_headerfile_h 这个宏就被定义了,以后对headerfile.h的编译都会跳过int iglobal 这一行。
当然smartnose_2002_6_21_headerfile_h 这个宏是可以任意定义的,但是这个宏本身不能和其它文件中定义的宏重复,所以MFC在自动生成的文件中总是使用一个随机产生的长度非常长的宏,但我觉得这没有必要,我建议在这个宏中加入一些有意义的信息,比方作者,文件名,文件创建时间等等,因为我们有时候会忘记在注释中加入这些信息。
在中我们不会再看见这些宏定义了,因为在这里会普遍使用一个预处理指令: 只要在头文件的最开始加入这条指令就能够保证头文件被编译一次,这条指令实际上在VC6中就已经有了,但是考虑到兼容性并没有太多的使用它。
VC++6.0创建MFC应用程序MFC设置启动窗口虚拟盘的创建和删除MFC中为子对话框添加。。。
VC++6.0创建MFC应⽤程序MFC设置启动窗⼝虚拟盘的创建和删除MFC中为⼦对话框添加。
提前声明MFC纯⼩⽩,⾼⼿勿⼤喷!整个程序参照了各种资料,谢谢各路⼤侠的帮助!⼀.VC++6.0创建MFC应⽤程序1. 新建→⼯程→MFC AppWizard(exe)→确定2. 基本对话框→完成3. 确定⼆.MFC设置启动窗⼝1. 插⼊→资源→Dialog2. 双击对话框→确定→填好类名称(例:Mydialog)→OK3. 在(例:On01)按钮事件中添加如下代码:不加头⽂件的话,不知道有没有错,没试,如果有错的话,加头⽂件即可(例:#include “Mydialog.h”)void CTest_8Dlg::On01(){Mydialog dlg;dlg.DoModal();}三.虚拟盘的创建和删除直接⽤的⽼师的代码//嘻嘻1. 创建system("echo on");system("md c:\\x");system("subst x: c:\\x");system("md x:\\doc");system("del x:\doc\*.* /q");system("copy E:\\01\\*.* x:\doc");system("echo off");2. 删除system("subst x: /d");system("del c:\\x\\doc\\* /q");system("rd c:\\x\\doc");system("rd c:\\x");3. 隐藏运⾏外部程序(.exe)WinExec("G:\\test\\Debug\\exit.exe",SW_HIDE);//隐藏调⽤exit程序4. 补充:ShellExecute(NULL,"open","X:\doc",NULL,NULL,SW_SHOWNORMAL);//打开X盘下的doc⽂件四.MFC中为⼦对话框添加OnInitDialog()函数为下⼀步读取.txt⽂件做准备五.CStdioFile类读.txt⽂件到编辑框在⼦对话框的OnInitDialog()函数中对编辑框进⾏初始化BOOL Mydialog::OnInitDialog(){CDialog::OnInitDialog();// TODO: Add extra initialization hereCString strText="";CString szLine="";CStdioFile file;if(!file.Open("E:\\2019title\\1.txt",CFile::modeRead));CString strOneline;while(file.ReadString(szLine)){strText+=szLine;strText+="\r\n";//为⽂本添加换⾏符//把字符串加到控件中}//MessageBox(strText);SetDlgItemText(IDC_EDIT1,_T(strText));//IDC_EDIT1为编辑框名称file.Close();return TRUE;// return TRUE unless you set the focus to a control// EXCEPTION: OCX Property Pages should return FALSE}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
为你的MFC程序添加宏脚本语言
原著: Ernest Laurentin
翻译:haily
下载源代码
屏幕截图
简介
我总是对脚本控件(msscript.ocx)如何使用和当需要使用的时候,C++ 开发者该如何应对感到惊奇。
可能扩展名(.ocx)使他们觉得,那是vb!在本文中,我将解决这些界限,给出 C++ 开发者使用它的新的理由。
问题描述
由于MS开发者的努力而创造的 Windows 脚本技术,使在VB和 C++ 应用中使用vbScript和Jscript变得相当简单的。
开发者只需要知道如何使用Microsoft脚本控件和如何给一个脚本方法传值就可以了。
由此,首先我想要提出的一个包容类是CScriptObject。
这个包容类的使用是非常简单的,她提供了你将会在你应用程序中
使用的大部分功能。
它能提供从文件和资源中中载入脚本(文本数据),得到方法列表,选择脚本语言和执行函数和语句的功能。
本类不依赖于MFC,能在控制台程序(console Application)中使用。
对脚本调用首先最重要的是要了解VBScript和Jscript只能处理VARIANT类型的参数。
这就是我建立CSafeArrayHelper类的原因了。
CSafeArrayHelper包容类允许你建立你将要传给你的Script函数的的参数。
class CSafeArrayHelper
{
public:
CSafeArrayHelper();
~CSafeArrayHelper();
bool Create(VARTYPE vt, UINT cDims, UINT lBound, UINT cCount);
bool Destroy();
UINT GetDimension();
bool Attach(LPSAFEARRAY psa);
bool AttachFromVariant(VARIANT* pVariant);
LPSAFEARRAY Detach();
LPSAFEARRAY GetArray();
bool AccessData(void FAR* FAR* pvData);
bool UnaccessData();
bool Lock();
bool Unlock();
bool PutElement(long lIndices, void FAR* vData);
bool GetElement(long lIndices, void FAR* vData);
VARIANT GetAsVariant();
protected:
LPSAFEARRAY m_pSA;
private:
};
它提供和SAFEARRAY对象同样的功能,但是它对于我们某些人(比如我)来说,使用更简单。
当你想看你包装在你的SAFEARRAY中的数据类型的时候,函数GetAsVariant可能会很有用。
由于SAFEARRAY的数据类型(fFeatures)不能处理
所有的类型,所以此函数也不能读取所有的数据类型。
也就是说,这个函数只是对数据类型的猜测。
如何使用
要使用这个控件,首先我推荐你看看VBScript和JScript的文档以了解你所有能在脚本语言里能实现的功能。
写一个脚本函数
假设我们想建立一个简单的函数来把温度从华氏度转换到摄氏度:
用 VBScript 写:
Function Celsius(fDegrees)
Celsius = (fDegrees - 32) * 5 / 9
End Function
用 JScript 写:
function Celsius(fDegres)
{
return (fDegres-32)*5/9;
}
要执行这个函数,只需要把每个变量存储到VARIANT里。
由于你的函数(方法)可能包含不止一个参数,我们必须用一个SAFEARRAY来包装它。
在后一种情况,你可能想通过检查String函数的.length属性或其他的方法来看数组传给函数的参数的数目。
function CountParam(aParam)
{
var strPresent = "Parameter is : " + (aParam.length>0 ? "Present": "Not present");
return strPresent;
}
同样的技术可以用在VBScript中,它允许你在运行时检测变长参数。
调用无参数的函数,也要创建SAFEARRAY,只是没有参数。
调用一个脚本函数。
你的代码应该和下边的实例一样简单::
void CScriptDemoDlg::OnBtnExecute()
{
CString strParam, strProc;
m_ctlParameter.GetWindowText( strParam );
m_ctlFunctions.GetWindowText( strProc );
CSafeArrayHelper sfHelper;
try{
_variant_t var;
if (strProc.IsEmpty())
sfHelper.Create(VT_VARIANT, 1, 0, 0); // (void) parameter
else
{
sfHelper.Create(VT_VARIANT, 1, 0, 1); // 1 parameter
var = _bstr_t(strParam);
}
sfHelper.PutElement(0, (void*)&var); // parameter1 -> index 0
LPSAFEARRAY sa = sfHelper.GetArray();
_variant_t varRet;
if (m_ScriptObj.RunProcedure(strProc, &sa, &varRet))
m_ctlResult.SetWindowText( (LPCTSTR)(_bstr_t(varRet)) );
else
{
CString strError = m_ScriptObj.GetErrorString(); m_ctlResult.SetWindowText( strError );
}
}
catch(...)
{
CString strError = m_ScriptObj.GetErrorString();
m_ctlResult.SetWindowText( strError );
}
}
一点建议
你可以试试如下的做法:
1、你可以实现象插件一样的实现你的脚本行为,建议你将一个脚本资源放入
dll中并在运行时装入(也可以作为你程序的一部分)。
由此,你就会有特定模
块相关函数,比如:InitModule, ReleaseModule, btnOK_Click,
tnCancel_Click, LoadUserData(strUsername),
aveUserData(strUserData)等等,并且你的每一个dll将会去执行他们。
∙2、你可以用你的脚本去完成一个完整的任务,并且你会载入基于你的任务的脚本文件(类CscriptObject可以为你载入一个脚本文件)
例子:这个脚本开启"Calculator"程序。
∙function StartCalc()
∙{
∙ var WshShell = new ActiveXObject("WScript.Shell");
∙ var oExec = WshShell.Exec("calc");
∙ WshShell = null;
∙}
∙ 3. 你可以建立一个ActiveX对象,它的生存期可以比它在一个函数中调用生存期长。
∙var XML_Obj;
∙function StartModule()
∙{
∙ XML_Obj = new ActiveXObject("Msxml.DOMDocument");
∙ XML_Obj.async = false;
∙}
∙
∙function StopModule()
∙{
∙ XML_Obj = null;
∙}
∙
∙function LoadSettings(strFilename)
∙{
∙ XML_Obj.load(strFilename);
}
∙ 4. 还有一个情况就是你想直接执行你的脚本,你只要添加代码,不需要写一个函数…你试试把。
参考
Microsoft Windows Script Control
VBScript Documentation
JScript Documentation。