📄 toolpanel.c
字号:
#include "toolpanel.h"static BITMAP tool_bkgnd;static PLOGFONT logfont;int myLoadBitmapTool (BITMAP* bm, const char* filename){ char full_path [MAX_PATH + 1];#ifndef _PASS#define _PASS strcpy (full_path, "image/toolpanel/"); strcat (full_path, filename);#endif return LoadBitmap (HDC_SCREEN, bm, full_path);}static char *xmBmpName[]={"notepad.png","memoire.png","alarm.png","date.png","source.png","calculator.png","ad.png","unitconversion.png","picture.png" ,"tool_return.png" };static char *xmTitle[]={"记事本", "备忘录", "闹 钟","日程表","资源管理","计算器","数据采集","单位换算","图片浏览","返 回"};static XMBUTTON xmButton [BTM_NUM];static int WhichBox(int x,int y){ int i; for (i=0;i<BTM_NUM;i++) { if ((x>xmButton[i].x)&&(x<xmButton[i].x+xmButton[i].w) &&(y>xmButton[i].y)&&(y<xmButton[i].y+xmButton[i].h)) return i; } return -1;}static int changeMode(HWND hWnd,int x,int y,int mode){ int btm=WhichBox(x,y); int i; RECT rect; static int lastbtm=-1; static int lastmode=BTM_FLAT; if ((btm==lastbtm)&&(mode==lastmode)) return btm; for (i=0;i<BTM_NUM;i++) { if(xmButton[i].mode==BTM_FLAT) continue; xmButton[i].mode=BTM_FLAT; rect.left=xmButton[i].x; rect.right=xmButton[i].x+xmButton[i].w; rect.top=xmButton[i].y; rect.bottom=xmButton[i].y+xmButton[i].h; InvalidateRect(hWnd,&rect,FALSE); } if (btm!=-1) { xmButton[btm].mode=mode; rect.left=xmButton[btm].x; rect.right=xmButton[btm].x+xmButton[btm].w; rect.top=xmButton[btm].y; rect.bottom=xmButton[btm].y+xmButton[btm].h; InvalidateRect(hWnd,&rect,FALSE); } if(btm!=lastbtm) InvalidateRect(hWnd,&rect,FALSE); lastbtm = btm; lastmode = mode; return btm;}static int LogOut(HWND hWnd){ int i; for(i=0;i<BTM_NUM;i++) UnloadBitmap(&(xmButton[i].bitmap)); UnloadBitmap(&tool_bkgnd); DestroyLogFont (logfont); DestroyMainWindow (hWnd); PostQuitMessage (hWnd); return 0;}int ToolPanelWinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam){ static int lastdown=-1; static int iStart = 0; static int iStartPos = 0; switch (message) { case MSG_CREATE: { logfont = CreateLogFont (NULL, "song", "GB2312", FONT_WEIGHT_REGULAR, FONT_SLANT_ROMAN, FONT_SETWIDTH_NORMAL, FONT_SPACING_CHARCELL, FONT_UNDERLINE_NONE, FONT_STRUCKOUT_NONE, 8, 0); } break; case MSG_LBUTTONDOWN: { lastdown = changeMode(hWnd,LOWORD(lParam),HIWORD(lParam),BTM_DOWN ); } break; case MSG_LBUTTONUP: { int up = changeMode(hWnd,LOWORD(lParam),HIWORD(lParam),BTM_FLAT ); if(up==-1) break; if(up==lastdown) { switch(up) { case IDM_NOTEBK: NotePad (hWnd); break ; case IDM_MEMOIRE: Memoire( hWnd); break ; case IDM_ALARM: alarm(hWnd); break ; case IDM_CALENDAR: monthcal (hWnd); break ; case IDM_RESORCE: printf ("This is IDM_RESORCE\n"); break ; case IDM_CACULATOR: Calculator(hWnd); break ; case IDM_AD: OpenAD (hWnd); break ; case IDM_UNITCONVERSION: UnitConversion(hWnd); break ; case IDM_PICTURE: picture(hWnd); break ; case IDM_RETURN: LogOut(hWnd); break ; } } } break; case MSG_MOUSEMOVE: { changeMode(hWnd,LOWORD(lParam),HIWORD(lParam),BTM_UP ); } break; case MSG_PAINT: { HDC hdc; RECT rc;//,rect; int i; hdc = BeginPaint (hWnd); GetWindowRect(hWnd,&rc); FillBoxWithBitmap (hdc,0, 0, 320, 200, &tool_bkgnd); for(i=0;i<BTM_NUM;i++) { if(xmButton[i].mode == BTM_UP) Draw3DUpThickFrame (hdc, xmButton[i].x, xmButton[i].y , xmButton[i].x+xmButton[i].w,xmButton[i].y+xmButton[i].h, PIXEL_black);///////////////////////////PIXEL_lightwhite else if(xmButton[i].mode == BTM_DOWN) Draw3DDownThickFrame (hdc, xmButton[i].x, xmButton[i].y , xmButton[i].x+xmButton[i].w,xmButton[i].y+xmButton[i].h, PIXEL_black);/////////////////////////////PIXEL_lightwhite FillBoxWithBitmap (hdc, xmButton[i].x+xmButton[i].bmpx, xmButton[i].y+xmButton[i].bmpy, 0, 0, &xmButton[i].bitmap); SetBkMode(hdc, BM_TRANSPARENT); SetTextColor(hdc, PIXEL_red); SetTextCharacterExtra( hdc, 0); SelectFont (hdc, logfont); TextOut(hdc,xmButton[i].x+xmButton[i].titlex,xmButton[i].y+xmButton[i].titley, xmButton[i].title); } EndPaint (hWnd,hdc); } return 0; case MSG_CLOSE: LogOut(hWnd); return 0; } return DefaultMainWinProc (hWnd, message, wParam, lParam);}static void initBTMs(void){ int i,j; for(i=0;i<BTM_NUM;i++) { xmButton[i].x=2+(i%5)*63;//170 + xmButton[i].y=10 + ((int)(i/5))*95; xmButton[i].h=70; xmButton[i].w=61; xmButton[i].bmpx=7; xmButton[i].bmpy=5; strcpy(xmButton[i].title,xmTitle[i]); j=strlen(xmButton[i].title); xmButton[i].titlex=(11-j)*3; xmButton[i].titley=52; myLoadBitmapTool (&(xmButton[i].bitmap),xmBmpName [i]); }}void InitToolPanelInfo (PMAINWINCREATE pCreateInfo, HWND hWnd){ pCreateInfo->dwStyle = WS_CAPTION | WS_BORDER | WS_VISIBLE ; pCreateInfo->dwExStyle = WS_EX_IMECOMPOSE;; pCreateInfo->spCaption = "工具面板"; pCreateInfo->hMenu = 0; pCreateInfo->hCursor = GetSystemCursor(0); pCreateInfo->hIcon = 0; pCreateInfo->MainWindowProc = ToolPanelWinProc; pCreateInfo->lx = 0; pCreateInfo->ty = 0; pCreateInfo->rx = 320; pCreateInfo->by = 240; pCreateInfo->iBkColor = PIXEL_lightwhite; pCreateInfo->dwAddData = (DWORD)0; pCreateInfo->hHosting = hWnd;}int ToolPanel(HWND hWnd){ MSG Msg; MAINWINCREATE CreateInfo; HWND hMainWnd; initBTMs(); InitToolPanelInfo (&CreateInfo, hWnd); LoadBitmap (HDC_SCREEN, &tool_bkgnd, "image/background/bkgnd29.jpg"); hMainWnd = CreateMainWindow (&CreateInfo); if (hMainWnd == HWND_INVALID) return 0; while( GetMessage(&Msg, hMainWnd) ) { TranslateMessage(&Msg); DispatchMessage(&Msg); } MainWindowThreadCleanup(hMainWnd); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -