Skocz do zawartości

Burn

Członkowie
  • Postów

    0
  • Dołączył

  • Ostatnio

    Nigdy

Posty napisane przez Burn

  1. Witam!

    Wielkość pliku możesz pobrać za pomocą funkcji GetFileSize parametry sprawdź w helpie bo niepamętam a nie mam w tej chwili czasu szukać.
    Wiem że pierwszym parametrem jest uchwyt pliku który możesz uzyskać
    otwierając plik za pomocą funkcji CreateFile.
    Innym sposobem na pobranie wielkości pliku jest użycie funkcji FindFirstFile w której jako pierwszy parametr podajesz nazwę pliku a jako
    drugi wskaźnik na strukturę WIN32_FIND_DATA w której jedną ze zwracanych informacji o pliku jest własnie jego wielkość.

    Gdyby jeszcze coś było niejasne to napisz.
    Pozdrowienia

  2. Witam!

    Oczywiście to co napisał codeguy oczywiście działa, tylko jedna rzecz mnie zastanawia po co za każdym wywoaniem komunikatu WM_CTLCOLOREDIT wywoływać CreateSolidBrush ? Ja proponuję to zrobić tylko przy tworzeniu okna tak jak to opisałem wyżej. Chyba że mamy zamiar zmieniać klor kontrolki w trakcie działania programu (gdy okno na którym jest kontrolka w omawianym przypadku edit jest otwarte) to wtedy troche inna bajka.

    W każdym razie korzystając z tego co napisaliśmy powinieneś sobie poradzić bez problemu.

    Gdyby coś było jednak niejasne to pisz na forum albo GG: 5726447 jednak tak jak pisałem nie programuje w C wiec niestety nie moge podać Ci gotowego kodu w tym języku.

    Proszę o opinie na temat czy warto wywoływać CreateSolidBrush przy każdym wywołaniu funkcji WM_CTLCOLOREDIT ponieważ ja tego unikam ale nie jestem do końca przekonany czy słusznie.

    Pozdrowienia

  3. Witam!

    Aby zmienić kolor tła kontrolki EDIT trzeba samodzielnie obsłużyć komunikat WM_CTLCOLOREDIT

    To masz przykład ale w MASM ponieważ ja nie piszę w C++ i mógłbym coś pomylić w tłumaczeniu.

    
    .data
         hBrush dd ?
    
    .code
    WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
    
    .IF uMsg==WM_CREATE
         ......
         invoke CreateSolidBrush, 000000FFh ;Na przykład czerwone tło 
         mov hBrush, eax
         .......
    .ELSEIF uMsg==WM_DESTROY
         .......
         invoke DeleteObject, hBrush 
         .......
    .ELSEIF uMsg==WM_CTLCOLOREDIT
         .......
         invoke SetTextColor,wParam, 0000FFFFh ;Na przykład żółty tekst
         invoke SetBkColor,wParam,000000FFh ;Na przykład czerwone tło pod tekstem
         mov eax, hBrush
         ret
    .ELSEIF uMsg==WM_COMMAND
         .......
    .ENDIF
         .......
       
    WndProc endp
    
        

    Mam nadzieję że ten przykład Ci pomoże. A może znajdzie sie ktoś kto Ci to przetłumaczy na C++.
    Generalnie chodzi o to że przy tworzeniu okna musisz sobie utwożyć Brush o określonym kolorze i zachować jego uchwyt w zmiennej. Póżniej podczas obsługi komunikatu WM_CTLCOLOREDIT możesz zmienić kolor tekstu (SetTextColor) i kolor tła pod tekstem (SetBkColor). Aby zmienić kolor tła całego EDIT-a trzeva zwrócić uchwyt utworzonego pędzla (hBrush) . Oczywiście przy niszczeniu okna trzeba ten uchwyt zwolnić (DeleteObject)

    Mam nadzieje że to co napisałem jest choć cześciowo zrozumiałe :D

    Dodam jescze że może być kłopot z samodzielną obsługą komunikatu WM_PAINT przynajmniej o ile dobrze pamientam miałem z tym problemy
    gdy samodzielnie obsługiwałem komunkat WM_CTLCOLORSTATIC
    nie wiem na 100% jak przy editach ale ostrzegam. Sprawdź sam.

    Niestety nie znam innego być może lepszego i prostrzego sposobu :(

    Pozdrowienia

  4. Witam

    Oczywiście one_eddie ma rację wiec poprawny kodzik wygląda tak:

    LoadImage(NULL, "Nazwa Pliku Ikony", IMAGE_ICON, NULL, NULL, LR_LOADFROMFILE | LR_DEFAULTSIZE)
    

    Pomyliłem operatory ale tak jak pisałem nie znam dobrze tego języka (jak widać nawet podstaw) :(

    Dziekuję za zwrócenie uwagi. Mam nadzieję że wszyscy zainteresowani wybaczą mi ten błąd.

    Pozdrowienia
    kAzek

  5. Witam!
    Do załadowania ikony z pliku służy funkcja LoadImage
    (możesz nią ładować też kursory i bitmapy)

    Ja używam MASM-a wiec mogłem coś sknocić w tłumaczeniu na C++
    ale napewno jest to ta funkcja szczególy dotyczące parametrów znajdziesz w helpie

    LoadImage( 0, "Nazwa Pliku Ikony", IMAGE_ICON, 0, 0, LR_LOADFROMFILE || LR_DEFAULTSIZE)

    Pozdrowienia
    kAzek

×
×
  • Utwórz nowe...