我将该按钮的Icon属性设置为True,然后在OnCreate()函数中调用按钮的SetIcon(AfxGetApp()->LoadIcon(IDI_ICON)),编译链接没有问题,但运行调试时会在调用CButton::SetIcon()时产生异常。如果在SetIcon之前调用按钮的Create(...)则没有异常出现,也能显示图标,但显示的按钮外观和其他按钮不同。到底设置图标的正确方法是什么?对了,我用的是VS2008

解决方案 »

  1.   

    我想用多线程为我做的小游戏添加背景音乐,但在使用mciSendCommand(DeviceID, MCI_CLOSE, NULL,NULL)关闭音乐时,这个函数返回的异常是 “Cannot carry out the specified command on an auto-opened device. Wait until the device is closed, and then try again.”下面是一些相关代码,请大家帮忙看看应该怎么改,谢谢啦!UINT DeviceID = 0;DWORD WINAPI PlayMusic(LPVOID lpParameter)
    {
    char buf[128];   
        
      MCI_OPEN_PARMS mciOpen;   
      MCIERROR mciError;   
        
      mciOpen.lpstrDeviceType = "mpegvideo";   
       
      

  2.   

    我猜,你是一个对话框上的按钮,如果是的话,应该在对话框的 OnInitDialog里面设置按钮的图标。这个和对话框的子类化有关,不以在按钮的OnCreate里面设置。
      

  3.   

    谢谢#2楼的回复,我在msdn上得到了相似的回答,不过我的按钮在CFormView类中,所以是在OnInitialUpdate中调用SetIcon,这样做虽然异常的问题解决了,图标也能正常显示,但按钮的外观和其他直接拖拽到面板上的按钮不同,有什么方法能让该按钮的外观和其他按钮的外观一样吗?
      

  4.   

    应该在对话框的 OnInitDialog里面设置按钮的图标。这个和对话框的子类化有关,不以在按钮的OnCreate里面设置。