Skocz do zawartości

Aspect

Członkowie
  • Postów

    0
  • Dołączył

  • Ostatnio

    Nigdy

Aspect's Achievements

Newbie

Newbie (1/14)

0

Reputacja

  1. Aspect

    mdi+WM_SIZE

    Coś musisz mieć skopane w kodzie. Może gdzieś break'a nie postawiłeś? U mnie z obsługą tego komunikatu okna wyświetlają się normalnie.
  2. 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;
  3. 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 ].
  4. Aspect

    double buffering w gdi

    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.
  5. Aspect

    C#

    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".
  6. Odpowiedź na to pytanie wrzuciłem do FAQ (TUTAJ).
  7. W DLLkach w Dev (nie wiem, jak jest w Visualu z DLLkami, ale myslę, że podobnie) trzeba niestety dolinkować libgdi32.a.
  8. 1. Tak jak rock_player napisał, najprościej będzie obsłużyć komunikat WM_CTLCOLORBTN. Jako WPARAM dostajesz tam kontekst urządzenia, wystarczy więc gdy użyjesz funkcji SetTextColor(). 2. Służy do tego styl BS_LEFT
  9. 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.
  10. Aspect

    Generator

    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.
  11. Aspect

    Problem z MessageBox

    Spróbuj jako pierwszy parametr podać uchwyt Twojego okna zamiast 0.
  12. Aspect

    Plik ini

    Do porównywania stringów polecam używać funkcji strcmp.
  13. Aspect

    Blad

    Ja sie szybciutko wytłumaczę ;-). Pinolec oparł aplikacje o starą wersję szkieletu (w której były tylko moje dane :? ) Wysłem mu jednak niedawno nową, poprawioną.
  14. 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).
  15. 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ć ;-).
×
×
  • Utwórz nowe...