MFC入门操作

1.新建MFC文件

  1. 创建新项目,选择“MFC应用”
  2. 应用程序类型选“基于对话框”,点“完成”

2.显示界面

  1. 资源文件
  2. .rc文件
  3. Dialog文件下的_dialog文件

3.编辑框

        点右键属性可以看到名字,IDC_EDIT1

        给编辑框加变量:在头文件,Dlg.h,类定义中加

private:

CString str;

        变量关联编辑框,在源文件,Dlg.cpp文件中,在对话框定义的DoDataExchange中

DDX_Text(pDX,IDC_EDIT1,str);

        在其他函数中用编辑框中的数据,使用ss进行计算

double ss=_tstof(str);

将数据显示在编辑框中

str.Format(_T("%f"),ss);

4.按钮

双击按钮

UpdateData()代表更新编辑框中的内容,并赋给变量,TRUE代表取到这个值

UpdateData(TRUE);

给str的内容后面再加abc

str = str+_T(“abc”);

str = “ ”;//为空

更新关掉

UpdateData(FALSE);

5.删除

  1. .h文件中删除private和public文字框和按钮内容
  2. .cpp文件中按钮1按钮2的代码删掉
  3. BEGIN_MESSAGE_MAP中的ON_BN_CLICKED()删除
  4. DoDataExchange()中的DDX_Text()删掉

6.输出TXT文件

        以下代码写在.cpp文件的按键函数下

// 创建一个CStdioFile对象

      CString FileName = _T("D://AAAA.txt");//文件路径

      CStdioFile fileWrite;

      if (!fileWrite.Open(FileName, CFile::modeWrite | CFile::modeCreate))

      {

             AfxMessageBox(_T("无法打开文件"));

             return;

      }

      //实现功能

      fileWrite.WriteString(VMmin);//VMmin变量是CString类型

      fileWrite.Write(&Space, sizeof(Space));//Space是char类型

      fileWrite.WriteString(VMmax);

      // 关闭文件

      fileWrite.Close();

7.CString数据类型与int、double等数据类型转换

CString数据类型转为int、double等

CString str;
int a;
a=_ttol(str);//int类型


CString strValue = _T("123.45");
double doubleValue = _tstof(strValue);
// 或者使用 _tcstod 函数,它更安全,因为它允许指定转换结束的位置
double doubleValue = _tcstod(strValue, nullptr);

int、double等转化为CString数据类型

CString str;

int a;

str.Format(_T(“%d”),a);
//str.Format(_T(“%f”),a);

8.图像添加

  1. 向界面添加Picture control控件
  2. 在资源视图,右键添加资源,选择Bitmap导入图片
  3. 将picture control控件的类型改为Bitmap,图像选择之前导入的图片ID

9.菜单添加

资源视图,.rc文件右键添加资源,选择Menu,新建

对菜单进行编辑

在Dialog这里,右键属性,在菜单选中刚才编辑的Memu

10.更改控件的大小

在.cpp文件中,OnInitDialog()函数下

CWnd* pWnd;

pWnd=GetDlgItem(控件ID);

pWnd->SetWindowPos(NULL,0,0,800,800,SWP_NOZORDER|SWP_NOMOVE);//800指像素大小

11.类

在解决方案资源管理器中点文件名右键,添加,类

12.设置图片位置和大小

  1. 选择控件,右键添加变量,设置变量名称,如ourplane
  2. 在.cpp文件下的OnInitDialog()函数下
OurPlane.SetWindowPos(nullptr,100,150,30,30,SWP_NOZORDER);//控件位于(100,150)像素,大小30×30像素

13.图片移动(定时器)

在Dlg.h文件的public中定义图片位置坐标

 int Our_x = 100;

 int Our_y = 200;

双击开始按键,跳到.cpp文件中

void CMFCAttackZone1Dlg::OnBnClickedButtonSta()

{

      //启动ID为1的定时器,定时时间为1秒

      SetTimer(1, 1000, NULL);//1000代表1000毫秒,1代表ID

}

双击暂停按键,跳到.cpp文件中

void CMFCAttackZone1Dlg::OnBnClickedButtonStop()

{

      KillTimer(1);//1代表计时器ID

}

设置图片控件变量,右键点击图片控件,选择添加变量,为其命名OurPlane

对话框右键添加类向导,选择消息,在列表内找到WM_TIMER双击添加,在.cpp文件中的OnTimer()函数下

   if (nIDEvent == 1)

      {

             Our_x = Our_x + 10;//我方移动速度

             if (Our_x > 400)//移动范围

             {

                    Our_x = 100;

             }

             OurPlane.SetWindowPos(nullptr, Our_x, 200, 30, 30, SWP_NOZORDER);//重新绘制图片

      }

14.图形绘制

             在.cpp文件的OnPaint()函数的else里,注意把CDialogEx::OnPaint();删除

//定义dc

CPaintDC dc(this);

//创建一个画笔和画刷

              CPen pen(PS_SOLID,2,RGB(0,255,0));//创建一个绿色画笔,宽度为2,用于画线

              CBrush brush(RGB(255,0,0));//创建一个红色画刷,用于填充

              // 选择画笔和画刷到设备上下文中

              dc.SelectObject(&pen);

              dc.SelectObject(&brush);

              // 假设圆心坐标是 CPoint center(xCenter, yCenter)

              CPoint center(Our_x, Our_y); // 这里的 Our_x 和 Our_y 是圆心的横纵坐标

              int radius = 20;     // 圆的半径

              // 计算边界框的坐标

              int left = center.x - radius;   // 圆左边界x坐标

              int top = center.y - radius;    // 圆上边界y坐标

              int right = center.x + radius;  // 圆右边界x坐标

              int bottom = center.y + radius; // 圆下边界y坐标

              // 绘制圆

              dc.Ellipse(left, top, right, bottom);

如果需要绘制第二个圆,在后面继续写

              dc.SelectObject(&pen);

              dc.SelectObject(&brush);

dc.Ellipse(left, top, right, bottom);

在做动画需要不断刷新窗口时,需要在.cpp文件中的OnTimer()函数下

InvalidateRect(nullptr); // 通知窗口重绘

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值