1:atof 将字符串转化为 float,atoi 将字符串转化为 int 型。
2: 所有从 CWnd类派生的类都有 m_hWnd 句柄。
3:GetDC()与ReleaseDC()要成对使用,否则会内存泄漏。
HDC hDC = ::GetDC(m_hWnd);
::ReleaseDC(m_hWnd,hDC);
4: sprintf 格式化字符,其头文件为 stdio.h, 在 MFC 中格式化字符用 CString.Format
CHAR m_cg[1024];
sprintf( m_ cg, _T("Read : %s"), strCg );
CString msg;
msg.Format(_T("数目不能超过%d个!"), MAX_NUMBER);
5:
GetStockObject()
得到画笔、画刷、字体、调色板的句柄,使用时必须用类型转换。
(HBRUSH)GetStockObject( HOLLOW_BRUSH );
HFONT hFont = (HFONT)GetStockObject(DEFAULT_GUI_FONT);
6:什么是野指针?答:将指针指向的变量的内存释放后,此指针即变成野指针!如何避免
野指针?答:将此指针指向NULL 即可。p=NULL;
7:#include <xxx.h>与#include "xxx.h"的区别:<>不查找运行时目录, ""查找运行时目录!
8:如何防止类的重复定义?
#ifndef __Simple_Button_H__
#define __Simple_Button_H__
class CButton : public CLabel
{
public:
CButton(void);
virtual ~CButton(void);
};
#endif
9:消息响应
(1)头文件中
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
(2)cpp中
BEGIN_MESSAGE_MAP(CCusButton, CButton)
ON_WM_LBUTTONDOWN()
ON_WM_KEYDOWN()
END_MESSAGE_MAP()
void CCusButton::OnLButtonUp(UINT nFlags, CPoint point)
{
}
10:画线
void CReport::OnPaint()
{
CPaintDC dc( this );
CMemDC MemDC( &dc );
CPen penGrey( PS_SOLID, 2, RGB(201,201,201) );
CPen *pPenBak = MemDC.SelectObject( &penGrey );
MemDC.MoveTo( 1, 100); \\(x,y)
MemDC.LineTo( 1,200 );
MemDC.SelectObject( pPenBak );
}
11:动态创建菜单
(1)头文件
#define UI_IDM_UNKNOWN 0
#define UI_IDM_UNDO 1
#define UI_IDM_CUT 2
#define UI_IDM_COPY 3
(2)cpp
CMenu menu;
menu.CreatePopupMenu();
UINT nFalg = MF_STRING;
menu.AppendMenu( nFalg, UI_IDM_UNDO, L"撤销" );
menu.AppendMenu( nFalg, UI_IDM_CUT, L"剪切" );
menu.AppendMenu( nFalg, UI_IDM_COPY, L"拷贝" );
12:在窗口中贴图,4个步骤
1、创建位图
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1);
2、创建兼容 DC
CDC dcCompatible;
dcCompatible.CreateCompatibleDC(pDC);
3、将位图选到兼容 DC 中
dcCompatible.SelectObject(&bitmap);
4、将兼容 DC 中的位图贴到当前 DC 中。在 WM_EraseBkgnd()中调用,但不能再调用基类
的擦除背景函数。也可以在 OnDraw 函数中完成,但效率低,图像会闪烁,因为它先擦除背
景,慢。
pDC->BitBlt(rect.left,rect.top,rect.Width(),
rect.Height(),&dcCompatible,0,0,SRCCOPY);
13:
14:
15: