PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Вопросы по PureBasic » вывод комментария


вывод комментария

Сообщений 1 страница 8 из 8

1

Как сделать вывод комментария внизу окна при нажатии на кнопку в menu bar?

спасибо.

Отредактировано portotiv (31.08.2012 19:27:04)

0

2

Код:
Dim About.s(3) ; - массив описаний пунктов меню

For i=0 To 3
  About(i)="Кнопка "+Str(i+1) 
Next


Macro LoWord(Value)
  LoValue=Value & $FFFF
EndMacro

Macro HIWORD(Value)
  HiValue=(Value >> 16) & $FFFF
EndMacro

Procedure WindowCallback(hWnd, Msg, wParam, lParam)
  Shared About()
  Select Msg
    Case #WM_MENUSELECT
      LoWord(wParam)
      StatusBarText(0, 0, About(LoValue))
  EndSelect
  ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure 


If OpenWindow(0, 284, 110, 246, 174, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_TitleBar )
  
  If CreateMenu(0, WindowID(0))
    MenuTitle("Menu1")
    MenuItem(0, "Button1")
    MenuItem(1, "Button2")
    
    OpenSubMenu("SubMenu1")
    MenuItem(2, "Button3")
    MenuItem(3, "Button4")
 
    CloseSubMenu()
  EndIf
  
  If CreateStatusBar(0, WindowID(0))
    AddStatusBarField(200)
  EndIf
  
  SetWindowCallback(@WindowCallback())
EndIf


Repeat
  Event=WindowEvent()
  
Until Event=#PB_Event_CloseWindow

В примере я использовал API-функции. Здесь описание события WM_MENUSELECT.
И статья по теме, но для VB. В ней также есть Win API.

Отредактировано Тигрёнок (01.09.2012 00:08:25)

0

3

немного не то что мне нужно, но спасибо, буду разбираться, попробую в эту сторону рыть.

нет, все же данный вариант мне вовсе не подходит, к каждой кнопке меню/субменю должна быть отдельная собственная подсказка

Отредактировано portotiv (01.09.2012 11:31:07)

0

4

portotiv написал(а):

к каждой кнопке меню/субменю должна быть отдельная собственная подсказка

Подсказки хранятся в массиве About.
Какие вы их туда запишите, такими они и будут.

0

5

Пётр написал(а):

Подсказки хранятся в массиве About.
Какие вы их туда запишите, такими они и будут.

Спасибо

0

6

Можно другой вариант:

Код:
Case #WM_MENUSELECT
      LoWord(wParam)
      Select LoValue
        Case 0
          About.s=About(0)
        Case 1
          About.s=About(1)
        Default
          About.s=""
        EndSelect
        StatusBarText(0, 0, About)

В этом случае описания можно "раздать" более детально. И не будет конфликтов с массивом About() если LoValue выйдет за его рамки.

0

7

Тигрёнок написал(а):

Можно другой вариант

Возникает вопрос, "а зачем тогда нужен массив" (многоязычные проги в расчет не берем)?

0

8

Пётр написал(а):

а зачем тогда нужен массив

Да так. Оставил как рудимент. Не проблема ведь)
Можно заменить текстовой строкой.

Отредактировано Тигрёнок (01.09.2012 20:34:16)

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » вывод комментария