在对话框的picture control里画一条直线,但是画不出来,是什么原因呢
void CPicDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码
// 不为绘图消息调用 CDialog::OnPaint()
CStatic *pStatic=(CStatic*)GetDlgItem(IDC_STATIC);
CRect rect1;
pStatic->GetWindowRect(&rect1);
pStatic->ScreenToClient(&rect1);
CDC *pDC=pStatic->GetDC(); CMainFrame* pMain=(CMainFrame *)AfxGetApp()->m_pMainWnd;
CbView* pView=(CbView*)pMain->GetActiveView();
pDC->MoveTo(rect1.left,rect1.top);
pDC->LineTo(pView->A[1],pView->A[1]);
// TODO: 在此处为本机数据添加绘制代码
}lineto()里面的数是view里的,可能是这里错了,为什么呢?
void CPicDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码
// 不为绘图消息调用 CDialog::OnPaint()
CStatic *pStatic=(CStatic*)GetDlgItem(IDC_STATIC);
CRect rect1;
pStatic->GetWindowRect(&rect1);
pStatic->ScreenToClient(&rect1);
CDC *pDC=pStatic->GetDC(); CMainFrame* pMain=(CMainFrame *)AfxGetApp()->m_pMainWnd;
CbView* pView=(CbView*)pMain->GetActiveView();
pDC->MoveTo(rect1.left,rect1.top);
pDC->LineTo(pView->A[1],pView->A[1]);
// TODO: 在此处为本机数据添加绘制代码
}lineto()里面的数是view里的,可能是这里错了,为什么呢?
解决方案 »
- FreeLibrary DLL 处理 Webbrowser 内存泄露
- 纠结~~~拦截客户端HTTP请求最好用哪种方式~~~
- unicode下得到的主程序路径不能转化成char*!???
- 向导弹出Parsing error";"Input Line:m_combo[7]这个问题怎么处理?
- 新手问题:函数调用类型转换? 结构体----〉short *
- 字符串转换遭遇OS语言设置及字符集问题
- 还是关于word问题
- [柱状/饼状图]有现成的类库否???
- 我这么做,为什么不能响应对话框的WM_KEYDOWN事件?
- CredentialProviders2007_01需要什么环境才能运行?
- MFC中怎么确定应该使用「静态生成」还是「动态生成」?
- 关于ListCtrl的一个问题
这句就有问题。如果你希望在标签控件上做些操作,那么你必须将该控件的ID号进行修改。默认所有标签控件的ID都是IDC_STATIC,值为1.所以你这个GetDlgItem返回的标签还不知道返回哪一个呢。给这个picture控件重新命名一个ID号先。
改了那个ID号还是没划线。要是把划线的改成pDC->LineTo(100,100);就可以划线。但是用view里的参数pDC->LineTo(pView->A[1],pView->A[1]);这样就不行,画不出来,为什么呢
和view不view的没关系
然后你可以看看这个会不会对你有帮助
http://blog.csdn.net/xianglitian/archive/2010/12/27/6100767.aspx
[/Quote]A[1]是在客户区以内的
就算在视图范围内,那一定在你需要显示的picture控件范围内码?????
而A[1]是比300大的数,照理说应该肯定能划线啊
pStatic->InvalidateRect(0,TRUE);
pStatic->UpdateWindow();
然后你画