www.pudn.com > mfcopentree.rar > ChineseFont.h


struct glchar_s 
{ 
	GLuint _dlist;   // display list use to display the char 
	int    _chwidth; // width of the char ( in pixels ) 
}; 
 
 
bool init_wchar( HDC hdc, wchar_t c, glchar_s & glch ) 
{ 
	// generate display lists 
	GLuint l = glGenLists(1); 
	if ( 0 == l ) 
	{ 
		return false; 
	} 
 
	// get window DC 
	HDC dc = hdc; 
	if ( 0 == dc ) 
	{ 
		glDeleteLists(l, 1); 
		return false; 
	} 
 
	// select default fixed font 
	HGDIOBJ myfont = CreateFont(32, 0, 0, 0, FW_NORMAL, 0, 0, 0, DEFAULT_CHARSET, OUT_CHARACTER_PRECIS, 
		CLIP_CHARACTER_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, _T("»ªÎÄÐп¬")); 
	HGDIOBJ oldfont = SelectObject( dc, myfont ); 
 
	// get char width 
	SIZE sz; 
	if ( !GetTextExtentPoint32W(dc, &c, 1, &sz) ) 
	{ 
		SelectObject(dc, oldfont); 
		glDeleteLists( l, 1 ); 
		return false; 
	} 
 
	// create font list 
	if ( !wglUseFontBitmapsW(dc, c, 1, l) ) 
	{ 
		SelectObject(dc, oldfont); 
		glDeleteLists( l, 1 ); 
		return false; 
	} 
 
	// success 
	SelectObject(dc, oldfont); 
	glch._chwidth = sz.cx; 
	glch._dlist   = l; 
	return true; 
}