Есть 2 диалога
| Код | BOOL CALLBACK ViewDialogProc(HWND hDlg,UINT Message,WPARAM wParam, LPARAM lParam) { static HWND hPictureWnd;
switch (Message) { case WM_INITDIALOG: hPictureWnd=GetDlgItem(hDlg,IDC_STATIC); SetWindowText(hDlg,ViewDialogProc); return TRUE; case WM_CLOSE: EndDialog(hDlg,IDCANCEL); return TRUE;
} return FALSE; };
|
И второй
| Код | BOOL CALLBACK TrackDialogProc(HWND hDlg,UINT Message,WPARAM wParam, LPARAM lParam) { static HWND hTrackbarWnd; static char sVal[20];
switch (Message) { case WM_INITDIALOG: hTrackbarWnd=GetDlgItem(hDlg,IDC_SLIDER); SetWindowText(hDlg,sDlgSliderCaption); SetDlgItemText(hDlg,IDC_EDIT_MIN,sMin); SetDlgItemText(hDlg,IDC_EDIT_MAX,sMax); if (!Dot) sprintf(sVal,"%d%s",nSliderBegin*(int)fSliderK+(int)fSliderB,ch); else sprintf(sVal,"%d%s",(int)pow(2,nSliderBegin),ch);
SetDlgItemText(hDlg,IDC_EDIT_VAL,sVal); SendMessage(hTrackbarWnd,TBM_SETRANGE,TRUE, MAKELONG(nSliderMin,nSliderMax)); SendMessage(hTrackbarWnd,TBM_SETTICFREQ,nSliderStep,nSliderMin); SendMessage(hTrackbarWnd,TBM_SETPOS,TRUE,nSliderBegin); SetFocus(hTrackbarWnd); return TRUE;
case WM_HSCROLL: if (!Dot) sprintf(sVal,"%d%s",SendMessage(hTrackbarWnd,TBM_GETPOS,0,0)* (int)fSliderK+(int)fSliderB,ch); else sprintf(sVal,"%d%s",(int)pow(2,SendMessage(hTrackbarWnd,TBM_GETPOS,0,0)),ch);
SetDlgItemText(hDlg,IDC_EDIT_VAL,sVal);
return TRUE;
case WM_CLOSE: Dot=FALSE; EndDialog(hDlg,IDCANCEL); return TRUE;
case WM_COMMAND: switch(LOWORD(wParam)) { case IDOK: if (!Dot) nSliderResult=SendMessage(hTrackbarWnd,TBM_GETPOS,0,0)* (int)fSliderK+(int)fSliderB; else nSliderResult=pow(2,SendMessage(hTrackbarWnd,TBM_GETPOS,0,0));
Dot=FALSE; EndDialog(hDlg,IDOK); return TRUE;
} break; } return FALSE; };
|
Второй диалог работает. А вот когда вызываю первый появляется второй. Вызов в меню первого
| Код | case ID_VIEWRESULT: { strcpy(pDlgViewCaption,"View Result"); }
|
Второго
| Код | case ID_MEDIANLINE: if(Current) { strcpy(sDlgSliderCaption,"Median filter aperture"); nSliderMin=1;nSliderMax=10; nSliderStep=1;nSliderBegin=1; strcpy(sMin,"3"); strcpy(sMax,"21"); ch[0]=0;fSliderK=2;fSliderB=1; if (GetTrackValue()==IDOK && nSliderResult!=0) { MedianLineFilter(Current,Next,(BYTE)nSliderResult); Current=Next; InvalidateRect(hWnd,NULL,TRUE); } }; return;
} };
|
Чё не так? |