Ты кажется меня не так понял.Учи матчасть
Вот твой обработчик событий
- Код: Выделить всё
Function MainWndProc(ByVal hWnd As Dword, ByVal wMsg As Dword, ByVal wParam As Dword, ByVal lParam As Dword) Export As Long
Local ps As PAINTSTRUCT, wRect As RECT, hdc As Long
Select Case wMsg
Case %wm_create
Function = 0
Case %wm_paint
hdc = BeginPaint(hWnd, ps) 'initiates window painting
Call GetClientRect(hWnd, wRect) 'gets dimensions of window's client area
Call DrawText (hdc, "Hello, Windows 98!", -1, wRect,_ 'displays a text string
%DT_SINGLELINE Or %DT_CENTER Or %DT_VCENTER)
Call EndPaint(hWnd, ps) 'ends window painting
Function = 0
Case %wm_destroy
PostQuitMessage 0
End Select
Function = DefWindowProc(hWnd, wMsg, wParam, lParam) 'performs default processing of message
End Function
А вот мой обработчик событий
- Код: Выделить всё
Repeat ; Начало главного цикла.
Event=WaitWindowEvent() ; Получаем идентификатор события.
Gadget=EventGadget() ; Узнаём идентификатор активного гаджета.
If Event=#PB_Event_Gadget And Gadget=2 ; Условие будет выполнено при щелчке по кнопке.
MessageRequester("Сообщение","Была нажата кнопка") ; Выводим на экран сообщение.
EndIf
Until Event = #PB_Event_CloseWindow ; Прерываем цикл при закрытии окна
Обрати внимание что у тебя там куча API функций, а у меня не одной, да и у тебя кода гораздо больше.
У тебя можно так сказать нет всроеного обрабаотчика событий, а процедура MainWndProc вызывается с помощью API функции GetMessage
Теперт спотри как у тебя создаётся окно
- Код: Выделить всё
wClass.cbSize = SizeOf(wClass)
wClass.style = %CS_HREDRAW Or %CS_VREDRAW
wClass.lpfnWndProc = CodePtr(MainWndProc)
wClass.cbClsExtra = 0
wClass.cbWndExtra = 0
wClass.hInstance = GetModuleHandle(ByVal %Null)
wClass.hIcon = LoadIcon (%NULL, ByVal %IDI_APPLICATION) 'loads an icon for use by the program
wClass.hCursor = LoadCursor(%NULL, ByVal %IDC_ARROW) 'loads a mouse cursor for use by the program
wClass.hbrBackground = GetStockObject(%WHITE_BRUSH)
wClass.lpszMenuName = %NULL
wClass.lpszClassName = VarPtr(szClassName)
wClass.hIConSm = LoadIcon (%NULL, ByVal %IDI_APPLICATION) 'loads an icon for use by the program
Call RegisterClassEx (wClass) 'registers a window class for the program window
hWnd = CreateWindow (szClassName, "The Hello Program", %ws_overlappedwindow, _
%CW_USEDEFAULT, %CW_USEDEFAULT, %CW_USEDEFAULT, %CW_USEDEFAULT,_
%NULL, %NULL, wClass.hInstance, %NULL)
ShowWindow hWnd, %sw_show
UpdateWindow hWnd
- Код: Выделить всё
OpenWindow(1,0,0,200,100,"Заголовок окна",#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
У тебя размер кода гораздо больше чем у меня.
Весь прикол в том, что если захочу, я могу написать код, примерно такой как у тебя, но вот есть ли смылс?
Как говорится "если нет разницы то зачем платить больше"?
Я не спорю, знание API очень важно, но если прогу можно писать почти не зная API и при этом будут получатся неплохие проги, что разве это плохо?