Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос в пять сек) 
:(
    Опции темы
Neitron
Дата 17.10.2005, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 3.10.2005
Где: Москва

Репутация: 3
Всего: 5



Вообщем, как сделать вокруг EDIT стандартную рамку?smile
Что-то переглядел в стиле в MSDN может слепой но я так и не нашел нужный.

Извратлся аж так...
WS_CHILD|WS_VISIBLE |ES_PASSWORD|WS_BORDER|ES_LEFT,
не помоглоsmile
Получается не особо красивоsmile
Нужно просто стандартаня синяя рамка...,а у меня вообще ракмки не получается

Это сообщение отредактировал(а) Neitron - 17.10.2005, 10:25

Присоединённый файл ( Кол-во скачиваний: 27 )
Присоединённый файл  form.JPG 6,18 Kb


--------------------
Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей.
Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ
PM MAIL   Вверх
Nastya
Дата 17.10.2005, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 27.3.2002
Где: Мариуполь

Репутация: 3
Всего: 44



Посмотри стили начинающиеся с ES_, кажись где-то там


--------------------
Что бы понять рекурсию, надо понять рекурсию

"Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор
PM MAIL   Вверх
Neitron
Дата 17.10.2005, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 3.10.2005
Где: Москва

Репутация: 3
Всего: 5



Я же говорю смотрел всё)) Мож я слепой?)))
Прочел вроде описание каждого
http://msdn.microsoft.com/library/default....ntrolstyles.asp
Вроде не один не подходит.

Это сообщение отредактировал(а) Neitron - 17.10.2005, 10:37


--------------------
Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей.
Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ
PM MAIL   Вверх
Nastya
Дата 17.10.2005, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 27.3.2002
Где: Мариуполь

Репутация: 3
Всего: 44



В Упор не помню, но стиль есть. Значит так в редакторе ресурсов (создай какой-нибудь временный проект сдиалоговым окном), добавляшь Edit, ставишь галочкой нужный стиль. А потом открываешь файл ресурсво .rc и смотришь что это за стиль. Мне иногда такой приемчик помагает, при острых приступах скрироза smile


--------------------
Что бы понять рекурсию, надо понять рекурсию

"Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор
PM MAIL   Вверх
Neitron
Дата 17.10.2005, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 3.10.2005
Где: Москва

Репутация: 3
Всего: 5



Ага))) Красиво, но я работаю в Билдереsmile
Для экономии памяти главный модуль пишу на АПИ.

Это сообщение отредактировал(а) Neitron - 17.10.2005, 10:48


--------------------
Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей.
Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ
PM MAIL   Вверх
_hunter
Дата 17.10.2005, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 13
Всего: 98



тогда совсем уж страшное извращение предлагаю: создаеш проект и делаеш этот edit.
потом береш WinSight и смотриш толи handle окна ( и потом сам береш доп. прогой его стиль ) толи просто стиль. а потом начинается самое интересное -- или тупо исключающее или по всем стилям или тупо плюсуем стили, пока нужный не получим...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Neitron
Дата 17.10.2005, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 3.10.2005
Где: Москва

Репутация: 3
Всего: 5



_hunter
Гыыыыыыыыыыыыы)))) Окейsmile))) Так и сделаю.
Только мне больше нарвица прога SysTree++

Кстати см картинку, после добавления WS_BORDER появляются эти черные полурамки по краям)))))

Это сообщение отредактировал(а) Neitron - 17.10.2005, 11:03


--------------------
Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей.
Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ
PM MAIL   Вверх
Neitron
Дата 17.10.2005, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 3.10.2005
Где: Москва

Репутация: 3
Всего: 5



Цитата(_hunter @ 17.10.2005, 10:59)
тогда совсем уж страшное извращение предлагаю: создаеш проект и делаеш этот edit.
потом береш WinSight и смотриш толи handle окна ( и потом сам береш доп. прогой его стиль ) толи просто стиль. а потом начинается самое интересное -- или тупо исключающее или по всем стилям или тупо плюсуем стили, пока нужный не получим...

