MFC初学之音乐播放器1_2续

来源:互联网 发布:python 毫秒级时间戳 编辑:程序博客网 时间:2024/05/21 06:45

2.基于对话框制作动态小图标

在 CDlg类中添加 成员变量
  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资源。。。。
具体代码如下:
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);}
之后再在 OnInitalDlg();函数中设置定时器;
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);}




原创粉丝点击