常用MFC和API函数

合集下载

mfc invalidate函数

mfc invalidate函数

mfc invalidate函数MFC中的invalidate函数是一种用于更新窗口或视图区域的函数,它可以告诉操作系统强制重绘指定的矩形区域。

invalidate函数是MFC和Windows API中最常用的函数之一,它可以实现许多不同的功能,包括绘制图形、更新文本、改变控件状态等。

invalidate函数的使用非常灵活,可以根据需要选择不同的参数。

最常用的参数是invalidateRect函数,它需要传递一个CRect类型的参数来指定需要更新的矩形区域。

该矩形区域由左上角和右下角坐标指定,可以是整个窗口或视图区域,也可以是一个特定的控件或文本框。

在使用invalidate函数之前,应该先了解Windows系统的绘图机制。

在Windows中,绘图分为两个部分:用户接口和设备接口。

用户接口是指应用程序和屏幕之间的接口,设备接口是指操作系统和显示设备之间的接口。

invalidate函数是通过用户接口向操作系统发送指令,告诉它需要进行重绘操作。

在MFC中,invalidate函数的调用方式也非常简单。

只需要在需要更新的地方调用invalidateRect函数,并传递一个CRect类型的参数即可。

此时,操作系统会收到重绘指令,并在需要的时候重新绘制该区域。

MFC还提供了其他一些invalidate函数,包括invalidateRgn函数、invalidateRect函数的重载等。

这些函数可以根据需要选择不同的参数来实现不同的功能。

另外,需要注意的是,invalidate函数只是发出了重绘指令,并不直接进行绘图操作。

实际的重绘操作由操作系统和显示设备完成,因此需要合理地使用invalidate函数,以避免出现绘图错误或效率低下等问题。

同时,invalidate函数的调用也需要考虑到程序的运行状态和需要更新的区域,以避免出现过多无效的重绘操作和闪烁等问题。

综上所述,MFC中的invalidate函数是一种非常有用的函数,它可以实现窗口或视图区域的更新操作,同时也需要注意合理使用,以避免出现不必要的问题。

MFC绘图函数(全)

MFC绘图函数(全)

画点像素点的绘制不过是改变单个像素点的颜色。

SetPixel( ) 试图用指定的颜色画一个像素,返回绘制时使用的实际颜色SetPixelV( ) 与上面的基本相同,但不用返回绘制时使用的实际颜色,因而速度更快画线画线即改变屏幕上一系列像素点的颜色。

M o v e To( ) 开始画线、弧和多边形时,把光标移动到一个初始位置L i n e To( ) 画一条从初始位置到另一个点的直线Arc( ) 画一段弧A r c To( ) 画一段弧,并更新初始位置AngleArc( ) 画一条线,然后画一段弧,并更新初始位置PolyDraw( ) 画一系列线段和B e z i e r样条PolyLine( ) 画一系列线段PolyPolyLine( ) 画多个系列线条画形状这里的形状是一系列封闭线条。

Rectangle( ) 画一个矩形Pie( ) 画一个饼状楔形RoundRect( ) 画一个圆角矩形Draw3dRect( ) 画一个三维矩形Polygon( ) 画一个多边形DrawEdge( ) 画一个矩形的边缘PolyPolygon( ) 创建一个或多个多边形DrawFrameControl( ) 画一个框架控件Ellipse( ) 画一个椭圆形状填充和翻转填充和翻转改变一个形状内的所有像素点颜色。

FillRect( ) 填充一个矩形FillSolidRect( ) 用一单色填充一个矩形InvertRect( ) 反转一个矩形的颜色ExtFloodFill( ) 用当前画刷填充一个区域,提供比FloodFill( )成员函数更多的灵活性FrameRect( ) 画一个矩形的边框下面三个函数包括一个区域对象,它实际上是一个线条列表,形成一个由设备环境维护的形状。

有关区域的详细讨论参见4 . 4 . 8节“剪裁属性”。

FillRgn( ) 填充一个区域InvertRgn( ) 反转一个区域的颜色FrameRgn( ) 画一个特定区域的边框滚动通过滚动,可移动屏幕周围像素颜色。

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基本程序的一般性指导,具体的程序编写可能因项目需求和个人喜好而有所不同。

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

mfc函数详解

mfc函数详解

mfc函数详解MFC(Microsoft Foundation Class)是一种面向对象的Windows应用程序框架,它是微软公司在Windows操作系统下的视窗类库,是Visual C++的一些类和函数的集合。

MFC的作用是提供一种高级的、面向对象的编程结构,让程序员更加容易地开发Windows应用程序。

下面是一些常用的MFC函数及其详解:1. AfxMessageBox函数原型:int AfxMessageBox(LPCTSTR lpszText, UINT nType = MB_OK, UINT nIDHelp = 0);函数作用:显示一个消息框,包含文本、标题和按钮。

参数解释:lpszText:要显示的消息文本。

nType:消息框类型,包括按钮以及图标等样式。

