Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Системное меню Добавлено: 21.07.10 18:55  

Автор вопроса:  I'm
Ребят, какая нужна АПИ что бы у моей формы в системном меню - были только пункты "перместить" и "закрыть" ?....Поясню..Если делаю у формы минимумбокс и максимумбокс в фолс, то эти пунты блокируются в системном меню (правой мышкой по заголовку формы, либо альт + пробел)...они блокируются , НО при этом они все же присутствуют...А мне нужно чтобы в этом меню присутствовали лишь 2 пункта (переместить, закрыть) и не каких других
И еще..это не как нельзя сделать внутренними средствами (без апи) ?

Ответить

  Ответы Всего ответов: 8  

Номер ответа: 1
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #1
Добавлено: 21.07.10 23:32
гм, в win7 вроде как остаются пункты Переместить, Размер, Закрыть. И всё.

Ответить

Номер ответа: 2
Автор ответа:
 I'm



Вопросов: 9
Ответов: 35
 Профиль | | #2 Добавлено: 21.07.10 23:46
Кароче: я хочу сделать форму номер 2 - "О программе".....Типо месажбокс...А у любого месажбокса - в системном меню ТОЛЬКО пункты "переместить и закрыть"

гм, в win7 вроде как остаются пункты Переместить, Размер, Закрыть. И всё.

В хр все системное меню присутствует....единственное если поотключать макси, мини боксы то эти пункты будут типо "Enabled - false"...Но они все же присутствуют...А мне нужно чтобы ничего не присутствовало кроме "Переместить и закрыть", как у месажбокса..

гм, в win7 вроде как остаются пункты Переместить, Размер, Закрыть. И всё.

Даже судя по твоему ответу, тут присутствуют не два пункта а три....



Нашел вот что, но не понимаю как пользоваться, тоесть не совсем то что мне нужно
Этот код не убирает а наоборот дополняет в это меню 7 ой пункт

  1. ' Декларируем функции Windows API
  2.     Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As IntPtr) As Boolean
  3.     Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As IntPtr, ByVal bRevert As Boolean) As IntPtr
  4.     Private Declare Auto Function AppendMenu Lib "user32" (ByVal hMenu As IntPtr, ByVal wFlags As AppendMenuFlags, _
  5.           ByVal wIDNewItem As Int32, ByVal lpNewItem As String) As Boolean
  6.  
  7.  
  8. ' Константы
  9.     <Flags()> _
  10.     Public Enum AppendMenuFlags As Integer
  11.         MF_BYPOSITION = 1024
  12.         MF_REMOVE = 4096
  13.         MF_separator = 2
  14.         MF_STRIN = 0
  15.     End Enum
  16.  
  17.     Private Const WM_SYSCOMMAND As Int32 = &H112    ' Сообщение Windows
  18.     Private Const ID_ABOUT As Int32 = 1000          ' Новый идентификатор для системного меню
  19.     Private hSystemMenu As IntPtr                   ' Дескриптор системного меню
  20.  
  21.     ' Загрузка формы
  22.     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  23.  
  24.         hSystemMenu = GetSystemMenu(Me.Handle, False)                                           ' Получим дескриптор системного меню
  25.         AppendMenu(hSystemMenu, AppendMenuFlags.MF_SEPARATOr, 0, String.Empty)                  ' Добавляем разделитель
  26.         AppendMenu(hSystemMenu, AppendMenuFlags.MF_STRIN, ID_ABOUT, "Передать привет Сергею")  ' Добавляем новую строчку меню
  27.     End Sub
  28.  
  29.     ' Обрабатываем сообщение Windows
  30.     Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
  31.         Select Case m.Msg
  32.             Case WM_SYSCOMMAND
  33.                 MyBase.WndProc(m)
  34.  
  35.                 If m.WParam.ToInt32 = ID_ABOUT Then
  36.                     If hSystemMenu <> IntPtr.Zero Then
  37.                         ' Обработка щелчка на созданном пункте меню
  38.                         MsgBox("Доброго времени суток, Сергей!" & vbCrLf _
  39.                           & "Передаю тебе привет и самые наилучшие пожелания!" & vbCrLf & vbCrLf _
  40.                           & "Евгений", , "Сообщение от системного меню!")
  41.                     End If
  42.                 End If
  43.  
  44.             Case Else
  45.                 MyBase.WndProc(m)
  46.         End Select

Ответить

Номер ответа: 3
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #3
Добавлено: 22.07.10 00:19
Так и используй массажбокс, зачем делать его заново. Да и какая к чертям разница сколько там пунктов меню?=)

Ответить

Номер ответа: 4
Автор ответа:
 Eugy



Вопросов: 0
Ответов: 73
 Профиль | | #4 Добавлено: 22.07.10 01:48
Private Declare Function DeleteMenu ? :)

Ответить

Номер ответа: 5
Автор ответа:
 Eugy



Вопросов: 0
Ответов: 73
 Профиль | | #5 Добавлено: 22.07.10 01:53
Черт, пропустил...
...А у любого месажбокса - в системном меню ТОЛЬКО пункты "переместить и закрыть"

Form1.BorderStyle = vbFixedDialog

Ответить

Номер ответа: 6
Автор ответа:
 UnDeAdZak



Вопросов: 80
Ответов: 476
 Профиль | | #6 Добавлено: 22.07.10 02:48
А в .NET любой из этих пунктом можно заблокировать в настройках формы.

Ответить

Номер ответа: 7
Автор ответа:
 I'm



Вопросов: 9
Ответов: 35
 Профиль | | #7 Добавлено: 22.07.10 16:00
Так и используй массажбокс, зачем делать его заново

Мне нужен месажбокс с картинкой, с придиркой и тому подобное....

А в .NET любой из этих пунктом можно заблокировать в настройках формы

об этом я написал в вопросе...но мне нужно НЕ ЭТО

Нужно это все на .нет

Ответить

Номер ответа: 8
Автор ответа:
 I'm



Вопросов: 9
Ответов: 35
 Профиль | | #8 Добавлено: 22.07.10 16:01
Form1.BorderStyle = vbFixedDialog - это к чему?

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам