gSysTrayIcon.SetNotifyWindow(hWnd);
gSysTrayIcon.SetTrayIcon(handleIcon);
gSysTrayIcon.SetTrayIconTip(_T("SysTrayIcon"));
gSysTrayIcon.SetTrayIconWmMsg(WM_TRAYICON_MSGS);
if (!gSysTrayIcon.AddIconToSysTray())
{
::MessageBox(hWnd, _T("Unable to add Icon to System Tray."), _T("Error:"), MB_OK);
return;
}
}
这是一个很简单的函数,我假设我有一个全局变量叫gSysTrayIcon。它是一个类对象;它有至少六个函数;它的五个函数是数据设定函数;它的最后一个函数是让调用者告诉它把图像加入System Tray。根据我自己设计的单元测试案例,我设计了以下的类:
#ifndef SYS_TRAY_ICON_H_
#define SYS_TRAY_ICON_H_
#include "shellapi.h"
class SysTrayIcon
{
private:
NOTIFYICONDATA niData;
public:
SysTrayIcon();
~SysTrayIcon();
void SetTrayIconID(UINT iconID);
void SetNotifyWindow(HWND hWnd);
void SetTrayIcon(HICON iconHandle);
void SetTrayIconTip(LPCTSTR szMsg);
void SetTrayIconWmMsg(UINT wmMsg);
BOOL AddIconToSysTray();
BOOL DeleteIconFromSysTray();
};
#endif
我的类成员设计如下,这里面有很多我无意中犯下的错误,也有我故意设置的错误,后面我用单元测试一点点地查找出一些常见的问题。为了顺利通过我上面的单元测试,首先看看我的设计初稿: #include "StdAfx.h"
#include "SysTrayIcon.h"
#include
SysTrayIcon::SysTrayIcon()
{
ZeroMemory(&niData, sizeof(NOTIFYICONDATA));
niData.cbSize = (DWORD)sizeof(NOTIFYICONDATA);
niData.uFlags = NIF_ICON NIF_MESSAGE NIF_TIP;
}
SysTrayIcon::~SysTrayIcon()
{
DeleteIconFromSysTray();
}
文章来源于领测软件测试网 https://www.ltesting.net/