![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Приветствую, появилась проблема, поисковики ммало выдают требуемой инфы, вот и решил спросить у вас, создал 2 формы на winapi как было написанно на одном из листенгов для начинающих, но появилась загвоздка, 2 форму нада создавать только при нажатие кнопки, а что вместо месаги туда поставить, не пойму. Код вот
Код:
program WinApiWindows; uses Windows, Messages; const HBTN = 1; HLABEL = 2; var window: TWndClassex; Form, Form1, Button, Label1: hwnd; //переменные для хендлов созданных объектов mmsg: msg; // переменная для обработки сообщений function windowproc(wnd: hwnd; msg: integer; wparam: wparam; lparam: lparam):lresult;stdcall; begin case msg of wm_destroy: begin postquitmessage(0); result := 0; exit; end; WM_COMMAND: begin case LoWord( wParam ) of HBTN: MessageBox(Form,'Вы нажали на кнопку','Загаловок',0); end; end; else result := defwindowproc(wnd,msg,wparam,lparam); end; end; procedure CreateWinApiForm; begin //заполняем структуру нового класса окна window.cbsize := sizeof (window); window.style := cs_hredraw or cs_vredraw; window.lpfnwndproc := @windowproc; // указываем классу на адресс функции обработывающей сообщения window.cbclsextra := 0; window.cbwndextra := 0; window.hinstance := hinstance; window.hicon := loadicon(0,idi_application); window.hcursor := loadcursor(0,idc_arrow); window.hbrbackground:=1; window.lpszmenuname := nil; window.lpszclassname := 'main_window'; registerclassex(window);// регистрируем в системе новый класс окна // создаем окно Form:= createwindowex(0,'main_window','Hello World from WinApi', WS_OVERLAPPEDWINDOW,300,300,350,130,0,0,hinstance,nil); Form1:= createwindowex(0,'main_window','Hello World from WinApi', WS_OVERLAPPEDWINDOW,300,300,350,130,0,0,hinstance,nil); label1:=CreateWindow('static','Ты уже посмотрел на размер?',WS_VISIBLE or WS_CHILD or BS_TEXT,6,25,330,40,Form,HLABEL,hInstance,nil); Button:=CreateWindow('button','Кликать сюда',WS_VISIBLE or WS_CHILD,6,73,110,25,Form,HBTN,hInstance,nil); // показываем окно ShowWindow(Form,SW_SHOW); ShowWindow(Form1,SW_SHOW); end; begin CreateWinApiForm; while getmessage(mmsg,0,0,0) do begin translatemessage(mmsg); // переводит сообщения виртуальных клавиш в символьные сообщения dispatchmessage(mmsg); // функция сообщения оконному обработчику событий, у нас это WindowProc end; end. |
#2
|
||||
|
||||
![]() Ответа на вопрос не знаю но хотел бы спросить. А чем стандартное создание формы не понравилось? Так же на много меньше кода?
Не твори зла, и жизнь повернется к тебе передом ![]() |
#3
|
|||
|
|||
![]() vcl код систему сильно жрёт
|
#4
|
|||
|
|||
![]() не надо, то, что у тебя получается достаточно большой исполняемый файл систему сильно не нагружает. А окно (любое) меньше 1,5 Мб в памяти все равно не будет, на чем ты не пиши.
|
#5
|
|||
|
|||
![]() Используй KOL, он сильно экономит дисковое пространство.
|
#6
|
|||
|
|||
![]() Ну, если хочется иметь маленький exe, то да, лучше KOL, чем WinAPI.
В вообще, можно просто упаковать получившийся exe с помощью какого-нить пакета, типа UPX или ASPack. Зато ты теряешь в удобстве разработки. На VCL просто рисуешь форму, на на WinAPI или KOL все тоже самое делаешь кодом. |
#7
|
|||
|
|||
![]() за место :
Код:
MessageBox(Form,'Вы нажали на кнопку','Загаловок',0); Код:
ShowWindow(Form1,SW_SHOW); тут убрать: Код:
// показываем окно ShowWindow(Form,SW_SHOW); //ShowWindow(Form1,SW_SHOW); end; Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение" |