请教一下关于win32 application的问题 1.怎么样设置CreateWindow("staic")的标签透明,不挡背景颜色2.我在资源里插入了一个Dialog,在上面放了一个ComBox,怎么处理选择ComBox选项的消息? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1. WM_CTLCOLORSTATIC message,SetBkMode(TRANSPARENT);2. CBN_SELENDOK notification message through the WM_COMMAND message 呵呵,两个问题都没有解决我按你说的,写的代码: 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后,最起码让“播放”那个按钮激活吧,可是没有。是不是那出错误了? 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; } 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; 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; 现在我的代码结构成这样的了 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上,可是我添加上的三个选项,只选项两个。 透明了,可是我要多次设置setwindowtext,字体会重叠,在网上查了好多,可是没有找到很好的解决方法,您有什么高见?呵呵,太麻烦你了 运行正常,调试错误,怎么回事? 请问CMFCEditBrowseCtrl可以获得选定的文件名吗? CListCtrl派生类,如何只固定让一个地方可以编辑 窗体颜色 问题 在线等 VS2005比VS6差哪了? CRichedit问题!急 急救!一整天的工作啊,头文件莫名其妙不见了? 关于路由器使用的问题(50分) unexpected end of file while looking for precompiled header directive 欢迎加入? 关于CList插入 ocx打包成cab
2. CBN_SELENDOK notification message through the WM_COMMAND message
我按你说的,写的代码: 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后,最起码让“播放”那个按钮激活吧,可是没有。是不是那出错误了?
{
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;
}
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;
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;
{
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上,可是我添加上的三个选项,只选项两个。