#include "myWin.h" #define ED_MN 1000 WNDPROC winBtnProc; int numArray, id=-1; HFONT bFont, nFont; TCHAR *btName[]={TEXT("東京"), TEXT("大阪"),TEXT("札幌"), TEXT("福岡")}; TCHAR *msgStr[]={ TEXT("関東です。"),TEXT("近畿です。"), TEXT("北海道です。"),TEXT("九州です。") }; static HWND hBtn[sizeof(btName)/sizeof(TCHAR *)]; static HWND edit;HBRUSH hBrush; void setFont(HWND hw, HFONT font){ SendMessage(hw, WM_SETFONT,(WPARAM)font,0); } void drawButton(HWND hw, int color, int bkColor, int i, HFONT font){ setFont(hBtn[i],font); RECT rc; GetClientRect(hw, &rc); HDC hdc=GetDC(hw); id=i; SetBkColor(hdc, bkColor); SetTextColor(hdc, color); DrawText(hdc, btName[id], -1, &rc, DT_VCENTER|DT_SINGLELINE|DT_CENTER); ReleaseDC(hw,hdc); } void btnMouseMove(HWND hw, WPARAM wp, LPARAM lp){ TRACKMOUSEEVENT tme={sizeof(TRACKMOUSEEVENT), TME_LEAVE, hw }; TrackMouseEvent(&tme); drawButton(hw, 0xFF, 0xFFFF, GetWindowLong(hw,GWL_ID), bFont); SetWindowText(edit,msgStr[id]); } void btnMouseLeave(HWND hw, WPARAM wp, LPARAM lp){ if(id>=0) SetWindowText(edit,TEXT("")); drawButton(hw, 0x00, GetSysColor(COLOR_BTNFACE), GetWindowLong(hw,GWL_ID),nFont); id=-1; } LRESULT CALLBACK BtnProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp){ switch(msg){ case WM_DESTROY : PostQuitMessage(0) ; return 0; case WM_MOUSEMOVE: btnMouseMove(hw, wp, lp);return 0; case WM_MOUSELEAVE: btnMouseLeave(hw, wp, lp);return 0; } return winBtnProc(hw, msg, wp, lp); } void createButton(HWND hw){ numArray=sizeof(sizeof(btName)/sizeof(TCHAR *)); for(int i=0; i=0 && ID