Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 20.04.2010, 18:03   #1
Alex Cones
Trust no one.
Профессионал
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Адрес: In the middle of nowhere.
Сообщений: 6,524
Репутация: 1440
По умолчанию "Фоновая" форма

Структура моего кода:
Код:

Некоторые действие перед загрузкой
Регистрация класса
Создание гл. окна
Создание на нем контролов
Обработчик событий

Мне нужно следующее:
Создать "фоновую" форму. Обработчик для неё не требуется, только, чтобы она висела как сплеш на фоне. Следовательно этот "бекграунд" должен находиться сзади mainform.

Надеюсь выразился правильно. Был бы рад не коду (если он конечно стандартный, иначе желательно еще и пояснение ) а структуре, как выше.
__________________
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума   Ответить с цитированием
Старый 20.04.2010, 22:37   #2
Alex Cones
Trust no one.
Профессионал
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Адрес: In the middle of nowhere.
Сообщений: 6,524
Репутация: 1440
По умолчанию

Все еще актуально...
__________________
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума   Ответить с цитированием
Старый 21.04.2010, 10:16   #3
Alex Cones
Trust no one.
Профессионал
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Адрес: In the middle of nowhere.
Сообщений: 6,524
Репутация: 1440
По умолчанию

Сделал вот так:
Код:

Unit UNTFRMProc;

Interface

Uses
 UNTFRMTypes,
 UNTFRMVars,
 UNTFRMExp;

Function WindowProc(hwnd, msg, wparam, lparam: longint): longint; StdCall;

Procedure WindowCreate(Var FRM : TShrewForm);
Procedure ImageCreate;
Procedure ShowAnimatedWindow;
Procedure ShutDown;
Procedure FillForms;

Implementation

Function WindowProc(hwnd, msg, wparam, lparam: longint): longint; StdCall;
Begin
  Result := UNTFRMExp.DefWindowProc(hwnd, msg, wparam, lparam);
  Case Msg Of

   (*WM_DESTROY*)$0002: UNTFRMProc.ShutDown;
  End;
End;

Procedure WindowCreate(Var FRM : TShrewForm);
Begin
 FRM.hInst := UNTFRMExp.GetModuleHandle(Nil);
  With FRM.WinClass Do
   Begin
    Style := $80;
    hIcon := UNTFRMExp.LoadIcon(FRM.hInst, PAnsiChar('MAINICON'));
    lpfnWndProc := @UNTFRMProc.WindowProc;
    hInstance := FRM.hInst;
    hbrBackground := 15 + 1;
    lpszClassName := FRM.ClsName;
    hCursor := UNTFRMExp.LoadCursor(0, PAnsiChar(32512));
   End;
 UNTFRMExp.InitCommonControls;
 UNTFRMExp.RegisterClass(FRM.WinClass);
 FRM.Handle := UNTFRMExp.CreateWindowEx(0, FRM.ClsName, 'Shrew',
 Cardinal($80000000) (* WS_POPUP *), FRM.Left, FRM.Top,
 FRM.Width, FRM.Height,
 0, 0,
 FRM.hInst, Nil);
End;

Procedure ImageCreate;
Begin
 FRMMain.IMGMain.Handle := CreateWindow('Static','' ,
  $40000000 or 14 or $10000000 (*WS_CHILD or SS_BITMAP or WS_VISIBLE*),
  0, 0,
  UNTFRMExp.GetSystemMetrics(0), Round(UNTFRMExp.GetSystemMetrics(1)/2),
  FRMMain.Handle, 0, FRMMain.hInst, nil);
End;

Procedure ShowAnimatedWindow;
Begin
 UNTFRMExp.AnimateWindow(FRMMain.Handle, 700, $00080000); {AW_BLEND}
 UNTFRMExp.AnimateWindow(FRMBack.Handle, 700, $00080000); {AW_BLEND}
End;

Procedure ShutDown;
Begin
  UNTFRMExp.UnRegisterClass(FRMMain.ClsName, FRMMain.hInst);
  UNTFRMExp.ExitProcess(FRMMain.hInst);
  UNTFRMExp.UnRegisterClass(FRMBack.ClsName, FRMBack.hInst);
  UNTFRMExp.ExitProcess(FRMBack.hInst);
End;

Procedure FillForms;
Begin
 FRMMain.ClsName := 'TShrew';
 FRMMain.Left := 0;
 FRMMain.Top  := 0;
 FRMMain.Width  := Round(UNTFRMExp.GetSystemMetrics(0)/2);
 FRMMain.Height := Round(UNTFRMExp.GetSystemMetrics(1)/2);
 FRMBack.ClsName := 'TBack';
 FRMBack.Left := Round(UNTFRMExp.GetSystemMetrics(0)/2);
 FRMBack.Top := 0;
 FRMBack.Width := Round(UNTFRMExp.GetSystemMetrics(0)/2);
 FRMBack.Height := Round(UNTFRMExp.GetSystemMetrics(1)/2);
End;

End.

Код:

 UNTFRMProc.FillForms;
 UNTFRMProc.WindowCreate(FRMMain);
 UNTFRMProc.WindowCreate(FRMBack);
 UNTFRMProc.ImageCreate;
 UNTFRMProc.ShowAnimatedWindow;
  While(UNTFRMExp.GetMessage(Msg, 0, 0, 0)) Do
   Begin
     UNTFRMExp.TranslateMessage(Msg);
     UNTFRMExp.DispatchMessage(Msg);
   End;
End.

Вроде все работает. Правильно ли написал или какая-то грубая ошибка идет при создании двух форм на один обработчик?

И такой вопрос: как мне FRMBack переместить за FRMMain?
__________________
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума   Ответить с цитированием
Старый 21.04.2010, 11:00   #4
raxp
Профессионал
 
Регистрация: 29.09.2009
Сообщений: 9,731
Репутация: 3006
По умолчанию

Цитата:
И такой вопрос: как мне FRMBack переместить за FRMMain?
как насчет поиграться с WndParent, как-то так
__________________
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума   Ответить с цитированием
Старый 21.04.2010, 11:09   #5
Alex Cones
Trust no one.
Профессионал
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Адрес: In the middle of nowhere.
Сообщений: 6,524
Репутация: 1440
По умолчанию

Поигрался, вроде сработало, спасибо.
__________________
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
"ОКРВВЕРХ", "ОКР", "ЕСЛИ". Как бы их связать. Каравай Microsoft Office Excel 13 17.02.2010 10:53
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
"Мёртвая" форма в QT4. jojahti Общие вопросы C/C++ 4 10.08.2009 03:24
Форма как "Инспектор обьектов" Dj_smart Общие вопросы Delphi 2 09.04.2008 21:01


16:45.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru