您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页MFC函数自学手册

MFC函数自学手册

来源:华佗小知识


视频5 :文本编辑

1.函数的功能:字体的创建

函数原型:

CFont::CreatePointFont

BOOL CreatePointFont( int nPointSize, //字体的大小

LPCTSTR lpszFaceName, //字体的名字

CDC* pDC = NULL );

其他说明(返回值、参数):无

2.函数的功能:输出字符串宽度平滑加大

函数原型:

CDC::DrawText

int DrawText( const CString& str, //输出文字的字符串

LPRECT lpRect, //输出的矩形宽度

UINT nFormat //输出的格式

);

其他说明:uFormat选择DT_LEFT:左对齐方式。通过矩形宽度的平滑增加而实现。

3.函数的功能:设置一个定时器

函数原型:

CWnd::SetTimer

UINT SetTimer( UINT nIDEvent, //设置一个定时器的标识

UINT nElapse, //每隔多长时间发送定时消息,ms为单位

void (CALLBACK EXPORT* lpfnTimer)(HWND, UINT, UINT, DWORD)

);

其他说明:函数调用成功讲返回第一个参数的标识值。

第三个参数设置为NULL,回调函数讲放在消息队列中处理,对应消息WM_TIMER。

视频6:菜单

1.函数的功能:应用程序框架消息盒显示的函数

函数原型:AfxMessageBox(“Doc clicked”);

其他说明:无

2.函数的功能:获取菜单栏的指针

函数原型:

CWnd::GetMenu

CMenu* GetMenu( ) const;

其他说明:返回一个指向 菜单栏 的指针。

3.函数的功能:获取一个子菜单

函数原型:

CMenu::GetSubMenu

CMenu* GetSubMenu( int nPos ) const;

其他说明:返回一个指向 子菜单 的指针。 参数为子菜单的索引。Cmenu对象调用该函数。

4.函数的功能:在一个菜单项上放置一个标记

函数原型:

CMenu::CheckMenuItem

UINT CheckMenuItem( UINT nIDCheckItem, UINT nCheck );

其他说明:第一个参数取值由第二个参数决定。第二个参数取值MF_BYCOMMAND 第一个参数取值菜单的ID号。第二的参数取值MF_BYPOSITION第一个参数代表菜单的索引号。第二个参数取值MF_CHECKED or MF_UNCHECKED with MF_BYPOSITION or MF_BYCOMMAND 的组合。

5.函数的功能:设置缺省的菜单项,缺省菜单项就是以粗体显示。

函数原型:

CMenu::SetDefaultItem

BOOL SetDefaultItem( UINT uItem, BOOL fByPos = FALSE );

其他说明:第二个参数为FLASE第一个参数为命令的ID,第二的参数为TURE第一个参数为索引号。

6.函数的功能:图形标记菜单的创建

函数原型:

CMenu::SetMenuItemBitmaps

BOOL SetMenuItemBitmaps( UINT nPosition, UINT nFlags, const CBitmap* pBmpUnchecked, const CBitmap* pBmpChecked );

其他说明:第二个参数取值MF_BYCOMMAND 第一个参数取值菜单的ID号。第二的参数取值MF_BYPOSITION第一个参数代表菜单的索引号。后面2个参数都是位图的指针,第一个为选中位图,第二个为未选中位图。

7. .函数的功能:获取一个系统信息的度量

函数原型:

int GetSystemMetrics( int nIndex ); // system metric or configuration setting

其他说明:参数分别选SM_CXMENUCHECK,SM_CYMENUCHECK,返回一个菜单项图形标记的宽度和高度。

8.函数的功能:将字符串格式化到字符串对象当中

函数原型:

CString::Format

其他说明:无

9.函数的功能:让一个菜单项失效

函数原型:

CMenu::EnableMenuItem

UINT EnableMenuItem( UINT nIDEnableItem, UINT nEnable );

其他说明:第二个参数取值MF_BYCOMMAND 第一个参数取值菜单的ID号。第二的参数取值MF_BYPOSITION第一个参数代表菜单的索引号。第二个参数组合MF_DISABLED, MF_ENABLED, or MF_GRAYED, with MF_BYCOMMAND or MF_BYPOSITION。

备注:在CMainFrame的构造函数中设置 m_bAutoMenuEnable=FALSE。

10.函数的功能:如何更换或取消整个菜单栏

函数原型:

CWnd::SetMenu

BOOL SetMenu( CMenu* pMenu );

其他说明:如果参数为空,当前的 菜单栏 将被移除。如果为CMenu对象的地址则设定这个菜单栏。

11.函数的功能:CMenu对象加载一个菜单栏

函数原型:

CMenu::LoadMenu

BOOL LoadMenu( LPCTSTR lpszResourceName );

BOOL LoadMenu( UINT nIDResource );

其他说明:无

12.函数的功能:命令更新,让一个菜单项有效或失效。

函数原型:

CCmdUI::Enable

virtual void Enable( BOOL bOn = TRUE );

其他说明:CCmdUI类没有基类。参数为TURE时菜单项有效,为FALSE菜单项无效。

调用时,使用CCmdUI的对象调用该函数。

13.函数的功能:该函数在指定位置显示快捷菜单,并跟踪菜单项的选择。

函数原型:

CMenu::TrackPopupMenu

BOOL TrackPopupMenu( UINT nFlags, int x, int y, CWnd* pWnd, LPCRECT lpRect = NULL );

其他说明:第二三参数为菜单显示的屏幕参考点,第一个参数为显示参考点的哪个位置

TPM_CENTERALIGN or TPM_LEFTALIGN or TPM_RIGHTALIGN or

TPM_RIGHTBUTTON 。第四个参数决定在那个类中快捷菜单项能后实行命令响应。比如this就只能在C*View类中响应,GetParent()就只能在CmainFrame类中响应。

14.函数的功能:客户区坐标转换为屏幕坐标

函数原型:

CWnd::ClientToScreen

void ClientToScreen( LPPOINT lpPoint ) const;

void ClientToScreen( LPRECT lpRect ) const;

其他说明:无

15.函数的功能:添加一个弹出菜单、弹出菜单的菜单项、子菜单、子菜单的菜单项 到末尾

函数原型:

CMenu::AppendMenu

BOOL AppendMenu( UINT nFlags, UINT nIDNewItem = 0, LPCTSTR lpszNewItem = NULL );

其他说明:第一个参数为MF_POPUP,创建一个弹出菜单,第二个参数设置为菜单栏的句柄。如果第一个参数设置为MF_SEPARATOR即分隔栏,第二个参数就忽略。第一个参数为MF_STRING,第二个参数为菜单项的ID号,第三个为菜单的名字。第三个参数为名称。

16.函数的功能:创建一个空的弹出菜单,并且关联一个Cmenu对象。

函数原型:

CMenu::CreatePopupMenu

BOOL CreatePopupMenu( );

其他说明:无

17.函数的功能:插入一个弹出菜单、弹出菜单的菜单项、子菜单、子菜单的菜单项

函数原型:

CMenu::InsertMenu

BOOL InsertMenu( UINT nPosition, UINT nFlags, UINT nIDNewItem = 0, LPCTSTR lpszNewItem = NULL );

其他说明:无

18.函数的功能:删除一个子菜单、菜单项、弹出菜单

函数原型:

CMenu::DeleteMenu

BOOL DeleteMenu( UINT nPosition, UINT nFlags );

其他说明:第二的参数为MF_BYPOSITION,第一个参数为索引号。

19.函数的功能:在窗口已经被创建后,菜单栏改变后重绘菜单栏

函数原型:

CWnd::DrawMenuBar

void DrawMenuBar( );

其他说明:在View类中让父窗口的菜单重绘应该这么调用Getparent()->DrawMenuBar( );

20.函数的功能:输出字符串

函数原型:

CDC::TextOut

BOOL TextOut( int x, int y, const CString& str );

其他说明:CDC类的对象调用该函数。

21.函数的功能:让真个客户端消息无效,引起窗口的重绘

函数原型:

CWnd::Invalidate

void Invalidate( BOOL bErase = TRUE );

其他说明:参数为TURE,背景被擦除。参数FLASE,背景保留。

22.函数的功能:在一个字符串中找一个字符第一个字符的索引

函数原型:

CString::Find

int Find( TCHAR ch ) const;

其他说明:无

23.函数的功能:取一个值的低字节序

函数原型:WORD LOWORD( DWORD dwValue );

其他说明:无

24.函数的功能:取一个值的高字节序

函数原型:WORD HIWORD( DWORD dwValue );

其他说明:无

视频7 对话框

1.函数的功能:创建一个非modal对话框

函数原型:

CDialog::Create

BOOL Create( LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL );

BOOL Create( UINT nIDTemplate, CWnd* pParentWnd = NULL );、

其他说明:第一个参数为一个对话框模板的名字或ID号。第二个参数为其父窗口的指针。如果第二个参数为NULL,则其父窗口为主应用程序窗口。

2.函数的功能:显示一个窗口

函数原型:

CWnd::ShowWindow

BOOL ShowWindow( int nCmdShow );

其他说明:参数可以选SW_SHOW

3.函数的功能:创建一个按钮

函数原型:

CButton::Create

BOOL Create( LPCTSTR lpszCaption, //控件的文本

DWORD dwStyle, //控件的类型,可以选BS_DEFPUSHBUTTON

const RECT& rect, CWnd* pParentWnd, //控件矩形区域和控件父窗口

UINT nID //控件ID号

);

其他说明:第二个类型button styles 和window styles可以同时选择,如果没有调用window styles,那么在控件创建后还要调用showwindow函数将按钮显示出来。

4.函数的功能:销毁一个窗口

函数原型:

CWnd::DestroyWindow

virtual BOOL DestroyWindow( );

其他说明:无

5.函数的功能:获取一个窗口的文本

函数原型:

CWnd::GetWindowText

void GetWindowText( CString& rString ) const;

int GetWindowText( LPTSTR lpszStringBuf, int nMaxCount ) const;

其他说明:第一个函数参数用来保存窗口的文本。

第二个函数 第一个参数为一个字符串的指针用来存储字符串,第二个参数为拷贝到第一个字符串指针最大的数目。

6.函数的功能:返回一个CWnd的指针,获取对话框控件的指针或子窗口的指针,大多情况下用在对话框内当中

函数原型:

CWnd::GetDlgItem

CWnd* GetDlgItem( int nID ) const;

其他说明:参数为控件的ID号,用ID号识别对话框中的控件。

7.函数的功能:设置一个窗口的文本

函数原型:

CWnd::SetWindowText

void SetWindowText( LPCTSTR lpszString );

其他说明:无

8.函数的功能:字符串内容装换为数值

函数原型:

int atoi( const char *string );

其他说明:无

9.函数的功能:数值转换为字符串

函数原型:

char *_itoa( int value, char *string, int radix );

其他说明:第一参数为被装换的数值,第二个参数为转换结果存储的字符串指针,第三个参数为进制。

10.函数的功能:获取一个子控件的文本

函数原型:

CWnd::GetDlgItemText

int GetDlgItemText( int nID, LPTSTR lpStr, int nMaxCount ) const;

int GetDlgItemText( int nID, CString& rString ) const;

其他说明:该函数相当于CWnd::GetDlgItem 和CWnd::GetWindowText的和。第一个参数为控件的ID,第二个参数为存放字符串的指针,第三个为获取的字符串最大数目。

11.函数的功能:设置一子控件的文本

函数原型:

CWnd::SetDlgItemText

void SetDlgItemText( int nID, LPCTSTR lpszString );

其他说明:和上一个说明相似。

12.函数的功能:获取一个对话框控件的文本,在转换为整型返回。

函数原型:

CWnd::GetDlgItemInt

UINT GetDlgItemInt( int nID, BOOL* lpTrans = NULL, BOOL bSigned = TRUE ) const;

其他说明:参数1为控件的ID号。参数2为转换标志,设为NULL,当获取失败将不发生警告。参数3为接受被转换的值是否有符号,设为TURE表明处理一个有符号的数字。

13.函数的功能:设置一个对话框控件的数值

函数原型:

CWnd::SetDlgItemInt

void SetDlgItemInt( int nID, UINT nValue, BOOL bSigned = TRUE );

