今日插件的一个HELLO WORLD

首先是代码

HINSTANCE g_Inst;
HWND g_Hwnd;
HWND g_TestWnd;

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

BOOL APIENTRY DllMain( HANDLE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                     )
{
    g_Inst = (HINSTANCE)hModule;
    return TRUE;
}

HWND APIENTRY InitializeCustomItem (TODAYLISTITEM *ptli, HWND hwndParent)
{
    WNDCLASS         wc;
    memset(&wc, 0, sizeof(wc));

    wc.style          = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc    = (WNDPROC) WndProc;
    wc.cbClsExtra             = 0;
    wc.cbWndExtra             = 0;
    wc.hInstance              = g_Inst;
    wc.hIcon          = 0;
    wc.hCursor        = 0;
    wc.hbrBackground = (HBRUSH) GetStockObject(LTGRAY_BRUSH);
    wc.lpszMenuName   = 0;
    wc.lpszClassName  = TEXT("MyToday");
    RegisterClass(&wc);

    g_Hwnd = CreateWindow(TEXT("MyToday"), TEXT("MyToday"), WS_VISIBLE | WS_CHILD, CW_USEDEFAULT,
        CW_USEDEFAULT, 240, 25, hwndParent, NULL, g_Inst, NULL);
    g_TestWnd = CreateWindow(TEXT("Test"), TEXT("TEST"), WS_CHILD, CW_USEDEFAULT,CW_USEDEFAULT,
        CW_USEDEFAULT, CW_USEDEFAULT, g_Hwnd, NULL, g_Inst, NULL);
    ShowWindow(g_Hwnd, SW_SHOWNORMAL);
    UpdateWindow(g_Hwnd);
    return g_Hwnd;
}

LRESULT CALLBACK WndProc (HWND hwnd, UINT uimessage, WPARAM wParam, LPARAM lParam)
{
    TODAYLISTITEM* tl = (TODAYLISTITEM*)wParam;
    PAINTSTRUCT ps;
    switch (uimessage)
    {
    case WM_TODAYCUSTOM_QUERYREFRESHCACHE:
        if (tl->cyp == 0)
        {
            tl->cyp = 25;
        }
        break;
    case WM_PAINT:
        RECT rt;
        HDC hdc = BeginPaint(g_Hwnd, &ps);
        GetClientRect(g_Hwnd, &rt);
        SetBkMode(hdc,TRANSPARENT);
        DrawText(hdc, TEXT("Pocket PC Rules!"), 16, &rt,
            DT_SINGLELINE | DT_VCENTER | DT_CENTER);
        EndPaint(g_Hwnd, &ps);
        break;

    }

    return TRUE;
}

 

 

然后定义导出文件

LIBRARY    "MyToday"

EXPORTS
InitializeCustomItem        @240    NONAME

 

注册表的编辑

[HKEY_LOCAL_MACHINE/Software/Microsoft/Today/Items/"MyToday"]
  "Type"=dword:4           ; 4 == Custom
  "Enabled"=dword:0    ; set by the "Settings/Today" applet  
  "Options"=dword:1        ; set to 0 if you do not want options
  "DLL"="/Windows/MyToday.DLL" ; path to the DLL

 

------------------------------------------------------------------------------------------------------------------------------------------------------

在今日插件中,InitializeCustomItem 是默认必须的导出函数,插件的初始化会在此函数中进行

InitializeCustomItem 函数中要做的和普通WIN32SDK做界面是一样的,就是实现一个窗体,从窗体类的实现到最后UpdateWindow

 

 

在窗体的过程处理函数中,要注意WM_TODAYCUSTOM_QUERYREFRESHCACHE消息

当加载完今日插件时,系统会每2,3秒时间对每个今日插件进程(其实每个消息的动态库是附加在SHELL32.EXE当中的)发送一个WM_TODAYCUSTOM_QUERYREFRESHCACHE消息。如果是第一次加载,即发送第一条WM_TODAYCUSTOM_QUERYREFRESHCACHE消息的时候,

TODAYLISTITEM* tl = (TODAYLISTITEM*)wParam;


tl->cyp == 0 为TRUE

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值