WinApi окна, диалоги. Различия.

Тема в разделе "WASM.BEGINNERS", создана пользователем SupperBegginner, 27 июл 2006.

  1. SupperBegginner

    SupperBegginner New Member

    Публикаций:
    0
    Регистрация:
    27 июл 2006
    Сообщения:
    2
    Добрый день.

    Такая ситуация - пишу на BuilderC++, поэтому основы Си знаю. Сейчас, от нефиг делать, решил попробовать писать по Windows на ассемблере (только не спрашивайте, зачем мне это нужно =) это... ассемблер тоже знаю - под дос писал.... Посему пару вопросов, именно по WinApi.

    1. Чем отличаются окна от диалоговых окон? Серьезно, не понимаю. Вот когда в Builderе создаешь обычную форму - это чего - окно или диалог? Если окно - то как "оно" умудряется туда элементы (кнопочки, например) запихивать? Если диалог - см. вопрос два.

    2. Конкретный пример: надо было нарисовать НУ ОЧЕНЬ простую программу. Нафига мне билдер? Взял ассемблер, нарисовал диалог, в нем стандартный Edit. Уперся в то, что винда НЕ ПОСЫЛАЕТ сообщение WM_CHAR моему окну, хотя содержимое Edit-а меняется. Как отловить момент изменения текста? Ну бог с ним, решил задачу через одно место: создал окно (не диалог), на нем втупую, вручную, через контекст нарисовал линии в виде edit-а, все изменения оного рисую вручную. Теперь проблема в том, что винда не знает, что я что-то рисовал, поэтому не всегда мне посылает сообщение WM_PAINT, когда надо перерисовать элементы (нет, я и с этим справился, но хочу узнать как НАДО действовать в таких случаях).

    3. Есть какой-нить простой способ создать "красивое окно"? Т.е. использовать JPEG для оформления? А то BMP такой размер имеют, что вся прелесть написания на ассемблере пропадает =(

    Сцылочки на документацию, примеры приветствуются =) Примеры с этого сайта, конечно, скачал, сегодня буду мучить их =)
     
  2. Aquila

    Aquila Самурай дзена

    Публикаций:
    0
    Регистрация:
    30 авг 2002
    Сообщения:
    1.467
    Адрес:
    Russia, Moscow
    http://www.wasm.ru/publist.php?list=1 Читай туториалы Ицзелиона.

    В принципе, можно, если использовать GDI+. Но я пока не видел толковых док по нему в применении к Ассемблеру/Си (В SDK подробно рассматривается C++-обвёртка для этой библиотеки).
     
  3. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    1. Диалог - это специальное окно, которое создаёт система на основе скрипта - ресурса диалога. Борланд придумали свой формат описания окна.
    2. Диалоговая функция обработки сообщений много чего не видит, но можно выбрать, что нужно - смотри справку по WM_GETDLGCODE. Также глянь EN_CHANGE конкретно по эдиту.
    3. Через регионы. А по JPEG - есть библиотеки, сорцы.
     
  4. SupperBegginner

    SupperBegginner New Member

    Публикаций:
    0
    Регистрация:
    27 июл 2006
    Сообщения:
    2
    Aquila, благодарю, сейчас займусь. При первом просмотре документации почему-то пропустил =(

    IceStudent
    3. Понятное дело, но, в чем дело... Если все через регионы рисовать - то по сумме не сильно меньше BMP получится... Думал, может, есть какая готовая функция WinApi-шная, для преобразования jpeg в bmp (чего, даже помечтать нельзя? =)

    В любом случае, благодарю всех =)
     
  5. asmfan

    asmfan New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    1.004
    Адрес:
    Abaddon
    1. Некоторыми сообщениями (они разные для обычных окон и диалоговых)
    Степенями подальности (чти МСДН)
    3. Ну действительно существуют библиотеки (статические тоже) чтобы с такими вещами работать... По-моему, в МАСМ32 пакете есть пример такого окна...с жпегом в ресурсах...
     
  6. kero

    kero Модератор SOURCES & 2LZ

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    А еще есть UpdateLayeredWindow:

    http://chime.student.utwente.nl/qweerdy/ppa.zip (Per-pixel Alpha values)
    http://chime.student.utwente.nl/qweerdy/scrollblend.zip
    http://chime.student.utwente.nl/qweerdy/pngskin.zip
    http://chime.student.utwente.nl/qweerdy/pngskin3.zip
    http://chime.student.utwente.nl/qweerdy/pngskin4.zip
    http://chime.student.utwente.nl/qweerdy/pngskin5.zip

    Правда, автор этих красивых примеров просмотрел утечку GDI, но исходники приложены.
     
  7. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    SupperBegginner
    Есть, конечно, в OLE COM, компонент для загрузки JPG, GIF, WMF и т.д. Стандартные контролы в винде используют этот компонент, так что и его можно считать относительно стандартным. Пример использования есть в masm32\m32lib\BitmapFrom*.asm.