Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: API. Создание объектов Добавлено: 26.08.09 16:16  

Автор вопроса:  Злобный программер :-)
Здравствуйте. Порывшись в API я наткнулся на функцию CreateWindowEx. Как я понял она для создания окон. Где - то на просторах рунета я видел статью, в которой рассказывалось что кнопки, текстовые поля и другие контролы тоже считаются окнами. Появился вопрос. Как же спомощью этой функции создать окно (назовём его frmForm), а на нём расположить кнопку(cmdButton)?
А то что храниться в OCX - тоже окна? И их тоже можно создать аналогично с пом API имея у себя эту библиотечку OCX? Спасибо

Ответить

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

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



Вопросов: 80
Ответов: 476
 Профиль | | #1 Добавлено: 26.08.09 17:39
Хех.Апи тут нафиг не нужен. Просто определяеш переменную как форму:
  1.  
  2. Dim frmForm as new form
  3. frmForm.visible = true


Примерно тоже и с другими обьектами.Как создать кнопку читай:
http://vbnet.ru/forum/show.aspx?id=194725

Ответить

Номер ответа: 2
Автор ответа:
 Злобный программер :-)



Вопросов: 14
Ответов: 24
 Профиль | | #2 Добавлено: 26.08.09 20:33
UnDeAdZak пишет:
Хех.Апи тут нафиг не нужен. Просто определяеш переменную как форму:

   1.
   2. Dim frmForm as new form
   3. frmForm.visible = true
   4.

 

Это получается копирование существующей формы. Какая то фигня. Мне надо чтобы можно было программно создать форму, и прописать ей определённые события (например при выгрузке формы)(я пишу компилятор)
UnDeAdZak пишет:
Примерно тоже и с другими обьектами.Как создать кнопку читай:
http://vbnet.ru/forum/show.aspx?id=194725

Эт для NET а VB6 почему - то не катит.....
Ну может кто - нибудь знает теорию создания объектов с помощью API? Ведь сам компилятор Visual Basic как раз наверное и вызывает CreateWindowEx?

Ответить

Номер ответа: 3
Автор ответа:
 Дмитрий Юпатов



Вопросов: 4
Ответов: 457
 Web-сайт: cargomaster.at.ua/
 Профиль | | #3
Добавлено: 26.08.09 23:08
поищи: Ганеев Р.М. Проектирование интерфейса пользователя средствами Win32 API.
может, поможет...

Ответить

Номер ответа: 4
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #4
Добавлено: 26.08.09 23:16
Дану нафиг. Создавай с помощью массивов контролов. У меня так XQR2 формы FRM открывает и запускает. И никаких CreateWindowEx.

Ответить

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



Вопросов: 80
Ответов: 476
 Профиль | | #5 Добавлено: 27.08.09 00:10
Это получается копирование существующей формы.

Причём тут копирование формы?????? Ты с какого дерева рухнул??? Это создание формы, путём её обьявления, тока я ошибся не frmForm.visible = true ,а frmForm.show
В VB6.0 всё ещщё прощще.На форму кинь кнопку, нажми копировать, вставить, на вопрос о создании массива обьектов говори: "да", и в код кинь:
  1.  
  2. load command1(1)
  3. command1(1).visible = true


ВСЁ!!!

Ответить

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



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #6 Добавлено: 27.08.09 05:13
Не ВСЁ!!!

Например у меня утилитка с прогрессбаром на форме, написана на вб6, весит меньше чем ОСХ с этим самым прогрессбаром, накой мне таскать с утилиткой этот ОСХ если создать его можно с помошью нескольких апишек???

