MFC和API函数

合集下载

mfc编程用途

mfc编程用途

mfc编程用途
MFC(Microsoft Foundation Classes)是微软公司提供的一个用于 Windows 应用程序开发的类库和框架。

它将 Windows API 进行了封装,提供了一系列的类和函数,使得开发者可以更加方便地创建 Windows 应用程序。

以下是 MFC 编程的一些常见用途:
1. 用户界面开发:MFC 提供了丰富的 UI 组件和控件,如按钮、文本框、列表框等,开发者可以利用这些组件快速构建出美观的用户界面。

2. 图形和绘图:MFC 提供了绘图和图形操作的类和函数,开发者可以使用这些功能来绘制图形、显示图像以及实现动画效果。

3. 文件和数据库操作:MFC 提供了文件操作和数据库访问的类和函数,开发者可以使用这些功能来读取、写入文件,以及连接和操作数据库。

4. 网络编程:MFC 提供了网络通信相关的类和函数,开发者可以使用这些功能来创建网络应用程序,实现客户端/服务器通信。

5. 多线程编程:MFC 支持多线程编程,开发者可以使用它来创建并发执行的线程,提高程序的性能和响应能力。

6. 串口通信:MFC 提供了串口通信的类和函数,开发者可以使用这些功能来与外部设备进行串口通信。

7. 打印和打印预览:MFC 提供了打印和打印预览的功能,开发者可以利用这些功能来设计和实现打印相关的应用程序。

8. 动态链接库(DLL)开发:MFC 可以用于创建动态链接库,这些库可以被其他应用程序调用,实现代码的重用和模块化。

总之,MFC 编程提供了一个强大的工具集,使得开发者能够更加高效地创建 Windows 应用程序,并且减少了对底层 Windows API 的直接操作,提高了开发效率和代码的可维护性。

mfc基本程序

mfc基本程序

mfc基本程序
MFC(Microsoft Foundation Class)是微软基础类库,是微软公司实现的一个c++类库,主要封装了大部分Windows API函数。

下面是MFC基本程序的步骤:
1. 添加相应的头文件和库文件:在使用API时,需要添加相应的头文件和库文件,例如PlaySound需要头文件mmsystem.h和库文件WINMM.LIB的支持。

2. 设计窗口类:定义一个从CWnd 类继承而来的派生类,负责处理用户交互和绘图等操作。

3. 注册窗口类:使用AfxRegisterClass 函数将窗口类注册到 Windows 系统中。

4. 创建窗口对象:使用CreateWindow 函数创建一个窗口对象,并将其显示在屏幕上。

5. 循环取消息:通过消息循环从Windows 系统接收消息,并将其发送给窗口对象进行处理。

6. 处理消息:在窗口对象的处理函数中,根据接收到的消息类型进行相应的处理。

请注意,上述步骤仅为MFC基本程序的一般性指导,具体的程序编写可能因项目需求和个人喜好而有所不同。

如果你需要更详细的信息或有特定的问题,请提供更多细节以便获得更准确的回复。

多线程及其同步

多线程及其同步


(2)/MT和/MTd表示采用多线程运行时库的静态lib版本。该选项会在 编译时将运行时库以静态lib的形式完全嵌入。该选项生成的可执行文
件运行时不需要运行时库dll的参加,会获得轻微的性能提升,但最终
生成的二进制代码因链入庞大的运行时库实现而变得非常臃肿。

(3)/MD和/MDd表示采用多线程运行时库的动态dll版本,该方式不会

要说明的一点是,对于单核处理器(CPU) 的计算机,操作系统给每个线程分配不同的 CPU时间片,在某一个时刻,CPU只执行一 个时间片内的线程,多个时间片中的相应线 程在CPU内轮流执行,由于每个时间片时间 很短,所以对用户来说,仿佛各个线程在计 算机中是并行处理的。操作系统根据线程的 优先级来安排CPU的时间,优先级高的线程 优先运行,优先级低的线程则继续等待。
将运行时库链接到可执行文件内部,只在运行时才调用,所以可有效
减少可执行文件尺寸。当多项目以MD方式运作时,其内部会采用同一 个堆,内存管理将被简化,跨模块内存管理问题也能得到缓解。
线程函数的定义

DWORD WINAPI ThreadProc(LPVOID lpParam); WINAPI是一个宏名,在 windef.h文件中有如下的声明: #define WINAPI __stdcall __stdcall 是Windows标准 C/C++函数的调用方法。从底层上说, 使用这种调用方法,参数的进栈顺序和标准 C调用(__cdecl 方 法)是一样的,都是从右到左,但是__stdcall 采用自动清栈的 方式,而__cdecl 采用的是手工清栈方式,并且函数名自动加前 导的下划线。 Windows 规定,凡是由它来负责调用的函数都必须定义为 __stdcall 类型。 ThreadProc是一个回调函数,即由Windows系统来负责调用的函 数,所以此函数应定义为__stdcall类型。另外,如果没有显式说 明的话,函数的调用方法默认是__cdecl。

关于MFC的有些知识

关于MFC的有些知识

关于MFC的有些知识实验⼀1、在VC++中,⼯程与各种源⽂件之间是什么关系?解答:⼯程的实质是⼀些相互关联的源⽂件的集合,可以把项⽬理解成⼀个⼯作任务, 开发环境中,⼯程包含在⼯作区间中,⼀个⼯作区可以管理多个⼯程2、⼀个VC++⼯程下会有3个⽂件夹,这3个⽂件夹分别是什么?以.cpp为后缀的⽂件会添加到哪个⽂件夹中?以.h为后缀⽂件会添加到哪个⽂件夹中?解答:分别是head Files ,Sourse Files, Resourse Files ,.cpp放在Sourse ⽂件⾥⾯,.h放在Head Files⽂件⾥3,以win32 console application⼯程为例,简述⼯程的建⽴,⽂件的添加,⼯程的编译和链接及⼯程的执⾏过程。

解答:这个就是win32 console application⼯程的实例验证过程。

实验⼆1.简述Windows应⽤程序的特点。

解答:⼀.事件驱动的程序设计它是⼀种“被动”式程序设计⽅法,程序开始运⾏时,处于等待⽤户输⼊事件状态,然后取得事件并作出相应反应,处理完毕⼜返回并处于等待事件状态。

⼆. 消息循环与输⼊消息是⼀种报告有关事件发⽣的通知。

