Skocz do zawartości

Aspect

Członkowie
  • Postów

    0
  • Dołączył

  • Ostatnio

    Nigdy

Wszystko napisane przez Aspect

  1. Aspect

    List

    Nic nie zyskasz - mówiłeś tylko, że pod C działa, a pod C++ nie, więc pozostanie przy C mogło być pewnym, tymczasowym środkiem zaradczym :p.
  2. Aspect

    Okno typu CHILD

    Jeżeli chcesz koniecznie rysować w kontrolce Edit funkcjami textout lub drawtext (choc nie wiem czemu, ta kontrolka obsługuje wyświetlanie tekstu sama - ja bym wysłał do niej WM_SETTEXT), to odpowiedzią na Twoje pytanie jest punkt pierwszy mojego poprzedniego posta. :)
  3. Funkcjonalność taką oferuje kontrolka RichEdit.
  4. Aspect

    Control

    Do Twardego: Arkowi_17 wlasnie chodzi o to, że sobie zarejestrował własną kontrolkę o nazwie "suwak" i chciałby ją wyświetlić w dialogboxie. Jak znajde chwilke po zakończeniu semestru to napiszę arta o tym jak tworzyć własne kontrolki (dla tych co nie maja petzolda ;-) ). Do Arka_17: To, że dialog box z nią sie nie wyświetla, to znaczy że coś jest skopane albo przy rejestracji kontrolki (najpewniej) albo w jej funkcji obsługi. Na razie nie chce mi się niestety szukać błędu w Twoim kodzie (mam bardzo mało czasu) zwłaszacza, że jest wyświetlony bez tabulacji (prośba do wszystkich jak wklejacie kod używajcie znaczników [ code ]). Sam popróbój, poeksperymentuj - może Ci się uda. A jeżeli nei używasz obiektowości to zostaw program jako projekt C. PS. Do Twardego. Już poprzednio ten Avatar był okropny, ale teraz to już przesada. ;-)
  5. Aspect

    Okno typu CHILD

    Trochę nieprecyzyjnie zadałeś pytanie i w sumie nie wiadomo czy chodzi Ci o: 1. Narysowanie tego tekstu na jakiejś kontrolce w jej komunikacie WM_PAINT - w tym przypadku musialbyś subclassować kontrolkę i obsłużyć w jej funkcji obsługi ten komunikat. 2. Spowodować zmianę tekstu kontrolki dziecka (np. editboxa - jego zawartość to jakby tytul jego okienka), co spowoduje wypisanie się na niej tekstu - w tym przypadku musisz wysłać do niej komunikat WM_SETTEXT 3. O coś innego - w tym przypadku to ja nie wiem ;-)
  6. Aspect

    Ikona na przycisku

    Należy wysłać do buttona komunikat BM_SETIMAGE. SendMessage( (HWND) hWnd, // handle to destination window BM_SETIMAGE, // message to send (WPARAM) wParam, // image type (LPARAM) lParam // handle to the image (HANDLE) ); Parameters: wParam Specifies the type of image to associate with the button. This parameter can be one of the following values: IMAGE_BITMAP IMAGE_ICON lParam Handle to the image to associate with the button.
  7. Aspect

    Pliki i LPCSTR

    Można wysłać do niego komunikat LB_DIR z odpowiednio ustawionymi parametrami.
  8. Okienko otwierania pliku (pobierania nazwy otwieranego pliku): BOOL GetOpenFileName( LPOPENFILENAME lpofn // initialization data ); Okienko zapisywania pliku (pobierania nazwy): BOOL GetSaveFileName( LPOPENFILENAME lpofn // initialization data );
  9. Aspect

    Pliki i LPCSTR

    LPCSTR to skrót od angielskiego Long Pointer to Character STRing, czyli daleki wskaźnik do łańcucha znaków. Jak sama nazwa wskazuje typ ten jest równoważny typowi char*, więc zmienne tych typów można spokojnie przypisywać lub porównywać. Możesz użyć np. funkcji FileCopy, lub bardziej rozbudowanej (o możliwość uruchamiania specjalnej funkcji callback po każdej skopiowanej porcji danych i możliwość anulowania operacji) FileCopyEx. Chodzi Ci o "path"? Jeżeli tak, to ja takiej funkcji nie znam (być może istnieje). Pokombinuj z FindFirstFile i FindNextFile (możesz przerobić algorytm nicona do przeszukiwania zawartości dysku - zacznij przeszukiwać od wybranej ścieżki i jeżeli znaleziony plik będzie katalogiem to zapisuj jego nazwe do jakiejś tablicy/listy).
  10. Wkelj tutaj, albo gdzieś udostępnij, cały kod swojego programu, bo z tego co piszesz to błąd nie wynika ze złego wypełnienia struktury OPENFILENAME, tylko z jakiejś pomyłki, którą popełniłeś w innym miejscu. Tak na "ślepo" trudno jest cokolwiek powiedzieć.
  11. Jeżeli ta zmienna jest lokalna i nie jest statyczna, to w następnym wywołaniu procedury obsługi wartości, które podałeś w WM_CREATE nie będą już znane. Jeżeli tak samo masz w programie, to dialog OpenFileName nie będzie się otwierał. Tu Ci się po prostu chyba pomyliło, jak przepisywałeś na forum. Makro MAKEINTRESOURCE pobiera identyfikator(liczbowy) kontrolki i zamienia go na ciąg znaków. Ale to nie ma z Twoim głównym problemem żadnego związku raczej. Tak samo jak i punkt następny. To pole i tak jest u Ciebie ignorowane, poniewaz nie dałęś flagi OFN_ENABLETEMPLATE.
  12. Poniższy fragment kodu wklej sobie do funkcji obslugi Twojego dialog boxa: case WM_CTLCOLORSTATIC:{ SetTextColor ((HDC)wParam,RGB(0,0,255)) ; SetBkMode((HDC)wParam,TRANSPARENT); HBRUSH hbrStatic=CreateSolidBrush(RGB(255,0,0)); return (LRESULT) hbrStatic;} Zmienia on kolor tekstu na niebieski i kolor tła na czerwony we WSZYSTKICH staticach będących dziećmi tego dialog boxa. Polecam MSDN, tam są wszystkie funkcje dokładnie opisane.
  13. Służą do tego komunikaty WM_CTLCOLOR..., które muszą być obsłużone przez kontrolkę rodzica. Dostajesz w nim uchwyt do kontekstu urządzenia, w którym będą wyrysowanie kontrolki, więc musisz zmodyfikować po prostu ten kontekst.
  14. Aspect

    dev-c++ i kontrolki

    To nie wina kompilatora. Zamiast DIALOG daj DIALOGEX, to powinno rozwiazac problem.
  15. Aspect

    dev-c++ i kontrolki

    Jeżeli tworzysz kontrolkę za pomocą funkcji CreateWindow();, wyślij do niej komunikat WM_SETFONT. Jeżeli natomiast kontrolki są dziećmi dialogboxa, tworzonego z zasobów, to przed listą kontrolek w zasobach napisz np: FONT 8, "MS Shell Dlg", 400, 0, 0x1.
  16. Nie wiem, czy dokładnie o to Ci chodzi, ale do menu podręcznego najprościej chyba używać funkcji: BOOL TrackPopupMenu( HMENU hMenu, // handle to shortcut menu UINT uFlags, // options int x, // horizontal position int y, // vertical position int nReserved, // reserved, must be zero HWND hWnd, // handle to owner window CONST RECT *prcRect // ignored ); Jeżeli chodzi o pozycjonowanie, to tak jak Piasiu pisał pobierz współrzędne kursora funkcją GetCursorPos();, wpisz je do parametrów x i y, a parametr uFlags ustaw na TPM_RIGHTALIGN | TPM_BOTTOMALIGN (tray zazwyczaj znajduje się w prawym, dolnym rogu ekranu).
  17. Aspect

    Skracanie ścieżki

    Skrócenie ścieżki do żądanej długości w pixelach: BOOL PathCompactPath( HDC hDC, //kontekst urządzenia, na którym ma byc "wyrysowana" scieżka (potrzebny, żeby odczytać rozmiar czcionki) LPTSTR lpszPath, //tekst do skrócenia, tutaj znajdzie się też wynik UINT dx //żądana długość tekstu w pixelach ); Skrócenie ścieżki do żądanej ilości znaków: BOOL PathCompactPathEx( LPTSTR pszOut, //bufor wyjściowy LPCTSTR pszSrc, //bufor wejściowy UINT cchMax, //maksymalna żądana długość ciągu DWORD dwFlags //wartosc nie uzywana ); Obie funkcje w bibliotece Shlwapi.dll w wersji 4.71 i wyższych.
  18. Aspect

    Blad

    Oczywiście, że jest aktualny, tylko "się zawiesił" na czas semestru, kiedy to większość osób nie ma czasu. Mam nadzieję, że ten nieprzyjemny przestój nie zrazi Was do wspólnego programowania (choć już chyba trochę zraził) i kiedy tylko będzie więcej czasu zbierzemy się znowu do roboty.
  19. Aspect

    Odczyt pliku

    Funkcja strtok(char* string,char* seps); (a raczej jej wywołanie w pętli) dzieli string przy użyciu dowolnych separatorów. Przykładowy kod wykorzystujący tę funkcję zakoszony z MSDNa: #include <string.h> #include <stdio.h> char string[] = "A string\tof ,,tokens\nand some more tokens"; char seps[] = " ,\t\n"; char *token; void main( void ) { printf( "%s\n\nTokens:\n", string ); /* Establish string and get the first token: */ token = strtok( string, seps ); while( token != NULL ) { /* While there are tokens in "string" */ printf( " %s\n", token ); /* Get next token: */ token = strtok( NULL, seps ); } } i jego wynik: A string of ,,tokens and some more tokens Tokens: A string of tokens and some more tokens Jednak (jak widać powyżej) wykorzystuje ona biblioteke string.h i jej stosowanie w połączeniu ze strumieniami wydaje mi się mało "eleganckie". Poszukaj w MSDNie jakiegoś jej odpowiednika dla strumieni (na 90% będzie).
  20. Pisac mozna w Dev, a helpa uzywac Visualowego - ja tak robie 8).
  21. Aspect

    minGW

    Co do tych zasobów, to problem prawdopodobnie polegał na tym, że nie zaincludowałeś <windows.h> w pliku zasobów, w związku z czym, niezdefiniowane były stałe DS_MODALFRAME, WS_POPUP, WS_CAPTION, WS_SYSMENU. Poza tym w Dev zasoby obsługuje się noramalnie - dodajesz nowy plik do projektu -> zmieniaz mu nazwe na *.rc -> piszesz w nim skrypt zasobów -> i już powinno działać. Jeżeli nie działa to możesz spróbować odłączyć plik od projektu i dodać go na powrót. A, no i jeszcze jedna ważna sprawa - jeżeli zmienisz coś w pliku zasobów to musisz przy kompilacji wybrać opcję "Rebiuld All". Co do zmiany w opcjach kompilacji, to niestety trzeba się do tego przyzwyczaić i nauczyć (nie koniecznie musisz, przedzierać się przez dziesiątki stron dokumentacji - poeksperymentujesz, napiszesz kilka programów i w końcu dojdziesz do wprawy), z resztą jest to konieczne nie tylko w Dev - Visual też nie robi tego za Ciebie.
  22. Aspect

    minGW

    Nie za bardzo rozumiem, co masz na myśli pisząc: "rad, kruczków i zasad" (czy chodzi Ci o spis błędów, które wyrzuca kompilator i ich dokładny opis?). Rzuć też jakimś przykładowym błędem, będącym problemem z kompilatorem - ja też pisze w Dev i do tej pory z czymś takim się nie spotkałem. Pewnie już sam to znalazłeś, ale TUTAJ masz dokładną dokumentację MinGW.
  23. Aspect

    Toolbar w Rebar'ze

    Zakładam, że chodzi Ci o rozwiązanie Twojego problemu w WinAPI, bo w MFC robi się wszystko automatycznie 8) . Też miałem podobny problem z toolbarem i rebarem. Nie pamiętam dokładnie jak sobie poradziłem (problem rozwiązał się dosyć szybko), napiszę Ci jednak na co warto zwróćić uwagę: Toolbar musi być dzieckiem rebara, a rebar rodzicem toolbara (trochę to może śmiesznie brzmieć ;) ) Pobaw się trochę stylami obu pasków (może jeden ze stylów jaki nadałeś powoduje te dziwne zachowania). U mnie działające paski mają następujące style: Rebar:WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN | WS_CLIPSIBLINGS | RBS_BANDBORDERS | RBS_VARHEIGHT | CCS_NODIVIDER Toolbar:WS_CHILD | WS_VISIBLE | TBSTYLE_TOOLTIPS | CCS_NODIVIDER | CCS_NORESIZE | CCS_NOMOVEY Mam nadzieję, że choć trochę pomogłem. :) W razie dalszych problemów, rzuć kodem - wtedy zawsze łatwiej znależć błąd.
×
×
  • Utwórz nowe...