Programación General > Visual C++

 Duda Sobre Hdc Y Visual C++

(1/1)

Diodo:
Hola a todos

Tengo una pequeña duda:

vereis estoy intentando aplicar una funcion que viene en el manual de OpenGL de la pagina de NeHe (que esta hecho sobre el API de windows ) en una aplicacion de SDI de visual C++ la funcion en cuestion es esta:



--- Código: Text --- GLvoid BuildFont(GLvoid)    // Build Our Bitmap Font{  HFONT  font;    // Windows Font ID  HFONT  oldfont;    // Used For Good House Keeping  base = glGenLists(96);  // Storage For 96 Characters   font = CreateFont(  -24,  // Height Of Font      0,  // Width Of Font      0,  // Angle Of Escapement      0,  // Orientation Angle      FW_BOLD,  // Font Weigh                                  FALSE,  // Italic      FALSE,  // Underline      FALSE,  // Strikeout      ANSI_CHARSET,  // Character Set Identifier      OUT_TT_PRECIS,  // Output Precision      CLIP_DEFAULT_PRECIS;// Clipping Precision      ANTIALIASED_QUALITY,// Output Quality      FF_DONTCARE|DEFAULT_PITCH,                                                  "Courier New"); // Font Name                 oldfont = (HFONT)SelectObject(hDC, font);   // Selects The Font We Want  wglUseFontBitmaps(hDC, 32, 96, base);  // Builds 96 Characters Starting At Character 32          SelectObject(hDC, oldfont);                DeleteObject(font);                  }   

como podeis ver al final hay dos funciones que utilizan hDC como parametro wglUseFontBitmaps y SelectObject.

Como puedo solucionar esto? hay algun equivalente al hDC en visual C++?
como ultimo recurso intente declarar el hDC como lo hacia en el ejemplo de la pagina

HDC  hDC=NULL;

me reconoce el parametro y me compila pero no me muestra texto por pantalla que es lo que deberia hacer las funciones del ejemplo

Si podeis echarme una mano , mu agradecido  :D

Davinia:
hola,
el HDC es el contexto de dispositivo.

Para obtener el contexto de dispositivo de una ventana (derivada de CView), tienes varias opciones (por lo que se):

1----
CClientDC *m_pDC = new CClientDC(this);
HDC m_hDC = m_pDC->GetSafeHdc();

en OnDestroy:

if (m_hDC)
        delete m_hDC;

2----
m_hDC = ::GetDC(mhWnd);

En ondrestroy:
ReleaseDC(m_hWnd, m_hDC);

por cierto, si trabajas con opengl tienes que hacer lo de makecurrent...

Navegación

[0] Índice de Mensajes

Ir a la versión completa