Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.10.2011, 09:48   #1
IKh
Новичок
Джуниор
 
Регистрация: 09.10.2011
Сообщений: 1
По умолчанию Панель инструментов средствами Win API - CreateWindowEx

Здравствуйте.

Объясните пожалуйста, можно ли создать панель инструментов в окне приложения созданного на Delphi средствами Win API - CreateWindowEx.

В описании функции CreateWindowEx говориться, что для создания панели инструментов без кнопок можно использовать функцию CreateWindowEx указывая имя класса окна TOOLBARCLASSNAME.

Подскажите последователность, как это можно сделать в приложении на Delphi.
IKh вне форума Ответить с цитированием
Старый 10.10.2011, 01:00   #2
*PB*
Форумчанин
 
Регистрация: 11.08.2009
Сообщений: 558
По умолчанию

Конечно можно.
Вот пример создания панели инструментов с использованием CreateWindowEx.
Код:
Procedure nxCreateTB(hWndParent, buttonx, buttony, flags) ; This Command creates a Toolbar and assigns the TB to the Window with the Handle hwnd.
  Protected prop=0, icc.INITCOMMONCONTROLSEX, hTb=0, hTt=0
  Protected *nxTB._nxToolbar
  ;Check the parent handle.
  If IsWindow_(hWndParent)
    ;Allocate enough memory for a _nxToolbar structure.
    *nxTB=AllocateMemory(SizeOf(_nxToolbar))
    If *nxTB
      icc\dwSize = SizeOf(INITCOMMONCONTROLSEX)
      icc\dwICC = #ICC_BAR_CLASSES
      InitCommonControlsEx_(icc)  ;Just in case!
      ;Check the flags and set defaults.
      If flags=-1
        flags = #nxTB_TBstyleTRANSPARENT|#nxTB_TBstyleFLAT|#nxTB_TBstyleTOP
      EndIf
      ;Create the toolbar.
      hTb = CreateWindowEx_(0, "ToolbarWindow32", 0, (flags|#nxTB_TBstyleFLAT|#WS_CHILD|#CCS_NODIVIDER),0,0,0,0,hWndParent,-10000,0,0)
      If hTb
        SendMessage_(hTb, #TB_BUTTONSTRUCTSIZE, SizeOf(TBBUTTON), 0) 
        SendMessage_(hTb,#TB_SETBITMAPSIZE,0, buttonx&$FFFF + (buttony&$FFFF)<<16)
        SendMessage_(hTb,#TB_SETBUTTONSIZE,0, buttonx&$FFFF + (buttony&$FFFF)<<16)
        SendMessage_(hTb,#TB_AUTOSIZE,0,0)
        ;Set extended styles.
        SendMessage_(hTb,#TB_SETEXTENDEDSTYLE,0,#TBSTYLE_EX_MIXEDBUTTONS|#TBSTYLE_EX_DRAWDDARROWS|#TBSTYLE_EX_DOUBLEBUFFER|#TBSTYLE_EX_HIDECLIPPEDBUTTONS)
        ;Create tooltip control.  We do not use a default one as supplied by #TBSTYLE_TOOLTIPS as
        ;this requires us to then subclass the toolbar's parent window in order to supply the
        ;tooltip text.
        hTt = CreateWindowEx_(#WS_EX_TOPMOST, "ToolTips_Class32", 0,#WS_POPUP|#TTS_ALWAYSTIP|#TTS_BALLOON|#TTS_NOPREFIX,#CW_USEDEFAULT,#CW_USEDEFAULT,#CW_USEDEFAULT,#CW_USEDEFAULT ,hTb, 0, 0,0)
        If hTt
          SendMessage_(hTt,#TTM_SETMAXTIPWIDTH,0,250)
          ;Create a window property for the toolbar to store the pointer to the _nxToolbar structure.
          prop=SetProp_(hTb, #PROP$, *nxTB)
          If prop
            ;Subclass the toolbar.
            *nxTB\oldWinProc=SetWindowLong_(hTb, #GWL_WNDPROC, @nxCallback())
            *nxTB\buttonwidth=buttonx
            *nxTB\buttonheight=buttony
            *nxTB\hTt=hTt
            ShowWindow_(hTb,#SW_SHOWNORMAL)    
          Else
            DestroyWindow_(hTb)
            hTb = 0 ;Signals an error.
            FreeMemory(*nxTB)
          EndIf
        Else
          DestroyWindow_(hTb)
          hTb = 0 ;Signals an error.
          FreeMemory(*nxTB)
        EndIf
      Else ;Error!
        FreeMemory(*nxTB)
      EndIf
    EndIf
  EndIf
  ProcedureReturn hTb ;Will = 0 if an error occurred.
EndProcedure
Во вложении весь набор файлов и скомпилированный пример.
Вложения
Тип файла: rar UserLib_PB40_nxToolbar.rar (41.3 Кб, 24 просмотров)
*PB* вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Панель инструментов Лия92 Помощь студентам 0 12.12.2010 16:17
Не отображается Панель инструментов haros Microsoft Office Excel 11 21.07.2009 06:03
Панель инструментов VBA Lyubov1990 Microsoft Office Excel 5 04.06.2009 09:52
Вложенная панель инструментов. haros Microsoft Office Excel 7 16.03.2009 14:38
Пропала панель инструментов delphin100 Операционные системы общие вопросы 2 24.08.2008 13:29