예제 #1
0
void GridDisplay::SetDefault()
{
	SetTextAlign();
	SetHorzMargin();
	SetVertMargin();
	SetTheme();
	ReverseSortIcon(false);
}
예제 #2
0
//------------------------------------------------------------------
void toolBitmap()
{
	int i;
	TBADDBITMAP a;
	HDC dc, wdc;
	HGDIOBJ oldBmp, oldF;
	TCHAR c;
	HBRUSH br;
	RECT rc;
	HBITMAP b;
	LOGFONT font;
	const int Nbut1=35, Nbut=Nbut1+Msymbol+1;

	wdc=GetDC(toolbar);
	dc=CreateCompatibleDC(wdc);
	b=CreateCompatibleBitmap(wdc, Nbut*16, 15);
	ReleaseDC(toolbar, wdc);
	oldBmp=SelectObject(dc, b);
	rc.left=0; rc.right=16*Nbut1; rc.bottom=15; rc.top=0;
	FillRect(dc, &rc, GetSysColorBrush(COLOR_BTNFACE));
	SetBkMode(dc, TRANSPARENT);
	SetTextAlign(dc, TA_CENTER);
	memset(&font, 0, sizeof(LOGFONT));
	font.lfHeight=-15;
	_tcscpy(font.lfFaceName, _T("Tahoma"));
	oldF=SelectObject(dc, CreateFontIndirect(&font));
	for(i=0; i<Nbut1; i++){
		c=num2char(i);
		TextOut(dc, 16*i+8, -1, &c, 1);
	}
	DeleteObject(SelectObject(dc, oldF));
	for(; i<Nbut; i++){
		rc.left=i*16;
		rc.right=rc.left+16;
		FillRect(dc, &rc, br=CreateSolidBrush(colors[i-Nbut1]));
		DeleteObject(br);
	}
	SelectObject(dc, oldBmp);
	DeleteDC(dc);

	if(toolBmp){
		TBREPLACEBITMAP rb;
		rb.hInstOld=0;
		rb.nIDOld=(UINT_PTR)toolBmp;
		rb.hInstNew=0;
		rb.nIDNew=(UINT_PTR)b;
		rb.nButtons=Nbut;
		SendMessage(toolbar, TB_REPLACEBITMAP, 0, (LPARAM)&rb);
		DeleteObject(toolBmp);
	}
	else{
		a.hInst=(HINSTANCE)0;
		a.nID=(UINT_PTR)b;
		toolNumIndex= SendMessage(toolbar, TB_ADDBITMAP, Nbut, (LPARAM)&a);
	}
	toolBmp=b;
	InvalidateRect(toolbar, 0, TRUE);
}
예제 #3
0
파일: open.c 프로젝트: vouillon/ocaml
static value gr_reset(void)
{
    RECT rc;
    int screenx,screeny;

    screenx = GetSystemMetrics(SM_CXSCREEN);
    screeny = GetSystemMetrics(SM_CYSCREEN);
    GetClientRect(grwindow.hwnd,&rc);
    grwindow.gc = GetDC(grwindow.hwnd);
    grwindow.width = rc.right;
    grwindow.height = rc.bottom;
    if (grwindow.gcBitmap == (HDC)0) {
        grwindow.hBitmap = CreateCompatibleBitmap(grwindow.gc,screenx,
                           screeny);
        grwindow.gcBitmap = CreateCompatibleDC(grwindow.gc);
        grwindow.tempDC = CreateCompatibleDC(grwindow.gc);
        SelectObject(grwindow.gcBitmap,grwindow.hBitmap);
        SetMapMode(grwindow.gcBitmap,MM_TEXT);
        MoveToEx(grwindow.gcBitmap,0,grwindow.height-1,0);
        BitBlt(grwindow.gcBitmap,0,0,screenx,screeny,
               grwindow.gcBitmap,0,0,WHITENESS);
        grwindow.CurrentFontSize = 15;
        grwindow.CurrentFont = CreationFont("Courier");
    }
    grwindow.CurrentColor = GetSysColor(COLOR_WINDOWTEXT);
    grwindow.grx = 0;
    grwindow.gry = 0;
    grwindow.CurrentPen = SelectObject(grwindow.gc,
                                       GetStockObject(WHITE_PEN));
    SelectObject(grwindow.gc,grwindow.CurrentPen);
    SelectObject(grwindow.gcBitmap,grwindow.CurrentPen);
    grwindow.CurrentBrush = SelectObject(grwindow.gc,
                                         GetStockObject(WHITE_BRUSH));
    SelectObject(grwindow.gc,grwindow.CurrentBrush);
    SelectObject(grwindow.gcBitmap,grwindow.CurrentBrush);
    caml_gr_set_color(Val_long(0));
    SelectObject(grwindow.gc,grwindow.CurrentFont);
    SelectObject(grwindow.gcBitmap,grwindow.CurrentFont);
    grdisplay_mode = grremember_mode = 1;
    MoveToEx(grwindow.gc,0,grwindow.height-1,0);
    MoveToEx(grwindow.gcBitmap,0,grwindow.height-1,0);
    SetTextAlign(grwindow.gcBitmap,TA_BOTTOM);
    SetTextAlign(grwindow.gc,TA_BOTTOM);
    return Val_unit;
}
예제 #4
0
파일: GAMEIO.CPP 프로젝트: hyuntaeng/CDX
void DisplaySpaceyMsg(void)
{

	UINT fMode;
	HDC dc;
    
	dc = Screen->GetBack()->GetDC();
    
	fMode = GetTextAlign(dc);
	SetTextAlign(dc, TA_CENTER | VTA_CENTER);
    
    Screen->GetBack()->TextXY(320, 2, GreenTxt, "SPACEY VADERS");
    Screen->GetBack()->TextXY(320, 20, GreenTxt, "by Paul Lord '97");

	SetTextAlign(dc, fMode);
	Screen->GetBack()->ReleaseDC();

}
void PrintText( HWND hwnd,int cxChar,int cyChar,int cxCaps )
{
	HDC hdc;
	PAINTSTRUCT ps;
	SCROLLINFO si;
	int iVertPos,iHorzPos,iPaintBeg,iPaintEnd;
	int x,y;
	TCHAR szBuffer[10];

	hdc = BeginPaint(hwnd,&ps);

	si.cbSize = sizeof(si);
	si.fMask = SIF_POS;
	GetScrollInfo(hwnd,SB_VERT,&si);
	iVertPos = si.nPos;

	GetScrollInfo(hwnd,SB_HORZ,&si);
	iHorzPos = si.nPos;

	iPaintBeg = max(0,iVertPos + ps.rcPaint.top / cyChar);
	iPaintEnd = min(NUMLINES - 1, iVertPos + ps.rcPaint.bottom / cyChar);

	for (int i = iPaintBeg ; i <= iPaintEnd ; i++)
	{
		x = cxChar * (1 - iHorzPos) ;
		y = cyChar * (i - iVertPos) ;

		TextOut (hdc, x, y,sysmetrics[i].szLabel,
			lstrlen (sysmetrics[i].szLabel)) ;

		TextOut (hdc, x + 22 * cxCaps, y,sysmetrics[i].szDesc,
			lstrlen (sysmetrics[i].szDesc)) ;

		SetTextAlign (hdc, TA_RIGHT | TA_TOP) ;

		TextOut (hdc, x + 22 * cxCaps + 40 * cxChar, y, szBuffer,
			wsprintf (szBuffer, TEXT ("%5d"),
			GetSystemMetrics (sysmetrics[i].iIndex))) ;

		SetTextAlign (hdc, TA_LEFT | TA_TOP) ;
	}

	EndPaint(hwnd,&ps);
}
예제 #6
0
uint32_t      *plTextGenerator::IAllocateOSSurface( uint16_t width, uint16_t height )
{
#if HS_BUILD_FOR_WIN32

    BITMAPINFO  bmi;


    // Create a new DC and bitmap that we can draw characters to
    memset( &bmi.bmiHeader, 0, sizeof( BITMAPINFOHEADER ) );
    bmi.bmiHeader.biSize = sizeof( BITMAPINFOHEADER );
    bmi.bmiHeader.biWidth = width;
    bmi.bmiHeader.biHeight = -(int)height;
    bmi.bmiHeader.biPlanes = 1;
    bmi.bmiHeader.biCompression = BI_RGB;
    bmi.bmiHeader.biBitCount = 32;
    
    fWinRGBDC = CreateCompatibleDC( nil );
    fWinRGBBitmap = CreateDIBSection( fWinRGBDC, &bmi, DIB_RGB_COLORS, (void **)&fWinRGBBits, nil, 0 );
    SetMapMode( fWinRGBDC, MM_TEXT );
    SetBkMode( fWinRGBDC, TRANSPARENT );
    SetTextAlign( fWinRGBDC, TA_TOP | TA_LEFT );

    SelectObject( fWinRGBDC, fWinRGBBitmap );

    // Now create a second DC/bitmap combo, this one for writing alpha values to
    memset( &bmi.bmiHeader, 0, sizeof( BITMAPINFOHEADER ) );
    bmi.bmiHeader.biSize = sizeof( BITMAPINFOHEADER );
    bmi.bmiHeader.biWidth = width;
    bmi.bmiHeader.biHeight = -(int)height;
    bmi.bmiHeader.biPlanes = 1;
    bmi.bmiHeader.biCompression = BI_RGB;
    bmi.bmiHeader.biBitCount = 8;
    
    fWinAlphaDC = CreateCompatibleDC( nil );
    fWinAlphaBitmap = CreateDIBSection( fWinAlphaDC, &bmi, DIB_RGB_COLORS, (void **)&fWinAlphaBits, nil, 0 );
    SetMapMode( fWinAlphaDC, MM_TEXT );
    SetBkMode( fWinAlphaDC, TRANSPARENT );
    SetTextAlign( fWinAlphaDC, TA_TOP | TA_LEFT );

    SelectObject( fWinAlphaDC, fWinAlphaBitmap );

    return (uint32_t *)fWinRGBBits;
#endif
}
예제 #7
0
HRESULT CJoystickCtl::OnDraw(ATL_DRAWINFO& di) {
	RECT& rc = *(RECT*) di.prcBounds;
	Rectangle(di.hdcDraw, rc.left, rc.top, rc.right, rc.bottom);

	SetTextAlign(di.hdcDraw, TA_CENTER|TA_BASELINE);
	LPCTSTR pszText = _T("JavaScript Joystick");
	TextOut(di.hdcDraw, (rc.left + rc.right) / 2, (rc.top + rc.bottom) / 2, pszText, lstrlen(pszText));

	return S_OK;
}
예제 #8
0
파일: Panel.cpp 프로젝트: Artoria2e5/obtr
void Panel::NowPutTextOnBackground()
{  SetBkMode(hDC2,TRANSPARENT); 
 //  SetTextColor(hDC2,RGB(0,147,221));
SetTextColor(hDC2,RGB(255,100,100));
   SetTextAlign(hDC2,TA_CENTER);
   SelectObject(hDC2,hFNT_Panel);
   for (int i=0;i<text_num;i++)
	TextOut(hDC2,Text_list[i].x,Text_list[i].y,Text_list[i].text, sizeof(char)*strlen(Text_list[i].text));
  
}
예제 #9
0
파일: rings.c 프로젝트: Gaikokujin/WinNT4
void DrawRings( HWND hwnd, HDC hdc )
 {
  double Angle, dAngle, Radius;

  int    i, x, y;
  HFONT  hFont, hFontOld;



  if( lstrlen(szString) == 0 ) return;

  Radius = cxDC / 4;
  dAngle = 360.0 / (double)lstrlen(szString);

  Ellipse( hdc, xDC + cxDC/2-(int)Radius, yDC + cyDC/2-(int)Radius,
                xDC + cxDC/2+(int)Radius, yDC + cyDC/2+(int)Radius  );

  Angle = 0.0;

  for( i = 0; i < lstrlen(szString); i++, Angle += dAngle )
   {
    lf.lfEscapement  = lf.lfOrientation = (int)(10.0*Angle);

    hFont = CreateFontIndirect( &lf );
    if( !hFont )
     {
      dprintf( "Couldn't create font for Angle = %d", (int)Angle );
      continue;
     }

    hFontOld = SelectObject( hdc, hFont );

    SetTextAlign( hdc, wTextAlign );
    SetBkMode( hdc, iBkMode );
    SetBkColor( hdc, dwRGBBackground );
    SetTextColor( hdc, dwRGBText );

    x = xDC + cxDC/2 + (int)(Radius * sin( TWOPI * Angle / 360.0 ) );
    y = yDC + cyDC/2 + (int)(Radius * cos( TWOPI * Angle / 360.0 ) );

//    dprintf( "  x, y = %d, %d", x, y );

    TextOut( hdc, x, y, &szString[i], 1 );

    MoveToEx( hdc, x-cxDC/150, y          ,0);
    LineTo( hdc, x+cxDC/150, y          );
    MoveToEx( hdc, x,          y-cxDC/150 ,0);
    LineTo( hdc, x,          y+cxDC/150 );

    SelectObject( hdc, hFontOld );
    DeleteObject( hFont );
   }

  lf.lfEscapement = lf.lfOrientation = 0;
 }
