View Full Version : رنگي کردن پشت زمينه Menu Editor
MohammadGh2011
چهارشنبه 13 مهر 1390, 18:23 عصر
با سلام خدمت تمامي دوستان و اساتيدان گرامي
چگونه ميتوانم مينويي که با چند زيرشاخه درست کردم رنگ پشت زمينه ي آن را عوض کنم؟
خودم بسيار تلاش کردم نميشه.آيا امکان دارد که بتوان چنين کاري را در VB انجام داد؟
با تشکر
sajjad_india
چهارشنبه 13 مهر 1390, 19:03 عصر
http://www.vbaccelerator.com/home/VB/Code/Controls/Menus/index.asp
MohammadGh2011
چهارشنبه 13 مهر 1390, 19:18 عصر
سلام
ممنونم من تو خوندن متن انگليسي اون سايت مشکلي ندارم ولي نميدونم از کدوم کدها بايد استفاده کنم
ميشه يه توضيح مختصر خودتون بديد.
محسن واژدی
چهارشنبه 13 مهر 1390, 19:34 عصر
سلام علیکم
از کد زیر برای تغییر دادن زمینه منو های فرم استفاده کنید:
Option Explicit
Private Const MIM_BACKGROUND As Long = &H2
Private Const MIM_APPLYTOSUBMENUS As Long = &H80000000
Private Type MENUINFO
cbSize As Long
fMask As Long
dwStyle As Long
cyMax As Long
hbrBack As Long
dwContextHelpID As Long
dwMenuData As Long
End Type
Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Private Declare Function GetMenu Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function SetMenuInfo Lib "user32" (ByVal hMenu As Long, MI As MENUINFO) As Long
Private Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) As Long
Private Sub Form_Load()
Dim MI As MENUINFO
With MI
.cbSize = Len(MI)
.fMask = MIM_BACKGROUND Or MIM_APPLYTOSUBMENUS
.hbrBack = CreateSolidBrush(RGB(230, 253, 22))
SetMenuInfo GetSubMenu(GetMenu(Me.hWnd), 0), MI
End With
DrawMenuBar Me.hWnd
End Sub
موفق باشید
MohammadGh2011
چهارشنبه 13 مهر 1390, 20:37 عصر
سلام علیکم
از کد زیر برای تغییر دادن زمینه منو های فرم استفاده کنید:
سلام آقاي واژدي نميشه همش ارور ميده
محسن واژدی
چهارشنبه 13 مهر 1390, 20:52 عصر
سلام
چه خطایی میده، چون پیش من مشکلی نداره
MohammadGh2011
چهارشنبه 13 مهر 1390, 21:12 عصر
سلام
چه خطایی میده، چون پیش من مشکلی نداره
سلام آقاي واژدي
از کدهايي که تو فورم لود گذاشتين يکي يکي خطا ميگيره.
ببخشيد من بايد تو کدها کاري بکنم؟آخه من همين جوري کپي شون کردم هيچ دستي به کدها نزدم.
ممنون
محسن واژدی
چهارشنبه 13 مهر 1390, 21:53 عصر
اگه خطای Not defiend میدهد بیشتر مشکل از وی بی هست،
اگر ممکن است متن پیام خطا را هم ضمیمه کنید
MohammadGh2011
چهارشنبه 13 مهر 1390, 22:06 عصر
درست شد آقاي واژدي
من براي منوم زيرشاخه نگذاشته بودم.ممنونم
فقط من وقتي از يک منو بيشتر استفاده ميکنم منوي بعدي رو رنگي نميکنه فقط منوي اولي رو رنگي ميکنه!!!!!!!!!!؟
محسن واژدی
چهارشنبه 13 مهر 1390, 22:32 عصر
کد زیر را جایگزین کد قبل کنید:
Option Explicit
Private Const MIM_BACKGROUND As Long = &H2
Private Const MIM_APPLYTOSUBMENUS As Long = &H80000000
Private Type MENUINFO
cbSize As Long
fMask As Long
dwStyle As Long
cyMax As Long
hbrBack As Long
dwContextHelpID As Long
dwMenuData As Long
End Type
Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Private Declare Function GetMenu Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function SetMenuInfo Lib "user32" (ByVal hMenu As Long, MI As MENUINFO) As Long
Private Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) As Long
Private Sub Form_Load()
Dim get_hnd&
Dim i&
Dim MI As MENUINFO
With MI
.cbSize = Len(MI)
.fMask = MIM_BACKGROUND Or MIM_APPLYTOSUBMENUS
.hbrBack = CreateSolidBrush(RGB(230, 253, 22))
End With
Do
get_hnd& = GetSubMenu(GetMenu(Me.hWnd), i)
If get_hnd& > 0 Then
i = i + 1
SetMenuInfo get_hnd&, MI
End If
Loop Until get_hnd& = 0
DrawMenuBar Me.hWnd
End Sub
موفق باشید
MohammadGh2011
چهارشنبه 13 مهر 1390, 23:55 عصر
سلام
بازم چند تا از کدها رو قرمز کرده و باز نميکنه
مهم نيست از همون اولي استفاده ميکنم
باتشکر
محسن واژدی
پنج شنبه 14 مهر 1390, 00:05 صبح
سلام
ممکن است مشکل از وی بی باشد، چون اینجا مشکلی نداره، البته ویندوز بنده xp هست
موفق باشید
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.