其他说明:和上一个说明相似。

14.函数的功能:发送一个消息

函数原型:

SendMessage(

(HWND) hWnd, // handle to destination window

WM_GETTEXT, // message to send

(WPARAM) wParam, // number of characters to copy

(LPARAM) lParam // text buffer

);

其他说明:WM_GETTEXT 获取一个文本消息,WM_SETTEXT 设置一个文本消息。

15.函数的功能:发送一个消息

函数原型:

CWnd::SendMessage

LRESULT SendMessage( UINT message, WPARAM wParam = 0, LPARAM lParam = 0 );

其他说明:CWnd的对象调用该函数。

16.函数的功能:给子控件发送一个消息

函数原型:

CWnd::SendDlgItemMessage

LRESULT SendDlgItemMessage( int nID, UINT message, WPARAM wParam = 0, LPARAM lParam = 0 );

其他说明:CWnd的对象调用该函数。第一个参数为子控件的ID号。该函数等价于先调用CWnd::GetDlgItem 后调用CWnd::SendMessage。

17.函数的功能:EM_GETSEL消息获取编辑框复选内容

函数原型:

SendMessage(

(HWND) hWnd, // handle to destination window

EM_GETSEL, // message to send

(WPARAM) wParam, // starting position (LPDWORD)

(LPARAM) lParam // ending position (LPDWORD)

);

其他说明:第三个参数为复选的起始位置,第四个参数为复选的结束位置。

如果开始位置设为0,结束位置设为-1,则所有文本被复选。

18.函数的功能:设置一个窗口的焦点,并返回一个先前具有输入焦点的窗口所对应C++类的指针

函数原型:

CWnd::SetFocus

CWnd* SetFocus( );

其他说明:CWnd的对象调用该函数。

下面函数与对话框的收缩与扩展相关

19.函数的功能:检测一个矩形区域是否为空,通过判断矩形的宽度和高度为0。

函数原型:

CRect::IsRectEmpty

BOOL IsRectEmpty( ) const;

其他说明:无

20.函数的功能:检测一个矩形区域是否为空,通过判断四个坐标值是否为0。

函数原型:

CRect::IsRectNull

BOOL IsRectNull( ) const;

其他说明:无

21.函数的功能:获取一个窗口的矩形区域

函数原型:

CWnd::GetWindowRect

void GetWindowRect( LPRECT lpRect ) const;

其他说明:参数为矩形区域的指针。获取的坐标为屏幕的左上角为原点。

函数原型:

CWnd::ScreenToClient

void ScreenToClient( LPPOINT lpPoint ) const;

void ScreenToClient( LPRECT lpRect ) const;

其他说明:将屏幕区域坐标转换为客户区域坐标。

22.函数的功能:RECT结构体

函数原型:

typedef struct tagRECT {

LONG left; //左上角的x坐标

LONG top; //左上角的y坐标

LONG right; //右下角的x坐标

LONG bottom; //右下角的y坐标

} RECT;

其他说明:无

23.函数的功能:改变一个子窗口,弹出式窗口或顶层窗口的尺寸,位置和Z序。

函数原型:

CWnd::SetWindowPos

BOOL SetWindowPos( const CWnd* pWndInsertAfter, int x, int y, int cx, int cy, UINT nFlags );

其他说明:x,y为窗口左上角的坐标。cx和cy指的是窗口的高度和宽度。nFlag选择SWP_NOMOVE就忽略x,y的值,选择SWP_NOZORDER就忽略pWndInsertAfter的值。

24.函数的功能:改变一个指定窗口的属性

函数原型:

LONG SetWindowLong( HWND hWnd, // handle to window

int nIndex, // offset of value to set

LONG dwNewLong // new value

);

其他说明:第一个参数为改变窗口的句柄,第二参数为一个值的偏移量为GWL_WNDPROC时可以设置一个窗口的地址,第三个参数为新窗口的地址。

函数成功返回先前的32位窗口地址的整型值。

25.函数的功能:获取编辑框下一个窗口的句柄

函数原型:

HWND GetNextWindow( HWND hWnd, // handle to current window

UINT wCmd // direction

);

其他说明:第二个参数可以选择GW_HWNDNEXT和GW_HWNDPREV。

26.函数的功能:获取窗口句柄的函数

函数原型:

HWND GetWindow( HWND hWnd, // handle to original window

UINT uCmd // relationship

);

其他说明:第二参数可以取GW_HWNDLAST、GW_HWNDNEXT、GW_HWNDPREV、GW_CHILD等。

27.函数的功能:获取一个句柄指向第一个具有WS_TABSTOP类型的控件。

函数原型:

HWND GetNextDlgTabItem( HWND hDlg, // handle to dialog box

HWND hCtl, // handle to known control

BOOL bPrevious // direction flag

);

其他说明:第一个参数为对话框的句柄,第二个参数为已知控件的句柄也就是从哪一个控件开始查找。第三个参数为方向的标记为TURE时搜索先前的控件,为FALSE时搜索下一个控件。

视频8 对话框 属性表单

创建属性表单类 :Insert->New Class->名字叫C*Sheet,基类选择CPropertySheet->OK。

如何将属性页增加到属性表单当中:在属性表单的构造函数当中调用CPropertySheet::AddPage。在属性表单中创建属性页的对象和增加他们各自的头文件。

如何创建一个向导对话框:步骤和创建属性表单一样,但在调用DoModal之前要先调用SetWizardMode

如何在属性页中增加一个虚函数OnSetActive:右击函数的类Add Virtual Function->选择OnSetActive->Add Handler->Edit Existing。

WM_INITDIALOG与WM_CREATE的区别: WM_CREATE是所有窗口都能响应的消息,表明本窗口已经创建完毕.在响应WM_CREATE消息响应函数的时候,对话框及子控件还未创建完成,亦是说只是通知系统说要开始创建窗口了,这个消息响应完之后,对话框和子控件才开始创建。因此在此消息响应函数中无法对控件进行修改和初始化。 而WM_INITDIALOG消息响应函数是在程序运行时,当其对话框和子控件全部创建完毕,将要显示内容的时候发送的消息。因此可以在WM_INITDIALOG消息响应函数中添加对编辑框控件的初始化和修改。

1.函数的功能:将属性页对象增加到属性表单当中

函数原型:

CPropertySheet::AddPage

void AddPage( CPropertyPage *pPage );

其他说明:参数为属性页对象的地址。

2.函数的功能:属性表单的构造函数

函数原型:

CPropertySheet::CPropertySheet

CPropertySheet( );

CPropertySheet( UINT nIDCaption, CWnd *pParentWnd = NULL, UINT iSelectPage = 0 );

CPropertySheet( LPCTSTR pszCaption, CWnd *pParentWnd = NULL, UINT iSelectPage = 0 );

其他说明:第二个参数为父窗口即主框架窗口。第三个参数为初始选择的属性页。

3.函数的功能:模态属性表单的显示

函数原型:

CPropertySheet::DoModal

virtual int DoModal( );

其他说明:属性表单的对象调用该函数用来显示模态的属性表单。

返回值成功IDOK or IDCANCEL,失败0or-1。如果属性表单建立向导,成功返回ID_WIZFINISH or IDCANCEL。

4.函数的功能:建立属性页的向导

函数原型:

CPropertySheet::SetWizardMode

void SetWizardMode( );

其他说明:无

5.函数的功能:设置属性表单向导的按钮

函数原型:

CPropertySheet::SetWizardButtons

void SetWizardButtons( DWORD dwFlags );

其他说明:dwFlags可以选择 PSWIZB_BACK( 后退) PSWIZB_NEXT(下一个)

PSWIZB_FINISH (完成) PSWIZB_DISABLEDFINISH (缺省)。

该函数的调用应该在属性页CPropertyPage::OnSetActive函数中调用

属性表单的对象才可以调用该函

6.函数的功能:在该虚函数下可以设置属性表单的向导按钮

函数原型:

CPropertyPage::OnSetActive

virtual BOOL OnSetActive( );

其他说明:无

7.函数的功能:属性表单下一步的消息响应应该在该虚函数下

函数原型:

CPropertyPage::OnWizardNext

virtual LRESULT OnWizardNext();

其他说明:当属性表单的下一步按钮被点击时,该函数被调用。该虚函数的增加方法和增加虚函数OnSetActive一样。

该函数返回值为-1时,避免进入下一个页面。返回值为0时,进入下一个页面 。

8.函数的功能:在列表框中增加一个字符串

函数原型:

CListBox::AddString

int AddString( LPCTSTR lpszItem );

其他说明:列表框的对象调用该函数。列表框对象的获取可以通过获取他的指针,通过函数CWnd::GetDlgItem 。

9.函数的功能:往组合框中添加一个字符串

函数原型:

CComboBox::AddString

int AddString( LPCTSTR lpszString );

其他说明:组合框的对象调用该函数。组合框对象的获取可以通过获取他的指针,通过函数CWnd::GetDlgItem 。

10.函数的功能:在一个组合框的编辑框中选择一个列表框中的某一项

函数原型:

CComboBox::SetCurSel

int SetCurSel( int nSelect );

其他说明:参数 基于0的索引,如果为-1任何选择被清除。

11.函数的功能:获取组合框用户选择的列表框所对应的索引值

函数原型:

CComboBox::GetCurSel

int GetCurSel( ) const;

其他说明:无

12.函数的功能:从组合框的列表框中获取索引值所对应的字符串

函数原型:

CComboBox::GetLBText

int GetLBText( int nIndex, LPTSTR lpszText ) const;

void GetLBText( int nIndex, CString& rString ) const;

其他说明:参数一为索引号,参数二用来接收用户选择的字符串。

13.函数的功能:初始化一个数组

函数原型:

void *memset( void *dest, int c, size_t count );

其他说明:头文件 or 。第一个参数为待初始化的数组的首地址,初始化后的字符,非零为真,零即为假,第三个参数为内存buffer的大小。

视频9 修改框架外观、工具栏、状态栏

CREATESTRUCT结构体的参数类型和个数和CreateWindow一样,只是顺序相反。

MFC框架程序的外观、大小、窗口标题的修改:在CMainFrame下的PreCreateWindow函数中修改。

要改变MFC窗口的标题:先设置cs.style的值为WS_OVERLAPPEDWINDOW,再设定cs.lpszName的标题。

如何修改窗口的图标、光标、背景:在CMainFrame下的PreCreateWindow函数中编写自己的窗口类,然后注册,按照自己编写的窗口类去创建。图标在CMainFrame下的PreCreateWindow修改。光标和背景画刷在View类下PreCreateWindow修改。

WNDCLASS:就是待设计的窗口类,它包含了一个窗口的全部信息,CreateWindow只是将某个WNDCLASS定义的窗体变成实例。

AFX_IDW_STATUS_BAR:为状态栏的ID号。

如何查看常用控件的预先定义好的ID号(如:状态栏、工具栏、控制条):先找到其中一个ID号,然后go to definition就可以查看其它ID号。

1.函数的功能:在一个窗口创建之后,可以利用该函数改变一个指定窗口的属性,如改变窗口的标题。

函数原型:

LONG SetWindowLong( HWND hWnd, // handle to window

int nIndex, // offset of value to set

LONG dwNewLong ); // new value

其他说明:第二个参数选择GWL_STYLE时就可以改变一个窗口的类型,第三个参数为新的窗口类型可以设为WS_OVERLAPPEDWINDOW。

该函数在CMainFrame::OnCreate中调用。

2.函数的功能:获取一个指定窗口的信息

函数原型:

LONG GetWindowLong( HWND hWnd, // handle to window

int nIndex ); // offset of value to retrieve

其他说明:第二参数为选择值选择什么值,就可以获取指定的窗口信息。

返回值就是我们需要的信息。

3.函数的功能:获取画刷、笔、字体的句柄

函数原型:

HGDIOBJ GetStockObject( int fnObject ); // stock object type

其他说明:参数可以选择BLACK_BRUSH为黑色画刷,参数为选择值。

4.函数的功能:加载一个光标

函数原型:

HCURSOR LoadCursor( HINSTANCE hInstance, LPCTSTR lpCursorName);

其他说明:加载一个系统的光标,参数一设为NULL,参数二为选择值,可以选择IDC_HELP。

