Skocz do zawartości

Aspect

Członkowie
  • Postów

    0
  • Dołączył

  • Ostatnio

    Nigdy

Posty napisane przez Aspect

  1. codeguy napisał:
    ...np w dokumentacji często zamiast gwiadki dodany jest przedrostek LP.

    Nie "zamiast". Dodawanie przedrostka LP, to tylko taka konwencja w nazewnictwie struktur, mająca dać do zrozumienia programiście (nie kompilatorowi), że ma do czynienia z wskaźnikiem (LP od Long Pointer). Gwiazdka, natomiast, to samo "daje do zrozumienia" właśnie kompilatorowi.
    Oto przykładowa, prosta struktura, którą znalazłem w MSDNie:

    typedef struct _MENUBUTTONDATA {
        int idCommand;
        int x;
        int y;
    } MENUBUTTONDATA, *LPMENUBUTTONDATA; 
    
  2. 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 ].

  3. Jeżeli masz kod, który nie działa najlepiej go tutaj wkleić.

    Podwójne buforowanie ja implementuję tak:

            case WM_PAINT:
            {
                HDC hDC; // (1)
                HDC hdcMem; // (2)
                PAINTSTRUCT ps;
                hDC=BeginPaint(hwndChild,&ps); // (3)
                hdcMem=CreateCompatibleDC(hDC); // (4)
                ... // (5)
                BitBlt(hDC,0,0,200,200,hdcMem,0,0,SRCCOPY); // (6)
                DeleteDC(hdcMem); // (7)
                EndPaint(hwndChild,&ps); // (8)
            }
            break;

    Komentarze do linijek:
    1. Deklarujesz uchwyt kontekstu ekranu (pierwszoplanowy).
    2. Deklarujesz uchwyt kontekstu w pamięci (drugoplanowy).
    3. Zaczynasz rysować (pobierasz uchwyt kontekstu ekranowego).
    4. Tworzysz kontekst kompatybilny z ekranowym (w sensie ilości kolorów i innych parametrów) i pobierasz uchwyt do niego.
    5. Tu sobie rysujesz na kontekscie w pamięci, czyli np. : Ellipse(hdcMem,50,50,100,100);.
    6. Kopiujesz szybko zawartość jednego kontekstu do drugiego.
    7. Zwalniasz kontekst w pamięci.
    8. Kończysz rysowanie.

  4. Na pewno zawsze warto poznać nową technologię (a ta, w dodatku, ma według mnie przyszłość - już przyjęła się w firmach produkujących oprogramowanie, ze względu na dużą intuicyjność i łatwość tworzenia aplikacji).

    Moja rada: Pobaw się tym przez tydzień lub dwa i sprawdź czy Ci się spodoba. Ja w C# zacząłęm pisać w te wakacje i do WinAPI niestety już nie wróciłem.

    Co do książki to polecam "Język C# i Platforma .NET" Andrew Troelsena. Myślę, że jest dobra dla osób zaczynających swoją przygodę z "siszarpem" i "dotnetem".

  5. Domyślam się, że pobierasz czcionkę z okna rodzica. Jeżeli tak, to obawiam się, że i tak musisz stworzyć sobie nową czcionkę, bo wszelkie zmiany na czcionce rodzica odbiją się na innych zawieranych przez niego kontrolkach (buttonach, text boxach itp.).

    Ja bym Twój problem rozwiązał następująco (też robiłem kontrolkę - link ;)):
    1. Pobrałbym uchwyt do czcionki rodzica.
    2. Pobrał informacje o czcionce do struktury LOGFONT.
    3. Zminił w tej strukturze pole odpowiadające za podkreślenie.
    4. Stworzył sobie na podstawie tej struktury nową czcionkę.
    (Dokładny kod masz tu: https://www.winapi.org/forum/viewtopic.php?t=553&highlight=getobject, ostatni post.)

    I teraz można wypisać za pomocą tej czcionki tekst i ją usunąć lub zapisać do późniejszego użycia.

  6. one_eddie napisał:
    Myslisz sie napisalem wszystko co trzeba, cyt: "ze mam taki pattern [0-3]mid[4-7]end"

    Niestety, Piasiu ma rację. Z Twojego postu bardzo trudno domyslić się o co Ci dokładnie chodzi. Co więcej, nawet po Twoim "wyjaśnieniu" w dalszym ciągu nie wiem czy masz na myśli wyrażenia regularne, czy coś innego.

    Proponuję lekturę (nie będącą co prawda odpowiedzią na Twój problem) tekstu pod tym linkiem.

  7. Ja zrozumiałem, że sapciowi1 chodziło o te kontrolki, które ustawia się na dialogboxie podczas graficznego projektowania aplikacji, czyli o wizualne edytowanie pliku zasobów (zamiast pisac w kodzie PUSHBUTTON... przeciągamy i upuszczamy symbol przycisku na dialogboxa).

  8. Używając VS 6 odniosłem wrażenie, że są rysowane (przemawia za tym fakt, że kontrolki użytkownika były przedstawiane za pomocą szarych prostokątów, a zwykłe kontrolki po ustawieniu stylu WinXP nadal miały stary wygląd). Ale juz w VS .NET (przynajmniej w C#) to wygląda jakby to były normalne kontrolki, albo chociaż graficzne elementy rysowywane za pomocą funkcji odrysowywującej kontrolki.
    Ale tak naprawdę to trudno to stwierdzić - trzeba by było chyba napisać list do Billa i się spytać ;-).

  9. Nie jestem pewien czy dobrze zrozumiałem Twój problem. Jeżeli chodziło Ci o maksymalizację okna-dziecka w okienku MDI to służy do tego komunikat WM_MDIMAXIMIZE.

    A tak off-topic jeszcze to nie skarżcie się, że nikt nie odpowiedział na Wasz post (zwłaszcza jeżeli wisi on dopiero 8 godzin) - nie każdy odwiedza forum regularnie/ma stału dostęp do netu. Czasmi też wina może leżeć po stronie źle sformułowanego pytania, więc jeżeli od dłuższego czasu nikt nie odpowiada, a bardzo zależy wam na odpowiedzi spróbójcie je przeformułować - uczynić bardziej zrozumiałym.

  10. Zdaje się, że nie masz pliku parser.h i calego katalogu libxml w katalogu, w którym Visual przechowuje pliki nagłówkowe. Znajdź sobie taki katalog (u mnie jest to: <Katalog Visuala>\VC98\Include) i skopiuj tam libxml razem z zawartośćią.

  11. Jeżeli chodzi o otwieranie okna przeglądarki lub domyślnego klienta poczty, to jest to opisane na stronie w dziale FAQ.
    Jeżeli chodzi o link, to albo musisz sobie taką kontrolkę sam napisać, albo znależć w internecie, gdyż nie jest to standardowa kontrolka Windows.

  12. Różne fajne operacje na stringach będących ścieżkami do pliku oferuje biblioteka Shlwapi.dll. Można je łatwo znależć w MSDNie, gdyż zaczynają się "prefiksem" Path.
    Na przykład funkcja:

    BOOL PathRemoveFileSpec(
        LPTSTR pszPath
    );

    która jest odpowiedzią na Twój post.

  13. U mnie z czasem wygląda następująco:

    Dni powszednie:
    8:30 - 17:00 pracuję (baaardzo ograniczonty dostęp do netu - znaczy pracować właśnie muszę),
    17:00 - 00:00 jestem w domu, w Warszawie (mam kompa, ale nie mam netu, no chyba, że do Twardego będę wpadał)
    Weekendy:
    Jestem w domu, w Łodzi (mam net ale nie mam kompa ;-), nie no tak serio to mam, ale p75)
    W czasie wolnym od pracy teoretycznie powinienem się doszkalać. Poza tym, dobrze by było gdybym pisał pracę magisterską, i jeszcze taki projekt jeden ze szkoły.

    W związku z powyższym chyba nie będę miał czasu na jednoczesne pisanie kodu i zarządzanie projektem, więc będę musiał z czegoś zrezygnować (osobiście wolałbym zostawić sobie samo projektowanie, ale jak ktoś jednak chciałby wskoczyć na miejsce organizatora, to nie widzę przeszkód).

    Napiszcie wszyscy dokładnie ile macie czasu, od kiedy i w jakich przedziałach. Przypomnijcie mi również, kto już skończył swoją część projektu.

    Mam nadzieję, że uda się nam osiągnąć zamierzone cele mimo przeciwności losu (bradziej pasuje chyba "przeciwności czasu").

  14. Nie musi umieszczć poza. Wystarczy jak przycisk będzie się stykał z krawędzią okna, albo jak przycisk będzie trochę dalej ale akurat będzie dużo obliczeń i komunikaty będą wysyłane rzadziej. Z resztą tak samo dzieje się jak przysłonisz przycisk innym oknem.
    Poza tym wykonaj sobie jeszcze taki eksperyment:
    Zrób sobie przycisk który nic nie otwiera (powiedzmy niech zmienia tekst okna). Najedź na niego, naciśnij klawisz myszy i puść bez poruszania myszką.

×
×
  • Utwórz nowe...