在Windows Mobile 中最小化,显示图标再任务栏上

本文介绍了一种在Windows Mobile应用程序中实现任务栏小图标的方法,并详细展示了如何通过MFC来响应点击事件,包括设置图标、标题及按钮响应的具体代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近写了一个小程序,当用户点击最小化按钮的时候,在任务栏上显示一个小图标。类似MSN Mobile。开始的时候看了好多实现。最终还是看了MSN,找到了结果。 下面是我的实现代码,其实很简单的。在MFC中实际上只需响应一个函数,然后把下面的代码拷贝过去就可以了。 SHNOTIFICATIONDATA sn = {0}; sn.cbStruct = sizeof(sn); sn.dwID = 1; //SHNP_ICONIC sn.npPriority = SHNP_ICONIC; sn.csDuration = 5; sn.hicon = LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_MESSAGE)); sn.clsid = CLSID_SHNAPI_ICON; sn.grfFlags = 0; sn.pszTitle = TEXT("LearnerAgent"); sn.pszHTML = TEXT(""); sn.rgskn[0].pszTitle = TEXT("Dismiss"); sn.rgskn[0].skc.wpCmd = 100; sn.pszTodaySK = TEXT("!BC"); sn.pszHTML = TEXT("

The main window was minilized. minilized .

 

"); sn.npPriority = SHNP_INFORM; SHNotificationUpdate(SHNUM_PRIORITY, &sn); SHNotificationUpdate(SHNUM_HTML,&sn); SHNotificationAdd(&sn);

上一篇文章中提到了如何在Windows mobile中显示一个Notification。但是,由一个问题,就是如何处理在Notification中按钮的响应事件问题。

 

我想再用户点击按钮的时候做相应的操作:这样的话就需要再设置SHNOTIFICATIONDATA 的hwndSink属性。

sn.hwndSink = this->m_hWnd;

 

然后再MFC类中的OnCommand方法中根据HTML button cmd值进行消息处理。

 

<html><body><form method=/"POST/" action=><p>The main window was minilized.Click <font color=/"#0000FF/"><b>Show Window</b></font> to display the main window. </p><p align=right><input type=button name='cmd:20 ' value='Show Window'></p></body></html>

 

 

BOOL SampleDlg::OnCommand(WPARAM wParam, LPARAM lParam)
{
    UINT nID = LOWORD( wParam );
    switch(nID)
    {
        case 20:
            {
                this->ShowWindow(SW_SHOW);
                return true;
            }
            break;
    }
    return CWnd::OnCommand(wParam,lParam);
}

 

当然如果是再Windows程序中也可以用如下的方式写:

在WinMain函数中设置回调函数。


int WINAPI WinMain(
    HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPTSTR lpCmdLine,   
    int nCmdShow
    )
{
    g_hInst = hInstance;

    SHInitExtraControls();

    // just call a dialog box, system will handle messaging, painting, etc...
    DialogBox(hInstance,(LPCTSTR)IDD_NOTIFYMAIN, NULL,(DLGPROC)NotifyMain );
    return 0;
}

 

在回调函数中处理:

LRESULT CALLBACK NotifyMain(
    HWND hDlg,
    UINT message,
    WPARAM wParam,
    LPARAM lParam
    )
{

      switch(message)

    {

          case WM_COMMAND:

            {

                 switch(LOWORD(wParam))

                 {

                      case 10:

                       {Your operation}

                       Break;

                 }

            }

     }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值