在实践中学到的一些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);
如有错误,希望指出。在今后的学习里,我会做更多补充。