r4dical Napisano Październik 9, 2019 Autor Zgłoś Udostępnij Napisano Październik 9, 2019 witam. probuje uporac sie z kontrolka o nazwie status-bar. mam taki kod: int StatusParts = 5; long StatusPartsWidth1[] = {80,160,240,320, -1}; hwndStatus = CreateStatusWindow( WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | CCS_BOTTOM , " status: nie zalogowany", hwnd, 990 ); SendMessage(hwndStatus, SB_SETPARTS, StatusParts, StatusPartsWidth1[0] ) ; powinienem otrzymac kontrolke podzielona na 5 czesci. przy uruchomieniu projektu wywala sie od razu i dostaje komunikat: Wyst¹pi³ problem z aplikacj¹ pusty.exe i zostanie ona zamkniêta. Przepraszamy za k³opoty. kiedy nie wysylam komunikatu SendMessage mam poprostu niepodzielony pasek statusu. zawsze podobala mi sie ta kontrolka w Wordzie i niedawno doczytalem sie gdzies, ze wystarczy wyslac do niej komunikat, zeby ja podzielic a potem dodac teksty nie za pomoca SetWindowText tylko rowniez SendMessage z komunikatem SB_SETTEXT. z tego co wiem to lParam z SendMessage chyba jest typu long a w opisie komunikatu dzielacego kontrolki pisze, ze lParam powienien byc (LPINT) czyli dlugi wsk. do int. Kiedy tap probuje skonstruowac ta funkcje to przy kompilacji dostaje, ze kompilator nie potrafi przekonwertowac wskaznika do int na long. podaje zatem pierwsza wartosc z tabeli i jakos dziala ale jak pisalem program konczy sie zanim zacznie. Normalnie zrobilbym to tak: SendMessage(hwndStatus, SB_SETPARTS, StatusParts, &StatusPartsWidth1) ; ale dostaje komunikat: cannot convert parameter 4 from 'long (*)[5]' to 'long' Kto poradzi jak to powinienem zrobic? Pozdrawiam Mariusz Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Burn Napisano Październik 9, 2019 Zgłoś Udostępnij Napisano Październik 9, 2019 Witam! Ponieważ nie mam narazie zainstalowanego VC++ (piszę w MASM i Delphi) nie mgę Ci podać konkretnego, sprawdzonego przykładu ale zobacz to: Tworzenie okna statusu: https://webmasterszukapracy.webpark.pl/windows/statusbar/statusbar_01.htm Inicjowanie okna statusu (to właśnie jest o podziale paska stanu na części): https://webmasterszukapracy.webpark.pl/windows/statusbar/statusbar_02.htm Pozdro Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Aspect Napisano Październik 9, 2019 Zgłoś Udostępnij Napisano Październik 9, 2019 Do Twojego kodu wkradł się mały błąd. W SendMessage zamiast wskaźnika na tablicę z rozmiarami części StatusBar'a podałeś po prostu jej pierwszy element. Poprawiony kod wygląda następująco (nie kompilowałem go, ale powinien działać): int StatusParts = 5; int StatusPartsWidth1[] = {80,160,240,320, -1}; hwndStatus = CreateStatusWindow( WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | CCS_BOTTOM , " status: nie zalogowany", hwnd, 990 ); SendMessage(hwndStatus, SB_SETPARTS, (WPARAM) StatusParts, (LPARAM) StatusPartsWidth1 ) ; Ps. Starajcie się umieszczać kod na forum między odpowiednimi znacznikami: [ code ] ... [ /code ]. 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.