Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.09.2010, 22:59
bulldog bulldog вне форума
Начинающий
 
Регистрация: 10.05.2010
Сообщения: 160
Репутация: 14
По умолчанию Проблема с Родительским окнои и дочерним на winapi

Создаётся родительское окно одного цвета, при клике на кнопку создаётся дочернее окно другова цвета, но почемуто они становятся цвета одного. Код вот:
Код:
var
  WinClass : TWndClass;
  WinClass1 : TWndClass;
  Form : HWND;
  Form1 : HWND;
  Handle : HWND;
  Msg : TMSG;
  hFont : HWND;
  Button1 : HWND; //TButton

function windowproc(hwnd: hwnd; msg: integer; wparam: wparam; lparam: lparam):lresult;stdcall;
begin
  Result := DefWindowProc(hwnd, msg, wparam, lparam);
  case Msg of
WM_COMMAND:
if (lParam = Button1) and (HiWord(wParam) = BN_CLICKED) then
begin
Form1 := GetModuleHandle(nil);
  with WinClass do
  begin
   Style := WS_CHILD;
   hIcon := LoadIcon(BUX, MAKEINTRESOURCE('APIXICON'));
   lpfnWndProc := @WindowProc;
   hInstance := Form1;
   hbrBackground := COLOR_BTNFACE-13;
   lpszClassName := 'TAPIxForm';
   hCursor := LoadCursor(0, IDC_ARROW);
  end;
InitCommonControls;
RegisterClass(WinClass);

Handle := CreateWindowEx(0, 'TAPIxForm', 'Form1',
WS_POPUP or WS_CHILD,
219, 116, 500, 366,
0, 0,
BUX, nil);
   ShowWindow(Handle, SW_SHOW);
end;
  WM_DESTROY: ShutDown;
      Exit;
    end;
  end;
end;

begin
Form := GetModuleHandle(nil);
  with WinClass do
  begin
   Style := CS_PARENTDC;
   hIcon := LoadIcon(Form, MAKEINTRESOURCE('APIXICON'));
   lpfnWndProc := @WindowProc;
   hInstance := Form;
   hbrBackground := COLOR_BTNFACE+15;
   lpszClassName := 'TAPIxForm';
   hCursor := LoadCursor(0, IDC_ARROW);
  end;
InitCommonControls;
RegisterClass(WinClass);

Handle := CreateWindowEx(0, 'TAPIxForm', 'Form',
WS_POPUP or WS_GROUP or
WS_MINIMIZEBOX or WS_MAXIMIZEBOX or WS_SYSMENU or WS_EX_CLIENTEDGE,
219, 116, 500, 366,
0, 0,
Form, nil);
   ShowWindow(Handle, SW_SHOW);

hFont := CreateFont(
-11, 0, 0, 0, 0, 0, 0, 0,
DEFAULT_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
DEFAULT_PITCH or FF_DONTCARE, 'MS Sans Serif');

Button1 := CreateWindow(
'Button',
'',
WS_CHILD or BS_TEXT or WS_VISIBLE,
334, 16, 19, 17, Handle, Button1, Form, nil);
SendMessage(Button1, WM_SETFONT, hFont, 0);
Ответить с цитированием
  #2  
Старый 30.09.2010, 00:49
Аватар для KOOL
KOOL KOOL вне форума
Активный
 
Регистрация: 06.01.2008
Адрес: Рязань
Сообщения: 306
Версия Delphi: 2009
Репутация: 6150
По умолчанию

Имена классов сделай разными
__________________
РГРТУ - ФВТ - Системы Автоматизированного ПРоектирования. ت
Ответить с цитированием
  #3  
Старый 30.09.2010, 12:30
bulldog bulldog вне форума
Начинающий
 
Регистрация: 10.05.2010
Сообщения: 160
Репутация: 14
По умолчанию

Пробывал, не помогло
Ответить с цитированием
  #4  
Старый 30.09.2010, 17:38
Аватар для KOOL
KOOL KOOL вне форума
Активный
 
Регистрация: 06.01.2008
Адрес: Рязань
Сообщения: 306
Версия Delphi: 2009
Репутация: 6150
По умолчанию

странно... но в принципе можно обойтись и одним классом, а цветом заливать в событии WM_PAINT. еще попробуй апдейтить окно после показа
__________________
РГРТУ - ФВТ - Системы Автоматизированного ПРоектирования. ت
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:37.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter