📄 main.cpp
字号:
// create memoryDC & bitmaps
ghMemDC = CreateCompatibleDC( hDC );
ghGradient = CreateCompatibleDC( hDC );
GetClientRect( hWnd,&rc );
ghBmpWork = CreateCompatibleBitmap( hDC,rc.right,rc.bottom );
ghBmpGrad = CreateCompatibleBitmap( hDC,rc.right,rc.bottom );
SetBkMode( ghMemDC,TRANSPARENT );
SetBkMode( ghGradient,TRANSPARENT );
ghPrevGrad = (HBITMAP)SelectObject( ghGradient,ghBmpGrad );
ReleaseDC( hWnd,hDC );
// icon for menu
ghCloseIcon = (HICON)LoadImage( ghInst,MAKEINTRESOURCE(IDI_CLOSE),IMAGE_ICON,16,16,0 );
// font for menu
GetMenuFont();
lRet = RegCreateKeyEx( HKEY_CURRENT_USER,REG_KEY,0,_T(""),REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,&dwDispOpt );
if ( lRet != ERROR_SUCCESS ) {
return( FALSE );
}
// display items
gdwDispItems = DISPITEM_DEFAULT ;
dwType = REG_DWORD ;
dwSize = sizeof( DWORD );
lRet = RegQueryValueEx( hKey,REG_DISP_ITEMS,0,&dwType,(LPBYTE)&dwDispOpt,&dwSize );
if ( lRet == ERROR_SUCCESS ) {
gdwDispItems = dwDispOpt ;
}
// Notifications
dwType = REG_DWORD;
dwSize = sizeof( DWORD );
lRet = RegQueryValueEx( hKey,REG_NOTIFY,0,&dwType,(LPBYTE)&dwDispOpt,&dwSize );
if( lRet == ERROR_SUCCESS )
bNotify = (dwDispOpt != 0);
// Tap for Next Appointment
dwType = REG_DWORD;
dwSize = sizeof( DWORD );
lRet = RegQueryValueEx( hKey,REG_TAPAPPOINT,0,&dwType,(LPBYTE)&dwDispOpt,&dwSize );
if( lRet == ERROR_SUCCESS )
bTapAppoint = (dwDispOpt != 0);
// Smart minimize
dwType = REG_DWORD ;
dwSize = sizeof( DWORD );
lRet = RegQueryValueEx( hKey,REG_SMARTMINIMIZE,0,&dwType,(LPBYTE)&dwDispOpt,&dwSize );
if ( lRet == ERROR_SUCCESS ) {
gSmartMinimize = (dwDispOpt == 0 ? FALSE : TRUE);
}
// Compact Date Time
dwType = REG_DWORD ;
dwSize = sizeof( DWORD );
lRet = RegQueryValueEx( hKey,REG_COMPACT,0,&dwType,(LPBYTE)&dwDispOpt,&dwSize );
if ( lRet == ERROR_SUCCESS ) {
gCompactDateTime = (dwDispOpt == 0 ? FALSE : TRUE);
}
// Tap and hold mute
dwType = REG_DWORD ;
dwSize = sizeof( DWORD );
lRet = RegQueryValueEx( hKey,REG_THMUTE,0,&dwType,(LPBYTE)&dwDispOpt,&dwSize );
if ( lRet == ERROR_SUCCESS ) {
gTHMUTE = (dwDispOpt == 0 ? FALSE : TRUE);
}
// Gradient Titlebar
dwType = REG_DWORD;
dwSize = sizeof( DWORD );
lRet = RegQueryValueEx( hKey,REG_GRADIENT,0,&dwType,(LPBYTE)&dwDispOpt,&dwSize );
if ( lRet == ERROR_SUCCESS ) {
bGradient = (dwDispOpt == 0 ? FALSE : TRUE);
}
dwType = REG_DWORD;
dwSize = sizeof( DWORD );
lRet = RegQueryValueEx( hKey,REG_DITHERED,0,&dwType,(LPBYTE)&dwDispOpt,&dwSize );
if( lRet == ERROR_SUCCESS ) {
bDithered = (dwDispOpt == 0 ? FALSE : TRUE);
}
// Use 2002 Font Colors
dwType = REG_DWORD;
dwSize = sizeof( DWORD );
lRet = RegQueryValueEx( hKey,REG_2002FONTS,0,&dwType,(LPBYTE)&dwDispOpt,&dwSize );
if( lRet == ERROR_SUCCESS ) {
use2002Fonts = (dwDispOpt == 0 ? FALSE : TRUE);
}
if( use2002Fonts )
cr2002Fonts = GetThemeColor( FontColor );
// Use 2002 Theme Colors
dwType = REG_DWORD;
dwSize = sizeof( DWORD );
lRet = RegQueryValueEx( hKey,REG_2002THEME,0,&dwType,(LPBYTE)&dwDispOpt,&dwSize );
if( lRet == ERROR_SUCCESS ) {
b2002Theme = (dwDispOpt == 0 ? FALSE : TRUE);
}
if( b2002Theme ) {
cStartCr = GetThemeColor( LeftColor );
cEndCr = GetThemeColor( RightColor );
} else {
// Gradient Start Color
dwType = REG_DWORD;
dwSize = sizeof( DWORD );
lRet = RegQueryValueEx( hKey,REG_GRADSTART,0,&dwType,(LPBYTE)&dwDispOpt,&dwSize );
if ( lRet == ERROR_SUCCESS ) {
cStartCr = (COLORREF)dwDispOpt;
}
// Gradient End Color
dwType = REG_DWORD;
dwSize = sizeof( DWORD );
lRet = RegQueryValueEx( hKey,REG_GRADEND,0,&dwType,(LPBYTE)&dwDispOpt,&dwSize );
if ( lRet == ERROR_SUCCESS ) {
cEndCr = (COLORREF)dwDispOpt;
}
}
// Emulate 2002 Style
dwType = REG_DWORD;
dwSize = sizeof( DWORD );
lRet = RegQueryValueEx( hKey,REG_2002STYLE,0,&dwType,(LPBYTE)&dwDispOpt,&dwSize );
if( lRet == ERROR_SUCCESS )
b2002Style = (dwDispOpt != 0);
// Render the gradient
if( bGradient ) {
if( bDithered )
DrawDitheredGradient( hWnd );
else
{
calcGradient();
DrawGradient( hWnd );
}
}
// Today screen
dwType = REG_DWORD ;
dwSize = sizeof( DWORD );
lRet = RegQueryValueEx( hKey,REG_TODAY,0,&dwType,(LPBYTE)&dwDispOpt,&dwSize );
if ( lRet == ERROR_SUCCESS ) {
gGotoToday = (dwDispOpt == 0 ? FALSE : TRUE);
}
// 3d buttons
dwType = REG_DWORD ;
dwSize = sizeof( DWORD );
lRet = RegQueryValueEx( hKey,REG_3DBUTTON,0,&dwType,(LPBYTE)&dwDispOpt,&dwSize );
if ( lRet == ERROR_SUCCESS ) {
g3dbutton = (dwDispOpt == 0 ? FALSE : TRUE);
}
// Hide ActiveSync
dwType = REG_DWORD ;
dwSize = sizeof( DWORD );
lRet = RegQueryValueEx( hKey,REG_HIDEA,0,&dwType,(LPBYTE)&dwDispOpt,&dwSize );
if ( lRet == ERROR_SUCCESS ) {
gHideActiveSync = (dwDispOpt == 0 ? FALSE : TRUE);
}
// bkground
if ( gdwDispItems & DISPITEM_BG ) {
dwType = REG_SZ ;
dwSize = sizeof(szBuf);
lRet = RegQueryValueEx( hKey,REG_BGIMG_FILE,0,&dwType,(LPBYTE)szBuf,&dwSize );
if ( lRet == ERROR_SUCCESS ) {
hBmp = CreateDIBCopy( hWnd,FALSE,szBuf );
if ( hBmp ) {
gItemTbl[ITEM_ID_BG].hBmp = hBmp ;
gItemTbl[ITEM_ID_BG].bEnable = gItemTbl[ITEM_ID_BG].bDisp = TRUE ;
gdwDispItems |= DISPITEM_BG ;
bGradient = false;
}
}
}
// logo
if ( gdwDispItems & DISPITEM_LOGO ) {
if ( gdwDispItems & DISPITEM_SHIFTTITLE ) {
gItemTbl[ITEM_ID_LOGO].bEnable = gItemTbl[ITEM_ID_LOGO].bDisp = TRUE ;
}
else {
dwType = REG_SZ ;
dwSize = sizeof(szBuf);
lRet = RegQueryValueEx( hKey,REG_LOGO_IMG,0,&dwType,(LPBYTE)szBuf,&dwSize );
if ( lRet == ERROR_SUCCESS ) {
hBmp = CreateDIBCopy( hWnd,FALSE,szBuf );
if ( hBmp == NULL ) {
hBmp = CreateDIBCopy(hWnd,TRUE,MAKEINTRESOURCE(IDB_STDLOGO) );
}
if ( hBmp ) {
gItemTbl[ITEM_ID_LOGO].hBmp = hBmp ;
gItemTbl[ITEM_ID_LOGO].bEnable = gItemTbl[ITEM_ID_LOGO].bDisp = TRUE ;
}
}
}
}
// window title
if ( gdwDispItems & DISPITEM_TITLE ) {
// font name
dwType = REG_SZ ;
dwSize = sizeof(szBuf);
lRet = RegQueryValueEx( hKey,REG_TITLE_FONT,0,&dwType,(LPBYTE)szBuf,&dwSize );
if ( lRet == ERROR_SUCCESS ) {
// font size
dwType = REG_DWORD ;
dwSize = sizeof( DWORD );
lRet = RegQueryValueEx( hKey,REG_TITLE_SIZE,0,&dwType,(LPBYTE)&dwDispOpt,&dwSize );
if ( lRet == ERROR_SUCCESS ) {
iFontSize = (int)dwDispOpt ;
// font style
dwType = REG_DWORD ;
dwSize = sizeof( DWORD );
lRet = RegQueryValueEx( hKey,REG_TITLE_STYL,0,&dwType,(LPBYTE)&dwDispOpt,&dwSize );
if ( lRet == ERROR_SUCCESS ) {
// create font
if ( CreateCustomFont(szBuf,iFontSize,dwDispOpt,&fnt) ) {
gfntTitle = fnt ;
}
}
}
}
// title color
dwType = REG_DWORD ;
dwSize = sizeof( DWORD );
lRet = RegQueryValueEx( hKey,REG_TITLE_CR,0,&dwType,(LPBYTE)&dwDispOpt,&dwSize );
if ( lRet == ERROR_SUCCESS ) {
gfntTitle.cr = (COLORREF)dwDispOpt ;
}
else {
gfntTitle.cr = RGB(255,255,255);
}
gItemTbl[ITEM_ID_TITLE].bEnable = gItemTbl[ITEM_ID_TITLE].bDisp = TRUE ;
}
// small date
if ( gdwDispItems & DISPITEM_SMALLDATE ) {
if ( CreateCustomFont(_T("Tahoma"),-11,FNT_STYLE_BOLD,&fnt) ) {
gfntDate = fnt ;
}
dwType = REG_DWORD ;
dwSize = sizeof( DWORD );
lRet = RegQueryValueEx( hKey,REG_SM_COLOR,0,&dwType,(LPBYTE)&dwDispOpt,&dwSize );
if ( lRet == ERROR_SUCCESS ) {
gfntDate.cr = (COLORREF)dwDispOpt ;
}
else {
gfntDate.cr = RGB(255,255,255);
}
/*
dwType = REG_DWORD ;
dwSize = sizeof( DWORD );
lRet = RegQueryValueEx( hKey,REG_CLOCK_FMT,0,&dwType,(LPBYTE)&dwDispOpt,&dwSize );
if ( lRet == ERROR_SUCCESS ) {
gb24Hours = (dwDispOpt == CLOCK_FMT_24HOUR ? TRUE : FALSE);
}
*/
gItemTbl[ITEM_ID_DATE].bEnable = gItemTbl[ITEM_ID_DATE].bDisp = TRUE ;
gbSmallDate = TRUE ;
}
else {
if ( gdwDispItems & DISPITEM_DATE ) {
dwType = REG_SZ ;
dwSize = sizeof(szBuf);
lRet = RegQueryValueEx( hKey,REG_DATE_FONT,0,&dwType,(LPBYTE)szBuf,&dwSize );
if ( lRet == ERROR_SUCCESS ) {
dwType = REG_DWORD ;
dwSize = sizeof( DWORD );
lRet = RegQueryValueEx( hKey,REG_DATE_SIZE,0,&dwType,(LPBYTE)&dwDispOpt,&dwSize );
if ( lRet == ERROR_SUCCESS ) {
iFontSize = (int)dwDispOpt ;
dwType = REG_DWORD ;
dwSize = sizeof( DWORD );
lRet = RegQueryValueEx( hKey,REG_DATE_STYL,0,&dwType,(LPBYTE)&dwDispOpt,&dwSize );
if ( lRet == ERROR_SUCCESS ) {
if ( CreateCustomFont(szBuf,iFontSize,dwDispOpt,&fnt) ) {
gfntDate = fnt ;
}
}
}
}
dwType = REG_DWORD ;
dwSize = sizeof( DWORD );
lRet = RegQueryValueEx( hKey,REG_DATE_CR,0,&dwType,(LPBYTE)&dwDispOpt,&dwSize );
if ( lRet == ERROR_SUCCESS ) {
gfntDate.cr = (COLORREF)dwDispOpt ;
}
else {
gfntDate.cr = RGB(255,255,255);
}
gItemTbl[ITEM_ID_DATE].bEnable = gItemTbl[ITEM_ID_DATE].bDisp = TRUE ;
}
if ( gdwDispItems & DISPITEM_CLOCK ) {
dwType = REG_SZ ;
dwSize = sizeof(szBuf);
lRet = RegQueryValueEx( hKey,REG_CLOCK_FONT,0,&dwType,(LPBYTE)szBuf,&dwSize );
if ( lRet == ERROR_SUCCESS ) {
dwType = REG_DWORD ;
dwSize = sizeof( DWORD );
lRet = RegQueryValueEx( hKey,REG_CLOCK_SIZE,0,&dwType,(LPBYTE)&dwDispOpt,&dwSize );
if ( lRet == ERROR_SUCCESS ) {
iFontSize = (int)dwDispOpt ;
dwType = REG_DWORD ;
dwSize = sizeof( DWORD );
lRet = RegQueryValueEx( hKey,REG_CLOCK_STYL,0,&dwType,(LPBYTE)&dwDispOpt,&dwSize );
if ( lRet == ERROR_SUCCESS ) {
if ( CreateCustomFont(szBuf,iFontSize,dwDispOpt,&fnt) ) {
gfntTime = fnt ;
}
}
}
}
dwType = REG_DWORD ;
dwSize = sizeof( DWORD );
lRet = RegQueryValueEx( hKey,REG_CLOCK_CR,0,&dwType,(LPBYTE)&dwDispOpt,&dwSize );
if ( lRet == ERROR_SUCCESS ) {
gfntTime.cr = (COLORREF)dwDispOpt ;
}
else {
gfntDate.cr = RGB(255,255,255);
}
/*
dwType = REG_DWORD ;
dwSize = sizeof( DWORD );
lRet = RegQueryValueEx( hKey,REG_CLOCK_FMT,0,&dwType,(LPBYTE)&dwDispOpt,&dwSize );
if ( lRet == ERROR_SUCCESS ) {
gb24Hours = (dwDispOpt == CLOCK_FMT_24HOUR ? TRUE : FALSE);
}
*/
gItemTbl[ITEM_ID_CLOCK].bEnable = gItemTbl[ITEM_ID_CLOCK].bDisp = TRUE ;
}
}
/*
// bitmap for system informations
if ( gdwDispItems & DISPITEM_SYSTEM ) {
COLORREF cr = RGB(255,255,255);
dwType = REG_DWORD ;
dwSize = sizeof( DWORD );
lRet = RegQueryValueEx( hKey,REG_BATT_COLOR,0,&dwType,(LPBYTE)&dwDispOpt,&dwSize );
if ( lRet == ERROR_SUCCESS ) {
cr = (COLORREF)dwDispOpt ;
}
// dwType = REG_SZ ;
// dwSize = sizeof(szBuf);
// lRet = RegQueryValueEx( hKey,REG_LOGO_IMG,0,&dwType,(LPBYTE)szBuf,&dwSize );
// if ( lRet == ERROR_SUCCESS ) {
hBmp = CreateDIBCopy( hWnd,TRUE,MAKEINTRESOURCE(IDB_SYSTEM) );
if ( hBmp ) {
gItemTbl[ITEM_ID_SYSTEM].hBmp = hBmp ;
gItemTbl[ITEM_ID_SYSTEM].bEnable = gItemTbl[ITEM_ID_SYSTEM].bDisp = TRUE ;
BITMAP bmp ;
RGBTRIPLE rgb ;
RGBTRIPLE* pRgb ;
rgb.rgbtRed = GetRValue( cr );
rgb.rgbtGreen = GetGValue( cr );
rgb.rgbtBlue = GetBValue( cr );
GetObject( gItemTbl[ITEM_ID_SYSTEM].hBmp,sizeof(bmp),&bmp );
if ( bmp.bmWidthBytes % 4 != 0 ) {
bmp.bmWidthBytes += (4 - bmp.bmWidthBytes % 4);
}
for ( int iLine = 0 ; iLine < bmp.bmHeight ; iLine++ ) {
pRgb = (RGBTRIPLE*)((LPBYTE)bmp.bmBits + bmp.bmWidthBytes*iLine);
for ( int iCol = 0 ; iCol < bmp.bmWidth ; iCol++,pRgb++ ) {
if ( (pRgb->rgbtBlue == 255) &&
(pRgb->rgbtGreen == 255) &&
(pRgb->rgbtRed == 255) ) {
*pRgb = rgb ;
}
}
}
DrawSystemState();
}
// }
}
*/
TCHAR szKey[MAX_PATH];
HKEY hSubKey ;
UINT ResIDs[] = { IDB_TODAY,
IDB_LIST,
IDB_OK,
IDB_CLOSE,
IDB_TAP_CLOSE,
IDB_MUTE,
IDB_NOTIFY,
IDB_TAP_OK,
IDB_CONNECTED,
IDB_DISCONNECTED,
IDB_SYSTEM };
for ( int iIdx = 0 ; iIdx < WIS_ICON_NUM ; iIdx++ ) {
wsprintf( szKey,_T("%s%d"),REG_ICON_KEY,iIdx );
lRet = RegCreateKeyEx( hKey,szKey,0,_T(""),REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hSubKey,&dwDispOpt );
if ( lRet != ERROR_SUCCESS ) {
RegCloseKey( hKey );
return( FALSE );
}
// display on/off
dwType = REG_DWORD ;
dwSize = sizeof( DWORD );
lRet = RegQueryValueEx( hSubKey,REG_ICON_DISP,0,&dwType,(LPBYTE)&dwDispOpt,&dwSize );
if ( lRet == ERROR_SUCCESS ) {
if ( dwDispOpt != 0 ) {
// images
dwType = REG_SZ ;
dwSize = sizeof(szBuf);
lRet = RegQueryValueEx( hSubKey,REG_ICON_FILE,0,&dwType,(LPBYTE)szBuf,&dwSize );
if ( lRet == ERROR_SUCCESS ) {
hBmp = CreateDIBCopy( hWnd,FALSE,szBuf );
if ( hBmp == NULL ) {
hBmp = CreateDIBCopy( hWnd,TRUE,MAKEINTRESOURCE(ResIDs[iIdx]) );
}
if ( hBmp ) {
switch( iIdx ) {
case WIS_ICO_TODAY:
iIDIndex = ITEM_ID_TODAY ;
break ;
case WIS_ICO_LIST:
iIDIndex = ITEM_ID_LIST ;
break ;
case WIS_ICO_OK:
iIDIndex = ITEM_ID_OK ;
break ;
case WIS_ICO_CLOSE:
iIDIndex = ITEM_ID_CLOSE;
break;
case WIS_ICO_CLOSE2:
iIDIndex = ITEM_ID_CLOSE2;
break;
case WIS_ICO_MUTE:
iIDIndex = ITEM_ID_MUTE;
break;
case WIS_ICO_NOTIFY:
iIDIndex = ITEM_ID_NOTIFY;
gItemTbl[iIDIndex].bDisp = bNotify;
break;
case WIS_ICO_OK2:
iIDIndex = ITEM_ID_OK2;
break;
case WIS_ICO_CONNECT:
iIDIndex = ITEM_ID_CONN;
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -