Skocz do zawartości

Aspect

Członkowie
  • Postów

    0
  • Dołączył

  • Ostatnio

    Nigdy

Wszystko napisane przez Aspect

  1. Aspect

    UserKontrol?

    No dobra, to teraz (dla przycisku stykającego się z krawędzią) najedź na przycisk, naciśnij klawisz myszy, zjedź trzymając, puść klawisz i najedź spowrotem. ;)
  2. Aspect

    Duzy problem ! Serio

    Oprócz tego co napisałem post wyżej musisz jeszcze wjeść w opcje projektu, na zakładkę parameters i w polu C++ Compiler wstawić -Wno-deprecated.
  3. Aspect

    Duzy problem ! Serio

    Zrób tak: case 1: { ofstream fout("c:\\tekst.txt"); fout<<"jakis text do zapisu"; fout.close(); } break;
  4. Aspect

    Duzy problem ! Serio

    Przede wszystkim napisz co to za błędy. Napisz jakie pliki nagłówkowe dołączasz. W ciemno trudno jest cokolwiek powiedzieć.
  5. Aspect

    UserKontrol?

    Wkleiłem Twoją funkcję obsługi (żywcem) do kodu kontrolki i... 1. Wywołując tę funkcję dla hfFlateButton kasujesz obiekt czcionki, z którego korzysta cały dialog box i wszystkie jego kontrolki-dzieci (w związku z tym przy kolejnym odmalowaniu okna czcionka zmiania się na standardową - tę dużą, pogrubioną). Ogólnie uważam, że nie powinno się kasować obiektów, których się nie stworzyło. 2. Przycisk rzeczywiście wraca do stanu pierwotnego po zasłonięciu go klientem poczty, ale niestety dopiero po najechaniu myszą na okno-rodzica FlatButtona. //edit 3. Ustaw przycisk tak aby jego krawędź stykała się z krawędzią okna, albo tak aby trochę za nią wychodził. Najedź na przycisk i zjedź z niego zjeżdżając jednocześnie z okna-rodzica. Przycisk pozostaje wypukły.
  6. Może ta instrukcja Ci pomoże.
  7. Aspect

    UserKontrol?

    Sprawdziłem w praktyce algorytm, który napisałem powyżej (użyłem komunikatu WM_MOUSEMOVE). Nie zauważyłem błędnego działania kontrolki przy szybkim zdejmowaniu myszy z przycisku. Problem pojawia się natomiast w momencie kliknięcia przycisku "Kontakt", kiedy to otwiera się okno domyślnego klienta poczty i zasłania przycisk. Po ponownym wyświetleniu okna programu testowego przycisk cały czas jest wypukły (do ponownego naciśnięcia go). Marcinie, rozwiń proszę swój pomysł i napisz jak, według Ciebie, należało by go zrealizować. Salwadore, dzięki za cenną uwagę. Dodam tylko, że w przypadku użycia tego stylu, po skończeniu używania kontrolki należy jej klasę "odrejestrować" funkcją UnregisterClass();. Ps. Rozumiem, że jest to ograniczenie dla całego systemu? Czy ktoś w związku z tym orientuje się ile maksymalnie timerów system może obsłużyć? (Wrzuciłem do aplikacji 30 przycisków i wszystko działało jak należy - dla większej ilości nie sprawdzałem.)
  8. Aspect

    UserKontrol?

    Hehe, dzięki za uznanie ;). Jasne, że można to zrobić na kilka sposobów. Sam miałem pewne opory przed timerem, ale ten pomysł jako pierwszy rozwiązał wszystkie moje problemy z wejścem/wyjściem myszy z obszaru kontrolki, więc go zostawiłem. Alternatywne rozwiązanie praktycznie podał wyżej już sam Marcin. W komunikacje WM_NCHITTEST (można też użyć WM_MOUSEMOVE): 1. Przechwytujemy ruchy myszki ( używamy SetCapture(); ). 2. Sprawdzamy, czy mysz znajduje się w obszarze kontrolki (ze względu na to, że użyliśmy SetCapture(); nie możemy być tego pewni). 3. Jeżeli tak, to ustawiamy odpowiednią zmienną (wMouseOver w przkładzie do FlatBtn) na true 4. Jeżeli nie (mysz zeszła znad obszaru kontrolki), to ustawiamy tę zmienną na false i zwalniamy przechwytywanie myszy ( ReleaseCapture(); ) Nie wiem jak to będzie z przechwytywaniem tego komunikaty przy szybkich ruchach myszy, ale uważam, że nie powinno być z tym problemów (w wolnej chwili sprawdzę).
  9. Dokładnie o tym myślałem - widocznie źle zrozumiałem pomysł piasia(zasugerowałem się jednym z postów na jakimś forum o programowaniu, w którym duże liczby przechowywał ktoś jako tablice intów, przy czym w każdym polu tablicy była osobna cyfra dziesiętna). Miałem tutaj na myśli bardziej łatwość implementacji niż oszczędność pamięci. Wydawało mi się, że prościej jest zaprogramować człowiekowi działania w naturalnym dla niego systemie dziesiętnym niż łatwiejszym w realizacji sprzętowej systemie binarnym. Co do preprezentacji liczb (binarnie) jako tablicy charów lub intów, to myślę że typ tutaj nie ma znaczenia - 8-elementowa tablica charów przechowuje tyle samo informacji co 2-elementowa tablica intów.
  10. Aspect

    bool

    Niestety, zmienna typu bool zajmuje przynajmniej jeden bajt - nie ma fizycznej możliwości reprezentacji jakiegokolwiek typu o liczbie bitów mniejszej niż osiem. Ja myślałem już nad tym "marnotrawstwem pamięci" (chociaż w dzisiejszych czasach, przy możliwościach dzisiejszych komputerów nikt na to nie zwraca uwagi) i jedyne co mi przyszło do głowy, to stworzenie sobie własnego typu (klasy) TablicaBitów. Trzeba wtedy przeciążyć sobie operator indeksowania (operator[]) i kontrolować wielkość tej tablicy. Mimo wszystko jednak jednoelementowa tablica bitów będzie zajmowała tyle samo co ośmioelementowa (1 bajt), a dziewięcioelementowa tyle samo co szesnasto... itd. :?
  11. Aspect

    Parę pytań :)

    Heh, też muszę sobie coś takiego w wolnej chwili skrobnąć. Ale dwa razy coś takiego Ci wyskoczyło (tam w oknie rozmowy są dwie kontrolki do wyświetlania)? Nie zmienia to jednak faktu, że fajnie by było mieć kontrolkę wyświetlającą html. ;-)
  12. Aspect

    Parę pytań :)

    W GG to chyba rzeczywiście jest kontrolka HtmlView, bo mi tez sie taka strona kilka razy już wyświetliła. Poszperałem torchę w msdnie i na googlach i wywnioskowałem (żadnych jednoznacznych informacji nie znalazłem), że można coś takiego zrobić w MFC (tam jest odpowiednia kontrolka, ale używa klas Microsoftu :( ). Qbu$ wrzuć tu kod funkcji obsługi subclassowanego edita, może tam jest jakiś błąd.
  13. Aspect

    Okno na srodku ekranu

    Najwyraźniej nie zrozumiałeś propozycji Piasia (prawdopodobnie dlatego, że nie została napisana w l33t). Na przyszłość dokładniej czytaj posty, bo przez wyśmiewanie dobrych podpowiedzi sam narażasz się na śmieszność.
  14. Aspect

    jak zrobić DLLa?

    Zanim zadacie pytanie na forum zajrzyjcie na stronę do artykułów lub działu FAQ. https://www.winapi.org/index.php?option=content&task=view&id=51&Itemid=30
  15. Aspect

    Przycisk

    Bo na standardowym przycisku mozna wyświetlać albo tylko ikonę albo tylko tekst.
  16. Aspect

    Przyciski

    Ja miałem podobny problem i okazało się, że nie używałem funkcji InitCommonControls (lub InitCommonControlsEx). Myślę też, że wygląd kontrolki nie zależy od tego, czy użyje się funkcji CreateWindow czy CreateWindowEx.
  17. Podejrzewam, że samo wpisanie nazwy biblioteki nie wystarczy jeżeli RUF3K nie ma ustawionej ścieżki na katalog z bibliotekami. RUF3K -> w opcjach linkera wciśnij guzik Add Library or Object i znajdź bibliotekę libwinmm.a. Powinna się znajdować w katalogu w którym masz zainstalowane Dev, w podkatalogu lib.
  18. Aspect

    Pytanie o Display

    A po czyjej? Po stronie Twojego kolegi, u którego nie działa? Niestety (i to nie jest zdanie kierowane tylko do szatkusa, ale do wszystkich) winę za to, że program nie działa w 99.999% przypadków ponosi programista. Bardzo dobrze natomiast, że spawdzasz działanie swojego programu na różnych komputerach i systemach. Napisz z jakimi parametrami wywołujesz tę funkcję, wklej kawałek kodu - wtedy na pewno znajdzie się przyczyna Twoich kłopotów. Po 1. Nawet jeżeli tak bardzo oburzają Cię czyjeś wypowiedzi, to mimo wszystko uważam, że można to okazać w bardziej kulturalny sposób. Po 2. To forum jest właśnie po to, żeby zwracać się tu ze swoimi pytaniami na temat WinAPI (w chwili kiedy samemu nie można już sobie poradzić). Problem, który Tobie wydaje się śmieszny, a jego rozwiązanie oczywiste, może sprawiać innym wiele kłopotów. Nie wyśmiewaj się więc z postów, a przede wszystkim nie obrażaj osób korzystających z forum!
  19. Aspect

    Dec C++ problem

    To chyba trzeba dodać do FAQ. Z menu Project należy wybrać opcję Project Options. W okienku, które się otworzy, na zakładce General należy zaznaczyć pole Support Windows XP Themes. W tym samym okienku, na zakładce Parameters trzeba kliknąć przycisk Add Library or Object i wybrać bibliotekę libcomctl32.a znajdującą się w katalogu: ...\Dev-Cpp\lib\. W kodzie programu na początku należy dodać linię #include <commctrl.h>, a potem, przed zarejestrowaniem klasy okna (albo zaraz po, to chyba obojetne jest) trzeba wywołać funkcję InitCommonControls lub InitCommonControlsEx.
  20. A ja bym był za tablicą charów - łatwiej je potem pobierać/wyświetlać, nadawać wartości zmiennym, a robota z przeciążaneim operatorów taka sama. Poza tym char w C/C++ zajmuje 4 razy mniej pamięci niż int ;-).
  21. Musisz sobie stworzyć brush (może być nawet w paski), a następnie przypisać go do zmiennej hbrBackground w strukturze WNDCLASS: HBRUSH hbr = CreateSolidBrush(RGB(0,0,128)); KlasaOkna.hbrBackground = hbr; Na koniec programu wypada, skasować stworzony wcześniej brush: DeleteObject(hbr);
  22. Aspect

    List

    Faktycznie, jak się wejdzie na główną stronę MSDNa to się można pogubić. Tutaj jest podstronka (MSDN Library), która umożliwia znalezienie opisu każdej funkcji C/C++ (a także innych), identyfikatorów , makr i innych przydatnych rzeczy. Należy tylko wpisać nazwę. Tu natomiast jest plik Win32.zip, który również zawiera opisy funkcji, makr, itp., z tym że w momencie gdy wpisujesz nazwę lista na dole skacze do pierwszego najbardziej podobnego hasła (alfabetycznie). Co jest baaaardzo pomocne jeżeli nie jesteś pewien czy funkcja, którą szukasz istnieje i zgadujesz tylko jej nazwę. Komunikaty ogólne windowsa zaczynają sie na WM_, buttonów BM_, pól edit EM_, listboxów LM_, czyli jak widać bardzo intuicyjnie. Powodzenia w odkrywaniu tajników programowania zdarzeniowego Windows. ;-)
  23. Tu nawet nie chodzi o różnice języków - WinAPI jest takie same w Delphi jak w C/C++. Twardy dał pełną odpowiedź na pytanie RUFK4 ;-) na końcu swojego postu: Wystarczyło tylko poszukać informacji jej temat w Googlach lub MSDNie.
  24. Aspect

    Komunikaty

    ??? Chyba chodzi o SendMessage(...);? Ogólnie (i szczegółowo ;-) ) wszystkie funkcje, komunikaty i makra opisane są na stronie MSDN.
  25. Powiedz mi, po co to na BOOL rzutujesz? Przyczyną zamazywania się okienka może być fakt (choć to mało prawdopodobne, ale sprawdź), że nie zwalniasz stworzonego przez siebie brusha. Wielokrotne wywołanie tej procedury (przy każdorazowym odrysowaniu się każdej kontrolki typu static na Twoim oknie) powoduje, że tworzy się bardzo wiele obiektów typu BRUSH, których potem nie kasujesz.
×
×
  • Utwórz nowe...