Проблемы с ComboBox

Предыдущая тема Следующая тема Перейти вниз

Проблемы с ComboBox

Сообщение  timurar в Вт Июл 26, 2011 9:48 pm

Помогите создать и привязать данные к ComboBox
(вообще и по некоторым другим элементам диалогового окна неплохо было бы тоже)
в частности как для разных элементов устанавливать свой шрифт или хотя бы размер шрифта

timurar

Сообщения : 8
Дата регистрации : 2011-07-26

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Проблемы с ComboBox

Сообщение  trew в Ср Июл 27, 2011 11:48 am

timurar пишет:Помогите создать и привязать данные к ComboBox
(вообще и по некоторым другим элементам диалогового окна неплохо было бы тоже)
в частности как для разных элементов устанавливать свой шрифт или хотя бы размер шрифта

Код:
#Include "windows.bi"

Dim As MSG msg
Dim As HWND hWnd,hwnd1
Dim s As String
Function LoadFont(ByVal Name_ As String ,ByVal Size As Integer,ByVal corner As Integer=0,ByVal BOLD As Integer=0,ByVal Italic As Integer=0,ByVal Underline As Integer=0,ByVal StrikeOut As Integer=0) As HFONT Export
   Dim As Integer size_
   If BOLD=1 Then
      BOLD=700
   Else
      BOLD=400
   EndIf
   size_ = -MulDiv(Size, GetDeviceCaps(CreateDC("DISPLAY",0,0,0), LOGPIXELSY), 72)
   Return CreateFont(size_,0,corner*10,0,Bold,Italic,Underline,StrikeOut,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH Or FF_DONTCARE,Name_)

End Function
hWnd = CreateWindowEx( 0, "#32770", "Hello", WS_OVERLAPPEDWINDOW Or WS_VISIBLE Or CBS_AUTOHSCROLL, 100, 100, 200, 300, 0, 0, 0, 0 )
hwnd1 = CreateWindowEx( 0, "combobox", "", WS_CHILD Or WS_VISIBLE or CBS_DROPDOWNLIST Or WS_VSCROLL, 10, 10, 150, 100, hwnd, Cast(hmenu,1), 0, 0 )
For a As Integer=1 To 20
   s="" & a
   SendMessage(hwnd1,CB_ADDSTRING,0,Cast(lparam,StrPtr(s)))
Next
SendMessage(hwnd1,WM_SETFONT,LoadFont("Arial",22),0)
While GetMessage( @msg, 0, 0, 0 ) 
  TranslateMessage( @msg )
  DispatchMessage( @msg )
  Select Case msg.hwnd
     Case hWnd   
      Select Case msg.message
        Case 273 
          End
      End Select
  End Select
Wend

В примере реализовано добавление строк и изменение шрифта. Если нужны другие методы (удаление, переименование и пр.) то на странице мелкософта: http://msdn.microsoft.com/en-us/library/bb775792(v=VS.85).aspx

trew

Сообщения : 331
Дата регистрации : 2010-10-14

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Проблемы с ComboBox

Сообщение  timurar в Ср Июл 27, 2011 9:21 pm

большое спасибо за ответ
был бы признателен за помощь в следующем
я создал диалоговое окно на основе шаблона и в редакторе формы добавил combobox
cb.bas
Код:

/'
   Dialog Example, by fsw

   compile with:   fbc -s gui dialog.rc dialog.bas

'/

#Include Once "windows.bi"

#Include "cb.bi"

Declare Function DlgProc(ByVal hWin As HWND, ByVal uMsg As UINT, ByVal wParam As WPARAM, ByVal lParam As LPARAM) As Integer

'''
''' Program start
'''

   ''
   '' Create the Dialog
   ''
   hInstance=GetModuleHandle(NULL)
   DialogBoxParam(hInstance, Cast(ZString Ptr,IDD_DLG1), NULL, @DlgProc, NULL)
   ''
   '' Program has ended
   ''

   ExitProcess(0)
   End

'''
''' Program end
'''
Function DlgProc(ByVal hWin As HWND,ByVal uMsg As UINT,ByVal wParam As WPARAM,ByVal lParam As LPARAM) As Integer
   Dim As Long id, Event, x, y
   Dim hBtn As HWND
   Dim rect As RECT

   Select Case uMsg
      Case WM_INITDIALOG
         '
      Case WM_CLOSE
         EndDialog(hWin, 0)
         '
      Case WM_COMMAND
         id=LoWord(wParam)
         Event=HiWord(wParam)
         Select Case id
            Case IDC_BTN1
               EndDialog(hWin, 0)
               '
         End Select
      Case WM_SIZE
         GetClientRect(hWin,@rect)
         hBtn=GetDlgItem(hWin,IDC_BTN1)
         x=rect.right-100
         y=rect.bottom-35
         MoveWindow(hBtn,x,y,97,31,TRUE)
         '
      Case Else
         Return FALSE
         '
   End Select
   Return TRUE

