• Viernes 3 de Mayo de 2024, 00:08

Autor Tema:  Duda Sobre Hdc Y Visual C++  (Leído 1489 veces)

Diodo

  • Moderador
  • ******
  • Mensajes: 658
    • Ver Perfil
    • http://www.solocodigo.com
Duda Sobre Hdc Y Visual C++
« en: Miércoles 21 de Julio de 2004, 11:28 »
0
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
  1.  
  2. GLvoid BuildFont(GLvoid)    // Build Our Bitmap Font
  3. {
  4.   HFONT  font;    // Windows Font ID
  5.   HFONT  oldfont;    // Used For Good House Keeping
  6.   base = glGenLists(96);  // Storage For 96 Characters
  7.  
  8.   font = CreateFont(  -24,  // Height Of Font
  9.       0,  // Width Of Font
  10.       0,  // Angle Of Escapement
  11.       0,  // Orientation Angle
  12.       FW_BOLD,  // Font Weigh
  13.                                   FALSE,  // Italic
  14.       FALSE,  // Underline
  15.       FALSE,  // Strikeout
  16.       ANSI_CHARSET,  // Character Set Identifier
  17.       OUT_TT_PRECIS,  // Output Precision
  18.       CLIP_DEFAULT_PRECIS;// Clipping Precision
  19.       ANTIALIASED_QUALITY,// Output Quality
  20.       FF_DONTCARE|DEFAULT_PITCH,  
  21.                                                 "Courier New"); // Font Name
  22.  
  23.                 oldfont = (HFONT)SelectObject(hDC, font);   // Selects The Font We Want
  24.   wglUseFontBitmaps(hDC, 32, 96, base);  // Builds 96 Characters Starting At Character 32        
  25.   SelectObject(hDC, oldfont);              
  26.   DeleteObject(font);                  
  27. }
  28.  
  29.  
  30.  


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

  • Miembro activo
  • **
  • Mensajes: 49
    • Ver Perfil
Re: Duda Sobre Hdc Y Visual C++
« Respuesta #1 en: Lunes 26 de Julio de 2004, 21:01 »
0
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...