nIDHelp:帮助ID,用于消息框的帮助文件。

返回值:用户选择的按钮行为,如“取消”、“确定”等。

2. AfxGetMainWnd函数原型:CWnd* AfxGetMainWnd( );函数作用:获取当前线程的主窗口对象指针。

参数解释:无。

返回值:当前线程的主窗口对象指针。

3. CString.Format函数原型:int Format(LPCTSTR lpszFormat, ...);函数作用:根据格式控制符格式化字符串。

参数解释:lpszFormat:格式化字符串,格式控制符用“%”标识。

...:格式控制符中各个参数的值。

返回值:格式化后的字符串长度。

4. CListBox.SetCurSel函数原型:int SetCurSel(int nIndex);函数作用:设置列表框中当前选定项的索引。

参数解释:nIndex:要选定项的索引,从0开始。

返回值:如果设置成功,则返回新选定项的索引;否则,返回LB_ERR。

5. CEdit.SetWindowText函数原型:void SetWindowText(LPCTSTR lpszString); 函数作用:设置编辑框的文本内容。

MFC消息处理函数总结解读

MFC消息处理函数总结解读

MFC消息处理函数总结解读MFC(Microsoft Foundation Classes)是Windows编程中常用的框架之一,它提供了一组面向对象的类库,帮助开发人员更轻松地构建Windows应用程序。

在MFC中,消息处理函数是非常重要的一部分,它们用于处理窗口消息,包括按键事件、鼠标事件等,可以响应用户的操作。

消息处理函数的基本格式如下:```afx_msg LRESULT OnMessage(WPARAM wParam, LPARAM lParam);```其中afx_msg是一个宏定义,用于指示该函数为一个MFC消息处理函数。

LRESULT是一个32位整数,用于返回消息处理结果。

OnMessage是函数名,可以根据实际需求进行命名。

wParam和lParam是消息的参数,根据不同的消息类型可以传递不同的值。

下面是对常见的消息处理函数的解读。

1. OnCreateOnCreate消息处理函数在窗口创建时被调用,可以进行一些初始化操作。

例如创建子窗口、加载资源等。

可以通过返回-1来取消窗口的创建。

2. OnDestroyOnDestroy消息处理函数在窗口销毁时被调用,可以进行一些资源的释放操作。

例如关闭文件、释放内存等。

3. OnPaintOnPaint消息处理函数在窗口需要重绘时被调用,可以进行绘图操作。

通常会使用GDI(图形设备接口)函数进行绘图,例如绘制文本、绘制图形等。

4. OnSizeOnSize消息处理函数在窗口大小改变时被调用,可以根据新的窗口大小进行调整。

例如重新设置子窗口的位置和大小。

5. OnKeyDownOnKeyDown消息处理函数在键盘按键被按下时被调用,可以响应用户的按键操作。

可以根据不同的按键进行不同的处理,例如响应回车键、删除键等。

6. OnMouseMoveOnMouseMove消息处理函数在鼠标移动时被调用,可以获取鼠标的当前位置。

可以根据鼠标位置进行一些操作,例如绘制跟随鼠标的图形、显示鼠标所在位置的坐标等。

Windows API函数大全

Windows API函数大全

Windows API函数我们知道VB可以做很多事,但是有些事情,特别是涉及对Windows操作系统的访问,还需要借助Win32 API函数(Microsoft Win32 Application Programming Interface的缩写)。

API 函数是一组用C语言编写的函数,总共约有一千来个。

原本是为C语言编程人员而编写的,但也可以在VB应用程序中调用。

按功能划分,Win32 API函数大致涉及以下几个方面:窗口管理、图形设备接口、系统管理和多媒体技术。

Win32 API函数以动态链接库DLL提供给用户,可以在任何语言中调用。

DLL在程序运行时装入,随时响应程序的调用,不必在设计时就将文件存放在工程中,这就是动态链接的意思。

正因为如此,一个DLL程序可以同时为多个程序所调用。

在VB中引用API函数,需要事先通过Declare函数,声明要引用的DLL文件名称以及相应函数的参量。

然后便可像使用VB函数一样使用API函数。

我们看以下类似的声明语句:Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As LongGetComputerName是API函数名,kernel32是库名。

括号中的ByVal lpBuffer As String, nSize As Long就是函数的参量。

最后面的Long表示函数返回值的数据类型。

本节通过例子说明Win32 API函数的应用。

Windows在创建每个窗体时,都会赋给它一个与众不同的编号,这就是窗体的句柄。

在Windows中,窗体与控件都被看成是窗体(窗口)。

窗体的句柄保存在自己的hwnd属性中。

一.GetComputerName二、GetCursorPos三、GetWindowsDirectoryWindows API函数四、ClipCursor五、GetProfileInt六、GetProfileString七、PolygonWindows API函数八、SendMessagePublic Enum VBWin_MsgWM_NULL = &H0WM_CREATE = &H1WM_DESTROY = &H2WM_MOVE = &H3WM_SIZE = &H5WM_ACTIVATE = &H6WM_SETFOCUS = &H7WM_KILLFOCUS = &H8WM_ENABLE = &HAWM_SETREDRAW = &HBWM_SETTEXT = &HCWM_GETTEXTLENGTH = &HEWM_PAINT = &HFWM_CLOSE = &H10WM_QUERYENDSESSION = &H11WM_QUIT = &H12WM_QUERYOPEN = &H13WM_ERASEBKGND = &H14WM_SYSCOLORCHANGE = &H15WM_ENDSESSION = &H16WM_SHOWWINDOW = &H18WM_WININICHANGE = &H1AWM_DEVMODECHANGE = &H1BWM_ACTIVATEAPP = &H1CWM_FONTCHANGE = &H1DWM_TIMECHANGE = &H1EWM_CANCELMODE = &H1FWM_SETCURSOR = &H20WM_MOUSEACTIVATE = &H21WM_CHILDACTIVATE = &H22WM_QUEUESYNC = &H23WM_GETMINMAXINFO = &H24'begin_r_winuserWM_PAINTICON = &H26WM_ICONERASEBKGND = &H27WM_NEXTDLGCTL = &H28WM_SPOOLERSTATUS = &H2AWM_DRAWITEM = &H2BWM_MEASUREITEM = &H2CWM_DELETEITEM = &H2DWM_VKEYTOITEM = &H2EWM_CHARTOITEM = &H2FWM_SETFONT = &H30WM_GETFONT = &H31WM_SETHOTKEY = &H32WM_GETHOTKEY = &H33WM_QUERYDRAGICON = &H37WM_COMPAREITEM = &H39WM_COMPACTING = &H41WM_COMMNOTIFY = &H44 '/* no longer suported */WM_WINDOWPOSCHANGING = &H46WM_WINDOWPOSCHANGED = &H47WM_POWER = &H48WM_CANCELJOURNAL = &H4B'end_r_winuser'lParam of WM_COPYDATA message points to...'begin_r_winuser' '#if(WINVER > = 0x0400)WM_NOTIFY = &H4EWM_INPUTLANGCHANGEREQUEST = &H50WM_INPUTLANGCHANGE = &H51WM_TCARD = &H52WM_HELP = &H53WM_USERCHANGED = &H54WM_NOTIFYFORMAT = &H55WM_CONTEXTMENU = &H7BWM_STYLECHANGING = &H7CWM_STYLECHANGED = &H7DWM_DISPLAYCHANGE = &H7EWM_GETICON = &H7FWM_SETICON = &H80' '#endif /* WINVER > = 0x0400 */WM_NCCREATE = &H81WM_NCDESTROY = &H82WM_NCCALCSIZE = &H83WM_NCHITTEST = &H84WM_NCPAINT = &H85WM_NCACTIVATE = &H86WM_GETDLGCODE = &H87WM_SYNCPAINT = &H88WM_NCMOUSEMOVE = &HA0WM_NCLBUTTONDOWN = &HA1WM_NCLBUTTONUP = &HA2WM_NCLBUTTONDBLCLK = &HA3WM_NCRBUTTONDOWN = &HA4WM_NCRBUTTONUP = &HA5WM_NCRBUTTONDBLCLK = &HA6WM_NCMBUTTONDOWN = &HA7WM_NCMBUTTONUP = &HA8WM_NCMBUTTONDBLCLK = &HA9WM_KEYFIRST = &H100WM_KEYDOWN = &H100WM_KEYUP = &H101WM_CHAR = &H102WM_SYSKEYDOWN = &H104WM_SYSKEYUP = &H105WM_SYSCHAR = &H106WM_SYSDEADCHAR = &H107WM_KEYLAST = &H108' '#if(WINVER > = 0x0400)WM_IME_STARTCOMPOSITION = &H10DWM_IME_ENDCOMPOSITION = &H10EWM_IME_COMPOSITION = &H10FWM_IME_KEYLAST = &H10F' '#endif /* WINVER > = 0x0400 */WM_INITDIALOG = &H110WM_COMMAND = &H111WM_SYSCOMMAND = &H112WM_TIMER = &H113WM_HSCROLL = &H114WM_VSCROLL = &H115WM_INITMENU = &H116WM_INITMENUPOPUP = &H117WM_MENUSELECT = &H11FWM_MENUCHAR = &H120WM_ENTERIDLE = &H121'#if(WINVER > = 0x0500)WM_MENURBUTTONUP = &H122WM_MENUDRAG = &H123WM_MENUGETOBJECT = &H124WM_UNINITMENUPOPUP = &H125WM_MENUCOMMAND = &H126'#endif /* WINVER > = 0x0500 */WM_CTLCOLORMSGBOX = &H132WM_CTLCOLOREDIT = &H133WM_CTLCOLORLISTBOX = &H134WM_CTLCOLORBTN = &H135WM_CTLCOLORDLG = &H136WM_CTLCOLORSCROLLBAR = &H137WM_CTLCOLORSTATIC = &H138WM_MOUSEFIRST = &H200WM_LBUTTONDOWN = &H201WM_LBUTTONUP = &H202WM_LBUTTONDBLCLK = &H203WM_RBUTTONDOWN = &H204WM_RBUTTONUP = &H205WM_RBUTTONDBLCLK = &H206WM_MBUTTONDOWN = &H207WM_MBUTTONUP = &H208WM_MBUTTONDBLCLK = &H209'#if (_WIN32_WINNT > = 0x0400) || (_WIN32_WINDOWS > 0x0400) WM_MOUSEWHEEL = &H20AWM_MOUSELAST = &H20A'#Else' WM_MOUSELAST = &H209'#endif /* if (_WIN32_WINNT < 0x0400) */'#if(_WIN32_WINNT > = 0x0400)'#define WHEEL_DELTA 120 /* Value for rolling one detent */'#endif /* _WIN32_WINNT > = 0x0400 */'#if(_WIN32_WINNT > = 0x0400)'#define WHEEL_PAGESCROLL (UINT_MAX) /* Scroll on e page */'#endif /* _WIN32_WINNT > = 0x0400 */WM_PARENTNOTIFY = &H210WM_ENTERMENULOOP = &H211WM_EXITMENULOOP = &H212'#if(WINVER > = 0x0400)WM_NEXTMENU = &H213'// end_r_winuserWM_DEVICECHANGE = &H219'#endif /* WINVER > = 0x0400 */WM_MDICREATE = &H220WM_MDIDESTROY = &H221WM_MDIACTIVATE = &H222WM_MDIRESTORE = &H223WM_MDINEXT = &H224WM_MDIMAXIMIZE = &H225WM_MDITILE = &H226WM_MDICASCADE = &H227WM_MDIICONARRANGE = &H228WM_MDIGETACTIVE = &H229WM_MDISETMENU = &H230WM_ENTERSIZEMOVE = &H231WM_EXITSIZEMOVE = &H232WM_DROPFILES = &H233WM_MDIREFRESHMENU = &H234'#if(WINVER > = 0x0400)WM_IME_SETCONTEXT = &H281WM_IME_NOTIFY = &H282WM_IME_CONTROL = &H283WM_IME_COMPOSITIONFULL = &H284WM_IME_SELECT = &H285WM_IME_CHAR = &H286'#endif /* WINVER > = 0x0400 */'#if(WINVER > = 0x0500)WM_IME_REQUEST = &H288'#endif /* WINVER > = 0x0500 */'#if(WINVER > = 0x0400)WM_IME_KEYDOWN = &H290WM_IME_KEYUP = &H291'#endif /* WINVER > = 0x0400 */'#if(_WIN32_WINNT > = 0x0400)WM_MOUSEHOVER = &H2A1WM_MOUSELEAVE = &H2A3'#endif /* _WIN32_WINNT > = 0x0400 */WM_CUT = &H300WM_COPY = &H301WM_PASTE = &H302WM_CLEAR = &H303WM_UNDO = &H304WM_RENDERFORMAT = &H305WM_RENDERALLFORMATS = &H306WM_DESTROYCLIPBOARD = &H307WM_DRAWCLIPBOARD = &H308WM_PAINTCLIPBOARD = &H309WM_VSCROLLCLIPBOARD = &H30AWM_SIZECLIPBOARD = &H30BWM_ASKCBFORMATNAME = &H30CWM_CHANGECBCHAIN = &H30DWM_HSCROLLCLIPBOARD = &H30EWM_QUERYNEWPALETTE = &H30FWM_PALETTEISCHANGING = &H310WM_PALETTECHANGED = &H311WM_HOTKEY = &H312'#if(WINVER > = 0x0400)WM_PRINT = &H317WM_PRINTCLIENT = &H318WM_HANDHELDFIRST = &H358WM_HANDHELDLAST = &H35FWM_AFXFIRST = &H360WM_AFXLAST = &H37F'#endif /* WINVER > = 0x0400 */WM_PENWINFIRST = &H380WM_PENWINLAST = &H38FWM_USER = &H400Public Enum eWM_MsgWM_NULL = &H0WM_CREATE = &H1WM_DESTROY = &H2WM_MOVE = &H3WM_SIZE = &H5WM_ACTIVATE = &H6WM_SETFOCUS = &H7WM_KILLFOCUS = &H8WM_USER = &H400End Enum九、GlobalMemoryStatus十、GetSystemMenu十一、GetMenuItemInfo十二、SetMenuItemInfo十三、SetCursorPos十四、SetWindowPos十五、GetUserName。

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 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对象引用作为参数。

WindowsAPI函数大全(完整)

WindowsAPI函数大全(完整)

WindowsAPI函数⼤全(完整)Windows API函数⼤全,从事软件开发的朋友可以参考下1. API之⽹络函数WNetAddConnection 创建同⼀个⽹络资源的永久性连接WNetAddConnection2 创建同⼀个⽹络资源的连接WNetAddConnection3 创建同⼀个⽹络资源的连接WNetCancelConnection 结束⼀个⽹络连接WNetCancelConnection2 结束⼀个⽹络连接WNetCloseEnum 结束⼀次枚举操作WNetConnectionDialog 启动⼀个标准对话框,以便建⽴同⽹络资源的连接WNetDisconnectDialog 启动⼀个标准对话框,以便断开同⽹络资源的连接WNetEnumResource 枚举⽹络资源WNetGetConnection 获取本地或已连接的⼀个资源的⽹络名称WNetGetLastError 获取⽹络错误的扩展错误信息WNetGetUniversalName 获取⽹络中⼀个⽂件的远程名称以及/或者UNC(统⼀命名规范)名称WNetGetUser 获取⼀个⽹络资源⽤以连接的名字WNetOpenEnum 启动对⽹络资源进⾏枚举的过程2. API之消息函数BroadcastSystemMessage 将⼀条系统消息⼴播给系统中所有的顶级窗⼝GetMessagePos 取得消息队列中上⼀条消息处理完毕时的⿏标指针屏幕位置GetMessageTime 取得消息队列中上⼀条消息处理完毕时的时间PostMessage 将⼀条消息投递到指定窗⼝的消息队列PostThreadMessage 将⼀条消息投递给应⽤程序RegisterWindowMessage 获取分配给⼀个字串标识符的消息编号ReplyMessage 答复⼀个消息SendMessage 调⽤⼀个窗⼝的窗⼝函数,将⼀条消息发给那个窗⼝SendMessageCallback 将⼀条消息发给窗⼝SendMessageTimeout 向窗⼝发送⼀条消息SendNotifyMessage 向窗⼝发送⼀条消息3. API之⽂件处理函数CloseHandle 关闭⼀个内核对象。

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常用类及其成员函数CRuntimeClass结构在CRuntimeClass结构中定义了类名、对象所占存储空间的大小、类的版本号等成员变量及动态创建对象、派生关系判断等成员函数。

每一个从CObject 类派生的类都有一个CRuntimeClass结构同它关联,以便完成在运行时得到对象的信息或基类的信息。

要使用CRuntimeClass结构,必须结合使用RUNTIME_CLASS()宏和其他有关运行时类型识别的MFC宏。

CCmdTarget类(1)消息发送MFC应用程序为每个CCmdTarget派生类创建一个称为消息映射表的静态数据结构,可将消息映射到对象所对应的消息处理函数上。

(2)设置光标BeginWaitCursor() 将光标改为沙漏形状;EndWaitCursor() 将光标改回到之前的形状;RestoreWaitCursor()用于将光标还原为等待状态。

(3)支持自动化CCmdTarget类支持程序通过COM接口进行交互操作,自动翻译COM接口的方法。

CWinThread类由CCmdTarget派生,主要工作是创建和处理消息循环。

CWinApp类从CWinThread类派生,成员函数InitApplication()、InitInstance()、Run()。

在InitInstance()函数中,创建了一个单文档模板类或多文档模板类(CDocTemplate)的对象,并且在文档模板的构造函数中,系统定义的宏RUNTIME_CLASS创建了文档类对象,框架窗口类对象和视图类对象.在MFC应用程序中有且仅有一个CWinApp派生类的对象,代表程序运行的主线程,代表应用程序本身。

CWnd类由CCmdTarget类直接派生,是MFC中最基本的GUI对象。

公共变量m_hWnd 用于存放供API函数调用的窗口句柄。

CframeWnd类从CWnd类派生而来,主要用来掌管一个窗口。

其对象是一个框架窗口,包括边界、标题栏、菜单、最大化按钮、最小化按钮和一个激活的视图。

内存文件映射(MMAP)

内存文件映射(MMAP)

内存映射文件相关函数
在使用内存映射文件时,所使用的API函数主要就是前面提到过的那几个函数,下面分别对其进行介绍:
HANDLE CreateFile(LPCTSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
LPCTSTR lpName);
CreateFileMapping()函数创建一个文件映射内核对象,通过参数hFile指定待映射到进程地址空间的文件句柄(该句柄由CreateFile()函数的返回值获取)。由于内存映射文件的物理存储器实际是存储于磁盘上的一个文件,而不是从系统的页文件中分配的内存,所以系统不会主动为其保留地址空间区域,也不会自动将文件的存储空间映射到该区域,为了让系统能够确定对页面采取何种保护属性,需要通过参数flProtect来设定,保护属性PAGE_READONLY、PAGE_READWRITE和PAGE_WRITECOPY分别表示文件映射对象被映射后,可以读取、读写文件数据。在使用PAGE_READONLY时,必须确保CreateFile()采用的是GENERIC_READ参数;PAGE_READWRITE则要求CreateFile()采用的是GENERIC_READ|GENERIC_WRITE参数;至于属性PAGE_WRITECOPY则只需要确保CreateFile()采用了GENERIC_READ和GENERIC_WRITE其中之一即可。DWORD型的参数dwMaximumSizeHigh和dwMaximumSizeLow也是相当重要的,指定了文件的最大字节数,由于这两个参数共64位,因此所支持的最大文件长度为16EB,几乎可以满足任何大数据量文件处理场合的要求。

