在VC++60MFC中,在哪儿设置窗口的坐标系统最合适? 我觉得在OnDraw()中设置也是可以的吧 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以在 CMainFrame::PreCreateWindow函数里吧还有InitInstance函数里也行 在OnPrepareDC中设置,因为每次DC构造好之后都要调用该功能 这引发我想起一个问题,在win32编程中,需要hdc=BeginPaint(hWnd,&ps);相信大家都记得的吧,如果你SelectObject(hdc,hMyBrush);以后,不用原来的Brush替换就结束的话,下次画的时候不执行SelectObject,就不会再使用你的这个hMyBrush。这是不是说明我的操作在hdc句柄释放以后就失效了呢?根据我的理解,dc这个gdi对象是和我的窗口同时存在的,只是要通过hdc访问,但为什么我的修改会失效呢?它的机理到底是怎么样的?回答问题的朋友我会另外加分的,谢了。 void CEMapView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo) { // TODO: Add your specialized code here and/or call the base class CScrollView::OnPrepareDC(pDC, pInfo); CEMapDoc* pDoc = GetDocument(); CSize sizeDoc = pDoc->GetSize(); CPoint ptOrg; CRect rectClient; GetClientRect(&rectClient); pDC->DPtoLP(&rectClient); ptOrg.x = min(-sizeDoc.cx / 2,-rectClient.Size().cx/2); ptOrg.y = max(sizeDoc.cy / 2,-rectClient.Size().cy/2); // ptOrg is in logical coordinates pDC->SetWindowOrg(ptOrg);} 看了msdn终于明白了我上面说的问题,dc还分为Common Dc 和Private DC,我们一般使用的前一种,dc是在返回句柄前由System以Default Object构建的,所以必须在每次显示前都进行设定。结论是在OnPrepareDC()或者OnDraw()中都可以。 void CView::OnPaint(){ // standard paint routine CPaintDC dc(this); OnPrepareDC(&dc); OnDraw(&dc);} GetMenuItemInfo倒底怎么用!! 如何给自己重载的类发消息 win7 禁止或阻止笔记本合上盖进入休眠或睡眠. 用OpenGL如何实现一本书在翻页的情景?????????????????拜托了,急啊,谢谢! 关于RichEdit 如何为应用程序打包 如何得到CFormView里的控件被改过的消息?急急急。 做安装程序的问题 一个非常棘手的问题,大家帮帮我吧 回掉函数能否直接调用 类的成员变量的使用问题。 几个预处理的疑问,请指教,谢谢!!
还有InitInstance函数里也行
相信大家都记得的吧,如果你SelectObject(hdc,hMyBrush);
以后,不用原来的Brush替换就结束的话,下次画的时候不执行SelectObject,就不会再使用你的这个hMyBrush。
这是不是说明我的操作在hdc句柄释放以后就失效了呢?
根据我的理解,dc这个gdi对象是和我的窗口同时存在的,只是要通过hdc访问,但为什么我的修改会失效呢?
它的机理到底是怎么样的?
回答问题的朋友我会另外加分的,谢了。
{
// TODO: Add your specialized code here and/or call the base class
CScrollView::OnPrepareDC(pDC, pInfo);
CEMapDoc* pDoc = GetDocument();
CSize sizeDoc = pDoc->GetSize();
CPoint ptOrg;
CRect rectClient;
GetClientRect(&rectClient);
pDC->DPtoLP(&rectClient);
ptOrg.x = min(-sizeDoc.cx / 2,-rectClient.Size().cx/2);
ptOrg.y = max(sizeDoc.cy / 2,-rectClient.Size().cy/2);
// ptOrg is in logical coordinates
pDC->SetWindowOrg(ptOrg);
}
结论是在OnPrepareDC()或者OnDraw()中都可以。
{
// standard paint routine
CPaintDC dc(this);
OnPrepareDC(&dc);
OnDraw(&dc);
}