PDA

Просмотр полной версии : Вопрос о Windows в "Свой игре"



BBB
26.02.2006, 09:29
Есть на нашем ТВ (на канале НТВ, по субботам и воскресеньям) такая интеллектуальная игра "Своя игра".

В передаче 24 февраля один из вопросов, заданных участникам, был таким:

тема "Кисти"
Для таких окон графическая библиотека "Windows" создает кисти автоматически; беспокоиться о них не нужно.

Если первую часть вопроса я, как мне кажется, понял, то "автоматическое создание" меня несколько озадачило.
Кто-нибудь понимает, что авторы вопроса имели в виду? (может, простсо я не очень хорошо знаю теорию Windows ;))

И как бы вы ответили на сам вопрос? (ответ, который огласил ведущий в передаче я знаю, но пока, с вашего позволения, его не буду раскрывать, чтобы, как говорит ведущий уже другой передачи, не оказывать влияния на мнение аудитории ;))

levi
26.02.2006, 10:15
Видимо, диалоговые окна.

BBB
26.02.2006, 10:59
Видимо, диалоговые окна.Ответ не совпадает с тем ответом, которые был оглашен в качестве правильного ;)

AiK
26.02.2006, 21:37
Учитывая уровень знаний ведущего, ответ скорее всего "графические окна" :).

BBB
27.02.2006, 01:26
Учитывая уровень знаний ведущего, ответ скорее всего "графические окна" :).Хм. Кстати, имхо, вполне хорошая версия :) Но опять не совпадает с "правильным ответом".

Кстати, какмень в ведущего тут, думаю, неуместен. Так как не он же "придумывает" правильный ответ. Ответ (вместе с вопросом) "придумывают" редакторы программы. А у ведущего он [ответ] записан вместе с вопросом в карточке.

Kolinus
27.02.2006, 11:27
дочерних ?

BBB
27.02.2006, 13:11
дочерних ?Неа :)

Хотя, надо было, наверное, сразу сказать, что когда вы узнаете "верный ответ", скорее всего, плеваться начнете... :(

Мне вообще было интересно, действительно ли для каких-то окон "Windows создает кисти автоматически" (и что авторы вопроса подразумевали под этим).
Поскольку мне казалось, что ни ни для каких окон Windows сама кистей (если речь идет о ресурсе BRUSH) не создает. Всяко (как мне кажется) надо или при создании класса окна, или при отрисовке окна вызывать CreateSolidBrush или что-нибудь подобное.

AiK
27.02.2006, 14:52
А какая разница, кто именно придумывает вопросы? Очевидно, что не эксперты :)
Я с кистями не работал, но подозреваю, что как и шрифты их "создать для окна" принципиально невозможно. Т.е. можно их создать отдельно, а потом привязать к собственному оконному классу. Соответственно "правильный" ответ - для системных окон или окон, созданных на основе системных классов :)

BBB
27.02.2006, 16:01
А какая разница, кто именно придумывает вопросы? Очевидно, что не эксперты :)Именно. Причем "неэксперты" (в данном случае) не только придумывают, но и (в общем случае) отвечают. То есть (опять же, в данном случае, для этого вопроса) получается если и не "разговор двух слепых о том, какое оно - солнце", но что-то близко к тому :)


Я с кистями не работал, но подозреваю, что как и шрифты их "создать для окна" принципиально невозможно. Т.е. можно их создать отдельно, а потом привязать к собственному оконному классу."Создать отдельно, а потом привязать к окну" - эти действия, думаю, можно назвать "создать для окна".


Соответственно "правильный" ответ - для системных окон или окон, созданных на основе системных классов :)Хм... Очень интересная версия (сам с системными окнами на таком "плотном уровне" не работал). Но, понятное дело, не совпадающая с авторским ответом ;)

В общем, даже не знаю, рассказать уже "верный ответ" или подождать (если у кого-нибудь еще есть желание потрепаться на эту тему :))?
Так как "авторский ответ", думаю, все равно никто не угадает.
Обсуждение же интересно (и затеяно), чтобы понять, а можно ли вообще как-то ответить (возможно, надо добавить: "ответить с точки зрения программиста") на этот вопрос, или же он "безнадежно кривой" :oops:

Absurd
27.02.2006, 19:07
Кисти, шрифты и битмэпы можно вообще для любых окон не создавать - винда во все контексты всегда ставит дефолтовые значения, которые кстати нужно возвращать обратно перед освобождением контекста. В win2000 GDI научилось бороться с ликами типа невозвращения дефолтовых объектов в контекст, но на win9x подобный баг приводит к мертвейшему подвисанию всей системы.

Так что ответ будет "Для всех".

AiK
28.02.2006, 00:39
Absurd, консоль - это по идее тоже окно. А определена ли для консоли кисть?

Absurd
28.02.2006, 12:29
Absurd, консоль - это по идее тоже окно. А определена ли для консоли кисть?
Контекст консольного окна можно наверно получить через FindWindow()->GetDC(). Вопрос в том, что будет рисоваться в текстовом полноэкранном режиме. Сейчас попробую.

По любому, вопрос звучал как "для окон какого типа Windows создает кисти автоматически?" а не "для окон какого типа Windows управляет всем жизненным циклом кистей автоматически?"

