在实践中学到的MFC一些常用的实现方法

在实践中学到的一些MFC常用的实现方法

//该文章用于记录作者学习中克服的一些问题以及解决方案

由于MFC中使用CString,在介绍一些界面操作的实现方法之前,首先提供一些CString的处理方法

1 定义CString时初始化

CString cstr=_T("abc");

2 string转CString

CString cstr;
string str="abcd";
cstr=str.c_str();

3 int转CString

CString cstr;
int n=0;
cstr.Format(_T("%d"), n);    //同理,浮点数类型的将%d改为%f

4 CString转string

CString cstr=_T("abc");
string str;
CT2A cc(file1);
str = cc;

5 CString转int

CString cstr=_T("0");
CString ccstr;
int n;
ccstr = CT2A(cstr);
n = _ttoi(ccstr);

有了这些转换方式,下面我来总结一下我在学习中常用到的MFC操作的实现方法

1.获取Edit Control里的信息

    CString cstr;
    CEdit* pBoxOne;
	pBoxOne = (CEdit*)GetDlgItem(IDC_EDIT1);    //IDC_EDIT1为控件的ID
	pBoxOne->GetWindowText(cstr);

2.向List Box里填写信息

    CListBox *cList = (CListBox *)GetDlgItem(IDC_LIST1);    //IDC_EDIT1为控件的ID
	CString cstr= _T(“abc”);
	cList->AddString(str);

3.设置控件可见与隐藏

    CEdit *edit = (CEdit*)GetDlgItem(IDC_LIST1);    //IDC_EDIT1为控件的ID
	edit->ShowWindow(TRUE);    //FALSE

4.设置控件位置与大小

    CWnd *pWnd;
	pWnd = GetDlgItem(IDC_LIST1);    //获取控件指针,IDC_LIST1为控件ID号  
	pWnd->SetWindowPos(NULL, X, Y, x, y, SWP_NOZORDER | SWP_NOSIZE);    // X,:横向位置  Y:纵向位置 x:控件长度 y:控件宽度

5.在Group Box里画斜线

    CRect r;
	GetDlgItem(IDC_STATIC)->GetWindowRect(&r);
	POINT pt1, pt2;
	pt1.x = r.left +x1;    //x1:点1的x坐标
	pt1.y = r.top +y1;    //y1:点1的y坐标
	pt2.x = r.left + x2;    //x2:点2的x坐标
	pt2.y = r.top + y2;    //y2:点2的y坐标
	ScreenToClient(&pt1);
	ScreenToClient(&pt2);

	CPen pen(PS_SOLID, 3, RGB(100, 100, 100));     //RGB调颜色
	CPen* pOldPen;
	CDC *dc = GetDC();
	pOldPen = dc->SelectObject(&pen);

	dc->MoveTo(pt1);
	dc->LineTo(pt2);
	dc->SelectObject(&pOldPen);

//附带一个RGB调色网址:http://tool.oschina.net/commons?type=3

6.显示弹窗

    CString test = _T("标题");
	CString message = _T("内容");
	::MessageBox(NULL, message, test, MB_ICONASTERISK | MB_TASKMODAL | MB_OK);

.在这里插入(展示)图片描述
7.对话框背景贴图
将OnPaint函数下的else中改为:

    CPaintDC   dc(this);
	CRect   rect;
	GetClientRect(&rect);    //获取对话框长宽      
	CDC   dcBmp;             //定义并创建一个内存设备环境
	dcBmp.CreateCompatibleDC(&dc);             //创建兼容性DC
	CBitmap   bmpBackground;
	bmpBackground.LoadBitmap(IDB_BITMAP1);    //载入资源中图片,IDB_BITMAP1为ID
	BITMAP   m_bitmap;                         //图片变量               
	bmpBackground.GetBitmap(&m_bitmap);       //将图片载入位图中
	//将位图选入临时内存设备环境
	CBitmap  *pbmpOld = dcBmp.SelectObject(&bmpBackground);
	//调用函数显示图片StretchBlt显示形状可变
	dc.StretchBlt(0, 0, rect.Width(), rect.Height(), &dcBmp, 0, 0, m_bitmap.bmWidth, m_bitmap.bmHeight, SRCCOPY);

如有错误,希望指出。在今后的学习里,我会做更多补充。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值