⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 WinCE下绝好的工具条软件
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	// 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 + -