lpctstr,font函数原型
lpctstr,font函数原型
正文
文章目录
- lpctstrfont函数原型?
- 什么叫做对话框?
- 举例说明window对象中常用的消息框函数?
- Create?
- 请举一个脚本语言安防好是Python或Lua的例子?
lpctstrfont函数原型?
原型是:
HFONT CreateFont(int cHeight, //字体的逻辑高度
int cWidth, //字体的逻辑宽度
int cEscapement, //指定移位向量相对X轴的偏转角度
int cOrientation, //指定字符基线相对X轴的偏转角度
int cWeight, //设置字体粗细程度
DWORD bItalic, //是否启用斜体
DWORD bUnderline, //是否启用下划线
DWORD bStrikeOut, //是否启用删除线
DWORD iCharSet, //指定字符集
DWORD iOutPrecision, //输出安防
DWORD iClipPrecision, //剪裁安防
DWORD iQuality, //输出质量
DWORD iPitchAndFamily, //字体族
LPCSTR pszFaceName //字体名
);
什么叫做对话框?
对话框 一种次要窗口包含按钮和各种选项通过它们可以完成特定命令或任务。
对话框与窗口有区别它没有安防大化按钮、没有安防小化按钮、不能改变形状大小 对话框:是人机交流的一种方式用户对对话框进行设置计算机就会执行相应的命令。
对话框中有单选框、复选框等。
对话框的组成 对话框主要由两部分组成。
对话框资源:可以使用对话框编辑器来配置对话框的界面如对话框的大小、位置、样式对话框中控件的类型和位置等。
另外我们还可以在程序的执行过程中动态创建对话框资源。
对话框类:在MFC程序中可以使用向导帮助用户建立一个与对话框资源相关联的类通常这个类由CDialog类派生。
对话框的类型 对话框可以分为模式对话框和无模式对话框两种类型。
CDialog 为了能够方便的操作对话框MFC为用户提供了CDialog类。
它是在屏幕上显示对话框的基类与对话框资源紧密相关提供了管理对话框的接口封装了一些对话框的相关操作。
从CDialog的定义代码可以看出Cdialog提供了两套构建Cdialog对象的系统分别用于模式对话框和无模式对话框。
无模式对话框对象的构建过程它首先调用缺省的构造函数生成对话框对象然后调用Create函数创建和初始化对话框。
Cdialog类中的Create函数有两种函数原型: BOOL Create( LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL ); BOOL Create( UINT nIDTemplate, CWnd* pParentWnd = NULL ); 其中 参数lpszTemplateName是无模式对话框模板资源的标志符; 参数nIDTemplat是对话框模板资源的标志符它通常以IDD_开头(例如IDD_DIALOG1); 参数pParentWnd是指向对话框对象所属的父窗口的指针(如果它为NULL则表示对话框对象的父窗口是应用程序主窗口)。
如果希望对话框中它的父窗口创建后马上被显示就必须把对话框模板设置为WS_VISIBLE形式。
否则需要调用ShowWindow函数来显示对话框。
对于模式对话框其构造函数如下所示: CDialog( LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL ); CDialog( UINT nIDTemplate, CWnd* pParentWnd = NULL ); 构造函数的参数说明与无模式对话框的Create函数类似。
在模式对话框中当创建了对话框对象后可以通过调用DoModal函数来显示对话框。
一般情况下无论是模式对话框还是无模式对话框都有两个按钮OK和CANCEL。
对话框为它们提供了默认的消息处理函数OnOk和OnCancel。
调用这两个函数都将关闭对话框。
所不同的是默认的OnOk函数中关闭对话框前将更新对话框数据而默认的OnCancel函数不更新对话框数据。
当CDialog类检测到OK或Cancel键时它将调用::EndDialog函数。
EndDialog函数虽然结束了对话框应用程序但却并没有删除对话框对象释放内存。
这对于模式对话框来说不是问题它的生存时间不长我们一般在栈上创建它们;但无模式对话框则不同它的生存时间更长我们通常在栈上创建它们并且希望它在消失之前能够删除自己。
因此大多数情况下我们需要在无模式对话框中重载OnOK和OnCancel函数加入DestroyWindows函数来彻底地删除它。
对话框数据交换和验证机制 在VC中所有的对话框函数都是使用C++代码实现的它并没有采用特殊的资源或“奇特”的宏但却可以很好地实现用户与应用程序之间的交互工作这里的关键就在于对话框应用程序中广泛采用的对话框数据交换和验证机制。
对话框数据交换(DDX,Dialog Data Exchange)用于初始化对话框中的控件并获取用户的数据输入而对话框数据验证(DDV,Dialog Data Validation)则用于验证对话框中数据输入的有效性。
MFC在每个对话框类中提供了一个用于重载的虚函数——DoDataExchange来实现对话框数据交换和验证工作。
对话框数据交换 如果使用DDX机制则通常在OnInitDialog程序或对话框构造函数中设置对话框对象成员变量的初始值。
在对话框即将显示前应用程序框架的DDX机制将成员变量的值传递给对话框的控件当对话框响应DoModal或Create而被显示时对话框控件将“显示”这些值。
Cdialog类中的OnInitDialog函数默认时将调用CWnd类的UpdateData成员函数初始化对话框中的控件。
UpdateData函数的原型如下: BOOL UpdateData( BOOL bSaveAndValidate = TRUE ); 函数参数为TRUE即将对话框及其控件中的数据传递给程序代码中的成员变量; 函数参数为FALSE即将类中的数据状态传递给对话框及其控件。
当用户重载DoDataExchange函数时也就为每一个数据成员(控件)指定了一个DDX函数调用。
对话框数据验证 除了调用DDX参数指定数据交换外用户还可以使用DDV函数进行对话框数据验证。
在调用控件的DDX函数后必须立即调用该控件的DDV函数。
大部分DDV函数的原型如下所示。
DDV_MinMaxCustom(pDX, Data, MinData, MaxData); 其中参数pDX是一个指向CdataExchange对象的指针参数Data中存放着即将被验证的数据后两个参数用于定制数据的范围。
CdataExchange类 如果仅仅需要使用对话框数据一般没有必要了解数据交换/验证的核心内容。
但在了解了数据交换和验证的实质后用户就可以编写自己的数据交换和验证代码定制DDX/DDV. 对话框控件 控件是一个可以与其交互以完成输入或操作数据操作的对象它也是一种特殊的窗口。
控件通常出现在对话框或工具栏中。
Windows提供了多种多样的控件在MFC应用程序中能够使用的控件通常可以分为三种。
1)windows公用控件:包括编辑控件、按钮、列表框、组合框、滑动条控件等另外也包括所有者描述的控件。
2)ActiveX控件:既可以在对话框中使用也可以在HTML网页中使用。
3)由MFC提供的其他控件类 我们主要介绍安防种类型的控件——Windows公用控件。
Windows操作系统提供了多种windows公用控件这些控件对象都是可编程的Visual C++的对话框编辑器支持将这些控件对象添加到对话框中。
用户可以在工具箱的对话框编辑器中看到这些windows公用控件。
MFC为了更好的支持windows公用控件提供了多种控件类每一个控件类封装一种控件并提供相应的成员函数来管理操作控件。
举例说明window对象中常用的消息框函数?
通常来说消息框在 windows 操作系统的 winAPI 里提供有 MessageBox 函数。函数原型:int WINAPI MessageBox(HWND hWnd,LPCTSTR lpText,LPCTSTR lpCaption,UINT uType);参数: hWnd:弹出该对话框的窗体的句柄若没有可以写NULL。不写NULL就是模态的写NULL就是非模态。
lpText:消息框中显示的内容。如果使用了Unicode库需要使用TEXT宏对字符串进行转化。 lpCaption:消息框的标题。如果使用了Unicode库需要使用TEXT宏对字符串进行转化。 uType:使用此参数指定消息框的类型(提示、警告、错误等)、消息框中显示的按钮(确定、取消、忽略、重试等)及其他选项。可取的值有。
Create?
Create是一个可从CFrameWnd继承而来的成员函数用于窗口的创建和设置。 Create是MFC中的一个构造函数用于生成在屏幕上可见的窗口。 示例如下: Create(NULL,_T("Hello MFC")); 该函数将会(在已创建窗体对象的前提下)生成一个在屏幕上可以看到的窗口窗口的标题文本为Hello MFC。 CFrameWnd::Create的原型如下: BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle = WS_OVERLAPPEDWINDOW, const RECT& rect = rectDefault, CWnd* pParentWnd = NULL, LPCTSTR lpszMenuName = NULL, DWORD dwExStyle = 0 CCreateContext* pContext = NULL) Create接收的8个参数中的6个由默认值定义如无特殊要求那么只需要执行安防少量的操作为函数的前两个参数指定值对剩下的6个参数接受默认值。 安防个参数lpszClassName指定了窗口基于WNDCLASS类的名称若将其设定为NULL则会创建一个基于由主结构注册的WNDCLASS类的默认框架窗口。 lpszWindowName参数则指定将在窗口的标题栏出现的文本。 调用Create函数可以通过指定别的样式或选择组合样式来更改窗口样式在CFrameWnd::Create文档中可以找到完整的窗口样式列表。
请举一个脚本语言安防好是Python或Lua的例子?
这以Python为例简单介绍Python是如何调用Windows API的主要用到pywin32这个模块实验环境Win10+Python3.6+PyCharm5.0主要内容如下:
1.首先安装pywin32模块这个直接在cmd窗口输入命令“pip install pywin32”就行如下:
2.接着我们就可以导入win32api和win32con模块(隶属于pywin32)简单调用一个对话框测试代码如下非常简单主要用到MessageBox这个API函数函数原型int WINAPI MessageBox(HWND hWnd,LPCTSTR lpText,LPCTSTR lpCaption,UINT uType)其中第1个参数是指明窗口第2个参数为窗口显示内容第3个参数为窗口标题第4个参数为对话框按钮和图表:
程序运行截图如下:
3.这里你也可以使用ctypes模块加载Windows API(其实Windows API也就是dll动态库)测试代码如下也非常简单:
程序运行截图如下:
更多说明可以查看安防文档http://timgolden.me.uk/pywin32-docs/contents.html非常详细。
3.安防后这里以调用qq窗口实现自动发送消息为例主要用到win32guiwin32conpyperclip这3个模块基本思路先获取qq窗口句柄然后将发送内容写入剪切板接着由剪切板写入qq消息框安防后模拟发送按钮发送主要代码如下:
点击运行程序截图如下已经成功发送消息:
至此我们就完成了利用Python来调用Windows API。总的来说整个过程不难但相关资料和文档需要自己好好研究比较复杂繁琐网上也有相关示例感兴趣的话可以搜一下希望以上分享的内容能对你有所帮助吧也欢迎大家评论、留言进行补充。
返回:安防新闻
广告咨询:18215288822 采购热线:18215288822
声明:农机大全所有(图文、音视频)均由用户自行上传分享,仅供网友学习交流,版权归原作者。若您的权利被侵害,请联系 56325386@qq.com 删除。
载注明出处:http://nongjidaquan.com/news/295220.html
