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

📄 customitem.cpp

📁 在PPC上实现today插件
💻 CPP
字号:
// CustomItem.cpp : Defines the entry point for the DLL application.
//

#include "stdafx.h"

#define INVALID_HEIGHT			0xFFFFFFFF

//global variables	
HICON				g_hIcon;
HINSTANCE			g_hInst;
HWND				g_hWnd;
BOOL				g_bSelected = FALSE;


LRESULT CALLBACK WndProc (HWND hwnd, UINT uimessage, WPARAM wParam, LPARAM lParam) ;

// forward function declarations
static INT InitilizeClasses();
static void RefreshStatuses();
void WriteLog0(char *format , ...);

/*************************************************************************/
/* DLL入口函数			
/*如有需要,可根据自己软件的实际情况将此入口函数
/*的处理合入自己的代码
/*
/*************************************************************************/
BOOL APIENTRY DllMain( HANDLE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)
{
	switch (ul_reason_for_call)
	{
	case DLL_PROCESS_ATTACH:			

		//
		g_hInst = (HINSTANCE)hModule;		
		break;
		
	case DLL_PROCESS_DETACH:

		
		DestroyIcon(g_hIcon);
		
		UnregisterClass((LPCTSTR)LoadString(g_hInst, IDS_TODAY_CUSTOM_ITEM_APPNAME,0,0), g_hInst);
		g_hInst = NULL;
		break;		   
	}
	
	return TRUE;
}

/*************************************************************************/
/*创建窗口初始化桌面						 */
/*************************************************************************/
HWND InitializeCustomItem(TODAYLISTITEM *ptli, HWND hwndParent) 
{
	//
	g_hIcon = (HICON)LoadImage(g_hInst,MAKEINTRESOURCE(IDI_DISPLAYICON),IMAGE_ICON,16,16,LR_DEFAULTCOLOR );   
	
	//
	UnregisterClass((LPCTSTR)LoadString(g_hInst, IDS_TODAY_CUSTOM_ITEM_APPNAME,0,0), g_hInst);
	InitilizeClasses();
	g_hWnd = 0;

	LPCTSTR appName = (LPCTSTR)LoadString(g_hInst,IDS_TODAY_CUSTOM_ITEM_APPNAME,0,0);
	
	//
	g_hWnd = CreateWindow(appName,appName,WS_VISIBLE | WS_CHILD,
		CW_USEDEFAULT,CW_USEDEFAULT,240,0,hwndParent, NULL, g_hInst, NULL) ;


	//
	SetWindowLong(g_hWnd, GWL_WNDPROC, (LONG) WndProc);
	
	//
	ShowWindow (g_hWnd, SW_SHOWNORMAL);
	UpdateWindow (g_hWnd) ;  
	
	return g_hWnd;
}

