这是ondraw函数里的内容
HDC hDc;
hDc =::GetDC(m_hWnd);
int X1,X2,Y1,Y2;
CDlgMd mDlg;
X1 = mDlg.x1;
Y1 = mDlg.y1;
X2 = mDlg.x2;
Y2 = mDlg.y2;
float increx,increy;
int step,i;
if(abs(X2-X1) > abs(Y2-Y1))
step = abs(X2-X1);
else
step = abs(Y2-Y1);
increx = (float)(X2-X1)/step;
increy = (float)(Y2-Y1)/step;
m_ptOrigin.x = X1;
m_ptOrigin.y = Y1;
for(i=1;i<step;i++)
{
SetPixel(hDc,int(m_ptOrigin.x+0.5),int(m_ptOrigin.y+0.5),RGB(255,0,0));
m_ptOrigin.x = m_ptOrigin.x + increx;
m_ptOrigin.y = m_ptOrigin.y + increy;
}
::ReleaseDC(m_hWnd,hDc);
这是对话框里的内容
UpdateData(TRUE);
CString str1,str2,str3,str4;
GetDlgItemText(IDC_EDIT1,str1);
GetDlgItemText(IDC_EDIT2,str2);
GetDlgItemText(IDC_EDIT3,str3);
GetDlgItemText(IDC_EDIT4,str3);
CDlgMd mDlg;
//int x1,x2,y1,y2
mDlg.x1 = _ttoi(str1);
mDlg.y1 = _ttoi(str2);
mDlg.x2 = _ttoi(str3);
mDlg.y2 = _ttoi(str4);
OnOK();
Invalidate();
我是想通过点击OK,在主界面用DDA算法画一条直线。但是点了OK,什么反应也没有
HDC hDc;
hDc =::GetDC(m_hWnd);
int X1,X2,Y1,Y2;
CDlgMd mDlg;
X1 = mDlg.x1;
Y1 = mDlg.y1;
X2 = mDlg.x2;
Y2 = mDlg.y2;
float increx,increy;
int step,i;
if(abs(X2-X1) > abs(Y2-Y1))
step = abs(X2-X1);
else
step = abs(Y2-Y1);
increx = (float)(X2-X1)/step;
increy = (float)(Y2-Y1)/step;
m_ptOrigin.x = X1;
m_ptOrigin.y = Y1;
for(i=1;i<step;i++)
{
SetPixel(hDc,int(m_ptOrigin.x+0.5),int(m_ptOrigin.y+0.5),RGB(255,0,0));
m_ptOrigin.x = m_ptOrigin.x + increx;
m_ptOrigin.y = m_ptOrigin.y + increy;
}
::ReleaseDC(m_hWnd,hDc);
这是对话框里的内容
UpdateData(TRUE);
CString str1,str2,str3,str4;
GetDlgItemText(IDC_EDIT1,str1);
GetDlgItemText(IDC_EDIT2,str2);
GetDlgItemText(IDC_EDIT3,str3);
GetDlgItemText(IDC_EDIT4,str3);
CDlgMd mDlg;
//int x1,x2,y1,y2
mDlg.x1 = _ttoi(str1);
mDlg.y1 = _ttoi(str2);
mDlg.x2 = _ttoi(str3);
mDlg.y2 = _ttoi(str4);
OnOK();
Invalidate();
我是想通过点击OK,在主界面用DDA算法画一条直线。但是点了OK,什么反应也没有
view区域 ? 哪里?
对话框里?
原来的view里?
UpdateData(TRUE);
CString str1,str2,str3,str4;
GetDlgItemText(IDC_EDIT1,str1);
GetDlgItemText(IDC_EDIT2,str2);
GetDlgItemText(IDC_EDIT3,str3);
GetDlgItemText(IDC_EDIT4,str3);
CDlgMd mDlg;
//int x1,x2,y1,y2
mDlg.x1 = _ttoi(str1);
mDlg.y1 = _ttoi(str2);
mDlg.x2 = _ttoi(str3);
mDlg.y2 = _ttoi(str4);
OnOK(); 不退出了 ?
Invalidate();”
不要“Invalidate();”
直接调用 ondraw函数 (对话框 应该在 onpaint 中,这个函数可能 没调用)
是 view 啊。
那 Invalidate(); 要指明 是 view。
CYourView *pView = (CYourView *)((CMainFrame *)AfxGetApp()->GetMainWnd())->GetActiveView();
pView->Invalidate()