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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2010, 07:12   #1
BoT_T
Пользователь
 
Аватар для BoT_T
 
Регистрация: 19.09.2010
Сообщений: 50
По умолчанию Динамическое создание формы

Возник вопрос по поводу динамического создания компонентов. Вопрос таков: в чем ошибка, и почему окно все равно не поверх всех?
Код:
Program Api; 
uses 
windows,messages; 

var 
window:TWndClassEx; 
Mwindow: HWND; 
Mmsg: MSG; 
Edit: HWND; 
Buttons: array[0..8] of HWND; 
Icon: HICON;   
Font: HFONT; 

const   
BTN_TEXT_0 = 6; 
EditID = 1; 
WND_STYLE = WS_OVERLAPPEDWINDOW or WS_VISIBLE or WS_EX_TOPMOST ; 

// Процедура обработки сообщений 
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_BtnFace+4; 
window.lpszMenuName := nil; 
window.lpszClassName := 'Main_Window'; 
RegisterClassEx (window); 
Mwindow := CreateWindowEx(0,'Main_Window','First_WinAPI_Programm', wnd_style ,100,100,300,300,0,0,Hinstance,nil);   //окно 
SHOWWINDOW (Mwindow,SW_Show); 

Buttons[6] := CreateWindowEx( WS_EX_STATICEDGE, 'Button', 'Я, кнопка', WS_VISIBLE or WS_CHILD,  //кнопка 
1, 1, 100, 25, mwindow, BTN_TEXT_0, hInstance, nil ); 
Font := GetStockObject( ANSI_VAR_FONT );   
SendMessage( Buttons[6], WM_SETFONT, Font, 0 ); 

Edit := CreateWindowEx( WS_EX_CLIENTEDGE, 'Edit', 'Текстовое поле',   // Текстовое поле 
ES_AUTOHSCROLL or WS_CHILD or WS_VISIBLE, 
1, 40, 150, 20, mwindow, EditID, hInstance, nil ); 
SendMessage( Edit, WM_SETFONT, GetStockObject( ANSI_VAR_FONT ), 0 ); 

// Цикл обработки сообщений 
while GetMessage (Mmsg,0,0,0) do 
begin 
TranslateMessage (Mmsg); 
DispatchMessage (Mmsg); 
end; 
end.
Тоже самое и с созданием формы во весь экран (WND_STYLE). Вобщем в чем дело и как исправить...
ICQ 611 - 892
BoT_T вне форума Ответить с цитированием
Старый 09.12.2010, 07:43   #2
MaxNik2009
Форумчанин
 
Аватар для MaxNik2009
 
Регистрация: 17.09.2009
Сообщений: 294
По умолчанию

вот так сделай:
Код:
..................................... 
// создание окна
Mwindow:= CreateWindowEx(WS_EX_TOPMOST, 'Main_Window', 'First_WinAPI_Programm',
    WS_OVERLAPPEDWINDOW, 100, 100, 300, 300, 0, 0, hInstance, nil); // окно
  SHOWWINDOW(Mwindow, SW_Show);
..........................................
окно будет поверх всех окон.
принимаю благодарности в письменном виде( весы слева)...
MaxNik2009 вне форума Ответить с цитированием
Старый 09.12.2010, 15:03   #3
BoT_T
Пользователь
 
Аватар для BoT_T
 
Регистрация: 19.09.2010
Сообщений: 50
По умолчанию

Цитата:
Сообщение от MaxNik2009 Посмотреть сообщение
вот так сделай:
Код:
..................................... 
// создание окна
Mwindow:= CreateWindowEx(WS_EX_TOPMOST, 'Main_Window', 'First_WinAPI_Programm',
    WS_OVERLAPPEDWINDOW, 100, 100, 300, 300, 0, 0, hInstance, nil); // окно
  SHOWWINDOW(Mwindow, SW_Show);
..........................................
окно будет поверх всех окон.
++. Терь как сделать во весь экран.
Код:
Mwindow:= CreateWindowEx(WS_EX_TOPMOST  , 'Main_Window', 'First_WinAPI_Programm',
    WS_MAXIMIZE, 100, 100, 300, 300, 0, 0, hInstance, nil);

SHOWWINDOW (Mwindow,SW_Show);
Не работает...
ICQ 611 - 892
BoT_T вне форума Ответить с цитированием
Старый 10.12.2010, 04:58   #4
MaxNik2009
Форумчанин
 
Аватар для MaxNik2009
 
Регистрация: 17.09.2009
Сообщений: 294
По умолчанию

Можно так сделать:
Код:
  Mwindow:= CreateWindowEx(WS_EX_TOPMOST, 'Main_Window', 'First_WinAPI_Programm',
    WS_OVERLAPPEDWINDOW, 100, 100, 300, 300, 0, 0, hInstance, nil); // окно
  SHOWWINDOW(Mwindow, SW_Show);
  SendMessage(Mwindow, WM_SYSCOMMAND, SC_MAXIMIZE, 0);
принимаю благодарности в письменном виде( весы слева)...
MaxNik2009 вне форума Ответить с цитированием
Старый 10.12.2010, 12:36   #5
x128
Форумчанин
 
Регистрация: 03.02.2010
Сообщений: 178
По умолчанию

ShowWindow(Mwindow, SW_SHOWMAXIMIZED);
x128 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое создание объектов panda88 Общие вопросы Delphi 4 24.01.2010 18:16
Динамическое обращение к элементам формы. Dennis Microsoft Office Excel 2 17.03.2009 12:55
Динамическое создание формы. Son Общие вопросы Delphi 1 04.02.2009 15:33
Динамическое создание формы Rifler Общие вопросы Delphi 6 11.09.2008 20:50
Динамическое создание объекта Fruit Общие вопросы Delphi 5 24.01.2008 11:00