· 事件驱动是靠消息循环机制来实现的。

· Windows应⽤程序的消息来源有以下四种:(1)输⼊消息(2)控制消息(3)系统消息(4)⽤户消息三. 图形输出Windows程序的所有输出都是图形,字符也被作为图形来处理。

· GDI提供两种基本服务:创建图形输出和存储图象。

· 绘图函数分为三类:⼀是⽂字输出;⼆是⽮量图形函数,⽤于画线、圆等⼏何图形;三是光栅(位图)图形函数,⽤于绘制位图。

四. ⽤户界⾯对象⽤户界⾯对象:窗⼝边框系统菜单框标题栏菜单栏⼯具条客户区垂直滚动条和⽔平滚动条状态栏图标光标插⼊符对话框控件消息框五.资源共享· 常见的资源包括:设备上下⽂,画刷,画笔,字体,对话框控制,对话框,图标,定时器,插⼊符号,通信端⼝,电话线等。

使用MFC进行可视化编程

使用MFC进行可视化编程

使用MFC进行可视化编程
MFC(Microsoft Foundation Classes,微软基础类)是一个C++图形用户界面(GUI)应用程序编程框架,它主要用于开发Windows应用程序。

MFC是微软的一个可视化编程框架,由C++构成,以C++为基础实现可视化编程。

MFC的主要功能是抽象出Windows平台的GUI底层,减少编程者使用Windows API的繁琐程度,使应用程序的开发更加容易。

MFC提供了许多可视化的功能来帮助开发者开发Windows应用程序,它主要由以下几个部分组成:
(1)基础框架:MFC建立在Windows API基础上,它封装了许多Windows系统函数,使得使用者不需要编写复杂的Windows基础函数就可以实现可视化的界面。

(2)界面控件:MFC提供了大量的界面控件,可以让开发者快速实现可视化编程,如按钮、对话框、工具栏、菜单栏等,而且还提供了自定义控件的功能,可以让开发者自定义控件来满足特定业务的需求。

(3)图像处理:MFC提供大量的图像处理的API函数,可以实现图像的显示、缩放、旋转、裁剪等功能,而且支持大量的图像格式,可以满足大多数应用的需求。

(4)网络访问:MFC提供了网络访问的接口,可以实现基于HTTP协议的网络访问,实现网络编程,而且支持多种数据格式,可以轻松实现网络应用的开发。

MFC函数

MFC函数

MFC常用函数(为整理完全,待续)华东理工大学张耀2012年8月1.消息结构体typedef struct tagMSG {HWND hwnd;UINT message;WPARAM wParam;LPARAM lParam;DWORD time;POINT pt;} MSG;2. int WINAPI WinMain(HINSTANCE hInstance, // handle to current instanceHINSTANCE hPrevInstance, // handle to previous instanceLPSTR lpCmdLine, // pointer to command lineint nCmdShow // show state of window)3. typedef struct _WNDCLASS {UINT style; 窗口样式 CS_HREDRAW等CS_WNDPROC lpfnWndProc;int cbClsExtra;int cbWndExtra;HANDLE hInstance;HICON hIcon;HCURSOR hCursor;HBRUSH hbrBackground;LPCTSTR lpszMenuName;LPCTSTR lpszClassName;} WNDCLASS;要是想要改变窗口样式可以自己定义一个窗口类并且注册;在PreCreateWindow()中将cs结构中的lpszClass改为自定义的窗口类名字.4. HICON LoadIcon(HINSTANCE hInstance, // handle to application instanceLPCTSTR lpIconName // icon-name string or icon resource// identifier);加载系统图标时第一个参数为NULL,如果加载自定义图标则要调用全局函数AfxGetInstanceHandle()来获取当前应用程序实例;或者定义外部声明theApp.m_hInstance的当前应用程序实例;还有通过AfxGetApp()先获取theApp 指针.5. HCURSOR LoadCursor(HINSTANCE hInstance, // handle to application instanceLPCTSTR lpCursorName // name string or cursor resource identifier );使用方法与LoadIcon是相同的.6.CWnd::ShowWindowBOOL ShowWindow(int nCmdShow);相关参数SW_NORMAL ; SW_HIDE7. LRESULT CALLBACK WindowProc(HWND hwnd, // handle to windowUINT uMsg, // message identifierWPARAM wParam, // first message parameterLPARAM lParam // second message parameter);可以通过SetWindowLong();修改当前的窗口过程实现对窗口性质的修改.8.CButton::CreateBOOL Create( LPCTSTR lpszCaption, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );通过该函数可以创建一个按钮.创建后需要调用成员函数ShowWindow();或者在第二个参数或上SW_VISIBLE.9.CWnd::MessageBoxint MessageBox( LPCTSTR lpszText, LPCTSTR lpszCaption = NULL, UINT nType = MB_OK );int AfxMessageBox( LPCTSTR lpszText, UINT nType = MB_OK, UINT nIDHelp =0 );第二个为全局API函数.10. HDC GetDC(HWND hWnd // handle to a window);获取当前窗口的DC.调用是要加上::,使用完后要调用::ReleaseDC()释放DC.11.BOOL MoveToEx(HDC hdc, // handle to device contextint X, // x-coordinate of new current positionint Y, // y-coordinate of new current positionLPPOINT lpPoint // pointer to old current position);)把坐标原点移动到当前点.实际绘图比较少用.12. BOOL LineTo(HDC hdc, // device context handleint nXEnd, // x-coordinate of line's ending pointint nYEnd // y-coordinate of line's ending point );从原点做线条到当前坐标.13.CDC::MoveToCPoint MoveTo( int x, int y );CPoint MoveTo( POINT point );把坐标原点移动到当前点.实际绘图比较少用.14.CDC::LineToBOOL LineTo( int x, int y );BOOL LineTo( POINT point );从原点做线条到当前坐标.注:该对象使用完成后也要调用CWnd::ReleaseDC();lientDC由CDC继承而来,区别在于不要调用GetDC();和ReleaseDC(CDC*),但是实例化对象时需要提供窗口指针.可以使用this,GetParent()或者是GetDesktopWindow();16CPen::CPenCPen( );CPen( int nPenStyle, int nWidth, COLORREF crColor );CPen( int nPenStyle, int nWidth, const LOGBRUSH* pLogBrush, int nStyleCount = 0, const DWORD* lpStyle = NULL );//不常用笔迹样式有PS_SOLID,PS_等.17.COLORREF RGB(0~255,0~255,0~255);18.CRect::CRectCRect( );CRect( int l, int t, int r, int b );CRect( const RECT& srcRect );CRect( LPCRECT lpSrcRect );CRect( POINT point, SIZE size );CRect( POINT topLeft, POINT bottomRight );定义一个矩形区域.19.CDC::FillRectvoid FillRect( LPCRECT lpRect, CBrush* pBrush );确定一个由画刷填充的矩形区域.20.CBrush::CBrushCBrush( );CBrush( COLORREF crColor );CBrush( int nIndex, COLORREF crColor );CBrush( CBitmap* pBitmap );创建各种形式的画刷.21.CBitmap::LoadBitmapBOOL LoadBitmap( LPCTSTR lpszResourceName );BOOL LoadBitmap( UINT nIDResource );创建和加载位图资源.22.HGDIOBJ GetStockObject(int fnObject // type of stock object);GetStockObject函数检索的一个句柄,一个预定义的股票笔、刷子、字体、或调色板。

MFC自定义消息步骤

MFC自定义消息步骤

MFC自定义消息步骤MFC(Microsoft Foundation Classes)是Microsoft公司为Windows平台开发的C++类库,它封装了许多Windows API函数,简化了Windows应用程序的开发过程。

在MFC中,可以使用自定义消息来进行应用程序内部的消息传递。

自定义消息的步骤如下:1. 定义消息常量:首先,在需要使用自定义消息的地方(通常是对话框或视图类中),定义一个用于表示自定义消息的整型常量。

可以使用WM_USER作为基准值,如const UINT WM_MY_MESSAGE = WM_USER + 12. 注册消息:在应用程序启动时,通常在InitInstance函数中,使用CWinApp类的RegisterWindowMessage函数来注册自定义消息,该函数用于获取一个唯一的消息值,如:UINT myMessage = RegisterWindowMessage(LPCTSTR pString).3. 处理消息:在需要处理自定义消息的类中,重写消息处理函数(通常是OnWndMsg函数),根据自定义消息的值,对相应的消息进行处理。

如:BEGIN_MESSAGE_MAP(CMyDialog, CDialog)ON_WM_COPYDATA//...ON_REGISTERED_MESSAGE(myMessage, OnMyMessageHandler)END_MESSAGE_MAPLRESULT CMyDialog::OnMyMessageHandler(WPARAM wParam, LPARAM lParam)//处理自定义消息//...return 0;4. 发送消息:要发送自定义消息,可以使用CWnd类的PostMessage或SendMessage函数。

其中,PostMessage函数用于异步发送消息,而SendMessage函数用于同步发送消息。

(1) 异步发送消息(PostMessage):CWnd* pDestWnd = GetDlgItem(IDC_MY_CONTROL);pDestWnd->PostMessage(myMessage, wParam, lParam);(2) 同步发送消息(SendMessage):CWnd* pDestWnd = GetParent(;pDestWnd->SendMessage(myMessage, wParam, lParam);5.消息映射宏:在使用消息映射宏处理自定义消息时,需要使用ON_REGISTERED_MESSAGE宏,该宏会自动在消息映射表中添加对应的消息处理函数。

UG OPEN-API与 MFC类连接问题

UG OPEN-API与 MFC类连接问题

一、准备工作。

1、对于UG自动加载的DLL文件和菜单文件,在将菜单与DLL文件放进文件夹“startup”,目录注册到custom_dirs.dat(如目录注册为“E:\ug\OPEN\ug_open\”,则startup文件夹满足:“E:\ug\OPEN\ug_open\startup。

”)2、对于.prt文件的自动目录位置,注册到UGII_STANDARD_PATH=...ugii_env.dat中。

3、VC6.0中加载UGOPEN与UGOPENPP。

【tools】->【Options】如图:二、VC6.0中新建DLL。

1、新建时“MFC AppWizard [dll]”,其它选项默认。

2、Projiect->Settings中link选项卡在category下拉中选择General。

之后加入lib 文件。

kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.libshell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libufun.liblibugopenint.lib libopenpp.lib libvmathpp.lib3、Project Setting->C/C++中,category下拉中选择Code Generation,把Use run-time library的选项改为“Multithreaded DLL”。

如图:4、头文件注意:#include <uf.h>#include <uf_exit.h>#include <uf_ui.h>#include <uf_mb.h>#include <uf_part.h>#include <uf_fam.h>#include <uf_modl.h>#include <uf_mtx.h>#include <uf_assem.h>#include <ug_session.hxx>#include <ug_exception.hxx>#include <ug_info_window.hxx>三、代码。

mfc getdlgitemtext的用法 -回复

mfc getdlgitemtext的用法 -回复

mfc getdlgitemtext的用法-回复mfc GetDlgItemText函数是Microsoft Foundation Classes(MFC)库中的一个API函数,用于获取对话框中指定控件的文本内容。

在本文中,我们将详细介绍mfc GetDlgItemText函数的用法,并提供一些示例来帮助读者更好地理解和应用该函数。

首先,让我们来了解一下mfc GetDlgItemText函数的基本语法和参数:BOOL GetDlgItemText(int nID, 控件IDCString& str 接收文本的CString对象);mfc GetDlgItemText函数接受两个参数:控件ID和一个CString对象的引用。

控件ID用于指定要获取文本的控件,而CString对象则用于存储获取到的文本内容。

接下来,我们可以按照以下步骤使用mfc GetDlgItemText函数:第一步:包含头文件在使用mfc GetDlgItemText函数之前,必须包含相应的头文件。

通常,我们需要包含"afxwin.h"或者"stdafx.h"头文件。

cpp#include <afxwin.h>第二步:获取对话框变量指针要使用mfc GetDlgItemText函数,首先需要获取指向对话框的指针。

您可以使用GetDlgItem函数来获取指定ID的控件的句柄,并使用FromHandlePermanent函数将其转换为对应的指针。

cppCDialog* pDialog = (CDialog*)FromHandlePermanent(hwnd);第三步:调用mfc GetDlgItemText函数现在,我们可以在获取到对话框指针的情况下调用mfc GetDlgItemText 函数来获取控件的文本内容。

我们需要传递控件ID和一个CString对象引用作为参数。

MFC中常用函数

MFC中常用函数

1.IsEmpty()函数判断一对象是否初始化,返回布尔值.表达式 IsEmpty(expression)实例: <%Dim iresponse.write IsEmpty(i)%>返回结果: true2. GetAt函数原型:TCHAR GetAt( int nIndex ) const;函数返回值:字符中第nIndex个字符(从0开始).Header: atlcoll.h注意:nIndex的最大值可由GetUpperBound()得到。

若nIndex小于0或大于最大值,将返回错误。

3. isdigitisdigit原型:extern int isdigit(char c);用法:#include <ctype.h>功能:判断字符c是否为数字说明:当c为数字0-9时,返回非零值,否则返回零。

附加说明此为宏定义,非真正函数。

相关函数:isalnum,isalpha,isxdigit,iscntrl,isgraph,isprint,i spunct,isspace4. isalnum原型:extern int isalnum(int c);用法:#include <ctype.h>功能:判断字符变量c是否为字母或数字说明:当c为数字0-9或字母a-z及A-Z时,返回非零值,否则返回零。

5. isalpha函数:isalpha原型:int isalpha(int ch)用法:头文件加入#include <cctype>(旧版本的编译器使用<ctype.h>)功能:判断字符ch是否为英文字母,当ch为英文字母a-z或A-Z时,在标准c中相当于使用“isupper(ch)||islower(ch)”做测试,返回非零值,否则返回零。

PS:{isupper原型:extern int isupper(int c);头文件:<cctype>(旧版本的编译器使用<ctype.h>) 功能:判断字符c是否为大写英文字母说明:当参数c为大写英文字母(A-Z)时,返回非零值,否则返回零。

mfc框架的基本运行原理

mfc框架的基本运行原理

MFC框架的基本运行原理一、概述MFC(Microsoft Foundation Classes)是微软公司开发的基于C++的框架库,用于开发Windows应用程序。

MFC框架的基本运行原理是通过提供一系列的类和函数,封装了Windows操作系统的API,使开发者能够更加方便地创建、管理和操作Windows应用程序的各种界面元素。

二、MFC框架结构MFC框架的结构可以分为以下几个主要部分:1. 应用程序类MFC应用程序类(CWinApp)是MFC框架的入口点,一个MFC应用程序只能有一个应用程序类的实例。

应用程序类负责初始化MFC框架,创建主窗口,处理消息循环等。

2. 窗口类MFC窗口类(CWnd)是应用程序中各个窗口的基类,包括主窗口、对话框等。

窗口类负责创建和管理窗口对象,并处理窗口消息。

3. 控件类MFC控件类(CButton、CEdit、CListCtrl等)是MFC框架提供的一系列封装了Windows操作系统控件的类。

通过使用控件类,开发者可以快速创建和使用各种常见的窗口控件。

4. 文档视图模型类MFC文档视图模型类(CDocument、CView)是MFC框架中用于实现文档视图模型的基类。

文档类负责处理文件的读写和数据的保存,视图类负责显示数据并响应用户输入。

三、MFC消息循环MFC框架是事件驱动的,通过消息循环来处理用户输入和系统消息。

消息循环是一个无限循环,等待用户输入和系统消息的到来,然后将消息分发给相应的窗口进行处理。

消息循环的基本流程如下:1.调用消息循环函数,如AfxWinMain。

2.接收并分发消息,包括用户输入和系统消息。

3.若消息为退出消息,则退出消息循环;否则,将消息发送给相应的窗口进行处理。

4.窗口处理消息,并根据消息类型执行相应的操作。

MFC框架通过封装Windows操作系统的消息机制,使开发者能够以面向对象的方式处理消息,并将消息与具体的窗口对象关联起来。

四、MFC的事件处理机制MFC框架提供了一种基于消息映射的事件处理机制,通过事件处理函数来响应用户输入和系统消息。

mfc的工作原理

mfc的工作原理

mfc的工作原理
MFC (Microsoft Foundation Class) 是微软公司开发的一种基于
类库的应用程序框架,用于构建Windows操作系统上的图形
用户界面(GUI)应用程序。

MFC的工作原理主要涉及以下
几个方面:
1. 封装了Windows API:MFC通过封装Windows API,提供
了一套更加简洁、易用的面向对象的编程接口,使开发者能够更方便地创建和管理窗口、对话框、控件以及其他GUI元素。

2. 事件驱动的编程模型:MFC采用了事件驱动的编程模型,
开发者可以通过重载消息映射表中的事件处理函数,响应用户的输入或系统的消息,例如点击按钮、键盘按键等。

这种模型使得开发者能够更加灵活地控制应用程序的行为。

3. 对象模型:MFC基于面向对象的编程思想,通过类的继承
和多态等机制,实现了可重用性和扩展性。

开发者可以通过创建和继承MFC的类,重写其成员函数来实现自定义的应用程
序逻辑。

4. 消息循环:MFC应用程序通过消息循环来处理用户的输入
和系统的消息。

消息循环负责从消息队列中获取消息,并将其分发给相应的窗口或控件进行处理。

开发者可以通过重载消息循环中的函数,定制应用程序的消息处理方式。

总的来说,MFC的工作原理是基于面向对象的编程思想和事
件驱动的编程模型,封装了Windows API提供了方便的编程
接口,通过消息循环处理用户输入和系统消息。

这样的设计使开发者能够更加简单地创建和管理GUI应用程序。

VC++ 文件操作

VC++ 文件操作
•FILE_ATTRIBUTE_NORMAL:默认属性
•FILE_ATTRIBUTE_HIDDEN:隐藏文件或目录
•FILE_ATTRIBUTE_READONLY:文件为只读
•FILE_ATTRIBUTE_SYSTEM:文件为系统文件
•FILE_FLAG_WRITE_THROUGH:操作系统不得推迟对文件的写操作
如果成功返回一个打开文件得句柄,如果调用函数之前文件存在,文件操作属性为:CREATE_ALWAYS 或 OPEN_ALWAYS,使用GetLastError函数返回的是ERROR_ALREADY_EXISTS(包括函数操作成功),如果之前函数不存在,则返回0。使用失败返回INVALID_HANDLE_VALUE,要取得更多的信息,使用GetLastError函数。
文件的共享属性:零表示不共享; FILE_SHARE_READ 或 FILE_SHARE_WRITE 表示允许对文件进行读/写共享访问;
文件的操作有:
•CREATE_NEW:创建文件;如文件存在则会出错
•CREATE_ALWAYS:创建文件,会改写前一个文件
•OPEN_EXISTING:文件必须已经存在。由设备提出要求
lOff:指针移动的字节数。
nFrom:指针移动的模式。可以是CFile::begin,CFile::current,CFile::end
void SeekToBegin( );
DWORD SeekToEnd( );//返回文件长度(字节数)。
下面是一个读取位图文件的信息的例子:
•CFile::modeRead 打开文件仅供读。
•CFile::modeReadWrite 打开文件供读写。

MFC线程间通信方法和相关类,api函数的详细介绍和例子

MFC线程间通信方法和相关类,api函数的详细介绍和例子

2、线程的管理和操作
(一)线程的启动
创建一个用户界面线程,首先要从类CwinThread产生一个派生类,同时必须使用DECLARE_DYNCREATE和IMPLEMENT_DYNCREATE来声明和实现这个CwinThread派生类。第二步是根据需要重载该派生类的一些成员函数如:ExitInstance()、InitInstance()、OnIdle()、PreTranslateMessage()等函数。最后调用AfxBeginThread()函数的一个版本:CWinThread*
//The Thread Function;
UINT ThreadFunction(LPVOID pParam)//线程函数
{
while(!bend)
{
Beep(100,100);
Sleep(1000);
}
return 0;
}
/////////////////////////////////////////////////////////////
线程被分为两种:用户界面线程和工作线程(又称为后台线程)。用户界面线程通常用来处理用户的输入并响应各种事件和消息,其实,应用程序的主执行线程CWinAPP对象就是一个用户界面线程,当应用程序启动时自动创建和启动,同样它的终止也意味着该程序的结束,进程终止。工作线程用来执行程序的后台处理任务,比如计算、调度、对串口的读写操作等,它和用户界面线程的区别是它不用从CWinThread类派生来创建,对它来说最重要的是如何实现工作线程任务的运行控制函数。工作线程和用户界面线程启动时要调用同一个函数的不同版本;最后需要读者明白的是,一个进程中的所有线程共享它们父进程的变量,但同时每个线程可以拥有自己的变量。

VC++深入详解

VC++深入详解

程序的入口点函数,与 DOS 程序的入口点函数 main 的作用相同,当 WinMain 函数结束或 返回时,Windows 应用程序结束。
下面,让我们来看一个完整的 Win32 程序,该程序实现的功能是创建一个窗口,并在 该窗口中响应键盘及鼠标消息,程序实现的步骤为:
WinMain 函数的定义; 创建一个窗口; 进行消息循环; 编写窗口过程函数。
我们在程序开发过程中,没有必要去死记硬背函数的调用语法和参数信息,只要能快 速地从 MSDN 中找到所需的信息就可以了,等使用的次数多了,这些函数自然也就记住 了。
我们经常听人说 Win32 SDK 开发,那么什么是 SDK 呢。SDK 的全称是 Software Development Kit,中文译为软件开发包。假如现在我们要开发呼叫中心,在购买语音卡的 同时,厂商就会提供语音卡的 SDK 开发包,以方便我们对语音卡的编程操作。这个开发 包通常都会包含语音卡的 API 函数库、帮助文档、使用手册、辅助工具等资源。也就是说, SDK 实际上就是开发所需资源的一个集合。现在读者应该明白 Win32 SDK 的含义了吧, 即 Windows 32 位平台下的软件开发包,包括了 API 函数、帮助文档、微软提供的一些辅 助开发工具。
} MSG;
该结构体中各成员变量的含义如下: 第一个成员变量 hwnd 表示消息所属的窗口。我们通常开发的程序都是窗口应用程序, 一个消息一般都是与某个窗口相关联的。例如,在某个活动窗口中按下鼠标左键 ,产生的 按键消息就是发给该窗口的。在 Windows 程序中,用 HWND 类型的变量来标识窗口。
1.4.1 WinMain 函数的定义
WinMain 函数的原型声明如下:
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow

mfc面试知识点总结

mfc面试知识点总结

mfc面试知识点总结MFC(Microsoft Foundation Class)是微软公司开发的一套 C++ 库,用于简化 Windows 应用程序的开发。

MFC 提供了一系列的类和函数,用于处理 windows 窗口、消息、事件等,使得开发者能够更快速地完成 Windows 程序的开发。

在 MFC 的面试中,通常会涉及到一些基础知识和高级知识,下面就来总结一些常见的 MFC 面试知识点。

一、MFC 的基本概念1. MFC 是什么?MFC 是 Microsoft Foundation Class 的简称,是微软公司提供的用于简化 Windows 应用程序的开发的一套 C++ 类库。

2. MFC 的特点有哪些?MFC 的特点包括易学易用、功能强大、提供了丰富的类库和工具等。

3. MFC 和 Win32 API 有什么区别?MFC 是建立在 Win32 API 之上的,它封装了 Win32 API,提供了更加高层次的接口,使得开发 Windows 应用程序更加简单和方便。

4. MFC 和 ATL 有什么区别?MFC 是面向传统 Windows 应用程序的开发框架,而 ATL 是为开发高效的 COM 组件而设计的,两者目标不同。

5. MFC 和 .Net 的关系是什么?MFC 是基于 C++ 的框架,而 .Net 是 Microsoft 开发的基于 .Net Framework 的框架,两者属于不同的技术栈。

二、MFC 的基本类和对象1. CWinApp 类CWinApp 是 MFC 应用程序的主类,它代表了一个 MFC 应用程序的实例,通常包含了一个主窗口类对象和一些初始化及清理代码。

2. CFrameWnd 类CFrameWnd 是 MFC 中的主窗口类,它代表了应用程序的主窗口,通常包含了菜单、工具栏等 UI 元素。

3. CView 类CView 是MFC 中的视图类,它用于显示窗口中的用户界面,通常包含了子视图、控件等。

MFC与API

MFC与API

MFC,微软基础类(Microsoft Foundation Classes),事实上是微软提供的,用于在C++环境下编写应用程序的一个框架和引擎,VC++是Windows下开发人员利用的专业C++ SDK(SDK, Standard Software Develop Kit,专业软件开发平台),MFC 确实是挂在它之上的一个辅助软件开发包,MFC作为与VC++血肉相连的部份(注意C++和VC++的区别:C++是一种程序设计语言,是一种大伙儿都承认的软件编制的通用标准,而VC++只是一个编译器,或说是一种编译器+源程序编辑器的IDE,WS,PlatForm,这跟和的关系一个道理,Pascal是Delphi 的语言基础,Delphi利用Pascal标准来进行Win下应用程序的开发和编译,却不同于语言和的关系,Basic语言在VB开发出来被应用的年代已经成了Basic语言的新标准,VB新加的Basic语言要素,如面向对象程序设计的要素,是一种性质上的飞跃,使VB既是一个IDE,又成长成一个新的程序设计语言),MFC同BC++集成的VCL一样是一个非外挂式的软件包,类库,只只是MFC类是微软为VC++专配的..MFC是Win 与C++的结合,API,即微软提供的Windows下应用程序的接口,是一种软件编程的标准,但不是一种程序开发语言本身,能够许诺用户利用各类各样的第三方(如我是一方,微软是一方,Borland确实是第三方)的编程语言来进行对Windows下应用程序的开发,使这些被开发出来的应用程序能在Windows下运行,比如VB,VC++,,Delhpi编程语言函数本质上全数源于API,因此用它们开发出来的应用程序都能工作在Windows的和画图里,遵守Windows作为一个操作系统的内部实现,这其实也是一种必要,微软若是不提供API,那个世上对Windows编程的工作就可不能存在,微软的产品就会迅速从时尚变成垃圾,上面说到MFC是微软对API函数的专用C++封装,这种结合一方面让用户利用微软的专业C++ SDK来进行Windows下应用程序的开发变得容易,因为MFC是对API的封装,微软做了大量的工作,隐藏了好多程序开发人员在Windows下用C++ & MFC编制软件时的大量内节,如应用程序实现消息的处置,设备环境画图,这种结合是以方便为目的的,必然要付出必然代价(这是微软的一贯作风),因此就造成了MFC对类封装中的必然程度的的冗余和迂回,但这是能够同意的..最后要明白MFC不只是一个功能单纯的界面开发系统,它提供的类绝大部份用来进行界面开发,关联一个窗口的动作,但它提供的类中有好多类不与一个窗口关联,即类的作用不是一个界面类,不实现对一个窗口对象的操纵(如创建,销毁),而是一些在Windows(用MFC编写的程序绝大部份都在Windows中运行)中实现内部处置的类,如数据库的治理类等,学习中最应花费时刻的是消息和设备环境,对C++和MFC的学习中最难的部份是指针,C++面向对像程序设计的其它部份,如数据类型,流程操纵都不难,建议学习数据结构C++版。

简易绘图程序 使用API和MFC

简易绘图程序 使用API和MFC

XXX大学程序设计实践报告课题名称:程序设计实践学生姓名:XXXXXxxxxx班级:2012XXXXX班内序号:XXX学号:XXxx21XXX日期:2014年5月1.课题概述1.1课题目标和主要内容本课题了实现一个基于API和MFC的简易绘图软件。

此简易绘图软件,满足用户进行绘图时的基本需求,主要功能包括绘制会动的时钟,绘制三角形(API实现),绘制线条(MFC实现)。

应具有良好的界面、必要的交互信息和简易的菜单进行操作。

在程序的设计与实现中,系统开发平台为Windows7,主要工具为Visual Studio 2012。

1.2系统的主要功能主要功能与说明:DROW1(API):1)会动的时钟的绘制:模拟一个真实的表盘,绘制图形,显示实际的时间。

2)绘制简单的三角形;MFC:1)图形的绘制:a)线形绘图函数:Lineto:绘制直线Polyline:绘制折线Arc:绘制圆弧线Polybezir:绘制弯曲线b)区域绘图函数Rectant:绘制矩形Roundrect:绘制圆边矩形Ellips:绘制椭圆Pie:绘制扇形2)自由绘图:拖动鼠标可以自由绘制曲线,可以通过一个对话框选择所需线形线宽等。

