Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Как получить контекст устройства (HDC) диалога?


Автор: Nendis 2.8.2013, 19:28
Собственно пытаюсь вставить в главном диалоге в выделенную область картинку из файла через контекст в памяти:

для PictureBox m_Picture:

Код

        HANDLE hBitmap; 
        HDC hDC;  
        RECT picRect;
        HDC picHDC;
 
        hDC = CreateCompatibleDC(NULL); 
        hBitmap = LoadImage(0,L"C:\\Documents and Settings\\Xei\\Desktop\\Exclusion.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
        SelectObject(hDC,hBitmap); 
        picHDC = ::GetDC(m_Picture.m_hWnd);
        m_Picture.GetWindowRect(&picRect); 
        BitBlt(picHDC,0,0,(picRect.right - picRect.left),(picRect.bottom - picRect.top),hDC,0,0,SRCCOPY);
 
        DeleteDC(hDC); 


но необходимо рисовать в самом диалоге, в OnPaint. Для этого нужно получить HDC диалога. Подскажите как сделать.

Автор: vol4ek 3.8.2013, 09:57
гугли класс CDC

Автор: Albor 5.8.2013, 07:46
Цитата(Nendis @  2.8.2013,  18:28 Найти цитируемый пост)
но необходимо рисовать в самом диалоге, в OnPaint. Для этого нужно получить HDC диалога. Подскажите как сделать. 

Я так понимаю, что PictureBox это объект класса  CStatic? Если так, то у него есть функция SetBitmap, только hBitmap нужно сделать членом класса диалога или глобальным, иначе картинка не отображается. Ещё посмотри http://www.go4expert.com/articles/display-bitmap-picture-box-using-mfc-t350/, если  SetBitmap, по какой-то причине не подходит.

Автор: akizelokro 11.8.2013, 21:26
Код

CClientDC dc (this);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)