在一个基于对话框的程序中dialog 和他上面的 Static 是什么关系呢?
我在自己的dialog中加入一个Static对象然后在Static中GetParent()->GetDC();为什么得不到dialog的DC呢?我跟进去看了一下。到GetParent()得到的指针地址与dialog一样的,但一GetDC()得到的指针就与在dialog中得到的不同了。为什么?如何解决?还望高手赐教
我在自己的dialog中加入一个Static对象然后在Static中GetParent()->GetDC();为什么得不到dialog的DC呢?我跟进去看了一下。到GetParent()得到的指针地址与dialog一样的,但一GetDC()得到的指针就与在dialog中得到的不同了。为什么?如何解决?还望高手赐教
解决方案 »
- 当数据库纪录有4GB数据时,程序运行就出错。
- 编写一个自动按键,用PostMessage这么做可以么
- 如何实现命令行模式的编辑器
- 谁见过类似的问题??
- vc函数中,如何 使用汇编代码??
- MFC DLL工程编译出错,很有普遍性!请大家帮助
- 调用HttpOpenRequest后,GetLastError()得到122,为什么?
- 动态增加控件,请做过的来看看,谢谢!!!!!!!!!!
- 各位大哥,如何用CFile::Write或CFileStdioFile::WriteString对文件进行追加写入?
- 我刚刚加入这个大家庭,我想拜个师傅,有没有人收我这个徒弟呢?
- 在线等待,百分求解,SQL语句查询的问题,请大家帮忙
- 高价求购FTP同步源代码
CDC *pDCC = GetDC();
CDC *pDC = m_S.GetParent()->GetDC();
m_S是个CStatic对象。获取的CDC对象是一样的。当然,指针地址不一样,但都是对话框的CDC
p->TextOut(100,100,"sdfsdfsdf");
this->GetDC()->TextOut(120, 120, "ffffff");
每次GetDC()都会给对话框生成一个DC如果上一个DC还没有释放,那么肯定就不一样了。
每次GetDC()都会给对话框生成一个DC如果上一个DC还没有释放,那么肯定就不一样了。
===========================================================================
完全正确!
CDC资源是有限的。对于每个窗口来说,最多只有5个。所以你用完了赶紧释放吧。
对于公用的设备环境,GetDC每次获得设备环境时都给它赋予缺省值。对于属于类的或者私有的设备环境,GetDC保持原来的属性不变。在随后的图形设备接口(GDI)函数中可以使用设备环境以在客户区中绘图.由于在同一时刻只有五个公用设备环境可供使用,因此如果释放设备环境时失败,可能导致其它应用程序不能访问设备环境。 可能每次取得都是不同的DC 吧。 CStatic* mStHandle = (CStatic*) GetDlgItem (IDC_STATIC);
CWnd* mWnd= mStHandle->GetParent () ;
CDC* mDC =mWnd->GetDC (); mDC->TextOut (0,100,"sdfds"); CDC* mDC2 = this->GetDC ();
mDC2->TextOut (100,100,"sdfdsf");如我的测试在我的环境中mDC 的值为:0x00421120 而 mDC2 的值就为0x004210e0 这样当然不同了