我的视图类从CScrollView派生,我在缺省映象方式MM_TEXT下可以生成一个红色矩形,但我在OnDraw( )中调用pDC->SetMapMode(MM_HIENGLISH)改变映象方式,同时把
OnInitialUpdate( )中的SetScrollSizes(MM_TEXT, sizeTotal);改为SetScrollSizes(MM_HIENGLISH, sizeTotal);但是红色矩形却显示不出来,请问时什么原因?怎么改正?我的代码如下:
void CViewView::OnDraw(CDC* pDC)
{
CViewDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc); pDC->SetMapMode(MM_HIENGLISH);
// TODO: add draw code for native data here
RECT Rect;
Rect.left=Rect.top=10;
Rect.right=Rect.bottom=100;
CBrush Brush(RGB(255,0,0));
pDC->FillRect(&Rect,&Brush);
}
void CViewView::OnInitialUpdate()
{
CScrollView::OnInitialUpdate(); CSize sizeTotal;
// TODO: calculate the total size of this view
sizeTotal.cx = sizeTotal.cy = 1000000;
SetScrollSizes(MM_HIENGLISH, sizeTotal);
}
OnInitialUpdate( )中的SetScrollSizes(MM_TEXT, sizeTotal);改为SetScrollSizes(MM_HIENGLISH, sizeTotal);但是红色矩形却显示不出来,请问时什么原因?怎么改正?我的代码如下:
void CViewView::OnDraw(CDC* pDC)
{
CViewDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc); pDC->SetMapMode(MM_HIENGLISH);
// TODO: add draw code for native data here
RECT Rect;
Rect.left=Rect.top=10;
Rect.right=Rect.bottom=100;
CBrush Brush(RGB(255,0,0));
pDC->FillRect(&Rect,&Brush);
}
void CViewView::OnInitialUpdate()
{
CScrollView::OnInitialUpdate(); CSize sizeTotal;
// TODO: calculate the total size of this view
sizeTotal.cx = sizeTotal.cy = 1000000;
SetScrollSizes(MM_HIENGLISH, sizeTotal);
}
解决方案 »
- 遇到_stscanf()的奇怪问题
- 我大2了,刚学习完<c++>和<数据结构>,很想进一步学习,请指点
- 谁想讨论c++/java 来qq群192911
- 看过"windows核心编程"的朋友请进?
- 一个初级问题,大家别笑啊,----COM\ATL\ActiveX之间是什么关系??
- 如何在程序中调用"Open With"对话框?
- 如何向cstring 赋予 汉字的值?我很着急,帮个忙好吗?
- 有关我的薪水,大虾们帮忙!
- 请别人编一个触摸屏实现PC键盘功能的软件大概多少钱?
- 不能广播,马上结贴了
- 我的vc 少一个中文语言的DLL文件,谁能给我发一个???
- 请问用ATL写的程序,在win98下面需要些什么文件支持?
我也是在ScrollView里作图,
不过我都用MM_TEXT,自己转换一下坐标
好象在别的影射方式下,画不出线来
不过你可以先试试画45度线
例如lineto(1000,1000)
应该可以吧
自己怎么转换坐标啊?
左上角,而且是向上增长的,所以你没有看到而已了,实际上是画出来的了,
谢谢了!还有个问题,因为我需要改变坐标原点,所以把代码修改了一下,红色矩形可以显示,但是滚动时,图形只是闪烁,但位置不变,有时滚动快时能出现好几个红色矩形,是不是重绘有问题?怎样改正?谢谢 !附代码:
void CWeView::OnDraw(CDC* pDC)
{
CWeDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here pDC->SetMapMode(MM_HIENGLISH); CRect rect;
GetClientRect(rect);
pDC->SetViewportOrg(rect.right/8,rect.bottom/2); RECT Rect;
Rect.left=1000;
Rect.top=-1000;
Rect.right=2000;
Rect.bottom=-2000;
CBrush Brush(RGB(255,0,0));
pDC->FillRect(&Rect,&Brush);
}