Skocz do zawartości

Aspect

Członkowie
  • Postów

    0
  • Dołączył

  • Ostatnio

    Nigdy

Wszystko napisane przez Aspect

  1. Aspect

    Redraw okna

    Ad B) Nie no - jak jest break;, to tam zaraz po switch() jest return 0; - nie jest tak, ze funkcja nic nie zwraca.
  2. Aspect

    Redraw okna

    Przepraszam za ten "malutki" blad :? - tak to jest jak sie pisze posty o godzinie drugiej w nocy ;-).
  3. Aspect

    Redraw okna

    No to w takim razie musisz skorzystac z kontekstu urządzenia i funkcji TextOut(). Do swojej funkcji obslugi komunikatow dodaj cos takiego: case WM_PAINT: PAINTSTRUCT ps; HDC hDC; hDC=BeginPaint(hWnd,&ps); TextOut(x,y,bufor,strlen(bufor)); EndPaint(hWnd,&ps); break; gdzie: x,y - wspolrzedne punktu w ktorym chcesz wyswietlic tekst bufor - wskaznik do bufora (moze byc tablica charow) w ktorym znajduje sie tekst do wyswietlenia Nastepnie, przy nacisneiciu na przycisk zapisz tekst do zmiennej bufor i odmaluj okno funkcją RedrawWindow(). Nie jest to, zapewne, najoptymalniejsze rozwiazanie, ale powinno Ci naprowadzic na wlasciwy trop. ps. Poczytaj sobie jeszcze o funkcjach SetTextAlign(), SetBkMode(), SetTextColor()...
  4. Aspect

    Redraw okna

    Rozumiem, ze chodzi Ci o to, zeby tekst wyswietlal sie na pasku tytulowym okna. Jezeli tak, to musisz po prostu wyslac do okna glownego komunikat WM_SETTEXT.
  5. Aspect

    takis am

    Dzieki! Zly jestem, ze sam na to nie wpadlem. Moim zdaniem to dziala tak: W wParam jest przekazywany kontekst urzadzenia danej kontrolki (heh, no to jest oczywiste ;-) ), w obsludze tego komunikatu mozesz sobie w tym kontekscie wprowadzac zmiany, ale jezeli twoja funkcja obslugi komunikatow nie zwroci HBRUSHa to wszystkie zmiany kontekstu są olewane. Dlatego nie działała mi sama zmiena koloru czcionki.
  6. Aspect

    takis am

    Ja sobie z ciekawości 8) spróbowałem i obsłużyłem ten komunikat. Jednak kolor tła w staticu ustawia mi się tylko w obszarze gdzie nie ma tekstu, natomiast pod tekstem robi się biały (czyli tlo tekstu nie jest przezroczyste, tylko białe). I teraz moje pytania: 1. Czy znacie może sposób, żeby uniknąć takiego efektu? 2. Czy wiecie jak można zmienić kolor liter w kontrolce static?
  7. Aspect

    taki sam

    Ja tez sprawdzalem i na 100% dziala ! Zarowno WM_CLOSE, jak i DestroyWindow. Mysle, ze nie nalezy tego dodatkowo komplikowac subclassingiem, bo te metody na pewno sa dobrze. Problem musi lezec w innym miejscu. Wklej odrobine swojego kodu to zobaczymy na czym polega błąd.
  8. Aspect

    Własny Tray :D

    Moim zdaniem az sie prosi o wykorzystanie architektury klient-serwer i socketow (localhost) ;-).
  9. Aspect

    taki sam

    Ad 2. Zarówno hKontrolki, jak i hRodzica muszą być typu HWND. Właśnie to hKontrolki wstawiasz jako pierwszy parametr do funkcji ShowWindow(); i SendMessage();. Ad 1. Chodziło mi o to, że te dwie funkcje również zwracają "hKontrolki" (czyli uchwyt do jej okna).( :-) Pewnie Ci za wiele nie wyjaśniłem, ale jakoś jaśniej nie potrafię - za bardzo jestrem niewyspany.)
  10. Aspect

    taki sam

    Trudno się dziwić, ze funkcje ShowWindow(hWindow,SW_HIDE); i SendMessage(hWindow,WM_CLOSE,0,0); ukrywają lub zamykają Ci okno aplikacji bo... właśnie do niego wysyłasz te komunikaty. Podajesz do nich, jako pierwszy parametr, uchwyt do głównego okna aplikacji, a musisz tam zamiast tego podać uchwyt do swojego edita lub buttona. Zeby uzyskac ten uchwytm masz 2 sposoby: 1. Jezeli tworzyles button lub edit funkcją CreateWindow(); lub CreateWindowEx(); to zwracaja one uchwyty do okna, które stworzą, więc możesz sobie zrobić globalną zmienną typu HWND i w niej przechowywac uchwyt. 2. Jezeli tworzyles DialogBox korzystając z szablonu w pliku zasobów (.rc), a takze w każdym przypadku kiedy znasz identyfikator kontrolki którą chcesz usunąć, możesz posłużyć się funkcją GetDlgItem();, która również zwraca uchwyt do okna kontrolki. Jako pierwszy parametr podajesz jej uchwyt do rodzica kontrolki, a jako drugi jej identyfikator.
  11. Aspect

    taki sam

    Ale w niej tez nei ma zdefiniowanych tych stalych. :?
  12. Mogę Ci wysłać plik nagłowkowy CommCtrl.h z MS Visual Studio 7.0. nie wiem, czy da sie go podmienić z tym z Dev, ale jeżeli nie to sobie chociaz popatrzysz jak sa zdefiniowane stałe i sam je sobie zdefiniujesz w programie
  13. Aspect

    do góry i do dołu

    Dobrze sie domyslacie - to nie jest osobna kontrolka, tylko połączenie Up-Down z Editem (ale UpDown tak na prawde mozna polaczyc z kazda kontrolka np Buttonem). Zeby uzyskac takie polaczenie nie trzeba sie bardzo męczyć. Wystarczy tylko: 1. Stworzyc zwyklego Edita (albo dowolna inna kontrolke) 2. Zaraz po nim stworzyć konrolke Up-Down (jej klasa to msctls_updown32) z ustawionym stylem UDS_AUTOBUDDY To sprawia, ze kontrolka UD pojawia sie w okienku Edit (zmniejsza troche jego rozmiar). Oto przyklad pliku zasobów, zawierajacego dialog z taka kontrolka: IDD_DIALOGBAR DIALOGEX 0, 0, 70, 13 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD FONT 8, "MS Shell Dlg", 0, 0, 0x0 { EDITTEXT IDC_EDIT,10,0,60,13,ES_AUTOHSCROLL , WS_EX_RIGHT CONTROL "",IDC_UPDOWN,"msctls_updown32", UDS_ALIGNRIGHT | UDS_ARROWKEYS | UDS_AUTOBUDDY | UDS_SETBUDDYINT,0,0,0,0 } Pierwsza kontrolka w dialogu to jak widac zwykly Edit, nastepna to Wlasne UD. Styl UDS_SETBUDDYINT sprawia, ze w Edicie jest wyświetlana aktualna wartość kontrolki UpDown.
  14. Aspect

    ReBar....

    Myślę, ze nie zaszkodzi spróbować ;-). Nie sprawdzałem, ale na 99% tak.
  15. Aspect

    ReBar....

    Zeby mieć wpływ na położenie Rebara musisz, przy tworzenu jego okna ustawić mu styl CCS_NOPARENTALIGN. Nie bedzie wtedy "przylepiał się" do górnej krawędzi okna. Musisz jednak pamiętać, ze od tej chwili to ty będziesz odpowiedzialny za położenie (i rozmiar!!!) Rebara, czyli w funkcji MoveWindow będziesz musiał podać dokładne współrzędne wszystkich czterech jego rogów, po każdej zmianie rozmiaru okna. Ps. ;)Jeżeli chcesz żeby Rebar był ułożony pionowo musisz przy tworzeniu ustawić mu styl CCS_VERT.
  16. Aspect

    strcpy();

    #include <string.h> #include <conio.h> #include <stdlib.h> using namespace std; int main(int argc, char *argv[]) { char* string="plik.Exe"; string+=strlen(string)-4; if(!stricmp(string,".eXe")) printf("%s",string); getch(); return 0; }
  17. Aspect

    strcpy();

    Nie wiem, czy to pomoże Ci rozwiązać twój problem, ale zawsze mozesz spróbować. Istnieją sobie takie dwie funkcje (chyba czystego WinAPI): 1. LPTSTR GetCommandLine(VOID); Funkcja ta zwraca string, z wszystykim tym co wpisałeś po nazwie programu, czyli jezeli w linii polecen napisales: "prog.exe param1 param2" to funkcja zwroci: "param1 param2" 2. LPWSTR * CommandLineToArgvW( LPCWSTR lpCmdLine, // pointer to a command-line string int *pNumArgs // receives the argument count ); Funkcja ta pobiera wskazniki do zmiennych, w których umieszcza to, co normalnie znajdowalo by sie kolejno w argv i argc (z tym, ze w formacie wide-char). Martwi mnie tylko jedna linijka na koniec jej opisu: "Windows 95/98/Me: Unsupported." Zachęcam do częstego zaglądania na stronę:https://msdn.microsoft.com/library/
  18. Aspect

    Skąd?

    Dev juz jest po polsku ;-), to znaczy jest możliwość wyboru języka w menu "Tools/Enviorment Options" zakładka "interface".
  19. Aspect

    Odnosnie BCW

    Funkcja LoadBitmap() w drugim parametrze nie pobiera nazwy pliku, tylko nazwe zasobu z pliku .rc. Jezeli koniecznie chcesz wczytac bitmape z pliku uzyj funkcji: HANDLE LoadImage( HINSTANCE hinst, // uchwyt do klasy aplikacji (jezeli wczytujesz z pliku daj tu wartosc NULL) LPCTSTR lpszName, // nazwa lub identyfikator bitmapy (wpisz tutaj nazwe pliku jaki chcesz wczytac) UINT uType, // typ obrazka jaki chcesz wczytac (wpisz IMAGE_BITMAP) int cxDesired, // zadana szerokosc (podaj 0 to wczyta szerokosc z pliku) int cyDesired, // zadana wysokosc (tez daj 0) UINT fuLoad // flagi (tu wpisz LR_LOADFROMFILE) ); czyli zamien swoja linijke: hbmpMyBitmap = LoadBitmap(hinstance, "h:\\Earth.bmp"); na: hbmpMyBitmap = (HBITMAP) LoadImage(NULL,"h:\\Earth.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE); Pelniejszy opis tej funkcji znajdziesz tu:https://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/resources/introductiontoresources/resourcereference/resourcefunctions/loadimage.asp. I w ogole, jak czegos nie bedziesz mogl znalezc w swoim helpie to poszukaj na https://msdn.microsoft.com/library.
  20. Spoko - teraz juz dziala bez zarzutow. (Swoja droga to tez moglem sobie sprawdzic w MSDNie a nie zawracac glowe, ale tak to sie chociaz wyjasnilo.) Po przejrzeniu msdna nasunal mi sie jeden pomysl. Po co sprawdzac czy wartosc kontrolki zostala zmieniona w komunikacie WM_TIMER, skoro kontrolka po nacisnieciu strzalki wysyla do okna komunikat WM_NOTIFY o kodzie UDN_DELTAPOS? (to pytanie retoryczne ;-) ) W zwiazku z tym kod mozna przeksztalcic, tam gdzie jest obsluga komunikatu WM_TIMER, na nastepujacy: case WM_NOTIFY: LPNMHDR nmhdr; nmhdr=(LPNMHDR) lParam; if(nmhdr->code==UDN_DELTAPOS) { ... }
  21. Czy u Was rowniez po nacisnieciu strzalki w dol w kontrolce Up-Down wartosc pos tej kontrolki sie zwieksza, a po nacisnieciu strzalki w gore zmniejsza? Chyba tak nie powinno byc, nie? Tymczasem dzieje sie tak nawet w tym przykladowym programie, ktory sciagnalem z dzialu download. Jezeli ktos ma czas i bylby laskawy to sprawdzic, to bylbym baaadzo wdzieczny. Ps. Mam nadzieje ze za bardzo nie zamotalem ;-).
  22. Rozumiem, ze chodzi Ci o zamiane zmiennej liczbowej (np int) na ciag znakow? Jezeli tak, to sa funkcje itoa(), itow(), ltoa(), ultoa(), ecvt(), fcvt(), gcvt()..., z stdlib.h, ktore wlasnie to robia. Przyklad ;-) : char szBufor[30]; int nLiczba=11; itoa(nLiczba,szBufor,2);//zamieni na lancuch w systemie binarnym ("1011") itoa(nLiczba,szBufor,10);//zamieni na lancuch w systemie dziesietnym ("11") itoa(nLiczna,szBufor,16);//zamieni na lancuch w systemie szesnastkowym ("B") itoa(nLiczna,szBufor,32);//bardzo chcialbym zobaczyc jak ta funkcja zamienia liczbe na lancuch w kodzie 32m, ale wedlug msdn jest to mozliwe A tak prawde mowiac to sprawdzalem tylko wariant z systemem dziesietnym, wiec za inne glowy nie daje.
  23. Aspect

    Re: XP Themes

    Tak jak napisalem na samym poczatku trzeba recznie wprowadzic odpowiednia linijke do pliku .rc. 1 24 DISCARDABLE "plik.xml" Sprawdzalem u mnie dziala. Ps. I nie zapomnij wywolac funkcji InitCommonControls().
  24. Aspect

    katalogi

    Dzieki! Wlasnie o te funkcje mi chodzilo. (Kiedys w poszukiwaniu jakichs funcji obslugujacych pliki, natknąłem się na nie, ale niestety zapomniałem nazw.) A co do wypelnienia struktury. To w sciagnietym przeze mnei programie robiacym screenshoty, w pole lpstrDefExt (string zawierający domyslne rozszerzenie) autor programu ;-) wpisał: "*.bmp", a w helpie wyraznie jest napisane, zeby w tym polu znajdowaly sie tylko 3 literki rozszerzenia (bo i tak czyta tylko pierwsze 3), i zeby bron Boze nie dawac tam kropki, a tym bardziej gwiazdki. W rezultacie gdy jakis zlosliwy uzytkownik wybierze opcje "All files" i nie wpisze rozszerzenia obrazek sie nie zapisze. Ale i tak jestem pod wielkim wrażeniem profesjonalizmu w/w programu.
  25. Czy ktos wie moze jak wywolac domyslne okno "Otworz Plik", lub "Zapisz Jako" (takie jakie sie wyswietlaja kiedy klikamy na menu Plik->Zapisz) w aplikacji WinApi?
×
×
  • Utwórz nowe...