📄 customitem.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 + -