Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как создать класс окна управления?

29K
07 сентября 2008 года
Existor
20 / / 03.07.2008
Подскажите как создать свой класс окна управления, так чтобы его это окно можно было создавать командой CreateWindow, подставив его имя вместо [COLOR="SeaGreen"]"button"[/COLOR]? Ну или что то вроде того.
 
Код:
hwnd_button2=CreateWindow([COLOR="SeaGreen"]"button"[/COLOR],"выход",
        WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
        150,10,100,20,
        hwnd, (HMENU) 1,
        ((LPCREATESTRUCT) lParam)->hInstance, NULL);
1.9K
07 сентября 2008 года
andriano
474 / / 10.01.2008
А чем, собственно, RegisterClass не подходит?
3.7K
07 сентября 2008 года
0nni
326 / / 24.06.2008
Можно создать окно любого класса (обычно #32770), а потом назначить свою оконную процедуру через SetWindowLong();
1.9K
07 сентября 2008 года
andriano
474 / / 10.01.2008
Можно.
Только вряд ли целесообразно в стандартных ситуациях пользоваться нестандартными средствами.
Так что следует сначала прояснить, является ли ситуация стандартной, и если нет, то в чем именно это проявляется.
29K
09 сентября 2008 года
Existor
20 / / 03.07.2008
Приведине какой нибудь пример.
3.7K
09 сентября 2008 года
0nni
326 / / 24.06.2008
Через RegisterClass
Код:
ZeroMemory(@wc, sizeof(wc));
  wc.style         := CS_DBLCLKS;
  wc.lpfnWndProc   := @MyWndProc;//Адрес оконой процедуры
  wc.hInstance     := hInstance;
  wc.hIcon         := LoadIcon(hInstance, 'APP_ICON');
  wc.hCursor       := LoadCursor(0, IDC_ARROW);
  wc.hbrBackground := COLOR_WINDOW + 1;
  wc.lpszClassName := '[COLOR="Blue"]MyWndClass[/COLOR]';
  RegisterClass(wc);
 
  Wnd := CreateWindow('[COLOR="Blue"]MyWndClass[/COLOR]', ...


Через SetWindowLong
 
Код:
Wnd := CreateWindow('#32770', ...
  SetWindowLong(wnd, GWL_WNDPROC, Integer(@MyWndProc));//устанавливаем адрес оконой процедуры
29K
10 сентября 2008 года
Existor
20 / / 03.07.2008
Спасибо за пример, создать окно со своего класса у меня получилось.;)
Возникает новый вопрос.
Как в своем классе создать флаги стиля, типа BS_PUSHBUTTON - стиля класса button?
3.7K
10 сентября 2008 года
0nni
326 / / 24.06.2008
э... в смысле?
Стиль окна это 32-х разрядное число, старшие 16 одинаковые для окон всех классов и начинаются с WS_..., а младшие 16, каждый класс трактует по своему.
Если я вас правильно понял то возможно, то создайте окно класса 'Button' но без стиля WS_CHILD - получите кнопку с заголовком, если добавить WS_POPUP - то "Плавающую кнопку" кнопку...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог