3月18日

来源:互联网 发布:一面 软件 编辑:程序博客网 时间:2024/04/29 09:53

l         312的如何在VC中使用JPG图片?

在网上找到一个用ActiveX控件实现显示JPG图片,是利用Ipicture接口来实现,要用到很多ActiveX控件的知识。可以参考孙鑫VC的第十八讲关于ActiveX控件的使用和创建,找一两个比较简单的例子进行重构和记忆。巩固ActiveX的知识点。

l         313的如何在托盘里显示一个图标?

运用NOTIFYICONDATAShell_NotifyIcon界面操作命令,在系统的托盘

增加一个图标,手动编写响应函数WM_NOTIFYICON,增加在图标上的对鼠标左右键按下的操作(弹出式菜单)

       详细操作:定义全局变量NOTIFYICONDATA,将变量的各个数据进行赋值,

在程序的初始化的地方调用Shell_NotifyIcon函数进行增加一个图标到托盘。

       实现在图标右键可以弹出菜单,要新建一个菜单用于该图标的,手动编写WM_NOTIFYICON消息函数。函数体如下:

 

 

LONG CbackdropDlg::OnNotifyIcon(WPARAM wParam, LPARAM lParam)

{

       // 响应在托盘图标上的单击

       //wParam中是响应消息的图标IDlParam中则是Windows的消息

       // The backdrop icon sent us a message.  Let''s see what it is

    switch ( lParam )

    {

       case WM_RBUTTONDOWN:

              {

                  // 用户在托盘图标上单击鼠标右键,弹出菜单      

                     CMenu pMenu;

                     if (pMenu.LoadMenu(IDR_MENU1))

                     {

                            CMenu* pPopup = pMenu.GetSubMenu(0);

                            ASSERT(pPopup != NULL);

                            CPoint Point;

                            if(IsIconic()) pPopup->EnableMenuItem(IDC_MIN,MF_BYCOMMAND | MF_DISABLED |           MF_GRAYED);

                            if (IsWindowVisible())// 根据对话框窗口的状态对相关菜单项使能

                            {

                                   if(!IsIconic())

pPopup->EnableMenuItem(IDC_SHOW,MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);

                            }

                            else

                                   pPopup->EnableMenuItem(IDC_HIDE,MF_BYCOMMAND |

MF_DISABLED | MF_GRAYED);

                            if (bkbmp)// 根据对话框背景图状态改变菜单名称

                                   pMenu.ModifyMenu(IDC_FIX,MF_STRING,IDC_FIX,"变化背景");

                            else

                                   pMenu.ModifyMenu(IDC_FIX,MF_STRING,IDC_FIX,"固定背景)");

                            // 确定鼠标位置以便在该位置附近显示菜单

                            GetCursorPos( &Point );

                            SetForegroundWindow();

                            pPopup->TrackPopupMenu(

                                   TPM_LEFTALIGN | TPM_RIGHTBUTTON,

                                   Point.x, Point.y, this);?

                     }

              }

              break;

       case WM_LBUTTONDBLCLK:

       case WM_LBUTTONDOWN:

              // OnShow();

              break;

    }

    return 0;

}