Beta Napisano Kwiecień 3, 2019 Autor Zgłoś Udostępnij Napisano Kwiecień 3, 2019 witam Stworzylem sobie okienko dialogowe za pomoca Dialogbox wrzucilem na nie scrollbox i powstal mi maly zgrzyt moj scroll nie chce sie poruszyc powiedzcie mi dlaczego prosze. Moj proble jest czysto ksiazkowy i nie moge znalez w nim bledu. podaje fragment kodu : BOOL CALLBACK dlg_menu (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { HWND hscroll; static int pos; switch (uMsg) { case WM_INITDIALOG: hscroll=GetDlgItem(hDlg,IDC_SCROLL); //w tym miejscu nawet nie przestawia mi sie pozycji scrola //ktory dla proby mial byc mniej wiecej na srodku if(SetScrollRange(hscroll,SB_VERT,1,4,false)==0) MessageBox(NULL,"no range","",NULL); if(SetScrollPos(hscroll,SB_VERT,2,false)==0) MessageBox(NULL,"no pos","",NULL); pos=2; //GetScrollPos(hscroll,SB_VERT); return true; case WM_VSCROLL: hscroll=(HWND)lParam; switch(LOWORD(wParam)) { case SB_LINEDOWN: pos=min(1,pos-1); break; case SB_LINEUP: pos=max(4,pos+1); break; case SB_THUMBPOSITION: case SB_THUMBTRACK: pos=HIWORD(wParam); break; default:return false } SetScrollPos(hscroll,SB_VERT,pos,false); return true; } } Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Complex Napisano Kwiecień 3, 2019 Zgłoś Udostępnij Napisano Kwiecień 3, 2019 NIe sprawdzalem calosci ale pierwszy blad jaki mi sie rzucił w oczy to uchwyt do tego scroll bar'a. Przy kazdym kolejnym komunikacie nie masz uchwytu do tego scroll'a. Zrob tak: ... static HWND hscroll; ... wtedy twoj uchwyt nie bedzie gubiony. pozdro Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Beta Napisano Kwiecień 8, 2019 Autor Zgłoś Udostępnij Napisano Kwiecień 8, 2019 Witam niestety ta poprawk nic nie zmienila. moim problem to brak komunikaty WM_VSCROLL zauwarzylem taka dziwna zaleznosc. Jesli zaslepie ten frgmen kodu to moje okno otrzymuje komunikat VM_VSCROLL jesli tego nie zrobieokno dialogowe nie otrzymuje tego komunikatu. Dlaczego tak jest ? Prosze niech ktos wczyta sie w ten kod ja nic w nim nie widze. /* if(SetScrollRange(hscroll,SB_VERT,1,4,false)==0) MessageBox(NULL,"no range","",NULL); if(SetScrollPos(hscroll,SB_VERT,2,false)==0) MessageBox(NULL,"no pos","",NULL); */ Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Complex Napisano Kwiecień 11, 2019 Zgłoś Udostępnij Napisano Kwiecień 11, 2019 /* if(SetScrollRange(hscroll,SB_VERT,1,4,false)==0) MessageBox(NULL,"no range","",NULL); if(SetScrollPos(hscroll,SB_VERT,2,false)==0) MessageBox(NULL,"no pos","",NULL); */ Funkcje SetScrollRange i SetScrollPos przyjmują jako pierwszy parametr uchwyt okna ktore ma te paski przewijania a nie uchwyty paskow przewijania. Podobnie tutaj case WM_VSCROLL: hscroll=(HWND)lParam; switch(LOWORD(wParam)) lParam to uchwyt kontrolki. Dla f. SetScrollRange i ...Pos podawaj uchwycik okna rodzica dla tych paskow - u Ciebie - hDlg. Zainteresuj sie SetScrollInfo() ma wieksze mozliwoscie przez co ladniej wyglada. Powodzenia Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Beta Napisano Maj 12, 2019 Autor Zgłoś Udostępnij Napisano Maj 12, 2019 Spoznione dzieki Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.