"заморозка" окна?
Select messages from
# through # FAQ
[/[Print]\]

Total Commander -> Написание плагинов для Total Commander

#1: "заморозка" окна? Author: Alextp PostPosted: Thu Feb 16, 2012 23:46
    —
Как сделать для окна своей программы эффект "заморозки"?
http://forum.wincmd.ru/viewpost.php?p=85003

#2:  Author: MVVLocation: Ростов-Дон PostPosted: Fri Feb 17, 2012 09:56
    —
Ну так читай же тему после этого сообщения. Smile

Code:
locktc=msg($0B, #1-0 > 0 ? 0 : 1, 0)            ; Disable/enable TC window redraw

Комментарии относительно синтаксиса:
Code:
; msg(<umsg>, <wparam>, <lparam>, [<post>])

Code:
WM_SETREDRAW=$0B      ; Enables/disables window redraw


Last edited by MVV on Fri Feb 17, 2012 09:57; edited 1 time in total

#3:  Author: VolniyLocation: Местный PostPosted: Fri Feb 17, 2012 09:57
    —
Code:
BOOL LockWindowUpdate(
  __in  HWND hWndLock
);


http://msdn.microsoft.com/en-us/library/dd145034.aspx

#4:  Author: MVVLocation: Ростов-Дон PostPosted: Fri Feb 17, 2012 09:58
    —
Volniy wrote:
Code:
BOOL LockWindowUpdate(
  __in  HWND hWndLock
);


http://msdn.microsoft.com/en-us/library/dd145034.aspx

Её не рекомендуется использовать, и об этом написано в документации:
Quote:
The purpose of the LockWindowUpdate function is to permit drag/drop feedback to be drawn over a window without interference from the window itself. The intent is that the window is locked when feedback is drawn and unlocked when feedback is complete. LockWindowUpdate is not intended for general-purpose suppression of window redraw. Use the WM_SETREDRAW message to disable redrawing of a particular window.

Там целая куча тонкостей с LockWindowUpdate, одна в том, что только одно единственное окно в конкретный момент времени может быть заблокировано с её помощью.

#5:  Author: Alextp PostPosted: Fri Feb 17, 2012 12:39
    —
Мне не нужна TCFS2 - не стал читать тему. Мне нужно как раз WM_SETREDRAW

#6:  Author: MVVLocation: Ростов-Дон PostPosted: Fri Feb 17, 2012 13:10
    —
А мне бы на твоём месте стало интересно посмотреть, чем закончилось обсуждение этой хотелки... Тут-то и узнал бы про WM_SETREDRAW.

#7:  Author: Alextp PostPosted: Fri Feb 17, 2012 22:47
    —
А как ты перерисовываешь окно Тотала? что-то WM_SETREDRAW с 1 не рисует.

#8:  Author: MVVLocation: Ростов-Дон PostPosted: Sat Feb 18, 2012 19:56
    —
И не должно.

В той же справке по сообщению написано, как перерисовывать.
Quote:
This message can be useful if an application must add several items to a list box. The application can call this message with wParam set to FALSE, add the items, and then call the message again with wParam set to TRUE. Finally, the application can call RedrawWindow(hWnd, NULL, NULL, RDW_ERASE | RDW_FRAME | RDW_INVALIDATE | RDW_ALLCHILDREN) to cause the list box to be repainted.


А функция redraw() в TCFS2 делает вот что:
Code:
SetWindowPos(options.tchwnd, 0, 0, 0, 0, 0, SWP_FRAMECHANGED|SWP_NOCOPYBITS|SWP_NOMOVE|SWP_NOZORDER|SWP_NOSIZE);



Total Commander -> Написание плагинов для Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Page 1 of 1

Powered by phpBB © 2001, 2005 phpBB Group