End Function
cb.bi
Код:

#define IDD_DLG1 1000
#define IDC_BTN1 1001

Dim Shared hInstance As HMODULE
cb.rc
Код:

#define IDD_DLG1 1000
#define IDC_BTN1 1001
#define IDC_CBO1 1002

IDD_DLG1 DIALOGEX 6,5,210,111
CAPTION "IDD_DLG"
FONT 8,"MS Sans Serif",400,0,0
STYLE 0x10CE0800
BEGIN
  CONTROL "Click me",IDC_BTN1,"Button",0x50010000,126,15,64,19
  CONTROL "",IDC_CBO1,"ComboBox",0x50010003,24,15,90,75
END
использование "SendMessage(IDC_CBO1,CB_ADDSTRING,0,Cast(lparam,StrPtr("1")))" в разных местах и с разными параметрами неполучился или я что то не до понял

timurar

Сообщения : 8
Дата регистрации : 2011-07-26

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Проблемы с ComboBox

Сообщение  trew в Чт Июл 28, 2011 8:16 am

timurar пишет:большое спасибо за ответ
был бы признателен за помощь в следующем
я создал диалоговое окно на основе шаблона и в редакторе формы добавил combobox
cb.bas
Код:

/'
   Dialog Example, by fsw

   compile with:   fbc -s gui dialog.rc dialog.bas

'/

#Include Once "windows.bi"

#Include "cb.bi"

Declare Function DlgProc(ByVal hWin As HWND, ByVal uMsg As UINT, ByVal wParam As WPARAM, ByVal lParam As LPARAM) As Integer

'''
''' Program start
'''

   ''
   '' Create the Dialog
   ''
   hInstance=GetModuleHandle(NULL)
   DialogBoxParam(hInstance, Cast(ZString Ptr,IDD_DLG1), NULL, @DlgProc, NULL)
   ''
   '' Program has ended
   ''

   ExitProcess(0)
   End

'''
''' Program end
'''
Function DlgProc(ByVal hWin As HWND,ByVal uMsg As UINT,ByVal wParam As WPARAM,ByVal lParam As LPARAM) As Integer
   Dim As Long id, Event, x, y
   Dim hBtn As HWND
   Dim rect As RECT

   Select Case uMsg
      Case WM_INITDIALOG
         '
      Case WM_CLOSE
         EndDialog(hWin, 0)
         '
      Case WM_COMMAND
         id=LoWord(wParam)
         Event=HiWord(wParam)
         Select Case id
            Case IDC_BTN1
               EndDialog(hWin, 0)
               '
         End Select
      Case WM_SIZE
         GetClientRect(hWin,@rect)
         hBtn=GetDlgItem(hWin,IDC_BTN1)
         x=rect.right-100
         y=rect.bottom-35
         MoveWindow(hBtn,x,y,97,31,TRUE)
         '
      Case Else
         Return FALSE
         '
   End Select
   Return TRUE

End Function
cb.bi
Код:

#define IDD_DLG1 1000
#define IDC_BTN1 1001

Dim Shared hInstance As HMODULE
cb.rc
Код:

#define IDD_DLG1 1000
#define IDC_BTN1 1001
#define IDC_CBO1 1002

IDD_DLG1 DIALOGEX 6,5,210,111
CAPTION "IDD_DLG"
FONT 8,"MS Sans Serif",400,0,0
STYLE 0x10CE0800
BEGIN
  CONTROL "Click me",IDC_BTN1,"Button",0x50010000,126,15,64,19
  CONTROL "",IDC_CBO1,"ComboBox",0x50010003,24,15,90,75
END
использование "SendMessage(IDC_CBO1,CB_ADDSTRING,0,Cast(lparam,StrPtr("1")))" в разных местах и с разными параметрами неполучился или я что то не до понял

На самом деле подсказка у тебя лежит прямо под носом, только ты в упор не хочешь ее замечать Very Happy

Всмотрись внимательно в справочник API по функции SendMessage ( что передается в первом параметре) ?

Что туда передаешь ты?

Если не получается понять, как вариант можешь попробовать специально разработанной для диалогов функцией

SendDlgItemMessage






trew

Сообщения : 331
Дата регистрации : 2010-10-14

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Проблемы с ComboBox

Сообщение  Спонсируемый контент


Спонсируемый контент


Вернуться к началу Перейти вниз

Предыдущая тема Следующая тема Вернуться к началу


 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения