📄 gdidemo.c
字号:
} CreateWindowEx (CTRL_ANIMATION, "", WS_VISIBLE | ANS_AUTOLOOP | ANS_SCALED, WS_EX_NONE, 100, 0, 0, DEMO_WINDOW_WIDTH, DEMO_WINDOW_HIGHT, hWnd, (DWORD)anim); SetWindowAdditionalData (hWnd, (DWORD) anim); ShowWindow(GetDlgItem (hWnd, 100), SW_SHOW); SendMessage (GetDlgItem (hWnd, 100), ANM_STARTPLAY, 0, 0); return 0;}void anima_gdi_scene_deinit(HWND hWnd, MDSCENE *pScene){ SendMessage (GetDlgItem (hWnd, 100), ANM_STOPPLAY, 0, 0); DestroyAnimation ((ANIMATION*)GetWindowAdditionalData (hWnd), TRUE); DestroyAllControls (hWnd); anim = NULL; ReleaseDC (((GDISCENE *)pScene)->hdc );}/* ------------------------------- Total scenes ---------------------------------- */int gdi_scene_init (HWND hWnd, MDSCENE *pScene){ GDISCENE *pGdiScene = (GDISCENE *) pScene; SetWindowBkColor (hWnd, PIXEL_lightwhite); UpdateWindow (hWnd, TRUE); pGdiScene->hdc = GetClientDC (hWnd); return 0;}void gdi_scene_deinit (HWND hWnd, MDSCENE *pScene){ ReleaseDC ( ((GDISCENE *)pScene)->hdc );}/*--------------------------------font---------------------------------------------*/void GDIDemo_LogFont(HWND hwnd, HDC hdc);static int adv2d_logfont_init (HWND hWnd, MDSCENE *pScene){ GDISCENE *pGdiScene = (GDISCENE *)pScene; gdi_scene_init (hWnd, pScene); GDIDemo_LogFont (hWnd, pGdiScene->hdc); return 0;}const char *gdi_logfont_tips[] = { "Font Demo", NULL};void GDIDemo_LogFont(HWND hwnd, HDC hdc){ RECT rctxt; int h = 20; rctxt.left = 10; rctxt.right = 300; rctxt.top = 0; rctxt.bottom = rctxt.top + h; SetBrushColor(hdc, PIXEL_black); FillBox(hdc, 5, 0, DEMO_WINDOW_WIDTH - 5, DEMO_WINDOW_HIGHT); if(FontDc == 0) { FontDc = CreateCompatibleDCEx(hdc, FONT_MEMDC_WIDTH, FONT_MEMDC_HIGHT); SetBkMode (FontDc, BM_TRANSPARENT); SetTextColor (FontDc, PIXEL_yellow); font[0] = CreateLogFont (NULL, "fixed", "iso8859-1", FONT_WEIGHT_BOOK, FONT_SLANT_ROMAN, FONT_SETWIDTH_BOLD, FONT_SPACING_CHARCELL, FONT_UNDERLINE_NONE, FONT_STRUCKOUT_NONE, 12, 0); SelectFont(FontDc, font[0]); DrawText (FontDc, "fixed 6*12: MiniGUI", -1, &rctxt, DT_SINGLELINE | DT_CENTER | DT_VCENTER); rctxt.top = rctxt.bottom ; rctxt.bottom = rctxt.top + h; font[1] = CreateLogFont (NULL, "fixed", "iso8859-1", FONT_WEIGHT_BOOK, FONT_SLANT_ROMAN, FONT_SETWIDTH_BOLD, FONT_SPACING_CHARCELL, FONT_UNDERLINE_NONE, FONT_STRUCKOUT_NONE, 16, 0); SelectFont(FontDc, font[1]); DrawText (FontDc, "fixed 8*16: MiniGUI", -1, &rctxt, DT_SINGLELINE | DT_CENTER | DT_VCENTER); rctxt.top = rctxt.bottom ; rctxt.bottom = rctxt.top + h; font[2] = CreateLogFont (NULL, "fixed", "iso8859-1", FONT_WEIGHT_BOOK, FONT_SLANT_ROMAN, FONT_SETWIDTH_BOLD, FONT_SPACING_CHARCELL, FONT_UNDERLINE_NONE, FONT_STRUCKOUT_NONE, 24, 0); SelectFont(FontDc, font[2]); DrawText (FontDc, "fixed 12*24: MiniGUI", -1, &rctxt, DT_SINGLELINE | DT_CENTER | DT_VCENTER); rctxt.top = rctxt.bottom ; rctxt.bottom = rctxt.top + h; font[3] = CreateLogFont (NULL, "sansserif", "iso8859-1", FONT_WEIGHT_BOOK, FONT_SLANT_ROMAN, FONT_SETWIDTH_BOLD, FONT_SPACING_CHARCELL, FONT_UNDERLINE_NONE, FONT_STRUCKOUT_NONE, 13, 0); SelectFont(FontDc, font[3]); DrawText (FontDc, "sansserif 11*13: MiniGUI", -1, &rctxt, DT_SINGLELINE | DT_CENTER | DT_VCENTER); rctxt.top = rctxt.bottom ; rctxt.bottom = rctxt.top + h; font[4] = CreateLogFont (NULL, "courier", "iso8859-1", FONT_WEIGHT_BOOK, FONT_SLANT_ROMAN, FONT_SETWIDTH_BOLD, FONT_SPACING_CHARCELL, FONT_UNDERLINE_NONE, FONT_STRUCKOUT_NONE, 13, 0); SelectFont(FontDc, font[4]); DrawText (FontDc, "courier 8*13: MiniGUI", -1, &rctxt, DT_SINGLELINE | DT_CENTER | DT_VCENTER); rctxt.top = rctxt.bottom ; rctxt.bottom = rctxt.top + h; font[5] = CreateLogFont (NULL, "symbol", "iso8859-1", FONT_WEIGHT_BOOK, FONT_SLANT_ROMAN, FONT_SETWIDTH_BOLD, FONT_SPACING_CHARCELL, FONT_UNDERLINE_NONE, FONT_STRUCKOUT_NONE, 14, 0); SelectFont(FontDc, font[5]); DrawText (FontDc, "symbol 13*14: MiniGUI", -1, &rctxt, DT_SINGLELINE | DT_CENTER | DT_VCENTER); rctxt.top = rctxt.bottom ; rctxt.bottom = rctxt.top + h; font[6] = CreateLogFont (NULL, "terminal", "iso8859-1", FONT_WEIGHT_BOOK, FONT_SLANT_ROMAN, FONT_SETWIDTH_BOLD, FONT_SPACING_CHARCELL, FONT_UNDERLINE_NONE, FONT_STRUCKOUT_NONE, 12, 0); SelectFont(FontDc, font[6]); DrawText (FontDc, "terminal 8*12: MiniGUI", -1, &rctxt, DT_SINGLELINE | DT_CENTER | DT_VCENTER); rctxt.top = rctxt.bottom ; rctxt.bottom = rctxt.top + h; font[7] = CreateLogFont (NULL, "system", "iso8859-1", FONT_WEIGHT_BOOK, FONT_SLANT_ROMAN, FONT_SETWIDTH_BOLD, FONT_SPACING_CHARCELL, FONT_UNDERLINE_NONE, FONT_STRUCKOUT_NONE, 16, 0); SelectFont(FontDc, font[7]); DrawText (FontDc, "system 14*16: MiniGUI", -1, &rctxt, DT_SINGLELINE | DT_CENTER | DT_VCENTER); rctxt.top = rctxt.bottom ; rctxt.bottom = rctxt.top + h; font[8] = CreateLogFont (NULL, "fixed", "iso8859-1", FONT_WEIGHT_BOOK, FONT_SLANT_ROMAN, FONT_SETWIDTH_BOLD, FONT_SPACING_CHARCELL, FONT_UNDERLINE_NONE, FONT_STRUCKOUT_NONE, 15, 0); SelectFont(FontDc, font[8]); DrawText (FontDc, "fixed 8*15: MiniGUI", -1, &rctxt, DT_SINGLELINE | DT_CENTER | DT_VCENTER); rctxt.top = rctxt.bottom ; rctxt.bottom = rctxt.top + h; font[9] = CreateLogFont (NULL, "helvetica", "iso8859-1", FONT_WEIGHT_BOOK, FONT_SLANT_ROMAN, FONT_SETWIDTH_BOLD, FONT_SPACING_CHARCELL, FONT_UNDERLINE_NONE, FONT_STRUCKOUT_NONE, 16, 0); SelectFont(FontDc, font[9]); DrawText (FontDc, "helvetica 15*16: MiniGUI", -1, &rctxt, DT_SINGLELINE | DT_CENTER | DT_VCENTER); rctxt.top = rctxt.bottom ; rctxt.bottom = rctxt.top + h; font[10] = CreateLogFont (NULL, "helvetica", "iso8859-1", FONT_WEIGHT_BOOK, FONT_SLANT_ROMAN, FONT_SETWIDTH_BOLD, FONT_SPACING_CHARCELL, FONT_UNDERLINE_NONE, FONT_STRUCKOUT_NONE, 21, 0); SelectFont(FontDc, font[10]); DrawText (FontDc, "helvetica 18*21: MiniGUI", -1, &rctxt, DT_SINGLELINE | DT_CENTER | DT_VCENTER); rctxt.top = rctxt.bottom ; rctxt.bottom = rctxt.top + h; font[11] = CreateLogFont (NULL, "helvetica", "iso8859-1", FONT_WEIGHT_BOOK, FONT_SLANT_ROMAN, FONT_SETWIDTH_BOLD, FONT_SPACING_CHARCELL, FONT_UNDERLINE_NONE, FONT_STRUCKOUT_NONE, 27, 0); SelectFont(FontDc, font[11]); DrawText (FontDc, "helvetica 24*27: MiniGUI", -1, &rctxt, DT_SINGLELINE | DT_CENTER | DT_VCENTER); rctxt.top = rctxt.bottom ; rctxt.bottom = rctxt.top + h; font[12] = CreateLogFont (NULL, "ming", "GB2312", FONT_WEIGHT_REGULAR, FONT_SLANT_ROMAN, FONT_SETWIDTH_BOLD, FONT_SPACING_CHARCELL, FONT_UNDERLINE_NONE, FONT_STRUCKOUT_NONE, 12, 0); SelectFont(FontDc, font[12]); DrawText (FontDc, "宋体 12*12: 飞漫软件", -1, &rctxt, DT_SINGLELINE | DT_CENTER | DT_VCENTER); rctxt.top = rctxt.bottom ; rctxt.bottom = rctxt.top + h; font[13] = CreateLogFont (NULL, "song", "GB2312", FONT_WEIGHT_REGULAR, FONT_SLANT_ROMAN, FONT_SETWIDTH_BOLD, FONT_SPACING_CHARCELL, FONT_UNDERLINE_NONE, FONT_STRUCKOUT_NONE, 16, 0); SelectFont(FontDc, font[13]); DrawText (FontDc, "宋体 16*16: 飞漫软件", -1, &rctxt, DT_SINGLELINE | DT_CENTER | DT_VCENTER); rctxt.top = rctxt.bottom ; rctxt.bottom = rctxt.top + h + 3; font[14] = CreateLogFont (NULL, "ming", "GB2312", FONT_WEIGHT_REGULAR, FONT_SLANT_ROMAN, FONT_SETWIDTH_BOLD, FONT_SPACING_CHARCELL, FONT_UNDERLINE_NONE, FONT_STRUCKOUT_NONE, 24, 0); SelectFont(FontDc, font[14]); DrawText (FontDc, "宋体 24*24: 飞漫软件", -1, &rctxt, DT_SINGLELINE | DT_CENTER | DT_VCENTER); rctxt.top = rctxt.bottom ; rctxt.bottom = rctxt.top + h; font[15] = CreateLogFont (NULL, "gothic", "JISX0208-1", FONT_WEIGHT_BOOK, FONT_SLANT_ROMAN, FONT_SETWIDTH_BOLD, FONT_SPACING_CHARCELL, FONT_UNDERLINE_NONE, FONT_STRUCKOUT_NONE, 16, 0); SelectFont(FontDc, font[15]); DrawText (FontDc, "奩摉偡傞僨乕僞偑偁傝傑偣傫", -1, &rctxt, DT_SINGLELINE | DT_CENTER | DT_VCENTER); } DC_Position = 10; FontDCPosition = 0; SetTimer(hwnd, 140, 5);}int FontProc(HWND hDlg, int message, WPARAM wParam, LPARAM lParam){ switch (message) { case MSG_TIMER: { RECT rc; rc.left = 0; rc.top = 0; rc.right = DEMO_WINDOW_WIDTH; rc.bottom = DEMO_WINDOW_HIGHT; InvalidateRect(hDlg, &rc, FALSE); if(DC_Position < -322) { DC_Position = DEMO_WINDOW_HIGHT; } else { DC_Position--; } break; } case MSG_PAINT: { HDC hdc; hdc = BeginPaint(hDlg); BitBlt(FontDc, 0, 0, FONT_MEMDC_WIDTH, FONT_MEMDC_HIGHT, hdc, 10, DC_Position, 0); EndPaint(hDlg, hdc); break; } } return default_desktop_win_proc (hDlg, message, wParam, lParam);}void font_scene_deinit (HWND hWnd, MDSCENE *pScene) { int i; KillTimer(hWnd, 140); for(i = 0; i < 16; i++) { if(font[i] != 0) DestroyLogFont(font[i]); font[i] = 0; } DeleteMemDC(FontDc); FontDc = 0; ReleaseDC ( ((GDISCENE *)pScene)->hdc );}/*---------------------------------------------------------------------------------*/GDISCENE my_gdi_scenes [] ={ { NULL, NULL, clock_scene_init, gdi_scene_deinit, ClockProc, gdi_clock_tips, }, { NULL, NULL, meter_scene_init, gdi_meter_deinit, MerterProc, gdi_meter_tips, }, { NULL, NULL, Wav_scene_init, gdi_wave_deinit, WaveProc, gdi_wave_tips, }, { NULL, NULL, Animation_scene_init, anima_gdi_scene_deinit, NULL, gdi_animation_tips, }, { NULL, NULL, adv2d_logfont_init, font_scene_deinit, FontProc, gdi_logfont_tips, },};int gdi_scene_nr = TABLESIZE(my_gdi_scenes);int InitGDIScenes (MDSCENE *start_scene, MDSCENE *end_scene){ int i; if (gdi_scene_nr == 0) return -1; my_gdi_scenes[0].prev = start_scene; if (gdi_scene_nr > 1) my_gdi_scenes[0].next = (MDSCENE *)&my_gdi_scenes[1]; for (i = 1; i < gdi_scene_nr-1; i++) { my_gdi_scenes[i].prev = (MDSCENE *)&my_gdi_scenes[i-1]; my_gdi_scenes[i].next = (MDSCENE *)&my_gdi_scenes[i+1]; } if (gdi_scene_nr > 1) { my_gdi_scenes[gdi_scene_nr-1].prev = (MDSCENE *)&my_gdi_scenes[gdi_scene_nr-2]; my_gdi_scenes[gdi_scene_nr-1].next = end_scene; } return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -