|
إنضمامك إلي منتديات استراحات زايد يحقق لك معرفة كل ماهو جديد في عالم الانترنت ...
انضم الينا
#1
| ||
| ||
<div><div align="center">بسم الله الرحمن الرحيم Static_ButtonHover المشروع كامل مع صور أزرار جميلة http://oman922.110mb.com/Static_ButtonHover.zip يسمح المشروع بوضع أزرار لنافذة واجهة المستخدم الرسومية أو الـ Form مع استخدام ثلاث صور و مع عبارة نصية لهذه الأزرار منما يعطي هيئة جميلة لها و مظهر جذاب...وكذالك يسمح بوضع خلفية صورة لنافذة واجهة المستخدم الرسومية ... يمكنك تحديد أو تعديل سمات هذه الأزرة نوع الخط حجم الخط و عرضه و لون العبارة النصية في هذه الأزرة . الصور الثلاثة كتالي NORMAL_hBMP تظهر هذه الصورة بالوضع الإعتيادي لزر PRESS_hBMP تظهر هذه الصورة عند الضغط على الزر OVER_hBMP over إختصار لـ Hover تظهر هذه الصورة عند ما يحوم مؤشر الماوس و يقف على الزر كما يتضمن المشروع دوال لتعامل مع المخزن أوالمورد Resource بحيث يمكنك رفع الصور من بعد تخزينها بمخزن البرنامج و تدعم هذه الدوال تقريبا جميع أنواع الصور الشائعة و منها BMP, PNG, GIF, JPEG وذالك باستخدام مكتبة الصور و الجرافكس gdiplus.dll وكذالك دوال لرفع الصور من ملفاتها المشروع مصمم على السي بلس باستخدام محرر المفكرة و تم ضغط الأمثلة على الضاغط Borland C++ Compiler 5.5 و من حيث أن تصميمه تم ليلائم هذا الضاغط القديم فيمكنه بذالك العمل على محررات ميكروسوفت الإصدار خمسة و سته من لغة سي بلس و حتى على مكتبة MFC لمحررات سي بلس ميكروسوفت . في رعاية الله وحفظه . صور لأمثلة المشروع كودات المشروع Static_ButtonHover.h <div style="margin:20px; margin-top:5px"> كود: #include #include static HANDLE HandlesArray[10000][6]; static HANDLE BkGndSArray[10000][2]; HWND HOVER_HWND; HHOOK HOOKhandleA,HOOKhandleB; WNDPROC WPhandle; static int IntVariableArray[7]; static int FontArrayA[10000][3]; static LPCTSTR FontArrayB[10000]; LRESULT CALLBACK ButtonHoverProcA(int nCode,WPARAM wParam,LPARAM lParam); LRESULT CALLBACK ButtonHoverProcB(int nCode,WPARAM wParam,LPARAM lParam); LRESULT CALLBACK ButtonHoverProcC(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); HWND CreateButtonHover(HWND hWndParent,LPCTSTR Text,int Left, int Top,int Width, int Height,HBITMAP NORMAL_hBMP,HBITMAP PRESS_hBMP,HBITMAP OVER_hBMP, int WinShow = 1,COLORREF TEXTCOLOOR = 0,int FontSize = 0,int FontWidth = 600,LPCTSTR FontName = ""); int ButtonHoverDelete(HWND ButtonhWnd,int BOOLImageDelete = 0); int ButtonHoverOptions(HWND ButtonhWnd,LPCTSTR FontName,int FontSize,int FontWidth,COLORREF TEXTCOLOOR = -1,LPCTSTR Text = 0); int SetButtonHoverState(HWND ButtonhWnd,BOOL ENABLE = true,BOOL SHOW = true,BOOL FOCUS = true,BOOL ONTOP = true); int SetGuiBackGroundImage(HWND hWndParent,HBITMAP BKGND_hBMP); HBITMAP ImageFromFreeResource(LPCTSTR lpName,LPCTSTR lpType,HMODULE hModule = 0); HBITMAP ImageFromFile(char* ImageFileName); HBITMAP LoadBitmap_FromResources(LPCTSTR Bitmap_ResName); HBITMAP LoadBitmap_FromFile(LPCTSTR FileName); int ArraySearchA(HWND HWnd,int ColsNo); int ArraySearchB(HWND HWnd,int ColsNo); void atButtonHoverExit(void); HWND CreateButtonHover(HWND hWndParent,LPCTSTR Text,int Left, int Top,int Width, int Height,HBITMAP NORMAL_hBMP,HBITMAP PRESS_hBMP,HBITMAP OVER_hBMP, int WinShow,COLORREF TEXTCOLOOR,int FontSize,int FontWidth,LPCTSTR FontName) { int countA = IntVariableArray[0]; int CreateStatic = IntVariableArray[2]; int iCreateStatic = IntVariableArray[3]; if (countA > 10000) { SetLastError(-1); return 0;} if (!IsWindow(hWndParent)) { SetLastError(-2); return 0;} HMODULE HMOD = GetModuleHandle(0); if (!HMOD) {SetLastError(-3); return 0;} if (!HOOKhandleA) { DWORD lpdwProcessId; HOOKhandleA = SetWindowsHookEx(WH_MOUSE,ButtonHoverProcA,HMOD,Ge tWindowThreadProcessId(hWndParent,&lpdwProcessId)) ; if (!HOOKhandleA) {SetLastError(-4); return 0;} HOOKhandleB = SetWindowsHookEx(WH_CALLWNDPROC,ButtonHoverProcB,H MOD,GetWindowThreadProcessId(hWndParent,&lpdwProce ssId)); if (!HOOKhandleB) {SetLastError(-5); return 0;} atexit(atButtonHoverExit); } if (!HandlesArray[0][0]) countA = 0; else countA++; IntVariableArray[0] = countA; HandlesArray[countA][0] = (HANDLE) NORMAL_hBMP; HandlesArray[countA][1] = (HANDLE) PRESS_hBMP; HandlesArray[countA][2] = (HANDLE) OVER_hBMP; int iFontSize = FontSize; if (!iFontSize) iFontSize = ((Height + 1) / 2); iFontSize += iFontSize -1; FontArrayA[countA][0] = (int)TEXTCOLOOR; FontArrayA[countA][1] = iFontSize; FontArrayA[countA][2] = FontWidth; FontArrayB[countA] = FontName; CreateStatic = 1; IntVariableArray[2] = CreateStatic; iCreateStatic = 1; IntVariableArray[3] = iCreateStatic; DWORD dwStyle = WS_CHILD|WS_VISIBLE|0x00000040|SS_BITMAP; HWND HSTATICA = CreateWindowEx(0,"STATIC","",dwStyle,Left,Top,Widt h,Height,hWndParent,0,HMOD,0); if (!HSTATICA) {countA--; IntVariableArray[0] = countA; SetLastError(-6); return 0;} HandlesArray[countA][3] = (HANDLE) HSTATICA; CreateStatic = 0; IntVariableArray[2] = CreateStatic; ShowWindow(HSTATICA,WinShow); dwStyle = SS_NOTIFY|SS_CENTERIMAGE|SS_CENTER|WS_CHILD|WS_VIS IBLE; CreateStatic = 2; IntVariableArray[2] = CreateStatic; HWND HSTATICB = CreateWindowEx(0,"STATIC",Text,dwStyle,Left,Top,Wi dth,Height,hWndParent,0,HMOD,0); if (!HSTATICB) {countA--; IntVariableArray[0] = countA; SetLastError(-7); return 0;} HandlesArray[countA][4] = (HANDLE) HSTATICB; CreateStatic = 0; IntVariableArray[2] = CreateStatic; ShowWindow(HSTATICB,WinShow); HWND HSTATICC = CreateWindowEx(0,"STATIC","",dwStyle,0,0,0,0,hWndP arent,0,HMOD,0); if (!HSTATICC) {countA--; IntVariableArray[0] = countA; SetLastError(-8); return 0;} HandlesArray[countA][5] = (HANDLE) HSTATICC; SendMessage(HSTATICA,STM_SETIMAGE,IMAGE_BITMAP,(LP ARAM) NORMAL_hBMP); SetLastError(0); return HSTATICC; } LRESULT CALLBACK ButtonHoverProcA(int nCode,WPARAM wParam,LPARAM lParam) { if (nCode < 0) return CallNextHookEx(HOOKhandleA,nCode,wParam,lParam); UINT uiMsg = (UINT) wParam; MOUSEHOOKSTRUCT* MHS = (MOUSEHOOKSTRUCT*) lParam; HWND hwnd = MHS->hwnd; int Element = ArraySearchA(hwnd,4); if (Element != -1){ int TEST_WM_MOUSEFIRST = IntVariableArray[4]; int TEST_WM_LBUTTONDOWN = IntVariableArray[5]; HWND HSTATICA = (HWND) HandlesArray[Element][3]; HWND HSTATICB = (HWND) HandlesArray[Element][4]; HWND HSTATICC = (HWND) HandlesArray[Element][5]; HBITMAP NORMAL_hBMP = (HBITMAP) HandlesArray[Element][0]; HBITMAP PRESS_hBMP = (HBITMAP) HandlesArray[Element][1]; HBITMAP OVER_hBMP = (HBITMAP) HandlesArray[Element][2]; if ( uiMsg == WM_MOUSEFIRST && TEST_WM_MOUSEFIRST == 0 ) { HOVER_HWND = HSTATICB; SendMessage(HSTATICA,STM_SETIMAGE,IMAGE_BITMAP,(LP ARAM) OVER_hBMP); RedrawWindow(HSTATICB,0,0,RDW_INVALIDATE | RDW_UPDATENOW); TEST_WM_MOUSEFIRST = 1; IntVariableArray[4] = TEST_WM_MOUSEFIRST; } else { if ( HOVER_HWND == HSTATICB ) { if ( uiMsg == WM_LBUTTONDOWN && TEST_WM_LBUTTONDOWN == 0) { SendMessage(HSTATICA,STM_SETIMAGE,IMAGE_BITMAP,(LP ARAM) PRESS_hBMP); RedrawWindow(HSTATICB,0,0,RDW_INVALIDATE | RDW_UPDATENOW); TEST_WM_LBUTTONDOWN = 1; IntVariableArray[5] = TEST_WM_LBUTTONDOWN; } if ( uiMsg == WM_LBUTTONUP && TEST_WM_LBUTTONDOWN == 1) { SendMessage(HSTATICA,STM_SETIMAGE,IMAGE_BITMAP,(LP ARAM) OVER_hBMP); RedrawWindow(HSTATICB,0,0,RDW_INVALIDATE | RDW_UPDATENOW); TEST_WM_LBUTTONDOWN = 0; IntVariableArray[5] = TEST_WM_LBUTTONDOWN; SendMessage(GetParent(HSTATICC),WM_COMMAND, MAKEWPARAM(GetDlgCtrlID(HSTATICC),0),(LPARAM)HSTAT ICC); }} else { if ( uiMsg == WM_LBUTTONUP && TEST_WM_LBUTTONDOWN == 1 ) { Element = ArraySearchA(HOVER_HWND,4); HWND HSTATICA = (HWND) HandlesArray[Element][3]; HWND HSTATICB = (HWND) HandlesArray[Element][4]; SendMessage(HSTATICA,STM_SETIMAGE,IMAGE_BITMAP,(LP ARAM) NORMAL_hBMP); RedrawWindow(HSTATICB,0,0,RDW_INVALIDATE | RDW_UPDATENOW); TEST_WM_LBUTTONDOWN = 0; IntVariableArray[5] = TEST_WM_LBUTTONDOWN; Element = ArraySearchA(hwnd,4); HSTATICA = (HWND) HandlesArray[Element][3]; HSTATICB = (HWND) HandlesArray[Element][4]; HOVER_HWND = HSTATICB; SendMessage(HSTATICA,STM_SETIMAGE,IMAGE_BITMAP,(LP ARAM) OVER_hBMP); RedrawWindow(HSTATICB,0,0,RDW_INVALIDATE | RDW_UPDATENOW); TEST_WM_MOUSEFIRST = 1; IntVariableArray[4] = TEST_WM_MOUSEFIRST; }}} } else { int TEST_WM_MOUSEFIRST = IntVariableArray[4]; int TEST_WM_LBUTTONDOWN = IntVariableArray[5]; if ( TEST_WM_LBUTTONDOWN == 1 ) { if ( uiMsg == WM_LBUTTONUP ) { Element = ArraySearchA(HOVER_HWND,4); HWND HSTATICA = (HWND) HandlesArray[Element][3]; HWND HSTATICB = (HWND) HandlesArray[Element][4]; HBITMAP NORMAL_hBMP = (HBITMAP) HandlesArray[Element][0]; SendMessage(HSTATICA,STM_SETIMAGE,IMAGE_BITMAP,(LP ARAM) NORMAL_hBMP); RedrawWindow(HSTATICB,0,0,RDW_INVALIDATE | RDW_UPDATENOW); TEST_WM_LBUTTONDOWN = 0; IntVariableArray[5] = TEST_WM_LBUTTONDOWN; }} else { if ( TEST_WM_MOUSEFIRST == 1 ) { Element = ArraySearchA(HOVER_HWND,4); HWND HSTATICA = (HWND) HandlesArray[Element][3]; HWND HSTATICB = (HWND) HandlesArray[Element][4]; HBITMAP NORMAL_hBMP = (HBITMAP) HandlesArray[Element][0]; SendMessage(HSTATICA,STM_SETIMAGE,IMAGE_BITMAP,(LP ARAM) NORMAL_hBMP); RedrawWindow(HSTATICB,0,0,RDW_INVALIDATE | RDW_UPDATENOW); TEST_WM_MOUSEFIRST = 0; IntVariableArray[4] = TEST_WM_MOUSEFIRST; }}} return CallNextHookEx(HOOKhandleA,nCode,wParam,lParam); } LRESULT CALLBACK ButtonHoverProcB(int nCode,WPARAM wParam,LPARAM lParam) { if (nCode < 0) return CallNextHookEx(HOOKhandleB,nCode,wParam,lParam); CWPSTRUCT* CPST = (CWPSTRUCT*) lParam; int iCreateStatic = IntVariableArray[3]; int SETERASEBKGND = IntVariableArray[6]; int BOOLA = CPST->message == WM_CTLCOLORSTATIC && iCreateStatic == 1; int BOOLB = CPST->message == WM_ERASEBKGND && SETERASEBKGND == 1; if (BOOLA || BOOLB) { if (!WPhandle) { WPhandle = (WNDPROC) SetWindowLongPtr(CPST->hwnd,GWL_WNDPROC,(LONG) ButtonHoverProcC); } else { SetWindowLongPtr(CPST->hwnd,GWL_WNDPROC,(LONG) ButtonHoverProcC); }} return CallNextHookEx(HOOKhandleB,nCode,wParam,lParam); } LRESULT CALLBACK ButtonHoverProcC(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { if (WM_COMMAND == message) { HWND CtrlHwnd = (HWND) lParam; int ElementB = ArraySearchA(CtrlHwnd,4); if (ElementB != -1) { int notification = HIWORD(wParam); if (notification == 1 || notification == 2 || notification == 3) { SendMessage(GetParent((HWND) HandlesArray[ElementB][5]),WM_COMMAND, MAKEWPARAM(GetDlgCtrlID((HWND) HandlesArray[ElementB][5]),notification), (LPARAM) (HWND) HandlesArray[ElementB][5]); }}} if (WM_CTLCOLORSTATIC == message) { int countA = IntVariableArray[0]; int CreateStatic = IntVariableArray[2]; int iCreateStatic = IntVariableArray[3]; iCreateStatic = 0; IntVariableArray[3] = iCreateStatic; int ElementA = ArraySearchA(WindowFromDC((HDC)wParam),3); int ElementB = ArraySearchA(WindowFromDC((HDC)wParam),4); if (ElementA != -1 || ElementB != -1 || CreateStatic == 1 || CreateStatic == 2) { SetBkMode((HDC)wParam, TRANSPARENT); if (CreateStatic == 2){ SetTextColor((HDC)wParam,(COLORREF) FontArrayA[countA][0]); HFONT hFont = CreateFont(FontArrayA[countA][1], 0,0,0,FontArrayA[countA][2],FALSE,FALSE,FALSE, DEFAULT_CHARSET,OUT_OUTLINE_PRECIS, CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH, FontArrayB[countA]); SelectObject((HDC)wParam, hFont);} if (ElementB != -1) { SetTextColor((HDC)wParam,(COLORREF) FontArrayA[ElementB][0]); HFONT hFont = CreateFont(FontArrayA[ElementB][1], 0,0,0,FontArrayA[ElementB][2],FALSE,FALSE,FALSE, DEFAULT_CHARSET,OUT_OUTLINE_PRECIS, CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH, FontArrayB[ElementB]); SelectObject((HDC)wParam, hFont);} CreateStatic = 0; IntVariableArray[2] = CreateStatic; return (int) GetStockObject(NULL_BRUSH); }} if (WM_ERASEBKGND == message) { int SETERASEBKGND = IntVariableArray[6]; SETERASEBKGND = 0; IntVariableArray[6] = SETERASEBKGND; HDC hDC = (HDC) wParam; HWND hWnd = WindowFromDC(hDC); int ElementC = ArraySearchB(hWnd,0); if (ElementC != -1) { HBITMAP BKGND_hBMP = (HBITMAP) BkGndSArray[ElementC][1]; HDC hdcMemDC = CreateCompatibleDC(hDC); HGDIOBJ Object = SelectObject(hdcMemDC,BKGND_hBMP); RECT rcClient; GetClientRect(hWnd, &rcClient); int WinW = rcClient.right - rcClient.left; int WinH = rcClient.bottom - rcClient.top; BITMAPINFO lpbi; lpbi.bmiHeader.biSize = sizeof(lpbi.bmiHeader); GetDIBits(CreateCompatibleDC(0),BKGND_hBMP,0,0,0,& lpbi,0); int ImageW = lpbi.bmiHeader.biWidth; int ImageH = lpbi.bmiHeader.biHeight; StretchBlt(hDC,0,0,WinW,WinH,hdcMemDC, 0,0,ImageW,ImageH,SRCCOPY); SelectObject(hdcMemDC,Object); return 1; }} return CallWindowProc(WPhandle,hWnd,message,wParam,lParam ); } int SetButtonHoverState(HWND ButtonhWnd,BOOL ENABLE,BOOL SHOW,BOOL FOCUS,BOOL ONTOP) { int BOOL = 0,countA = IntVariableArray[0]; for(int Element = 0; Element __DEFINE_LIKE_SHARE__ |
مواقع النشر (المفضلة) |
| |