3)清空功能:1)全部清空:可以清空整个屏幕内容。

2. 系统设计2.1 系统总体框架API:MFC:2.2 系统详细设计2.2.1 模块划分图及描述a) 绘图函数模块:通过各种系统自带的绘图函数,直接调用绘图。

设置他们的位置,并添加到菜单项,使点击菜单项则可出现相应图形。

Lineto:绘制直线 Polyline:绘制折线 Arc:绘制圆弧线 Polybezir:绘制弯曲线 Rectant:绘制矩形 Roundrect:绘制圆边矩形 Ellips:绘制椭圆Pie :绘制扇形b) 自由绘图模块:按下鼠标左键,初始化起始位置,在选定自由绘图模式的情况下,拖动鼠标的同时,获取鼠标当前位置为终点位置,调用MoveTo 和LineTo 函数连接两点。

mfc 复位 usb设备函数

mfc 复位 usb设备函数

mfc 复位 usb设备函数MFC是一种基于微软Windows操作系统的编程框架,可以用于开发图形用户界面(GUI)应用程序。

在MFC中,复位USB设备是一个常见的需求,本文将重点介绍如何使用MFC编写复位USB设备的函数。

在MFC中,可以使用Windows提供的API函数来操作USB设备。

复位USB设备的函数主要涉及到以下几个步骤:1. 获取USB设备句柄:首先,我们需要通过设备路径或者设备ID 来获取USB设备的句柄。

设备路径可以通过Windows提供的设备管理器或者设备查找函数来获取。

设备ID可以通过设备管理器或者WMI接口来获取。

2. 打开USB设备:获取到USB设备句柄后,我们需要打开设备以便进行后续的操作。

可以使用Windows提供的CreateFile函数来打开设备。

在打开设备时,需要指定设备路径和访问权限。

3. 发送复位命令:打开设备后,我们可以使用设备句柄来发送复位命令。

复位命令的具体格式和内容需要根据USB设备的厂商和型号来确定,一般可以在设备的文档或者官方网站上找到相应的信息。

4. 关闭设备:复位命令发送完成后,我们需要关闭设备以释放资源。

可以使用Windows提供的CloseHandle函数来关闭设备。

下面是使用MFC编写复位USB设备函数的示例代码:```cpp// 复位USB设备函数BOOL ResetUSBDevice(LPCTSTR devicePath){// 获取USB设备句柄HANDLE hDevice = CreateFile(devicePath,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,NULL);if (hDevice == INVALID_HANDLE_VALUE){// 打开设备失败return FALSE;}// 发送复位命令// TODO: 根据USB设备的具体要求发送复位命令// 关闭设备CloseHandle(hDevice);return TRUE;}```需要注意的是,上述代码中的复位命令部分需要根据实际情况进行修改。