예제 #10
0
VOID vJustify3(HDC hdc, int x, int y, char * psz1, char * psz2, char * psz3, ULONG cxLen)
{
    ULONG cBrk = cBreak(psz1) + cBreak(psz2) + cBreak(psz3);

    ULONG cx = cxSize(hdc,psz1) + cxSize(hdc,psz2) + cxSize(hdc,psz3);

    BOOL  bOk;

    POINT pt;
    MoveToEx(hdc,x,y,&pt);

    SetTextAlign(hdc, TA_LEFT | TA_TOP | TA_UPDATECP);

    // DbgPrint("cBrk = %ld, cxSize = %ld\n", cBrk, cx);

    bOk = SetTextJustification(hdc, (int)(cxLen - cx), cBrk);
    if(!bOk)
        vDoPause(0);

    bOk = TextOut(hdc, 0, 0, psz1, strlen(psz1));
    if(!bOk)
        vDoPause(0);

    SetBkColor(hdc, RGB(0,0,255));

    bOk = TextOut(hdc, 0, 0, psz2, strlen(psz2));
    if(!bOk)
        vDoPause(0);

    SetBkColor(hdc, RGB(255,0,0));

    bOk = TextOut(hdc, 0, 0, psz3, strlen(psz3));
    if(!bOk)
        vDoPause(0);

    bOk = SetTextJustification(hdc,0,0);
    if(!bOk)
        vDoPause(0);

    SetTextAlign(hdc, TA_LEFT | TA_TOP | TA_NOUPDATECP);
    SetBkColor(hdc, RGB(0,255,0));
}
예제 #11
0
    virtual BOOL on_draw   (HELEMENT he, UINT draw_type, HDC hdc, const RECT& rc ) 
    { 
      if( draw_type != DRAW_CONTENT )
        return FALSE; /*do default draw*/ 

      dom::element el = he;
      
      UINT pta = GetTextAlign(hdc);
      SetTextAlign(hdc, TA_LEFT | TA_TOP |TA_NOUPDATECP); 
#ifdef _WIN32_WCE
    CString fileName(el.text());
    CString dottedFileName;
    FormatFileName(hdc, fileName, dottedFileName, rc.right - rc.left);
    DrawTextW(hdc, dottedFileName, -1, const_cast<RECT*>(&rc), DT_SINGLELINE | DT_LEFT | DT_VCENTER | DT_NOPREFIX | DT_NOCLIP);
#else
      DrawTextW(hdc, el.text(), -1, const_cast<RECT*>(&rc), DT_SINGLELINE | DT_LEFT | DT_VCENTER | DT_PATH_ELLIPSIS | DT_NOPREFIX);
#endif
      SetTextAlign(hdc, pta); 
      return TRUE; /*skip default draw as we did it already*/ 
    }
