2.基于对话框制作动态小图标
在 CDlg类中添加 成员变量
↑可以右击Dlg类添加变量,变量类型HICON 变量m_Icon1,2,3。
int timenum;
HICON m_hIcon1;
HICON m_hIcon2;
HICON m_hIcon3;
↑可以右击Dlg类添加变量,变量类型HICON 变量m_Icon1,2,3。
在CDlg的构造函数中初始化 上面定义的timercount,m_Icon1,m_Icon2,m_Icon3三个成员变量如下
timenum=0;
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);//这里可以修改初始图标
m_hIcon1= AfxGetApp()->LoadIcon(IDI_ICON1);
m_hIcon2 = AfxGetApp()->LoadIcon(IDI_ICON2);
m_hIcon3 = AfxGetApp()->LoadIcon(IDI_ICON3);
AfxGetApp();
其中
IDI_ICON1同单文档制作动态小图标类似,右击Dlg添加Icon资源。。。。
具体代码如下:
之后再在 OnInitalDlg();函数中设置定时器;CType22Dlg::CType22Dlg(CWnd* pParent ) : CDialog(CType22Dlg::IDD, pParent) { //{{AFX_DATA_INIT(CType22Dlg) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 timenum=0; m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); m_Icon1 = AfxGetApp()->LoadIcon(IDI_ICON1); m_Icon2 = AfxGetApp()->LoadIcon(IDI_ICON2); m_Icon3 = AfxGetApp()->LoadIcon(IDI_ICON3); }
BOOL CType22Dlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
// TODO: Add extra initialization here
SetTimer(1,1,NULL);//定时器的ID是1,并且每隔1ms产生一个WM_TIME消息
return TRUE; // return TRUE unless you set the focus to a control
}
在CDlg中添加一个 WS_TIME的消息响应函数
void CType22Dlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
timenum++; //每隔1ms自动加1
if(timenum==50)
AfxGetMainWnd()->SetIcon(m_hIcon1,FALSE);
else if(timenum==80)
AfxGetMainWnd()->SetIcon(m_hIcon2,FALSE);
else if(timenum==110)
{
AfxGetMainWnd()->SetIcon(m_hIcon3,FALSE);
timenum=0;
}
CDialog::OnTimer(nIDEvent);
}