إنضمامك إلي منتديات استراحات زايد يحقق لك معرفة كل ماهو جديد في عالم الانترنت ...

انضم الينا
استراحات زايد الصفحة الرئيسية


إضافة رد
 
LinkBack أدوات الموضوع انواع عرض الموضوع
  #1  
قديم 10-02-2010, 06:51 AM
عضو ماسي
بيانات محروم.كوم
 رقم العضوية : 503
 تاريخ التسجيل : Dec 2007
الجنس : female
علم الدوله :
 المشاركات : 2,100,613
عدد الـنقاط :3341
 تقييم المستوى : 2139

<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__
رد مع اقتباس
إضافة رد

مواقع النشر (المفضلة)


تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة



الساعة الآن 12:02 PM


Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.5.2 TranZ By Almuhajir

RSS RSS 2.0 XML MAP HTML