|
|
|
Окно мерцает чернотой, как избавиться? НУЖНА ПОМОЩЬ!!!
|
|||
|---|---|---|---|
|
#18+
При создании окна с использованием прозрачности происходит нехорошая вещь. Окно сначала отрисовывается черным, затем нормальным фоном, в итоге происходит неприятное смаргивание. Вот примерчик Работает не ниже Win2k #include <windows.h> LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM ); int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow ) { static char szAppName[] = "HelloWin" ; HWND hwnd ; MSG msg ; WNDCLASSEX wndclass ; wndclass.cbSize = sizeof( wndclass ); wndclass.style = CS_HREDRAW | CS_VREDRAW; wndclass.lpfnWndProc = WndProc; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; wndclass.hInstance = hInstance; wndclass.hIcon = LoadIcon( NULL, IDI_APPLICATION ); wndclass.hCursor = LoadCursor( NULL, IDC_ARROW ); wndclass.hbrBackground = (HBRUSH) GetSysColorBrush( COLOR_BTNFACE ); wndclass.lpszMenuName = NULL; wndclass.lpszClassName = szAppName; wndclass.hIconSm = LoadIcon( NULL, IDI_APPLICATION ); RegisterClassEx( &wndclass ); hwnd = CreateWindow( szAppName, "The Hello Program", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL ); const int WS_EX_LAYERED = 0x00080000; typedef BOOL (WINAPI *PFN)( HWND hWnd, COLORREF crKey, BYTE bAlpha, DWORD dwFlags ); static HMODULE hm = GetModuleHandle( "USER32.DLL" ); static PFN pfn = (PFN)GetProcAddress( hm, "SetLayeredWindowAttributes" ); if( pfn ) { const int LWA_COLORKEY = 0x00000001; SetWindowLong( hwnd,GWL_EXSTYLE, GetWindowLong( hwnd,GWL_EXSTYLE)|WS_EX_LAYERED ); pfn( hwnd, GetSysColor( COLOR_BTNFACE ), 0, LWA_COLORKEY ); //UpdateWindow( hwnd ); } ShowWindow( hwnd, iCmdShow ); UpdateWindow( hwnd ); while( GetMessage (&msg, NULL, 0, 0) ) { TranslateMessage (&msg) ; DispatchMessage (&msg) ; } return (int)msg.wParam ; } LRESULT CALLBACK WndProc( HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam ) { switch (iMsg) { case WM_DESTROY: PostQuitMessage( 0 ); return 0; } return DefWindowProc( hwnd, iMsg, wParam, lParam ); } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2006, 09:56 |
|
||
|
Окно мерцает чернотой, как избавиться? НУЖНА ПОМОЩЬ!!!
|
|||
|---|---|---|---|
|
#18+
Ну видимо, надо плотно поработать с расширенными стилями. Да и вообще, зачем сегодня кодировать на голом WinAPI? Вопросы будут возникать по каждой мелочи (ответ всегда можно найти в MSDN, правда не быстро). Посмотри в исходниках (VCL или MFC) как у них реализовано, лучше прямо воспользуйся их классами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2006, 11:45 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34074259&tid=2030219]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
438ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 773ms |

| 0 / 0 |
