是不是你的GDI对象从来只申请不释放?
特别注意在循环中创建的语句。我编过一个不断地创造画刷的程序,
可以将系统资源耗尽,
系统菜单弹出来有整个屏幕那么长...

解决方案 »

  1.   

    用BoundsChecker检查检查好了。
    :)
      

  2.   

    我的程序里面有这段代码:
    HWND hwnd=::GetDesktopWindow();
    HDC hdc=::GetWindowDC(hwnd);
    for(int i=1;i<=20;i++)
    for(int j=1;j<=10;j++)
    m_Broad[i][j]=GetPixel(hdc,m_PosX+j*16-8,m_PosY+i*16-8);是不是这段代码引起的?请问怎样释放?谢谢大家!我加分!
      

  3.   

    还有:
    this->ShowWindow(SW_SHOWMINIMIZED);
    HWND hwnd1=::FindWindow(NULL,"程序一");
    if (!hwnd1)
    {
    m_PosX=550;
    hwnd1=::FindWindow(NULL,"程序二");
    if (!hwnd1)
    {
    this->ShowWindow(SW_RESTORE);
    AfxMessageBox("请先运行那个程序!");
    return;
    }
    }
    ::SetForegroundWindow(hwnd1);
    ::ShowWindow(hwnd1,SW_MAXIMIZE);
    Sleep(500);
      

  4.   

    系统的资源减少,却没有发现,一般只有一种情况:     在删除GDI资源时,它还在DC中选用!
         永远都不要忘了使用完GDI后   SelectObject(OldGDI);
      

  5.   

    GetDC 后有没有
    ReleaseDC,DeleteDC?次序:
    CGdi gdiNew;
    oldGdi =SelectObject(newGdi)
    SelectObject(oldGdi)
    DeleteObject(newGdi)
      

  6.   

    我把程序简化到只有以下东西,
    最终我确定是这个在减少系统资源:void CTempDlg::OnOK() 
    {
    while (1==1)
    {
    Start();
    }
    }void CTempDlg::Start() 
    {
    HWND hwnd=::GetDesktopWindow();
    HDC hdc=::GetWindowDC(hwnd);}
    请问高手们,为什么,我该怎么办?谢谢!
      

  7.   

    在Start() 调用完成后
    closehandle hwnd和hdc再试验一下。
      

  8.   

    类似
    Start()
    {
    ....CloseHandle(hDC);
    CloseHandle(hWnd);}
      

  9.   

    把    HWND hwnd
        HDC hdc定义成全局变量可以吗?
      

  10.   

    在Start中要使用这样一个函数:
    int ReleaseDC(
      HWND hWnd,  // handle to window
      HDC hDC     // handle to DC
    );
    而Window的Handle则不用Close。
      

  11.   

    呵呵。你说的对。那结果怎么样。系统资源是否还是100%? 不过既然你用了死循环,CPU肯定会100%。
      

  12.   

    void CTempDlg::Start() 
    {
        HWND hwnd = NULL;
        HDC hdc = NULL;
        hwnd = ::GetDesktopWindow();
        if( hwnd )
        { 
         hdc = ::GetWindowDC(hwnd);
         if( hdc )
          ReleaseDC(hdc);
        }
    }
    // Just Test