Как работать с WM_PRINT

Тема в разделе "WASM.BEGINNERS", создана пользователем Delphi, 17 ноя 2006.

  1. Delphi

    Delphi New Member

    Публикаций:
    0
    Регистрация:
    15 май 2006
    Сообщения:
    26
    Адрес:
    Russia
    Здравствуйте.
    Подскажите как работать с WM_PRINT, WM_PRINTCLIENT
    Желательно с примером желательно на С++ или Pascal

    Только не отсылайте к Фен Юаню :))
     
  2. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Тут примеры.
     
  3. kero

    kero Модератор SOURCES & 2LZ Команда форума

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    Delphi:
    >Как работать с WM_PRINT [...]
    >Только не отсылайте к Фен Юаню :))

    Обязательно отошлю:
    "Window Contents Capturing using WM_PRINT Message"
    http://www.fengyuan.com/article/wmprint.html

    А вы боялись, что к "Windows Graphics Programming" ? :)
     
  4. zxm

    zxm New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2006
    Сообщения:
    71
    Можете уточнить под какими виндами это работает? Проверяли под 2000/2003/XP ?
     
  5. Quantum

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

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    zxm
    Это зависит не от винды, а от того, обрабатывается ли приложением сообщение WM_PRINTCLIENT или нет. Само сообщение можно посылать хоть в 95й винде.

    ЗЫ: Если вопрос относился к перехвату BeginPaint в статье Feng Yuan, то там в конце написано "Only tested on Windows 2000 machine".
     
  6. zxm

    zxm New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2006
    Сообщения:
    71
    А окна обычно обрабатывают это сообщение? Сформулирую вопрос иначе: Мож ли как-то гарантировано получить изображение спрятаного окна в win 200/xp/2003 ?
     
  7. kero

    kero Модератор SOURCES & 2LZ Команда форума

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    Для XP: http://www.catch22.net/source/zips/wincap3.zip
    "Howto capture the contents of a Hidden Window", "based on the work by Feng Yuan".

    Однако тоже не без проблем...

    >А окна обычно обрабатывают это сообщение?

    Вам надо выработать рефлекс на слово "сообщение": хвататься за MSDN и Spy++ :)
    Вот что вы могли бы и сами извлечь из MSDN:

    WM_PRINT -> Remarks ->
    >The DefWindowProc function processes this message based on which drawing option is specified: [...]
    > if PRF_CLIENT is specified, send the window a WM_PRINTCLIENT message

    => WM_PRINTCLIENT -> Remarks ->
    >Windows that can be used anywhere in the system, such as controls, should process this message.
    >It is probably worthwhile for other windows to process this message as well because it is relatively easy to implement.

    >Сформулирую вопрос иначе: Мож ли как-то гарантировано получить изображение спрятаного окна в win 200/xp/2003 ?

    В общем случае на нынешних виндах - боюсь, не мож.
     
  8. Quantum

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

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    zxm
    Крайне редко. Если используется функция AnimateWindow, то это сообщение необходимо обрабатывать.