/**************************************************/ /* */ /* */ /* Gage when import bitmap */ /* (Dialog) */ /* */ /* Copyright (c) 1997-1999 Microsoft Corporation. */ /**************************************************/ #include "stdafx.h" #include "eudcedit.h" #include "gagedlg.h" #include "extfunc.h" #include "util.h" #ifdef _DEBUG #undef THIS_FILE static char BASED_CODE THIS_FILE[] = __FILE__; #endif extern TCHAR UserFont[MAX_PATH]; extern TCHAR EUDCTTF[MAX_PATH]; extern TCHAR EUDCBMP[MAX_PATH]; static HWND hDlg; static UINT nEUDC; static UINT cEUDC; static BOOL ExecuteFlag; static BOOL testtest; extern BOOL g_bKeepEUDCLink; BOOL SendImportMessage( unsigned int cEudc, unsigned int nEudc); /****************************************/ /* */ /* Constructor */ /* */ /****************************************/ CGageDlg::CGageDlg( CWnd* pParent, LPTSTR szUserFont, LPTSTR szBmpFile, LPTSTR szTtfFile, BOOL bIsWin95EUDC) : CDialog(CGageDlg::IDD, pParent) { lstrcpy (m_szTtfFile, szTtfFile? szTtfFile : EUDCTTF); lstrcpy (m_szBmpFile, szBmpFile? szBmpFile : EUDCBMP); lstrcpy (m_szUserFont, szUserFont? szUserFont : UserFont); m_bIsWin95EUDC = bIsWin95EUDC; //{{AFX_DATA_INIT(CGageDlg) //}}AFX_DATA_INIT } /****************************************/ /* */ /* MESSAGE "WM_INITDIALOG" */ /* */ /****************************************/ BOOL CGageDlg::OnInitDialog() { CString DlgTitle; CDialog::OnInitDialog(); // Implement "?" in this dialog. DlgTitle.LoadString( IDS_IMPORT_DLGTITLE); this->SetWindowText( DlgTitle); // Set Dialog Title name. m_EditGage.SubclassDlgItem( IDC_GAGE, this); hDlg = this->GetSafeHwnd(); testtest = FALSE; OutputMessageBox( this->GetSafeHwnd(), IDS_MAINFRAMETITLE, IDS_IMPORTFONT_MSG, TRUE); return TRUE; } /****************************************/ /* */ /* COMMAND "OK" */ /* */ /****************************************/ void CGageDlg::OnOK() { ExecuteFlag = FALSE; CDialog::OnOK(); } /****************************************/ /* */ /* Window procedure */ /* */ /****************************************/ LRESULT CGageDlg::WindowProc( UINT message, WPARAM wParam, LPARAM lParam) { int sts; if( message == WM_IMPORTGAGE){ if( lParam){ cEUDC = (UINT)wParam; nEUDC = (UINT)lParam; m_EditGage.Invalidate( FALSE); m_EditGage.UpdateWindow(); } return (0L); } if( message == WM_IMPORTSTOP){ ExecuteFlag = TRUE; // The code is to fix the related bug #421829 & #438677 // It delays 1 second to call EnabelEUDC(FALSE). DWORD dwStart = GetTickCount(); // Stop if this has taken too long while (1) { if( GetTickCount() - dwStart >= 1000 ) break; } EnableEUDC( FALSE); sts = Import(m_szUserFont, m_szBmpFile, m_szTtfFile, BITMAP_WIDTH, BITMAP_HEIGHT, SMOOTHLVL, m_bIsWin95EUDC); // // we import some glyphs and will not delete the link. // g_bKeepEUDCLink = TRUE; EnableEUDC( TRUE); if( sts) return (0L); // for debug return (0L); } return CDialog::WindowProc( message, wParam, lParam); } /****************************************/ /* */ /* Default Constructor */ /* */ /****************************************/ CEditGage::CEditGage() { } /****************************************/ /* */ /* Destructor */ /* */ /****************************************/ CEditGage::~CEditGage() { } /****************************************/ /* */ /* MESSAGE "WM_PAINT" */ /* */ /****************************************/ void CEditGage::OnPaint() { TCHAR cEUDCBuf[10]; TCHAR nEUDCBuf[10]; TCHAR ViewBuf[30]; CRect EditGageRect; CRect BrueGageRect, WhiteGageRect; CBrush wBrush, bBrush; CPaintDC dc( this); this->GetClientRect( &EditGageRect); if( !testtest){ testtest = TRUE; ::SendMessage( hDlg, WM_IMPORTSTOP, (WPARAM)0, (LPARAM)0); }else{ if( nEUDC){ wsprintf( cEUDCBuf, TEXT("%d"), cEUDC); wsprintf( nEUDCBuf, TEXT("%d"), nEUDC); lstrcpy(ViewBuf, cEUDCBuf); lstrcat(ViewBuf, TEXT(" /")); lstrcat(ViewBuf, nEUDCBuf); GetParent()->SetDlgItemText( IDC_IMPORT_STATIC, (LPCTSTR)ViewBuf); BrueGageRect.CopyRect( &EditGageRect); WhiteGageRect.CopyRect( &EditGageRect); BrueGageRect.right = (cEUDC*EditGageRect.Width()) / nEUDC; WhiteGageRect.left = BrueGageRect.right; bBrush.CreateSolidBrush(COLOR_BLUE); dc.FillRect( &BrueGageRect, &bBrush); bBrush.DeleteObject(); wBrush.CreateStockObject( WHITE_BRUSH); dc.FillRect( &WhiteGageRect, &wBrush); wBrush.DeleteObject(); } } if( cEUDC >= nEUDC){ ::SendMessage( hDlg, WM_COMMAND, (WPARAM)IDOK, (LPARAM)0); } } /****************************************/ /* */ /* MESSAGE "WM_ONLBUTTONDOWN" */ /* */ /****************************************/ void CEditGage::OnLButtonDown( UINT nFlags, CPoint point) { } /****************************************/ /* */ /* MESSAGE "WM_SETCURSOR" */ /* */ /****************************************/ BOOL CEditGage::OnSetCursor( CWnd* pWnd, UINT nHitTest, UINT message) { ::SetCursor( AfxGetApp()->LoadStandardCursor(IDC_ARROW)); return TRUE; } BEGIN_MESSAGE_MAP( CEditGage, CEdit) //{{AFX_MSG_MAP( CEditGage) ON_WM_PAINT() ON_WM_LBUTTONDOWN() ON_WM_SETCURSOR() ON_WM_RBUTTONUP() //}}AFX_MSG_MAP END_MESSAGE_MAP() /****************************************/ /* */ /* Send Import Message */ /* */ /****************************************/ BOOL SendImportMessage( unsigned int cEudc, unsigned int nEudc) { MSG msg; while( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE)){ if( msg.message == WM_QUIT) break; TranslateMessage( &msg); DispatchMessage( &msg); } if( !ExecuteFlag){ cEudc = 0; nEudc = 0; return FALSE; } SendMessage( hDlg, WM_IMPORTGAGE, (WPARAM)cEudc, (LPARAM)nEudc); return TRUE; } BEGIN_MESSAGE_MAP(CGageDlg, CDialog) //{{AFX_MSG_MAP(CGageDlg) //}}AFX_MSG_MAP END_MESSAGE_MAP() void CEditGage::OnRButtonUp(UINT nFlags, CPoint point) { }