|
|
|
Где WS_BORDER ?
|
|||
|---|---|---|---|
|
#18+
Создаю окно: Код: plaintext 1. 2. затем, сразу же смотрю: Код: plaintext так нет в dwStyle стиля WS_BORDER - все остальные есть. Конечно, CreateWindowEx порождает различные сообщения, и при их обработке теоретически можно снять этот стиль. Но я смотрел внимательно код - и не заметил снятия. Может быть я плохо смотрел, но я в WM_PAINT также пишу Код: plaintext смотрю Код: plaintext 1. И еще, если я добавляю стиль WS_EX_CLIENTEDGE, то все становится на свои места. Стиль WS_BORDER нигде не пропадает, и конечно, отрисовывается трехмерная рамка. Вопрос: почему я не вижу стиля WS_BORDER, а рамка отрисовывается ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2004, 13:14 |
|
||
|
Где WS_BORDER ?
|
|||
|---|---|---|---|
|
#18+
хм... ну может быть так: за трёхмерную рамку рамку отвечает тока WS_EX_CLIENTEDGE. По умолчанию, едит 3-х мерный и выставит ему простой бордер нельзя. Его, видимо, CreateWindowEx снимает, так как не хочет рисовать 2 бордера сразу, один на клиентедж, второй на бордер (скорее всего они просто занимают одно и тоже место в контроле). Не факт, что это так, но возможно. Чтобы получить WS_BORDER надо создать едит через CreateWindow, тогда всё будет ок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2004, 07:46 |
|
||
|
Где WS_BORDER ?
|
|||
|---|---|---|---|
|
#18+
авторза трёхмерную рамку рамку отвечает тока WS_EX_CLIENTEDGE. Ну с этим я согласен. авторПо умолчанию, едит 3-х мерный и выставит ему простой бордер нельзя. - а эту фразу я не понял. По умолчанию, если флага WS_BORDER не указан, то контрол отрисовывается вообще без рамки, а если WS_BORDER стоит, то с рамкой. Ну совершенно не понятно, как Windows различает эти два варианта, если не хранит WS_BORDER. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2004, 10:51 |
|
||
|
Где WS_BORDER ?
|
|||
|---|---|---|---|
|
#18+
да, я там немного нагнал. по умолчанию трёхмерный, если он в шаблоне ресурса диалога если руками - то 2-хмерный, даже через CreateWindowEx Вообще интересно, если WS_BORDER поставить, он есть, если его не поставить, то его нет. А вот если его потом пытаться поменять, то стиль меняется(GetStyle) а отрисовка нет. И в ту и в другую сторону. WS_BORDER -> ~WS_BORDER и ~WS_BORDER -> WS_BORDER и с WS_EX_CLIENTEDGE та же фигня... стиль меняется, а бордер или отсутствие бордера остаётся. с невидимостью флага - скорее всего какая-то защита от чего-то. Проверяется это флаг тока при создании объекта и потом признак какого-нить бордера держится внутри. И эта фигня с Win32API так же как с MFC (правда, под Win32API я тока WS_EX_CLIENTEDGE проверял) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2004, 12:00 |
|
||
|
Где WS_BORDER ?
|
|||
|---|---|---|---|
|
#18+
Сёдня узнал вообще интересные факты о Едитах (пора топик отдельный заводить ) Оказывается. Едит можно смело параллельно использовать из двух приложений. (у меня есть прикладуха, которая по хэндлам рулит окнами всячески) Так вот. Запускаем прогу с едитом(MFC-шную, например). Набираем чё-нить в едите, например "ууу". Хорошо. Достаём спай, ищем едит, видим, в окне - "". Ладно, берём мою прогу, говорим ей прописать в этот едит например "еее". Прописали. Рефрешим спай. Смотрим спаем едит - "еее"! Вызываем в MFC-проге DDX какой-нить. Получаем "ууу"! И это не только в MFC. Это и в просто 32Апях. Причём и нотивикации об апдейтах и ченджах посылал родителю - бесполезно. Как "ууу" было, так и осталось... У кого какие мысли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2004, 15:19 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=32487985&tid=2035103]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
45ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
41ms |
get tp. blocked users: |
2ms |
| others: | 226ms |
| total: | 350ms |

| 0 / 0 |