5.函数的功能:加载一个图标

函数原型:

HICON LoadIcon( HINSTANCE hInstance, LPCTSTR lpIconName );

其他说明:加载一个系统的图标,参数一设为NULL,参数二为选择值,可以选择IDI_ERROR。

6.函数的功能:返回应用程序当前实例的句柄

函数原型:

AfxGetInstanceHandle

HINSTANCE AfxGetInstanceHandle( );

其他说明:无参数,返回值为当前应用程序的句柄

7.函数的功能:缺省的窗口过程函数

函数原型:DefWindowProc

其他说明:调用全局的该函数,前面要加作用域标识符::DefWindowProc。

8.函数的功能:注册一个窗口类

函数原型:

ATOM RegisterClass( CONST WNDCLASS *lpWndClass );

其他说明:无

9.函数的功能:在一个窗口创建之前修改窗口的类的类型、背景画刷、光标、图标可以用该全局函数

函数原型:

AfxRegisterWndClass

LPCTSTR AFXAPI AfxRegisterWndClass( UINT nClassStyle, HCURSOR hCursor = 0, HBRUSH hbrBackground = 0, HICON hIcon = 0 );

其他说明:返回值就是一个注册后的类名。

10.函数的功能:在一个窗口创建之后,修改窗口的背景画刷、光标、图标。

函数原型:

DWORD SetClassLong( HWND hWnd, // handle to window

int nIndex, // index of value to change

LONG dwNewLong // new value);

其他说明:第二个参数为选择值,第三个参数为新的值。

11.函数的功能:将一个整型的值(如图标的ID号)转换为和资源管理兼容的资源类型

函数原型:

LPTSTR MAKEINTRESOURCE( WORD wInteger );

其他说明:参数为一个WORD类型如图标的ID号。

12.函数的功能:获取一个应用程序的句柄

函数原型:

AfxGetApp

CWinApp* AfxGetApp( );

其他说明:该函数的返回值CWinApp的指针,然后调用CWinApp内部成员AfxGetApp()->m_hInstance就可以获取应用程序的句柄。

工具栏:通常是把常用的菜单命令集合起来以按钮的形式提供给用户使用。

如何查看工具栏按钮的ID号:双击。

如何在工具栏上增加分隔符:在这个按钮上摁住鼠标左键,将按钮向右拖动一点。

如何删除工具栏上的按钮:在这个按钮上摁住鼠标左键,将按钮拖出工具栏。

工具栏如何进行响应的:只需许改工具栏图标的ID号和对应菜单命令的ID号一样就OK了。

COMMAND与UPDATE_COMMAND_UI的区别:第一个是响应打开菜单的命令的 。第二个是你打开这个菜单时,处理这个菜单的状态,比如选中(复选标志)、变灰等等。

CClientDC:(客户区设备上下文)用于客户区的输出,与特定窗口关联,可以让开发者访问目标窗口中客户区,其构造函数中包含了GetDC,析构函数中包含了ReleaseDC。 CClientDC dc(this);//this一般指向本窗口或当前活动视图。dc.TextOut(10,10,str,str.GetLength());//利用dc输出文本。

DC的作用自我理解:你想输出一个字符串或者作图,那么你就通过设备上下文来输出。

13.函数的功能:CToolBar的对象创建一个窗口工具栏

函数原型:

CToolBar::Create

BOOL Create( CWnd* pParentWnd, DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_TOP, UINT nID = AFX_IDW_TOOLBAR );

其他说明:无

14.函数的功能:CToolBar的对象创建一个窗口工具栏

函数原型:

CToolBar::CreateEx

BOOL CreateEx(CWnd* pParentWnd, DWORD dwCtrlStyle = TBSTYLE_FLAT, DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP, CRect rcBorders = CRect(0, 0, 0, 0), UINT nID = AFX_IDW_TOOLBAR);

其他说明:无

15.函数的功能:CToolBar的对象加载一个工具栏资源

函数原型:

CToolbar::LoadToolBar

BOOL LoadToolBar( LPCTSTR lpszResourceName );

BOOL LoadToolBar( UINT nIDResource );

其他说明:无

16.函数的功能:判断一个窗口是否可视

函数原型:

CWnd::IsWindowVisible

BOOL IsWindowVisible( ) const;

其他说明:窗口显示返回TURE,窗口隐藏返回FALSE

17.函数的功能:窗口的显示方式

函数原型:

CWnd::ShowWindow

BOOL ShowWindow( int nCmdShow );

其他说明:SW_HIDE隐藏SW_SHOW显示

18.函数的功能:当标准工具栏或状态栏隐藏或者显示,或者窗口调整大小时,框架调用这个方法。

函数原型:

CFrameWnd::RecalcLayout

virtual void RecalcLayout( BOOL bNotify = TRUE );

其他说明:如果是TRUE就通知子项目,否则,不传递。

19.函数的功能:显示工具栏和隐藏工具栏

函数原型:

CFrameWnd::ShowControlBar

void ShowControlBar( CControlBar* pBar, BOOL bShow, BOOL bDelay );

其他说明:参数一为指向一个CControlBar的指针。参数二为真控制条显示为假工具栏隐藏。参数三为真显示延迟,为假立即显示工具栏。

20.函数的功能:命令复选框选中

函数原型:

CCmdUI::SetCheck

virtual void SetCheck( int nCheck = 1 );

其他说明:参数为真复选框选中,为假不选中。

21.函数的功能:获取系统当前的时间

函数原型:

CTime::GetCurrentTime

static CTime PASCAL GetCurrentTime( );

其他说明:CTime类的对象调用该函数。

22.函数的功能:对获取的系统时间进行格式化

函数原型:

CTime::Format

CString Format( LPCTSTR pFormat ) const;

CString Format( UINT nFormatID ) const;

其他说明:参数为输出格式 :%D Total days in this CTime。%H Hours in the current day。%M Minutes in the current hour 。 %S Seconds in the current minute。

23.函数的功能:如何在状态栏窗格中显示内容

函数原型:

CStatusBar::SetPaneText

BOOL SetPaneText( int nIndex, LPCTSTR lpszNewText, BOOL bUpdate = TRUE );

其他说明:参数一为窗格在指示器数组当中的索引,参数二为新的文本,

24.函数的功能:给定一个状态栏指示器的ID,获取其状态栏中索引号

函数原型:

CStatusBar::CommandToIndex

int CommandToIndex( UINT nIDFind ) const;

25.函数的功能:改变状态栏指示器窗格的信息如窗格的大小

函数原型:

CStatusBar::SetPaneInfo

void SetPaneInfo( int nIndex, UINT nID, UINT nStyle, int cxWidth );

其他说明:参数一为指示器的索引号。参数二为指示器新的ID。参数三为指示器面板的类 型,可以取SBPS_NOBORDERS、SBPS_POPOUT、SBPS_DISABLED、SBPS_S TRETCH、SBPS_NORMAL。参数四为指示器面板的宽度。

26.函数的功能:得到一个字符串显示时候的宽度

函数原型:

CDC::GetTextExtent

CSize GetTextExtent( LPCTSTR lpszString, int nCount ) const;

CSize GetTextExtent( const CString& str ) const;

其他说明:参数为字符串。

27.函数的功能:如何创建一个进度栏

函数原型:

CProgressCtrl::Create

BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );

其他说明:在调用该函数之前先构造一个进度栏。

如在CMainFrame类中构造一个进度栏:CProgressCtrl m_progress;。

参数一为进度栏的窗口类型,PBS_VERTICAL 窗口垂直,PBS_SMOOTH为进度平滑变形。参数二为进度栏的大小。参数三为状态栏的父窗口。参数四为进度栏的Id号。

28.函数的功能:设置进度栏的位置

函数原型:

CProgressCtrl::SetPos

int SetPos( int nPos );

其他说明:参数为数值,如果值为50,则进度栏到中间。

29.函数的功能:获取状态栏窗格矩形区域窗格的大小

函数原型:

CStatusBar::GetItemRect

void GetItemRect( int nIndex, LPRECT lpRect ) const

其他说明:参数一为指定窗格的索引,参数二用来接收指定窗格矩形区域的坐标。

30.函数的功能:移动一个窗口(进度栏也是一个窗口)到一个矩形区域

函数原型:

CWnd::MoveWindow

void MoveWindow( int x, int y, int nWidth, int nHeight, BOOL bRepaint = TRUE );

void MoveWindow( LPCRECT lpRect, BOOL bRepaint = TRUE );

其他说明:无

31.函数的功能:让一个进度栏按一定的步长前进

函数原型:

CProgressCtrl::StepIt

int StepIt( );

其他说明:步长的大小调用CProgressCtrl::SetStep

32.函数的功能:CProgressCtrl::SetStep

函数原型:

CProgressCtrl::SetStep

int SetStep( int nStep );

其他说明:无

33.函数的功能:设置一个进度栏的范围

函数原型:

CProgressCtrl::SetRange

void SetRange( short nLower, short nUpper );

void SetRange32( int nLower, int nUpper );

其他说明:无

34.函数的功能:在状态栏的提示行设置一个字符串

函数原型:

CWnd::SetWindowText

void SetWindowText( LPCTSTR lpszString );

其他说明:无

35.函数的功能:放置一个字符串在状态栏具有ID为0的面板,典型的也就是最左端最长的面板。

函数原型:

CFrameWnd::SetMessageText

void SetMessageText( LPCTSTR lpszText );

void SetMessageText( UINT nID );

其他说明:nID为字符串资源的ID号。

36.函数的功能:返回一个指向状态栏窗口的指针

函数原型:

CFrameWnd::GetMessageBar

virtual CWnd* GetMessageBar( );

其他说明:无

37.函数的功能:通过给定一个子孙窗口的ID号,通过搜索整个子窗口数,直到找到我们给定ID的子孙窗口

函数原型:

CWnd::GetDescendantWindow

CWnd* GetDescendantWindow( int nID, BOOL bOnlyPerm = FALSE ) const;

其他说明:返回值为指向CWnd的指针。

视频10

图形的绘制,如何使用自定义画笔(颜色,线宽,线形)。

1.函数的功能:画点,在一个指定的点设置一个像素。

函数原型:

CDC::SetPixel

COLORREF SetPixel( int x, int y, COLORREF crColor );

COLORREF SetPixel( POINT point, COLORREF crColor );

其他说明:通过参数三指定的最接近的一个颜色,在指定的点设置像素。

2.函数的功能:画线

函数原型:

CDC::MoveTo

CPoint MoveTo( int x, int y );

CPoint MoveTo( POINT point );

其他说明:移动到原点

函数原型:

CDC::LineTo

BOOL LineTo( int x, int y );

BOOL LineTo( POINT point );

其他说明:移动到终点

3.函数的功能:画矩形

函数原型:

CDC::Rectangle

BOOL Rectangle( int x1, int y1, int x2, int y2 );

BOOL Rectangle( LPCRECT lpRect );

其他说明:CRect对象和矩形的指针LPCRECT会自动装换,所以在第二个函数中传入CRect对象的数据类型编译时也是不会出错的。

4.函数的功能:画椭圆

函数原型:

CDC::Ellipse

BOOL Ellipse( int x1, int y1, int x2, int y2 );

BOOL Ellipse( LPCRECT lpRect );

其他说明:无

5.函数的功能:画笔的构造函数

函数原型:

CPen::CPen

CPen( );

CPen( int nPenStyle, int nWidth, COLORREF crColor );

throw( CResourceException );

其他说明:参数一笔的类型,参数二笔的宽度,参数三笔的颜色。

6.函数的功能:将画笔、画刷、字体、位图选入设备描述表当中

函数原型:

CDC::SelectObject

CPen* SelectObject( CPen* pPen );

CBrush* SelectObject( CBrush* pBrush );

virtual CFont* SelectObject( CFont* pFont );

CBitmap* SelectObject( CBitmap* pBitmap );

其他说明:无

7.函数的功能:获取一个画刷的句柄

函数原型:

HGDIOBJ GetStockObject( int fnObject ); // stock object type

其他说明:参数选HOLLOW_BRUSH为透明画刷,等等其他参数查看MSDN。

8.函数的功能:装换一个画刷的句柄,返回一个CBrush的指针

函数原型:

CBrush::FromHandle

static CBrush* PASCAL FromHandle( HBRUSH hBrush );

其他说明:无

如何为程序中添加选项菜单和选项设置对话框。

dlg.DoModal()==IDOk的解释:

virtual INT_PTR CDialog::DoModal();

当dlg.DoModal()后,显示一个模态对话框,此时DoModal()函数并不返回,直到用户关闭此对话框时,DoModal才返回。如果用户点击了确定按钮,那么DoModal()函数就返回IDOK。IDOK是一个宏。

当你CMyDlg dlg;时,对话框并没有显示,只要构造了一个CMyDlg类型的对象而已,直到用户调用DoModal(),对话框才会显示出来。

如何使用标准颜色对话框,如何使用字体对话框,在选项对话框中实现预览功能。

9.函数的功能:颜色对话框的构造函数

函数原型:

CColorDialog::CColorDialog

CColorDialog( COLORREF clrInit = 0, DWORD dwFlags = 0, CWnd* pParentWnd = NULL );

其他说明:参数一缺省的颜色选择,没有值缺省值为RGB(0,0,0) (black).参数二为颜色对话框的功能和外观,更多的参数看CHOOSECOLOR structure。参数三为指向父窗口的指针。

10.函数的功能:颜色对话框的成员变量CColorDialog::m_cc,获取用户选择的颜色

函数原型:

CColorDialog::m_cc

CHOOSECOLOR m_cc;

其他说明:m_cc 是CHOOSECOLOR结构体类型,在颜色对话框中用户点击了ok按钮,CHOOSECOLOR结构体的rgbResult变量就保存了用户选择的颜色类型。

在CHOOSECOLOR结构体类型中,如果CHOOSECOLOR结构体的标志Flags设置了CC_RGBINIT,则颜色对话框创建时选择初始选择的颜色。在给Flags赋值CC_RGBINIT会把原来Flags的缺省值覆盖,所以一般这么赋值dlg.m_cc.Flags|=CC_RGBINIT; 要想颜色对话框完全打开,还要给

Flags

赋值

CC_FULLOPEN,

dlg.m_cc.Flags|=CC_RGBINIT | CC_FULLOPEN;

11.函数的功能:字体对话框的构造函数

函数原型:

CFontDialog::CFontDialog

CFontDialog( LPLOGFONT lplfInitial = NULL, DWORD dwFlags = CF_EFFECTS | CF_SCREENFONTS, CDC* pdcPrinter = NULL, CWnd* pParentWnd = NULL );

其他说明:参数一指向LPLOGFONT结构体的指针,允许你设置字体的特征。参数二设置选择字体的标记。参数三指向一个打印设备上下文的指针。参数四指向字体对话框的父窗口或者拥有者窗口的指针。

12.函数的功能:字体对话框的成员变量CFontDialog::m_cf,获取用户选择字体。

函数原型:

CFontDialog::m_cf

CHOOSEFONT m_cf;

其他说明:CHOOSEFONT结构体的成员变量lpLogFont指向逻辑字体LOGFONT的指针,逻辑字体结构体当中有个变量lfFaceName他指示了字体的名字。dlg.m_cf.lpLogFont就保存了用户选择的字体特征。

通过定义一个CFont的对象,然后调用CFont::CreateFontIndirect函数就可以获取用户选择的字体。

13.函数的功能:给定的一个LOGFONT结构体当中的特征来初始化一个CFont对象

函数原型:

CFont::CreateFontIndirect

BOOL CreateFontIndirect(const LOGFONT* lpLogFont );

其他说明:CFont的对象调用该函数。

14.函数的功能:当一个字体对象和一个字体资源关联起来时,这个字体对象要想关联其他字体资源时,要先切断释放先前的字体资源,才可以调用函数CFont::CreateFontIndirect再次关联一个字体资源。

函数原型:

CGdiObject::DeleteObject

BOOL DeleteObject( );

其他说明:CFont、CBrush、CBitmap、CPen都是从CGdiObject继承而来。

该函数从内存中释放CGdiObject对象的存储。

15.函数的功能:如何判断一个字体是否和一个资源对象想关联,用句柄来判断,CGdiObject 的成员CGdiObject::m_hObject保存了和我们类对象相关的资源对象的句

柄。

函数原型:

if(m_font.m_hObject)

m_font.DeleteObject();

其他说明:与上一个函数联合使用。

16.函数的功能:实现选项对话框和窗口类中的数据交换。

函数原型:

CWnd::UpdateData

BOOL UpdateData( BOOL bSaveAndValidate = TRUE );

其他说明:参数为TURE时,校验数据即编辑框的值传入成员变量。参数为FALSE时,初始化数据成员变量值传入编辑框。

如何改变对话框和控件的背景色,如何改变控件的文本颜色,对按钮控件的特殊处理。

WM_CtlColor消息:在对话框当中每一个控件的绘制都会发送一次WM_CtlColor消息。所以CWnd::OnCtlColor会被调用多次,其次每一个子控件被绘制时都会为其准备一个CDC* pDC和准备一个CWnd* pWnd指向这个子控件。

17.函数的功能:CWnd::OnCtlColor是用来响应WM_CtlColor消息的

函数原型:

CWnd::OnCtlColor

afx_msg HBRUSH OnCtlColor( CDC* pDC, CWnd* pWnd, UINT nCtlColor );

其他说明:返回值是一个画刷的句柄,这个句柄将被用来绘制控件的背景色。

当一个控件将要被绘制的时候,它都会发送一个消息给它们的父窗口这个父窗口通常都是一个对话框,父窗口准备一个pDC使用一个正确的颜色来绘制这个控件。

要改变一个文本的颜色,文本的DC调用SetTextColor成员函数。

pDC:指向显示上下文的指针。pWnd:指向请求颜色控件的指针。nCtlColor:包含一个参考值的一个值CTLCOLOR_BTN Button control,CTLCOLOR_DLG Dialog box,CTLCOLOR_EDIT Edit control,CTLCOLOR_LISTBOX List-box control,CTLCOLOR_MSGBOX Message box,CTLCOLOR_SCROLLBAR Scroll-bar control,CTLCOLOR_STATIC Static control。

在调用该函数的过程中,只要返回一个自己的想要颜色画刷对象或画刷句柄,就可以得到自己想要的背景色。

如果对话框是单行的编辑框,还需要调用函数CDC::SetBkColor (见本课程22),才可以得到编辑框的背景色。

18.函数的功能:画刷类的对象创建一种颜色的画刷

函数原型:

CBrush::CreateSolidBrush

BOOL CreateSolidBrush( COLORREF crColor );

其他说明:画刷类的对象才可以调用该函数。

19.函数的功能:返回对话框中子控件的ID号

函数原型:

CWnd::GetDlgCtrlID

int GetDlgCtrlID( ) const;

其他说明:该函数不仅可以返回对话框中子控件的ID号,还可以返回一个子窗口的ID号。

顶层窗口没有ID值,所以顶层窗口调用该函数返回值是无效的。所以它通常是获取一个子窗口的ID值。

20.函数的功能:设置一个文本的背景色

函数原型:

CDC::SetTextColor

virtual COLORREF SetTextColor( COLORREF crColor );

其他说明:一个DC才可以调用该函数。

21.函数的功能:将一个文字的背景色设为透明的,文字也有背景色

函数原型:

CDC::SetBkMode

int SetBkMode( int nBkMode );

其他说明:参数为OPAQUE表示不透明的,TRANSPARENT 表示透明的。

22.函数的功能:设置背景色(该函数的调用见17)

函数原型:

CDC::SetBkColor

virtual COLORREF SetBkColor( COLORREF crColor );

其他说明:无

改变按钮的背景色和按钮的文字背景色

23.函数的功能:

函数原型:

CButton::DrawItem

virtual void DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct );

其他说明:它是被框架调用。当一个自绘制的button可视表面发生改变的时候,框架要去调用DrawItem函数。

如何在窗口中显示一幅位图。

1、创建位图

CBitmap bitmap;

bitmap.LoadBitmap(IDB_BITMAP1);

2、创建兼容DC

CDC dcCompatible;

dcCompatible.CreateCompatibleDC(pDC);

3、将位图选到兼容DC中

dcCompatible.SelectObject(&bitmap);

4、将兼容DC中的位图贴到当前DC中。

pDC->BitBlt(rect.left,rect.top,rect.Width(),

rect.Height(),&dcCompatible,0,0,SRCCOPY);

24.函数的功能:创建兼容DC

函数原型:

CDC::CreateCompatibleDC

virtual BOOL CreateCompatibleDC( CDC* pDC );

其他说明:

25.函数的功能:拷贝一个位图从原设备上下文到当前设备上下文,按1比1的比例拷贝

函数原型:

CDC::BitBlt

BOOL BitBlt( int x, int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, int ySrc, DWORD dwRop );

其他说明:前2个参数为目的矩形左上角的x、y坐标。接下来的宽度和高度是指示目的矩形和原位图的宽度和高度。第5个参数指示将要被拷贝的设备上下文的指针。xSrc和ySrc指示原位图的x、y坐标。dwRop是指的拷贝的模式,可以选择SRCCOPY 等,选SRCCOPY 表示拷贝原位图到目的位图。

当窗口背景需要擦除时发送消息WM_ERASEBKGND

26.函数的功能:获取对话框客户区大小

函数原型:

CWnd::GetClientRect

void GetClientRect( LPRECT lpRect ) const;

其他说明:lpRect:指向 RECT 结构或接收客户端的 CRect 对象协调。

27.函数的功能:拷贝一个位图从原矩形到目的矩形,如果必要的情况下拉伸或者压缩这个位图来填充这个目的矩形。

函数原型:

CDC::StretchBlt

BOOL StretchBlt( int x, int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, int ySrc, int nSrcWidth, int nSrcHeight, DWORD dwRop );

其他说明:int x, int y, int nWidth, int nHeight是目的矩形,int xSrc, int ySrc, int nSrcWidth, int nSrcHeight原矩形。

28.函数的功能:得到位图的宽度和高度

函数原型:

CBitmap::GetBitmap

int GetBitmap( BITMAP* pBitMap );

其他说明:GetBitmap是用位图的信息来填充BITMAP结构体。有了BITMAP结构体,就得到了位图的宽度和高度。

BITMAP Structure

typedef struct tagBITMAP { /* bm */

int bmType;

int bmWidth;

int bmHeight;

int bmWidthBytes;

BYTE bmPlanes;

BYTE bmBitsPixel;

LPVOID bmBits;

} BITMAP;

视频

1.函数的功能:

函数原型:

其他说明:

2.函数的功能:

函数原型:

其他说明:

3.函数的功能:

函数原型:

其他说明:

4.函数的功能:

函数原型:

其他说明:

5.函数的功能:

函数原型:

其他说明:

6.函数的功能:

函数原型:

其他说明:

7.函数的功能:

函数原型:

其他说明:

8.函数的功能:

函数原型:

其他说明:

9.函数的功能:

函数原型:

其他说明:

10.函数的功能:

函数原型:

其他说明:

11.函数的功能:

函数原型:

其他说明:

12.函数的功能:

函数原型:

其他说明:

13.函数的功能:

函数原型:

其他说明:

14.函数的功能:

函数原型:

其他说明:

15.函数的功能:

函数原型:

其他说明:

16.函数的功能:

函数原型:

其他说明:

17.函数的功能:

函数原型:

其他说明:

18.函数的功能:

函数原型:

其他说明:

19.函数的功能:

函数原型:

其他说明:

20.函数的功能:

函数原型:

其他说明:

21.函数的功能:

函数原型:

其他说明:

22.函数的功能:

函数原型:

其他说明:

23.函数的功能:

函数原型:

其他说明:

24.函数的功能:

函数原型:

其他说明:

25.函数的功能:

函数原型:

其他说明:

26.函数的功能:

函数原型:

其他说明:

27.函数的功能:

函数原型:

其他说明:

28.函数的功能:

函数原型:

其他说明:

29.函数的功能:

函数原型:

其他说明:

30.函数的功能:

函数原型:

其他说明:

31.函数的功能:

函数原型:

其他说明:

32.函数的功能:

函数原型:

其他说明:

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务