BitBlt для скрытого, свернутого или просто закрытого другим окна

Тема в разделе "WASM.WIN32", создана пользователем Xerx, 6 июл 2007.

  1. Xerx

    Xerx Алексей

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    528
    Адрес:
    Russia
    Понятно...

    А есть еще у кого какие-нибудь мысли по этому поводу?
     
  2. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Xerx
    Была одна. Странно только, что вы все-таки решили не использовать SetWindowPlacement, на который, как я упоминал, не влияет эффект развертывание/затемнение. Именно с этой функцией очень удобно делать вот что (код на VB, но надеюсь этот язык понятен всем не хуже русского):
    Код (Text):
    1. Dim NHWND As Long, WndP As WINDOWPLACEMENT, _
    2.      RectBuf As RECT
    3.  Pic1.Cls
    4.  
    5.  NHWND = FindWindow(vbNullString, "Безымянный - Блокнот")
    6.  GetWindowPlacement NHWND, WndP
    7.  
    8.  RectBuf = WndP.rcNormalPosition
    9.  With WndP.rcNormalPosition
    10.   .Top = 1024
    11.   .Bottom = 1024 + RectBuf.Bottom - RectBuf.Top
    12.  End With
    13.  
    14.  WndP.showCmd = SW_RESTORE
    15.  SetWindowPlacement NHWND, WndP
    16.  
    17.  PrintWindow NHWND, Pic1.hdc, 0
    18.  
    19.  WndP.showCmd = SW_SHOWMINNOACTIVE
    20.  SetWindowPlacement NHWND, WndP
    21.  
    22.  WndP.rcNormalPosition = RectBuf
    23.  SetWindowPlacement NHWND, WndP
    24.  
    25.  Pic1.Refresh
    Работает без моргания окна.
    Небольшое пояснение: меняем координаты на координаты "под рабочим столом", восстанавливаем окно "под рабочим столом", фотографируем, потом сворачиваем, потом возвращаем координаты нормального состояния окна (окно оставляем свернутым).
     
  3. Xerx

    Xerx Алексей

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    528
    Адрес:
    Russia
    l_inc
    Вообще-то писалось как раз о ПРОБЛЕМАХ использования:
    Поэтому и не пробовал даже. Но сейчас попробую и отпишу, что получилось.
     
  4. Xerx

    Xerx Алексей

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    528
    Адрес:
    Russia
    И еще. Одна проблема - если спрятать кнопку приложения с панели задач через ITaskBarList, то при получении этим приложением фокуса кнопка появляется обратно. Что не так? Система сама проверяет наличие кнопки на панели задач исходя из какого-то стиля окна или еще как-то? Как не дать системе добавлять кнопку?
     
  5. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Убрать WS_EX_APPWINDOW?
     
  6. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Xerx
    Я написал, что эффект мелькания будет тот же, но кроме того упоминал, что
    А так как Вы верно заметили:
    , я и удивляюсь, почему Вы все-таки решили в пользу ShowWindow.
     
  7. Xerx

    Xerx Алексей

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    528
    Адрес:
    Russia
    IceStudent
    Не. Пробовал, не получается. Но я сделал в лоб: задаю окну в качестве родителя окно "Shell_TrayWnd". И все прекрасно работает. Правда скрытого приложения нет ни в Диспетчере задач, ни при переключении по Alt+Tab... Но это уже мелочи... :derisive: