mfc交通信号灯代码
时间: 2023-07-02 20:18:32 浏览: 220
以下是一个简单的 MFC 交通信号灯控制的示例代码:
首先,在你的 MFC 应用程序中创建一个对话框,然后在对话框上添加三个按钮分别代表红灯、黄灯和绿灯。在对话框上添加一个静态文本框用于显示当前灯的状态。
在对话框的头文件中添加以下变量和函数声明:
```cpp
// TrafficLightDlg.h
// 灯的状态枚举类型
enum TrafficLightState
{
RED,
YELLOW,
GREEN
};
// 对话框类
class CTrafficLightDlg : public CDialogEx
{
...
private:
TrafficLightState m_state; // 当前灯的状态
CStatic m_lightCtrl; // 显示灯的静态文本框
// 控制灯的函数
void SetLight(TrafficLightState state);
};
```
在对话框的源文件中实现 `SetLight` 函数:
```cpp
// TrafficLightDlg.cpp
void CTrafficLightDlg::SetLight(TrafficLightState state)
{
// 根据状态设置不同的灯颜色
switch (state)
{
case RED:
m_lightCtrl.SetBackColor(RGB(255, 0, 0)); // 红灯
break;
case YELLOW:
m_lightCtrl.SetBackColor(RGB(255, 255, 0)); // 黄灯
break;
case GREEN:
m_lightCtrl.SetBackColor(RGB(0, 255, 0)); // 绿灯
break;
}
// 保存当前状态
m_state = state;
}
```
在对话框的消息映射中,添加按钮的响应函数,控制灯的状态:
```cpp
// TrafficLightDlg.cpp
BEGIN_MESSAGE_MAP(CTrafficLightDlg, CDialogEx)
...
ON_BN_CLICKED(IDC_RED_BUTTON, &CTrafficLightDlg::OnRedButtonClicked)
ON_BN_CLICKED(IDC_YELLOW_BUTTON, &CTrafficLightDlg::OnYellowButtonClicked)
ON_BN_CLICKED(IDC_GREEN_BUTTON, &CTrafficLightDlg::OnGreenButtonClicked)
END_MESSAGE_MAP()
void CTrafficLightDlg::OnRedButtonClicked()
{
SetLight(RED); // 控制红灯
}
void CTrafficLightDlg::OnYellowButtonClicked()
{
SetLight(YELLOW); // 控制黄灯
}
void CTrafficLightDlg::OnGreenButtonClicked()
{
SetLight(GREEN); // 控制绿灯
}
```
最后,在对话框的 `OnInitDialog` 函数中初始化灯的状态:
```cpp
// TrafficLightDlg.cpp
BOOL CTrafficLightDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 初始化灯的状态为红灯
SetLight(RED);
return TRUE;
}
```
这样,当用户单击不同的按钮时,灯的状态会发生变化,对应的颜色也会随之改变。
阅读全文