Skip to content

Commit c679ac9

Browse files
committed
Initial Commit
0 parents  commit c679ac9

38 files changed

+3453
-0
lines changed

Adarsha.ico

766 Bytes
Binary file not shown.

AnalogClock!.sln

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
2+
Microsoft Visual Studio Solution File, Format Version 11.00
3+
# Visual C++ Express 2010
4+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AnalogClock", "AnalogClock.vcxproj", "{42C4AA5E-F4E6-49C9-8A23-1781CA445262}"
5+
EndProject
6+
Global
7+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
8+
Debug|Win32 = Debug|Win32
9+
Release|Win32 = Release|Win32
10+
EndGlobalSection
11+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
12+
{42C4AA5E-F4E6-49C9-8A23-1781CA445262}.Debug|Win32.ActiveCfg = Debug|Win32
13+
{42C4AA5E-F4E6-49C9-8A23-1781CA445262}.Debug|Win32.Build.0 = Debug|Win32
14+
{42C4AA5E-F4E6-49C9-8A23-1781CA445262}.Release|Win32.ActiveCfg = Release|Win32
15+
{42C4AA5E-F4E6-49C9-8A23-1781CA445262}.Release|Win32.Build.0 = Release|Win32
16+
EndGlobalSection
17+
GlobalSection(SolutionProperties) = preSolution
18+
HideSolutionNode = FALSE
19+
EndGlobalSection
20+
EndGlobal

AnalogClock!.v12.suo

54 KB
Binary file not shown.

AnalogClock.bmp

56.7 KB
Binary file not shown.

AnalogClock.cpp

