www.pudn.com > sharewareluncher.zip > time.c
#include#include "sharewareluncher.h" #include "time1.h" #include "tab.h" #include "resource.h" extern HINSTANCE hInst; HBITMAP hbmHHour[3],hbmLHour[10],hbmHMin[6],hbmLMin[10]; HBITMAP hbmHSec[6],hbmLSec[10],hbmClockBkg; extern HBITMAP hbmMain,hbmClock; extern HWND hMainWnd; extern DWORD dwThreadId; extern BOOL bMined,bQuit; extern int nTimerNum; extern TIMERINFO ti[10]; extern BOOL bClockYes; BOOL bCanGo=TRUE; extern int nAlarmEveryHour; BOOL bKnocked=FALSE; int nDlgflag=-99; extern char szerr[1100]; extern BOOL bNoShowDel,btRuning; extern BOOL bHelp; const char szver[400]=" 版本:1.2\x0d\x0a 本软件是一个程序发射器兼闹钟程式并可虚拟软驱\ ,可使你的共享软件永不过期。只要你在程序设置中设定好共享软件的启动日期(在其有效期内),则本程式\ 启动该共享软件时会先把系统日期改为该有效日期,20秒后自动改回当前日期。为防系统日期混乱\ 导致共享软件启动失败,请勿在20秒内启动两个或以上的共享软件。\x0d\x0a 本软件自带整点"; const char szver1[200]="报时功能,必须有声卡支持。如到时声卡正在使用中则无法报时。(PCI声卡除外)。\ \x0d\x0a 为NT系统安全性起见,本软件的关机及修改系统日期功能在Windows NT中不起作用。\x0d\x0a"; const char szver2[100]="谢谢你对本软件的支持。\x0d\x0a作者联系地址:常熟市花园浜路2#308\x0d\x0a邮编:215500\ \x0d\x0a电话:0520-2798715\x0d\x0a"; const char szver3[40]="E-Mail:SZ7301@public1.sz.js.cn"; void InitTimeBmp(HWND hWnd) { HDC hDC,hMainDC,hMemDC,hBkgDC,hMaskDC,hTempDC; HBITMAP hbmMask; int i,j; hDC=GetDC(hWnd); hMemDC=CreateCompatibleDC(hDC); hMainDC=CreateCompatibleDC(hDC); hTempDC=CreateCompatibleDC(hDC); hMaskDC=CreateCompatibleDC(hDC); hBkgDC=CreateCompatibleDC(hDC); hbmClockBkg=CreateCompatibleBitmap(hDC,168,42); hbmMask=CreateCompatibleBitmap(hDC,180,38); SelectObject(hMemDC,hbmClock); SelectObject(hMainDC,hbmMain); SelectObject(hMaskDC,hbmMask); SelectObject(hBkgDC,hbmClockBkg); BitBlt(hBkgDC,0,0,168,42,hMainDC,10,54,SRCCOPY); BitBlt(hMaskDC,0,0,180,38,hMemDC,0,0,WHITENESS); for(i=0;i<180;i++) { for(j=0;j<38;j++) { if(GetPixel(hMemDC,i,j)!=0x00000000) SetPixelV(hMaskDC,i,j,0x00ffffff); } } for(i=0;i<3;i++) { hbmHHour[i]=CreateCompatibleBitmap(hDC,18,38); SelectObject(hTempDC,hbmHHour[i]); BitBlt(hTempDC,0,0,18,38,hBkgDC,2,0,SRCCOPY); BitBlt(hTempDC,0,0,18,38,hMaskDC,0,0,SRCAND); BitBlt(hTempDC,0,0,18,38,hMemDC,i*18,0,SRCPAINT); } for(i=0;i<6;i++) { hbmHMin[i]=CreateCompatibleBitmap(hDC,18,38); SelectObject(hTempDC,hbmHMin[i]); BitBlt(hTempDC,0,0,18,38,hBkgDC,62,0,SRCCOPY); BitBlt(hTempDC,0,0,18,38,hMaskDC,0,0,SRCAND); BitBlt(hTempDC,0,0,18,38,hMemDC,i*18,0,SRCPAINT); } for(i=0;i<6;i++) { hbmHSec[i]=CreateCompatibleBitmap(hDC,18,38); SelectObject(hTempDC,hbmHSec[i]); BitBlt(hTempDC,0,0,18,38,hBkgDC,124,0,SRCCOPY); BitBlt(hTempDC,0,0,18,38,hMaskDC,0,0,SRCAND); BitBlt(hTempDC,0,0,18,38,hMemDC,i*18,0,SRCPAINT); } for(i=0;i<10;i++) { hbmLHour[i]=CreateCompatibleBitmap(hDC,18,38); SelectObject(hTempDC,hbmLHour[i]); BitBlt(hTempDC,0,0,18,38,hBkgDC,24,0,SRCCOPY); BitBlt(hTempDC,0,0,18,38,hMaskDC,0,0,SRCAND); BitBlt(hTempDC,0,0,18,38,hMemDC,i*18,0,SRCPAINT); } for(i=0;i<10;i++) { hbmLMin[i]=CreateCompatibleBitmap(hDC,18,38); SelectObject(hTempDC,hbmLMin[i]); BitBlt(hTempDC,0,0,18,38,hBkgDC,84,0,SRCCOPY); BitBlt(hTempDC,0,0,18,38,hMaskDC,0,0,SRCAND); BitBlt(hTempDC,0,0,18,38,hMemDC,i*18,0,SRCPAINT); } for(i=0;i<10;i++) { hbmLSec[i]=CreateCompatibleBitmap(hDC,18,38); SelectObject(hTempDC,hbmLSec[i]); BitBlt(hTempDC,0,0,18,38,hBkgDC,144,0,SRCCOPY); BitBlt(hTempDC,0,0,18,38,hMaskDC,0,0,SRCAND); BitBlt(hTempDC,0,0,18,38,hMemDC,i*18,0,SRCPAINT); } DeleteDC(hMemDC); DeleteDC(hMainDC); DeleteDC(hMaskDC); DeleteDC(hBkgDC); DeleteDC(hTempDC); ReleaseDC(hWnd,hDC); } void ShowTime(HWND hWnd) { SYSTEMTIME stTime; HDC hDC,hMemDC,hNoDC; hDC=GetDC(hWnd); hMemDC=CreateCompatibleDC(hDC); //hTempDC=CreateCompatibleDC(hDC); hNoDC=CreateCompatibleDC(hDC); SelectObject(hMemDC,hbmClockBkg); //SelectObject(hMemDC,hbmClock); GetLocalTime(&stTime); SelectObject(hNoDC,hbmHHour[stTime.wHour/10]); BitBlt(hMemDC,2,2,18,38,hNoDC,0,0,SRCCOPY); SelectObject(hNoDC,hbmLHour[stTime.wHour%10]); BitBlt(hMemDC,24,2,18,38,hNoDC,0,0,SRCCOPY); SelectObject(hNoDC,hbmHMin[stTime.wMinute/10]); BitBlt(hMemDC,62,2,18,38,hNoDC,0,0,SRCCOPY); SelectObject(hNoDC,hbmLMin[stTime.wMinute%10]); BitBlt(hMemDC,84,2,18,38,hNoDC,0,0,SRCCOPY); GetLocalTime(&stTime); SelectObject(hNoDC,hbmHSec[stTime.wSecond/10]); BitBlt(hMemDC,124,2,18,38,hNoDC,0,0,SRCCOPY); SelectObject(hNoDC,hbmLSec[stTime.wSecond%10]); BitBlt(hMemDC,144,2,18,38,hNoDC,0,0,SRCCOPY); BitBlt(hDC,10,54,168,42,hMemDC,0,0,SRCCOPY); DeleteDC(hMemDC); //DeleteDC(hTempDC); DeleteDC(hNoDC); ReleaseDC(hWnd,hDC); } #pragma argsused DWORD TimeThread(INT nUnused) { SYSTEMTIME st; WORD wSec; SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_LOWEST); GetLocalTime(&st); wSec=st.wSecond; while(!bQuit) { if(!bMined) { GetLocalTime(&st); if(st.wSecond!=wSec) { wSec=st.wSecond; ShowTime(hMainWnd); } } Sleep(100); } return 100; } #pragma argsused DWORD KlockThread(INT nUnused) { SYSTEMTIME st; int i; SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_LOWEST); while(!bQuit) { GetLocalTime(&st); if(nAlarmEveryHour==1) { if(st.wMinute==0 && !bKnocked) { int j; if(st.wHour>=13) j=(int)(st.wHour-12); else if(st.wHour==0) j=12; else j=(int)st.wHour; PlayWav(MAKEINTRESOURCE(IDW_START)); for(i=0;i