API的意义是什么

API的意义是什么

API的意义是什么API是Application Programming Interface的缩写,也就是应⽤程序调⽤系统功能的接⼝。

Windows API主要包括系统定义的函数、消息及与之相关的数据类型。

我们使⽤各种开发⼯具归根结底都是和API打交道。

但是API本⾝⽐较难掌握,所以开发⼯具都提供了各种可视的或⾯向对象的⼿段,如控件、类等,来使⽤户即使不太了解API,也可以编写Windows程序。

但是这些⼿段是有限的,不可能包括API的所有⽅⾯。

所以⼀些复杂的功能仍然需要调⽤API来实现。

窗⼝句柄都是动态⽣成的,不可能在编程时事先知道,只能通过FindWindow、GetWindow等函数在运⾏时得到。

如果想知道窗⼝的类名,可以借助VC的⼯具Spy++,⽤它选择⼀个窗⼝,Spy++就可以在属性窗⼝中显⽰类名等有关信息。

如果要全⾯了解API,建议你买⼀本C语⾔开发Windows的书认真阅读。

孟达操作系统: Windows98编程⼯具: VC6.0问题: 我是⼀个初学者,有⼏个问题我⼀直不太明⽩,希望您能够给我解答:1、什么是API函数2、在那⾥可以找到关于API函数的资料3、API函数是不是指在VC中不⽤::直接调⽤的函数?它同vc中afx...函数有什么区别。

⽔平: 刚⼊门答:API的基本介绍已经在上⾯提到。

API函数最详细的资料是VC++帮助中的说明。

在VC中不⽤::直接调⽤的函数并不全是API,有⼀些如fopen,是标准的C函数。

afx..函数是MFC函数,是VC特有的函数,也不属于API函数。

⽽有些API函数和MFC函数同名,调⽤时需要加::才⾏(参考)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

CArchive类:用于二进制保存档案CArchive::CArchive 建立一个CArchive对象CArchive(CFile* pFile,UINT nMode,int nBufSize=4096,void* lpBuf=NULL);参数:pFile 指向CFile对象的指针,这个CFile对象是数据的最终源或目的;nMode是标志,取值为CArchive::load时,从文档中加载数据(要求CFile读许可),取值为CArchive::store时,将数据存入文档(要求CFile写许可);nBufSize 指定内部文件缓冲区的大小(按字节计);lpBuf 指向大小为nBufSize的缓冲区,若未指定,则从局部堆中分配一缓冲区,并在该对象被删除时释放该缓冲区,但不释放用户提供的缓冲区。

CArchive::Close 关闭档案,清除缓冲区中剩余数据,断开文件与档案的连接void Close();操作符:<< 存储指定的对象到档案(写),一行可以使用多个析取操作符>> 从档案中加载指定的对象(读),一行可以有多个插入操作符CBitmap类:封装Windows的图形设备接口(GDI)位图CBitmap::LoadBitmap 加载位图资源BOOL LoadBitmap(UINT nIDResource);BOOL LoadBitmap(LPCTSTR lpszResourceName);参数:nIDResource 位图资源ID号;lpszResourceName 位图资源名返回值:若成功,返回非0;否则返回0CBrush类:封装图形设备接口(GDI)中的画刷CBrush::CreateSolidBrush 用指定颜色初始化一个单色画刷BOOL CreateSolidBrush(COLORREF crColor);参数:crColor 画刷颜色返回值:若成功,返回非0;否则返回0CButton类:提供Windows按钮控件的功能CButton::Create 创建一个CButton对象BOOL Create( LPCTSTR lpszCaption, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );lpszCaption是按钮上显示的文本;dwStyle指定按钮风格,可以是按钮风格与窗口风格的组合,取值有:窗口风格:WS_CHILD 子窗口,必须有WS_VISIBLE 窗口可见,一般都有WS_DISABLED 禁用窗口,创建初始状态为灰色不可用的按钮时使用WS_TABSTOP 可用Tab键选择WS_GROUP 成组,用于成组的单选按钮中的第一个按钮按钮风格:BS_PUSHBUTTON 下压式按钮,也即普通按钮BS_AUTORADIOBUTTON 含自动选中状态的单选按钮BS_RADIOBUTTON 单选按钮,不常用BS_AUTOCHECKBOX 含自动选中状态的复选按钮BS_CHECKBOX 复选按钮,不常用BS_AUTO3STATE 含自动选中状态的三态复选按钮BS_3STATE 三态复选按钮,不常用以上风格指定了创建的按钮类型,不能同时使用,但必须有其一。

BS_BITMAP 按钮上将显示位图BS_DEFPUSHBUTTON 设置为默认按钮,只用于下压式按钮,一个对话框中只能指定一个默认按钮rect指定按钮的大小和位置;pParentWnd指示拥有按钮的父窗口,不能为NULL;nID指定与按钮关联的ID号,用上一步创建的ID号。

返回值:若成功,返回非0;否则返回0CButton::DrawItem 重载该函数绘制一个CButton对象,由框架调用该函数virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);参数:lpDrawItemStruct指向包含绘制项信息和要求类型的LPDRAWITEMSTRUCT结构的长指针CButton::SetCheck 设置或复位单选按钮和复选按钮的选择状态void SetCheck(int nCheck);参数:nCheck 指定设置的状态,0为未选择,1为选中,2为不确定CByteArray类:该类支持动态的字节数组CByteArray::GetAt 获取指定下标处的数值,可以用运算符[]代替BYTE GetAt(int nIndex)const;参数:nIndex 数组下标,必须为有效值返回值:指定下标处的数组元素CByteArray::GetData 访问数组元素BYTE *GetData();返回值:指向数组元素的指针CByteArray::GetSize 获取数组中元素个数int GetSize()const;返回值:数组的大小,比最大下标大1CByteArray::RemoveAll 删除数组中所有元素void RemoveAll();CByteArray::SetAt 设置指定下标处的数值,不扩充数组void SetAt(int nIndex,BYTE newElement);参数:nIndex 数组下标,必须为有效值;newElement 存入数组的新元素值CByteArray::SetAtGrow 设置指定下标处的数值,需要时可自动扩充数组void SetAtGrow(int nIndex,BYTE newElement);参数:nIndex 数组下标,大于等于0;newElement 存入数组的新元素值CByteArray::SetSize 设置数组的大小,并基于需要分配内存;若新值小于原数组,则截断旧数组,释放所有未用内存。

void SetSize(int nNewSize,int nGrowBy=-1);参数:nNewSize 新数组的大小,必须大于等于0;nGrowBy 扩大数组时至少要分配的元素数CCmdUI类:该类仅用于ON_UPDATE_COMMAND_UI处理函数中CCmdUI::Enable 使命令的用户界面元素有效或无效virtual void Enable(BOOL bOn=TRUE);参数:bOn 使用户界面元素有效时为TRUE,无效时为FALSECCmdUI::SetCheck 设置命令的用户界面元素为恰当的选择状态virtual void SetCheck(int nCheck=1);参数:nCheck 为0,设置为不选择,为1,设置为选择,为2,设置为不确定CColorDialog类:封装标准颜色对话框CColorDialog::CColorDialog 构造一个CColorDialog对象CColorDialog(COLORREF clrInit=0,DWORD dwFlags=0,CWnd* pParentWnd=NULL);参数:clrInit为缺省颜色选项,若未指定值,则为黑色;dwFlags是标志,定制对话框的功能和外观,为0时只显示基本颜色,为CC_FULLOPEN时,显示完整颜色对话框;pParentWnd 指向拥有对话框的父窗口CColorDialog::GetColor 获取用户选择的颜色COLORREF GetColor()const;返回值:选中颜色的RGB值CDC类:定义设备环境对象类CDC::BitBlt 从源设备环境拷贝一个位图到当前设备环境中BOOL BitBlt(int x,int y,int nWidth,int nHeight,CDC* pSrcDC,int xSrc,int ySrc,DWORD dwRop); 参数:x,y为目的矩形的左上角坐标;nWidth,nHeight为目的矩形的宽度和高度;pSrcDC是指向源设备环境的指针;xSrc,ySrc源位图左上角的坐标;dwRop为光栅操作码。

CDC::CreateCompatibleDC 创建一个与pDC指定的设备相兼容的内存设备环境virtual BOOL CreateCompatibleDC(CDC* pDC);参数:pDC 设备环境指针返回值:若成功,返回非0;否则返回0CDC::Detach 将设备环境从CDC对象中分离开来HDC Detach()返回值:分离的设备环境CDC::DrawEdge 绘制矩形边框或边框的一部分BOOL DrawEdge(LPRECT lpRect,UINT nEdge,UINT nFlags);参数lpRect指向矩形的RECT结构的指针;nEdge指定矩形内外边界的风格,必须是一个内边界标志和外边界标志的组合,取值为:BDR_RAISEDINNER:内边界凸出;BDR_SUNKENINNER:内边界凹下;BDR_RAISEDOUTER:外边界凸出;BDR_SUNKENOUTER:外边界凹下;nFlags指定边界的类型,取值为:BF_RECT:矩形的所有四边;BF_LEFT:矩形的左边;BF_BOTTOM:矩形的底边;BF_RIGHT:矩形的右边;BF_TOP:矩形的上边;BF_TOPLEFT:矩形的上边和左边;BF_TOPRIGHT:矩形的上边和右边;BF_BOTTOMLEFT:矩形的下边和左边;BF_BOTTOMRIGHT:矩形的下边和右边。

返回值:若成功,返回非0;否则返回0。

CDC::DrawFocusRect 画一个说明输入焦点的矩形void DrawFocusRect(LPCRECT lpRect);参数:lpRect 指向绘制矩形的逻辑坐标的RECT结构或CRect对象。

CDC::DrawText 在指定的矩形内绘制格式化的文本virtual int DrawText(LPCTSTR lpszString,int nCount,LPRECT lpRect,UINT nFormat);int DrawText(const CString& str,LPRECT lpRect,UINT nFormat);参数:lpszString指示要输出的字符串;nCount为字符串中字节数;lpRect指示文本所在的矩形;str为要输出的CString对象;nFormat为格式化文本的方式,常用取值:DT_BOTTOM 文本底对齐,必须和DT_SINGLELINE联用;DT_CENTER 居中显示文本; DT_LEFT 文本左对齐;DT_RIGHT 文本右对齐; DT_TOP 正文与行顶部对齐(仅指单个行);DT_NOCLIB 绘制时不加裁减;DT_SINGLELINE 单行显示;DT_VCENTER 指定在垂直方向上居中显示文本(仅只单个行);DT_WORDBREAK 若单词超过矩形边界,行将在单词间断开返回值:若调用成功,返回文本的高度CDC::FillSolidRect 用指定单颜色填充矩形void FillSolidRect(LPCRECT lpRect,COLORREF clr);void FillSolidRect(int x,int y,int cx,int cy,COLORREF clr);参数:lpRect指定要填充的矩形;clr填充的颜色x,y矩形的左上角坐标,cx、cy为矩形宽度和高度CDC::FromHandle 在给予一个设备环境句柄时返回一个CDC对象指针static CDC* PASCAL FromHandle(HDC hDC);参数:hDC 设备环境句柄返回值:CDC对象指针CDC::GetTextExtent 使用当前字体计算一行文本的宽度和高度CSize GetTextExtent(LPCTSTR lpszString,int nCount)const;CSize GetTextExtent(const CString& str)const;参数:lpszString指向一个字符串,nCount字符串中字符数str 一个字符串对象返回值:字符串文本的宽度和高度(以逻辑单位表示)CDC::GetTextMetrics 检取当前字体的规格BOOL GetTextMetrics(LPTEXTMETRIC lpMetrics)const;参数:lpMetrics 指向用于接收字体规格的TEXTMETRIC结构返回值:若成功,返回非0;否则返回0CDC::LineTo 从当前位置到指定点画直线BOOL LineTo(int x,int y);BOOL LineTo(POINT point);参数:x、y为直线末端的坐标;point为直线末端的坐标返回值:若成功,返回非0;否则返回0该函数通常与MoveTo()函数合起来完成画线工作。

相关文档
最新文档