
Aspect
Członkowie-
Postów
0 -
Dołączył
-
Ostatnio
Nigdy
Typ zawartości
Profile
Fora
Kalendarz
Articles
Pliki
Wszystko napisane przez Aspect
-
Zgadzam sie z przedmowca - posprawdzaj sobie co NAPRAWDE znajduje sie w poszczegolnych zmiennych, sproboj odegrac dzwiek wpisujac do sndPlaySound "na sztywno" nazwe z pelna sciezka do jakiegos pliku, ktory wiesz, ze na pewno istnieje. Sproboj tez te kilka linijek, w ktorych zapisujesz nazwe do wav zamienic taka: sprintf(wav,"%s%c%s",sciezka,wczytaj[i],sciezka2); moze to cos zmieni.
-
No to mamy podobne zdania :). Ja tez lubie "Wiżuala" i też uważam, że jest dużo leszy od Dev (dowodem na to moze byc brak zdefiniowania tych stałych), ale staram się nie uzależniać od jednego środowiska ;-). Bawie sie tym wszystkim na razie i sprawdzam sobie rozne zabawki :). Trudno sie tez spodziewac, zeby darmowy produkt byl lepszy od produktu, za za ktory placi sie niemala kaske - takie sa prawa rynku :? .
-
Z kompilatorem to podejrzewam, że nic wspólnego nie ma, ale jak porównałem plik commctrl.h, którego używa Dev z tym, który używa Microsoft Development Studio .NET, to okazało się, że w tym z Dev-Cpp nie ma zdefiniowanych niektorych stalych np. TB_SETIMAGELIST.
-
Wystarczy, ze wywolasz funkcje ShowWindow z parametrem SW_MAXIMIZE.
-
Właśnie o to mi chodziło!!! Teraz (po wywołaniu InitCommonControls) wszystko pieknie dziala. Dziekuje za rozwiazanie mojego problemu.
-
No to chyba sie pochlastam, bo mi nei dziala ani z najnowsza wersja Dev ani z manifestami ;). Moze oprocz zwyklego dodania jednej linijki do pliku .rc cos jeszcze zrobiliscie. Czy moglbym prosic o przykladowy programik na maila? "Odkrylem" wlasnie ze w Dev nie trzeba nic recznei wklepywac - wystarczy tylko w opcjach projektu zaznaczyc pole "Support Windows XP Themes" i juz manifesty sie same dodaja:). Co nie zmienia faktu, ze moje dialog-boxy sa nadal niewidzialne ;). Dobra. Doszedlem do wniosku, ze to wina mojego kompa/ustawien WinXP. Na drugim komputerze (Win95) dialog-boxy sa widoczne (ale rzeczjasna nie maja wygladu XP ).
-
Bardzo dziękuję! Nie spodziewałem się, ze tak szybko dostanę tak wyczerpującą odpowiedź. Dodam jeszcze tylko, że jeśli ktoś chce użyć załączonego kodu w Dev-Cpp, to musi sobie zamienić następujące identyfikatory: TBSTYLE_FLAT na 2048 (choc wyglada, ze jest to zalezne od wersji Internet Explorera) TB_SETMAXTEXTROWS na WM_USER + 60 TB_SETIMAGELIST na WM_USER + 48. U mnie bez tego nie dzialalo. Sprawdzilem commctrl.h w Dev. Nie ma tam zdefiniowanych identyfikatorow TB_SETMAXTEXTROWS, TB_SETIMAGELIST :(. Chyba powroce jednak do starego, dobrego "Wiżuala" ;-). Hurra!!! Mozna zmieniac posty :). Chcialem jeszcze dodac, ze zeby program zadzialal to trzeba "dolinkowac" comctl32.lib (w VC++) lub libcomctl32.a (w Dev-Cpp) do projektu.
-
Po przeczytaniu artykułu/lekcji na temat dostosowania aplikacji do WinXP, od razu poczułem nieodpartą potrzebę aby moje programy (pisane pod Dev-Cpp) także miały taki "pienkny" wygląd ;-). Podejrzałem więc jakie zmiany zachodzą w pliku .rc po dodaniu do zasobow XMLa i okazało się, że została dodana tylko jedna (znacząca) linijka: 1 24 DISCARDABLE "plik.xml" Niestety, po dodaniu jej do pliku zasobow w Dev, i skompilowaniu moje okienka dialogowe, a nawet MessageBoxy przestaly sie pojawiać. I oto, w końcu, moje pytanie: Czy ktoś już się tym bawił w Dev i wie może co żle zrobiłem, albo czego jeszcze nie zrobiłem? (Od razu mowie, ze plik ma taka sama nazwe jak jest napisana w pliku zasobow, sciezka jest prawidlowa, a zawartosc pliku .xml jest IDENTYCZNA z ta w artykule. Ponadto: przy kompilacji nie wychodza zadne bledy, ani ostrzezenia, tylko po prostu po kliknieciu na pozycje menu wywolujaca dany Dialog albo MesssageBox NIC sie nei dzieje - a bez w/w linijki się działo ;-) ) Z góry dziękuję za wyczerpujące odpowiedzi. Pozdrawaim.
-
Nie, to jest wszystko proste, tylko ja tak zamieszalem - sorry. Oto przykladowy kod o ktory prosiles, moze bardizej Ci pomoze. W razie jak bys nie wiedzial co robia niektore funkcje to sobie poczytaj o nich na stronei https://msdn.microsoft.com/library/. No dobra, daje juz ten kod: Plik .rc: #include <windows.h> #include "resource.h" IDM_MAIN MENU { POPUP "Program" { MENUITEM "Okno dialogowe",IDM_DIALOG MENUITEM SEPARATOR MENUITEM "Zamknij",IDM_CLOSE } } IDD_DIALOGBOX DIALOGEX 0, 0, 240, 80 STYLE DS_CENTER | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX CAPTION "Dialog Box" FONT 8, "MS Sans Serif", 0, 0, 0x0 { LTEXT "To jest przykladowy DialogBox.",IDC_STATIC,10,11,120,11,SS_NOPREFIX DEFPUSHBUTTON "OK",IDOK,180,10,50,15,WS_GROUP PUSHBUTTON "Cancel",IDCANCEL,180,27,50,15 } Plik resource.h: #define IDC_STATIC -1 #define IDM_DIALOG 100 #define IDM_CLOSE 101 W pliku .cpp musisz zamienic linie: wincl.lpszMenuName = NULL; na wincl.lpszMenuName = "IDM_MAIN"; . Do funkcji WindowProcedure dodaj: case WM_COMMAND: switch(LOWORD(wParam)) { case IDM_DIALOG: DialogBox(GetModuleHandle(NULL),"IDD_DIALOGBOX",hwnd,(DLGPROC)DialogProcedure); break; case IDM_CLOSE: PostMessage(hwnd,WM_CLOSE,0,0); break; } , i do calego kodu dodaj jeszcze funkcje: LRESULT CALLBACK DialogProcedure(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_INITDIALOG: return TRUE; case WM_COMMAND: if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) { EndDialog(hdlg, LOWORD(wParam)); return TRUE; } break; } return FALSE; } Mam nadziueje, ze bedzie dzialac. Powodzenia.
-
Kurna, powinniscie dac jednak mozliwosc edycjo postow. Te dwie linijki powinny wygladac tak: char* p; p=&(char)wczytaj;
-
He he... nie ma sprawy...;-) A tak serio. Sorki, ze nie udalo mi sie rozwiazac Twojego problemu, ale mialem wrazenie, ze wynikiem Twojego kodu i tak bedzie dopisanie calego stringa wyniki do stringa wav. Sproboj w takim razie dodac przed lina 14 takie dwie linijki kodu: char* p; p=&wczytaj; a w linii 14 daj p zamiast wczytaj. Mam nadzieje ze teraz udalo mi sie choc troszke pomoc Ci w rozwiazaniu problemu ;-). Powodzenia!
-
Przepraszam za drugiego posta pod rzad, ale nie mozna edytowac juz napisanych postow :[. Piszac "ten plik naglowkowy" mialem na mysli plik naglowkowy .h, ktory sam sobie tworzysz, a nie windows.h oczywiscie.
-
Hmmm... No ja Ci powiem, ze u mnie to dzialalo bez zadnego includa w pliku .cpp (natomiast do pliku .rc, czyli tego, w ktorym wklepujesz wyzej napisany kod warto dodac #include <windows.h> ;-) ). Jezeli chodzi o ten plik naglowkowy, to zazwyczaj uzywa sie go, aby identyfikatory zasobow (ktore sa zwyklymi wartosciami liczbowymi) zdefiniowac tak, zeby potem latwiej bylo ich uzyc w programie. Na przyklad wklepujesz tam linie: #define MENU_PLIK_OTWOZ 100 i juz nie musisz pamietac, ze pozycja menu Plik->Otworz ma przypisany numer 100, a jedynie, ze ma identyfikator MENU_PLIK_OTWORZ, ktory sobie juz spokojnie uzywasz w programie. Ten plik naglowkowy nalezy wtedy dolaczyc zarowno do pliku .cpp jak i .rc.
-
W Dev (w przeciwieństwie do Visual Studio czy Borland Buildera) wszystkie zasoby musimy niestety wklepywac recznie (chyba, ze o czyms nie wiem i w takim wypadku prosze o szybkie sprostowanie). Wyglada to mniej wiecej tak: 1. Tworzysz nowy projekt (lub otwierasz stary ;-) ) 2. Wyberasz z menu File New a potem Resource File (pojawia sie nowy czysciutki plik) 3. W tym pliku wklepujesz kod DialogBoxa, ktory mniej wiecej wyglada tak: IDENTYFIKATOR /*bedziesz go potem uzywal w funkcji tworzacej dialog*/ DIALOGEX /*teoretycznie mozna uzyc zamiast tego DIALOG, ale DIALOGEX ma wiecej mozliwosci*/ POZYCJAX,POZYCJAY,ROZMIARX,ROZMIARY /*polozenie i rozmiar dialogboxa*/ STYLE /*po tym znaczniku umieszczasz rozne identyfikatory stylow okna oddzielona znakiem |. Przykladowe identyfikatory to: DS_SYSMODAL | DS_SETFONT | DS_3DLOOK | DS_FIXEDSYS | DS_CENTER | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | WS_VSCROLL | WS_SYSMENU | WS_THICKFRAME*/ EXSTYLE /*style rozszerzone, np.:WS_EX_PALETTEWINDOW | WS_EX_LEFTSCROLLBAR | WS_EX_APPWINDOW*/ CAPTION "Tytul okna DialogBoxa" /*nie trzeba tlumaczyc*/ MENU IDENTYFIKATOR_EWENTUALNEGO_MENU FONT /*czcionka jaka ma byc wyswietlana w dialogboxie, np.: 8, "MS Shell Dlg", 400, 0, 0x1*/ {*/w tym miejscu wprowadzasz kontrolki dialogboxa, np.:*/ PUSHBUTTON "OK",IDOK,10,10,50,15 /*zwykly przycisk*/ } Nastepnie w kodzie programu wywolujesz jaks funkcje tworzaca DialogBoxa (np DialogBox w ktorej drugim parametrem jest wlasnie nasz identyfikator), definujesz funkcje obslugi komunikatow i w ten oto prosty sposob masz DialogBoxa. Powodzenia! W razie jakichkolwiek watpliwasci albo bledow od razu pisz(cie).
-
Rozumiem, że chcesz wylosować liczbę z przedziału np. 65-112? Przyjmujac, ze a - poczatek przedzialu i b - koniec przedzialu, szukana przez Ciebie wartosc moze byc obliczona w nastepujacy sposob: x=rand()%(b-a) + a;//rand nei pobiera zadnych parametrow, % to operacja modulo (reszta z dzielenia) Sproboj przesunac te operacje za petle for i wywal z neij to "". Wtedy wczytaj bedzie wskaznikiem na CALY string i funkcja strcat() doda CALY string NA RAZ (a nie po kolei kazdy znak) ;-). A jeszcze do tematu: char jest po prostu wartoscia z przedzialu 0..255, a to ze zostaje czasem wyswietlony jako literka jest juz zasluga funkcji, które to robią.
-
Czy ktos wie moze jak stworzyc i dodac do okna toolbar w czystym WinAPI? Za odpowiedz z gory dziekuje.