L
Старт соревнований 14 сентября в 10:00 по москве
Ссылка на регистрацию в соревнованиях Kuban CTF: kubanctf.ru
Кодебай является технологическим партнером мероприятия
Конечно знаю ...компилятор Open Watcom
Все правильно , в чем считаешь удобней, это решать только Вам ...По мне очень удобный
#define _WIN32_WINNT 0x0501
#include <windows.h>
#define W 256
#define H 256
typedef unsigned long u32;
static char * g_app_class_name = "test_layer_32";
static HWND g_hWnd;
static HDC g_hDC;
static HBITMAP g_hDIB;
static u32 * p_layer;
static void layer_update( void )
{
RECT rc;
SIZE sz_dst;
POINT pt_dst;
POINT pt_src = { 0, 0 };
BLENDFUNCTION blend;
GetWindowRect( g_hWnd, &rc );
pt_dst.x = rc.left;
pt_dst.y = rc.top;
sz_dst.cx = W;
sz_dst.cy = H;
blend.BlendOp = AC_SRC_OVER;
blend.BlendFlags = 0;
blend.SourceConstantAlpha = 255;
blend.AlphaFormat = AC_SRC_ALPHA;
UpdateLayeredWindow( g_hWnd, NULL, &pt_dst, &sz_dst, g_hDC, &pt_src, 0, &blend, ULW_ALPHA );
}
static LRESULT CALLBACK layer_proc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
switch ( uMsg ) {
case WM_NCHITTEST: return HTCAPTION;
case WM_KEYDOWN:
if ( (int)wParam != VK_ESCAPE ) break;
case WM_DESTROY:
PostQuitMessage( 0 );
return 0;
}
return DefWindowProc( hWnd, uMsg, wParam, lParam );
}
int APIENTRY WinMain( HINSTANCE hInst, HINSTANCE hPInst, LPSTR lpCmdLine, int nCmdShow )
{
u32 i;
MSG msg;
WNDCLASS wc;
BITMAPINFOHEADER bi;
ZeroMemory( &wc, sizeof( WNDCLASS ) );
wc.style = CS_OWNDC;
wc.lpfnWndProc = layer_proc;
wc.hInstance = hInst;
wc.lpszClassName = g_app_class_name;
wc.hCursor = LoadCursor( NULL, IDC_ARROW );
if ( !RegisterClass( &wc ) ) return 1;
g_hWnd = CreateWindowEx( WS_EX_LAYERED | WS_EX_TOPMOST,
g_app_class_name, "layer", WS_POPUP | WS_VISIBLE | WS_SYSMENU,
(GetSystemMetrics( SM_CXSCREEN ) >> 1) - (W >> 1),
(GetSystemMetrics( SM_CYSCREEN ) >> 1) - (H >> 1),
W, H, NULL, NULL, hInst, NULL );
bi.biSize = sizeof( BITMAPINFOHEADER );
bi.biWidth = W;
bi.biHeight = -H;
bi.biPlanes = 1;
bi.biBitCount = 32;
bi.biCompression = BI_RGB;
g_hDC = CreateCompatibleDC( NULL );
g_hDIB = CreateDIBSection( g_hDC, (BITMAPINFO *)&bi, DIB_RGB_COLORS, (void **)&p_layer, NULL, 0 );
SelectObject( g_hDC, g_hDIB );
for ( i = 0; i < W * H; i++ ) {
p_layer[i] = 0x7f7f7f7f;
}
// TODO: premultiply each pixel here
layer_update();
while ( GetMessage( &msg, NULL, 0, 0 ) ) {
TranslateMessage( &msg );
DispatchMessage( &msg );
}
return 0;
}
вот это не совсем понял...а то выставлять в режиме НЮ ...
Обучение наступательной кибербезопасности в игровой форме. Начать игру!