Jump to content

Phantasm

Members
  • Content Count

    0
  • Joined

  • Last visited

    Never
  • Days Won

    1

Phantasm last won the day on January 7

Phantasm had the most liked content!

Community Reputation

1 Neutral

About Phantasm

  • Rank
    Newbie
  1. przechwytujesz komunikat (w oknie rodzica) WM_CTLCOLORBTN hdcButton = (HDC) wParam; hwndButton = (HWND) lParam; i teraz robisz to na co masz ochotę SetBkMode, SetBkColor, SetTextColor, jeżeli chcesz ustawić "przezroczystość" to SetBkMode(hdc, TRANSPARENT); pozdrawiam :)
  2. Phantasm

    usuwanie z pliku

    hmm pierwsza myśl to przepisanie pliku do nowego pliku bez fragmentu do wykasowania, ale z kolei jeżeli chodzi Ci tylko o to żeby nie było żadnych znaczków to np wypełnić go spacjami, ale to nie jest najlepszy pomysł bo plik i tak będzie zajmował miejsce, jak do tej pory nie spotkałem się z funkcją która by zmniejszała wielkość pliku... jeżeli coś takiego istnieje czekam na dalsze posty :) pozdrawiam
  3. hmm ciężko to opisać po krótce, ale postaram się naprowadzić otóż pierwsza rzecz jaką robisz to przy wywołaniu CreateWindow (głównego okna) dodajesz styl WS_VSCROLL i teraz przechwytujesz dwa komunikaty: WM_SIZE oraz WM_VSCROLL; obsługa pierwszego zwykle wygląda tak: cxOkno = LOWORD(lParam); cyOkno = HIWORD(lParam). A teraz coś wiecej o paskach otóż każdy pasek przewijania ma swój że tak powiem zasięg, tzn istnieje x pozycji tego szarego prostokąta w tym pasku, np zakładając że okno ma 160 pikseli wysokości to możesz w nim wyświetlić tylko 4 rzędy swoich kontrolek edit, a zakładając że wszystkich rzędów masz 10 to suwak może być ustawiony w 6 pozycjach, gdy jest w pozycji 0 wyświetla pierwsze cztery, gdy jest w pozycji 1 wyświetla od drugiego do 5 rzędu, a gdy jest w pozycji 5 wyświetla ostatnie 4 rzędy kontrolek. Właśnie ilość tych pozycji ustawiasz za pomocą funkcji SetScrollRange (w tym przypadku podasz jej wartość ilośćwszystkich - cxOkno/40 - 1). Przechwytując komunikat WM_VSCROLL z wyrażnie LOWORD(wParam) otrzymujesz jakieś powiadomienie, może to być SB_LINEUP, SB_PAGEDOWN itp gdy otrzymasz np SB_LINEDOWN to wiesz że musisz teraz wyświetlić o kolejny rząd niżej tych kontrolek. Ukrywać kontrolki możesz np za pomocą funkcji ShowWindow. Jak widzisz nie jest to zbyt krótki temat, więc starałem się tylko dać Ci jakiś obraz tej sytuacji, po szczegóły odsyłam do dokumentacji poszczególnych funkcji, bądź do Petzolda :) Pozdrawiam
  4. Ponieważ używasz PeekMessage() co powoduje jedynie "zajrzenie" do kolejki komunikatów windows obadanie czy nic tam nie leży i oddanie sterowania do programu, a że masz to pięknie zrobione w pętli while(true) no to wykonuje to tak szybko jak tylko potrafi, polecam użycia while(GetMessage(&message, NULL, 0, 0) ) { TranslateMessage(&message); DispatchMessage(&message); } (no chyba że tam jeszcze będziesz chciał coś dodać co spowolni działanie programu) pozdrawiam
×
×
  • Create New...