Про Window

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
nik936ta
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 20
Зарегистрирован: 22.05.2004 (Сб) 8:32

Про Window

Сообщение nik936ta » 11.06.2004 (Пт) 2:51

Киньте пожалуйста исходник как сделать окно при помощи API функций :?:

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 11.06.2004 (Пт) 6:47

А зачем? :)

В форме
Код: Выделить всё
Option Explicit

Private Declare Function CreateWindowEx Lib "user32" Alias "CreateWindowExA" (ByVal dwExStyle As Long, ByVal lpClassName As Any, 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
Private Declare Function RegisterClass Lib "user32.dll" Alias "RegisterClassA" (Class As WNDCLASS) As Long

Private Type WNDCLASS
  style As Long
  lpfnwndproc As Long
  cbClsextra As Long
  cbWndExtra2 As Long
  hInstance As Long
  hIcon As Long
  hCursor As Long
  hbrBackground As Long
  lpszMenuName As String
  lpszClassName As String
End Type

Private Const WS_OVERLAPPED As Long = &H0&
Private Const WS_MINIMIZE As Long = &H20000000
Private Const WS_MINIMIZEBOX As Long = &H20000
Private Const WS_MAXIMIZEBOX As Long = &H10000
Private Const WS_MAXIMIZE As Long = &H1000000
Private Const WS_CAPTION As Long = &HC00000
Private Const WS_SYSMENU As Long = &H80000
Private Const WS_THICKFRAME As Long = &H40000
Private Const WS_VISIBLE As Long = &H10000000
Private Const WS_OVERLAPPEDWINDOW As Long = WS_OVERLAPPED Or WS_CAPTION Or WS_SYSMENU Or WS_THICKFRAME Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX
Private Const COLOR_BACKGROUND As Long = 1
Private Const COLOR_DESKTOP As Long = COLOR_BACKGROUND

Private Sub Form_Load()
  Dim w As WNDCLASS
 
  w.hbrBackground = COLOR_DESKTOP + 1
  w.hInstance = App.hInstance
  w.lpfnwndproc = Wrapper(AddressOf WndProc)
  w.lpszClassName = "MyCoolWindow"
 
  CreateWindowEx 0, RegisterClass(w), "My Window Instance", WS_OVERLAPPEDWINDOW Or WS_VISIBLE, 10, 10, 100, 100, 0, 0, App.hInstance, ByVal 0&
End Sub


В модуле
Код: Выделить всё
Option Explicit

Private Declare Function DefWindowProc Lib "user32.dll" Alias "DefWindowProcA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Public Function WndProc(ByVal hwnd As Long, ByVal umsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  WndProc = DefWindowProc(hwnd, umsg, wParam, lParam)
End Function

Public Function Wrapper(ByVal a As Long) As Long
  Wrapper = a
End Function
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

    TopList