MFC的课后练习——包含MFC基础代码编程,肯定对你有一定的帮助

MFC的课后练习——包含MFC基础代码编程,肯定对你有一定的帮助

第一章 Windows应用程序基础知识1-2 什么是Windows API函数?答:用来开发Windows SDK应用程序的软件开发工具包是用C语言编写的一个大型函数库,这个库中的函数叫做API函数。

1-5 什么是事件?试举例说明。

答:能触发程序做出相应反应的因素或动作叫做“事件”。

例如,在键盘上按下了一个键、鼠标的单击或双击、应用程序窗口的显示和销毁等。

1-7 什么是消息循环?答:在创建了窗口的应用程序中,应用程序将不断地从消息队列中获取消息,并将消息指派给指定的窗口处理函数来处理,然后再回来从消息队列获取消息,这个不断重复的工作过程叫做消息循环。

1-9说明Windows应用程序的主函数、窗口函数与Windows系统之间的关系。

答:Windows应用程序的主函数和窗口函数都是系统调用的函数,主函数是在应用程序启动时由系统首先调用的函数,而窗口函数是主函数在消息循环中获得消息并把消息派送给系统之后,由系统调用的用来处理消息的函数。

第二章 Windows应用程序的类封装2-1 在窗体类CframeWnd中需要封装哪些成员?答:在窗体类CframeWnd中要封装窗口句柄、窗口类的定义、注册窗口类、创建窗口、显示更新窗口。

2-3 在MFC程序设计中,如果要建立拥有自己风格的主窗口,应该重写什么函数。

答:继承CWinAPP类并需要重写该类的成员函数InitInstaance。

2-4什么是消息映射表?答:在Windows SDK应用程序的窗口函数中,是采用switch-case分支结构实现消息处理的,这种方式不适合面向对象设计的要求。

因此MFC建立了一套自己的消息映射机制——消息映射表。

从外观来看,这种表有些类似学校中使用的学生名册,学号相当于消息号,学生姓名就相当于消息处理函数名,学号和学生号一一对应(映射)。

而MFC把实现表的代码用宏封装起来了。

第三章 MFC应用程序框架3-3简述构成文档/视图结构应用程序框架的四个MFC派生类,并说出它们的功能。

MFC函数大全