Lines changed: 194 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,194 @@
1+
// AnalogClock.cpp : Defines the entry point for the application.
2+
3+
#include "StdAfx.h"
4+
#include "Globals.h"
5+
#include "resource.h"
6+
#include "Bitmap.h"
7+
#include "Clock.h"
8+
#include "Menu.h"
9+
#include "EventHandler.h"
10+
#include "RuntimeLibrary.h"
11+
#include "RegistryFunctions.h"
12+
#include "AnalogClock.h"
13+
14+
//Clock variables
15+
POINT CENTRE;
16+
int RADIUS=68;
17+
18+
HINSTANCE g_hInstance; /*This application's HINSTANCE */
19+
HRGN g_hRgn; /*WindowRegion*/
20+
HBITMAP g_hBitMap; /*Image for Skin*/
21+
HMENU g_hPopupMenu; /*Handle to Menu*/
22+
HBRUSH g_hBackGndBrush;
23+
HANDLE g_hMutex;
24+
/*
25+
* Window procedure
26+
*/
27+
LRESULT CALLBACK WndProc(HWND hwnd, UINT uiMsg, WPARAM wParam, LPARAM lParam)
28+
{
29+
switch (uiMsg) {
30+
HANDLE_MSG(hwnd, WM_CREATE, OnCreate);
31+
HANDLE_MSG(hwnd, WM_DESTROY, OnDestroy);
32+
//HANDLE_MSG(hwnd, WM_CLOSE, OnDestroy);
33+
HANDLE_MSG(hwnd, WM_PAINT, OnPaint);
34+
HANDLE_MSG(hwnd, WM_MOUSEMOVE, OnMouseMove);
35+
HANDLE_MSG(hwnd, WM_LBUTTONDOWN,OnLButtonDown );
36+
HANDLE_MSG(hwnd, WM_LBUTTONDBLCLK,OnLButtonDown );
37+
HANDLE_MSG(hwnd, WM_LBUTTONUP, OnLButtonUp );
38+
HANDLE_MSG(hwnd, WM_RBUTTONDOWN,OnRButtonDown);
39+
HANDLE_MSG(hwnd, WM_RBUTTONUP, OnRButtonUp);
40+
HANDLE_MSG(hwnd, WM_COMMAND, OnContextMenu);
41+
HANDLE_MSG(hwnd, WM_SYSCOMMAND, OnSysCommand);
42+
HANDLE_MSG(hwnd, WM_MOVE, OnMove);
43+
HANDLE_MSG(hwnd, WM_ERASEBKGND, OnEraseBkgnd);
44+
45+
case WM_PRINTCLIENT: OnPaintClient(hwnd, (HDC)wParam); return 0;
46+
case WM_ENTERMENULOOP:
47+
RemoveMenu(GetSystemMenu(hwnd,false),SC_MOVE,MF_BYCOMMAND);
48+
return DefWindowProc(hwnd, uiMsg, wParam, lParam);
49+
case WM_EXITMENULOOP:
50+
InsertMenu(GetSystemMenu(hwnd,false),0,MF_BYPOSITION|MF_STRING,SC_MOVE,"Move");
51+
return DefWindowProc(hwnd, uiMsg, wParam, lParam);
52+
}
53+
54+
return DefWindowProc(hwnd, uiMsg, wParam, lParam);
55+
}
56+
57+
BOOL
58+
InitApp(void)
59+
{
60+
WNDCLASS wc;
61+
62+
LOGBRUSH brBackGround;
63+
64+
g_hBitMap=(HBITMAP)LoadImage(NULL,"./skin/AnalogClock.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
65+
66+
//Load default Image if one is not Present
67+
if (g_hBitMap==NULL)
68+
g_hBitMap=(HBITMAP)LoadImage(g_hInstance,MAKEINTRESOURCE(IDB_MainSkin),IMAGE_BITMAP,0,0,LR_DEFAULTCOLOR);
69+
brBackGround.lbStyle = BS_PATTERN;
70+
brBackGround.lbHatch = (long) g_hBitMap;
71+
g_hBackGndBrush=CreateBrushIndirect(&brBackGround);
72+
wc.style = CS_DBLCLKS;
73+
wc.lpfnWndProc = WndProc;
74+
wc.cbClsExtra = 0;
75+
wc.cbWndExtra = 0;
76+
wc.hInstance = g_hInstance;
77+
wc.hIcon = LoadIcon(g_hInstance,MAKEINTRESOURCE(IDI_MAIN));
78+
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
79+
wc.hbrBackground = g_hBackGndBrush;
80+
wc.lpszMenuName = NULL;
81+
wc.lpszClassName ="AnalogClock";
82+
83+
if (!RegisterClass(&wc)) return FALSE;
84+
85+
return TRUE;
86+
}
87+
88+
int WINAPI WinMain(HINSTANCE hinst, HINSTANCE hinstPrev,
89+
LPSTR lpCmdLine, int nShowCmd)
90+
{
91+
MSG msg;
92+
HWND hwnd;
93+
94+
g_hInstance = hinst;
95+
char sMutexName[]="Ady's Analog Clock";
96+
97+
//quit if already a process is running, but highlight the previous instance*/
98+
g_hMutex=CreateMutex(NULL, FALSE,sMutexName);
99+
if (GetLastError()==ERROR_ALREADY_EXISTS)
100+
{
101+
HWND hPrivWin;
102+
if(ReadSetting(NULL,"MainWindow",(BYTE &) hPrivWin,sizeof(hPrivWin))>0)
103+
FlashWindow(hPrivWin,false);
104+
SetForegroundWindow(hPrivWin);
105+
return 1;
106+
}
107+
108+
AnalogClock NewClock;
109+
RECT rcRect;
110+
hwnd=NewClock.CreateClock(hinst);
111+
112+
//just create non volatile key
113+
SaveSetting(NULL,NULL,REG_SZ,(BYTE &)TEXT("Please visit http://adarsha.mv.googlepages.com for Latest Version"),sizeof(TEXT("Please visit http://adarsha.mv.googlepages.com for Latest Version")));
114+
115+
//Save window handle in the eregistry which will be used by future instances of the program
116+
SaveSetting(NULL,"MainWindow",REG_BINARY,(BYTE &)hwnd,sizeof(HWND),true);
117+
118+
//SetWindowPos(hwnd,HWND_NOTOPMOST,X ,Y,bitmap.bmWidth,bitmap.bmHeight,SWP_FRAMECHANGED);
119+
ShowWindow(hwnd, nShowCmd);
120+
GetWindowRect(hwnd,&rcRect);
121+
122+
//initialize Clock variables
123+
CENTRE.x=CENTRE.y=(rcRect.right-4-rcRect.left) /2;
124+
//= (rcRect.bottom-1-rcRect.top) /2;
125+
RADIUS= int(0.395*(rcRect.right-rcRect.left));
126+
while (GetMessage(&msg, NULL, 0, 0)) {
127+
TranslateMessage(&msg);
128+
DispatchMessage(&msg);
129+
}
130+
131+
/* CoUninitialize();
132+
}*/
133+
134+
return 0;
135+
}
136+
AnalogClock::AnalogClock(void)
137+
{
138+
}
139+
140+
AnalogClock::~AnalogClock(void)
141+
{
142+
}
143+
HWND AnalogClock ::CreateClock(HINSTANCE hInst)
144+
{
145+
WNDCLASS wc;
146+
HWND hwnd;
147+
BITMAP bitmap;
148+
short X,Y; long wPos;
149+
150+
m_hBitMap=(HBITMAP)LoadImage(NULL,"./skin/AnalogClock.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
151+
152+
//Load default Image if one is not Present
153+
if (m_hBitMap==NULL)
154+
m_hBitMap=(HBITMAP)LoadImage(hInst,MAKEINTRESOURCE(IDB_MainSkin),IMAGE_BITMAP,0,0,LR_DEFAULTCOLOR);
155+
g_hBitMap=m_hBitMap;
156+
LOGBRUSH brBackGround;
157+
brBackGround.lbStyle = BS_PATTERN;
158+
brBackGround.lbHatch = (long) g_hBitMap;
159+
HBRUSH hBackGndBrush=CreateBrushIndirect(&brBackGround);
160+
161+
wc.style = CS_DBLCLKS;
162+
wc.lpfnWndProc = WndProc;
163+
wc.cbClsExtra = 0;
164+
wc.cbWndExtra = 0;
165+
wc.hInstance = g_hInstance;
166+
wc.hIcon = LoadIcon(g_hInstance,MAKEINTRESOURCE(IDI_MAIN));
167+
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
168+
wc.hbrBackground =hBackGndBrush; //CreateSolidBrush(RGB(128,128,128));
169+
wc.lpszMenuName = NULL;
170+
wc.lpszClassName ="AnalogClock";
171+
172+
if (!RegisterClass(&wc)) return NULL;
173+
GetObject(g_hBitMap, sizeof(BITMAP), &bitmap);
174+
175+
176+
ReadSetting(NULL,"LastWindowPos",(unsigned char &) wPos,sizeof(wPos));
177+
X=LOWORD(wPos);
178+
Y=HIWORD(wPos);
179+
X= short(X<0?0:(X>GetSystemMetrics(SM_CXSCREEN)?GetSystemMetrics(SM_CXSCREEN)-bitmap.bmWidth:X));
180+
Y= short(Y<0?0:(Y>GetSystemMetrics(SM_CYSCREEN)?GetSystemMetrics(SM_CYSCREEN)-bitmap.bmHeight:Y));
181+
182+
hwnd = CreateWindow(
183+
"AnalogClock", /* Class Name */
184+
"AnalogClock", /* Title */
185+
WS_POPUP | WS_SYSMENU, /* Style */
186+
X,Y, /* Position */
187+
bitmap.bmWidth,bitmap.bmHeight, /* Size */
188+
NULL, /* Parent */
189+
NULL, /* No menu */
190+
hInst, /* Instance */
191+
0); /* No special parameters */
192+
193+
return hwnd;
194+
}

AnalogClock.h

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#pragma once
2+
3+
class AnalogClock
4+
{
5+
private:
6+
HINSTANCE m_hInstance; /*This application's HINSTANCE */
7+
HRGN m_hRgn; /*WindowRegion*/
8+
HBITMAP m_hBitMap; /*Image for Skin*/
9+
HMENU m_hPopupMenu; /*Handle to Menu*/
10+
HANDLE m_hMutex; /*Mutex to limit one instance*/
11+
COLORREF clrHourNumber,
12+
clrMinuteTicks,
13+
clrWeek,
14+
clrDate;
15+
public:
16+
AnalogClock(void);
17+
~AnalogClock(void);
18+
HWND CreateClock(HINSTANCE hinst);
19+
};

0 commit comments

Comments
 (0)