
Aspect
Członkowie-
Postów
0 -
Dołączył
-
Ostatnio
Nigdy
Typ zawartości
Profile
Fora
Kalendarz
Articles
Pliki
Wszystko napisane przez Aspect
- Poprzednia
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- Dalej
-
Strona 7 z 8
-
Ad B) Nie no - jak jest break;, to tam zaraz po switch() jest return 0; - nie jest tak, ze funkcja nic nie zwraca.
-
Przepraszam za ten "malutki" blad :? - tak to jest jak sie pisze posty o godzinie drugiej w nocy ;-).
-
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()...
-
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.
-
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.
-
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?
-
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.
-
Moim zdaniem az sie prosi o wykorzystanie architektury klient-serwer i socketow (localhost) ;-).
-
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.)
-
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.
-
Ale w niej tez nei ma zdefiniowanych tych stalych. :?
-
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
-
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.
-
Myślę, ze nie zaszkodzi spróbować ;-). Nie sprawdzałem, ale na 99% tak.
-
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.
-
#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; }
-
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/
-
Dev juz jest po polsku ;-), to znaczy jest możliwość wyboru języka w menu "Tools/Enviorment Options" zakładka "interface".
-
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.
-
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) { ... }
-
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 ;-).
-
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.
-
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().
-
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.
-
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?
- Poprzednia
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- Dalej
-
Strona 7 z 8