Exemple #1
0
int DrawGr(HDC hdc)
{
    HPEN hPen, hOldPen;
    HBRUSH hBrush, hOldBrush;

    hPen = CreatePen(PS_SOLID, 1, RGB(255, 0, 0));
    hOldPen = SelectObject(hdc, hPen);
    hBrush = CreateHatchBrush(HS_CROSS, RGB(0, 255, 0));
    hOldBrush = SelectObject(hdc, hBrush);
    Rectangle(hdc, 10, 10, 200, 100);
    SelectObject(hdc, hOldPen);
    SelectObject(hdc, hOldBrush);
    DeleteObject(hPen);
    DeleteObject(hBrush);

    hPen = CreatePen(PS_DASH, 1, RGB(255, 100, 10));
    hOldPen = SelectObject(hdc, hPen);
    hBrush = CreateHatchBrush(HS_BDIAGONAL, RGB(0, 0, 255));
    hOldBrush = SelectObject(hdc, hBrush);
    Rectangle(hdc, 40, 40, 240, 140);
    SelectObject(hdc, hOldPen);
    SelectObject(hdc, hOldBrush);
    DeleteObject(hPen);
    DeleteObject(hBrush);

    hPen = CreatePen(PS_DOT, 1, RGB(100, 100, 100));
    hOldPen = SelectObject(hdc, hPen);
    SelectObject(hdc, GetStockObject(NULL_BRUSH));
    Rectangle(hdc, 70, 70, 270, 270);
    SelectObject(hdc, hOldPen);
    DeleteObject(hPen);

    DrawRect4(hdc); /* Call compiled function */
    return 0;
}
void Paint(HWND hWnd){
	hDC = BeginPaint(hWnd, &Ps);

	HPEN hPenOld;
	HPEN hLinePen;
	COLORREF qLineColor;

	qLineColor = RGB(255, 0, 0);
	hLinePen = CreatePen(PS_SOLID, 8, qLineColor);
	hPenOld = (HPEN)SelectObject(hDC, hLinePen);
	MoveToEx(hDC, 150, 0, NULL);
	LineTo(hDC, 150, 950);
	MoveToEx(hDC, 150, 775, NULL);
	LineTo(hDC, 1600, 775);

	HBRUSH      brCross = CreateHatchBrush(HS_CROSS, RGB(0, 128, 245));
	SelectObject(hDC, brCross);
	RoundRect(hDC, 150, 775, 1580, 850, 10, 10);

	SetTextColor(hDC, RGB(0, 0, 255));
	TextOut(hDC, 10, 760, "Powered by:", 12);
	TextOut(hDC, 30, 782, "IUSTIN PIRVU", 12);

	qLineColor = RGB(0, 0, 255);
	hLinePen = CreatePen(PS_SOLID, 4, qLineColor);
	hPenOld = (HPEN)SelectObject(hDC, hLinePen);
	HBRUSH      brDiagCross = CreateHatchBrush(HS_DIAGCROSS, RGB(0, 128, 0));
	SelectObject(hDC, brDiagCross);
	RoundRect(hDC, 175, 25, 1565, 750, 10, 10);

	NewBrush = CreateSolidBrush(RGB(255, 2, 5));
	SelectObject(hDC, NewBrush);
	Rectangle(hDC, 5, 440, 145, 515);
}
Exemple #3
0
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
	int id;
	HDC hdc;
	PAINTSTRUCT ps;
	HPEN hPen, hOldPen;
	HBRUSH hBrush, hOldBrush;

	switch (msg) {
		case WM_PAINT:
			hdc = BeginPaint(hWnd, &ps);
			hPen = CreatePen(PS_SOLID, 0, RGB(255, 0, 0));
			hOldPen = (HPEN)SelectObject(hdc, hPen);
			hBrush = CreateSolidBrush(RGB(0, 255, 0));
			hOldBrush = (HBRUSH)SelectObject(hdc, hBrush);
			Rectangle(hdc, 10, 10, 100, 100);
			
			DeleteObject(hBrush);
			hBrush = CreateHatchBrush(HS_BDIAGONAL, RGB(255, 0, 0));
			SelectObject(hdc, hBrush);
			Rectangle(hdc, 50, 50, 150, 150);
			DeleteObject(hBrush);
			hBrush = CreateHatchBrush(HS_FDIAGONAL, RGB(0, 0, 255));
			SelectObject(hdc, hBrush);
			Rectangle(hdc, 100, 100, 200, 200);
			DeleteObject(hBrush);
			hBrush = CreateHatchBrush(HS_CROSS, RGB(255, 0, 255));
			SelectObject(hdc,hBrush);
			Rectangle(hdc, 150, 150, 250, 250);
			DeleteObject(hBrush);
			hBrush = CreateHatchBrush(HS_DIAGCROSS, RGB(255, 255, 0));
			SelectObject(hdc, hBrush);
			Rectangle(hdc, 200, 200, 300, 300);
			DeleteObject(hBrush);
			hBrush = (HBRUSH)GetStockObject(NULL_BRUSH);
			SelectObject(hdc, hBrush);
			Rectangle(hdc, 250, 250, 350, 350);
			DeleteObject(hPen);
			SelectObject(hdc, hOldPen);
			SelectObject(hdc, hOldBrush);
			EndPaint(hWnd, &ps);
			break;
		case WM_CLOSE:
			id = MessageBox(hWnd,
				TEXT("終了してもよろしいですか"),
				TEXT("確認"),
				MB_YESNO | MB_ICONQUESTION);
			if (id == IDYES)
				DestroyWindow(hWnd);
			break;
		case WM_DESTROY:
			PostQuitMessage(0);
			break;
		default:
			return (DefWindowProc(hWnd, msg, wp, lp));
	}
	return 0;
}
Exemple #4
0
void PaintRoutine (HWND hwnd, HDC hdc, int cxArea, int cyArea)
{
     static TCHAR szString [] = TEXT ("Filling") ;
     HFONT        hFont ;
     SIZE         size ;

     hFont = EzCreateFont (hdc, TEXT ("Times New Roman"), 1440, 0, 0, TRUE) ;

     SelectObject (hdc, hFont) ;
     SetBkMode (hdc, TRANSPARENT) ;

     GetTextExtentPoint32 (hdc, szString, lstrlen (szString), &size) ;

     BeginPath (hdc) ;
     TextOut (hdc, (cxArea - size.cx) / 2, (cyArea - size.cy) / 2,
                    szString, lstrlen (szString)) ;
     EndPath (hdc) ;

     SelectObject (hdc, CreateHatchBrush (HS_DIAGCROSS, RGB (255, 0, 0))) ;
     SetBkColor (hdc, RGB (0, 0, 255)) ;
     SetBkMode (hdc, OPAQUE) ;

     StrokeAndFillPath (hdc) ;

     DeleteObject (SelectObject (hdc, GetStockObject (WHITE_BRUSH))) ;
     SelectObject (hdc, GetStockObject (SYSTEM_FONT)) ;
     DeleteObject (hFont) ;
}
Exemple #5
0
void CPipProp::Sizer::Draw(HDC hdc)
{
    HBRUSH hBrush=0;
    COLORREF color = RGB(0, 0, 0xFF);

    if (m_bSelected)
    {
        hBrush = CreateHatchBrush(HS_DIAGCROSS, color);
    }
    else
    {
        hBrush = CreateSolidBrush(color);
    }

    if (!hBrush)
        return;
        
    FrameRect(hdc, this, hBrush);

    if (m_bSelected)  // Draw the anchors
    {
        for (int i = 0; i < 4; i++)
        {
            FillRect(hdc, &m_Anchor[i], (HBRUSH)GetStockObject(BLACK_BRUSH));
        }
    }

    FrameRect(hdc, &m_BoundingRect, (HBRUSH)GetStockObject(BLACK_BRUSH));

    DeleteObject(hBrush);
}
void CMFC_DemoView::OnDraw(CDC* pDC)
{
	CMFC_DemoDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	if (!pDoc)
		return;

	// TODO: 在此处为本机数据添加绘制代码
	CClientDC hdc(this);
	SetMapMode(hdc, MM_ANISOTROPIC);       //设置映像模式
	HPEN hP = (HPEN)GetStockObject(BLACK_PEN);	//黑色画笔
	HBRUSH hB = (HBRUSH)GetStockObject(DKGRAY_BRUSH); //画刷
	SelectObject(hdc, hB);   //选择画刷
	SelectObject(hdc, hP);       //选择画笔
	RoundRect(hdc, 50, 120, 100, 200, 15, 15); //绘制圆角矩形
	hB = (HBRUSH)GetStockObject(LTGRAY_BRUSH);  //采用亮灰色画刷
	SelectObject(hdc, hB);  	   //选择画刷
	Ellipse(hdc, 150, 50, 200, 150); 	   //绘制椭圆
	hB = (HBRUSH)GetStockObject(HOLLOW_BRUSH); //虚画刷
	SelectObject(hdc, hB);  	  //选择画刷
	Pie(hdc, 250, 50, 300, 100, 250, 50, 300, 50);  	//绘制饼形

	hP = CreatePen(PS_DASHDOT, 1, RGB(0, 0, 255));
	hB = CreateHatchBrush(HS_HORIZONTAL, RGB(0, 255, 0));
	SelectObject(hdc, hP);
	SelectObject(hdc, hB);
	RoundRect(hdc, 35, 220, 115, 270, 15, 15);
	Ellipse(hdc, 125, 170, 225, 220);
	Pie(hdc, 250, 120, 300, 170, 300, 120, 300, 170);

}
Exemple #7
0
BOOL CMovableObj::Draw(HDC hDC, LPRECT pRect)
{_STT();
	RECT rect, intersection;
	CopyRect( &rect, &m_rect );
	OffsetRect( &rect, -m_lXOff, -m_lYOff );

	// Punt if off the canvas
	if ( !IntersectRect( &intersection, pRect, &rect ) )
		return FALSE;	

	// Draw the object
	OnDraw( hDC, &rect );

	if ( m_bSelected )
	{
		// Draw the rect frame
		HBRUSH hBrush = CreateHatchBrush( HS_BDIAGONAL, RGB( 0, 0, 0 ) );
		FrameRect( hDC, &rect, hBrush );
		DeleteObject( hBrush );

		// Draw a focus rect
		DrawFocusRect( hDC, &rect );

	} // end if

	return TRUE;
}
Exemple #8
0
static void test_hatch_brush(void)
{
    int i, size;
    HBRUSH brush;
    LOGBRUSH lb;

    for (i = 0; i < 20; i++)
    {
        SetLastError( 0xdeadbeef );
        brush = CreateHatchBrush( i, RGB(12,34,56) );
        if (i < HS_API_MAX)
        {
            ok( brush != 0, "%u: CreateHatchBrush failed err %u\n", i, GetLastError() );
            size = GetObject( brush, sizeof(lb), &lb );
            ok( size == sizeof(lb), "wrong size %u\n", size );
            ok( lb.lbColor == RGB(12,34,56), "wrong color %08x\n", lb.lbColor );
            if (i <= HS_DIAGCROSS)
            {
                ok( lb.lbStyle == BS_HATCHED, "wrong style %u\n", lb.lbStyle );
                ok( lb.lbHatch == i, "wrong hatch %lu/%u\n", lb.lbHatch, i );
            }
            else
            {
                ok( lb.lbStyle == BS_SOLID, "wrong style %u\n", lb.lbStyle );
                ok( lb.lbHatch == 0, "wrong hatch %lu\n", lb.lbHatch );
            }
            DeleteObject( brush );
        }
        else
        {
            ok( !brush, "%u: CreateHatchBrush succeeded\n", i );
            ok( GetLastError() == 0xdeadbeef, "wrong error %u\n", GetLastError() );
        }
    }
}
Exemple #9
0
void WinPaint::paint(HDC hdc){

	HPEN hP;    //¶¨Òå»­±Ê¾ä±ú
	HBRUSH  hB;   //¶¨Òå»­Ë¢¾ä±ú

	SetMapMode(hdc,MM_TEXT); 
	hB=CreateSolidBrush(RGB(255,255,255));
	SelectObject(hdc,hB);
	Rectangle(hdc,0,0,2000,2000);

	hP=CreatePen(PS_SOLID,1,RGB(255,0,0));
	SelectObject(hdc,hP);
	DeleteObject(hB);
	DeleteObject(hP);
	for(unsigned i = 0; i < roles.size(); i++){
		hB=CreateSolidBrush(RGB(i*37 % 255,i*111 % 255,i*153 % 255));
		SelectObject(hdc,hB);
		RECT rect = getRect(roles[i]->getAABB());
		Rectangle(hdc,rect.left,rect.top,rect.right,rect.bottom);
		DeleteObject(hB);
	}
	hP=CreatePen(PS_SOLID,1,RGB(0,0,255));
	hB=CreateHatchBrush(HS_CROSS,RGB(0,255,0));//ÂÌÉ«Íø×´

	SelectObject(hdc,hP);
	SelectObject(hdc,hB); //¸üл­Ë¢£¬Óá°ÂÌÉ«Íø×´¡±
	for(unsigned i = 0; i < houses.size(); i++){
		RECT rect = getRect(houses[i]->getAABB());
		Rectangle(hdc,rect.left,rect.top,rect.right,rect.bottom);
	}
	DeleteObject(hB);
	DeleteObject(hP);
}
Exemple #10
0
void PANEL_InitGDIResources(HINSTANCE hModule)
{ if (Panel_Resources_Loaded) return;
  hPEN_White=CreatePen(PS_SOLID,1,RGB(250,250,250));
  hPEN_Gray=CreatePen(PS_SOLID,1,RGB(100,100,100));
  hPEN_Black=CreatePen(PS_SOLID,1,RGB(15,15,15));
  hPEN_NULL=CreatePen(PS_NULL,1,RGB(0,0,0));
  hPEN_Cyan=CreatePen(PS_SOLID,1,RGB(255,100,100));
  hPEN_BYellow=CreatePen(PS_SOLID,1,RGB(0,250,0));
 // hPEN_LGray=CreatePen(PS_SOLID,1,RGB(180,180,160));
   hPEN_LGray=CreatePen(PS_SOLID,1,RGB(145,49,49));

  hBRUSH_Brown=CreateSolidBrush(RGB(10,10,10));
  hBRUSH_Sky=CreateSolidBrush(RGB(230,230,230));
  hBRUSH_Yellow=CreateSolidBrush(RGB(16,8,8));
  hBRUSH_BYellow=CreateSolidBrush(RGB(105,100,45));
  hBRUSH_Black=CreateSolidBrush(RGB(15,15,15));
  hBRUSH_TotalBlack=CreateSolidBrush(RGB(0,0,0));
  hBRUSH_FYellow=CreateSolidBrush(RGB(0,50,0));
  hBRUSH_Red=CreateSolidBrush(RGB(49,74,41));
  hBRUSH_Green=CreateSolidBrush(RGB(0,255,0));
  hBRUSH_White=CreateSolidBrush(RGB(255,255,255));
  hBRUSH_StrpWht=CreateHatchBrush(HS_BDIAGONAL,RGB(250,250,250));
  hBRUSH_Background=CreateSolidBrush(RGB(145,48,48));
  hBRUSH_LBkg=CreateSolidBrush(RGB(40,54,59));
  //hBRUSH_Gray=CreateSolidBrush(RGB(180,180,160));
  hBRUSH_Gray=CreateSolidBrush(RGB(145,49,49));
  hFNT_Panel=CreateFont(12,0,0,0,FW_NORMAL,0,0,0,ANSI_CHARSET,OUT_RASTER_PRECIS,
			 CLIP_DEFAULT_PRECIS,PROOF_QUALITY,DEFAULT_PITCH,"Arial");
  hBITMAP_ADI=LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP1));
  hClockSRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP1)));
  hSwitchSRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP2)));
  hHgaugeSRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP3)));
  hEgaugeSRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP4)));
  hRotarySRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP5)));
  hTbSRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP6)));
  hCbSRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP7)));
  hSliderSRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP8)));
  hCwSRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP9)));
  hMFDSRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP10)));
  hDockBSRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP14)));
  hDockSW1SRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP16)));
  hDockDlSRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP17)));
  hDockSW2SRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP18)));
  hNavSRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP19)));
  hRadarSRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP20)));
  hRadBkSRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP21)));
  hRadSrfSRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP22)));
  hFuelSRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP23)));
  hVrotSRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP26)));
  hVrotBkSRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP27)));
  hADIBorder=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP28)));
  hFront_Panel_SRF[1]=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP11)));
  hFront_Panel_SRF[2]=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP12)));
  hFront_Panel_SRF[3]=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP13)));
  hFront_Panel_SRF[4]=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP15)));
  hFront_Panel_SRF[5]=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP24)));
  hFront_Panel_SRF[6]=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP25)));
  Panel_Resources_Loaded=1;
 }
Exemple #11
0
static HBRUSH create_brush(void)
{
    int j = get_rand(0, num_hatches);
    if (j==0)
        return CreateSolidBrush(colors[get_rand(0, num_colors)]);
    else
        return CreateHatchBrush(j-1, colors[get_rand(0, num_colors)]);
}
Exemple #12
0
void CGame::PaintFlaggedSquare(HDC hdc, RECT& rect, CSquare& square)
{
	HBRUSH brush=CreateHatchBrush(HS_DIAGCROSS, RGB(255,0,0));
	HGDIOBJ brushOld ;
	brushOld=SelectObject(hdc,brush);
	Rectangle(hdc,rect.left, rect.top, rect.right, rect.bottom);
	SelectObject(hdc,brushOld);
	DeleteObject(brush);
}
Exemple #13
0
void CGame::PaintMineSquare(HDC hdc, RECT& rect, CSquare& square)
{
	HBRUSH brush=CreateHatchBrush(square.WasGameOver ? HS_BDIAGONAL : HS_DIAGCROSS, RGB(127,51,0));
	HGDIOBJ brushOld ;
	brushOld=SelectObject(hdc,brush);
	Rectangle(hdc,rect.left, rect.top, rect.right, rect.bottom);
	SelectObject(hdc,brushOld);
	DeleteObject(brush);
}
Exemple #14
0
void Test_MaskBlt_Brush()
{
    HDC hdcDst, hdcSrc;
    struct
    {
        BITMAPINFOHEADER bmiHeader;
        ULONG aulColors[2];
    } bmiData = {{sizeof(BITMAPINFOHEADER), 16, 16, 1, 1, BI_RGB, 0, 10, 10, 2,0}, {0, 0xFFFFFF}};
    PBITMAPINFO pbmi = (PBITMAPINFO)&bmiData;
    HBITMAP hbmDst, hbmSrc, hbmMsk;
    PULONG pulBitsDst, pulBitsSrc, pulBitsMsk;
    BOOL ret;
    HBRUSH hbr;

    /* Create a dest dc and bitmap */
    hdcDst = CreateCompatibleDC(NULL);
    hbmDst = CreateDIBSection(hdcDst, pbmi, DIB_RGB_COLORS, (PVOID*)&pulBitsDst, NULL, 0);
    SelectObject(hdcDst, hbmDst);

    /* Create a source dc and bitmap */
    hdcSrc = CreateCompatibleDC(NULL);
    hbmSrc = CreateDIBSection(hdcSrc, pbmi, DIB_RGB_COLORS, (PVOID*)&pulBitsSrc, NULL, 0);
    SelectObject(hdcSrc, hbmSrc);

    hbr = CreateHatchBrush(HS_CROSS, 0);
    ok(hbr != 0, "failed to create brush\n");
    ok(SelectObject(hdcDst, hbr) != 0, "failed to select brush\n");

    /* Do the masking (SRCCOPY / NOOP) */
    pulBitsDst[0] = 0x00000000;
    pulBitsSrc[0] = 0xFFFFFFFF;
    ret = MaskBlt(hdcDst, 0, 0, 8, 1, hdcSrc, 0, 0, NULL, 0, 0, MAKEROP4(SRCCOPY, 0xAA0000));
    ok(ret == 1, "MaskBlt failed (%d)\n", ret);
    ok(pulBitsDst[0] == 0, "pulBitsDst[0] == 0x%lx\n", pulBitsDst[0]);

    /* Create a 1 bpp pattern brush */
    pbmi->bmiHeader.biWidth = 8;
    hbmMsk = CreateDIBSection(hdcDst, pbmi, DIB_RGB_COLORS, (PVOID*)&pulBitsMsk, NULL, 0);
    ok(hbmMsk != 0, "CreateDIBSection failed\n");
    hbr = CreatePatternBrush(hbmMsk);
    ok(hbr != 0, "CreatePatternBrush failed\n");
    ok(SelectObject(hdcDst, hbr) != 0, "failed to select brush\n");

    /* Do the masking (SRCCOPY / NOOP) */
    pulBitsDst[0] = 0x00000000;
    pulBitsSrc[0] = 0xFFFFFFFF;
    pulBitsMsk[0] = 0xCCAAFF00;
    ret = MaskBlt(hdcDst, 0, 0, 16, 1, hdcSrc, 0, 0, NULL, 0, 0, MAKEROP4(SRCCOPY, 0xAA0000));
    ok(ret == 1, "MaskBlt failed (%d)\n", ret);
    ok(pulBitsDst[0] == 0, "pulBitsDst[0] == 0x%lx\n", pulBitsDst[0]);

}
void updateBrush() {
  if (g_brush)DeleteObject(g_brush);
  if (g_brushColor == EMPTY) {
    g_brush = (HBRUSH) GetStockObject(NULL_BRUSH);
  }
  else {
    if (g_brushStyle == BRUSH_STYLE_SOLID)
      g_brush = CreateSolidBrush(g_brushColor);
    else
      g_brush = CreateHatchBrush(g_brushStyle, g_brushColor);
  }
  SelectObject(g_hmemdc, g_brush);
}
Exemple #16
0
int WINAPI WinMain( HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR CmdArgs, int CmdShow )
{
    HWND wnd;
    WNDCLASSEX wc;
    MSG msg;
    HBRUSH backbrush;

    backbrush = CreateHatchBrush( HS_CROSS, 0x654321);

    wc.cbSize = sizeof( WNDCLASSEX );
    wc.hIcon = LoadIcon( NULL, IDI_APPLICATION );
    wc.hCursor = LoadCursor( hInst, "MyIcon" );
    wc.hbrBackground = backbrush;
    wc.hInstance = hInst;
    wc.lpszClassName = "JugglerClass";
    wc.lpszMenuName = NULL;
    wc.cbClsExtra = wc.cbWndExtra = 0;
    wc.lpfnWndProc = (WNDPROC)WndProc;
    wc.hIconSm = NULL;
    wc.style = 0;

    if( !RegisterClassEx( &wc ) )
    {
        MessageBox( NULL, "Could not Register Window Class", "Error", MB_OK );
        return 0;
    }

    wnd = CreateWindowEx( 0, "JugglerClass", "Juggler", WS_CAPTION | WS_SYSMENU, CW_USEDEFAULT, CW_USEDEFAULT, WIDTH + GetSystemMetrics( SM_CXBORDER ) * 2, HEIGHT + GetSystemMetrics( SM_CYCAPTION ) + GetSystemMetrics( SM_CYBORDER), NULL, NULL, hInst, NULL );

    if( wnd == NULL )
    {
        MessageBox( NULL, "Could not create window", "Error", MB_OK );
        UnregisterClass( "JugglerClass", hInst );
        return 0;
    }

    ShowWindow( wnd, SW_SHOW );
    UpdateWindow( wnd );

    while( GetMessage( &msg, wnd, 0, 0 ) > 0 )
    {
        TranslateMessage( &msg );
        DispatchMessage( &msg );
    }

    UnregisterClass( "JugglerClass", hInst );
    DeleteObject( backbrush );

    return 0;
}
void ZLWin32PaintContext::setFillColor(ZLColor color, FillStyle style) {
	if (myDisplayContext == 0) {
		return;
	}
	// TODO: optimize (don't create new brush, if color and style are not changed)
	if (myFillBrush != 0) {
		DeleteObject(myFillBrush);
	}
	COLORREF colorref = RGB(color.Red, color.Green, color.Blue);
	myFillBrush =
		(style == SOLID_FILL) ?
			CreateSolidBrush(colorref) :
			CreateHatchBrush(HS_DIAGCROSS, colorref);
}
void DrawRect4(HDC hdc) {
    HPEN hPen, hOldPen;
    HBRUSH hBrush, hOldBrush;

    hPen = CreatePen(PS_DASHDOTDOT, 1, RGB(0, 255, 0));
    hOldPen = SelectObject(hdc, hPen);
    hBrush = CreateHatchBrush(HS_DIAGCROSS, RGB(255, 0, 255));
    hOldBrush = SelectObject(hdc, hBrush);
    Rectangle(hdc, 100, 100, 200, 160);
    SelectObject(hdc, hOldPen);
    SelectObject(hdc, hOldBrush);
    DeleteObject(hPen);
    DeleteObject(hBrush);
}
Exemple #19
0
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR cmd, int nCmdShow )
{
	WNDCLASSEX wc;
	HWND window;
	MSG message;

	static LPCSTR szAppName = { "Color Lines XP " };

	wc.cbSize = sizeof( WNDCLASSEX );
	wc.cbClsExtra = 0;
	wc.cbWndExtra = 0;
	wc.hbrBackground = CreateHatchBrush( HS_DIAGCROSS, RGB( 12, 150, 255 ) );
	wc.hCursor = LoadCursor( 0, IDC_ARROW );
	wc.hIcon = LoadIcon( 0, IDI_APPLICATION );
	wc.hIconSm = LoadIcon( 0, IDI_APPLICATION );
	wc.hInstance = hInstance;
	wc.lpfnWndProc = WndProc;
	wc.lpszClassName = szAppName;
	wc.lpszMenuName = 0;
	wc.style = CS_HREDRAW | CS_VREDRAW;

	RegisterClassEx( &wc );

	window = CreateWindow( 
		szAppName,
		"Color Lines XP",
		WS_OVERLAPPEDWINDOW,
		0, 0,
		( NUMSQUARES + 2 ) * ( SQUARE_SIZE + 2 ) , ( NUMSQUARES + 2 ) * ( SQUARE_SIZE + 2 ),
		0,
		0,
		hInstance,
		0 );

	ShowWindow( window, nCmdShow );

	while( GetMessage( &message, 0, 0, 0 ) )
	{
		TranslateMessage( &message );
		DispatchMessage( &message );
	}

	return message.wParam;
}
Exemple #20
0
void CreateDrawElements(PGPContextRef context,DRAWSTRUCT *ds)
{
	LOGFONT lf;

	ds->DisplayMarginal=FALSE;

    ds->stdbarbrush = 
        CreateSolidBrush (GetSysColor (COLOR_3DSHADOW));
    ds->spcbarbrush = 
        CreateHatchBrush(HS_BDIAGONAL, GetSysColor (COLOR_WINDOW));
    ds->g_seltextpen = 
        CreatePen (PS_SOLID, 0, GetSysColor (COLOR_WINDOWTEXT));
    ds->g_unseltextpen =
        CreatePen (PS_SOLID, 0, GetSysColor (COLOR_WINDOW));

	ds->barcolor = GetSysColor (COLOR_3DSHADOW);

    ds->buttonpen = CreatePen(PS_SOLID, 0, GetSysColor (COLOR_3DSHADOW));
	ds->hilightpen = CreatePen (PS_SOLID, 0, 
								GetSysColor (COLOR_3DHILIGHT));
	ds->shadowpen = CreatePen (PS_SOLID, 0, 
								GetSysColor (COLOR_3DDKSHADOW));

    ds->barbgbrush = CreateSolidBrush (GetSysColor (COLOR_3DFACE));

    ds->HighBrush=CreateSolidBrush(GetSysColor(COLOR_HIGHLIGHT));
    ds->BackBrush=CreateSolidBrush(GetSysColor(COLOR_WINDOW));

    SystemParametersInfo (SPI_GETICONTITLELOGFONT, 
		sizeof(LOGFONT), &lf, 0);

    ds->hFont=CreateFontIndirect (&lf);
    lf.lfItalic = !lf.lfItalic;
    ds->hItalic=CreateFontIndirect (&lf);
    lf.lfItalic = !lf.lfItalic;
    lf.lfStrikeOut=TRUE;
    ds->hStrikeOut = CreateFontIndirect (&lf);

	// ImageList Init

	PGPsdkUICreateImageList(&(ds->hIml));
}
Exemple #21
0
void CGame::PaintNumberSquare(HDC hdc, RECT& rect, CSquare& square)
{
	HBRUSH brush=CreateHatchBrush(HS_DIAGCROSS, RGB(127.5,0,255));
	HGDIOBJ brushOld ;
	brushOld=SelectObject(hdc,brush);
	Rectangle(hdc,rect.left, rect.top, rect.right, rect.bottom);
	SelectObject(hdc,brushOld);
	DeleteObject(brush);
	LPCTSTR pszCount=NULL;
	switch (square.AdjacentMineCount)
	{
	case 1:
		pszCount=_T("1");
		break;
	case 2:
		pszCount=_T("2");
		break;
	case 3:
		pszCount=_T("3");
		break;
	case 4:
		pszCount=_T("4");
		break;
	case 5:
		pszCount=_T("5");
		break;
	case 6:
		pszCount=_T("6");
		break;
	case 7:
		pszCount=_T("7");
		break;
	case 8:
		pszCount=_T("8");
		break;
	default:
		break;
	}
	if(pszCount!=NULL)
		TextOut(hdc, rect.left+8,rect.top+4,pszCount,1);

}
//
//   FUNCTION: InitInstance(HINSTANCE, int)
//
//   PURPOSE: Saves instance handle and creates main window
//
//   COMMENTS:
//
//        In this function, we save the instance handle in a global variable and
//        create and display the main program window.
//
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
   hInst = hInstance; // Store instance handle in our global variable

   hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
      CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

   if (!hWnd)
   {
      return FALSE;
   }

    DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS;

	brush = CreateHatchBrush(HS_BDIAGONAL, RGB(0, 0x80, 0xFF));

	ShowWindow(hWnd, nCmdShow);
   UpdateWindow(hWnd);

   return TRUE;
}
Exemple #23
0
BOOL CFigure::Draw(static HDC hdc, static float Scale)
{
	BOOL tmp = true;
	wchar_t buffer[64];

	HPEN hp = CreatePen(borderStyle, 0, borderColor);
	HBRUSH hbr = CreateHatchBrush(backgroundStyle, backgroundColor);

	SelectObject(hdc, hp);

	if (backgroundStyle == -1) {
		SetDCBrushColor(hdc, backgroundColor);
		SelectObject(hdc, GetStockObject(DC_BRUSH));
	}
	else
		SelectObject(hdc, hbr);

	if (strcmp(type, "line") == 0) {
		tmp = MoveToEx(hdc, start.GetX() * Scale, start.GetY() * Scale, NULL);
		if (!tmp)
			return tmp;
		tmp = LineTo(hdc, end.GetX() * Scale, end.GetY() * Scale);
	}
	else if (strcmp(type, "rectangle") == 0) {
		tmp = Rectangle(hdc, start.GetX() * Scale, start.GetY() * Scale, end.GetX() * Scale, end.GetY() * Scale);
	}
	else if (strcmp(type, "rectangle_rounded") == 0) {
		tmp = RoundRect(hdc, start.GetX() * Scale, start.GetY()* Scale, end.GetX() * Scale, end.GetY() * Scale, 10, 10);

	}
	else if (strcmp(type, "ellipse") == 0) {
		tmp = Ellipse(hdc, start.GetX() * Scale, start.GetY()* Scale, end.GetX() * Scale, end.GetY() * Scale);
	}

	DeleteObject(hp);
	DeleteObject(hbr);

	return tmp;
}
Exemple #24
0
void
vTestKerning(
    HWND hwnd,
    HDC  hdc,
    RECT *prect
)
{
    FTPARAM ftp;
    HBRUSH hbOld;
    char ach[100];
    char *psz1 = "*** GetKerningPairs Test ***";
    char *psz2 = "*** GetKerningPairs Test is Finished ***";
    HBRUSH hbrushKern;

    hbrushKern = CreateHatchBrush(HS_CROSS,RGB(0xC0,0xC0,0xC0));

    hbOld = SelectObject(hdc,hbrushKern);
    PatBlt(
        hdc,
        prect->left,
        prect->top,
        prect->right - prect->left,
        prect->bottom - prect->top,
        PATCOPY
    );
    SelectObject(hdc,hbOld);
    DeleteObject(hbrushKern);

    ftp.hwnd  = hwnd;
    ftp.hdc   = hdc;
    ftp.prect = prect;

    TextOut(hdc,0,0,psz1,strlen(psz1));
    EnumFonts(hdc,(LPCSTR) NULL,FontFunc,(LPARAM) &ftp);
    TextOut(hdc,0,0,psz2,strlen(psz2));


}
Exemple #25
0
//-------------------------------------【 Game_Init() 函数 】-------------------------------------------------------------
// 描述:初始化函数,进行一些简单的初始化
//------------------------------------------------------------------------------------------------------------------------
BOOL Game_Init(HWND hwnd)
{
	g_hdc = GetDC(hwnd);
	srand((unsigned)time(NULL));
	
	//随机初始化画笔和画刷的颜色值
	for (int i = 1; i <= 6; i++)
	{
		g_hpen[i] = CreatePen(g_iPenStyle[i], 1, RGB(rand() % 256, rand() % 256, rand() % 256));

		if (i == 6)
		{
			g_hbrush[i] = CreateSolidBrush(RGB(rand() % 256, rand() % 256, rand() % 256));
		}
		else
		{
			g_hbrush[i] = CreateHatchBrush(g_iBrushStyle[i], RGB(rand() % 256, rand() % 256, rand() % 256));
		}
	}

	Game_Paint(hwnd);
	ReleaseDC(hwnd, g_hdc);
	return true;
}
Exemple #26
0
//---------------------------------------------------------------------------
void __fastcall TShadeSelect::DrawItem(int Index, const TRect &Rect, TOwnerDrawState State)
{
  //There seems to be a bug in TBrush, so CreateHatchBrush and CreateSolidBrush
  //are used directly to get a handle
  switch(Index)
  {
    case 0: Canvas->Brush->Handle = CreateSolidBrush(Color); break;
    case 1: Canvas->Brush->Handle = CreateHatchBrush(HS_HORIZONTAL, Color); break;
    case 2: Canvas->Brush->Handle = CreateHatchBrush(HS_VERTICAL, Color); break;
    case 3: Canvas->Brush->Handle = CreateHatchBrush(HS_FDIAGONAL, Color); break;
    case 4: Canvas->Brush->Handle = CreateHatchBrush(HS_BDIAGONAL, Color); break;
    case 5: Canvas->Brush->Handle = CreateHatchBrush(HS_CROSS, Color); break;
    case 6: Canvas->Brush->Handle = CreateHatchBrush(HS_DIAGCROSS, Color); break;
  }
  unsigned OldColor = GetBkColor(Canvas->Handle);
  SetBkColor(Canvas->Handle, clWhite);
  Canvas->FillRect(Rect);
  SetBkColor(Canvas->Handle, OldColor);
}
Exemple #27
0
/* Window message handle function */
LRESULT CALLBACK MyWindowFunc( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam )
{
  HDC hDC;
  PAINTSTRUCT ps;
  DOUBLE a, r;
  CHAR s[300];
  SYSTEMTIME t;
  HPEN hPen, hOldPen;
  HBRUSH hBr, hOldBr;
  CREATESTRUCT *cs;
  MINMAXINFO *MinMax;
  static POINT pts[] =
  {
    {0, 0}, {30, 300}, {200, 20}
  };
  static HFONT hFnt;
  static INT w, h;
  static BITMAP bm, bmPig;
  static HBITMAP hFrame, hFace, hPigXOR, hPigAND;
  static HDC hMemDCFrame, hMemDCFace, hMemDCPig;

  switch (Msg)
  {
  case WM_GETMINMAXINFO:
    MinMax = (MINMAXINFO *)lParam;
    MinMax->ptMaxTrackSize.y =
      GetSystemMetrics(SM_CYMAXTRACK) +
      GetSystemMetrics(SM_CYCAPTION) +
      GetSystemMetrics(SM_CYMENU) +
      GetSystemMetrics(SM_CYBORDER) * 2;
    return 0;
  case WM_CREATE:
    cs = (CREATESTRUCT *)lParam;
    SetTimer(hWnd, 11, 2, NULL);

    hFace = LoadBitmap(cs->hInstance, (CHAR *)IDB_CLOCKFACE);
    GetObject(hFace, sizeof(bm), &bm);

    hPigXOR = LoadImage(cs->hInstance, (CHAR *)IDB_XOR, IMAGE_BITMAP, 0, 0, 0);
    GetObject(hPigXOR, sizeof(bmPig), &bmPig);
    hPigAND = LoadImage(cs->hInstance, (CHAR *)IDB_AND, IMAGE_BITMAP, 0, 0, 0);

    hDC = GetDC(hWnd);
    hMemDCFace = CreateCompatibleDC(hDC);
    hMemDCFrame = CreateCompatibleDC(hDC);
    hMemDCPig = CreateCompatibleDC(hDC);
    ReleaseDC(hWnd, hDC);

    SelectObject(hMemDCFace, hFace);

    hFnt = CreateFont(59, 0, 0, 9000, FW_BOLD, FALSE, FALSE, FALSE,
      RUSSIAN_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
      DEFAULT_QUALITY, VARIABLE_PITCH | FF_SCRIPT, "Bookman Old Style");
    SelectObject(hMemDCFrame, hFnt);
    return 0;
  case WM_SIZE:
    w = LOWORD(lParam);
    h = HIWORD(lParam);

    if (hFrame != NULL)
      DeleteObject(hFrame);
    hDC = GetDC(hWnd);
    hFrame = CreateCompatibleBitmap(hDC, w, h);
    ReleaseDC(hWnd, hDC);

    SelectObject(hMemDCFrame, hFrame);
    SendMessage(hWnd, WM_TIMER, 0, 0);
    return 0;
  case WM_KEYDOWN:
    if (LOWORD(wParam) == 'F')
      FlipFullScreen(hWnd);
    else if (LOWORD(wParam) == VK_ESCAPE)
      DestroyWindow(hWnd);
    return 0;
  case WM_ERASEBKGND:
    return 0;
  case WM_TIMER:
    SelectObject(hMemDCFrame, GetStockObject(NULL_PEN));
    Rectangle(hMemDCFrame, 0, 0, w + 1, h + 1);
    BitBlt(hMemDCFrame, (w - bm.bmWidth) / 2, (h - bm.bmHeight) / 2,
      bm.bmWidth, bm.bmHeight, hMemDCFace, 0, 0, SRCCOPY);

    GetLocalTime(&t);

    a = (t.wSecond) * 2 * 3.1415926535 / 60;
    r = bm.bmWidth / 2.2;
    
    hPen = CreatePen(PS_SOLID, 6, RGB(0xFF, 0, 0xFF));
    hOldPen = SelectObject(hMemDCFrame, hPen);
    MoveToEx(hMemDCFrame, w / 2, h / 2, NULL);
    LineTo(hMemDCFrame, w / 2 + sin(a) * r, h / 2 - cos(a) * r);
    SelectObject(hMemDCFrame, hOldPen);
    DeleteObject(hPen);

    a = (t.wMinute + t.wSecond / 60.0) * 2 * 3.1415926535 / 60;
    r = bm.bmWidth / 3.2;
    hPen = CreatePen(PS_SOLID, 10, RGB(0, 0, 255));
    hOldPen = SelectObject(hMemDCFrame, hPen);
    MoveToEx(hMemDCFrame, w / 2, h / 2, NULL);
    LineTo(hMemDCFrame, w / 2 + sin(a) * r, h / 2 - cos(a) * r);
    SelectObject(hMemDCFrame, hOldPen);
    DeleteObject(hPen);

    a = (t.wHour % 12 + t.wMinute / 60.0) * 2 * 3.1415926535 / 12;
    r = bm.bmWidth / 4.0;
    MoveToEx(hMemDCFrame, w / 2, h / 2, NULL);
    LineTo(hMemDCFrame, w / 2 + sin(a) * r, h / 2 - cos(a) * r);

    /* SetBkMode(hMemDCFrame, TRANSPARENT); */
    SetTextColor(hMemDCFrame, RGB(130, 90, 30));
    TextOut(hMemDCFrame, 0, h / 2 + h / 2 * sin(clock() / 2000.0), s,
      sprintf(s, "Current date: %02i.%02i.%i", t.wDay, t.wMonth, t.wYear));
    /* VOID WINAPI GetLocalTime(lpSystemTime); */

    SelectObject(hMemDCPig, hPigAND);
    BitBlt(hMemDCFrame, 200 + 150 * sin(clock() / 200.0), 100,
      bmPig.bmWidth, bmPig.bmHeight, hMemDCPig, 0, 0, SRCAND);
    SelectObject(hMemDCPig, hPigXOR);
    BitBlt(hMemDCFrame, 200 + 150 * sin(clock() / 200.0), 100,
      bmPig.bmWidth, bmPig.bmHeight, hMemDCPig, 0, 0, SRCINVERT);


    hBr = CreateHatchBrush(HS_DIAGCROSS, RGB(0, 0, 255));
    SetBkMode(hMemDCFrame, TRANSPARENT);
    hOldBr = SelectObject(hMemDCFrame, hBr);
    Polygon(hMemDCFrame, pts, 3);
    SelectObject(hMemDCFrame, hOldBr);
    DeleteObject(hBr);

    a = clock() / (DOUBLE)CLOCKS_PER_SEC;
    Draw(hMemDCFrame, 100, 100, 30 * sin(a * 5));
    Draw(hMemDCFrame, 100, 100, 59 * sin(-a * 8));
    Draw(hMemDCFrame, 100, 100, 36 * a);
    Draw(hMemDCFrame, 100, 100, -36 * a);

    InvalidateRect(hWnd, NULL, FALSE);
    return 0;
  case WM_PAINT:
    hDC = BeginPaint(hWnd, &ps);
    BitBlt(hDC, 0, 0, w, h, hMemDCFrame, 0, 0, SRCCOPY);
    EndPaint(hWnd, &ps);
    return 0;
  case WM_DESTROY:
    KillTimer(hWnd, 11);
    DeleteDC(hMemDCFrame);
    DeleteDC(hMemDCFace);
    DeleteObject(hFrame);
    DeleteObject(hFace);
    DeleteObject(hFnt);
    PostQuitMessage(0);
    return 0;
  }
  return DefWindowProc(hWnd, Msg, wParam, lParam);
} /* End of 'MyWindowFunc' function */
Exemple #28
0
static LRESULT CALLBACK ColourPickerWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch(message) {
	case WM_CREATE:
		SetWindowLongPtr(hwnd, 0, 0);
		SetWindowLongPtr(hwnd, sizeof(COLORREF), 0);
		break;
	case CPM_SETDEFAULTCOLOUR:
		SetWindowLongPtr(hwnd, sizeof(COLORREF), lParam);
		break;
	case CPM_GETDEFAULTCOLOUR:
		return GetWindowLongPtr(hwnd, sizeof(COLORREF));
	case CPM_SETCOLOUR:
		SetWindowLongPtr(hwnd, 0, lParam);
		InvalidateRect(hwnd, NULL, FALSE);
		break;
	case CPM_GETCOLOUR:
		return GetWindowLongPtr(hwnd, 0);
	case WM_LBUTTONUP:
		{
			CHOOSECOLOR cc = {0};
			COLORREF custColours[16] = {0};
			custColours[0] = GetWindowLongPtr(hwnd, sizeof(COLORREF));
			cc.lStructSize = sizeof(CHOOSECOLOR);
			cc.hwndOwner = hwnd;
			cc.hInstance = (HWND)hInst;
			cc.rgbResult = GetWindowLongPtr(hwnd, 0);
			cc.lpCustColors = custColours;
			cc.Flags = CC_ANYCOLOR|CC_FULLOPEN|CC_RGBINIT;
			if (ChooseColor(&cc)) {
				SetWindowLongPtr(hwnd, 0, cc.rgbResult);
				SendMessage(GetParent(hwnd), WM_COMMAND, MAKEWPARAM(GetDlgCtrlID(hwnd), CPN_COLOURCHANGED), (LPARAM)hwnd);
				InvalidateRect(hwnd, NULL, FALSE);
			}
			break;
		}
	case WM_ENABLE:
		InvalidateRect(hwnd, NULL, FALSE);
		break;
	case WM_NCPAINT:
	case WM_PAINT:
		{
			PAINTSTRUCT ps;
			HDC hdc1;
			RECT rc;
			HBRUSH hBrush;

			hdc1 = BeginPaint(hwnd, &ps);
			GetClientRect(hwnd, &rc);
			DrawEdge(hdc1, &rc, EDGE_ETCHED, BF_RECT);
			InflateRect(&rc, -2, -2);
			if (IsWindowEnabled(hwnd))
				hBrush = CreateSolidBrush(GetWindowLongPtr(hwnd, 0));
			else
				hBrush = CreateHatchBrush(HS_BDIAGONAL, GetSysColor(COLOR_GRAYTEXT));
			SetBkColor(hdc1, GetSysColor(COLOR_BTNFACE));
			FillRect(hdc1, &rc, hBrush);
			DeleteObject(hBrush);
			EndPaint(hwnd, &ps);
			break;
		}
	}
	return DefWindowProc(hwnd, message, wParam, lParam);
}
void CStandardApertureViewStatic::Draw(CDC* dc)
{
   CCEtoODBDoc* doc = getCamCadDoc();
   CCamCadDocGraph camCadDocGraph(doc);

   static bool writeCcFileForDebugFlag = false;

   if (writeCcFileForDebugFlag)
   {
      //doc->SaveDatafile("C:\\CStandardApertureViewStatic-Debug.cc");
   }

   if (m_camCadFrame == NULL)
   {
      return;
   }

   LOGFONT logFont;
   logFont.lfHeight         = 0;
   logFont.lfWidth          = 0;
   logFont.lfEscapement     = 0;
   logFont.lfOrientation    = 0;
   logFont.lfWeight         = FW_NORMAL;
   logFont.lfItalic         = 0;
   logFont.lfUnderline      = 0;
   logFont.lfStrikeOut      = 0;
   logFont.lfCharSet        = ANSI_CHARSET;
   logFont.lfOutPrecision   = OUT_DEFAULT_PRECIS;
   logFont.lfClipPrecision  = CLIP_DEFAULT_PRECIS;
   logFont.lfQuality        = ANTIALIASED_QUALITY;
   logFont.lfPitchAndFamily = DEFAULT_PITCH || FF_SWISS;
   strncpy(logFont.lfFaceName,"Microsoft Sans Serif",LF_FACESIZE);

   CSize windowExtents = dc->GetWindowExt();
   CPoint windowOrigin = dc->GetWindowOrg();

   for (int displayLayerIndex = 0;displayLayerIndex < m_camCadFrame->getDisplayedLayerCount();displayLayerIndex++)
   {
      int layerIndex = m_camCadFrame->getDisplayedLayerIndex(displayLayerIndex);
      LayerStruct* layer = doc->getLayerAt(layerIndex);

      bool stencilLayerFlag = ((layer->getName().CompareNoCase(QDimStencilPad)    == 0) ||
                               (layer->getName().CompareNoCase(QBrightStencilPad) == 0)    );

      for (POSITION filePos = doc->getFileList().GetHeadPosition();filePos != NULL;)
      {
         FileStruct *file = doc->getFileList().GetNext(filePos);

         if (!file->isShown() || file->isHidden() || file->notPlacedYet())
            continue;

         if (file->getBlock() == NULL)
            continue;

         CTMatrix matrix;
         matrix.translateCtm(file->getInsertX(),file->getInsertY());
         matrix.rotateRadiansCtm(file->getRotation());
         matrix.scale(file->getScale(),file->getScale());

         double fileX = file->getInsertX();
         double fileRot = file->getRotation();
         int fileMirror = (doc->getBottomView() ? MIRROR_FLIP : 0) ^ (file->isMirrored() ? MIRROR_FLIP | MIRROR_LAYERS : 0);
         if (doc->getBottomView())
         {
            fileX = -fileX;
            fileRot = -fileRot;
            matrix.scale(-1.,1.);
         }

         matrix.scale(1./m_scaleFactor,1./m_scaleFactor);
         matrix.translate(-windowExtents.cx * m_scaleFactor/2.,-windowExtents.cy * m_scaleFactor/2.);

         Mat2x2 m;
         RotMat2(&m, fileRot);
         
         for (POSITION dataPos = file->getBlock()->getDataList().GetHeadPosition();dataPos != NULL;)
         {
            DataStruct *data = file->getBlock()->getDataList().GetNext(dataPos);
            LayerStruct* layerStruct = doc->getLayerAt(data->getLayerIndex());

            if (layerStruct->getLayerIndex() != layerIndex)
            {
               continue;
            }

            switch (data->getDataType())
            {
            case dataTypeText:
               {
                  TextStruct* textStruct = data->getText();
                  dc->SetTextColor(layerStruct->getColor());
                  drawText(dc,textStruct);
               }

               break;

            case dataTypeInsert:
               {
                  switch (data->getInsert()->getInsertType())
                  {
                  case insertTypeUnknown:
                  case insertTypePcbComponent:  
                  case insertTypePcb:
                  case insertTypeDrillTool:
                  case insertTypeSymbol:
                  case insertTypeStencilHole:
                     break;
                     
                  default:
                     continue;
                  }

                  if (data->getInsert()->getPlacedBottom() ^ (doc->getBottomView() != 0))
                     continue;

                  BlockStruct *subblock = doc->Find_Block_by_Num(data->getInsert()->getBlockNumber());

                  Point2 point2;
                  point2.x = data->getInsert()->getOriginX() * file->getScale();
                  if (fileMirror & MIRROR_FLIP)
                     point2.x = -point2.x;
                  point2.y = data->getInsert()->getOriginY() * file->getScale();
                  TransPoint2(&point2, 1, &m, fileX, file->getInsertY());

                  if ( (subblock->getFlags() & BL_TOOL) || (subblock->getFlags() & BL_BLOCK_TOOL) ||
                        (subblock->getFlags() & BL_APERTURE) || (subblock->getFlags() & BL_BLOCK_APERTURE) )
                  {
                     dc->SetPixelV(round(point2.x / m_scaleFactor), round(point2.y / m_scaleFactor), doc->get_layer_color(data->getLayerIndex(), fileMirror));
                  }
                  else if (subblock->extentIsValid())
                  {
                     double _rot;
                     if (fileMirror & MIRROR_FLIP)
                        _rot = fileRot - data->getInsert()->getAngle();
                     else
                        _rot = fileRot + data->getInsert()->getAngle();
                     int _mirror = fileMirror ^ data->getInsert()->getMirrorFlags();
                     double _scale = file->getScale() * data->getInsert()->getScale();


                     double xmin, xmax, ymin, ymax;
                     TransformInsertExtents(&xmin, &xmax, &ymin, &ymax, subblock, point2.x, point2.y, _scale, _rot, _mirror);
      
                     HPEN orgPen, hPen;
                     HBRUSH orgBrush;
                     hPen = CreatePen(PS_SOLID, 0, doc->getSettings().HideDetailColor);
                     orgPen = (HPEN) SelectObject(dc->m_hDC, hPen);
                     orgBrush = (HBRUSH) dc->SelectStockObject(HOLLOW_BRUSH);
                     dc->Rectangle(round(xmin / m_scaleFactor), round(ymax / m_scaleFactor), round(xmax / m_scaleFactor), round(ymin / m_scaleFactor));
                     DeleteObject(SelectObject(dc->m_hDC, orgPen));
                     SelectObject(dc->m_hDC, orgBrush);
                  }
               }
               break;

            case dataTypePoint:
               {
                  if (!doc->FindLayer(data->getLayerIndex())->isWorldView())
                     continue;

                  Point2 point2;
                  point2.x = data->getPoint()->x * file->getScale();
                  if (fileMirror)
                     point2.x = -point2.x;
                  point2.y = data->getPoint()->y * file->getScale();
                  TransPoint2(&point2, 1, &m, fileX, file->getInsertY());

                  dc->SetPixelV(round(point2.x / m_scaleFactor), round(point2.y / m_scaleFactor), doc->get_layer_color(data->getLayerIndex(), fileMirror));
               }
               break;

            case dataTypePoly:
               {
                  COLORREF layerColor = doc->get_layer_color(data->getLayerIndex(), fileMirror);
                  int widthIndex = -2;

                  HPEN orgPen, hPen;
                  hPen = CreatePen(PS_SOLID, 0, layerColor);
                  orgPen = (HPEN) SelectObject(dc->m_hDC, hPen);

                  HBRUSH originalBrush,brush;

                  if (stencilLayerFlag)
                  {
                     brush = CreateHatchBrush(HS_DIAGCROSS,layerColor);
                  }
                  else
                  {
                     brush = CreateSolidBrush(layerColor);
                  }

                  originalBrush = (HBRUSH)SelectObject(dc->m_hDC,brush);

                  POSITION polyPos = data->getPolyList()->GetHeadPosition();
                  while (polyPos != NULL)
                  {
                     CPoly *poly = data->getPolyList()->GetNext(polyPos);

                     if (poly->getWidthIndex() != widthIndex)
                     {
                        widthIndex = poly->getWidthIndex();
                        double width = doc->getWidth(widthIndex);
                        int pixels = round(width / m_scaleFactor);

                        HPEN hPen = CreatePen(PS_SOLID,pixels, layerColor);
                        DeleteObject(SelectObject(dc->m_hDC,hPen));
                     }

                     if (poly->isFilled())
                     {
                        dc->BeginPath();
                     }

                     double bulge, lastx, lasty;

                     BOOL First = TRUE;
                     POSITION pntPos = poly->getPntList().GetHeadPosition();
                     while (pntPos)
                     {
                        CPnt *pnt = poly->getPntList().GetNext(pntPos);

                        Point2 point2;
                        point2.x = pnt->x * file->getScale();
                        if (fileMirror & MIRROR_FLIP)
                           point2.x = -point2.x;
                        point2.y = pnt->y * file->getScale();
                        TransPoint2(&point2, 1, &m, fileX, file->getInsertY());

                        if (First)
                           dc->MoveTo(round(point2.x / m_scaleFactor), round(point2.y / m_scaleFactor));
                        else
                        {
                           if (fabs(bulge) < BULGE_THRESHOLD)
                              dc->LineTo(round(point2.x / m_scaleFactor), round(point2.y / m_scaleFactor));
                           else
                           {
                              double da, sa, r, cx, cy;
                              da = atan(bulge) * 4;
                              if (fileMirror & MIRROR_FLIP)
                                 da = -da;
                              ArcPoint2Angle(lastx, lasty, point2.x, point2.y, da, &cx, &cy, &r, &sa);

                              if (Platform == WINNT) // Windows NT
                              {
                                 dc->SetArcDirection(da<0.0 ? AD_CLOCKWISE : AD_COUNTERCLOCKWISE);
                                 dc->ArcTo(lround((cx - r) / m_scaleFactor), lround((cy + r) / m_scaleFactor), 
                                       lround((cx + r) / m_scaleFactor), lround((cy - r) / m_scaleFactor),
                                       lround(lastx / m_scaleFactor), lround(lasty / m_scaleFactor), 
                                       lround(point2.x / m_scaleFactor), lround(point2.y / m_scaleFactor));  
                                 dc->SetArcDirection(AD_COUNTERCLOCKWISE);

                                 dc->LineTo(lround(point2.x / m_scaleFactor),lround(point2.y / m_scaleFactor));
                              }
                              else // Windows 95
                              {
                                 if (cx / m_scaleFactor > doc->maxXCoord || cx / m_scaleFactor < doc->minXCoord || 
                                       cy / m_scaleFactor > doc->maxYCoord || cy / m_scaleFactor < doc->minYCoord)
                                    dc->LineTo((int)(point2.x / m_scaleFactor),(int)(point2.y / m_scaleFactor));
                                 else if (poly->isFilled())// && showFills)
                                    AngleArc_Lines95(dc, (int)(cx / m_scaleFactor), (int)(cy / m_scaleFactor), 
                                          r / m_scaleFactor, sa, da);
                                 else
                                 {
                                    if (da < 0.0) // clockwise
                                    {     
                                       dc->Arc((int)((cx - r) / m_scaleFactor), (int)((cy + r) / m_scaleFactor), 
                                             (int)((cx + r) / m_scaleFactor), (int)((cy - r) / m_scaleFactor),
                                             (int)(point2.x / m_scaleFactor), (int)(point2.y / m_scaleFactor),
                                             (int)(lastx / m_scaleFactor), (int)(lasty / m_scaleFactor));
                                    }
                                    else // counter-clockwise
                                    {
                                       dc->Arc((int)((cx - r) / m_scaleFactor), (int)((cy + r) / m_scaleFactor), 
                                             (int)((cx + r) / m_scaleFactor), (int)((cy - r) / m_scaleFactor),
                                             (int)(lastx / m_scaleFactor), (int)(lasty / m_scaleFactor), 
                                             (int)(point2.x / m_scaleFactor), (int)(point2.y / m_scaleFactor));  
                                    }
                                    dc->MoveTo((int)(point2.x / m_scaleFactor),(int)(point2.y / m_scaleFactor));
                                 }
                              }

                           }
                        }
                        First = FALSE;

                        bulge = pnt->bulge;
                        lastx = point2.x;
                        lasty = point2.y;
                     }

                     if (poly->isFilled()) 
                     {
                        dc->EndPath();
                        dc->StrokeAndFillPath();
                     }
                  }

                  DeleteObject(SelectObject(dc->m_hDC, orgPen));
                  DeleteObject(SelectObject(dc->m_hDC, originalBrush));
               }
               break;
            }
         }
      }
   }
}
HRESULT MainWindow::OnCreate()
{
	HRESULT hr = S_OK;

	// Create the background brush.
	brush = CreateHatchBrush(HS_BDIAGONAL, RGB(0, 0x80, 0xFF));
	if (brush == NULL)
	{
		hr = __HRESULT_FROM_WIN32(GetLastError());
	}

	// Create the rebar control.
	if (SUCCEEDED(hr))
	{
		hr = rebar.Create(m_hInstance, m_hwnd, IDC_REBAR_CONTROL);
	}

	// Create the toolbar control.
	if (SUCCEEDED(hr))
	{
		hr = toolbar.Create(m_hInstance, m_hwnd, IDC_TOOLBAR, TBSTYLE_FLAT | TBSTYLE_TOOLTIPS);
	}

	// Set the image list for toolbar buttons (normal state).
	if (SUCCEEDED(hr))
	{
		hr = toolbar.SetImageList(
			Toolbar::Normal,			// Image list for normal state
			IDB_TOOLBAR_IMAGES_NORMAL,	// Bitmap resource
			Size(48, 48),				// Size of each button
			5,							// Number of buttons
			RGB(0xFF, 0x00, 0xFF)		// Color mask
			);
	}

	// Set the image list for toolbar buttons (disabled state).
	if (SUCCEEDED(hr))
	{
		hr = toolbar.SetImageList(
			Toolbar::Disabled,			// Image list for normal state
			IDB_TOOLBAR_IMAGES_DISABLED,	// Bitmap resource
			Size(48, 48),				// Size of each button
			5,							// Number of buttons
			RGB(0xFF, 0x00, 0xFF)		// Color mask
			);
	}


	// Add buttons to the toolbar.
	if (SUCCEEDED(hr))
	{
		// Play
		hr = toolbar.AddButton(Toolbar::Button(ID_IMAGE_PLAY, IDC_BUTTON_PLAY));
	}
	
	if (SUCCEEDED(hr))
	{
		// Stop
		hr = toolbar.AddButton(Toolbar::Button(ID_IMAGE_STOP, IDC_BUTTON_STOP));
	}

	if (SUCCEEDED(hr))
	{
		// Pause
		hr = toolbar.AddButton(Toolbar::Button(ID_IMAGE_PAUSE, IDC_BUTTON_PAUSE));
	}

	if (SUCCEEDED(hr))
	{
		// Mute
		hr = toolbar.AddButton(Toolbar::Button(ID_IMAGE_MUTE_OFF, IDC_BUTTON_MUTE));
	}

	// Add the toolbar to the rebar control.
	if (SUCCEEDED(hr))
	{
		hr = rebar.AddBand(toolbar.Window(), 0);
	}

	//// Create the slider for seeking.

	if (SUCCEEDED(hr))
	{
		hr = Slider_Init();	// Initialize the Slider control.
	}

	if (SUCCEEDED(hr))
	{
		hr = seekbar.Create(m_hwnd, Rect(0, 0, 300, 16), IDC_SEEKBAR);
	}

	if (SUCCEEDED(hr))
	{
		hr = seekbar.SetThumbBitmap(IDB_SLIDER_THUMB);

		seekbar.SetBackground(CreateSolidBrush(RGB(239, 239, 231)));
		seekbar.Enable(FALSE);
	}

	if (SUCCEEDED(hr))
	{
		hr = rebar.AddBand(seekbar.Window(), 1);
	}

	//// Create the slider for changing the volume.

	if (SUCCEEDED(hr))
	{
		hr = volumeSlider.Create(m_hwnd, Rect(0, 0, 100, 32), IDC_VOLUME);
	}

	if (SUCCEEDED(hr))
	{
		hr = volumeSlider.SetThumbBitmap(IDB_SLIDER_VOLUME);

		volumeSlider.SetBackground(CreateSolidBrush(RGB(239, 239, 231)));
		volumeSlider.Enable(TRUE);

		// Set the range of the volume slider. In my experience, only the top half of the
		// range is audible.
		volumeSlider.SetRange(MIN_VOLUME / 2, MAX_VOLUME);
		volumeSlider.SetPosition(MAX_VOLUME);
	}

	if (SUCCEEDED(hr))
	{
		hr = rebar.AddBand(volumeSlider.Window(), 2);
	}



	// Create the DirectShow player object.
	if (SUCCEEDED(hr))
	{
		m_pPlayer = new DShowPlayer(m_hwnd);
		if (m_pPlayer == NULL)
		{
			hr = E_OUTOFMEMORY;
		}
	}

	// Set the event notification window.
	if (SUCCEEDED(hr))
	{
		hr = m_pPlayer->SetEventWindow(m_hwnd, WM_GRAPH_EVENT);
	}

	// Set default UI state.
	if (SUCCEEDED(hr))
	{
		UpdateUI();
	}

	return hr;
}