예제 #12
0
// the initialization method
void TSRGuiFileBrowser::Initialize()
{
    m_Maxcharacters = 10;
    m_eType = TWISTER_GUI_COMPONENT_FILEBROWSER;
    m_bClickable    = true;
    SetTextAlign( GUI_ALIGN_TOPLEFT );
    SetFilter( "*.*" );
    m_FolderColor.Assign( 1.0f, 0.0f, 0.0f );
    m_FileColor.Assign( 0.0f, 0.0f, 1.0f );
    m_HotColor.Assign( 0.5f, 0.5f, 0.5f );
}
예제 #13
0
VOID vJustify2(HDC hdc, int x, int y, char * psz1, char * psz2, ULONG cxLen)
{
    ULONG cBrk = cBreak(psz1) + cBreak(psz2);

    ULONG cx   = cxSize(hdc,psz1) + cxSize(hdc,psz2);

    BOOL  bOk;

    POINT pt;
    MoveToEx(hdc,x,y,&pt);

    SetTextAlign(hdc, TA_LEFT | TA_TOP | TA_UPDATECP);

    // DbgPrint("cBrk = %ld, cxSize = %ld\n", cBrk, cx);

    bOk = SetTextJustification(hdc, (int)(cxLen - cx), cBrk);
    if(!bOk)
        vDoPause(0);

    bOk = TextOut(hdc, 0, 0, psz1, strlen(psz1));
    if(!bOk)
        vDoPause(0);

    // change bk color to observe which part of the string is written
    // by the second call

    SetBkColor(hdc, RGB(0,0,255));

    bOk = TextOut(hdc, 0, 0, psz2, strlen(psz2));
    if(!bOk)
        vDoPause(0);

    bOk = SetTextJustification(hdc,0,0);
    if(!bOk)
        vDoPause(0);

    SetTextAlign(hdc, TA_LEFT | TA_TOP | TA_NOUPDATECP);

    SetBkColor(hdc, RGB(0,255,0));      // restore old color

}
예제 #14
0
void CtrlDisAsmView::drawArguments(HDC hdc, const DisassemblyLineInfo &line, int x, int y, int textColor, const std::set<std::string> &currentArguments) {
	if (line.params.empty()) {
		return;
	}
	// Don't highlight the selected lines.
	if (isInInterval(selectRangeStart, selectRangeEnd - selectRangeStart, line.info.opcodeAddress)) {
		TextOutA(hdc, x, y, line.params.c_str(), (int)line.params.size());
		return;
	}

	int highlightedColor = 0xaabb00;
	if (textColor == 0x0000ff) {
		highlightedColor = 0xaabb77;
	}

	UINT prevAlign = SetTextAlign(hdc, TA_UPDATECP);
	MoveToEx(hdc, x, y, NULL);

	size_t p = 0, nextp = line.params.find(',');
	while (nextp != line.params.npos) {
		const std::string arg = line.params.substr(p, nextp - p);
		if (currentArguments.find(arg) != currentArguments.end() && textColor != 0xffffff) {
			SetTextColor(hdc, highlightedColor);
		}
		TextOutA(hdc, 0, 0, arg.c_str(), (int)arg.size());
		SetTextColor(hdc,textColor);
		p = nextp + 1;
		nextp = line.params.find(',', p);
		TextOutA(hdc, 0, 0, ",", 1);
	}
	if (p < line.params.size()) {
		const std::string arg = line.params.substr(p);
		if (currentArguments.find(arg) != currentArguments.end() && textColor != 0xffffff) {
			SetTextColor(hdc, highlightedColor);
		}
		TextOutA(hdc, 0, 0, arg.c_str(), (int)arg.size());
		SetTextColor(hdc,textColor);
	}

	SetTextAlign(hdc, prevAlign);
}
예제 #15
0
void AddTextToPage ( LPSTR pText, int x, int y, int centered )
{
	// Dimension of print area
    int cWidthPels = GetDeviceCaps(pd.hDC, HORZRES); 
    int cHeightPels = GetDeviceCaps(pd.hDC, VERTRES); 

	// Adjustment for center
	switch ( centered )
	{
		case 0 : SetTextAlign ( pd.hDC, TA_LEFT );		break;
		case 1 : SetTextAlign ( pd.hDC, TA_CENTER );	break;
		case 2 : SetTextAlign ( pd.hDC, TA_RIGHT );		break;
	}

	// Print to scaled location
	double dx = (x/100.0)*cWidthPels;
	double dy = (y/100.0)*cHeightPels;

	// put text to device context
	TextOut (pd.hDC, (int)dx, (int)dy, (LPCTSTR) pText, strlen(pText)); 
}
예제 #16
0
파일: main.c 프로젝트: hius74/projects
void Paint() {
    RECT rect;
    GetClientRect(hWnd, &rect);

    LONG centerX = (rect.left + rect.right) / 2;
    LONG centerY = (rect.top + rect.bottom) / 2;

    PAINTSTRUCT ps;
    HDC hdc;

    hdc = BeginPaint(hWnd, &ps);
    static TCHAR working[] = _T("Working");
    static TCHAR resting[] = _T("Resting");
    SetTextAlign(hdc, TA_CENTER | TA_BOTTOM);
    TextOut(hdc, centerX, centerY, greeting, _tcslen(greeting));

    SetTextAlign(hdc, TA_CENTER | TA_TOP);
    TextOut(hdc, centerX, centerY, greeting, _tcslen(greeting));

    EndPaint(hWnd, &ps);
}
예제 #17
0
void SimplePrint(int nPages)
{
	TCHAR temp[MAX_PATH];

	DWORD size = MAX_PATH;
	GetDefaultPrinter(temp, & size); // default printer name

	HDC hDC = CreateDC(NULL, temp, NULL, NULL); // DC with default setting
	
	if ( hDC )
	{
		nCall_AbortProc = 0;
		SetAbortProc(hDC, SimpleAbortProc);

		DOCINFO docinfo;
		docinfo.cbSize       = sizeof(docinfo);
		docinfo.lpszDocName  = _T("SimplePrint");
		docinfo.lpszOutput   = NULL; 
		docinfo.lpszDatatype = _T("EMF");
		docinfo.fwType		 = 0; 

		if ( StartDoc(hDC, & docinfo) > 0 )
		{
			for (int p=0; p<nPages; p++) // one page at a time
				if ( StartPage(hDC) <= 0 )
					break;
				else
				{
					int width  = GetDeviceCaps(hDC, HORZRES);
					int height = GetDeviceCaps(hDC, VERTRES);
					int dpix   = GetDeviceCaps(hDC, LOGPIXELSX);
					int dpiy   = GetDeviceCaps(hDC, LOGPIXELSY);
			
					wsprintf(temp, _T("Page %d of %d"), p+1, nPages);
					SetTextAlign(hDC, TA_TOP | TA_RIGHT );
					TextOut(hDC, width, 0, temp, _tcslen(temp));

					Rectangle(hDC, 0, 0, dpix, dpiy);
					Rectangle(hDC, width, height, width-dpix, height-dpiy);
				
					if ( EndPage(hDC)<0 )
						break;
				}
			
			EndDoc(hDC);
		}

		DeleteDC(hDC);
	}

	wsprintf(temp, "AbortProc called %d times", nCall_AbortProc);
	MessageBox(NULL, temp, "SimlePrint", MB_OK);	
}
예제 #18
0
파일: Emf11.c 프로젝트: AaronFae/VimProject
void DrawRuler (HDC hdc, int cx, int cy)
{
     int     i, iHeight ;
     LOGFONT lf ;
     TCHAR   ch ;

          // Black pen with 1-point width

     SelectObject (hdc, CreatePen (PS_SOLID, cx / 72 / 6, 0)) ;

          // Rectangle surrounding entire pen (with adjustment)

     if (GetVersion () & 0x80000000)              // Windows 98
          Rectangle (hdc, 0, -2, cx + 2, cy) ;
     else                                         // Windows NT
          Rectangle (hdc, 0, -1, cx + 1, cy) ;

          // Tick marks
          
     for (i = 1 ; i < 96 ; i++)
     {
               if (i % 16 == 0) iHeight = cy /  2 ;    // inches
          else if (i %  8 == 0) iHeight = cy /  3 ;    // half inches
          else if (i %  4 == 0) iHeight = cy /  5 ;    // quarter inches
          else if (i %  2 == 0) iHeight = cy /  8 ;    // eighths
          else                  iHeight = cy / 12 ;    // sixteenths

          MoveToEx (hdc, i * cx / 96, 0, NULL) ;
          LineTo   (hdc, i * cx / 96, iHeight) ;
     }
          // Create logical font 

     FillMemory (&lf, sizeof (lf), 0) ;
     lf.lfHeight = cy / 2 ;
     lstrcpy (lf.lfFaceName, TEXT ("Times New Roman")) ;

     SelectObject (hdc, CreateFontIndirect (&lf)) ;
     SetTextAlign (hdc, TA_BOTTOM | TA_CENTER) ;
     SetBkMode    (hdc, TRANSPARENT) ;

          // Display numbers

     for (i = 1 ; i <= 5 ; i++)
     {
          ch = (TCHAR) (i + '0') ;
          TextOut (hdc, i * cx / 6, cy / 2, &ch, 1) ;
     }
          // Clean up

     DeleteObject (SelectObject (hdc, GetStockObject (SYSTEM_FONT))) ;
     DeleteObject (SelectObject (hdc, GetStockObject (BLACK_PEN))) ;
}
예제 #19
0
static void winFrameDrawText(HDC hDC, const char* text, int x, int y, COLORREF fgcolor)
{
  COLORREF oldcolor;

  SetTextAlign(hDC, TA_TOP|TA_LEFT);
  SetBkMode(hDC, TRANSPARENT);
  oldcolor = SetTextColor(hDC, fgcolor);

  TextOut(hDC, x, y, text, strlen(text));

  SetTextColor(hDC, oldcolor);
  SetBkMode(hDC, OPAQUE);
}
예제 #20
0
EXPORT_C void CHuiCanvasGc::SetDefaults()
	{
	SetTextStyle(0);
    SetPenColor(TRgb(255,255,255));
	SetPenWidth(1.0);
	SetOpacity(1.0);
	SetPolygonDrawMode(EHuiNoFill);
	SetTextAlign(EHuiAlignHLeft, EHuiAlignVTop);
    SetDrawMode(EHuiCanvasDrawModeBlend);
    EnableEffectiveOpacity(ETrue);    
    SetPolygonFillTexture(NULL);
    SetPolygonFillTextureOrigin(TPoint(0,0));
	CancelClipping();
	}
