Skocz do zawartości

Surprise

Członkowie
  • Postów

    0
  • Dołączył

  • Ostatnio

    Nigdy

Wszystko napisane przez Surprise

  1. Surprise

    Kilka prpblemów

    Jeśli chodzi o określenie ilości przechowywanego tekstu to richedit posługuje się trochę innym komunikatem: EM_EXLIMITTEXT wParam = 0; lParam = (LPARAM) (DWORD) cchTextMax; Sprawę formatowania można powierzyć komunikatowi: EM_SETCHARFORMAT wParam = (WPARAM) (UINT) uFlags; lParam = (LPARAM) (CHARFORMAT FAR *) lpFmt; W lParam przekazujemy wskaźnik do struktury CHARFORMAT w której określamy w odpowienich polach formatowanie tekstu. typedef struct _charformat { UINT cbSize; _WPAD _wPad1; DWORD dwMask; DWORD dwEffects; LONG yHeight; LONG yOffset; COLORREF crTextColor; BYTE bCharSet; BYTE bPitchAndFamily; CHAR szFaceName[LF_FACESIZE]; _WPAD _wPad2; } CHARFORMAT; wParam określa część tekstu, która ma zostać sformatowana: SCF_SELECTION - zaznaczony SCF_ALL - wszystko SCF_WORD | SCF_SELECTION - muszą występować razem. Formatują zaznaczone wyrazy, jeśli nic nie zostało zaznaczone, a wskaźnik kursor jest gdzię w wyrazie to wtedy zezwala na formatowanie Inne komunikaty i struktury służące do formatowania: CHARFORMAT EM_GETCHARFORMAT EM_GETPARAFORMAT EM_GETRECT EM_SETBKGNDCOLOR EM_SETCHARFORMAT EM_SETEVENTMASK EM_SETPARAFORMAT EM_SETRECT PARAFORMAT No nic więcej nie piszę bo zaraz się z tego art zrobi...hehe...a co do artów to za niedługo następna częśc (o szukaniu tekstu..itp, formatowanie będzie później :P), mimo to zachęcam do pracy z helpem...kurde czemu was tak zraża ten angielski...ehh
  2. No Nicon, mnie też to zadziwia, taki fajny help, no i MSDN, a tak mało osób z tego korzysta. Czasem nawet nie trzeba super-ekstra umieć angielskiego,wystarczy trochę intuicji i własnych eksperymentów, ale co to tam...pozdrawiam 8)
  3. Hej! (jak mnie dawno nie było na tym forum..hehe) Myslę, że po prostu wywołaj tę funkcję, normalnie bez niczego, bo przecież nie ma parametierów...heh Funkcja to prostu przestawia zapis sciezki uzywanej, czy zwracanej przez niektóre funkcje (jak napisał Nicon - wszystko przez Dosa...hehe). _lopen GetDriveType LoadLibrary CopyFile GetFileAttributes LoadLibraryEx CreateDirectory GetFullPathName MoveFile CreateFile GetModuleFileName MoveFileEx CreateProcess GetModuleHandle OpenFile DeleteFile GetSystemDirectory RemoveDirectory FindFirstFile GetTempFileName SearchPath FindNextFile GetTempPath SetCurrentDirectory GetCurrentDirectory GetVolumeInformation SetFileAttributes GetDiskFreeSpace GetWindowsDirectory To są te funkcje, również buforek argv jest na to podatny. Istnieje jeszcze VOID SetFileApisToOEM(VOID), która działa odwrotnie. A tak na marginesie, znalazłem to pirwszy raz w helpie...taaak polecam helpa, zabójcza broń...hehe Pozdrawiam
  4. Surprise

    Zmienna jako tekst.

    Witam. char zmienna[] = "tekst_zmiennej" ; TextOut(hdc, 10, 20, zmienna, 5) ; i to wszystko...ehhhh Pozdrawiam
  5. Surprise

    Dll i zasoby

    Witam nie no co ty...po co od razu dziewczyną... Jak chcesz dołączyć do zasobów jakiś plik binarny to musisz dać mu typ RCDATA...np. nazwa RCDATA "moj wav.wav". Tylko, że jak chce tak zrobić to mi DevCpp wariuje i zwraca błąd. Ciekawe dlaczego skoro podświetla ten napis tak jak ICON czy BITMAP... Ja z linii poleceń wywołałem brcc32.exe (borlanda) i jako paramert podałem plik rc właśnie z definicją data i utorzył ładny plik res. Kiedy już będziesz miał wava w zasobach musisz go jeszcze odtworzyć funkcją sndPlaySound: sndPlaySound("nazwa_zasobu", SND_RESOURCE | SND_ASYNC) ; Jeśli chodzi o menu to nie mam pojęcia. Na stronie jest art, który pokazuje jak zrobić żeby aplikacja wyglądała z tymi bajerami pod xp. Ja w Devie daje odpowiednią opcję - uwzględniaj tematy xp czy jakoś tak... to tyle... Pozdrawiam
  6. Witam No najprościej to było by wyświetlić je w staticu albo przycisku. Po prostu na początku deklarujesz sobie tablice uchwytów na bitmapki. Potem ładujesz do nich z zasobów odpowiedni obraz. Przy wyświetlanie obrazków na przyciskach najlepiej użyć komunikatu BM_SETIMAGE. Co do sprawdzania czy ktoś wybrał takie same to pobieramy sobie z tych okien bitmapy (BM_GETIMAGE) i porównujemy. Jak wybrał prawidłowe to rysujemy puste pole i dajemy wartość enable false, albo niszczymy je, chowamy (ShowWindow). Jest jeszcze problem wyswietlenia w pomieszanej kolejności odpowiednich bitmap, które mamy w naszej tablicy. Myślę, że możesz zrobić plik, który określa pozycje. Możesz też napisać funkcje która będzie losowała miejsca. Tylko losowanie potrwa trochę czasu. Najepiej wylosować pozycje dla kliku obrazów a reszte narysować normalnie... To tyle pozdrawiam...
  7. Witam... Jeśli chcesz zrobić tę mgłę z wykorzystaniem samego pliku windows.h to będziesz się musiał nagimnastykować, no i potem oświetlić..?? nie no nie ma sensu. Ja polecałbym OpenGl, które może współgrać z kodem napisanym w c++ i winapi. Tam również wygodniej narysujesz pokój 3D. Jest wiele stron opisujących tworzenie mgły właśnie w OpenGl, np. z opengl.pl możesz sciągnąć przykład wyświetlający sześcian i mgłę. Jednak jak chcesz użyć opengl musisz się zaopatrzyć w odpowiednie biblioteki... Pozdrawiam
  8. Surprise

    DialogBox i zasoby

    Witaj Coś mi się zdaje, że w twój problem tkwi teraz w tej funkcji okienkowej dla dialogbox'a. Może okienko zaraz się zamyka...ja programuje pod Devem i nie mam takiego problemu...dziwne że kompilator zwrócił ci błąd...nie musisz definiować czegoś jako wskaźnik, żeby przekazać to jako wskaźnik...dziwne przecież funkcja sama w sobie jest wskaźnikiem...ja przeważnie tę funkcję rzutuję na DLGPROC, albo wogle nic nie robię. Co do drugiego problemu to naprawdę nie wiem jak to wygląda po BC++...jedno jest pewne linker nie może odnaleźć pliku nagłówkowego windows.h...może przekopiuj ten plik do folderu gdzie jest plik cpp i wpis "windows.h"... Pozdrawiam.
  9. Witaj! Istnieje również funkcja, która to wykonuje i wcale nie trzeba dołączać inny plików nagłówkowych...tylko windows.h oczywiśćie: char szPath [ ] = "C:\\Moje Dokumenty\\Plik.exe" ; char szFileName [255] ; GetFileTitle(szPath, szFileName, 255) ; Pierwszy parametr to ścieżka, drugi to bufor na nazwę pliku, który funkcja wyłuska no i trzeci wielkość tego buforka... Pozdrawiam
  10. Witaj Jeśli chodzi o to wszystko to najlepiej jeśli podasz kod. Bo tak to będziemy zgadywać, a powodów może być sam wiesz ile... Pozdro
  11. Surprise

    RichEdit

    Witam wszystkich Jeśli chodzi o RichEdita to piszę kolejną część z serii Edytor Tekstu właśnie o tej kontrolce...za niedługo sie ukaże... Google Wyniki 1 - 10 spośród około 12,700 dla zapytania +RichEdit +documentation. (Znaleziono w 0,31 sek.) Nie znalazłem polskiej dokumentacji, ale aż roi się od angielskich , a z nich intuicyjnie zawsze coś idzie się dowiedzieć. Również słynny help umieszczony na ftp tej strony zawiera informacje o tej kontrolce. Polecam strone www.codeproject.com (wpiszcie w search RichEdit na bank coś znajdziecie [po angielsku]) Kiedyś znalazłem (polską) stronke gdzie między innymi było cóś o RichEdicie (podstawy, operacje na tekście i podświetlanie składni) może się wam przyda: https://pancake.sggw.waw.pl/~hador/Masm32/Pl/index.html Jednak jak widzicie najwięcej informacji jest w innych językach(nie chodzi mi o języki programowania..hehe), tak więc cza się tego poduczyć... Pozdrawiam
  12. A tekst który wyświetlasz pojawia się?? Bo jeśli tak to jest błąd przy ładowaniu bitmapy, czyli wg mnie źle podany hInstance... A jak się tekst nie pojawia to już nie wiem. Sprawdzałem twój kod w Dev 4 i napis się wyświetlał, potem załadowałem bitmapę w WinMain (albo można dać (::hInstance = hInstance) i wszystko grało. Pozdro
  13. Jeśli chodzi o kod który pokazałeś to wydaje mi się, że ładowanie bitmapy powinieś obłuzyć w głównej funkcji WinMain (chyba miałem kiedyś taki problem..hyhy), albo w WinMain przekaż po prostu globalnemu uchytowi programu hInstance, uchyt który nadaje funkcja WinMain. Coś mi się zdaje że nazwałeś je identycznie. czyli ::hInstance = hInstance ; i możesz ładować obrazki w każdym miejscu programu (no prawie) Jednak jeśli chcesz wyświetlać jakąś bitmapę to polecam zwykłą kontrolkę STATIC w której możesz łatwo to zrobić. Przykładowy kod: CreateWindow("STATIC", "nazwa_zasobu", WS_CHILD | WS_VISIBLE | SS_BITMAP | SS_REALSIZEIMAGE, 0, 0, 0, 0, hwnd, (HMENU) 100, hInstance, 0) ; Jak nadasz staticowi falge SS_BITMAP to będzie on wyświetla bitmapę którą masz w zasobach (jest również SS_ICON - ikona). Nazwę podajesz jako zwykły tekst. Flaga SS_REALSIZEIMEGE powoduje że static automatycznie zmieni swoje rozmiary wyświetlając cały obrazek... ...i to tyle... Pozdrawiam...
  14. W winapi jest funkcja wsprintf. Jako pierwszy parametr podajesz wskaźnik na bufor (char * lub te twoje LPCTSTR. W drugim to co chcesz do niej załadować, lub skonwertować na dany typ. np jeśli chcesz przekopiować do LPCTSTR liczbe to po prostu: LPCTSTR lancuch ; lancuch = (LPCTSTR) GlobalAlloc(GPTR, 255) ; int liczba = 2 ; wsprintf(lancuch, "Oto jest liczba: %d", liczba) ; GlobalFree(lancuch) ; Przydało by się przydzielić pamięć co nie? W zmiennej lancuch będzie teraz tekst: Oto jest liczba: 2. (będzie do momentu zwolnienia pamięci (GlobalFree). Funkcja ta przyjmuje nieskończenie wiele parametrów. Po prostu tyle ile będzie ci potrzebnych tyle ich podasz. To %d informuje funkcje, że ma konwertować liczbę do łańcuchu. Jaką liczbę - tą w zmiennej liczba bo ją podaliśmy. I to na tyle... Pozdro
  15. w c/c++ nie ma problemu, dodajesz komunikat WM_CTLCOLOREDIT do procedurki obsługi okna (np. WndProc): DWORD edit_color = RGB(255, 00, 00) ; //czerwony DWORD text_color = RGB(00, 255, 00) ; //zielony //---- case WM_CTLCOLOREDIT: SetBkColor((HDC)wParam, edit_color) ; SetTextColor((HDC)wParam, text_color) ; return (LRESULT) CreateSolidBrush(edit_color) ; //---- W wParam przekazywany jest kontekst do kontrolki edit. Dalej wykonujesz na nim operacje - zmieniasz kolor tekstu i tła. Na stronie masz cały artykuł o kontekstach, czyli grafice w GDI, przejrzyj go a na pewno skumasz te funkcje - https://www.winapi.org/index.php?option=content&task=view&id=7&Itemid=28 Jeśli masz więcej editów i chciałbyś przypisać kolor tylko do jednego,musisz sprawdzić czy lParam jest równy uchwytowi edita, który ma zostać zmodyfikowany. np. //---- if((HWND)lParam == uchwyt_edita) { //tu wklejasz kod } //---- Istnieją również odpowiedniki tego komunikatu dla listy, statica, czy okna dialogowego. Nazwy ich są intuicyjne, czyli np. WM_CTLCOLORLISTBOX - postępujesz tak jak dla edita. I to na tyle... Powodzenia
  16. Sorki, ostatnio sam nie wiem co pisze :D małe sprostowanie: Funkcja wsprinft to w winapi odpowiednik sprinft w c. Chodziło mi o to że w winapi możesz użyć funkcji wsprintf zamiast dodawać biblioteki c, w których jest ta sama funkcja o nazwie sprintf. Pozdro
  17. Witaj sleeppower!!! Coś mi się zdaje, że w tym tkwi błąd: ile = liczba + "adas"; LPCTSTR to samo co char *. A więc moim zdaniem powinieneś to tak napisać: wsprinf(ile, "%d adas", liczba) ; Funkcja wsprinft to odpowiednik sprinft w winapi. Powodzenia
  18. Surprise

    LoadIcon

    No to zależy... W tej troche starszę wersji był edytor zasobów, w menu project, i tam bez problemu mogłeś dodawać ikonkę. (taki fajny edyorek) Ale najlepiej po prostu otwórz sobie plik z zasobami - z rozszerzeniem rc, i wpisz nim definicje ikonki, takie cóś: //---- NAZWA_IKONY ICON "sciezka.ico" //---- no i potem tylko w programie piszesz: //----- wndclass.hIcon = LoadIcon (hInstance, "NAZWA_IKONY") ; //---- I po kłopocie... Pozdrawiam
  19. Surprise

    LoadIcon

    Przecież masz już tam wpisaną funkcję LoadIcon. Przypuszczam, że masz ikonkę gdzieś w zasobach i chcesz ją z nich załadować: //---- wndclass.hIcon = LoadIcon(hInstance, "NAZWA_IKONY") ; //---- W pierwszym podajesz instancje, a w drugim nazwę ikony w zasobie. Jeśli nazwą zasobu jest liczba robisz tak: //---- wndclass.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(500)) ; //---- I to na tyle... Pozdrawiam
  20. Surprise

    Okna w WinAPI

    Witaj Według mnie najlepszym rozwiązaniem będzie stworzenie okienka dialogowego. Więcej możesz poczytać tutaj na winapi.org w dziale podstawy (Okna dialogowe part I). Jednak możesz zrobić sobie zwykłe nowe okno, tak jak to pierwsze. Potem w momencie naciśnięcia przycisku, wywołujesz funkcję odpowiedzialną za pokazanie okna: ShowWindow(hUchy2Okna, SW_SHOW) ; Mimo wszystko polecałbym okienka dialogowe. pozdro
  21. Surprise

    Menu

    Hej zmarax!!! Szkoda, że szukasz na ftp skoro już x osób podało ci gotowy kod. Ale jak już tak bardzo chcesz gotowy projekt to masz: ftp://ftp.winapi.org W katalogu examples są przykładziki do chyba każdego z artów tej strony. Tamten link chyba źle cię przenosił. Jak tu nie znajdziesz to ja jestem..(nie ważne)...hyh Pozdro
  22. Surprise

    Co jest nie tak

    bool odczytaj_wartosc_ciag_(HKEY glowny_klucz, LPCTSTR adres_klucza, LPCTSTR nazwa_wartosci, LPCTSTR sprawdzana_wartosc ) { char buffer[1024]; bool takie_same = false ; char koncowy [1024] ; HKEY hKey; if(RegOpenKeyEx(glowny_klucz,adres_klucza,0,KEY_ALL_ACCESS,&hKey)==ERROR_SUCCESS) { DWORD dwSize; dwSize = sizeof(buffer); RegQueryValueEx(hKey,nazwa_wartosci,NULL,NULL,reinterpret_cast<BYTE *>(&buffer),&dwSize); strcpy(koncowy, buffer) ; RegCloseKey(hKey); int koncowy_len = strlen(koncowy) ; int spr_len = strlen(sprawdzana_wartosc) ; takie_same = true ; if(koncowy_len == spr_len) { for(int i = 0 ; i < spr_len ; i++) { if(koncowy[i] != sprawdzana_wartosc[i]) { takie_same = false ; break ; } } } else { takie_same = false ; } } return takie_same ; } Skompilowałem program z tą funkcją co widzisz i działa... Najpierw funkcja sprawdza długość dwóch łańcuchów, a potem (jeśli są równe) sprawdza czy ich wartości są takie same... Pozdro
  23. Surprise

    Procesor

    Dzięki wam za pomoc zapomniałem całkiem o tym temacie...hyh Nicon, bardzo fajna ta stronka, znalazłem co trzeba i nim napiszę następne pytanie, zobaczę czy tam nie ma odpowiedzi. Polecam wszystkim www.codeproject.com Pozdro
  24. Surprise

    Value to string?

    Nie znam takiej funkcji winapi, ale możesz użyć itoa, lub sprintf... //------ int n_value = 12 ; char sz_string[5] ; itoa(n_value, sz_string, 10) ; //albo sprintf(sz_string, "%d", n_value) ; //------ Obie te funkcje znajdują się w pliku stdlib.h (chyba)
  25. Surprise

    Dzięki

    Piasiu ma racje..na bank. Niby po co się trudzimy pisząc te arty - na stronie jest elegancko napisane o funkcjach do rejestru. Mało tego jest jeszcze plik umieszczony na ftp w którym znajdziesz przykłady. Przez własne szperanie i rozwiązywanie problemu więcej się nauczysz, choć czasami potrzebujemy na szybko i po prostu się nie chce - wiem coś o tym... pozdro :D
×
×
  • Utwórz nowe...