AfxMessageBox(str, 1, 0) == IDOK
时间: 2023-08-19 15:05:44 浏览: 130
AfxMessageBox(str, 1, 0) 语句的返回值是用户按下的按钮的标识符,如果用户按下了 OK 按钮,则返回值为 IDOK。因此,可以使用以下代码来判断用户是否按下了 OK 按钮:
```
if (AfxMessageBox(str, 1, 0) == IDOK)
{
// 用户按下了 OK 按钮
}
```
其中,str 是要显示的消息文本。第二个参数 1 表示消息对话框只有一个 OK 按钮,第三个参数 0 表示消息对话框的图标为普通信息图标。
相关问题
c++语言,在mfc模板上编写一个程序。程序界面分为三部分,上部分输出一句话:彩票摇号器,中间部分是由36个复选框,复选框上的值是1到36,必须被选择七个复选框,下部分是有一个按钮,点击按钮后会检测是否复选框是被选择七个,如果选择多或者少都要报错,如果选择正确,就跳到下个窗口,下个窗口随机生成七组数字并在窗口上输出,这七组数字与你上个界面的被选择复选框的七组数字做对比,如果相同,则在界面上输出恭喜你,中奖了,如果不同,则在界面上输出再接再励,界面上也有一个按钮,按钮上的文字是重试,如果点击这个按钮就返回到第一个界面。写出代码
以下是一个简单的实现,仅供参考。
首先,在Visual Studio中创建一个MFC应用程序,选择对话框模板。
然后,在资源视图中打开对话框,添加一个静态文本框、36个复选框和一个按钮。在属性视图中设置它们的属性。
在对话框类的头文件中添加以下代码:
```cpp
// 定义复选框数量和选中的复选框数量
#define CHECKBOX_NUM 36
#define SELECTED_NUM 7
class CLotteryDlg : public CDialogEx
{
public:
CLotteryDlg(CWnd* pParent = nullptr);
// 对话框数据
#ifdef AFX_DESIGN_TIME
enum { IDD = IDD_LOTTERY_DIALOG };
#endif
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
// 生成的消息映射函数
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
DECLARE_MESSAGE_MAP()
private:
// 复选框数组
CButton m_checkBoxes[CHECKBOX_NUM];
// 选中的复选框数量
int m_selectedNum;
// 按钮
CButton m_button;
};
```
在对话框类的源文件中添加以下代码:
```cpp
BOOL CLotteryDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 初始化复选框数组
for (int i = 0; i < CHECKBOX_NUM; i++)
{
CString str;
str.Format(_T("%d"), i + 1);
m_checkBoxes[i].Create(str, WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX,
CRect(30 + (i % 6) * 50, 60 + (i / 6) * 30, 70 + (i % 6) * 50, 90 + (i / 6) * 30), this, i + 1000);
}
// 初始化按钮
m_button.Create(_T("摇号"), WS_CHILD | WS_VISIBLE, CRect(130, 250, 230, 280), this, IDC_BUTTON);
// 初始化选中的复选框数量
m_selectedNum = 0;
return TRUE;
}
void CLotteryDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CLotteryDlg, CDialogEx)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON, &CLotteryDlg::OnBnClickedButton)
END_MESSAGE_MAP()
void CLotteryDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 用于绘制的设备上下文
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
// 将图标居中
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// 绘制图标
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialogEx::OnPaint();
}
}
HCURSOR CLotteryDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}
void CLotteryDlg::OnBnClickedButton()
{
// 统计选中的复选框数量
m_selectedNum = 0;
for (int i = 0; i < CHECKBOX_NUM; i++)
{
if (m_checkBoxes[i].GetCheck() == BST_CHECKED)
{
m_selectedNum++;
}
}
// 判断选中的复选框数量是否为7
if (m_selectedNum != SELECTED_NUM)
{
AfxMessageBox(_T("请选择7个号码"));
}
else
{
// 打开中奖结果对话框
CResultDlg dlg;
dlg.DoModal();
}
}
```
接下来,创建一个新的对话框类,用于显示中奖结果。在资源视图中添加一个静态文本框和一个按钮。在属性视图中设置它们的属性。
在对话框类的头文件中添加以下代码:
```cpp
class CResultDlg : public CDialogEx
{
public:
CResultDlg(CWnd* pParent = nullptr);
// 对话框数据
#ifdef AFX_DESIGN_TIME
enum { IDD = IDD_RESULT_DIALOG };
#endif
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
// 生成的消息映射函数
virtual BOOL OnInitDialog();
DECLARE_MESSAGE_MAP()
private:
// 随机数数组
int m_numbers[SELECTED_NUM];
// 复选框数组
CButton m_checkBoxes[CHECKBOX_NUM];
// 按钮
CButton m_button;
};
```
在对话框类的源文件中添加以下代码:
```cpp
BOOL CResultDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 初始化复选框数组
for (int i = 0; i < CHECKBOX_NUM; i++)
{
CString str;
str.Format(_T("%d"), i + 1);
m_checkBoxes[i].Create(str, WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX,
CRect(30 + (i % 6) * 50, 60 + (i / 6) * 30, 70 + (i % 6) * 50, 90 + (i / 6) * 30), this, i + 1000);
m_checkBoxes[i].EnableWindow(FALSE);
}
// 初始化按钮
m_button.Create(_T("重试"), WS_CHILD | WS_VISIBLE, CRect(130, 250, 230, 280), this, IDC_BUTTON);
// 生成随机数
srand((unsigned)time(NULL));
for (int i = 0; i < SELECTED_NUM; i++)
{
m_numbers[i] = rand() % 36 + 1;
}
// 显示随机数
CString strNumbers;
for (int i = 0; i < SELECTED_NUM; i++)
{
strNumbers.AppendFormat(_T("%d "), m_numbers[i]);
}
SetDlgItemText(IDC_STATIC_NUMBERS, strNumbers);
return TRUE;
}
void CResultDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
// DDX函数不需要处理随机数数组和按钮
for (int i = 0; i < CHECKBOX_NUM; i++)
{
DDX_Control(pDX, i + 1000, m_checkBoxes[i]);
}
}
BEGIN_MESSAGE_MAP(CResultDlg, CDialogEx)
ON_BN_CLICKED(IDC_BUTTON, &CResultDlg::OnBnClickedButton)
END_MESSAGE_MAP()
void CResultDlg::OnBnClickedButton()
{
// 关闭当前对话框
EndDialog(IDOK);
}
```
最后,在对话框类的头文件中添加以下宏定义:
```cpp
#define IDC_BUTTON 1000
#define SELECTED_NUM 7
```
现在,整个程序就完成了。您可以编译并运行它,测试它是否符合您的要求。
阅读全文