예제 #21
0
static void vprint(int x, int y, int w, char *format, va_list va)
{
  HDC dc = GetDC(wnd);
  RECT rc;
  rc.top = y;
  rc.bottom = y+16;
  rc.left = x - w/2;
  rc.right = rc.left + w;
  char buf[128];
  int n = vsprintf(buf, format, va);
  SetTextAlign(dc, TA_CENTER);
  ExtTextOutA(dc, x, y, ETO_OPAQUE, &rc, buf, n, 0);
  ReleaseDC(wnd, dc);
}
예제 #22
0
		virtual BOOL on_draw   (HELEMENT he, UINT draw_type, HDC hdc, const RECT& rc ) 
		{ 
			if( draw_type != DRAW_CONTENT )
				return FALSE; /*do default draw*/ 

			dom::element el = he;
			const wchar_t* filename = el.get_attribute("filename");
			if( !filename )
				return FALSE;  // no such attribute at all.

			// 先画图标
			SHFILEINFOW sfi;
			HIMAGELIST hlist = (HIMAGELIST) SHGetFileInfoW( filename,
				0, &sfi, sizeof(SHFILEINFO), 
				/*SHGFI_USEFILEATTRIBUTES |*/ SHGFI_SYSICONINDEX | SHGFI_SMALLICON );
			if(!hlist)
				return FALSE;
			int szx = 16;
			int szy = 16;
			ImageList_GetIconSize(hlist, &szx, &szy);
			int x = rc.left - 19; // 水平居左 // + (rc.right - rc.left - szx) / 2; 
			int y = rc.top + (rc.bottom - rc.top - szy) / 2; // 垂直居中

			//draw_file_icon(hdc, x, y, filename);
			ImageList_Draw(hlist, sfi.iIcon, hdc, x, y, ILD_TRANSPARENT);

			// 输出文字
			UINT pta = GetTextAlign(hdc);
			SetTextAlign(hdc, TA_LEFT | TA_TOP |TA_NOUPDATECP); 
			DrawTextW(hdc,  (is_fullpath(el) && (wcslen(filename) > 1)) ? filename : el.text(),
				-1,const_cast<RECT*>(&rc), 
				DT_SINGLELINE | DT_LEFT | DT_VCENTER | DT_PATH_ELLIPSIS | DT_NOPREFIX);
			SetTextAlign(hdc, pta); 

			return TRUE; /*skip default draw as we did it already*/ 
		}