Дионис
01.03.2006, 15:21
BBB,
Для таких окон графическая библиотека "Windows" создает кисти автоматически; беспокоиться о них не нужно
Ни Windows, ни её графические библиотеки кистей, а равно и иных объектов, не создают. Windows использует кисти\шрифты по умолчанию для контекста устройства вывода и действительно берёт их из библиотеки.
Созданием кистей и т.д. занимается программист.

Но, учитывая то, что речь идёт о вопросе викторины, возможно, что ответ был "Для окон сообщений об ошибках". (к сожалению, эту передачу никогда не видел, на выходные работаю чаще, чем в будни, по этому могу ошибаться насчет уровня передачи)
AiK, а это не реклама?

BBB
01.03.2006, 15:33
AiK, а это не реклама?Эээ... у, вроде, замысла что-то рекламировать у меня не было, чессслово :)
А чего это может рекламировать-то? Если только не считать саму передачу, то Windows - "самую классную систему, которая автоматически создает кисти для окон" :lol:
(опять же, приведенный вопрос для круга людей этого форума скорее наоборот, антирекламой передачи может послужить :shock: )

Дионис
01.03.2006, 15:39
BBB,
не обижайся, просто вопрос по правилам подачи внешних сведений в этот форум.
Но ты не сказал, насколько близко к теме я попал. Или это "в десятку"?

Absurd
01.03.2006, 15:44
BBB, не тяни резину плиз.
Заинтриговал - так колись.

BBB
01.03.2006, 15:52
Дионис, ладно, ничего страшного :)
Нет, "авторский ответ" был другим.
В общем-то, я писал уже, что думаю, догадаться (додуматься) до того ответа, который был в карточке ведущего - нереально.

Кстати, запыл написать такую маленькую деталь. Из трех игроков той игру двое (одна из двоих - женщина) были представлены как программисты (пишу именно "представлены", потому что неясно, в какой области они программисты и вообще, может они программисты в прошлом, а сейчас уже менеджеры). И никто из троих не сделал попытки ответить.

Кстати, я вот все думаю. А ведь в самом деле, если при вызове RegisterClass передать hbrBackground как NULL (то есть НЕ СОЗДАВАТЬ кисти), то в DC этого окна будет какая-то "кисть по умолчанию"? Если да, то, выходит, действительно можно сказать, что для любых окон Windows при необходимости создает кисти автоматически?

BBB
01.03.2006, 15:55
BBB, не тяни резину плиз.
Заинтриговал - так колись.В общем, "авторский ответ" (на вопрос "Для каких окон?") был (выделить мышкой для прочтения):
Для однотонных

Дионис
01.03.2006, 16:16
BBB,
твоя передача рулит, надо будет посмотреть, ржунимагу.

BBB
01.03.2006, 16:27
Дионис, не, если посмотреть, чтобы поржать, то, все-таки, думаю, это не тот случай. На самом деле там, как правило, действительно довольно умные и вопросы, и игроки (т.е. это совсем не "Поле чудес"). Просто тут черт кого-то дернул задать вопрос из такой, скажем, специфической области :)
(Хотя, в ближайшее воскресенье как раз финал цикла будут показывать)

Дионис
01.03.2006, 16:33
BBB,
sorry, люблю такие задачки, типа "зачем вода в стакане? - за стеклом" - именно по-этому смешно и именно по этому постараюсь посмотреть

Absurd
02.03.2006, 17:35
BBB, не тяни резину плиз.
Заинтриговал - так колись.В общем, "авторский ответ" (на вопрос "Для каких окон?") был :{покоцано}
В общем, правильный ответ. Дефолтовая кисть прозрачная, и цвет фигур нарисованных ею будет совпадать с бэкграундом окна =)

BBB
03.03.2006, 10:38
В общем, правильный ответ. Дефолтовая кисть прозрачная, и цвет фигур нарисованных ею будет совпадать с бэкграундом окна =)С трудом попытался представить написанное :)
Мне в этом ответе не понравилось то, что, если я не ошибаюсь, в теории Windows нет такого ПОНЯТИЯ.

atavin-ta
03.02.2009, 12:44
Вопрос о Windows в "Свой игре"



Есть на нашем ТВ (на канале НТВ, по субботам и воскресеньям) такая интеллектуальная игра "Своя игра".

В передаче 24 февраля один из вопросов, заданных участникам, был таким:

тема "Кисти"
Для таких окон графическая библиотека "Windows" создает кисти автоматически; беспокоиться о них не нужно.

Если первую часть вопроса я, как мне кажется, понял, то "автоматическое создание" меня несколько озадачило.
Кто-нибудь понимает, что авторы вопроса имели в виду? (может, простсо я не очень хорошо знаю теорию Windows )

И как бы вы ответили на сам вопрос? (ответ, который огласил ведущий в передаче я знаю, но пока, с вашего позволения, его не буду раскрывать, чтобы, как говорит ведущий уже другой передачи, не оказывать влияния на мнение аудитории )
Если класс окна в самой оси.

atavin-ta
03.02.2009, 12:51
Кстати, я вот все думаю. А ведь в самом деле, если при вызове RegisterClass передать hbrBackground как NULL (то есть НЕ СОЗДАВАТЬ кисти), то в DC этого окна будет какая-то "кисть по умолчанию"? Если да, то, выходит, действительно можно сказать, что для любых окон Windows при необходимости создает кисти автоматически?
Бред. Кисти вообще не будет. Посмотри, как выглядит сам - словами передать не моуг.