/**************/ /* fontcol.c */ /***************************************************************************** PROGRAM: fontcol.c Windows: Win 3.1 & WIN32 PURPOSE: Fonttidialogi (merk. FD) ja väridialogi (merk. CD) Editor: Vesa Lappalainen 9.10.1994 PROJECT: fontcol.c, fontcol.rc, demo.def, ALI\tabhand.c *****************************************************************************/ #include #include /* DC, FD */ #include #include "tabhand.h" #include "fontcol.h" /****************************************************************************/ TblClassSWindowMAIN("TblWndClass","ikoni","Fontit ja värit",MsgTbl,0); /* Käyttää automaattisesti "menu" -nimistä menua! */ /****************************************************************************/ static struct{ HFONT hfont; /* Käytettävä fontti */ /* FD */ COLORREF clr; /* Käytettävä väri */ /* CD */ LOGFONT lf; /* Fontin rakenne */ /* FD */ COLORREF aclrCust[16]; /* Käyttäjän määrit. värit */ /* CD */ } G; static EVENT WM_create(tMSGParam *msg) { int i; (void)msg; GetObject(GetStockObject(SYSTEM_FONT),sizeof(LOGFONT),&G.lf) ; /* FD */ G.hfont = CreateFontIndirect(&G.lf); /* FD */ for (i = 0; i < 16; i++) /* Käyttäjän tekemät värit */ /* CD */ G.aclrCust[i] = RGB(i*16, i*16, i*16); /* CD */ G.clr = RGB(0, 0, 0); /* oletus mustaksi */ /* CD */ return 0; } static EVENT WM_paint(tMSGParam *msg) /* # MAKE_DC # */ { HFONT hfontOld = SelectObject(msg->hDC,G.hfont); /* Fontti */ /* FD */ COLORREF oldcol = SetTextColor(msg->hDC,G.clr); /* Väri */ /* CD */ TextOut(msg->hDC, 10, 10, "Hello World!",12); SetTextColor(msg->hDC,oldcol); /* Palautus */ /* CD */ SelectObject(msg->hDC,hfontOld); /* Palautus */ /* FD */ return 0; } static EVENT WM_command_IDM_OPTIONS_FONT(tMSGParam *msg) { CHOOSEFONT cf; /* FD */ DeleteObject(G.hfont); /* Vanha pois */ /* FD */ cf.lStructSize = sizeof (CHOOSEFONT) ; /* Muista koko! */ /* FD */ cf.hwndOwner = msg->hWnd; /* Dialogin isä */ /* FD */ cf.lpLogFont = &G.lf; /* tulos lf:ään */ /* FD */ cf.Flags = CF_INITTOLOGFONTSTRUCT | CF_SCREENFONTS | CF_EFFECTS; /* FD */ cf.rgbColors = G.clr; /* Oletusväri */ /* FD */ ChooseFont(&cf); /* Fonttidialogi */ /* FD */ G.hfont = CreateFontIndirect(&G.lf); /* Luod. fontti */ /* FD */ G.clr = cf.rgbColors; /* Käyttöväri */ /* FD */ InvalidateRect(msg->hWnd, NULL, TRUE); /* Piirrä näyttö */ /* FD */ return 0; } static EVENT WM_command_IDM_OPTIONS_COLOR(tMSGParam *msg) { CHOOSECOLOR cc; /* CD */ memset(&cc, 0, sizeof(CHOOSECOLOR)); /* nollataan alkiot */ /* CD */ cc.lStructSize = sizeof(CHOOSECOLOR); /* Muista koko! */ /* CD */ cc.hwndOwner = msg->hWnd; /* Kuka dialogin isä */ /* CD */ cc.rgbResult = G.clr; /* Oletusväri */ /* CD */ cc.lpCustColors = G.aclrCust; /* Käyttäjän värit */ /* CD */ cc.Flags = CC_FULLOPEN | CC_RGBINIT; /* Iso ja olet. väri */ /* CD */ ChooseColor(&cc); /* Väridialogi */ /* CD */ G.clr = cc.rgbResult; /* Käyttöväri */ /* CD */ InvalidateRect(msg->hWnd, NULL, TRUE); /* Piirrä näyttö */ /* CD */ return 0; } static EVENT WM_destroy(tMSGParam *msg) { DeleteObject(G.hfont); /* Luodut tuhottava */ /* FD */ PostQuitMessage(msg->wParam); return 0; } /****************************************************************************/ /* Viestien käsittelytaulukko */ /****************************************************************************/ tMSGEntry MsgTbl[] = { { WM_CREATE , DoC , DoC , WM_create }, /*a*/ { WM_PAINT , DoC , DoC , WM_paint, MAKE_DC }, /*a*/ { WM_COMMAND , IDM_OPTIONS_FONT , DoC , WM_command_IDM_OPTIONS_FONT }, /*a*/ { WM_COMMAND , IDM_OPTIONS_COLOR , DoC , WM_command_IDM_OPTIONS_COLOR }, /*a*/ { WM_DESTROY , DoC , DoC , WM_destroy }, /*a*/ { 0 } }; /****************************************************************************/