Показать сообщение отдельно
  #1  
Старый 25.09.2010, 23:24
bulldog bulldog вне форума
Начинающий
 
Регистрация: 10.05.2010
Сообщения: 160
Репутация: 14
По умолчанию Создание дочерней формы при нажатие на кнопку на winapi

Приветствую, появилась проблема, поисковики ммало выдают требуемой инфы, вот и решил спросить у вас, создал 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.
Ответить с цитированием