我看书,做了一个托盘程序,没有窗口,点击右键弹出一个菜单,但是我还想在菜单中加入自己的图标和背景。请问诸位如何实现?
有人能指点我下么?未解决!未解决!未解决!

解决方案 »

  1.   

    sofa 楼主找个例子吧 很简单
      

  2.   

    创建一个不可见的窗口作为Owner窗口就行了至于菜单加图标你就去找一个自绘菜单类用就行了
      

  3.   

    创建窗口时不指定 WS_VISIBLE或隐藏就可以。
    自绘菜单网上很多啊,比如这里
    http://www.vckbase.com/code/listcode.asp?mclsid=3&sclsid=303
      

  4.   

    给你一个SDK的参考~~~
    在处理主窗体过程函数中:
    case WM_CREATE:
         //...
         //创建状态栏
      hStatusBar=CreateStatusWindow(
      WS_CHILD|WS_VISIBLE,
    "",
    hwnd,
    ID_STATUSBAR);
      nid.cbSize = sizeof(nid);
      nid.hWnd = hwnd;
      nid.uID = 0;//仅有一个图标显示
      nid.uFlags = NIF_ICON|NIF_TIP|NIF_INFO|NIF_MESSAGE;
      nid.uCallbackMessage = WM_USER;//The WM_USER constant is used by applications to help define private messages for use by private window classes,
      nid.hIcon = LoadIcon(hInstance,MAKEINTRESOURCE(IDI_TITLE));
      nid.dwInfoFlags = NIIF_INFO;
      lstrcpy(nid.szInfo,TEXT("NetSlave已启动"));
      nid.uTimeout = 15000;
      lstrcpy(nid.szInfoTitle,TEXT("信息提示"));
      lstrcpy(nid.szTip,TEXT("欢迎使用NetSlave"));//任务栏提示信息
      Shell_NotifyIcon(NIM_ADD, &nid);//Adds an icon to the status area.
      Shell_NotifyIcon(NIM_MODIFY,&nid);
    ////////////////////////
    然后继续在下面处理用户事件
        //处理任务栏消息
     case WM_USER:
     switch(LOWORD(lParam))
     {
     case WM_LBUTTONDOWN://正常显示应用程序
     ShowWindow(hwnd,SW_SHOWNORMAL);
     return 0;
     case WM_LBUTTONDBLCLK://正常显示应用程序
     ShowWindow(hwnd,SW_SHOWNORMAL);
     return 0;
     case WM_RBUTTONDOWN:
     PlaySound(TEXT("E:\\个人作品\\NetSlave下载工具\\Sound.wav"),NULL,SND_ASYNC|SND_FILENAME);
     POINT ptCursor;
     GetCursorPos(&ptCursor);
     hMenu = LoadMenu(hInst,TEXT("TASKMENU"));
     hBitMap = LoadBitmap(hInstance,MAKEINTRESOURCE(IDB_EXIT));//填加退出位图
     ShowMenu = GetSubMenu(hMenu,0);
     SetMenuItemBitmaps(ShowMenu,4,MF_BYPOSITION,hBitMap,hBitMap);
     hBitMap = LoadBitmap(hInstance,MAKEINTRESOURCE(IDB_ABOUT));//填加帮助位图         
     SetMenuItemBitmaps(ShowMenu,1,MF_BYPOSITION,hBitMap,hBitMap);
     TrackPopupMenu(ShowMenu,TPM_LEFTBUTTON|TPM_LEFTALIGN|TPM_RIGHTBUTTON,
     ptCursor.x,ptCursor.y,0,hwnd,NULL);
     PostMessage(hwnd,WM_NULL,0,0);
     DestroyMenu(hMenu);  
     return 0;
     }
     return 0;
    楼主看看有没有帮助~~~