Author: tkreuzer Date: Sat May 19 05:33:27 2007 New Revision: 26834
URL: http://svn.reactos.org/svn/reactos?rev=26834&view=rev Log: implement a basic fontview.exe. It doesn't work on ROS atm due to missing implementation of GetFontResourceInfoW(), but works on XP.
Added: trunk/rosapps/fontview/ trunk/rosapps/fontview/display.c trunk/rosapps/fontview/display.h trunk/rosapps/fontview/fontview.c trunk/rosapps/fontview/fontview.h trunk/rosapps/fontview/fontview.rbuild trunk/rosapps/fontview/fontview.rc trunk/rosapps/fontview/lang/ trunk/rosapps/fontview/lang/de-DE.rc trunk/rosapps/fontview/lang/en-US.rc trunk/rosapps/fontview/resource.h Modified: trunk/rosapps/directory.rbuild
Modified: trunk/rosapps/directory.rbuild URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/directory.rbuild?rev=26834&... ============================================================================== --- trunk/rosapps/directory.rbuild (original) +++ trunk/rosapps/directory.rbuild Sat May 19 05:33:27 2007 @@ -20,6 +20,10 @@
<directory name="downloader"> <xi:include href="downloader/downloader.rbuild" /> +</directory> + +<directory name="fontview"> + <xi:include href="fontview/fontview.rbuild" /> </directory>
<directory name="gettype">
Added: trunk/rosapps/fontview/display.c URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/fontview/display.c?rev=2683... ============================================================================== --- trunk/rosapps/fontview/display.c (added) +++ trunk/rosapps/fontview/display.c Sat May 19 05:33:27 2007 @@ -1,0 +1,344 @@ +/* + * fontview display class + * + * display.c + * + * Copyright (C) 2007 Timo Kreuzer <timo <dot> kreuzer <at> reactos <dot> org> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include <windows.h> +#include <stdio.h> + +#include "display.h" + +#define SPACING1 8 +#define SPACING2 5 + +const WCHAR g_szFontDisplayClassName[] = L"FontDisplayClass"; +LRESULT CALLBACK DisplayProc(HWND, UINT, WPARAM, LPARAM); + +/* Internal data storage type */ +typedef struct +{ + int nHeight; + WCHAR szTypeFaceName[MAX_TYPEFACENAME]; + WCHAR szFormat[MAX_FORMAT]; + WCHAR szString[MAX_STRING]; +} DISPLAYDATA; + +/* This is the only public function, it registers the class */ +BOOL +Display_InitClass(HINSTANCE hInstance) +{ + WNDCLASSEXW wincl; + + /* Set the fontdisplay window class structure */ + wincl.cbSize = sizeof(WNDCLASSEX); + wincl.style = CS_DBLCLKS; + wincl.lpfnWndProc = DisplayProc; + wincl.cbClsExtra = 0; + wincl.cbWndExtra = 0; + wincl.hInstance = hInstance; + wincl.hIcon = NULL; + wincl.hCursor = LoadCursor (NULL, IDC_ARROW); + wincl.hbrBackground = GetStockObject(WHITE_BRUSH); + wincl.lpszMenuName = NULL; + wincl.lpszClassName = g_szFontDisplayClassName; + wincl.hIconSm = NULL; + + /* Register the window class, and if it fails return FALSE */ + if (!RegisterClassExW (&wincl)) + { + return FALSE; + } + return TRUE; +} + +static int +Display_DrawText(HDC hDC, DISPLAYDATA* pData, int nYPos, BOOL bDraw) +{ + HFONT hOldFont, hFont, hFontNums; + TEXTMETRIC tm; + int i, y; + const int nSizes[7] = {12, 18, 24, 36, 48, 60, 72}; + WCHAR szSize[5]; + WCHAR szCaption[MAX_TYPEFACENAME + 20]; + + /* This is the location on the DC where we draw */ + y = -nYPos; + + /* Draw font name */ + hFont = CreateFontW(50, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, + ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, + DEFAULT_PITCH , L"Ms Shell Dlg"); + hOldFont = SelectObject(hDC, hFont); + if (bDraw) + { + swprintf(szCaption, L"%s (%s)", pData->szTypeFaceName, pData->szFormat); + TextOutW(hDC, 0, y, szCaption, wcslen(szCaption)); + } + GetTextMetrics(hDC, &tm); + y += tm.tmHeight + SPACING1; + SelectObject(hDC, hOldFont); + DeleteObject(hFont); + + /* Draw a seperation Line */ + if (bDraw) + { + SelectObject(hDC, GetStockObject(BLACK_PEN)); + MoveToEx(hDC, 0, y, NULL); + LineTo(hDC, 10000, y); + } + y += SPACING2; + + /* Output font info */ + hFont = CreateFontW(12, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, + ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, + DEFAULT_PITCH , pData->szTypeFaceName); + hOldFont = SelectObject(hDC, hFont); + SelectObject(hDC, hOldFont); + DeleteObject(hFont); + + /* Outout the lines for different sizes */ + hFontNums = CreateFontW(12, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, + ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, + DEFAULT_PITCH , L"Ms Shell Dlg"); + + for (i = 0; i < 7; i++) + { + hOldFont = SelectObject(hDC, hFontNums); + if (bDraw) + { + swprintf(szSize, L"%d", nSizes[i]); + TextOutW(hDC, 0, y, szSize, wcslen(szSize)); + } + hFont = CreateFontW(nSizes[i], 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, + ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, + DEFAULT_PITCH , pData->szTypeFaceName); + SelectObject(hDC, hFont); + if (bDraw) + { + TextOutW(hDC, 20, y, pData->szString, wcslen(pData->szString)); + } + GetTextMetrics(hDC, &tm); + y += tm.tmHeight + 2; + SelectObject(hDC, hOldFont); + DeleteObject(hFont); + } + DeleteObject(hFontNums); + + return y; +} + +static LRESULT +Display_OnCreate(HWND hwnd) +{ + DISPLAYDATA* pData; + + /* Initialize data structure */ + pData = malloc(sizeof(DISPLAYDATA)); + pData->nHeight = 0; + swprintf(pData->szTypeFaceName, L""); + swprintf(pData->szFormat, L""); + swprintf(pData->szString, L""); + + /* Set the window's GWLP_USERDATA to our data structure */ + SetWindowLongPtr(hwnd, GWLP_USERDATA, (LONG_PTR)pData); + + return 0; +} + +static LRESULT +Display_OnPaint(HWND hwnd) +{ + DISPLAYDATA* pData; + PAINTSTRUCT ps; + SCROLLINFO si; + + pData = (DISPLAYDATA*)GetWindowLongPtr(hwnd, GWLP_USERDATA); + + /* Get the Scroll position */ + si.cbSize = sizeof(si); + si.fMask = SIF_POS; + GetScrollInfo(hwnd, SB_VERT, &si); + + BeginPaint(hwnd, &ps); + + /* fill with white */ + FillRect(ps.hdc, &ps.rcPaint, GetStockObject(WHITE_BRUSH)); + + /* Draw the text */ + Display_DrawText(ps.hdc, pData, si.nPos, TRUE); + + EndPaint(hwnd, &ps); + + return 0; +} + +static LRESULT +Display_OnSize(HWND hwnd) +{ + RECT rect; + SCROLLINFO si; + + GetClientRect(hwnd, &rect); + + /* Set the new page size */ + si.cbSize = sizeof(si); + si.fMask = SIF_PAGE; + si.nPage = rect.bottom; + SetScrollInfo(hwnd, SB_VERT, &si, TRUE); +// FIXME: handle exceeding of current pos -> redraw entire window +// if new page size is < curent pos: current pos = maximum whatever and then redraw + return 0; +} + +static LRESULT +Display_OnVScroll(HWND hwnd, WPARAM wParam) +{ + SCROLLINFO si; + int nPos; + + si.cbSize = sizeof(si); + si.fMask = SIF_POS | SIF_RANGE | SIF_TRACKPOS; + GetScrollInfo(hwnd, SB_VERT, &si); + + switch(LOWORD(wParam)) + { + case SB_PAGEUP: + nPos = si.nPos - 50; + break; + case SB_PAGEDOWN: + nPos = si.nPos + 50; + break; + case SB_LINEUP: + nPos = si.nPos - 10; + break; + case SB_LINEDOWN: + nPos = si.nPos + 10; + break; +// case SB_THUMBTRACK: + case SB_THUMBPOSITION: + nPos = si.nTrackPos; + break; + default: + nPos = si.nPos; + } + + nPos = max(nPos, si.nMin); + nPos = min(nPos, si.nMax); + if (nPos != si.nPos) + { + ScrollWindowEx(hwnd, 0, -(nPos - si.nPos), NULL, NULL, NULL, NULL, SW_INVALIDATE); + si.cbSize = sizeof(si); + si.nPos = nPos; + si.fMask = SIF_POS; + SetScrollInfo(hwnd, SB_VERT, &si, TRUE); + UpdateWindow(hwnd); + } + return 0; +} + +static LRESULT +Display_SetTypeFace(HWND hwnd, LPARAM lParam) +{ + DISPLAYDATA* pData; + HDC hDC; + RECT rect; + SCROLLINFO si; + + /* Set the new type face name */ + pData = (DISPLAYDATA*)GetWindowLongPtr(hwnd, GWLP_USERDATA); + snwprintf(pData->szTypeFaceName, MAX_TYPEFACENAME, (WCHAR*)lParam); + + /* Calculate new page dimensions */ + hDC = GetDC(hwnd); + pData->nHeight = Display_DrawText(hDC, pData, 0, FALSE); + ReleaseDC(hwnd, hDC); + + /* Set the vertical scrolling range and page size */ + GetClientRect(hwnd, &rect); + si.cbSize = sizeof(si); + si.fMask = SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS; + si.nMin = 0; + si.nMax = pData->nHeight; + si.nPage = rect.bottom; + si.nPos = 0; + si.nTrackPos = 0; + SetScrollInfo(hwnd, SB_VERT, &si, TRUE); + + return 0; +} + +static LRESULT +Display_SetString(HWND hwnd, LPARAM lParam) +{ + DISPLAYDATA* pData; + + pData = (DISPLAYDATA*)GetWindowLongPtr(hwnd, GWLP_USERDATA); + snwprintf(pData->szString, MAX_STRING, (WCHAR*)lParam); + + // FIXME: redraw the window + + return 0; +} + +static LRESULT +Display_OnDestroy(HWND hwnd) +{ + DISPLAYDATA* pData; + + /* Free the data structure */ + pData = (DISPLAYDATA*)GetWindowLongPtr(hwnd, GWLP_USERDATA); + free(pData); + + return 0; +} + +LRESULT CALLBACK +DisplayProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) +{ + switch (message) + { + case WM_CREATE: + return Display_OnCreate(hwnd); + + case WM_PAINT: + return Display_OnPaint(hwnd); + + case WM_SIZE: + return Display_OnSize(hwnd); + + case WM_VSCROLL: + return Display_OnVScroll(hwnd, wParam); + + case FVM_SETTYPEFACE: + return Display_SetTypeFace(hwnd, lParam); + + case FVM_SETSTRING: + return Display_SetString(hwnd, lParam); + + case WM_DESTROY: + return Display_OnDestroy(hwnd); + + default: + return DefWindowProc (hwnd, message, wParam, lParam); + } + + return 0; +} +
Added: trunk/rosapps/fontview/display.h URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/fontview/display.h?rev=2683... ============================================================================== --- trunk/rosapps/fontview/display.h (added) +++ trunk/rosapps/fontview/display.h Sat May 19 05:33:27 2007 @@ -1,0 +1,18 @@ +#ifndef _DISPLAY_H +#define _DISPLAY_H + +/* Messages for the display class */ +#define FVM_SETTYPEFACE WM_USER +#define FVM_SETSTRING (WM_USER + 1) + +/* Size restrictions */ +#define MAX_STRING 100 +#define MAX_TYPEFACENAME 32 +#define MAX_FORMAT 20 + +extern const WCHAR g_szFontDisplayClassName[]; + +/* Public function */ +BOOL Display_InitClass(HINSTANCE hInstance); + +#endif // _DISPLAY_H
Added: trunk/rosapps/fontview/fontview.c URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/fontview/fontview.c?rev=268... ============================================================================== --- trunk/rosapps/fontview/fontview.c (added) +++ trunk/rosapps/fontview/fontview.c Sat May 19 05:33:27 2007 @@ -1,0 +1,316 @@ +/* + * fontview + * + * fontview.c + * + * Copyright (C) 2007 Timo Kreuzer <timo <dot> kreuzer <at> reactos <dot> org> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include "fontview.h" + +HINSTANCE g_hInstance; +WCHAR g_szTitle[MAX_LOADSTRING]; +WCHAR g_szTypeFaceName[MAX_TYPEFACENAME]; +static const WCHAR g_szFontViewClassName[] = L"FontViewWClass"; + +/* Tye definition for the GetFontResourceInfo function */ +typedef BOOL (WINAPI *PGFRI)(LPCWSTR, DWORD *, LPWSTR, DWORD); + +DWORD +FormatString( + DWORD dwFlags, + HINSTANCE hInstance, + DWORD dwStringId, + DWORD dwLanguageId, + LPWSTR lpBuffer, + DWORD nSize, + va_list* Arguments +) +{ + DWORD dwRet; + int len; + WCHAR Buffer[1000]; + + len = LoadStringW(hInstance, dwStringId, (LPWSTR)Buffer, 1000); + + if (len) + { + dwFlags |= FORMAT_MESSAGE_FROM_STRING; + dwFlags &= ~(FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_FROM_SYSTEM); + dwRet = FormatMessageW(dwFlags, Buffer, 0, dwLanguageId, lpBuffer, nSize, Arguments); + return dwRet; + } + return 0; +} + +static void +ErrorMsgBox(HWND hParent, DWORD dwCaptionID, DWORD dwMessageId, ...) +{ + HMODULE hModule; + HLOCAL hMemCaption = NULL; + HLOCAL hMemText = NULL; + va_list args; + + hModule = GetModuleHandle(NULL); + + va_start(args, dwMessageId); + FormatString(FORMAT_MESSAGE_ALLOCATE_BUFFER, + NULL, dwMessageId, 0, (LPWSTR)&hMemText, 0, &args); + va_end(args); + + FormatString(FORMAT_MESSAGE_ALLOCATE_BUFFER, + NULL, dwCaptionID, 0, (LPWSTR)&hMemCaption, 0, NULL); + + MessageBoxW(hParent, hMemText, hMemCaption, MB_ICONERROR); + + LocalFree(hMemCaption); + LocalFree(hMemText); +} + +int WINAPI +WinMain (HINSTANCE hThisInstance, + HINSTANCE hPrevInstance, + LPSTR lpCmdLine, + int nCmdShow) +{ + int argc; + WCHAR** argv; + DWORD dwSize; + HWND hMainWnd; + MSG msg; + WNDCLASSEXW wincl; + + g_hInstance = hThisInstance; + + /* Get unicode command line */ + argv = CommandLineToArgvW(GetCommandLineW(), &argc); + if (argc < 2) + { + ErrorMsgBox(0, IDS_ERROR, IDS_ERROR_BADCMD, argv[1]); + return -1; + } + + /* Try to add the font resource */ + if (!AddFontResourceW(argv[1])) + { + ErrorMsgBox(0, IDS_ERROR, IDS_ERROR_NOFONT, argv[1]); + return -1; + } + + /* Load the GetFontResourceInfo function from gdi32.dll */ + HINSTANCE hDLL = LoadLibraryW(L"GDI32.DLL"); + PGFRI GetFontResourceInfoW = (PGFRI)GetProcAddress(hDLL, "GetFontResourceInfoW"); + + /* Get the font name */ + dwSize = sizeof(g_szTypeFaceName); + if (!GetFontResourceInfoW(argv[1], &dwSize, g_szTypeFaceName, 1)) + { + ErrorMsgBox(0, IDS_ERROR, IDS_ERROR_NOFONT, argv[1]); + return -1; + } + + if (!Display_InitClass(hThisInstance)) + { + ErrorMsgBox(0, IDS_ERROR, IDS_ERROR_NOCLASS); + return -1; + } + + /* The main window class */ + wincl.cbSize = sizeof (WNDCLASSEX); + wincl.style = CS_DBLCLKS; + wincl.lpfnWndProc = MainWndProc; + wincl.cbClsExtra = 0; + wincl.cbWndExtra = 0; + wincl.hInstance = hThisInstance; + wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION); + wincl.hCursor = LoadCursor (NULL, IDC_ARROW); + wincl.hbrBackground = (HBRUSH)COLOR_BACKGROUND; + wincl.lpszMenuName = NULL; + wincl.lpszClassName = g_szFontViewClassName; + wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION); + + /* Register the window class, and if it fails quit the program */ + if (!RegisterClassExW (&wincl)) + { + ErrorMsgBox(0, IDS_ERROR, IDS_ERROR_NOCLASS); + return 0; + } + + /* The class is registered, let's create the main window */ + hMainWnd = CreateWindowExW( + 0, /* Extended possibilites for variation */ + g_szFontViewClassName, /* Classname */ + g_szTitle, /* Title Text */ + WS_OVERLAPPEDWINDOW, /* default window */ + CW_USEDEFAULT, /* Windows decides the position */ + CW_USEDEFAULT, /* where the window ends up on the screen */ + 544, /* The programs width */ + 375, /* and height in pixels */ + HWND_DESKTOP, /* The window is a child-window to desktop */ + NULL, /* No menu */ + hThisInstance, /* Program Instance handler */ + NULL /* No Window Creation data */ + ); + ShowWindow (hMainWnd, nCmdShow); + + /* Main message loop */ + while (GetMessage (&msg, NULL, 0, 0)) + { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + + RemoveFontResourceW(argv[1]); + + return msg.wParam; +} + +static LRESULT +MainWnd_OnCreate(HWND hwnd) +{ + WCHAR szQuit[MAX_BUTTONNAME]; + WCHAR szPrint[MAX_BUTTONNAME]; + WCHAR szString[MAX_STRING]; + HWND hDisplay, hButtonQuit, hButtonPrint; + + /* create the display window */ + hDisplay = CreateWindowExW( + 0, /* Extended style */ + g_szFontDisplayClassName, /* Classname */ + L"", /* Title text */ + WS_CHILD | WS_VSCROLL| WS_VISIBLE, /* Window style */ + 0, /* X-pos */ + HEADER_SIZE, /* Y-Pos */ + 550, /* Width */ + 370-HEADER_SIZE, /* Height */ + hwnd, /* Parent */ + (HMENU)IDC_DISPLAY, /* Identifier */ + g_hInstance, /* Program Instance handler */ + NULL /* Window Creation data */ + ); + + /* Init the display window wit the font name */ + LoadStringW(g_hInstance, IDS_STRING, szString, MAX_STRING); + + SendMessage(hDisplay, FVM_SETSTRING, 0, (LPARAM)szString); + SendMessage(hDisplay, FVM_SETTYPEFACE, 0, (LPARAM)g_szTypeFaceName); + /* Create the quit button */ + LoadStringW(g_hInstance, IDS_QUIT, szQuit, MAX_BUTTONNAME); + hButtonQuit = CreateWindowExW( + 0, /* Extended style */ + L"button", /* Classname */ + szQuit, /* Title text */ + WS_CHILD | WS_VISIBLE, /* Window style */ + BUTTON_POS_X, /* X-pos */ + BUTTON_POS_Y, /* Y-Pos */ + BUTTON_WIDTH, /* Width */ + BUTTON_HEIGHT, /* Height */ + hwnd, /* Parent */ + (HMENU)IDC_QUIT, /* Identifier */ + g_hInstance, /* Program Instance handler */ + NULL /* Window Creation data */ + ); + SendMessage(hButtonQuit, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), (LPARAM)TRUE); + + /* Create the print button */ + LoadStringW(g_hInstance, IDS_PRINT, szPrint, MAX_BUTTONNAME); + hButtonPrint = CreateWindowExW( + 0, /* Extended style */ + L"button", /* Classname */ + szPrint, /* Title text */ + WS_CHILD | WS_VISIBLE, /* Window style */ + 450, /* X-pos */ + BUTTON_POS_Y, /* Y-Pos */ + BUTTON_WIDTH, /* Width */ + BUTTON_HEIGHT, /* Height */ + hwnd, /* Parent */ + (HMENU)IDC_PRINT, /* Identifier */ + g_hInstance, /* Program Instance handler */ + NULL /* Window Creation data */ + ); + SendMessage(hButtonPrint, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), (LPARAM)TRUE); + + return 0; +} + +static LRESULT +MainWnd_OnSize(HWND hwnd) +{ + RECT rc; + + GetClientRect(hwnd, &rc); + MoveWindow(GetDlgItem(hwnd, IDC_PRINT), rc.right - BUTTON_WIDTH - BUTTON_POS_X, BUTTON_POS_Y, BUTTON_WIDTH, BUTTON_HEIGHT, TRUE); + MoveWindow(GetDlgItem(hwnd, IDC_DISPLAY), 0, HEADER_SIZE, rc.right, rc.bottom - HEADER_SIZE, TRUE); + + return 0; +} + +static LRESULT +MainWnd_OnPaint(HWND hwnd) +{ + HDC hDC; + PAINTSTRUCT ps; + RECT rc; + + hDC = BeginPaint(hwnd, &ps); + GetClientRect(hwnd, &rc); + rc.top = HEADER_SIZE - 2; + rc.bottom = HEADER_SIZE; + FillRect(hDC, &rc, GetStockObject(GRAY_BRUSH)); + EndPaint(hwnd, &ps); + return 0; +} + +LRESULT CALLBACK +MainWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) +{ + switch (message) + { + case WM_CREATE: + return MainWnd_OnCreate(hwnd); + + case WM_PAINT: + return MainWnd_OnPaint(hwnd); + + case WM_SIZE: + return MainWnd_OnSize(hwnd); + + case WM_COMMAND: + switch(LOWORD(wParam)) + { + case IDC_QUIT: + PostQuitMessage (0); /* send a WM_QUIT to the message queue */ + break; + + case IDC_PRINT: + MessageBox(hwnd, TEXT("This function is unimplemented"), TEXT("Unimplemented"), MB_OK); + break; + } + break; + + case WM_DESTROY: + PostQuitMessage (0); /* send a WM_QUIT to the message queue */ + break; + + default: /* for messages that we don't deal with */ + return DefWindowProc (hwnd, message, wParam, lParam); + } + + return 0; +} + +/* EOF */
Added: trunk/rosapps/fontview/fontview.h URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/fontview/fontview.h?rev=268... ============================================================================== --- trunk/rosapps/fontview/fontview.h (added) +++ trunk/rosapps/fontview/fontview.h Sat May 19 05:33:27 2007 @@ -1,0 +1,21 @@ +#include <windows.h> + +#include "resource.h" +#include "display.h" + +#define MAX_LOADSTRING 50 +#define MAX_BUTTONNAME 30 + +#define HEADER_SIZE 37 +#define BUTTON_POS_X 6 +#define BUTTON_POS_Y 8 +#define BUTTON_WIDTH 72 +#define BUTTON_HEIGHT 21 + +#define IDC_QUIT 1001 +#define IDC_PRINT 1002 +#define IDC_DISPLAY 1003 + +LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM); + +BOOL LoadFont(LPWSTR lpCmdLine);
Added: trunk/rosapps/fontview/fontview.rbuild URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/fontview/fontview.rbuild?re... ============================================================================== --- trunk/rosapps/fontview/fontview.rbuild (added) +++ trunk/rosapps/fontview/fontview.rbuild Sat May 19 05:33:27 2007 @@ -1,0 +1,11 @@ +<module name="fontview" type="win32gui" installbase="system32" installname="fontview.exe"> + <include base="fontview">.</include> + <define name="__USE_W32API" /> + <library>gdi32</library> + <library>user32</library> + <library>shell32</library> + <library>kernel32</library> + <file>fontview.c</file> + <file>display.c</file> + <file>fontview.rc</file> +</module>
Added: trunk/rosapps/fontview/fontview.rc URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/fontview/fontview.rc?rev=26... ============================================================================== --- trunk/rosapps/fontview/fontview.rc (added) +++ trunk/rosapps/fontview/fontview.rc Sat May 19 05:33:27 2007 @@ -1,0 +1,10 @@ + + +#include "lang/de-DE.rc" + +STRINGTABLE DISCARDABLE +{ + IDS_CHARSLOWER, "abcdefghijklmnopqrstuvmxyz" + IDS_CHARSUPPER, "ABCDEFGHIJKLMNOPQRSTUVMXYZ" + IDS_SPECIALCHARS, "0123456789.:,;(*!?')" +}
Added: trunk/rosapps/fontview/lang/de-DE.rc URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/fontview/lang/de-DE.rc?rev=... ============================================================================== --- trunk/rosapps/fontview/lang/de-DE.rc (added) +++ trunk/rosapps/fontview/lang/de-DE.rc Sat May 19 05:33:27 2007 @@ -1,0 +1,18 @@ + +#include "windows.h" +#include "../resource.h" + +LANGUAGE LANG_GERMAN, SUBLANG_GERMAN + +STRINGTABLE DISCARDABLE +{ + IDS_QUIT, "Fertig" + IDS_PRINT, "Drucken" + IDS_STRING, "Franz jagt im komplett verwahrlosten Taxi quer durch Bayern. 1234567890" + IDS_ERROR, "Fehler" + IDS_ERROR_NOMEM, "Es steht nicht genügend Speicher zur Verfügung." + IDS_ERROR_NOFONT, "Die angegebene Datei %1 ist keine gültige Schriftartendatei." + IDS_ERROR_NOCLASS, "Fehler beim initialisieren der Fensterklasse." + IDS_ERROR_BADCMD, "Keine Schriftartendatei angegeben.\nSyntax:\n fontview.exe <Schriftdatei>" +} +
Added: trunk/rosapps/fontview/lang/en-US.rc URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/fontview/lang/en-US.rc?rev=... ============================================================================== --- trunk/rosapps/fontview/lang/en-US.rc (added) +++ trunk/rosapps/fontview/lang/en-US.rc Sat May 19 05:33:27 2007 @@ -1,0 +1,18 @@ + +#include "windows.h" +#include "../resource.h" + +LANGUAGE LANG_GERMAN, SUBLANG_GERMAN + +STRINGTABLE DISCARDABLE +{ + IDS_QUIT, "Quit" + IDS_PRINT, "Print" + IDS_STRING, "Jackdaws love my big sphinx of quartz. 123456890" + IDS_ERROR, "Error" + IDS_ERROR_NOMEM, "There's not enough memory to complete the operation." + IDS_ERROR_NOFONT, "The file %1 ist not a valid font file." + IDS_ERROR_NOCLASS, "Could not initialize window class." + IDS_ERROR_BADCMD, "No font file given.\nSyntax:\n fontview.exe <font file>" +} +
Added: trunk/rosapps/fontview/resource.h URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/fontview/resource.h?rev=268... ============================================================================== --- trunk/rosapps/fontview/resource.h (added) +++ trunk/rosapps/fontview/resource.h Sat May 19 05:33:27 2007 @@ -1,0 +1,15 @@ + +#define IDS_ERROR 100 +#define IDS_ERROR_NOMEM 101 +#define IDS_ERROR_NOFONT 102 +#define IDS_ERROR_NOCLASS 103 +#define IDS_ERROR_BADCMD 104 + +#define IDS_QUIT 500 +#define IDS_PRINT 501 +#define IDS_STRING 502 + +#define IDS_CHARSLOWER 700 +#define IDS_CHARSUPPER 701 +#define IDS_SPECIALCHARS 702 +