高手,我觉得可能是你说的这个原因,下面三个函数是strip_chart控件里面带的event.项目要求必须要用非模态,请问应该怎么解决这个问题呢void CDisplayDlg::OnMouseDownStripctrl1(short Button, short Shift, long X, long Y) {
}void CDisplayDlg::OnMouseUpStripctrl1(short Button, short Shift, long X, long Y) { x_end=strip_chart->GetCursorX(); y_start=strip_chart->GetCursorY(); CString str; str.Format("%d",x_end);
pDlg->Create(IDD_DISPLAYDLG,this);
pDlg->ShowWindow(SW_SHOW);
// CDisplayDlg myCDlg;
// myCDlg.DoModal();其他的都没改,只是把下面注释的代码换成上面生成非模态对话框的代码,空间可以显示,但是不能拖动。
鼠标左键摁下响应函数第一句就说出错了
x_start=strip_chart->GetCursorX();//用来获得空间中cursor坐标
y_end=strip_chart->GetCursorY();
在线等,高手请帮忙
{
x_start=strip_chart->GetCursorX();
y_end=strip_chart->GetCursorY();
CString str;
str.Format("%d",x_start);
str.Format("%d",y_end);
}void CDisplayDlg::OnMouseMoveStripctrl1(short Button, short Shift, long X, long Y)
{
if(x_start!=-10000)
{
strip_chart->ClearVariable(1);//四条虚线每次画之前必须清除
strip_chart->ClearVariable(6);
strip_chart->ClearVariable(3);
strip_chart->ClearVariable(4);
x_mov=strip_chart->GetCursorX();
y_mov=strip_chart->GetCursorY();
strip_chart->SetVariableID(3);
strip_chart->SetVariableColor(10109999);
strip_chart->AddXY(3,x_start,y_end);
strip_chart->AddXY(3,x_mov,y_end);
strip_chart->SetVariableLineStyle(2);/////虚线
/////////////////////////////////////////////////////////////////////////////////
strip_chart->SetVariableID(4);
strip_chart->SetVariableColor(10109999);
strip_chart->AddXY(4,x_start,y_end);
strip_chart->AddXY(4,x_start,y_mov);
strip_chart->SetVariableLineStyle(2);
strip_chart->SetVariableID(1);
strip_chart->SetVariableColor(10109999);
strip_chart->AddXY(1,x_start,y_mov);
strip_chart->AddXY(1,x_mov,y_mov);
strip_chart->SetVariableLineStyle(2);/////虚线
strip_chart->SetVariableID(6);
strip_chart->SetVariableColor(10109999);
strip_chart->AddXY(6,x_mov,y_end);
strip_chart->AddXY(6,x_mov,y_mov);
strip_chart->SetVariableLineStyle(2);/////虚线
}
}void CDisplayDlg::OnMouseUpStripctrl1(short Button, short Shift, long X, long Y)
{
x_end=strip_chart->GetCursorX();
y_start=strip_chart->GetCursorY();
CString str;
str.Format("%d",x_end);
str.Format("%d",y_start);
strip_chart->SetLastX(x_end);
strip_chart->SetXSpan(x_end-x_start);
strip_chart->SetTrackDisplayMax(y_end);
strip_chart->SetTrackDisplayMin(y_start);
x_start=-10000;
}
建立个默认的消息循环试试:
要不这样,你重载下那个非模式对话框的类的PreTranslateMessage函数试试,为那几个消息添加空的处理让系统接管看行不行