返回信息流double r1;
BOOL Ctest1Dlg::OnMscomm1()
{
VARIANT variant_inp; //定义variant变量,用于存放接收到的数据
COleSafeArray safearray_inp; //定义safeassay变量
LONG len, k;//定义长整型变量
BYTE rxdata[2048]; //设置BYTE数组
CString strtemp; //定义字符串
//CString data;
switch (m_Comm1.get_CommEvent())
{
//case 1: // comEvSend发送数据
//break;
case 2 : // comEvReceive读取数据
// MessageBox(_T("读取数据事件"), _T("TRACE"), MB_OK);
variant_inp = m_Comm1.get_Input(); //读缓冲区
safearray_inp = variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
len = safearray_inp.GetOneDimSize(); //得到有效数据长度
str = "\0"; // 接受数据
for (k = 0; k<len; k++) {
safearray_inp.GetElement(&k, rxdata + k); //接受到的数据转换并放到BYTE型数组rxdata里 111111
BYTE bt = *(char*)(rxdata + k); //字符型 111111
strtemp.Format("%c", bt); //将字符送入临时变量strtemp存放,变为字符串string型 (%c单个字符转换为cstring)
str += strtemp;
}
r1 = atof(str.Mid(0, 6));
break;
}
UpdateData(FALSE);
}
void Ctest1Dlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
// Center icon in client rectangle
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;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialogEx::OnPaint();
//CDialog::UpdateWindow();
//ShowImage(TheImage, IDC_picture);
}
CDC *pDC = m_picture.GetWindowDC();
CWnd *pWnd = GetDlgItem(IDC_picture);
pWnd->Invalidate();
pWnd->UpdateWindow();
pDC->MoveTo(30, 10);
pDC->LineTo(30, 600);
pDC->LineTo(800, 600);
pDC->MoveTo(200, 300);
//pDC->LineTo(0,800);
double x,y;
x = r1 * 100+500;
y = r1 * 100+800;
//pDC->MoveTo(x, y);
pDC->LineTo(x, y);
ReleaseDC(pDC);
}
总的来说就是上面那个函数是串口通信,接收单片机发送过来的坐标数据。我想让下面的绘图函数根据上面函数里的坐标数据画出一条曲线出来。
想问一下,怎么才能让下面的Onpaint函数中的r1与上面那个函数里的r1一起改变?我把r1定义成全局变量这样可以吗?也就是说下面的函数怎么调用上面函数里的r1呀?求大神解答!
这是一条镜像帖。来源:北邮人论坛 / cpp / #95142同步于 2017/4/24
CPP机器人发帖
急!!求助大神关于MFC绘图中的参数传递问题
zhangzeyuan
2017/4/24镜像同步0 回复
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。