Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2011, 16:51   #1
Javaca
Новичок
Джуниор
 
Регистрация: 25.04.2011
Сообщений: 2
Вопрос Delphi WinApi MDI окно

Уважаемые программисты!
Прошу Вас показать работающий Delphi пример MDI окон на чистом WinApi без VCL или исправить мой пример. Хоть тресни, но не хочет у меня создаваться окно "Child_Window".

Код:
Program Api2;

uses
  Windows, Messages;
  
var
 window,window2: TWndClassEx;
 Mwindow: HWND;
 Mmsg: TMsg;
 
function MDIWndProc(Wnd: HWND; uMsg: UINT; lP: LPARAM; wP: WPARAM): LRESULT; stdcall;
begin
  case uMsg of
    WM_CREATE: ;
  else
    Result := DefMDIChildProc(Wnd, uMsg, wP, lP);
  end;
end;

function GetMDIWnd(AParent: HWND; AInst: HMODULE): HWND; stdcall;
begin
   window2.Style := CS_HREDRAW or CS_VREDRAW; //стиль класса главного окна
   window2.hIcon := LoadIcon(Mwindow, IDC_ARROW); //иконка программы
   window2.lpfnWndProc := @MDIWndProc; //назначение обработчика сообщений
   window2.hInstance := HInstance;
   window2.hbrBackground := COLOR_BTNFACE + 1; //цвет окна
   window2.lpszClassName:='Child_Window'; //класс окна
   window2.hCursor := LoadCursor(0, IDC_ARROW); //активный курсор

  if RegisterClassEx(window2) = 0 then MessageBox(AParent, 'Класс Child не зарегистрирован', 'Сообщение', MB_OK);
  
  Mwindow := CreateWindowEx(0, 'Child_Window', 'Child', 
            WS_SYSMENU or WS_CAPTION or WS_CHILD or WS_CLIPCHILDREN or WS_VISIBLE, 
			50, 50, 
			300, 300, 
			0, 0, Mwindow, nil);  
			
	ShowWindow(Mwindow, SW_SHOW);		
 
end;  
 
// Процедура обработки сообщений
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;
   else
    Result:=DefWindowProc(wnd,msg,wparam,lparam);
 end;
end;

// Регистрация созданого класса
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:=COLOR_APPWORKSPACE + 1; //цвет окна
 window.lpszMenuName :=nil;
 window.lpszClassName:='Main_Window';
 RegisterClassEx (window);
 
 // Создание основного окна
 Mwindow:=CreateWindowEx(0,'Main_Window','First_WinAPI_Program',WS_OVERLAPPEDWINDOW or WS_VISIBLE,
CW_USEDEFAULT,SW_SHOWMAXIMIZED,800,600,0,0,Hinstance,nil);

 GetMDIWnd(Mwindow, HInstance);
 
 // Цикл обработки сообщений
 while GetMessage(Mmsg,0,0,0) do
  begin
   TranslateMessage(Mmsg);
   DispatchMessage(Mmsg);
  end;
end.

Последний раз редактировалось Javaca; 25.04.2011 в 16:54.
Javaca вне форума Ответить с цитированием
Старый 25.04.2011, 19:47   #2
Javaca
Новичок
Джуниор
 
Регистрация: 25.04.2011
Сообщений: 2
По умолчанию

Кто-нибудь может помочь мне?
Javaca вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Свернуть окно на winapi bulldog5293 Общие вопросы Delphi 6 29.09.2010 19:54
Передача параметра с MDI родителя в MDI child через DLL ByXalkin Общие вопросы Delphi 0 15.12.2009 17:21
Delphi. Активное неMDI окно, поверх неативного MDI. Zo0M Помощь студентам 7 27.07.2009 10:25
Delphi. MDI HoLToFF Фриланс 1 31.05.2009 07:40