
Другие языки программирования и технологии
- Как выглядят окна Windows с обратной стороны?

Вот так:
.

.

Евгений Фурдыко
скорее так.

Вот так:
#include
#include
#include
LRESULT CALLBACK WindowProc(HWND, UINT, WPARAM, LPARAM);
INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR str, int cmdShow)
{
HWND hWnd; //discriptor okna
MSG msg; //soobschenie
WNDCLASSEX wce;
wce.cbSize=sizeof(wce);
wce.style=CS_HREDRAW | CS_VREDRAW;
wce.hInstance=hInst;
wce.hIcon=LoadIcon(NULL, IDI_APPLICATION);
wce.hCursor=LoadCursor(NULL, IDC_HAND);
wce.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
wce.lpszMenuName=NULL;
wce.hIconSm=NULL;
wce.lpszClassName=L"myclass";
wce.lpfnWndProc=WindowProc;
wce.cbWndExtra=0;
wce.cbClsExtra=0;
if(!RegisterClassEx(&wce))
return NULL;
hWnd=CreateWindowEx(0, L"myclass", L"MAE OKNO", WS_OVERLAPPEDWINDOW, 100, 100, 700, 400, NULL, 0, hInst, 0);
ShowWindow(hWnd, SW_SHOW);
UpdateWindow(hWnd);
while (GetMessage(&msg, hWnd, 0, 0)) //WM_QUIT
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WindowProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
RECT rectW, rectC;
WCHAR str[100];
static int dx=1, dy=1, width=GetSystemMetrics(SM_CXSCREEN), height=GetSystemMetrics(SM_CYSCREEN);
switch (msg)
{
case WM_DESTROY:
PostQuitMessage(0); //GetWindowRect, GetClientRect
break;
case WM_MOUSEMOVE:
wsprintf(str, L"x: %d y: %d", GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam));
SetWindowText(hWnd, str);
break;
case WM_LBUTTONDOWN:
GetWindowRect(hWnd, &rectW);
GetClientRect(hWnd, &rectC);
wsprintf(str, L"x: %d y: %d", rectW.left, rectW.right);
MessageBox(hWnd, str, L"Размeр окна", MB_OK);
break;
/*case WM_RBUTTONDOWN:
GetWindowRect(hWnd, &rectW);
MoveWindow(hWnd, 100, 100, rectW.right+=50, rectW.bottom+=50, msg);
if(NULL!=lParam&MK_SHIFT)
MoveWindow(hWnd, 100, 100, rectW.right-=50, rectW.bottom-=50, msg);
break;*/
case WM_KEYDOWN:
if(wParam==VK_RETURN)
SetTimer(hWnd, 1, 5, NULL);
else if(wParam==VK_ESCAPE)
KillTimer(hWnd, 1);
break;
case WM_TIMER:
GetWindowRect(hWnd, &rectC); //GetCursorPos()
if(rectC.left<=0 || rectC.right>=width) dx=-dx;
if(rectC.top<=0 || rectC.bottom>=height) dy=-dy;
MoveWindow(hWnd, rectC.bottom+dx*2, rectC.top+dy*2, rectC.left-rectC.right, rectC.top-rectC.bottom, true);
break;
default:
return DefWindowProc(hWnd, msg, wParam, lParam);
}
return 0;
}
#include
#include
#include
LRESULT CALLBACK WindowProc(HWND, UINT, WPARAM, LPARAM);
INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR str, int cmdShow)
{
HWND hWnd; //discriptor okna
MSG msg; //soobschenie
WNDCLASSEX wce;
wce.cbSize=sizeof(wce);
wce.style=CS_HREDRAW | CS_VREDRAW;
wce.hInstance=hInst;
wce.hIcon=LoadIcon(NULL, IDI_APPLICATION);
wce.hCursor=LoadCursor(NULL, IDC_HAND);
wce.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
wce.lpszMenuName=NULL;
wce.hIconSm=NULL;
wce.lpszClassName=L"myclass";
wce.lpfnWndProc=WindowProc;
wce.cbWndExtra=0;
wce.cbClsExtra=0;
if(!RegisterClassEx(&wce))
return NULL;
hWnd=CreateWindowEx(0, L"myclass", L"MAE OKNO", WS_OVERLAPPEDWINDOW, 100, 100, 700, 400, NULL, 0, hInst, 0);
ShowWindow(hWnd, SW_SHOW);
UpdateWindow(hWnd);
while (GetMessage(&msg, hWnd, 0, 0)) //WM_QUIT
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WindowProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
RECT rectW, rectC;
WCHAR str[100];
static int dx=1, dy=1, width=GetSystemMetrics(SM_CXSCREEN), height=GetSystemMetrics(SM_CYSCREEN);
switch (msg)
{
case WM_DESTROY:
PostQuitMessage(0); //GetWindowRect, GetClientRect
break;
case WM_MOUSEMOVE:
wsprintf(str, L"x: %d y: %d", GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam));
SetWindowText(hWnd, str);
break;
case WM_LBUTTONDOWN:
GetWindowRect(hWnd, &rectW);
GetClientRect(hWnd, &rectC);
wsprintf(str, L"x: %d y: %d", rectW.left, rectW.right);
MessageBox(hWnd, str, L"Размeр окна", MB_OK);
break;
/*case WM_RBUTTONDOWN:
GetWindowRect(hWnd, &rectW);
MoveWindow(hWnd, 100, 100, rectW.right+=50, rectW.bottom+=50, msg);
if(NULL!=lParam&MK_SHIFT)
MoveWindow(hWnd, 100, 100, rectW.right-=50, rectW.bottom-=50, msg);
break;*/
case WM_KEYDOWN:
if(wParam==VK_RETURN)
SetTimer(hWnd, 1, 5, NULL);
else if(wParam==VK_ESCAPE)
KillTimer(hWnd, 1);
break;
case WM_TIMER:
GetWindowRect(hWnd, &rectC); //GetCursorPos()
if(rectC.left<=0 || rectC.right>=width) dx=-dx;
if(rectC.top<=0 || rectC.bottom>=height) dy=-dy;
MoveWindow(hWnd, rectC.bottom+dx*2, rectC.top+dy*2, rectC.left-rectC.right, rectC.top-rectC.bottom, true);
break;
default:
return DefWindowProc(hWnd, msg, wParam, lParam);
}
return 0;
}
Рома : )
Летающее окошко, прикольно. Можно было бы что-нть ещё нарисовать в WM_PAINT, а то пустое чёрное окно совсем.
Похожие вопросы
- Паскаль. Анимация. Как по нажатию на кнопку заставить машину ехать в обратную сторону?
- СКАЧАЛ WiNdOwS sP3 original,записал, а при перезагрузке ниче невыбивает( окно там гдк форматировать) ПоМоГиТе
- при загрузке компьютера после приветсвия выходит окно и там написанно "windows не удалось найти " csrcs.exe "
- Генератор глюков для Windows XP
- Помогите как мне установить Windows?
- Задание 1 Ответьте на вопросы. Какие возможности предоставляет пользователям ОС Windows 7?
- СИНИЙ ЭКРАН НА WINDOWS. Как от него избавиться???
- как в C# используя Windows Forms Application, запомнить положение, рабочего окна приложения, на рабочем столе?
- Помогите разблокировать Windows. На экране окно, положить денег на номер..
- Как правильно создать и использовать radiobutton-ы на win api c++ ?Можно ли из программы узнать версию Windows ?