我写了一个类,主要是为了完成画图工作,
其中,有一个函数为
void SetHDC(HDC hDC)
{
m_hDC = hDC;
}请问这样写,对么?
如果正确,那m_hDC以前的值怎么办?是否需要手工销毁,如何销毁呢?我觉得可能会有句柄泄露的问题。是否应该写成:
void SetHDC(HDC hDC)
{
if (m_hDC != NULL)
// 销毁m_hDC
m_hDC = hDC;
}自己查了一下MSDN,有函数叫DeleteDC()和ReleaseDC(),但DeleteDC()不能用于GetDC()得到的HDC,而ReleaseDC原型为ReleaseDC(HWND hWnd, HDC hDC),不知道怎么用,呵呵。还请高手帮忙,感激不尽!P.S,我曾经想过使用CDC *m_pDC替换HDC hDC,但不行!
其中,有一个函数为
void SetHDC(HDC hDC)
{
m_hDC = hDC;
}请问这样写,对么?
如果正确,那m_hDC以前的值怎么办?是否需要手工销毁,如何销毁呢?我觉得可能会有句柄泄露的问题。是否应该写成:
void SetHDC(HDC hDC)
{
if (m_hDC != NULL)
// 销毁m_hDC
m_hDC = hDC;
}自己查了一下MSDN,有函数叫DeleteDC()和ReleaseDC(),但DeleteDC()不能用于GetDC()得到的HDC,而ReleaseDC原型为ReleaseDC(HWND hWnd, HDC hDC),不知道怎么用,呵呵。还请高手帮忙,感激不尽!P.S,我曾经想过使用CDC *m_pDC替换HDC hDC,但不行!
解决方案 »
- Clistctrl::InsertItem没有任何响应,没有任何返回值,卡死!!
- 在vs2008中怎么把数据库和类关联起来?
- 高手请进啊 如何同时拖动选中的两个图形 小弟跪求啊
- 各位好,下面是我在用MFC开发COM中遇到的一些问题,希望大家能过来看看,发表一些您的看法。谢谢!
- 如果一个项目延期了,你作为一个主管,应该怎么办?
- 关于重复使用已建好的对话框??
- 请问哪为来兄知道老兄知道xml字符串怎么传递中文,在线.....
- 怎样才能短期内学好vc++?
- 上网时ie的internet选项里面的主页被一个网站改成它自己的域名,我却该不会来,怎么办?
- 如何用HOOK截获KEYDOWN,在运行其他程序包括(MS-DOS方式下的)?
- 关于服务器发包的问题!
- 关于内存值增加问题
CreateDC配合DeleteDC并且要配对使用,一次Get一次Release,一次Create一次Delete
否则会有资源泄漏自己可以保存HDC,记得正确的释放
可以将HDC的初始化放到构造函数里,然后在析构函数里调用ReleaseDC 或者DeleteDC