1.怎么样设置CreateWindow("staic")的标签透明,不挡背景颜色2.我在资源里插入了一个Dialog,在上面放了一个ComBox,怎么处理选择ComBox选项的消息?

解决方案 »

  1.   

    1. WM_CTLCOLORSTATIC message,SetBkMode(TRANSPARENT);
    2. CBN_SELENDOK notification message through the WM_COMMAND message
      

  2.   

    呵呵,两个问题都没有解决
    我按你说的,写的代码: case WM_CTLCOLORSTATIC:
    TempDC=GetDC(hLaCount);
    SetBkMode(TempDC,TRANSPARENT);
    ReleaseDC(hwnd,TempDC);
    TempDC=GetDC(hLaSet);
    SetBkMode(TempDC,TRANSPARENT);
    ReleaseDC(hwnd,TempDC);
    return 0;
    case CBN_SELENDOK:
      iIndex=SendDlgItemMessage(hMusicDlg,IDC_COMBO1,CB_GETCURSEL,0,0);
      switch(iIndex)
      {
      case 0:
      strcpy(szName,(LPCTSTR)("春江花月夜.mp3"));
      hTemp=GetDlgItem(hMusicDlg,ID_OPENMUSIC);
      EnableWindow(hTemp,true);
      break;
      case 1:
      strcpy(szName,(LPCTSTR)("流云行水.mp3"));
      hTemp=GetDlgItem(hMusicDlg,ID_OPENMUSIC);
      EnableWindow(hTemp,true);
      break;
      case 2:
      strcpy(szName,(LPCTSTR)("高山流水.mp3"));
      hTemp=GetDlgItem(hMusicDlg,ID_OPENMUSIC);
      EnableWindow(hTemp,true);
      break;
      default:
      strcpy(szName,(LPCTSTR)("高山流水.mp3"));
      hTemp=GetDlgItem(hMusicDlg,ID_OPENMUSIC);
      EnableWindow(hTemp,true);
      break;
      }
    break;点击好ComBox后,最起码让“播放”那个按钮激活吧,可是没有。是不是那出错误了?
      

  3.   

    case WM_CTLCOLORSTATIC:
    {
    static HBRUSH br = (HBRUSH)GetStockObject(NULL_BRUSH); HDC hDC = (HDC)wParam;
    HWND hStatic = (HWND)lParam;
    SetBkMode(hDC, TRANSPARENT);
    SetTextColor(hDC, RGB(255, 0, 128)); return (LRESULT)br;
    }
      

  4.   


    case WM_COMMAND:
    {
    if(IDC_COMBO1 == LOWORD(wParam))
    {
    HWND hWnd = (HWND)lParam;
    switch(HIWORD(wParam))
    {
    case CBN_SELENDOK:
    {
    LRESULT lResult = SendMessage(hWnd, CB_GETCURSEL, 0, 0);
    if(CB_ERR != lResult)
    {
    switch(lResult)
    {
    case 0:
    MessageBox(NULL, _T("0"), NULL, 0);
    break;
    case 1:
    MessageBox(NULL, _T("1"), NULL, 0);
    break;
    case 2:
    MessageBox(NULL, _T("2"), NULL, 0);
    break;
    default:
    break;
    }
    }
    }
    break; default:
    break;
    }
    }

    }
    break;
      

  5.   


    case WM_INITDIALOG:
    {
    HWND hWnd = GetDlgItem(hDlg, IDC_COMBO1); SendMessage(hWnd, CB_ADDSTRING, 0, (LPARAM)_T("AAA"));
    SendMessage(hWnd, CB_ADDSTRING, 0, (LPARAM)_T("BBB"));
    SendMessage(hWnd, CB_ADDSTRING, 0, (LPARAM)_T("CCC"));
    SendMessage(hWnd, CB_SETCURSEL, (WPARAM)0, 0);
    }
    return TRUE;
      

  6.   

    现在我的代码结构成这样的了 switch(message)
    {
    case WM_INITDIALOG:
    hMusic=GetDlgItem(hMusicDlg,IDC_COMBO1);
    SetWindowText(hMusic,"高山流水");
    strcpy(szName,(LPCTSTR)("高山流水.mp3"));
    SendDlgItemMessage(hMusicDlg,IDC_COMBO1,CB_ADDSTRING,0,(LPARAM)"春江花月夜");
    SendDlgItemMessage(hMusicDlg,IDC_COMBO1,CB_ADDSTRING,0,(LPARAM)"流云行水");
    SendDlgItemMessage(hMusicDlg,IDC_COMBO1,CB_ADDSTRING,0,(LPARAM)"高山流水");
    SendMessage(hMusicDlg, CB_SETCURSEL, (WPARAM)0, 0);
    //SendMessage(hMusic,CB_ADDSTRING,0,(LPARAM)(LPCTSTR)szCombo);
    // SendMessage(hMusic,CB_ADDSTRING,0,(LPARAM)(LPCTSTR)szCombo2);
    //SendMessage(hMusic,CB_ADDSTRING,0,(LPARAM)(LPCTSTR)szCombo3);
    return 0;
    case WM_COMMAND:
    if(IDC_COMBO1 == LOWORD(wParam))
    {
    hTemp = (HWND)lParam;
    switch(HIWORD(wParam))
    {
    case CBN_SELENDOK:
    {
    lResult = SendMessage(hTemp, CB_GETCURSEL, 0, 0);
    if(CB_ERR != lResult)
    {
    switch(lResult)
    {
    case 0:
    MessageBox(hMusicDlg, TEXT("0"), NULL, 0);
    break;
    case 1:
    MessageBox(hMusicDlg, TEXT("1"), NULL, 0);
    break;
    case 2:
    MessageBox(hMusicDlg, TEXT("2"), NULL, 0);
    break;
    default:
    break;
    }
    }
    }
    break;
    }
    default:
    break;
    }
    switch(LOWORD(wParam))
    {
    case ID_OPENMUSIC:    
    hPlay=MCIWndCreate(hMusicDlg,hInst,MCIWNDF_RECORD|MCIWNDF_SHOWALL,LPSTR(szName));
    MCIWndPlay(hPlay);

    hTemp=GetDlgItem(hMusicDlg,ID_OPENMUSIC);
    EnableWindow(hTemp,false);
    hTemp=GetDlgItem(hMusicDlg,ID_PAUSEMUSIC);
    EnableWindow(hTemp,true);
    hTemp=GetDlgItem(hMusicDlg,ID_DESTROYMUSIC);
    EnableWindow(hTemp,true);
    break;
    case ID_PAUSEMUSIC:
    MCIWndPause(hPlay);
    hTemp=GetDlgItem(hMusicDlg,ID_PAUSEMUSIC);
    EnableWindow(hTemp,false);
    hTemp=GetDlgItem(hMusicDlg,ID_RESUMEMUSIC);
    EnableWindow(hTemp,true);
    break;
    case ID_RESUMEMUSIC:
    MCIWndResume(hPlay);
    hTemp=GetDlgItem(hMusicDlg,ID_RESUMEMUSIC);
    EnableWindow(hTemp,false);
    hTemp=GetDlgItem(hMusicDlg,ID_PAUSEMUSIC);
    EnableWindow(hTemp,true);
    break;
    case ID_DESTROYMUSIC:
    MCIWndDestroy(hPlay);
    hTemp=GetDlgItem(hMusicDlg,ID_DESTROYMUSIC);
    EnableWindow(hTemp,false);
    hTemp=GetDlgItem(hMusicDlg,ID_PAUSEMUSIC);
    EnableWindow(hTemp,false);
    hTemp=GetDlgItem(hMusicDlg,ID_OPENMUSIC);
    EnableWindow(hTemp,true);
    break;
    case IDC_HIDE:
    ShowWindow(hMusicDlg,SW_HIDE);
    //DestroyWindow(hMusicDlg);关闭
    hMusic=NULL;
    return TRUE;
    case CBN_SELENDOK:
    iIndex=SendDlgItemMessage(hMusicDlg,IDC_COMBO1,CB_GETCURSEL,0,0);
    switch(iIndex)
    {
    case 0:
    strcpy(szName,(LPCTSTR)("春江花月夜.mp3"));
    hTemp=GetDlgItem(hMusicDlg,ID_OPENMUSIC);
    EnableWindow(hTemp,true);
    break;
    case 1:
    strcpy(szName,(LPCTSTR)("流云行水.mp3"));
    hTemp=GetDlgItem(hMusicDlg,ID_OPENMUSIC);
    EnableWindow(hTemp,true);
    break;
    case 2:
    strcpy(szName,(LPCTSTR)("高山流水.mp3"));
    hTemp=GetDlgItem(hMusicDlg,ID_OPENMUSIC);
    EnableWindow(hTemp,true);
    break;
    default:
    strcpy(szName,(LPCTSTR)("高山流水.mp3"));
    hTemp=GetDlgItem(hMusicDlg,ID_OPENMUSIC);
    EnableWindow(hTemp,true);
    break;
    }
    return 0;
    }
    return FALSE;

    }
    return FALSE; 我不会把它们合理搭配起来,有些button要点第二次才有效。
    按你的方式没有CB_ADDSTRING上,可是我添加上的三个选项,只选项两个。
      

  7.   

    透明了,可是我要多次设置setwindowtext,字体会重叠,在网上查了好多,可是没有找到很好的解决方法,您有什么高见?呵呵,太麻烦你了