283 lines
6.1 KiB
C++
283 lines
6.1 KiB
C++
|
/**************************************************/
|
||
|
/* */
|
||
|
/* */
|
||
|
/* 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)
|
||
|
{
|
||
|
}
|