MFC函数.docx
《MFC函数.docx》由会员分享,可在线阅读,更多相关《MFC函数.docx(20页珍藏版)》请在冰豆网上搜索。
MFC函数
MFC常用函数
(为整理完全,待续)
华东理工大学张耀
2012年8月
1.消息结构体
typedefstructtagMSG{
HWNDhwnd;
UINTmessage;
WPARAMwParam;
LPARAMlParam;
DWORDtime;
POINTpt;
}MSG;
2.intWINAPIWinMain(
HINSTANCEhInstance,//handletocurrentinstance
HINSTANCEhPrevInstance,//handletopreviousinstance
LPSTRlpCmdLine,//pointertocommandline
intnCmdShow//showstateofwindow
)
3.typedefstruct_WNDCLASS{
UINTstyle;窗口样式CS_HREDRAW等CS_
WNDPROClpfnWndProc;
intcbClsExtra;
intcbWndExtra;
HANDLEhInstance;
HICONhIcon;
HCURSORhCursor;
HBRUSHhbrBackground;
LPCTSTRlpszMenuName;
LPCTSTRlpszClassName;
}WNDCLASS;
要是想要改变窗口样式可以自己定义一个窗口类并且注册;在PreCreateWindow()中将cs结构中的lpszClass改为自定义的窗口类名字.
4.HICONLoadIcon(
HINSTANCEhInstance,//handletoapplicationinstance
LPCTSTRlpIconName//icon-namestringoriconresource
//identifier
);
加载系统图标时第一个参数为NULL,如果加载自定义图标则要调用全局函数AfxGetInstanceHandle()来获取当前应用程序实例;或者定义外部声明theApp.m_hInstance的当前应用程序实例;还有通过AfxGetApp()先获取theApp指针.
5.HCURSORLoadCursor(
HINSTANCEhInstance,//handletoapplicationinstance
LPCTSTRlpCursorName//namestringorcursorresourceidentifier
);
使用方法与LoadIcon是相同的.
6.CWnd:
:
ShowWindow
BOOLShowWindow(intnCmdShow);
相关参数SW_NORMAL;SW_HIDE
CWnd:
:
IsWindowVisible()
BOOLIsWindowVisible();可以用来判断当前窗口是否可视;由窗口对象调用。
7.LRESULTCALLBACKWindowProc(
HWNDhwnd,//handletowindow
UINTuMsg,//messageidentifier
WPARAMwParam,//firstmessageparameter
LPARAMlParam//secondmessageparameter
);
可以通过SetWindowLong();修改当前的窗口过程实现对窗口性质的修改.
8.CButton:
:
Create
BOOLCreate(LPCTSTRlpszCaption,DWORDdwStyle,constRECT&rect,CWnd*pParentWnd,UINTnID);
通过该函数可以创建一个按钮.创建后需要调用成员函数ShowWindow();或者在第二个
参数或上SW_VISIBLE.
9.CWnd:
:
MessageBox
intMessageBox(LPCTSTRlpszText,LPCTSTRlpszCaption=NULL,UINTnType=MB_OK);
intAfxMessageBox(LPCTSTRlpszText,UINTnType=MB_OK,UINTnIDHelp=0);
第二个为全局API函数.
10.HDCGetDC(
HWNDhWnd//handletoawindow
);
获取当前窗口的DC.调用是要加上:
:
使用完后要调用:
:
ReleaseDC()释放DC.
11.BOOLMoveToEx(
HDChdc,//handletodevicecontext
intX,//x-coordinateofnewcurrentposition
intY,//y-coordinateofnewcurrentposition
LPPOINTlpPoint//pointertooldcurrentposition);
)
把坐标原点移动到当前点.实际绘图比较少用.
12.BOOLLineTo(
HDChdc,//devicecontexthandle
intnXEnd,//x-coordinateofline'sendingpoint
intnYEnd//y-coordinateofline'sendingpoint
);
从原点做线条到当前坐标.
13.CDC:
:
MoveTo
CPointMoveTo(intx,inty);
CPointMoveTo(POINTpoint);
把坐标原点移动到当前点.实际绘图比较少用.
14.CDC:
:
LineTo
BOOLLineTo(intx,inty);
BOOLLineTo(POINTpoint);
从原点做线条到当前坐标.注:
该对象使用完成后也要调用CWnd:
:
ReleaseDC();
15.CClientDC由CDC继承而来,区别在于不要调用GetDC();和ReleaseDC(CDC*),但是实例化对象时需要提供窗口指针.可以使用this,GetParent()或者是GetDesktopWindow();
16CPen:
:
CPen
CPen();
CPen(intnPenStyle,intnWidth,COLORREFcrColor);
CPen(intnPenStyle,intnWidth,constLOGBRUSH*pLogBrush,intnStyleCount=0,constDWORD*lpStyle=NULL);//不常用
笔迹样式有PS_SOLID,PS_等.
17.COLORREFRGB(0~255,0~255,0~255);
18.CRect:
:
CRect
CRect();
CRect(intl,intt,intr,intb);
CRect(constRECT&srcRect);
CRect(LPCRECTlpSrcRect);
CRect(POINTpoint,SIZEsize);
CRect(POINTtopLeft,POINTbottomRight);
定义一个矩形区域.
19.CDC:
:
FillRect
voidFillRect(LPCRECTlpRect,CBrush*pBrush);
确定一个由画刷填充的矩形区域.
20.CBrush:
:
CBrush
CBrush();
CBrush(COLORREFcrColor);
CBrush(intnIndex,COLORREFcrColor);
CBrush(CBitmap*pBitmap);
创建各种形式的画刷.
21.CBitmap:
:
LoadBitmap
BOOLLoadBitmap(LPCTSTRlpszResourceName);
BOOLLoadBitmap(UINTnIDResource);
创建和加载位图资源.
22.HGDIOBJGetStockObject(
intfnObject//typeofstockobject
);
GetStockObject函数检索的一个句柄,一个预定义的股票笔、刷子、字体、或调色板。
返回句柄.
23.CBrush:
:
FromHandle
staticCBrush*PASCALFromHandle(HBRUSHhBrush);
将句柄转化为一个画刷指针.
24.CDC:
:
SelectObject
CPen*SelectObject(CPen*pPen);
CBrush*SelectObject(CBrush*pBrush);
virtualCFont*SelectObject(CFont*pFont);
CBitmap*SelectObject(CBitmap*pBitmap);
intSelectObject(CRgn*pRgn);
将创建的图像信息选入设备描述表,返回值为旧的信息.
25.CDC:
:
SetROP2
intSetROP2(intnDrawMode);
通过模式的传参实现像素颜色的改变.
26.CWnd:
:
CreateSolidCaret
voidCreateSolidCaret(intnWidth,intnHeight);
创建光标.创建后要调用ShowCaret();对其进行显示.
CWnd:
:
CreateCaret
voidCreateCaret(CBitmap*pBitmap);用来创建位图光标.
27.typedefstructtagTEXTMETRIC{//tm
LONGtmHeight;当前文本高度
LONGtmAscent;
LONGtmDescent;
LONGtmInternalLeading;
LONGtmExternalLeading;
LONGtmAveCharWidth;平均文本宽度
LONGtmMaxCharWidth;
LONGtmWeight;
LONGtmOverhang;
LONGtmDigitizedAspectX;
LONGtmDigitizedAspectY;
BCHARtmFirstChar;
BCHARtmLastChar;
BCHARtmDefaultChar;
BCHARtmBreakChar;
BYTEtmItalic;
BYTEtmUnderlined;
BYTEtmStruckOut;
BYTEtmPitchAndFamily;
BYTEtmCharSet;
}TEXTMETRIC;
定义对象tm,调用CDC:
:
GetTextMetrics(&tm);来获取当前信息.
28.CString:
:
LoadString
BOOLLoadString(UINTnID);
加载字符串资源
CString:
:
Empty
voidEmpty();
清空字符串内容.
CString:
:
Left
CStringLeft(intnCount)const;
取字符串的左边几位.
CString:
:
GetLength
intGetLength()const;
获得字符串长度.
CString:
:
Format
voidFormat(LPCTSTRlpszFormat,...);
voidFormat(UINTnFormatID,...);
可以是格式字符串也可以是字符串资源的ID
29.CDC:
:
GetTextExtent
CSizeGetTextExtent(LPCTSTRlpszString,intnCount)const;
CSizeGetTextExtent(constCString&str)const;
获得字符串的宽度的高度.
30.CDC:
:
BeginPath
BOOLBeginPath();
BOOLEndPath();
创建和销毁路径层.
31.CDC:
:
SelectClipPath
BOOLSelectClipPath(intnMode);
定义新的剪裁区域.模式有RGN_DIFF等.
32.CWnd:
:
SetCaretPos
staticvoidPASCALSetCaretPos(POINTpoint);
设定光标的位置.
33.CDC:
:
SetTextColor
virtualCOLORREFSetTextColor(COLORREFcrColor);
设定文本的颜色.
34.CFont:
:
CreatePointFont
BOOLCreatePointFont(intnPointSize,LPCTSTRlpszFaceName,CDC*pDC=NULL);
设定文字大小和字体.设定后也要用SelectObject();选入设备描述表
35.CDC:
:
DrawText
virtualintDrawText(LPCTSTRlpszString,intnCount,LPRECTlpRect,UINTnFormat);
intDrawText(constCString&str,LPRECTlpRect,UINTnFormat);
绘出相应的字符串.注:
如果nCount=-1;则lpszString必须是以NULL结尾的字符串,大小由DrawText();计算.
36.CWnd:
:
SetTimer
UINTSetTimer(UINTnIDEvent,UINTnElapse,void(CALLBACKEXPORT*lpfnTimer)(HWND,UINT,UINT,DWORD));
定时发送消息的定时器.注:
第三个参数指定特定的回调函数进行消息处理,如果设定为NULL就会被投放到消息队列
中由CWnd对象捕获并且处理.
37.CWnd:
:
GetMenu
CMenu*GetMenu()const;返回临时的菜单指针.
CMenu:
:
GetSubMenu
CMenu*GetSubMenu(intnPos)const;返回子菜单的指针
CMenu:
:
CheckMenuItem
UINTCheckMenuItem(UINTnIDCheckItem,UINTnCheck);显示或者不显示选中标记第一个参数有第二个定.
CMenu:
:
SetDefaultItem
BOOLSetDefaultItem(UINTuItem,BOOLfByPos=FALSE);设置默认菜单第一个参数由第二个定.
CMenu:
:
SetMenuItemBitmaps
BOOLSetMenuItemBitmaps(UINTnPosition,UINTnFlags,constCBitmap*pBmpUnchecked,constCBitmap*pBmpChecked);
CMenu:
:
Detach
HMENUDetach();
在CMenu对象为局部对象时调用,分离其句柄.
38.intGetSystemMetrics(
intnIndex//systemmetricorconfigurationsettingtoretrieve
);
获取系统图标等尺寸信息
39.CMenu:
:
LoadMenu加载菜单
BOOLLoadMenu(LPCTSTRlpszResourceName);
BOOLLoadMenu(UINTnIDResource);
CWnd:
:
SetMenu设置菜单
BOOLSetMenu(CMenu*pMenu);
40.CCmdUI:
:
Enable
virtualvoidEnable(BOOLbOn=TRUE);
MFC菜单更新机制的响应函数中调用启用或者禁用菜单项
41.CMenu:
:
TrackPopupMenu
BOOLTrackPopupMenu(UINTnFlags,intx,inty,CWnd*pWnd,LPCRECTlpRect=NULL);
设置右键菜单,在此之前要调用GetSubMenu()获得弹出菜单的指针来调用该函数.
42.CWnd:
:
ClientToScreen
voidClientToScreen(LPPOINTlpPoint)const;
voidClientToScreen(LPRECTlpRect)const;
程序窗口和系统桌面之间的点击位置转换.
43.CMenu:
:
AppendMenu
BOOLAppendMenu(UINTnFlags,UINTnIDNewItem=0,LPCTSTRlpszNewItem=NULL);
BOOLAppendMenu(UINTnFlags,UINTnIDNewItem,constCBitmap*pBmp);
CMenu:
:
InsertMenu
BOOLInsertMenu(UINTnPosition,UINTnFlags,UINTnIDNewItem=0,LPCTSTRlpszNewItem=NULL);
BOOLInsertMenu(UINTnPosition,UINTnFlags,UINTnIDNewItem,constCBitmap*pBmp);
CMenu:
:
DeleteMenu
BOOLDeleteMenu(UINTnPosition,UINTnFlags);
动态的添加,插入和删除菜单.
44.CWnd:
:
DrawMenuBar
voidDrawMenuBar();
引起窗口重绘,显示刚刚创建的窗口.
45.CWnd:
:
Invalidate
voidInvalidate(BOOLbErase=TRUE);
使窗口无效而引起窗口重绘,清除以前的显示信息.
46.CObArray:
:
Add
intAdd(CObject*newElement);
可动态添加的字符串数组.通过该函数添加字符串.
CObArray:
:
GetAt
CObject*GetAt(intnIndex)const;
通过该函数获取保存的字符串
47.CDialog:
:
DoModal
virtualintDoModal();
创建模态对话框,应该某个对话框相对应类的对象来调用。
CDialog:
:
Create
BOOLCreate(LPCTSTRlpszTemplateName,CWnd*pParentWnd=NULL);
BOOLCreate(UINTnIDTemplate,CWnd*pParentWnd=NULL);
创建非模态对话框,应该某个对话框相对应类的对象来调用。
注:
需要调用ShowWindow();在非模
对话框点击确定后并没有销毁,重要的是如果该对话框的对象是局部对象,需要对它的内存地址进行销毁
以免内存的浪费。
1.将对话框指针定义成成员变量,在析构函数中用Delete释放。
2.重载PostNcDestroy
虚函数用Deletethis。
48.CWnd:
:
GetDlgItem
CWnd*GetDlgItem(intnID)const;
获取对话框控件的指针。
49.CWnd:
:
GetWindowText
intGetWindowText(LPTSTRlpszStringBuf,intnMaxCount)const;
voidGetWindowText(CString&rString)const;
获取该窗口的文本内容。
有相应的对象或者指针调用。
CWnd:
:
SetWindowText
voidSetWindowText(LPCTSTRlpszString);
设置该窗口的文本内容。
有相应的对象或者指针调用。
48.CWnd:
:
GetDlgItemText
intGetDlgItemText(intnID,LPTSTRlpStr,intnMaxCount)const;
intGetDlgItemText(intnID,CString&rString)const;
直接获取相应ID号控件的文本内容。
CWnd:
:
SetDlgItemText
voidSetDlgItemText(intnID,LPCTSTRlpszString);
直接设定相应ID号控件的文本内容。
49.CWnd:
:
GetDlgItemInt
UINTGetDlgItemInt(intnID,BOOL*lpTrans=NULL,BOOLbSigned=TRUE)const;
CWnd:
:
SetDlgItemInt
voidSetDlgItemInt(intnID,UINTnValue,BOOLbSigned=TRUE);
获取,设定相应ID空间的文本内容,基于整形。
50.CWnd:
:
UpdateData
BOOLUpdateData(BOOLbSaveAndValidate=TRUE);
同步控件与相应变量的值。
51.CWnd:
:
SendDlgItemMessage
LRESULTSendDlgItemMessage(intnID,UINTmessage,WPARAMwParam=0,LPARAMlParam=0);
获取和设置对话框相应ID控件的文本内容。
52.CWnd:
:
GetFocus
staticCWnd*PASCALGetFocus();
获取当前的焦点。
CWnd:
:
SetFocus
CWnd*SetFocus();
HWNDSetFocus(
HWNDhWnd//handletowindowtoreceivefocus
);
设置焦点的位置。
注:
设置焦点的位置可以有很多种方法。
53.CWnd:
:
GetWindowRect
voidGetWindowRect(LPRECTlpRect)const;
获取调用该函数对象的窗口矩形大小。
54.CRect:
:
IsRectNull
BOOLIsRectNull()const;
判断矩形的四个坐标是不是都是0。
CRect:
:
IsRectEmpty
BOOLIsRectEmpty()const;
判断矩形时候可以存在。
55.CWnd:
:
SetWindowPos
BOOLSetWindowPos(constCWnd*pWndInsertAfter,intx,inty,intcx,intcy,UINTn