inc dwCount
mov eax,dwCount
and eax,1
inc eax
invoke LoadIcon,hInstance,eax
invoke           SendDlgItemMessage,hWnd,IDC_SETICON,STM_SETIMAGE,IMAGE_ICON,eax,IMAGE_ICON,eax                                                       

解决方案 »

  1.   

    dwCount++;
    HICON hIcon = ::LoadIcon(hInstance,dwCount&1+1);
    ::SendDlgItemMessage(hWnd,IDC_SECTION,STM_SETIMAGE,IMAGE_ICON,hIcon,IMAGE_ICON,hIcon); 
      

  2.   

    可能是我发错了,我想通过一个定时器实现两个图标的动态交换,可是不知道咋写VC代码,上面那段在汇编里可以实现但是到VC中就不行了。
    void CTimerDlg::OnTimer(UINT nIDEvent) 
    {
    // TODO: Add your message handler code here and/or call default
    if(nIDEvent==2)
    {
    MessageBeep(-1);
    }
    else if(nIDEvent==1)
    {
    HICON hIcon1;
           // HICON hIcon2;
    int index=129;
    index++;
    hIcon1=LoadIcon(GetModuleHandle(NULL),MAKEINTRESOURCE((index & 129)+1));

        // hIcon2=LoadIcon(GetModuleHandle(NULL),(130));
    SendDlgItemMessage(IDC_STATIC1,STM_SETIMAGE,IMAGE_ICON,(LPARAM)hIcon1);
    SetWindowText("Hello"); }
    else if(nIDEvent==3)
    {
    int index;
    index=GetDlgItemInt(IDC_COUNT,NULL,FALSE);
    index++;
    SetDlgItemInt(IDC_COUNT,index,FALSE);

    }
    CDialog::OnTimer(nIDEvent);
    }
    这是我写的代码,当nIDEvent==1实现图片的动态交换,可是实现不了
      

  3.   


    __asm {
    inc dwCount 
    mov eax,dwCount 
    and eax,1 
    inc eax 
    invoke LoadIcon,hInstance,eax 
    invoke SendDlgItemMessage,hWnd,IDC_SETICON,STM_SETIMAGE,IMAGE_ICON,eax,IMAGE_ICON,eax 
    }
      

  4.   

    我已经搞定了,下面把代码贴出来。呵呵,谢谢大家了
    else if(nIDEvent==1)
    {
    HICON hIcon[2];
           // HICON hIcon2;

    hIcon[0]=LoadIcon(GetModuleHandle(NULL),MAKEINTRESOURCE(IDI_ICON1));
    hIcon[1]=LoadIcon(GetModuleHandle(NULL),MAKEINTRESOURCE(IDI_ICON2));
           static int index=1;
       SendDlgItemMessage(IDC_STATIC1,STM_SETIMAGE,IMAGE_ICON,(LPARAM)hIcon[index]);
       index=++index%2;

    SetWindowText("Hello"); }