Пример #1
0
LRESULT CWatermarkDlg::OnInitDialog(HWND hWnd, LPARAM /*lParam*/)
{
	CenterWindow(GetParent());

	// First DDX call, hooks up variables to controls.
	DoDataExchange(false);

	m_wndWatermark.AddString(_T("无水印"));
	m_wndWatermark.AddString(_T("位图水印"));
	m_wndWatermark.AddString(_T("文字水印"));
	m_wndWatermark.SetCurSel(0);

	m_wndWatermarkText.AddString(_T("CONFIDENTIAL"));
	m_wndWatermarkText.AddString(_T("DO NOT COPY"));
	m_wndWatermarkText.AddString(_T("TOP SECRET"));
	m_wndWatermarkText.AddString(_T("DRAFT"));
	m_wndWatermarkText.AddString(_T("PROOF"));
	m_wndWatermarkText.AddString(_T("FINAL"));
	m_wndWatermarkText.AddString(_T("COPY"));
	m_wndWatermarkText.AddString(_T("FILE COPY"));

	DWORD cb = 0;
	GetPrinter(m_pUICtxt->PrinterHandle(), 2, NULL, 0, &cb);
	BYTE *pBBuf = (BYTE *)malloc(cb);
	if (pBBuf != NULL)
	{
		// now actually try to get the printer info structure
		GetPrinter(m_pUICtxt->PrinterHandle(), 2, pBBuf, cb, &cb);

		// now check if a name string is present
		PRINTER_INFO_2 *pPI2 = (PRINTER_INFO_2*)pBBuf;

		PARFONTS parFonts;
		INT nFaces = 0;
		HDC hdc = CreateDC (pPI2->pDriverName, pPI2->pPrinterName, pPI2->pPortName, NULL);
		parFonts = BuildFontList (hdc, &nFaces);
		//填写字体列表
		for (int i = 0; i < nFaces; i++)
		{
			m_wndFontType.AddString(((parFonts + i)->lf)->lfFaceName);
		}
		LocalFree(parFonts);
		m_wndFontType.SelectString(-1, _T("宋体"));
		DeleteDC(hdc);

		// free the info buffer
		free(pBBuf);
	}

	m_wndFontStyle.AddString(_T("常规"));
	m_wndFontStyle.AddString(_T("斜体"));
	m_wndFontStyle.AddString(_T("粗体"));
	m_wndFontStyle.AddString(_T("粗斜体"));
	m_wndFontStyle.SetCurSel(0);

	m_wndWatermarkPosition.AddString(_T("Left-Top"));
	m_wndWatermarkPosition.AddString(_T("Center-Top"));
	m_wndWatermarkPosition.AddString(_T("Right-Top"));
	m_wndWatermarkPosition.AddString(_T("Left-Middle"));
	m_wndWatermarkPosition.AddString(_T("Center-Middle"));
	m_wndWatermarkPosition.AddString(_T("Right-Middle"));
	m_wndWatermarkPosition.AddString(_T("Left-Bottom"));
	m_wndWatermarkPosition.AddString(_T("Center-Bottom"));
	m_wndWatermarkPosition.AddString(_T("Right-Bottom"));
	m_wndWatermarkPosition.AddString(_T("Tiled"));
	m_wndWatermarkPosition.SetCurSel(4);

	for (int i = 8; i <= 72; ++i)
	{
		TCHAR szBuf[MAX_PATH] = {0};
		_stprintf_s(szBuf, MAX_PATH, _T("%d"), i);
		m_wndFontSize.AddString(szBuf);
	}
	m_wndFontSize.SelectString(-1, _T("48"));

	m_wndAngleTrack.Attach(GetDlgItem(IDC_ANGLE_SLIDER));
	m_wndAngleTrack.SetRange(0, 360);
	m_wndAngleTrack.SetPos(m_nAngle);

	m_wndSizeTrack.Attach(GetDlgItem(IDC_WATERMARK_SIZE_SLIDER));
	m_wndSizeTrack.SetRange(1, 100);
	m_wndSizeTrack.SetPos(m_nSize);

	m_wndBrightnessTrack.Attach(GetDlgItem(IDC_BRIGHTNESS_SLIDER));
	m_wndBrightnessTrack.SetRange(1, 255);
	m_wndBrightnessTrack.SetPos(m_nBrightness);

	BOOL enableWatermark = m_wndWatermark.GetCurSel() != 0;
	BOOL enableTextWatermark = m_wndWatermark.GetCurSel() == 2;

	::EnableWindow(GetDlgItem(IDC_BROWSER), enableWatermark && !enableTextWatermark);
	::EnableWindow(GetDlgItem(IDC_FILE), enableWatermark && !enableTextWatermark);

	::EnableWindow(GetDlgItem(IDC_WATERMARK_TEXT), enableWatermark && enableTextWatermark);
	::EnableWindow(GetDlgItem(IDC_FONT_TYPE), enableWatermark && enableTextWatermark);
	::EnableWindow(GetDlgItem(IDC_FONT_STYLE), enableWatermark && enableTextWatermark);
	::EnableWindow(GetDlgItem(IDC_FONT_SIZE), enableWatermark && enableTextWatermark);
	::EnableWindow(GetDlgItem(IDC_ANGLE_SLIDER), enableWatermark && enableTextWatermark);

	::EnableWindow(GetDlgItem(IDC_WATERMARK_SIZE_SLIDER), enableWatermark);
	::EnableWindow(GetDlgItem(IDC_BRIGHTNESS_SLIDER), enableWatermark);
	::EnableWindow(GetDlgItem(IDC_PIINT_POSITION), enableWatermark);

	return TRUE;
}
Пример #2
0
XMacFontMgr::XMacFontMgr()
{
	BuildFontList();
}