文档库 最新最全的文档下载
当前位置:文档库 › vc笔记 (1)

vc笔记 (1)

vc笔记 (1)
vc笔记 (1)

设置背景色

重载OnPaint(),即WM_PAINT消息。有关代码如下(以上例工程为准):

void CExampleDlgDlg::OnPaint()

{

if (IsIconic())

else

{

CRect rect;

CPaintDC dc(this);

GetClientRect(rect);

dc.FillSolidRect(rect,RGB(0,255,0)); //设置为绿色背景

// 这里还可以用moveto 和lineto 来给不同的区域画上不同的颜色

CDialog::OnPaint();

}

MFC添加位图按钮

方法1(加载资源图片):

O nInitDialog() 函数中添加

HINSTANCE hInstance;

HBITMAP hBitmap;

hInstance = ::AfxGetInstanceHandle();

hBitmap = ::LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_BITMAP1) ); //IDB_BITMAP1为添加图片资源ID

m_button1.SetBitmap(hBitmap);

方法2(加载非资源图片):

1.HBITMAP hBitmap;

2.hBitmap = (HBITMAP)::LoadImage(

3.NULL,

4."E://a.bmp", // 图片全路径

5.IMAGE_BITMAP, // 图片格式

6.0,0,

7.LR_LOADFROMFILE|LR_CREATEDIBSECTION);

MFC添加图标按钮

1.打开ICON按钮的属性页,在Style中选中Icon 。

2.ClassWizard加入这个成员变量: CButton m_ IconBtn;//对应于图标按钮

3.创建相应的图标或者位图资源:图标资源:IDI_ICONBUTTON

4.在初始化中加入如下代码:

//对应于图标按钮图标必须是.ico格式的

HICON hIcon=AfxGetApp()->LoadIcon(IDI_ICONBUTTON);

m_IconBtn.SetIcon(hIcon);

资源ID出错,显示未定义

在出错的文件开头加一句:#include "resource.h"

不能将参数 1 从“const char [9]”转换为“LPCTSTR”

错误 2 error C2664: “CButton::Create”: 不能将参数1 从“const char [9]”转换为“LPCTSTR”

c:\users\hust\documents\visual studio 2010\projects\game\game\gameview.cpp 117 1 Game

解决方法:

Windows使用两种字符集ANSI和UNICODE,前者就是通常使用的单字节方式,但这种方式处理象中文这样的双字节字符不方便,容易出现半个汉字的情况。而后者是双字节方式,方便处理双字节字符。Windows NT的所有与字符有关的函数都提供两种方式的版本,而Windows 9x只支持ANSI方式。_T一般同字常数相关,如_T("Hello")。如果你编译一个程序为ANSI方式,_T实际不起任何作用。而如果编译一个程序为UNICODE方式,则编译器会把"Hello"字符串以UNICODE方式保存。_T和_L的区别在于,_L不管你是以什么方式编译,一律以以UNICODE方式保存。

p_MyBut->Create("打开文件"),

WS_CHILD | WS_VISIBLE | WS_BORDER,

CRect(40,10,200,60),

this,

IDB_BTN);

改成:

p_MyBut->Create(_T("打开文件"),

WS_CHILD | WS_VISIBLE | WS_BORDER,

CRect(40,10,200,60),

this,

IDB_BTN);

警告框

void CGameView::OnClickButton()

{

if (MessageBox(_T("确定退出系统吗?"),_T("提示"),MB_YESNO | MB_DEFBUTTON2) == IDYES) {

//获取当前主?窗口的句柄,向主窗口发送aWM_CLOSE消息

::PostMessage(AfxGetMainWnd()->GetSafeHwnd(),WM_CLOSE,0,0);

}

//AfxMessageBox(_T("按钮被点到了!"));

//AfxMessageBox(_T("Are you sure?"),MB_YESNO|MB_ICONQUESTION); yes/no按钮,

}

改变窗口标题

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)

{

if( !CFrameWndEx::PreCreateWindow(cs) )

return FALSE;

cs.style=WS_OVERLAPPEDWINDOW;//改变窗口标题的必要步

cs.lpszName=_T("比他帅");//改变窗口标题

return TRUE;

}

单文档创建ID时:

在资源视图中的String T able 中双击String T able ,在弹出的框中下拉至底,双击空白处新增

不同种类的控件应创建不同的类对象:

·按钮控件CButton (包括普通按钮、单选按钮和复选按钮)

·编辑控件CEdit

·静态文本控件CStatic

·标签控件CTabCtrl

·旋转控件CSpinButtonCtrl

·滑标控件CSliderCtrl

·多信息编辑控件CRichEditCtrl

·进度条控件CProgressCtrl

·滚动条控件CSrcollBar

·组合框控件CComboBox

·列表框控件CListBox

·图像列表控件CImageCtrl

·树状控件CTreeCtrl

·动画控件CAnimateCtrl

点击按钮切换对话框

要声明该对话框的局部变量

void StartGame::OnBnClickedButton1()

{

UpdateData(true) ;

CRunSquareDlg mCRunSquareDlg;//被调用类的对象

mCRunSquareDlg.DoModal();

UpdateData(false);

}

MFC 点击按钮显示和隐藏对话框

例子为非模态对话框,ID为ID_MODELESS,为其创建一个类:CModelessDlg

在父对话框(ID_FIRSTUI)的相应按钮写上事件(以IDCANCEL为例):

复制代码

void CFirstUIDlg::OnBnClickedCancel()

{

if (pDlg == NULL) // pDLG在父对话框的头文件中定义CModeless *pDlg;

{

// 指针为空则创建非模态对话框并显示

pDlg = new CModelessDlg;

pDlg->Create(IDD_MODELESS, this);

pDlg->ShowWindow(SW_SHOW);

}

else

{

// 判断对话框可见状态,可见点击后隐藏,隐藏则点击可见

BOOL bVisible = pDlg->IsWindowVisible(); //使用IsWindowVisible()时,需要指明对象。否则会导致指向当前对话框。

int nCmdShow = bVisible ? SW_HIDE : SW_SHOW;

pDlg->ShowWindow(nCmdShow);

}

}

void CRunSquareDlg::OnBnClickedButton1()

{ /* 显示模式对话框:

UpdateData(true) ;

StartGame mStartGame;

mStartGame.DoModal();

UpdateData(false);*/

//显示非模式对话框

StartGame *pDlg=NULL;

pDlg = new StartGame;

pDlg->Create(IDD_DIALOG1, this);

pDlg->ShowWindow(SW_SHOW);

}

类的继承方式

如class Student : public Person() {}

则父类Person中的成员变量,成员函数继承到Student后public的仍为public,private的仍为private,protected的仍为protected

而class Student : private Person() {}

则父类Person中的成员变量,成员函数继承到Student后,全部变为private

相关文档