首先说明一点,onpaint 是更新面板用的,作图的话应在控件上进行。
新建 MFC 对话框工程,面板上添加按钮 IDC_START , IDC_SHOW , IDC_STOP
添加两个对话框,ID 分别设为(简写)ld 和 cd。
ld 上添加三个图片控件,并且每一个均关联一个 CSTATIC 型变量。
cd 上添加一个图片控件,操作如上。
分别为两个对话框添加类,名称自己设,我的是 CLineDlg 和 CCompDlg .
主对话框头文件中包含两个类的头文件。
添加声明:
CLineDlg * line_dlg;
CCompDlg * comp_dlg;
模态对话框生成:
<pre name="code" class="cpp">line_dlg = new CLineDlg;
line_dlg->Create(IDD_LINE_DIALOG, this);
comp_dlg = new CCompDlg;
comp_dlg->Create(IDD_COMP_DIALOG, this);
START 按钮响应函数:
void CDrawDlg::OnBnClickedBtStart()
{
// TODO: 在此添加控件通知处理程序代码
srand((unsigned)time(NULL));
SetTimer(1, 100, NULL);
}
SHOW 按钮响应函数
void CDrawDlg::OnBnClickedBtShow()
{
// TODO: 在此添加控件通知处理程序代码
line_dlg->ShowWindow(SW_SHOW);
comp_dlg->ShowWindow(SW_SHOW);
}
STOP 按钮响应函数:
void CDrawDlg::OnBnClickedBtStop()
{
// TODO: 在此添加控件通知处理程序代码
KillTimer(1);
}
定时器响应函数:
void CDrawDlg::OnTimer(UINT_PTR nIDEvent)
{
double k = rand() % 60 / 1.0;
line_dlg->DrawLine1(k);
k = rand() % 40 / 1.0;
line_dlg->DrawLine2(k);
k = rand() % 20 / 1.0;
line_dlg->DrawLine3(k);
double c1 = rand() % 30 / 1.0 + 30;
double c2 = rand() % 30 / 1.0;
comp_dlg->CompLine(c1, c2);
}
LineDlg.h 中添加定义:
public:
afx_msg void DrawWave(CDC *pDC, CRect &rectPicture, in