1、使用一个CDC对象Attach一个用GetDC函数得到DC句柄后,当这个CDC对象释放后,它会不会自动连带释放这个句柄。如果不会,是不是会产生资源泄漏。我如何能正确释放一个通过Attach得来的CDC对象呢?相同的,像CBitmap对象和其它拥用句柄属性的对象,在Attach后,要通过什么方式才能正常释放呢?2、我在书上看到一段代码里在将一个位图对象选进一个内存DC后,却并没有将它选出,那么是不是将GDI对象选进一个DC后可以不选出,它会自动释放掉呢?3、我拦下主窗口的WM_KEYDOWN消息,在里面加了如果按ESC键就像主窗口SendMessage(WM_CLOSE)消息的逻辑,但在运行时会在一个我看不懂的地方产生访问冲突,只有我把SendMessage换成PostMessage后,程序才没有产生错误,这是为什么?(附注:我是在Win98下运行时出现错误,但在WinXP下没有错误产生,只有退出码不是0,而是0x1B.
高手救命啊!
高手救命啊!
1>>我现在用的是SDK啊,不是MFC,嘿嘿不能帮你了.
在MFC中,你的消息处理函数并不是最后执行完成的,在你的处理完之后还可能调用基类的相应处理函数,所以当你在主窗口的WM_KEYDOWN消息中使用SendMessage发送WM_CLOSE之后(SendMessage是要等相应的消息处理完成后才会返回,在这里也就是等窗口销毁之后返回;而PostMessage是将相应消息加入到消息队列中后立即返回,所以在处理WM_CLOSE消息之前会先将WM_KEYDOWN消息处理完成),你的窗口已经销毁了,但是程序还会继续进入基类的相应处理函数中去,此时因为你的窗口已经销毁,所以在Windows98之类的系统中就会报错,而XP的系统是基于NT核心的,在这方面可能有自己的处理,直接将你的进程结束而不报错
我再使用GDI时总觉得不安心,像有什么地方错了一样。
再说,gdi说来说去常见的就这么几个。
用多了就熟练了
对吗
熟能生巧嘛
用Attach添加成的对象,它会自身释放呢,还是最后得分离出句柄来,然后删除句柄呢?