MFC函数大全
nAdjustType:用于现场编辑的枚举类型。它可以具有以下的值:CWnd::adjustBorder = 0,意味着在计算时不考虑滚动条大小;或者CWnd::adjustBorder = 1,意味着它们将被加入最终的矩形大小。
Detach p53
FromHandle p53
GetSafeHwnd p54
SetThreadPriority
SuspendThread
ExitInstance
InitInstance
IsIdleMessage
OnIdle
PreTranslateMessage
ProcessMessageFilter
ProcessWndProcExcetion
PumpMessage
Run
CWinApp
AddDocTemplate
AddToRecentFileList
CreatePrinterDC
GetFirstDocTemplatePosition
GetNextDocTemplate
GetProfileBinary
GetProfileInt
class CPerson : public CObject
{
protected:
CString m_strName;
float m_salary;
public:
#ifdef _DEBUG
// Override
virtual void AssertValid() const;
CenterWindow p63
ChildWindowFromPoint p63
FindWindow p63

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类派生来创建,对它来说最重要的是如何实现工作线程任务的运行控制函数。工作线程和用户界面线程启动时要调用同一个函数的不同版本;最后需要读者明白的是,一个进程中的所有线程共享它们父进程的变量,但同时每个线程可以拥有自己的变量。

Windows API 函数大全(精心总结)

Windows API 函数大全(精心总结)

Windows API函数大全(精心总结)目录1. API之网络函数 (1)2. API之消息函数 (1)3. API之文件处理函数 (2)4. API之打印函数 (5)5. API之文本和字体函数 (7)6. API之菜单函数 (8)7. API之位图、图标和光栅运算函数 (9)8. API之绘图函数 (10)9. API之设备场景函数 (13)10. API之硬件与系统函数 (14)11. API之进程和线程函数 (17)12. API之控件与消息函数 (18)1. API之网络函数WNetAddConnection 创建同一个网络资源的永久性连接WNetAddConnection2 创建同一个网络资源的连接WNetAddConnection3 创建同一个网络资源的连接WNetCancelConnection 结束一个网络连接WNetCancelConnection2 结束一个网络连接WNetCloseEnum 结束一次枚举操作WNetConnectionDialog 启动一个标准对话框,以便建立同网络资源的连接WNetDisconnectDialog 启动一个标准对话框,以便断开同网络资源的连接WNetEnumResource 枚举网络资源WNetGetConnection 获取本地或已连接的一个资源的网络名称WNetGetLastError 获取网络错误的扩展错误信息WNetGetUniversalName 获取网络中一个文件的远程名称以及/或者UNC(统一命名规范)名称WNetGetUser 获取一个网络资源用以连接的名字WNetOpenEnum 启动对网络资源进行枚举的过程2. API之消息函数BroadcastSystemMessage 将一条系统消息广播给系统中所有的顶级窗口GetMessagePos 取得消息队列中上一条消息处理完毕时的鼠标指针屏幕位臵GetMessageTime 取得消息队列中上一条消息处理完毕时的时间PostMessage 将一条消息投递到指定窗口的消息队列PostThreadMessage 将一条消息投递给应用程序RegisterWindowMessage 获取分配给一个字串标识符的消息编号ReplyMessage 答复一个消息SendMessage 调用一个窗口的窗口函数,将一条消息发给那个窗口SendMessageCallback 将一条消息发给窗口SendMessageTimeout 向窗口发送一条消息SendNotifyMessage 向窗口发送一条消息3. API之文件处理函数CloseHandle 关闭一个内核对象。

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++版。

MFC消息处理函数总结解读

MFC消息处理函数总结解读

1.AfxWndProc( 该函数负责接收消息,找到消息所属的 CWnd 对象,然后调用AfxCallWnd Proc2.AfxCallWndProc( 该函数负责保存消息 (保存的内容主要是消息标识符和消息参数供应用程序以后使用,然后调用 WindowProc(函数3.WindowProc( 该函数负责发送消息到 OnWndMsg(函数,如果未被处理,则调用DefWin dowProc(函数4.OnWndMsg( 该函数的功能首先按字节对消息进行排序, 对于WM_COMMAND消息, 调用 OnCommand(消息响应函数,对于 WM_NOTIFY消息调用 OnNotify(消息响应函数。

任何被遗漏的消息将是一个窗口消息。

OnWndMsg(函数搜索类的消息映像,以找到一个能处理任何窗口消息的处理函数。

如果 OnWndMsg(函数不能找到这样的处理函数的话, 则把消息返回到WindowProc(函数,由它将消息发送给 DefWindowProc(函数 5.OnCommand( 该函数查看这是不是一个控件通知 (lParam参数不为 NULL , 如果 lParam 参数为空的话,说明该消息不是控件通知 ,如果它是, OnCommand(函数会试图将消息映射到制造通知的控件; 如果他不是一个控件通知 (或者如果控件拒绝映射的消息OnCommand(就会调用 OnCmdMsg(函数6.OnCmdMsg( 根据接收消息的类, OnCmdMsg(函数将在一个称为命令传递(Command Ro uting 的过程中潜在的传递命令消息和控件通知。

例如:如果拥有该窗口的类是一个框架类, 则命令和通知消息也被传递到视图和文档类,并为该类寻找一个消息处理函数MFC 应用程序创建窗口的过程1.PreCreateWindow( 该函数是一个重载函数,在窗口被创建前,可以在该重载函数中改变创建参数 (可以设置窗口风格等等2.PreSubclassWindow( 这也是一个重载函数,允许首先子分类一个窗口3.OnGetMinMaxInfo( 该函数为消息响应函数,响应的是WM_GETMINMAXINFO消息, 允许设置窗口的最大或者最小尺寸4.OnNcCreate( 该函数也是一个消息响应函数, 响应 WM_NCCREATE消息, 发送消息以告诉窗口的客户区即将被创建5.OnNcCalcSize( 该函数也是消息响应函数 , 响应 WM_NCCALCSIZE消息,作用是允许改变窗口客户区大小6.OnCreate( 该函数也是一个消息响应函数,响应 WM_CREATE消息,发送消息告诉一个窗口已经被创建7.OnSize( 该函数也是一个消息响应函数, 响应 WM_SIZE消息, 发送该消息以告诉该窗口大小已经发生变化8.OnMove( 消息响应函数,响应 WM_MOVE消息,发送此消息说明窗口在移动9.OnChildNotify( 该函数为重载函数, 作为部分消息映射被调用, 告诉父窗口即将被告知一个窗口刚刚被创建MFC 应用程序关闭窗口的顺序 (非模态窗口1.OnClose( 消息响应函数,响应窗口的 WM_CLOSE消息,当关闭按钮被单击的时候发送此消息2.OnDestroy( 消息响应函数,响应窗口的 WM_DESTROY消息,当一个窗口将被销毁时, 发送此消息3.OnNcDestroy( 消息响应函数,响应窗口的 WM_NCDESTROY消息,当一个窗口被销毁后发送此消息4.PostNcDestroy( 重载函数,作为处理 OnNcDestroy(函数的最后动作,被 CWnd 调用MFC 应用程序中打开模式对话框的函数调用顺序1.DoModal( 重载函数,重载 DoModal(成员函数2.PreSubclassWindow( 重载函数,允许首先子分类一个窗口3.OnCreate( 消息响应函数,响应 WM_CREATE消息,发送此消息以告诉一个窗口已经被创建4.OnSize( 消息响应函数,响应 WM_SIZE消息,发送此消息以告诉窗口大小发生变化5.OnMove( 消息响应函数,响应 WM_MOVE消息,发送此消息,以告诉窗口正在移动6.OnSetFont( 消息响应函数,响应 WM_SETFONT消息,发送此消息,以允许改变对话框中控件的字体7.OnInitDialog( 消息响应函数, 响应 WM_INITDIALOG消息, 发送此消息以允许初始化对话框中的控件,或者是创建新控件8.OnShowWindow( 消息响应函数, 响应 WM_SHOWWINDOW消息,该函数被ShowWind ow(函数调用9.OnCtlColor( 消息响应函数,响应 WM_CTLCOLOR消息,被父窗口发送已改变对话框或对话框上面控件的颜色10. OnChildNotify( 重载函数,作为 WM_CTLCOLOR消息的结果发送MFC 应用程序中关闭模式对话框的顺序1.OnClose( 消息响应函数,响应 WM_CLOSE消息,当 " 关闭 " 按钮被单击的时候,该函数被调用2.OnKillFocus( 消息响应函数,响应 WM_KILLFOCUS消息,当一个窗口即将失去键盘输入焦点以前被发送3.OnDestroy( 消息响应函数,响应 WM_DESTROY消息,当一个窗口即将被销毁时,被发送4.OnNcDestroy( 消息响应函数,响应 WM_NCDESTROY消息,当一个窗口被销毁以后被发送5.PostNcDestroy( 重载函数,作为处理 OnNcDestroy(函数的最后动作被 CWnd 调用打开无模式对话框的顺序1.PreSubclassWindow( 重载函数,允许用户首先子分类一个窗口2.OnCreate( 消息响应函数,响应 WM_CREATE消息,发送此消息以告诉一个窗口已经被创建3.OnSize( 消息响应函数,响应 WM_SIZE消息,发送此消息以告诉窗口大小发生变化4.OnMove( 消息响应函数,响应 WM_MOVE消息,发送此消息以告诉窗口正在移动5.OnSetFont( 消息响应函数,响应 WM_SETFONT消息,发送此消息以允许改变对话框中控件的字体以上这些的执行都是按给定的顺序执行!只有清楚的了解应用程序的执行顺序, 才能在编写代码的时候知道, 在什么时候应该执行什么,以及在什么地方该处理什么!这只是本人总结的一点小小的经验, 希望能对 MFC 的初学者有所帮助! MFC 应用程序中处理消息的顺序1.AfxWndProc( 该函数负责接收消息,找到消息所属的 CWnd 对象,然后调用AfxCallWnd Proc2.AfxCallWndProc( 该函数负责保存消息 (保存的内容主要是消息标识符和消息参数供应用程序以后使用,然后调用 WindowProc(函数3.WindowProc( 该函数负责发送消息到 OnWndMsg(函数,如果未被处理,则调用DefWin dowProc(函数4.OnWndMsg( 该函数的功能首先按字节对消息进行排序, 对于WM_COMMAND消息, 调用 OnCommand(消息响应函数,对于 WM_NOTIFY消息调用 OnNotify(消息响应函数。

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

常用MFC和API函数索引CArchive类:用于二进制保存档案CBitmap类:封装Windows的图形设备接口(GDI)位图CBrush类:封装图形设备接口(GDI)中的画刷CButton类:提供Windows按钮控件的功能CByteArray类:该类支持动态的字节数组CCmdUI类:该类仅用于ON_UPDATE_COMMAND_UI处理函数中CColorDialog类:封装标准颜色对话框CDC类:定义设备环境对象类CDialog类:所有对话框(模态或非模态)的基类CDocument类:提供用户定义的文档类的基本功能CEdit类:是一个用于编辑控件的类CFile类:该类是基本文件类的基类CFileDialog类:封装了打开和保存文件的标准对话框CFindReplaceDialog类:封装了标准查找/替换对话框CFont类:封装了Windows图形设备接口(GDI)中的字体对象CFontDialog类:封装了字体选择对话框CGdiObject类:GDI绘图工具的基类CIPAddressCtrl类:提供了IP地址控件的功能CImageList类:管理大小相同的图标或位图集CMenu类:封装应用程序菜单栏和弹出式菜单CPen类:封装了Windows图形设备接口(GDI)中的画笔对象CPoint类:操作CPoint和POINT结构CRect类:封装了一个矩形区域及相关操作CRgn类:封装用于操作窗口中的椭圆、多边形或者不规则区域的GDI区域CSize类:用于表示相对坐标或位置CSpinButtonCtrl类:旋转控件Spin的控制类CStatusBar类:状态栏窗口的基类CString类:处理字符串CStringList类:支持CString对象的列表CWinApp类:派生的程序对象的基类CWnd类:提供所有窗口类的基本函数API函数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:矩形的下边和右边。

相关文档
最新文档