大家有没有注意到SeruTrayIcon.exe ,占内存这么小,是怎么处理TrayIcon消息的?
我的程序,光是启一下APP,然后进入消息循环也1.6M,它的才600KB,真是小呀!所以我想写一个程序,就是显示一个TrayIcon ,但不知道如何写.请高人指点!

解决方案 »

  1.   

    不会有那么大吧!//-------------Add Icon and Respond-----------
    1
    初始化NOTIFYICONDATA结构
    example:
    NOTIFYICONDATA mydata;
    mydata.cbSize = sizeof(NOTIFYICONDATA);
    mydata.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
    mydata.hIcon = LoadIcon(NULL,MAKEINTRESOURCE(ID_MYICON);
    mydata.uID = (UINT)ID_MYICON;
    mydata.hWnd = m_hWnd;
    mydata.uCallbackMessage = TRAY_MESSAGE;//设置响应消息
    strcpy(mydata.szTip,"My First Tray");Now,We can add the icon the system taskbar
    Shell_NotifyIcon(NIM_ADD,&mydata);////添加图标2
    //添加消息响应函数
    After add the icon,then we ought to add the icon messge,because we set the notify message in the NOTIFYICONDATA struct,so we add the message function like this:
    void ****::OnTrayMessage(WPARAM wParam,LPARAM lParam)
    {
        UINT msgID = (UINT)lParam;
        switch(msgID)
        {
        case WM_LBUTTONDOWN:
             .....//
             break;
        case WM_RBUTTONDOWN:
             .....//
             break;
        case WM_LBUTTONDBCLICK:
             .....//
             break;
        case WM_RBUTTONDBCLICK:
             .....//
             break;
        case WM_MOUSEMOVE:
             .....//
        }
    }//-----------Delete Icon-------
    NOTIFYICONDATA icon;
    icon.cbSize = sizeof(NOTIFYICONDATA);
    icon.uID = (UINT)ID_MYDATA;
    icon.hWnd = m_hWnd;Shell_NotifyIcon(NIM_DELETE,&icon);
      

  2.   

    TRAY_MESSAGE;//是你的一个自定义消息
      

  3.   

    是呀!关键是得创建一个CXXApp 和一个CWnd 类的派生类!这就得7-8M内存没有了!我看了一下SeruTrayicon.exe,起来后才占600多Kb,真是羡慕呀!不知道人家怎么弄得!
      

  4.   

    用SDK的就已经小得多了,另外一般的应用程序链接了许多不必要的LIB进去,熟悉了以后就可以自己裁剪出来
      

  5.   

    建议你看一下 SetProcessWorkingSetSize 函数族。