Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Цвет меню и панели инструментов.....


Автор: x_Coder 4.2.2004, 13:51
У меня есть такой вопрос!

Я пишу программу на VB 6.
Все формочки у меня белого цвета. Но вот меню и панель инструментов белыми сделать не могу. Некрасиво как то получается.

Помогите пожалуйста.
Заранее благодарен.

Автор: Black_Star 4.2.2004, 19:08
Код
Option Explicit
Private Declare Function SetSysColors Lib "user32" _
(ByVal nChanges As Long, lpSysColor As _
Long, lpColorValues As Long) As Long

Private Declare Function GetSysColor& Lib "user32" (ByVal nIndex As Long)


'Можно использовать следующие константы

Private Const COLOR_SCROLLBAR = 0 'The Scrollbar colour
Private Const COLOR_BACKGROUND = 1 'Colour of the background with no wallpaper
Private Const COLOR_ACTIVECAPTION = 2 'Caption of Active Window
Private Const COLOR_INACTIVECAPTION = 3 'Caption of Inactive window
Private Const COLOR_MENU = 4 'Menu
Private Const COLOR_WINDOW = 5 'Windows background
Private Const COLOR_WINDOWFRAME = 6 'Window frame
Private Const COLOR_MENUTEXT = 7 'Window Text
Private Const COLOR_WINDOWTEXT = 8 '3D dark shadow (Win95)
Private Const COLOR_CAPTIONTEXT = 9 'Text in window caption
Private Const COLOR_ACTIVEBORDER = 10 'Border of active window
Private Const COLOR_INACTIVEBORDER = 11 'Border of inactive window
Private Const COLOR_APPWORKSPACE = 12 'Background of MDI desktop
Private Const COLOR_HIGHLIGHT = 13 'Selected item background
Private Const COLOR_HIGHLIGHTTEXT = 14 'Selected menu item
Private Const COLOR_BTNFACE = 15 'Button
Private Const COLOR_BTNSHADOW = 16 '3D shading of button
Private Const COLOR_GRAYTEXT = 17 'Grey text, of zero if dithering is used.
Private Const COLOR_BTNTEXT = 18 'Button text
Private Const COLOR_INACTIVECAPTIONTEXT = 19 'Text of inactive window
Private Const COLOR_BTNHIGHLIGHT = 20 '3D highlight of button

Dim OldColor As Long

Private Sub Form_Load()
   'Эапоминаем текущий цвет
   OldColor = GetSysColor(COLOR_ACTIVECAPTION)
   
   SetSysColors 1, COLOR_ACTIVECAPTION, RGB(255, 0, 0)
End Sub

Private Sub Form_Unload(Cancel As Integer)
   'Восстанавливаем текущий цвет
   SetSysColors 1, COLOR_ACTIVECAPTION, OldColor
End Sub

smile.gif

Автор: Mephisto 4.2.2004, 19:09
Если хочешь, то можешь использовать SetSysColors. Если это тебе конечно подойдет.

Автор: Mephisto 4.2.2004, 19:10
Да что такое. Второй день подряд меня обганяют на 1 минуту.

Автор: Black_Star 4.2.2004, 19:11
Цитата
Если хочешь, то можешь использовать SetSysColors. Если это тебе конечно подойдет.

smile.gif Уже посоветовал...

Автор: x_Coder 9.2.2004, 18:26
Спасибо! Очень полезная информацмя.
Но есть одна интересная штучка.
Когда я изменяю цвет меню, оно изменяется во всех приложениях.
А как сделать только чтобы в моей программе цвет меню был белым?

Автор: Black_Star 9.2.2004, 19:05
Не столь трудно, сколько клопотно...
Принцип знаю, но не пробовал...

Автор: x_Coder 10.2.2004, 12:51
Расскажи.

Автор: Black_Star 10.2.2004, 21:43
Уговорил, попробую сделать, потом код выложу...

Автор: Black_Star 11.2.2004, 18:18
mad.gif А чего тут фалы нельзя прикреплять ?
Код
VERSION 5.00
Begin VB.Form Form1
  AutoRedraw      =   -1  'True
  Caption         =   "Form1"
  ClientHeight    =   3120
  ClientLeft      =   165
  ClientTop       =   450
  ClientWidth     =   5355
  LinkTopic       =   "Form1"
  ScaleHeight     =   208
  ScaleMode       =   3  'Pixel
  ScaleWidth      =   357
  StartUpPosition =   2  'CenterScreen
  Begin VB.Label Label1
     Alignment       =   2  'Center
     BackColor       =   &H00FFFFFF&
     Caption         =   "Menu"
     BeginProperty Font
        Name            =   "MS Sans Serif"
        Size            =   8.25
        Charset         =   204
        Weight          =   700
        Underline       =   0   'False
        Italic          =   0   'False
        Strikethrough   =   0   'False
     EndProperty
     ForeColor       =   &H000000FF&
     Height          =   240
     Left            =   0
     TabIndex        =   0
     Top             =   0
     Width           =   735
  End
  Begin VB.Menu mnu
     Caption         =   "MENU"
     Visible         =   0   'False
     Begin VB.Menu hel
        Caption         =   "Hello"
        Shortcut        =   ^H
     End
  End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
' Есть недостатки, но устранить можно.
Private Sub hel_Click()
Label1.BorderStyle = 0
MsgBox "Hello !!!"
End Sub
Private Sub Label1_Click()
Label1.BorderStyle = 1
PopupMenu mnu, , Label1.Left, Label1.Top + Label1.Height
End Sub

М-дя.... сохрани как Form1.frm, потом открой и пользуй...

Автор: x_Coder 16.2.2004, 13:42
Спасибо!
Попробую....

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)