예제 #23
0
파일: Panel.cpp 프로젝트: Artoria2e5/obtr
void Panel::NowPutCText()
{ 
  SetBkMode(hDC2,TRANSPARENT); 
  //SetTextColor(hDC2,RGB(0,147,221));
  SetTextColor(hDC2,RGB(255,100,100));
  SelectObject(hDC2,hPEN_Cyan);
  SetTextAlign(hDC2,TA_CENTER);SetBkColor(hDC2,RGB(145,48,48));
  SetBkMode(hDC2,OPAQUE);
  SelectObject(hDC2,hFNT_Panel);
  for (int i=0;i<ctext_num;i++) {  
  MoveTo (hDC2,CText_list[i].x+CText_list[i].lngth/2, CText_list[i].y+CText_list[i].dir*7+5);LineTo(hDC2,CText_list[i].x+CText_list[i].lngth/2,CText_list[i].y+5);
  LineTo(hDC2,CText_list[i].x-CText_list[i].lngth/2,CText_list[i].y+5);LineTo(hDC2,CText_list[i].x-CText_list[i].lngth/2,CText_list[i].y+CText_list[i].dir*7+5);
 
  TextOut(hDC2,CText_list[i].x,CText_list[i].y,CText_list[i].text, sizeof(char)*strlen(CText_list[i].text));
  }
};
예제 #24
0
void TflatButton::paint(DRAWITEMSTRUCT *dis)
{
    RECT &r=dis->rcItem;
    FillRect(dis->hDC,&r,GetSysColorBrush(COLOR_BTNFACE));
    SetTextAlign(dis->hDC,TA_LEFT|TA_BASELINE);
    char_t pomS[256];
    GetWindowText(dis->hwndItem,pomS,255);
    SIZE sz;
    GetTextExtentPoint32(dis->hDC,pomS,(int)strlen(pomS),&sz);
    TextOut(dis->hDC,(r.right-sz.cx)/2,r.bottom-sz.cy/2,pomS,(int)strlen(pomS));
    if (isMouse) {
        DrawEdge(dis->hDC,&r,(dis->itemState&ODS_SELECTED)?EDGE_SUNKEN:EDGE_RAISED,BF_RECT);
    } else {
        DrawEdge(dis->hDC,&r,EDGE_SUNKEN,BF_FLAT|BF_RECT);
    }
}
예제 #25
0
GUIEditMultiString::GUIEditMultiString(int32 bufSize/* = MAX_SIZE*/, eEditTextType eeType/* = EETT_ALL*/, GUIControlContainer * parent, const ControlRect &cr)
	:	GUIInputText		(eeType)
	,	GUIMultiString		((char16 *)NULL, parent, cr)
	,	isResizeable		(false)
{
	SetEditType(eeType);
	SetSelectable(true);


	SAFE_DELETE_ARRAY(GUIMultiString::textBuffer);
	GUIMultiString::bufferSize		=	bufSize;
	GUIMultiString::textBuffer		=	new char16[bufSize];

	GUIInputText::SetText(GUIMultiString::textBuffer, GUIMultiString::textSize, GUIMultiString::bufferSize);

	SetTextAlign(Font::EAP_LEFT | Font::EAP_VCENTER);
}
예제 #26
0
int ZLWin32PaintContext::stringWidth(const char *str, int len, bool rtl) const {
	if (myDisplayContext == 0) {
		return 0;
	}
	SetTextAlign(myDisplayContext, rtl ? TA_RTLREADING : 0);
	SIZE size;
	int utf8len = ZLUnicodeUtil::utf8Length(str, len);
	if (utf8len == len) {
		GetTextExtentPointA(myDisplayContext, str, len, &size);
	} else {
		static ZLUnicodeUtil::Ucs2String ucs2Str;
		ucs2Str.clear();
		ZLUnicodeUtil::utf8ToUcs2(ucs2Str, str, len, utf8len);
		GetTextExtentPointW(myDisplayContext, ::wchar(ucs2Str), utf8len, &size);
	}
	return size.cx;
}
예제 #27
0
void DrawTimeLine(HDC dc, QWORD pos, DWORD col, DWORD y)
{
	HPEN pen=CreatePen(PS_SOLID,0,col),oldpen;
	DWORD wpos=pos/bpp;
	DWORD time=BASS_ChannelBytes2Seconds(chan,pos)*1000; // position in milliseconds
	char text[16];
	sprintf(text,"%u:%02u.%03u",time/60000,(time/1000)%60,time%1000);
	oldpen=(HPEN)SelectObject(dc,pen);
	MoveToEx(dc,wpos,0,NULL);
	LineTo(dc,wpos,HEIGHT);
	SetTextColor(dc,col);
	SetBkMode(dc,TRANSPARENT);
	SetTextAlign(dc,wpos>=WIDTH/2?TA_RIGHT:TA_LEFT);
	TextOut(dc,wpos,y,text,strlen(text));
	SelectObject(dc,oldpen);
	DeleteObject(pen);
}
예제 #28
0
void PrintWinFont( UINT32 uiDestBuf, INT32 iFont, INT32 x, INT32 y, STR16 pFontString, ...)
{
	va_list				 argptr;
	CHAR16									string[512];
	HVSURFACE				hVSurface;
	LPDIRECTDRAWSURFACE2	pDDSurface;
	HDC					 hdc;
	HWINFONT				*pWinFont;
	int					 len;
	
	pWinFont = GetWinFont( iFont );

	if ( pWinFont == NULL )
	{
	return;
	}

	va_start(argptr, pFontString);			// Set up variable argument pointer
	len = vswprintf(string, pFontString, argptr);	// process gprintf string (get output str)
	va_end(argptr);

	// Get surface...
	GetVideoSurface( &hVSurface, uiDestBuf );

	pDDSurface = GetVideoSurfaceDDSurface( hVSurface );

	IDirectDrawSurface2_GetDC( pDDSurface, &hdc );

	SelectObject(hdc, pWinFont->hFont );
	SetTextColor( hdc, pWinFont->ForeColor );
	SetBkColor(hdc, pWinFont->BackColor );
	SetBkMode(hdc, TRANSPARENT);
	SetTextAlign(hdc, TA_TOP|TA_LEFT);

#ifdef DEC_INTERNAL_LEADING
	if (y - pWinFont->InternalLeading >=0)
	{
		y -= pWinFont->InternalLeading;
	}
#endif
	TextOutW( hdc, x, y, string, len );

	IDirectDrawSurface2_ReleaseDC( pDDSurface, hdc );

}
예제 #29
0
BOOL CALLBACK ListProc(HWND Dlg, UINT msg,WPARAM wparam,LPARAM lparam)
{

	switch (msg)
	{
		case WM_PAINT:
			{
				PAINTSTRUCT ps = {0};
				
				HDC hDC = BeginPaint(Dlg, &ps);
				HDC hdcMem = CreateCompatibleDC(hDC);
				HBITMAP hbmMem = CreateCompatibleBitmap(hDC, gRc.right, gRc.bottom);
				HANDLE hOld   = SelectObject(hdcMem, hbmMem);
				SetBkMode(hdcMem, TRANSPARENT);
				SetTextAlign(hdcMem, TA_CENTER);
				u32 x = gRc.right / 2;
				FillRect(hdcMem, &gRc, (HBRUSH)COLOR_WINDOW);
				SetTextColor(hdcMem, RGB(255, 0, 0));
				for (u32 i = 0; i < size; i++)
				{
					s32 pos = gPosY+(i*20);
					if (pos > gRc.bottom) break;
					if (team[i][strlen(team[i])-1] == 1)
					{
						SetTextColor(hdcMem, RGB(255, 0, 0));
						ExtTextOut(hdcMem, x, pos, ETO_CLIPPED, &gRc, team[i], strlen(team[i])-1, NULL);
					}
					else
					{
						SetTextColor(hdcMem, RGB(0, 0, 0));
						ExtTextOut(hdcMem, x, pos, ETO_CLIPPED, &gRc, team[i], strlen(team[i]), NULL);
					}
					if ((i == size-1) && (pos < (s32)(gRc.top - 20))) gPosY = gRc.bottom;
				}

				BitBlt(hDC, 0, 0, gRc.right, gRc.bottom, hdcMem, 0, 0, SRCCOPY);
				SelectObject(hdcMem, hOld);
				DeleteObject(hbmMem);
				DeleteDC(hdcMem);
				EndPaint(Dlg, &ps);
			}
			return TRUE;
	}
	return FALSE;
}
예제 #30
0
파일: dialog.c 프로젝트: luza/tehpatcher
void
dialog_paint_pb(HDC hDC)
{
    HDC tdc, memdc;
    HBITMAP tbmp, membmp;
    HFONT hFont;

    memdc = CreateCompatibleDC(hDC);
    membmp = CreateCompatibleBitmap(hDC, 565, 23);
    SelectObject(memdc, membmp);

    // paint background
    tbmp = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BG));
    tdc = CreateCompatibleDC(hDC);
    SelectObject(tdc, tbmp);
    BitBlt(memdc, 0, 0, 565, 23, tdc, 16, 334, SRCCOPY);
    DeleteDC(tdc);
    DeleteObject(tbmp);

    // paint foreground
    tbmp = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_PB));
    tdc = CreateCompatibleDC(hDC);
    SelectObject(tdc, tbmp);
    BitBlt(memdc, 0, 0, progress * 565 / 100, 23, tdc, 0, 0, SRCCOPY);
    DeleteDC(tdc);
    DeleteObject(tbmp);

    // paint text
    hFont = CreateFont(16, 0, 0, 0, FW_DONTCARE, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_OUTLINE_PRECIS,
                CLIP_DEFAULT_PRECIS, CLEARTYPE_QUALITY, VARIABLE_PITCH, TEXT("Tahoma"));

    SetBkMode(memdc, TRANSPARENT);
    SetTextAlign(memdc, TA_CENTER);
    SelectObject(memdc, hFont);

    TextOutW(memdc, 282, 3, pb_text, (INT)wcslen(pb_text));
    DeleteObject(hFont);

    // paint membmp onto window
    BitBlt(hDC, 16, 334, 565, 23, memdc, 0, 0, SRCCOPY);
    DeleteDC(memdc);
    DeleteObject(membmp);

    last_progress = progress;
}