Страница: 1 |
|
Вопрос: Системное меню
|
Добавлено: 21.07.10 18:55
|
|
Автор вопроса: I'm
|
Ребят, какая нужна АПИ что бы у моей формы в системном меню - были только пункты "перместить" и "закрыть" ?....Поясню..Если делаю у формы минимумбокс и максимумбокс в фолс, то эти пунты блокируются в системном меню (правой мышкой по заголовку формы, либо альт + пробел)...они блокируются , НО при этом они все же присутствуют...А мне нужно чтобы в этом меню присутствовали лишь 2 пункта (переместить, закрыть) и не каких других
И еще..это не как нельзя сделать внутренними средствами (без апи) ?
Ответить
|
Номер ответа: 2 Автор ответа: I'm
Вопросов: 9 Ответов: 35
|
Профиль | | #2
|
Добавлено: 21.07.10 23:46
|
Кароче: я хочу сделать форму номер 2 - "О программе".....Типо месажбокс...А у любого месажбокса - в системном меню ТОЛЬКО пункты "переместить и закрыть"
гм, в win7 вроде как остаются пункты Переместить, Размер, Закрыть. И всё.
В хр все системное меню присутствует....единственное если поотключать макси, мини боксы то эти пункты будут типо "Enabled - false"...Но они все же присутствуют...А мне нужно чтобы ничего не присутствовало кроме "Переместить и закрыть", как у месажбокса..
гм, в win7 вроде как остаются пункты Переместить, Размер, Закрыть. И всё.
Даже судя по твоему ответу, тут присутствуют не два пункта а три....
Нашел вот что, но не понимаю как пользоваться, тоесть не совсем то что мне нужно
Этот код не убирает а наоборот дополняет в это меню 7 ой пункт
- Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As IntPtr) As Boolean
- Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As IntPtr, ByVal bRevert As Boolean) As IntPtr
- Private Declare Auto Function AppendMenu Lib "user32" (ByVal hMenu As IntPtr, ByVal wFlags As AppendMenuFlags, _
- ByVal wIDNewItem As Int32, ByVal lpNewItem As String) As Boolean
-
-
- <Flags()> _
- Public Enum AppendMenuFlags As Integer
- MF_BYPOSITION = 1024
- MF_REMOVE = 4096
- MF_separator = 2
- MF_STRIN = 0
- End Enum
-
- Private Const WM_SYSCOMMAND As Int32 = &H112
- Private Const ID_ABOUT As Int32 = 1000
- Private hSystemMenu As IntPtr
-
-
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
-
- hSystemMenu = GetSystemMenu(Me.Handle, False)
- AppendMenu(hSystemMenu, AppendMenuFlags.MF_SEPARATOr, 0, String.Empty)
- AppendMenu(hSystemMenu, AppendMenuFlags.MF_STRIN, ID_ABOUT, "Передать привет Сергею")
- End Sub
-
-
- Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
- Select Case m.Msg
- Case WM_SYSCOMMAND
- MyBase.WndProc(m)
-
- If m.WParam.ToInt32 = ID_ABOUT Then
- If hSystemMenu <> IntPtr.Zero Then
-
- MsgBox("Доброго времени суток, Сергей!" & vbCrLf _
- & "Передаю тебе привет и самые наилучшие пожелания!" & vbCrLf & vbCrLf _
- & "Евгений", , "Сообщение от системного меню!")
- End If
- End If
-
- Case Else
- MyBase.WndProc(m)
- End Select
Ответить
|
Страница: 1 |
Поиск по форуму