MyMFC(7-9)对话框 CProp3

// Prop3.cpp : 实现文件
//

#include "stdafx.h"
#include "MyMFC2-Dialog.h"
#include "Prop3.h"
#include "afxdialogex.h"


// CProp3 对话框

IMPLEMENT_DYNAMIC(CProp3, CPropertyPage)

CProp3::CProp3()
	: CPropertyPage(CProp3::IDD)
	, m_strSalary(_T(""))
{

}

CProp3::~CProp3()
{
}

void CProp3::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	DDX_CBString(pDX, IDC_COMBO1, m_strSalary);
}


BEGIN_MESSAGE_MAP(CProp3, CPropertyPage)
END_MESSAGE_MAP()


// CProp3 消息处理程序


BOOL CProp3::OnSetActive()
{
	// TODO:  在此添加专用代码和/或调用基类
	((CPropertySheet*)GetParent())->SetWizardButtons(PSWIZB_BACK | PSWIZB_FINISH);  //在第三个属性页上面“上一步”“完成”按钮可用


	return CPropertyPage::OnSetActive();
}

/*********************************************************************************************************************/
//向列表控件中添加文字
BOOL CProp3::OnInitDialog()
{
	CPropertyPage::OnInitDialog();

	// TODO:  在此添加额外的初始化
	((CComboBox*)GetDlgItem(IDC_COMBO1))->AddString(_T("5000元以下"));
	((CComboBox*)GetDlgItem(IDC_COMBO1))->AddString(_T("5000-7000元"));
	((CComboBox*)GetDlgItem(IDC_COMBO1))->AddString(_T("7000-9000元"));
	((CComboBox*)GetDlgItem(IDC_COMBO1))->AddString(_T("9000元以上"));
	((CComboBox*)GetDlgItem(IDC_COMBO1))->SetCurSel(2);  //SetCurSel函数的作用是:选择列表框中的一个字符串,并将其显示在该组合框的编辑框中
														 //参数为所排列的序号,从0开始
	//发现列表中的输出并不是按我们所写的顺序来输出的,把控件属性中的Sort设为FALSE即可



	return TRUE;  // return TRUE unless you set the focus to a control
	// 异常:  OCX 属性页应返回 FALSE
}

/**************************************************************************************************************************/
//点击“完成”按钮后,输出信息
BOOL CProp3::OnWizardFinish()
{
	// TODO:  在此添加专用代码和/或调用基类
	int index;
	index = ((CComboBox*)GetDlgItem(IDC_COMBO1))->GetCurSel();  //GetCurSel函数用来获得在第三个属性页的列表中所选择项的索引
	((CComboBox*)GetDlgItem(IDC_COMBO1))->GetLBText(index, m_strSalary);  //GetLBText函数用来获得对应索引号的选项的内容,第一个参数是由GetCurSel
																		  //函数得到的索引号,第二个参数是添加的成员变量用于保存选项的内容。类别是Value,类型是CString

	return CPropertyPage::OnWizardFinish();
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的 F16 飞机运动方程的 C++ 实现: ```cpp #include <iostream> #include <cmath> using namespace std; const double g = 9.81; // 重力加速度 const double rho = 1.225; // 空气密度 const double S = 27.87; // 翼面积 const double b = 9.14; // 翼展 const double cbar = 3.05; // 平均弦长 const double m = 9989.0; // 飞机质量 const double Ixx = 12873.0; // 滚转惯量矩 const double Iyy = 75673.0; // 俯仰惯量矩 const double Izz = 85552.0; // 偏航惯量矩 const double Ixz = 1331.0; // 横摆惯量矩 const double Sprop = 0.2027; // 推进器面积 const double Kmotor = 0.054; // 发动机常数 const double Tmax = 93800.0; // 最大推力 const double rprop = 0.5; // 推进器半径 const double Cd0 = 0.034; // 零升阻力系数 const double K = 0.055; // 升力斜率 const double Cdb = 0.8; // 机身阻力系数 const double Cdp = -0.07; // 拍翼阻力系数 const double Cdr = 0.01; // 舵偏转阻力系数 const double Cnda = -0.1; // 副翼升力斜率 const double Cndr = -0.027; // 方向舵升力斜率 const double Clp = -0.51; // 滚转阻尼导数 const double Clr = 0.28; // 偏航阻尼导数 const double Cmq = -0.03; // 俯仰阻尼导数 const double Cnr = -0.06; // 偏航自旋导数 const double Cnp = 0.022; // 滚转自旋导数 // 计算升力系数 double calcCL(double alpha) { return K * alpha; } // 计算阻力系数 double calcCD(double alpha, double beta) { double CD0 = pow(Cd0 + (K * alpha), 2) / (pi * S * b * cbar); double k = 1 / (pi * e * AR); double CL2 = pow(calcCL(alpha), 2); double beta2 = pow(beta, 2); return CD0 + k * CL2 + k * beta2; } int main() { double t = 0; // 时间 double dt = 0.1; // 时间步长 double x = 0; // x轴位置 double y = 0; // y轴位置 double z = 0; // z轴位置 double u = 100; // x轴速度 double v = 0; // y轴速度 double w = 0; // z轴速度 double phi = 0; // 滚转角 double theta = 0; // 俯仰角 double psi = 0; // 偏航角 double p = 0; // 滚转角速度 double q = 0; // 俯仰角速度 double r = 0; // 偏航角速度 double alpha = 0; // 迎角 double beta = 0; // 侧滑角 double T = 0; // 推力 double mu = 0; // 螺旋桨转速 double delta_e = 0; // 升降舵偏转角 double delta_a = 0; // 副翼偏转角 double delta_r = 0; // 方向舵偏转角 while (t < 100) { // 计算升力和阻力系数 double CL = calcCL(alpha); double CD = calcCD(alpha, beta); // 计算各个力和力矩 double L = 0.5 * rho * pow(u, 2) * S * CL; double D = 0.5 * rho * pow(u, 2) * S * CD; double Y = 0.5 * rho * pow(u, 2) * S * beta; double l = 0.5 * rho * pow(u, 2) * S * b * Cl; double m = 0.5 * rho * pow(u, 2) * S * cbar * Cm; double n = 0.5 * rho * pow(u, 2) * S * b * Cn; // 计算推力和推力力矩 T = Tmax * mu; double Qprop = 0.5 * rho * pow(u, 2) * Sprop * (Cprop + pow((1 - mu), 2)); // 计算升降舵、副翼和方向舵的效应 double delta_CLde = Clda * delta_e; double delta_CLda = Clda * delta_a; double delta_CDda = Cdb + pow((Cnda * delta_a), 2) / (pi * e * AR); double delta_Ydr = Cndr * delta_r; // 计算状态变量的变化率 double u_dot = r * v - q * w - g * sin(theta) + (1 / m) * (T - D - L); double v_dot = p * w - r * u + g * sin(phi) * cos(theta) - (1 / m) * Y; double w_dot = q * u - p * v + g * cos(phi) * cos(theta) - (1 / m) * (L + Qprop); double phi_dot = p + (sin(phi) * tan(theta)) * q + (cos(phi) * tan(theta)) * r; double theta_dot = cos(phi) * q - sin(phi) * r; double psi_dot = (sin(phi) / cos(theta)) * q + (cos(phi) / cos(theta)) * r; double p_dot = (Izz * l + Ixz * n) / (Ixx * Izz - pow(Ixz, 2)); double q_dot = (m * r - Ixx * p * r + Ixz * (p * p - r * r)) / Iyy; double r_dot = (Ixz * l + Ixx * n) / (Ixx * Izz - pow(Ixz, 2)); // 更新状态变量 u += u_dot * dt; v += v_dot * dt; w += w_dot * dt; phi += phi_dot * dt; theta += theta_dot * dt; psi += psi_dot * dt; p += p_dot * dt; q += q_dot * dt; r += r_dot * dt; alpha = atan2(w, u); beta = asin(v / sqrt(pow(u, 2) + pow(v, 2) + pow(w, 2))); delta_e = 0; // TODO: 根据控制输入计算升降舵偏转角 delta_a = 0; // TODO: 根据控制输入计算副翼偏转角 delta_r = 0; // TODO: 根据控制输入计算方向舵偏转角 // 更新时间 t += dt; } return 0; } ``` 需要注意的是,这只是一个简单的模型,实际的 F16 飞机运动方程要比这个复杂得多。此外,还需要根据实际情况调整各个参数的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值