Вообщем я неудачник)) Я особо обламывать и извращаться не стал, а просто воспользовался GetWindowLong
НО
Получилось не иначе чем у меня... без бордюра.

Вот код. полностью.
Код

        MSG msg;
        DB = WDB;
        WNDCLASSEX wnd = {0};
        wnd.cbSize = sizeof(wnd);
        wnd.lpfnWndProc = IdentFormProc;
        wnd.hInstance = hinst;
        wnd.hbrBackground = (void *)(COLOR_BTNFACE+1);
        wnd.lpszClassName = "IdentForm";
        RegisterClassEx(&wnd);

        Form = CreateWindowEx(NULL,
                              "IdentForm",
                              "Àâòîðèçàöèÿ",
                              WS_SYSMENU,
                              GetSystemMetrics(SM_CXSCREEN)/2-100,
                              GetSystemMetrics(SM_CYSCREEN)/2-75,
                              200,
                              150,
                              NULL,
                              NULL,
                              hinst,
                              NULL);

        HandleButton = CreateWindowW(L"Button",
                                     L"Âîéòè",
                                     WS_CHILD|WS_VISIBLE|BS_FLAT,
                                     60,
                                     80,
                                     75,
                                     25,
                                     Form,
                                     NULL,
                                     hinst,
                                     NULL);

        SetWindowLong(HandleButton,GWL_USERDATA,(long)this);
        DefaultProcBut = (WNDPROC)SetWindowLong(HandleButton, GWL_WNDPROC,(long)ButProc);
        Font= CreateFont(0,
                         0,
                         0,
                         0,
                         100,
                         false,
                         false,
                         false,
                         DEFAULT_CHARSET,
                         OUT_CHARACTER_PRECIS,
                         CLIP_CHARACTER_PRECIS,
                         ANTIALIASED_QUALITY,
                         FF_DONTCARE,NULL);
        SendMessage(HandleButton,WM_SETFONT,(UINT)Font,true);
        HandleEdit = CreateWindowEx(0,
                                   "EDIT",
                                   NULL,
                                    WS_CHILD|WS_VISIBLE |ES_PASSWORD|ES_LEFT,,
                                   20,
                                   50,
                                   140,
                                   19,
                                   Form,
                                   NULL,
                                   hinst,
                                   NULL);


        while (GetMessage(&msg, (HWND) NULL, 0, 0)){
                        if (msg.message == 45057) DB->Activate = false;
                        if (msg.message==130 || DB->Activate || msg.message == 45057) break;
                        TranslateMessage(&msg);
                        DispatchMessage(&msg);
                        Sleep(0);
        }


Это сообщение отредактировал(а) Neitron - 17.10.2005, 12:02


--------------------
Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей.
Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ
PM MAIL   Вверх
p0s0l
Дата 18.10.2005, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 3
Всего: 112



Попробуй:
Код

HandleEdit = CreateWindowEx(WS_EX_CLIENTEDGE,    
                                   "EDIT",



--------------------
С уважением, г-н Посол.
PM   Вверх
GremlinProg
Дата 19.10.2005, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Чтобы сделать рамку вокруг любого контрола, нужно просто обработать два сообщения: WM_NCCALCSIZE и WM_NCPAINT
В WM_NCCALCSIZE определяешь размер и позицию рамки, а в WM_NCPAINT рисуешь её, как захочешь, хучь синюю, хуч красную...


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Neitron
Дата 19.10.2005, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 3.10.2005
Где: Москва

Репутация: 3
Всего: 5



Цитата(GremlinProg @ 19.10.2005, 09:24)
Чтобы сделать рамку вокруг любого контрола, нужно просто обработать два сообщения: WM_NCCALCSIZE и WM_NCPAINT
В WM_NCCALCSIZE определяешь размер и позицию рамки, а в WM_NCPAINT рисуешь её, как захочешь, хучь синюю, хуч красную...

Для этого нужно переопредялть обработчик Edit, я не думаю, что стоит это делать.
p0s0l
Гы)) Спасибо. Помогло. Стормознлу посмотреть Ex атрибуты.


--------------------
Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей.
Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0563 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.