В общем не знаю как реализовать движение стрелок, у меня получается что стрелки вы водятся на не исчезают при изменение координат. Как сделать так что бы казалось что стрелка движется ? И что бы когда часы были закрыты другим окном они не сбивались ?
Вот сам проект. http://rghost.ru/1594117
А вот код СPP:
Код: Выделить всё
// Clock-3.cpp : Defines the entry point for the application.
//
#include "stdafx.h"
#include "Clock-3.h"
#include <math.h>
#include <conio.h>
#include <windows.h>
#define MAX_LOADSTRING 100
.............
............
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
HDC hdcBits;
switch (message)
{
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// TODO: Add any drawing code here...
hdcBits=::CreateCompatibleDC(hdc);
SelectObject(hdcBits, maskBitmap);
BitBlt(hdc, 0, 0, 280, 280, hdcBits, 0, 0, SRCCOPY);
// SetWindowLong(hWnd, GWL_EXSTYLE, GetWindowLong(hWnd, GWL_EXSTYLE) | WS_EX_LAYERED);
// SetLayeredWindowAttributes(hWnd, 0, 220, LWA_ALPHA);
{ // секундная стрелка
HPEN hpen,hPenOld;
hpen = CreatePen(PS_SOLID,2,RGB(255,100,100));
hPenOld = (HPEN)SelectObject(hdc,hpen);
MoveToEx(hdc,119,119,NULL);
LineTo(hdc,119,35);
SelectObject(hdc,hPenOld);
DeleteObject(hpen);
}
{ // минутная стрелка
HPEN hpen,hPenOld;
hpen = CreatePen(PS_SOLID,3,RGB(80,80,80));
hPenOld = (HPEN)SelectObject(hdc,hpen);
MoveToEx(hdc,119,119,NULL);
LineTo(hdc,155,65);
SelectObject(hdc,hPenOld);
DeleteObject(hpen);
}
{ // заглушка в центре циферблата
HPEN hpen,hPenOld;
hpen = CreatePen(PS_SOLID,3,RGB(170,170,170));
hPenOld = (HPEN)SelectObject(hdc,hpen);
HBRUSH hBrush,hBrushOld;
hBrush = CreateSolidBrush(RGB(80,0,0));
hBrushOld = (HBRUSH)SelectObject(hdc,hBrush);
Ellipse(hdc,113,113,125,125);
SelectObject(hdc,hBrushOld);
DeleteObject(hBrush);
SelectObject(hdc,hPenOld);
DeleteObject(hpen);
return WM_PAINT;
}
DeleteDC(hdcBits);
EndPaint(hWnd, &ps);
break;
case WM_NCHITTEST:
{
return HTCAPTION;
}
case WM_NCRBUTTONUP:
{
PostQuitMessage(0);
}
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
Спасибо за ответ !