8.1.3 在Python扩展中使用MFC
来源:互联网 发布:赠送花园补充协议 知乎 编辑:程序博客网 时间:2024/05/01 21:38
8.1.3 在Python扩展中使用MFC
作者: 孙广磊 出处:人民邮电出版社 ( ) 砖 ( ) 好 评论 ( ) 条 进入论坛关 键 词:Python MFC GUI 编程 函数 Windows 征服Python—语言基础与典型应用
阅读提示:《征服Python—语言基础与典型应用》第八章主要讲的是Python扩展和嵌入,本节介绍了在Python扩展中使用MFC。
8.1.3 在Python扩展中使用MFC
在Windows下使用MFC可以方便地进行GUI编程。MFC对基本的SDK API函数进行了封装,使用更为简便。在PythonWin中提供了部分MFC中的函数。
在Python扩展中使用MFC与上一节中的例子有不同的地方。此处给出一个在Python扩展中使用MFC创建一个对话框的例子。整个过程如下所示。
(1)单击【File】|【New】命令,弹出创建工程对话框。单击【Projects】标签,选择左侧列表中的【MFC AppWizard (dll)】项,在【Project name】文本框中输入工程名“UseMFC”,如图8-17所示。
(2)单击【OK】按钮,弹出如图8-18所示的工程设置对话框。选中【Regular DLL using shared MFCDLL】单选框,使用动态链接方式。该方式需要MFC DLL的支持,如果选中【Regular DLL with MFC staticallylinked】单选框,则使用静态链接的方式,这样会增大生成的Python扩展的体积。
(3)单击【Finish】按钮,弹出如图8-19所示的确认对话框。单击【OK】按钮完成工程创建。
(4)单击【Insert】|【Resource】命令,弹出添加资源对话框,选择左侧列表中的【Dialog】项,如图8-20所示。
图8-19 工程信息确认对话框 图8-20 添加资源对话框
(5)单击【New】按钮将在工程中新建一个对话框。向对话框中添加Edit控件和Static Text控件,将其修改为如图8-21所示的形式。
(6)在创建的对话框上右击,选择【ClassWizard】命令,弹出如图8-22所示的添加类对话框。 图8-21 创建对话框 图8-22 为对话框添加类
(7)单击【OK】按钮为对话框添加一个新类,在弹出的添加类对话框中的【Name】文本框中将类命名为“CInput”,其余按照默认选项,如图8-23所示。
(8)右击创建的对话框,选择【ClassWizard】命令,弹出如图8-24所示的对话框。
(9)单击【Member Variables】标签,选中【IDC_EDIT1】项,单击【Add Variable】按钮,弹出如图8-25所示的对话框。 图8-23 输入类名 图8-24 MFC类向导对话框
(10)在【Member variable name】文本框中输入“m_input”为控件IDC_EDIT1添加变量,即获取文本框中输入的字符串,如图8-26所示。单击【OK】按钮,完成添加变量。
图8-25 添加变量对话框
(11)打开UseMFC.cpp文件,将如下文件添加到其中。
#include "Input.h"
#include然后将如下所示代码添加到UseMFC.cpp文件中。
PyObject *show(PyObject *self, PyObject *args)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CInput dia;
dia.DoModal();
return Py_BuildValue("s", dia.m_input);
}
static PyMethodDef UseMFCMethods[] =
{
{"show", show, METH_VARARGS,"show a messagebox"},
{NULL,NULL}
};
extern "C" void initUseMFC()
{
PyObject *mod;
mod = Py_InitModule("UseMFC",UseMFCMethods);
}
(12)打开UseMFC.def文件,将初始化函数添加到UseMFC.def文件中。def文件是用来告诉链接器DLL文件的导出函数的,相当于使用PyMODINIT_FUNC声明初始化函数。UseMFC.def文件内容如下所示。
; UseMFC.def : Declares the module parameters for the DLL.LIBRARY "UseMFC"
DESCRIPTION 'UseMFC Windows Dynamic Link Library'EXPORTS
; Explicit exports can go here
initUseMFC
(13)按照8.1.1节中创建工程的第(6)~(10)步操作,完成Python扩展的编译。
(14)编写如下所示的UseMFC.py,调用编译好的UseMFC模块。
# -*- coding:utf-8 -*-
# file: UseMFC.py
#
import UseMFC # 导入UseMFC模块
input = UseMFC.show() # 调用show函数
print '刚才输入的是:'
print input
(15)运行脚本后,在文本框中输入“Hi,Python and MFC!”,如图8-27所示。单击【OK】按钮后,如图8-28所示。
图8-26 设置变量名 图8-27 脚本运行弹出对话框 图8-28 脚本获得文本框中的文本回书目
- 8.1.3 在Python扩展中使用MFC
- 在Python扩展中使用MFC
- 在Windows中使用VC++2010扩展python
- MFC 扩展DLL中使用STL 问题
- 在MFC中使用WTL
- 在MFC中使用浏览器
- 在MFC中使用TabCtrl
- 在MFC中使用WMI
- 在MFC中使用OpenCV
- 在MFC中使用浏览器
- 在MFC中使用OpenCV
- 在MFC中使用Cstring
- 在MFC中使用Halcon
- Duilib在MFC中使用
- 在mfc中使用cef
- 在MFC中使用SQLite
- Duilib在MFC中使用
- 在MFC中使用Cstring
- xslt中的问题:"<"(十六进制0x3C)是无效的属性字符
- 在应用中嵌入Python - lf8289的专栏 - CSDNBlog
- linux下java环境和eclipse的配置
- SQL 2005数据字段类型说明???
- 征服Python—语言基础与典型应用
- 8.1.3 在Python扩展中使用MFC
- 数据结构笔试题目(下)
- CSS:实现某个div在网页中垂直水平居中
- Python扩展方法及工具比较
- 双剑合一 笔记本安装Vista/xp双系统详解
- acm 蟠桃计问题
- 傻目录精准化搜索打造聪明消费方式
- 优化VMWare 的运行效率
- 我还能走很远---lua和tolua++