wordpad: Add basic ruler.
This commit is contained in:
parent
e1e147da4d
commit
9a1b626481
|
@ -64,6 +64,7 @@ BEGIN
|
|||
BEGIN
|
||||
MENUITEM "&Toolbar", ID_TOGGLE_TOOLBAR
|
||||
MENUITEM "&Formatbar", ID_TOGGLE_FORMATBAR
|
||||
MENUITEM "&Ruler", ID_TOGGLE_RULER
|
||||
MENUITEM "&Statusbar", ID_TOGGLE_STATUSBAR
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Options . . .", ID_VIEWPROPERTIES
|
||||
|
@ -168,7 +169,8 @@ BEGIN
|
|||
GROUPBOX "Toolbars", 0, 150, 10, 120, 85
|
||||
CHECKBOX "&Toolbar", IDC_PAGEFMT_TB, 160, 20, 80, 15
|
||||
CHECKBOX "&Formatbar", IDC_PAGEFMT_FB, 160, 38, 80, 15
|
||||
CHECKBOX "&Statusbar", IDC_PAGEFMT_SB, 160, 56, 80, 15
|
||||
CHECKBOX "&Ruler", IDC_PAGEFMT_RU, 160, 56, 80, 15
|
||||
CHECKBOX "&Statusbar", IDC_PAGEFMT_SB, 160, 74, 80, 15
|
||||
LTEXT "", IDC_PAGEFMT_ID, 0,0,0,0
|
||||
END
|
||||
|
||||
|
|
|
@ -64,6 +64,7 @@ BEGIN
|
|||
BEGIN
|
||||
MENUITEM "&Toolbar", ID_TOGGLE_TOOLBAR
|
||||
MENUITEM "&Formatbar", ID_TOGGLE_FORMATBAR
|
||||
MENUITEM "&Ruler", ID_TOGGLE_RULER
|
||||
MENUITEM "&Statusbar", ID_TOGGLE_STATUSBAR
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Options . . .", ID_VIEWPROPERTIES
|
||||
|
@ -168,7 +169,8 @@ BEGIN
|
|||
GROUPBOX "Toolbars", 0, 150, 10, 120, 85
|
||||
CHECKBOX "&Toolbar", IDC_PAGEFMT_TB, 160, 20, 80, 15
|
||||
CHECKBOX "&Formatbar", IDC_PAGEFMT_FB, 160, 38, 80, 15
|
||||
CHECKBOX "&Statusbar", IDC_PAGEFMT_SB, 160, 56, 80, 15
|
||||
CHECKBOX "&Ruler", IDC_PAGEFMT_RU, 160, 56, 80, 15
|
||||
CHECKBOX "&Statusbar", IDC_PAGEFMT_SB, 160, 74, 80, 15
|
||||
LTEXT "", IDC_PAGEFMT_ID, 0,0,0,0
|
||||
END
|
||||
|
||||
|
|
|
@ -64,6 +64,7 @@ BEGIN
|
|||
BEGIN
|
||||
MENUITEM "&Barre d'outils", ID_TOGGLE_TOOLBAR
|
||||
MENUITEM "&Barre de format", ID_TOGGLE_FORMATBAR
|
||||
MENUITEM "&Ruler", ID_TOGGLE_RULER
|
||||
MENUITEM "&Barre d'état", ID_TOGGLE_STATUSBAR
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Options...", ID_VIEWPROPERTIES
|
||||
|
@ -168,7 +169,8 @@ BEGIN
|
|||
GROUPBOX "Barres d'outils", 0, 150, 10, 120, 85
|
||||
CHECKBOX "&Barre d'outils", IDC_PAGEFMT_TB, 160, 20, 80, 15
|
||||
CHECKBOX "Barre de &format", IDC_PAGEFMT_FB, 160, 38, 80, 15
|
||||
CHECKBOX "Barre de &statut", IDC_PAGEFMT_SB, 160, 56, 80, 15
|
||||
CHECKBOX "&Ruler", IDC_PAGEFMT_RU, 160, 56, 80, 15
|
||||
CHECKBOX "Barre de &statut", IDC_PAGEFMT_SB, 160, 74, 80, 15
|
||||
LTEXT "", IDC_PAGEFMT_ID, 0,0,0,0
|
||||
END
|
||||
|
||||
|
|
|
@ -64,6 +64,7 @@ BEGIN
|
|||
BEGIN
|
||||
MENUITEM "&Toolbar", ID_TOGGLE_TOOLBAR
|
||||
MENUITEM "&Formatbar", ID_TOGGLE_FORMATBAR
|
||||
MENUITEM "&Ruler", ID_TOGGLE_RULER
|
||||
MENUITEM "&Statusbar", ID_TOGGLE_STATUSBAR
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Options . . .", ID_VIEWPROPERTIES
|
||||
|
@ -168,7 +169,8 @@ BEGIN
|
|||
GROUPBOX "Toolbars", 0, 150, 10, 120, 85
|
||||
CHECKBOX "&Toolbar", IDC_PAGEFMT_TB, 160, 20, 80, 15
|
||||
CHECKBOX "&Formatbar", IDC_PAGEFMT_FB, 160, 38, 80, 15
|
||||
CHECKBOX "&Statusbar", IDC_PAGEFMT_SB, 160, 56, 80, 15
|
||||
CHECKBOX "&Ruler", IDC_PAGEFMT_RU, 160, 56, 80, 15
|
||||
CHECKBOX "&Statusbar", IDC_PAGEFMT_SB, 160, 74, 80, 15
|
||||
LTEXT "", IDC_PAGEFMT_ID, 0,0,0,0
|
||||
END
|
||||
|
||||
|
|
|
@ -66,6 +66,7 @@ BEGIN
|
|||
BEGIN
|
||||
MENUITEM "도구바(&T)", ID_TOGGLE_TOOLBAR
|
||||
MENUITEM "형식바(&F)", ID_TOGGLE_FORMATBAR
|
||||
MENUITEM "&Ruler", ID_TOGGLE_RULER
|
||||
MENUITEM "상태바(&S)", ID_TOGGLE_STATUSBAR
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM " 옵션(&O) . . .", ID_VIEWPROPERTIES
|
||||
|
@ -170,7 +171,8 @@ BEGIN
|
|||
GROUPBOX " 도구바", 0, 150, 10, 120, 85
|
||||
CHECKBOX "도구바(&T)", IDC_PAGEFMT_TB, 160, 20, 80, 15
|
||||
CHECKBOX "형식바(&F)", IDC_PAGEFMT_FB, 160, 38, 80, 15
|
||||
CHECKBOX "상태바(&S)", IDC_PAGEFMT_SB, 160, 56, 80, 15
|
||||
CHECKBOX "&Ruler", IDC_PAGEFMT_RU, 160, 56, 80, 15
|
||||
CHECKBOX "상태바(&S)", IDC_PAGEFMT_SB, 160, 74, 80, 15
|
||||
LTEXT "", IDC_PAGEFMT_ID, 0,0,0,0
|
||||
END
|
||||
|
||||
|
|
|
@ -64,6 +64,7 @@ BEGIN
|
|||
BEGIN
|
||||
MENUITEM "&Toolbar", ID_TOGGLE_TOOLBAR
|
||||
MENUITEM "&Formatbar", ID_TOGGLE_FORMATBAR
|
||||
MENUITEM "&Ruler", ID_TOGGLE_RULER
|
||||
MENUITEM "&Statusbar", ID_TOGGLE_STATUSBAR
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Options . . .", ID_VIEWPROPERTIES
|
||||
|
@ -168,7 +169,8 @@ BEGIN
|
|||
GROUPBOX "Toolbars", 0, 150, 10, 120, 85
|
||||
CHECKBOX "&Toolbar", IDC_PAGEFMT_TB, 160, 20, 80, 15
|
||||
CHECKBOX "&Formatbar", IDC_PAGEFMT_FB, 160, 38, 80, 15
|
||||
CHECKBOX "&Statusbar", IDC_PAGEFMT_SB, 160, 56, 80, 15
|
||||
CHECKBOX "&Ruler", IDC_PAGEFMT_RU, 160, 56, 80, 15
|
||||
CHECKBOX "&Statusbar", IDC_PAGEFMT_SB, 160, 74, 80, 15
|
||||
LTEXT "", IDC_PAGEFMT_ID, 0,0,0,0
|
||||
END
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2006-2007 by Alexander N. Sørnes <alex@thehandofagony.com>
|
||||
* Copyright 2006-2008 by Alexander N. Sørnes <alex@thehandofagony.com>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -64,6 +64,7 @@ BEGIN
|
|||
BEGIN
|
||||
MENUITEM "Verk&tøylinje", ID_TOGGLE_TOOLBAR
|
||||
MENUITEM "&Formatlinje", ID_TOGGLE_FORMATBAR
|
||||
MENUITEM "&Linjal", ID_TOGGLE_RULER
|
||||
MENUITEM "&Statuslinje", ID_TOGGLE_STATUSBAR
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Alternativer . . .", ID_VIEWPROPERTIES
|
||||
|
@ -168,7 +169,8 @@ BEGIN
|
|||
GROUPBOX "Verktøylinjer", 0, 150, 10, 120, 85
|
||||
CHECKBOX "&Verktøylinje", IDC_PAGEFMT_TB, 160, 20, 80, 15
|
||||
CHECKBOX "&Formatlinje", IDC_PAGEFMT_FB, 160, 38, 80, 15
|
||||
CHECKBOX "&Statuslinje", IDC_PAGEFMT_SB, 160, 56, 80, 15
|
||||
CHECKBOX "&Linjal", IDC_PAGEFMT_RU, 160, 56, 80, 15
|
||||
CHECKBOX "&Statuslinje", IDC_PAGEFMT_SB, 160, 74, 80, 15
|
||||
LTEXT "", IDC_PAGEFMT_ID, 0,0,0,0
|
||||
END
|
||||
|
||||
|
|
|
@ -65,6 +65,7 @@ BEGIN
|
|||
BEGIN
|
||||
MENUITEM "&Toolbar", ID_TOGGLE_TOOLBAR
|
||||
MENUITEM "&Formatbar", ID_TOGGLE_FORMATBAR
|
||||
MENUITEM "&Ruler", ID_TOGGLE_RULER
|
||||
MENUITEM "&Statusbar", ID_TOGGLE_STATUSBAR
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Options . . .", ID_VIEWPROPERTIES
|
||||
|
@ -169,7 +170,8 @@ BEGIN
|
|||
GROUPBOX "Toolbars", 0, 150, 10, 120, 85
|
||||
CHECKBOX "&Toolbar", IDC_PAGEFMT_TB, 160, 20, 80, 15
|
||||
CHECKBOX "&Formatbar", IDC_PAGEFMT_FB, 160, 38, 80, 15
|
||||
CHECKBOX "&Statusbar", IDC_PAGEFMT_SB, 160, 56, 80, 15
|
||||
CHECKBOX "&Ruler", IDC_PAGEFMT_RU, 160, 56, 80, 15
|
||||
CHECKBOX "&Statusbar", IDC_PAGEFMT_SB, 160, 74, 80, 15
|
||||
LTEXT "", IDC_PAGEFMT_ID, 0,0,0,0
|
||||
END
|
||||
|
||||
|
|
|
@ -63,6 +63,7 @@ BEGIN
|
|||
BEGIN
|
||||
MENUITEM "Ïàíåëü &èíñòðóìåíòîâ", ID_TOGGLE_TOOLBAR
|
||||
MENUITEM "Ï&àíåëü ôîðìàòèðîâàíèÿ", ID_TOGGLE_FORMATBAR
|
||||
MENUITEM "&Ruler", ID_TOGGLE_RULER
|
||||
MENUITEM "&Ñòðîêà ñîñòîÿíèÿ", ID_TOGGLE_STATUSBAR
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Ïàðàìåòðû . . .", ID_VIEWPROPERTIES
|
||||
|
@ -167,7 +168,8 @@ BEGIN
|
|||
GROUPBOX "Ïàíåëè", 0, 150, 10, 120, 85
|
||||
CHECKBOX "&Èíñòðóìåíòîâ", IDC_PAGEFMT_TB, 160, 20, 80, 15
|
||||
CHECKBOX "&Ôîðìàòèðîâàíèÿ", IDC_PAGEFMT_FB, 160, 38, 80, 15
|
||||
CHECKBOX "&Строка состояния", IDC_PAGEFMT_SB, 160, 56, 80, 15
|
||||
CHECKBOX "&Ruler", IDC_PAGEFMT_RU, 160, 56, 80, 15
|
||||
CHECKBOX "&Ñòðîêà ñîñòîÿíèÿ", IDC_PAGEFMT_SB, 160, 74, 80, 15
|
||||
LTEXT "", IDC_PAGEFMT_ID, 0,0,0,0
|
||||
END
|
||||
|
||||
|
|
|
@ -67,6 +67,7 @@ BEGIN
|
|||
BEGIN
|
||||
MENUITEM "&Toolbar", ID_TOGGLE_TOOLBAR
|
||||
MENUITEM "&Formatbar", ID_TOGGLE_FORMATBAR
|
||||
MENUITEM "&Ruler", ID_TOGGLE_RULER
|
||||
MENUITEM "&Statusbar", ID_TOGGLE_STATUSBAR
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Options . . .", ID_VIEWPROPERTIES
|
||||
|
@ -171,7 +172,8 @@ BEGIN
|
|||
GROUPBOX "Toolbars", 0, 150, 10, 120, 85
|
||||
CHECKBOX "&Toolbar", IDC_PAGEFMT_TB, 160, 20, 80, 15
|
||||
CHECKBOX "&Formatbar", IDC_PAGEFMT_FB, 160, 38, 80, 15
|
||||
CHECKBOX "&Statusbar", IDC_PAGEFMT_SB, 160, 56, 80, 15
|
||||
CHECKBOX "&Ruler", IDC_PAGEFMT_RU, 160, 56, 80, 15
|
||||
CHECKBOX "&Statusbar", IDC_PAGEFMT_SB, 160, 74, 80, 15
|
||||
LTEXT "", IDC_PAGEFMT_ID, 0,0,0,0
|
||||
END
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* Wordpad implementation - Printing and print preview functions
|
||||
*
|
||||
* Copyright 2007 by Alexander N. Sørnes <alex@thehandofagony.com>
|
||||
* Copyright 2007-2008 by Alexander N. Sørnes <alex@thehandofagony.com>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -130,23 +130,23 @@ static HDC make_dc(void)
|
|||
|
||||
static LONG twips_to_centmm(int twips)
|
||||
{
|
||||
return MulDiv(twips, 1000, 567);
|
||||
return MulDiv(twips, 1000, TWIPS_PER_CM);
|
||||
}
|
||||
|
||||
LONG centmm_to_twips(int mm)
|
||||
{
|
||||
return MulDiv(mm, 567, 1000);
|
||||
return MulDiv(mm, TWIPS_PER_CM, 1000);
|
||||
}
|
||||
|
||||
static LONG twips_to_pixels(int twips, int dpi)
|
||||
{
|
||||
float ret = ((float)twips / ((float)567 * 2.54)) * (float)dpi;
|
||||
float ret = ((float)twips / ((float)TWIPS_PER_CM * 2.54)) * (float)dpi;
|
||||
return (LONG)ret;
|
||||
}
|
||||
|
||||
static LONG devunits_to_twips(int units, int dpi)
|
||||
{
|
||||
float ret = ((float)units / (float)dpi) * (float)567 * 2.54;
|
||||
float ret = ((float)units / (float)dpi) * (float)TWIPS_PER_CM * 2.54;
|
||||
return (LONG)ret;
|
||||
}
|
||||
|
||||
|
@ -254,6 +254,25 @@ static void char_from_pagenum(HWND hEditorWnd, FORMATRANGE *fr, int page)
|
|||
}
|
||||
}
|
||||
|
||||
static HWND get_ruler_wnd(HWND hMainWnd)
|
||||
{
|
||||
return GetDlgItem(GetDlgItem(hMainWnd, IDC_REBAR), IDC_RULER);
|
||||
}
|
||||
|
||||
void redraw_ruler(HWND hRulerWnd)
|
||||
{
|
||||
RECT rc;
|
||||
|
||||
GetClientRect(hRulerWnd, &rc);
|
||||
InvalidateRect(hRulerWnd, &rc, TRUE);
|
||||
}
|
||||
|
||||
static void update_ruler(HWND hRulerWnd)
|
||||
{
|
||||
SendMessageW(hRulerWnd, WM_USER, 0, 0);
|
||||
redraw_ruler(hRulerWnd);
|
||||
}
|
||||
|
||||
static void print(LPPRINTDLGW pd, LPWSTR wszFileName)
|
||||
{
|
||||
FORMATRANGE fr;
|
||||
|
@ -340,6 +359,7 @@ void dialog_printsetup(HWND hMainWnd)
|
|||
margins.bottom = centmm_to_twips(ps.rtMargin.bottom);
|
||||
devMode = ps.hDevMode;
|
||||
devNames = ps.hDevNames;
|
||||
update_ruler(get_ruler_wnd(hMainWnd));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -394,6 +414,7 @@ void dialog_print(HWND hMainWnd, LPWSTR wszFileName)
|
|||
devMode = pd.hDevMode;
|
||||
devNames = pd.hDevNames;
|
||||
print(&pd, wszFileName);
|
||||
update_ruler(get_ruler_wnd(hMainWnd));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -456,6 +477,145 @@ BOOL preview_isactive(void)
|
|||
return preview.page != 0;
|
||||
}
|
||||
|
||||
static void add_ruler_units(HDC hdcRuler, RECT* drawRect, BOOL NewMetrics, long EditLeftmost)
|
||||
{
|
||||
static HDC hdc;
|
||||
|
||||
if(NewMetrics)
|
||||
{
|
||||
static HBITMAP hBitmap;
|
||||
int i, x, y, RulerTextEnd;
|
||||
int CmPixels;
|
||||
int QuarterCmPixels;
|
||||
HFONT hFont;
|
||||
WCHAR FontName[] = {'M','S',' ','S','a','n','s',' ','S','e','r','i','f',0};
|
||||
|
||||
if(hdc)
|
||||
{
|
||||
DeleteDC(hdc);
|
||||
DeleteObject(hBitmap);
|
||||
}
|
||||
|
||||
hdc = CreateCompatibleDC(hdc);
|
||||
|
||||
CmPixels = twips_to_pixels(TWIPS_PER_CM, GetDeviceCaps(hdc, LOGPIXELSX));
|
||||
QuarterCmPixels = (int)((float)CmPixels / 4.0);
|
||||
|
||||
hBitmap = CreateCompatibleBitmap(hdc, drawRect->right, drawRect->bottom);
|
||||
SelectObject(hdc, hBitmap);
|
||||
FillRect(hdc, drawRect, GetStockObject(WHITE_BRUSH));
|
||||
|
||||
hFont = CreateFontW(10, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, FontName);
|
||||
|
||||
SelectObject(hdc, hFont);
|
||||
SetBkMode(hdc, TRANSPARENT);
|
||||
SetTextAlign(hdc, TA_CENTER);
|
||||
y = (int)(((float)drawRect->bottom - (float)drawRect->top) / 2.0) + 1;
|
||||
RulerTextEnd = drawRect->right - EditLeftmost + 1;
|
||||
for(i = 1, x = EditLeftmost; x < (drawRect->right - EditLeftmost + 1); i ++)
|
||||
{
|
||||
WCHAR str[3];
|
||||
WCHAR format[] = {'%','d',0};
|
||||
int x2 = x;
|
||||
|
||||
x2 += QuarterCmPixels;
|
||||
if(x2 > RulerTextEnd)
|
||||
break;
|
||||
|
||||
MoveToEx(hdc, x2, y, NULL);
|
||||
LineTo(hdc, x2, y+2);
|
||||
|
||||
x2 += QuarterCmPixels;
|
||||
if(x2 > RulerTextEnd)
|
||||
break;
|
||||
|
||||
MoveToEx(hdc, x2, y - 3, NULL);
|
||||
LineTo(hdc, x2, y + 3);
|
||||
|
||||
x2 += QuarterCmPixels;
|
||||
if(x2 > RulerTextEnd)
|
||||
break;
|
||||
|
||||
MoveToEx(hdc, x2, y, NULL);
|
||||
LineTo(hdc, x2, y+2);
|
||||
|
||||
x += CmPixels;
|
||||
if(x > RulerTextEnd)
|
||||
break;
|
||||
|
||||
wsprintfW(str, format, i);
|
||||
TextOutW(hdc, x, 5, str, lstrlenW(str));
|
||||
}
|
||||
DeleteObject(hFont);
|
||||
}
|
||||
|
||||
BitBlt(hdcRuler, 0, 0, drawRect->right, drawRect->bottom, hdc, 0, 0, SRCAND);
|
||||
}
|
||||
|
||||
static void paint_ruler(HWND hWnd, long EditLeftmost, BOOL NewMetrics)
|
||||
{
|
||||
PAINTSTRUCT ps;
|
||||
HDC hdc = BeginPaint(hWnd, &ps);
|
||||
HDC hdcPrint = make_dc();
|
||||
RECT printRect = get_print_rect(hdcPrint);
|
||||
RECT drawRect;
|
||||
HBRUSH hBrush = CreateSolidBrush(GetSysColor(COLOR_MENU));
|
||||
|
||||
GetClientRect(hWnd, &drawRect);
|
||||
FillRect(hdc, &drawRect, hBrush);
|
||||
|
||||
drawRect.top += 3;
|
||||
drawRect.bottom -= 3;
|
||||
drawRect.left = EditLeftmost;
|
||||
drawRect.right = twips_to_pixels(printRect.right - margins.left, GetDeviceCaps(hdc, LOGPIXELSX));
|
||||
FillRect(hdc, &drawRect, GetStockObject(WHITE_BRUSH));
|
||||
|
||||
drawRect.top--;
|
||||
drawRect.bottom++;
|
||||
DrawEdge(hdc, &drawRect, EDGE_SUNKEN, BF_RECT);
|
||||
|
||||
drawRect.left = drawRect.right - 1;
|
||||
drawRect.right = twips_to_pixels(printRect.right + margins.right - margins.left, GetDeviceCaps(hdc, LOGPIXELSX));
|
||||
DrawEdge(hdc, &drawRect, EDGE_ETCHED, BF_RECT);
|
||||
|
||||
drawRect.left = 0;
|
||||
drawRect.top = 0;
|
||||
add_ruler_units(hdc, &drawRect, NewMetrics, EditLeftmost);
|
||||
|
||||
SelectObject(hdc, GetStockObject(BLACK_BRUSH));
|
||||
DeleteObject(hBrush);
|
||||
DeleteDC(hdcPrint);
|
||||
EndPaint(hWnd, &ps);
|
||||
}
|
||||
|
||||
LRESULT CALLBACK ruler_proc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
static WNDPROC pPrevRulerProc;
|
||||
static long EditLeftmost;
|
||||
static BOOL NewMetrics;
|
||||
|
||||
switch(msg)
|
||||
{
|
||||
case WM_USER:
|
||||
if(wParam)
|
||||
{
|
||||
EditLeftmost = ((POINTL*)wParam)->x;
|
||||
pPrevRulerProc = (WNDPROC)lParam;
|
||||
}
|
||||
NewMetrics = TRUE;
|
||||
break;
|
||||
|
||||
case WM_PAINT:
|
||||
paint_ruler(hWnd, EditLeftmost, NewMetrics);
|
||||
break;
|
||||
|
||||
default:
|
||||
return CallWindowProcW(pPrevRulerProc, hWnd, msg, wParam, lParam);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
LRESULT print_preview(HWND hMainWnd)
|
||||
{
|
||||
FORMATRANGE fr;
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* Wordpad implementation
|
||||
*
|
||||
* Copyright 2004 by Krzysztof Foltman
|
||||
* Copyright 2007 by Alexander N. Sørnes <alex@thehandofagony.com>
|
||||
* Copyright 2007-2008 by Alexander N. Sørnes <alex@thehandofagony.com>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -600,7 +600,7 @@ static void set_toolbar_state(int bandId, BOOL show)
|
|||
SendMessageW(hwndReBar, RB_SETBANDINFO, index, (LPARAM)&rbbinfo);
|
||||
}
|
||||
|
||||
if(bandId == BANDID_TOOLBAR || bandId == BANDID_FORMATBAR)
|
||||
if(bandId == BANDID_TOOLBAR || bandId == BANDID_FORMATBAR || bandId == BANDID_RULER)
|
||||
store_bar_state(bandId, show);
|
||||
}
|
||||
|
||||
|
@ -618,6 +618,7 @@ static void set_bar_states(void)
|
|||
set_toolbar_state(BANDID_FONTLIST, is_bar_visible(BANDID_FORMATBAR));
|
||||
set_toolbar_state(BANDID_SIZELIST, is_bar_visible(BANDID_FORMATBAR));
|
||||
set_toolbar_state(BANDID_FORMATBAR, is_bar_visible(BANDID_FORMATBAR));
|
||||
set_toolbar_state(BANDID_RULER, is_bar_visible(BANDID_RULER));
|
||||
set_statusbar_state(is_bar_visible(BANDID_STATUSBAR));
|
||||
|
||||
update_window();
|
||||
|
@ -912,7 +913,9 @@ static INT_PTR CALLBACK formatopts_proc(HWND hWnd, UINT message, WPARAM wParam,
|
|||
CheckDlgButton(hWnd, IDC_PAGEFMT_TB, TRUE);
|
||||
if(barState[ps->lParam] & (1 << BANDID_FORMATBAR))
|
||||
CheckDlgButton(hWnd, IDC_PAGEFMT_FB, TRUE);
|
||||
if(barState[ps->lParam] & (BANDID_STATUSBAR))
|
||||
if(barState[ps->lParam] & (1 << BANDID_RULER))
|
||||
CheckDlgButton(hWnd, IDC_PAGEFMT_RU, TRUE);
|
||||
if(barState[ps->lParam] & (1 << BANDID_STATUSBAR))
|
||||
CheckDlgButton(hWnd, IDC_PAGEFMT_SB, TRUE);
|
||||
}
|
||||
break;
|
||||
|
@ -928,6 +931,7 @@ static INT_PTR CALLBACK formatopts_proc(HWND hWnd, UINT message, WPARAM wParam,
|
|||
|
||||
case IDC_PAGEFMT_TB:
|
||||
case IDC_PAGEFMT_FB:
|
||||
case IDC_PAGEFMT_RU:
|
||||
case IDC_PAGEFMT_SB:
|
||||
CheckDlgButton(hWnd, LOWORD(wParam),
|
||||
!IsDlgButtonChecked(hWnd, LOWORD(wParam)));
|
||||
|
@ -960,6 +964,11 @@ static INT_PTR CALLBACK formatopts_proc(HWND hWnd, UINT message, WPARAM wParam,
|
|||
else
|
||||
barState[id] &= ~(1 << BANDID_FORMATBAR);
|
||||
|
||||
if(IsDlgButtonChecked(hWnd, IDC_PAGEFMT_RU))
|
||||
barState[id] |= (1 << BANDID_RULER);
|
||||
else
|
||||
barState[id] &= ~(1 << BANDID_RULER);
|
||||
|
||||
if(IsDlgButtonChecked(hWnd, IDC_PAGEFMT_SB))
|
||||
barState[id] |= (1 << BANDID_STATUSBAR);
|
||||
else
|
||||
|
@ -1182,7 +1191,7 @@ static void dialog_find(LPFINDREPLACEW fr, BOOL replace)
|
|||
|
||||
static int current_units_to_twips(float number)
|
||||
{
|
||||
int twips = (int)(number * 567);
|
||||
int twips = (int)(number * TWIPS_PER_CM);
|
||||
return twips;
|
||||
}
|
||||
|
||||
|
@ -1195,7 +1204,7 @@ static void append_current_units(LPWSTR buffer)
|
|||
|
||||
static void number_with_units(LPWSTR buffer, int number)
|
||||
{
|
||||
float converted = (float)number / 567;
|
||||
float converted = (float)number / TWIPS_PER_CM;
|
||||
char string[MAX_STRING_LEN];
|
||||
|
||||
sprintf(string, "%.2f ", converted);
|
||||
|
@ -1547,7 +1556,7 @@ static int context_menu(LPARAM lParam)
|
|||
|
||||
static LRESULT OnCreate( HWND hWnd, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
HWND hToolBarWnd, hFormatBarWnd, hReBarWnd, hFontListWnd, hSizeListWnd;
|
||||
HWND hToolBarWnd, hFormatBarWnd, hReBarWnd, hFontListWnd, hSizeListWnd, hRulerWnd;
|
||||
HINSTANCE hInstance = (HINSTANCE)GetWindowLongPtr(hWnd, GWLP_HINSTANCE);
|
||||
HANDLE hDLL;
|
||||
TBADDBITMAP ab;
|
||||
|
@ -1651,6 +1660,16 @@ static LRESULT OnCreate( HWND hWnd, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
SendMessageW(hReBarWnd, RB_INSERTBAND, -1, (LPARAM)&rbb);
|
||||
|
||||
hRulerWnd = CreateWindowExW(0, WC_STATICW, NULL, WS_VISIBLE | WS_CHILD,
|
||||
0, 0, 200, 10, hReBarWnd, (HMENU)IDC_RULER, hInstance, NULL);
|
||||
|
||||
|
||||
rbb.hwndChild = hRulerWnd;
|
||||
rbb.wID = BANDID_RULER;
|
||||
rbb.fStyle |= RBBS_BREAK;
|
||||
|
||||
SendMessageW(hReBarWnd, RB_INSERTBAND, -1, (LPARAM)&rbb);
|
||||
|
||||
hDLL = LoadLibraryW(wszRichEditDll);
|
||||
if(!hDLL)
|
||||
{
|
||||
|
@ -2133,6 +2152,11 @@ static LRESULT OnCommand( HWND hWnd, WPARAM wParam, LPARAM lParam)
|
|||
update_window();
|
||||
break;
|
||||
|
||||
case ID_TOGGLE_RULER:
|
||||
set_toolbar_state(BANDID_RULER, !is_bar_visible(BANDID_RULER));
|
||||
update_window();
|
||||
break;
|
||||
|
||||
case ID_DATETIME:
|
||||
{
|
||||
HINSTANCE hInstance = (HINSTANCE)GetWindowLongPtr(hWnd, GWLP_HINSTANCE);
|
||||
|
@ -2216,6 +2240,8 @@ static LRESULT OnInitPopupMenu( HWND hWnd, WPARAM wParam, LPARAM lParam )
|
|||
CheckMenuItem(hMenu, ID_TOGGLE_STATUSBAR, MF_BYCOMMAND|IsWindowVisible(hwndStatus) ?
|
||||
MF_CHECKED : MF_UNCHECKED);
|
||||
|
||||
CheckMenuItem(hMenu, ID_TOGGLE_RULER, MF_BYCOMMAND|(is_bar_visible(BANDID_RULER)) ? MF_CHECKED : MF_UNCHECKED);
|
||||
|
||||
gt.flags = GTL_NUMCHARS;
|
||||
gt.codepage = 1200;
|
||||
textLength = SendMessageW(hEditorWnd, EM_GETTEXTLENGTHEX, (WPARAM)>, 0);
|
||||
|
@ -2241,6 +2267,7 @@ static LRESULT OnSize( HWND hWnd, WPARAM wParam, LPARAM lParam )
|
|||
HWND hwndEditor = GetDlgItem(hWnd, IDC_EDITOR);
|
||||
HWND hwndStatusBar = GetDlgItem(hWnd, IDC_STATUSBAR);
|
||||
HWND hwndReBar = GetDlgItem(hWnd, IDC_REBAR);
|
||||
HWND hRulerWnd = GetDlgItem(hWnd, IDC_RULER);
|
||||
int rebarHeight = 0;
|
||||
int rebarRows = 2;
|
||||
|
||||
|
@ -2274,6 +2301,8 @@ static LRESULT OnSize( HWND hWnd, WPARAM wParam, LPARAM lParam )
|
|||
MoveWindow(hwndEditor, 0, rebarHeight, rc.right, rc.bottom-nStatusSize-rebarHeight, TRUE);
|
||||
}
|
||||
|
||||
redraw_ruler(hRulerWnd);
|
||||
|
||||
return DefWindowProcW(hWnd, WM_SIZE, wParam, lParam);
|
||||
}
|
||||
|
||||
|
@ -2364,6 +2393,9 @@ int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hOldInstance, LPSTR szCmdPar
|
|||
WNDCLASSW wc;
|
||||
MSG msg;
|
||||
RECT rc;
|
||||
UINT_PTR hPrevRulerProc;
|
||||
HWND hRulerWnd;
|
||||
POINTL EditPoint;
|
||||
static const WCHAR wszAccelTable[] = {'M','A','I','N','A','C','C','E','L',
|
||||
'T','A','B','L','E','\0'};
|
||||
|
||||
|
@ -2395,6 +2427,11 @@ int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hOldInstance, LPSTR szCmdPar
|
|||
get_default_printer_opts();
|
||||
target_device(hMainWnd, wordWrap[reg_formatindex(fileFormat)]);
|
||||
|
||||
hRulerWnd = GetDlgItem(GetDlgItem(hMainWnd, IDC_REBAR), IDC_RULER);
|
||||
SendMessageW(GetDlgItem(hMainWnd, IDC_EDITOR), EM_POSFROMCHAR, (WPARAM)&EditPoint, 0);
|
||||
hPrevRulerProc = SetWindowLongPtrW(hRulerWnd, GWLP_WNDPROC, (UINT_PTR)ruler_proc);
|
||||
SendMessageW(hRulerWnd, WM_USER, (WPARAM)&EditPoint, hPrevRulerProc);
|
||||
|
||||
HandleCommandLine(GetCommandLineW());
|
||||
|
||||
while(GetMessageW(&msg,0,0,0))
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Copyright 2004 by Krzysztof Foltman
|
||||
* Copyright 2007 by Alexander N. Sørnes <alex@thehandofagony.com>
|
||||
* Copyright 2007-2008 by Alexander N. Sørnes <alex@thehandofagony.com>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -19,6 +19,8 @@
|
|||
|
||||
#define MAX_STRING_LEN 255
|
||||
|
||||
#define TWIPS_PER_CM 567
|
||||
|
||||
#define ID_FILE_EXIT 1000
|
||||
#define ID_FILE_OPEN 1001
|
||||
#define ID_FILE_SAVE 1002
|
||||
|
@ -75,6 +77,7 @@
|
|||
#define ID_TOGGLE_TOOLBAR 1500
|
||||
#define ID_TOGGLE_FORMATBAR 1501
|
||||
#define ID_TOGGLE_STATUSBAR 1502
|
||||
#define ID_TOGGLE_RULER 1503
|
||||
|
||||
#define PREVIEW_BUTTONS 4
|
||||
|
||||
|
@ -106,10 +109,11 @@
|
|||
|
||||
#define IDC_PAGEFMT_TB 100
|
||||
#define IDC_PAGEFMT_FB 101
|
||||
#define IDC_PAGEFMT_SB 102
|
||||
#define IDC_PAGEFMT_WW 103
|
||||
#define IDC_PAGEFMT_WM 104
|
||||
#define IDC_PAGEFMT_ID 105
|
||||
#define IDC_PAGEFMT_RU 102
|
||||
#define IDC_PAGEFMT_SB 103
|
||||
#define IDC_PAGEFMT_WW 104
|
||||
#define IDC_PAGEFMT_WM 105
|
||||
#define IDC_PAGEFMT_ID 106
|
||||
|
||||
#define ID_DATETIME 1600
|
||||
#define ID_PARAFORMAT 1601
|
||||
|
@ -133,6 +137,7 @@
|
|||
#define IDC_TABSTOPS 2012
|
||||
#define IDC_FONTLIST 2013
|
||||
#define IDC_SIZELIST 2014
|
||||
#define IDC_RULER 2015
|
||||
|
||||
#define IDD_DATETIME 2100
|
||||
#define IDD_NEWFILE 2101
|
||||
|
@ -199,6 +204,8 @@ LRESULT print_preview(HWND);
|
|||
void get_default_printer_opts(void);
|
||||
void registry_set_pagemargins(HKEY);
|
||||
void registry_read_pagemargins(HKEY);
|
||||
LRESULT CALLBACK ruler_proc(HWND, UINT, WPARAM, LPARAM);
|
||||
void redraw_ruler(HWND);
|
||||
|
||||
int reg_formatindex(WPARAM);
|
||||
void registry_read_filelist(HWND);
|
||||
|
|
Loading…
Reference in New Issue