使用SelectObject选定GDI对象,是否需要在过程结束时进行清空/释放处理?窗口句柄HWND和窗口指针CWnd*两种用法,在对MFC和非MFC(即Window)对象应用时有什么不同? 高手看看

解决方案 »

  1.   

    路过,
    第一个要把原来的Old GDI对象再恢复回去.
    第二个,对于非MFC应用,就没有CWnd*的用法了,CWnd是MFC的类.
      

  2.   

    ->1.印象中都是在过程结束时,将GDI对象还原,即重新将原来的对象选到描述表中,应该不用清空。不知道对不对,等待高手!
      

  3.   

    1、被选入的dc是无法删除的,所以最后调用SelectObject(hdc, oldxxx); 选入oldxxx,这样才可以用DeleteObject删除之前的xxx释放空间,而oldxxx是系统保有的不需要删除。通常SelectObject会传回旧的装置, 好的习惯是在用完之后, 应该再选回旧的装置, 然后将你新建的装置释放掉2、
    CWnd*是窗口指针
    HWND是窗口句柄。 
    举个例来说明两者的区别吧。假如pWnd是CWnd指针,hWnd是HWND. 
    那么pWnd有一个成员pWnd-> m_hWnd是HWND, 
    你也可以通过句柄来获取窗口指针声明如下: 
    CWnd::FromHandle(   HWND   hWnd   )由于CWnd是MFC的类,所以对于非MFC应用,就没有CWnd*的用法了,
      

  4.   

    SelectObject加载HOBJECT对象,该函数返回原来的GDI对象,最后SelectObject还原原来的HOBJECT对象
      

  5.   

    HBRUSH hOldBrush = (HBRUSH) ::SelectObject((HBRUSH) ::GetStockObject(WHITE_BRUSH));// 进行一系列操作// 最后重置
    ::SelectObject(hOld);
      

  6.   

    真的吗?我会看着你被和谐的哦~~~
    呵呵,玩笑啦
    1,好像是自动恢复的
    2,CWND是MFC的一个类