И грузятся эти объекты помоему из ДЛЛок а не из ОСХов.

  1. Option Explicit
  2.  
  3. Private Const WS_VISIBLE = &H10000000
  4. Private Const WS_CHILD = &H40000000
  5. Private Const WM_USER = &H400
  6. Private Const PBM_SETRANGE = (WM_USER + 1)
  7. Private Const PBM_SETSTEP = (WM_USER + 4)
  8. Private Const PBM_SETPOS = (WM_USER + 2)
  9. Private Const PBM_GETPOS = (WM_USER + 8)
  10. Private Declare Function DestroyWindow Lib "user32" (ByVal hwnd As Long) As Long
  11. Private Declare Function CreateWindowEx Lib "user32" Alias "CreateWindowExA" (ByVal dwExStyle As Long, ByVal lpClassName As String, ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, lpParam As Any) As Long
  12. Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
  13. Private Declare Sub InitCommonControls Lib "comctl32" ()
  14.  
  15. Private pWnd As Long
  16.  
  17. Public Sub Create(hwnd As Long, Top As Long, Left As Long, Height As Long, Width As Long, Optional MinPos As Long = 0, Optional MaxPos As Long = 100, Optional StepRange As Long = 1)
  18.     DestroyWindow pWnd
  19.     pWnd = CreateWindowEx(0, "msctls_progress32", "", WS_VISIBLE Or WS_CHILD, Left, Top, Width, Height, hwnd, ByVal 0&, ByVal 0&, ByVal 0&)
  20.     SendMessage pWnd, PBM_SETRANGE, &H0, ByVal MakeDWord(CInt(MinPos), CInt(MaxPos))
  21.     SendMessage pWnd, PBM_SETSTEP, StepRange, 0
  22. End Sub
  23.  
  24. Public Property Let Value(ByVal vData As Long)
  25.     SendMessage pWnd, PBM_SETPOS, vData, 0
  26. End Property
  27.  
  28. Private Sub Class_Terminate()
  29.     DestroyWindow pWnd
  30. End Sub
  31.  
  32. Private Function MakeDWord(LoWord As Integer, HiWord As Integer) As Long
  33.     MakeDWord = (HiWord * &H10000) Or (LoWord And &HFFFF&)
  34. End Function


Вот пример от Назара.

Ответить

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



Вопросов: 80
Ответов: 476
 Профиль | | #7 Добавлено: 27.08.09 15:34
Кул.весит возможно и меньше, не знаю, но на мой взгляд 4 строчки кода немного получше, чем 34, т.к. чем меньше кода, тем быстрее работает программа.

Ответить

Номер ответа: 8
Автор ответа:
 Ra$cal



ICQ: 8068014 

Вопросов: 18
Ответов: 817
 Web-сайт: www.rascalspb.narod.ru
 Профиль | | #8
Добавлено: 27.08.09 16:27
ггг. а если бы был язык программирования, который имеет команду расчета фазы луны по текущей дате getMoonPhase(). По твоему реально процессорных команд тоже одна? Открою тайну - одна команда на вб компилится в туеву хучу команд. Вб обеспечивает абстракцию над системой. Но за это ты платишь именно скоростью. Ибо бейсик - весьма и весьма медленный язык. Медленнее только скриптовые интерпретируемые языки.

Ответить

Номер ответа: 9
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #9
Добавлено: 27.08.09 16:44
Не знаю, как на счет фаз луны, но в PHP есть стандартные функции date_sunrise и date_sunset, которые считают время восхода и захода Солнца для данного дня и координат :)

Ответить

Номер ответа: 10
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #10 Добавлено: 27.08.09 18:24
чем меньше кода, тем быстрее работает программа.

иногда лучше жевать, чем говорить..

Ответить

Номер ответа: 11
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #11 Добавлено: 27.08.09 18:27
Мы тут какбы немного о другом, но всё равно очень рады что ты жив и почтил нас своим появлением :-)

Ответить

Номер ответа: 12
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #12 Добавлено: 27.08.09 18:42
Это я Шарпу.

Ответить

Номер ответа: 13
Автор ответа:
 GDK



Вопросов: 13
Ответов: 348
 Профиль | | #13 Добавлено: 28.08.09 10:33
И никто про OCX.
Я конечно не знаток, но по моему я прав: в ОСХ может храниться не только форма(а форма - это ведь объект, отрисовывающий на экране окно, хранящий его параметры и управляющий его поведением). OCX может содержать кроме форм (одной или нескольких) ещё всякую фигню. Кажется так.

Ответить

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



Вопросов: 80
Ответов: 476
 Профиль | | #14 Добавлено: 28.08.09 11:56
No comments.....

Ответить

Номер ответа: 15
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #15
Добавлено: 29.08.09 11:07
Так я и ответил не Вам, а Ra$cal.

Ответить

Страница: 1 |

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



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