LRESULT CALLBACK WndProc (HWND hwnd, UINT uimessage, WPARAM wParam, LPARAM lParam) 
{
	switch (uimessage)
	{		  
	case WM_TODAYCUSTOM_QUERYREFRESHCACHE: 
		{
			INT iItemHeight;
			BOOL	bReturn = FALSE;
			
			TODAYLISTITEM *ptli = (TODAYLISTITEM *)wParam;
			if (WaitForSingleObject(SHELL_API_READY_EVENT, 0) == WAIT_TIMEOUT)
			{
				return FALSE;
			}
			iItemHeight = 35;

			if (NULL == ptli)
				bReturn = TRUE;
			
			if (0 == ptli->cyp)
			{
				ptli->cyp = iItemHeight;
				bReturn = TRUE;
			}
			
			return bReturn;
		}		
	case WM_CREATE: 		
		break;
		
	case WM_LBUTTONUP: 
		{
			WriteLog0("WM_LBUTTONUP\n");
			RECT rcTodayItem;
			SetRect(&rcTodayItem,0,0, 240,30);
			g_bSelected = TRUE;
			POINT point;
			point.x = LOWORD(lParam);
			point.y = HIWORD(lParam);

			PROCESS_INFORMATION pi;
			if (PtInRect(&rcTodayItem, point))
				//根据自己需要调用程序
				::CreateProcess(_T("\\Program Files\\UI.exe"), _T("desktop"), NULL, NULL, FALSE, 0, NULL, NULL, NULL, &pi);
		}
		break;		  
		
	case WM_PAINT: 
		WriteLog0("WM_PAINT\n");
		PAINTSTRUCT 	ps;
		HDC 			hDC;
		HFONT			hFontOld;
		COLORREF		crText;

		//RefreshStatuses();		
		hDC = BeginPaint(hwnd, &ps);
		hDC = GetDC(hwnd);
		SetBkMode(hDC, TRANSPARENT);
		
		DrawIcon(hDC, 2, 0, g_hIcon);

		LOGFONT lf;
		HFONT hSysFont;
		HFONT hFont;

		hSysFont = (HFONT) GetStockObject(SYSTEM_FONT);
		GetObject(hSysFont, sizeof(LOGFONT), &lf);
		lf.lfWeight = FW_NORMAL;
		lf.lfHeight = 0;

		hFont = CreateFontIndirect(&lf);
		hFontOld = (HFONT) SelectObject(hDC, hFont);
		crText = SendMessage(GetParent(hwnd), TODAYM_GETCOLOR, (WPARAM) TODAYCOLOR_TEXT, NULL);
		SetTextColor(hDC, crText);
		//根据自己需要修改显示的文字
		ExtTextOut(hDC, 50, 0, NULL, NULL, TEXT("Phone/sms: 0/0"), 14, NULL);
		SelectObject(hDC, hFontOld);

		DeleteObject(hFont);
		ReleaseDC(hwnd, hDC);
		EndPaint(hwnd, &ps);
		break;
		
	case WM_DESTROY :		  
		return 0 ;

	case WM_ERASEBKGND:
		WriteLog0("WM_ERASEBKGND\n");		
		TODAYDRAWWATERMARKINFO dwi;
		dwi.hdc = (HDC)wParam;
		GetClientRect(hwnd, &dwi.rc);
		
		dwi.hwnd = hwnd;
		SendMessage(GetParent(hwnd), TODAYM_DRAWWATERMARK, 0,(LPARAM)&dwi);

		if(g_bSelected)
		{
			::SendMessage(hwnd, WM_PAINT, 0,0);		
		}
		return TRUE;
	}
	return DefWindowProc (hwnd, uimessage, wParam, lParam) ;
}

/*************************************************************************/
/* Create and register our window class for the today item				 */
/*************************************************************************/
INT InitilizeClasses()
{
	WNDCLASS		 wc; 
	memset(&wc, 0, sizeof(wc));
	
	wc.style		 = 0;				   
	wc.lpfnWndProc	 = (WNDPROC) WndProc;
	wc.hInstance	 = g_hInst;
	wc.hIcon		 = 0;
	wc.hCursor		 = 0;
	wc.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
	wc.lpszClassName = (LPCTSTR)LoadString(g_hInst, IDS_TODAY_CUSTOM_ITEM_APPNAME,0,0);
	
	//register our window
	if(!RegisterClass(&wc))
	{ 
		return 0 ;
	}
	return 1;
}

void WriteLog0(char *format , ...)
{
	FILE* fileLog;
	TCHAR str[64]={0};

	fileLog = fopen("CustomItem.log" , "a");
	if (NULL == fileLog)
	{
		fileLog = fopen("CustomItem.log" , "w");
		if (NULL == fileLog)
		{
			return;
		} 
	} 

	va_list arg_ptr;

	va_start(arg_ptr, format);
	int nWrittenBytes = vsprintf((char*) (LPCTSTR)str, format, arg_ptr);
	va_end(arg_ptr);

	fseek(fileLog , 0 , SEEK_END);
	fwrite((LPCTSTR)str , nWrittenBytes , 1 , fileLog);
	fclose(fileLog);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -