Делаю в диалоговом окне настройку цветов у меня 10 кнопок radio button и 3 trackbara проблема в том,что значения из tarclbara передаются после того как нажимаеш на radiobutton ,а хотелось бы ,чтобы при нажатой radiobutton можно было настраивать цвет. и ещо можно ли скоротить код где 10 case IDC_RADIO?
| Код | BOOL CALLBACK Dialog1(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam) { int i; static int track[3]; static HWND hTrack[3]; static COLORREF color_dlg[10]; switch (message) { case WM_INITDIALOG: for(i=0;i<10;i++) color_dlg[i]=RGB(255,255,255); /* for(i=0;i<3;i++) { SetDlgItemInt(hdlg, IDC_SP1+i, track[i], 0); hTrack[i] = GetDlgItem(hdlg, IDC_SLIDER1+i); SendMessage(hTrack[i], TBM_SETRANGE, 0, 255<<16); SendMessage(hTrack[i], TBM_SETPOS, TRUE, track[i]); }*/
SetDlgItemInt(hdlg, IDC_SP1, track[0], 0); hTrack[0] = GetDlgItem(hdlg, IDC_SLIDER1); SendMessage(hTrack[0], TBM_SETRANGE, 0, 255<<16); SendMessage(hTrack[0], TBM_SETPOS, TRUE, track[0]);
SetDlgItemInt(hdlg, IDC_SP2, track[1], 0); hTrack[1] = GetDlgItem(hdlg, IDC_SLIDER2); SendMessage(hTrack[1], TBM_SETRANGE, 0, 255<<16); SendMessage(hTrack[1], TBM_SETPOS, TRUE, track[1]);
SetDlgItemInt(hdlg, IDC_SP3, track[2], 0); hTrack[2] = GetDlgItem(hdlg, IDC_SLIDER3); SendMessage(hTrack[2], TBM_SETRANGE, 0, 255<<16); SendMessage(hTrack[2], TBM_SETPOS, TRUE, track[2]); return TRUE; case WM_COMMAND: switch(LOWORD(wParam)) { case IDC_RADIO1: color_dlg[0]=RGB(track[0],track[1],track[2]); break; case IDC_RADIO2: color_dlg[1]=RGB(track[0],track[1],track[2]); return TRUE; case IDC_RADIO3: color_dlg[2]=RGB(track[0],track[1],track[2]); return TRUE; case IDC_RADIO4: color_dlg[3]=RGB(track[0],track[1],track[2]); return TRUE; case IDC_RADIO5: color_dlg[4]=RGB(track[0],track[1],track[2]); return TRUE; case IDC_RADIO6: color_dlg[5]=RGB(track[0],track[1],track[2]); return TRUE; case IDC_RADIO7: color_dlg[6]=RGB(track[0],track[1],track[2]); return TRUE; case IDC_RADIO8: color_dlg[7]=RGB(track[0],track[1],track[2]); return TRUE; case IDC_RADIO9: color_dlg[8]=RGB(track[0],track[1],track[2]); return TRUE; case IDC_RADIO10: color_dlg[9]=RGB(track[0],track[1],track[2]); return TRUE;
case IDOK: for( i=0;i<10;i++) crColor[i]=color_dlg[i]; InvalidateRect(GetParent(hdlg),NULL,1); EndDialog(hdlg,TRUE); return TRUE;
case IDCANCEL: EndDialog(hdlg,FALSE); return TRUE; default: return FALSE;
} case WM_HSCROLL: /* for(i=0;i<3;i++) { track[i] = LOWORD(SendMessage(hTrack[i], TBM_GETPOS, 0, 0)); SetDlgItemInt(hdlg, 1025+i, track[i], 0); }*/ track[0] = LOWORD(SendMessage(hTrack[0], TBM_GETPOS, 0, 0)); SetDlgItemInt(hdlg, IDC_SP1, track[0], 0);
track[1] = LOWORD(SendMessage(hTrack[1], TBM_GETPOS, 0, 0)); SetDlgItemInt(hdlg, IDC_SP2, track[1], 0); track[2] = LOWORD(SendMessage(hTrack[2], TBM_GETPOS, 0, 0)); SetDlgItemInt(hdlg, IDC_SP3, track[2], 0); return TRUE;
default: return FALSE; } return FALSE; }
|
|