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

Ваш аккаунт

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

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

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

Как изменить интерфейс окна?

725
03 июля 2006 года
UnErase
190 / / 08.06.2006
Все знают ICQ 5.
Такое плавное окошко, совсем не такое как блокнот и т.д. (я не считаю XP).

Ну вот! Я хочу сделать для своего приложения другой интерфейс - не такой как в винде!
Как это можно сделать, подскажите или ссылочку киньте я сам посмотрю.

Спасибо
5.9K
03 июля 2006 года
Zushenskiy
161 / / 29.06.2006
Создаешь регион
допустим такой
HRGN hRgn = CreateEllepticRegion(...);
потом вызываешь функцию
SetWindowsRgn(hWwnd,hRgn,флаги) //флагами поиграйся сам
Да и потом можещь обрезать битмаку и подставить её на окно и т.д., т.е
все ложиться на твою фантазию работы с GDI:)
725
03 июля 2006 года
UnErase
190 / / 08.06.2006
[QUOTE=Zushenskiy]Создаешь регион
допустим такой
HRGN hRgn = CreateEllepticRegion(...);
потом вызываешь функцию
SetWindowsRgn(hWwnd,hRgn,флаги) //флагами поиграйся сам
[/QUOTE]

А если серьёзно? :D
5.9K
03 июля 2006 года
Zushenskiy
161 / / 29.06.2006
Ну ты пробуй или накатать простой код
11K
03 июля 2006 года
Ireul
90 / / 15.06.2006
[QUOTE=UnErase]А если серьёзно? :D[/QUOTE]

Он серьёзно.

С помощью регионов можно создать окошко любой формы, я как-то ради прикола делал ушастое. Причём не обязательно все части должны быть увязаны, можно сделать окно "карта мира" с просвечивающим рабочим столом вместо окиянов :). А вот насчёт остальных контролов при создании своего стиля рекомендую фишку Owner Drawn. И не забудь регионы и для контролов тоже.
725
03 июля 2006 года
UnErase
190 / / 08.06.2006
[QUOTE=Ireul]Он серьёзно.

С помощью регионов можно создать окошко любой формы, я как-то ради прикола делал ушастое. Причём не обязательно все части должны быть увязаны, можно сделать окно "карта мира" с просвечивающим рабочим столом вместо окиянов :). А вот насчёт остальных контролов при создании своего стиля рекомендую фишку Owner Drawn. И не забудь регионы и для контролов тоже.[/QUOTE]

Форму я тоже обрезал. Мне надо было именно другой дизайн формы. Я подумал - может есть какая-нибудь тулса для этого, вот и спросил.

А этим способом наверное придется свою компоненту писать?
Или может я ошибаюсь?
А можно ссылочку на Owner Drawn?
Или на словах, если это не долго объяснять! :D

Спасибо!
725
03 июля 2006 года
UnErase
190 / / 08.06.2006
[QUOTE=Zushenskiy]Ну ты пробуй или накатать простой код[/QUOTE]

Я попробовал... (у мне я VS2005) и когда я указал функции SetWindowRgn 3 параметра, компилятор сказал, что 3 параметра много - надо 2.
Почему?
Даже в MSDN`e смотрел прототип этой функции, там было написано 3 параметра: хэндл, HRGN и редроу.
11K
03 июля 2006 года
Ireul
90 / / 15.06.2006
[QUOTE=UnErase]Форму я тоже обрезал. Мне надо было именно другой дизайн формы. Я подумал - может есть какая-нибудь тулса для этого, вот и спросил.

А этим способом наверное придется свою компоненту писать?
Или может я ошибаюсь?
А можно ссылочку на Owner Drawn?
Или на словах, если это не долго объяснять! :D

Спасибо![/QUOTE]

*_OWNERDRAW - стиль для контролов (BS_OWNERDRAW,LBS_OWNERDRAWFIXED,LBS_OWNERDRAWVARIABLE к примеру), при котором родительское окно получает WM_DRAWITEM(иногда вместе с WM_MEASUREITEM) вместо обработки самим контролом сообщения WM_PAINT. Рисование осуществляет родительское окно - твоё окно в общем случае. А для кустомного стиля тебе в любом случае стандартные окна, и соответственно их стили, не годятся.

Цитата:

Я попробовал... (у мне я VS2005) и когда я указал функции SetWindowRgn 3 параметра, компилятор сказал, что 3 параметра много - надо 2.
Почему?
Даже в MSDN`e смотрел прототип этой функции, там было написано 3 параметра: хэндл, HRGN и редроу.



Код в студию.

725
04 июля 2006 года
UnErase
190 / / 08.06.2006
[QUOTE=Ireul]Код в студию.[/QUOTE]
Вот код:
 
Код:
HRGN hRgn;
    hRgn = CreateEllipticRgn(10,10,10,10);
    SetWindowRgn(this, hRgn, TRUE);


this - это дескриптор диалога.

Пишет ошибку: Error 1 error C2660: 'CWnd::SetWindowRgn' : function does not take 3 arguments
Тобишь эта функция не может принимать 3 аргумента. Вообщем ХЗ.
5.9K
04 июля 2006 года
Zushenskiy
161 / / 29.06.2006
Я тебе дал WinApi функцию а ты пытаешся её использовать как метод класса CWnd, конечно будет ругать этот меьтод будет использовать hwnd определённый в классе CWnd
11K
04 июля 2006 года
Ireul
90 / / 15.06.2006
[QUOTE=Zushenskiy]Я тебе дал WinApi функцию а ты пытаешся её использовать как метод класса CWnd, конечно будет ругать этот меьтод будет использовать hwnd определённый в классе CWnd[/QUOTE]

Русский язык: не аттестован.

Он пытался сказать что как метод Cwnd, SetWindowRgn не требует HWND.
725
05 июля 2006 года
UnErase
190 / / 08.06.2006
[QUOTE=Zushenskiy]Я тебе дал WinApi функцию а ты пытаешся её использовать как метод класса CWnd, конечно будет ругать этот меьтод будет использовать hwnd определённый в классе CWnd[/QUOTE]
[QUOTE=Ireul]Он пытался сказать что как метод Cwnd, SetWindowRgn не требует HWND.[/QUOTE]
Точно!!!
Как MessageBox...

Спасибо!
725
05 июля 2006 года
UnErase
190 / / 08.06.2006
А как тогда получить Handle другого диалога из текущего диалога?
Кроме как: поиск по заголовку и т.д...
5.9K
05 июля 2006 года
Zushenskiy
161 / / 29.06.2006
если другой диалог у тебя является дочерним
то
HWND GetDlgItem(HWND, int);
возвращает хендл елемента
принимает хендл родителя и ID дочернего елемента

либо FindFindow используй если ничего не знаешь про дилог
725
06 июля 2006 года
UnErase
190 / / 08.06.2006
Спасибо! :D
16K
19 июля 2006 года
Killo
11 / / 19.07.2006
Ребята, а как на созданное нестандартное окно прилипить такую же нестандартную кнопку?
240
19 июля 2006 года
aks
2.5K / / 14.07.2006
Так же как делал окно. )
Тоесть создай свой класс кнопки отнаследованный например от MFCшного или WTLного CButton. И рисуй кнопку вручную так же как и окно на сколько фантазии хватит.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог