Skocz do zawartości

Storm

Członkowie
  • Postów

    0
  • Dołączył

  • Ostatnio

    Nigdy

Wszystko napisane przez Storm

  1. Storm

    problemy z main

    Ja bym zamiast petli while obslugiwał komunikaty od Timera i w ten sposob co jakis czas poruszał zającami itp. Nie było by problemu z odbiorem innych komunikatów. A tak u ciebie nie są pewnie pobierane kolejne komunikaty bo cały czas jest obsługiwany ten jeden tj. wybranie z menu "Simulat".Jego obsługa to pewnie ta nieskończona pętla,więc się nie skończy i dlatego inne komunikaty nie są obsługiwane..Przynajmniej tak mi się wydaje.Ale moge się mylić. Pozdrawiam.
  2. Jest to funkcja o dowolnej liczbie argumentów jak printf w C. Pozdro
  3. Jest to funkcja o dowolnej liczbie argumentów jak printf w C. Pozdro
  4. Witam troszke przerobilem twoj kod powinno byc ok //--------------------------------------------------------------------------- #include <windows.h> #include <stdio.h> #include <stdarg.h> #define MAX_KEY_LENGTH 255 #define MAX_VALUE_NAME 16000 #define MAX_PATH 16000 //--------------------------------------------------------------------------- int MessageBoxPrintf(CHAR * szCaption,CHAR * szFormat, ...) { va_list wsk_na_liste_arg; CHAR bufor[1024]; va_start(wsk_na_liste_arg,szFormat); _vsnprintf(bufor,sizeof(bufor),szFormat,wsk_na_liste_arg); va_end(wsk_na_liste_arg); return MessageBox(NULL,bufor,szCaption,0); } //--------------------------------------------------------------------------- WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { // HKEY hKey; if( RegOpenKeyEx(HKEY_CURRENT_USER,"Software\\jajo",0,KEY_ALL_ACCESS,&hKey) == ERROR_SUCCESS ) { TCHAR achKey[MAX_KEY_LENGTH]; // buffer for subkey name DWORD cbName; // size of name string TCHAR achClass[MAX_PATH] = TEXT(""); // buffer for class name DWORD cchClassName = MAX_PATH; // size of class string DWORD cSubKeys=0; // number of subkeys DWORD cbMaxSubKey; // longest subkey size DWORD cchMaxClass; // longest class string DWORD cValues; // number of values for key DWORD cchMaxValue; // longest value name DWORD cbMaxValueData; // longest value data DWORD cbSecurityDescriptor; // size of security descriptor FILETIME ftLastWriteTime; // last write time DWORD i, retCode; TCHAR achValue[MAX_VALUE_NAME]; DWORD cchValue = MAX_VALUE_NAME; // Get the class name and the value count. if( (retCode = RegQueryInfoKey( hKey, // key handle achClass, // buffer for class name &cchClassName, // size of class string NULL, // reserved &cSubKeys, // number of subkeys &cbMaxSubKey, // longest subkey size &cchMaxClass, // longest class string &cValues, // number of values for this key &cchMaxValue, // longest value name &cbMaxValueData, // longest value data &cbSecurityDescriptor, // security descriptor &ftLastWriteTime) // last write time )==ERROR_SUCCESS) { //RegCloseKey(hKey); int liczba = (int) cValues; LPCTSTR ile; LPCTSTR tresc; for (int i=0;i<liczba;i++) { cchValue = MAX_VALUE_NAME; achValue[0] = '\0'; retCode = RegEnumValue(hKey, i, achValue, &cchValue, NULL, NULL, NULL, NULL); MessageBox(NULL,achValue,"info",MB_OK); } //ile = liczba + "adas"; //MessageBox(NULL,ile,"Ile",MB_OK); MessageBoxPrintf("Ile","Znaleziono %d wartosci",liczba); } RegCloseKey(hKey); } return 0; } //--------------------------------------------------------------------------- Pozdrawiam
  5. Storm

    LoadIcon

    Witam Uwazam,ze nie jest dobrym pomyslem czytanie ikonki z pliku,bo zawsze plik,ktos moze usunac,lepjej ja dodac do zasobow,wtedy sie wkompiluje w execa.Nie jest to trudne. W Visualu wybierz Project->Add Resource Wybierz Icon nastepnie Import Pojawi ci sie okienko gdzie mozesz wyszukac swoj plik *.ico Po wskazaniu pliku i wybraniu open ikonka doda sie do zasobow. Jak obejrzec zasoby? W Visualu wybierz View->Resource View Tam masz takie drzewko zasobow(nazwa_pliku.rc) Wybierz z niego Icon Powinno ci sie dodac tam ikonka Bedziesz widział w tym drzewku jej identyfikator zapewne IDI_ICOIN1 Teraz wystarczy wpisac w programie zamiast wndclass.hIcon = LoadIcon(NULL, IDI_WINLOGO); to wndclass.hIcon = LoadIcon (hInstance,MAKEINTRESOURCE(IDI_ICON1)); Pozdrawiam.
  6. Storm

    Menu

    Bo ja podałem adres ktory mozesz wpisac,gdy uzywasz klienta ftp(np Total Comander ma takowego),a codeguy podal link,z ktorego mozna sie dostac na serwerek przez przegladarke. Dla mnie wygodniejszy jest ten pierwszy sposob. Pozdrawiam
  7. Storm

    No właśnie

    Ja bym powiedział konstruktorem klasy,której obiekt zdefiniowano globalnie.Bo definicja klasy moze być na zewnątrz main'a,ale konstruktor pracuje dopiero gdy jest tworzony obiekt.Więc chodzi o obiekt danej klasy nie klasę(klasa to typ).
  8. Storm

    Konstruktor

    Nie wiem czy o to ci chodzi?Czy chodzi o to aby instrukcje zawarte w konstruktorze były wykonane przed pierwszą instrukcją programu? Jeżeli tak to wystarczy obiekt danej klasy zadeklarować globalnie. Przykład #include<iostream> using namespace std; //--------------------------------------------------------------------------- class klasa { public: klasa() ; //konstruktor }; //--------------------------------------------------------------------------- klasa::klasa() { cout << "Jestem konstruktorem" <<endl; } //---------------------------------------------------------------------------- klasa obiekt; //definicja zmiennej globalnej int main() { cout << "Pierwsza instrukcja"<<endl; cin.get(); return 0; } //--------------------------------------------------------------------------- Pozdrawiam
  9. Mialem namysli Richtera wlasnie,ale gdzies mi wcielo tytul. Jak przeczytam Petzolda to sobie na pewno kupie albo pozycze od kumpla.Ale to jeszcze troche potrwa     Pozdrawiam.
  10. Storm

    Menu

    Witam W swoim programie zmień linie klasaokna.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1); na klasaokna.lpszMenuName = "Menu"; A co do przykładów to pare topików temu ktoś podawał adres serwerka ftp host: ftp.winapi.org Można się logować anonimowo. Off topic: Dzięki dobrzy ludzie za te przykłady na pewno się przydadzą. Pozdrawiam
  11. Storm

    MessageBoxIndirect

    Dzięki Zrobilem to jednak na okienku dialogowym bo tak jest jednak prościej.A angielski znam na tyle,ze jak trzeba to sobie poradze. Pozdrawiam.
  12. Storm

    MessageBoxIndirect

    Witam Mam taki problemik.Chciałem wyświetlić MessageBoxa który niezaleznie od wersji system(angielska,polska) wyświetli mi napisy w klawiszach po polsku(czyli TAK NIE zamiast YES NO).Chcialem uzyc funkcji MessageBoxIndirect opisanej tu https://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/dialogboxes/dialogboxreference/dialogboxfunctions/messageboxindirect.asp ale napisy w klawiszach caly czas sa wyswietlane po angielsku.Używam angielskiej wersji systemu(xp). Co robie nie tak? const MSGBOXPARAMS MsgBoxParams= { sizeof(MsgBoxParams), NULL, NULL, "Czy na pewno chcesz wyjść ?", "Edytor Plansz", MB_YESNO | MB_ICONQUESTION, NULL, NULL, NULL, MAKELANGID(LANG_POLISH,SUBLANG_DEFAULT) }; //obsługa komunikatu WM_CLOSE CASE WM_CLOSE: if(IDYES==MessageBoxIndirect(&MsgBoxParams)) DestroyWindow(hwnd); return 0; Z góry dzięki za odpowiedź. Pozdrawiam
  13. Storm

    Zmiana rozdielczości

    Dzieki wszystkim za odpowiedzi,szczegolnie dla Spoona za podanie nazwy funkcji. Pozdrawiam
  14. Storm

    Zmiana rozdielczości

    No wiec tak sprawa wyglada tak,ze kumpel zmienil sobie rozdielczosc na zbyt wysoka i nic nie widział na ekranie,ktos mi podal link do programu z mieniajacego rozdielczosc(mozna go np wrzucic do autostartu lub rejestru w trybie awaryjnym, program robi to co ma robic).Wiec problem rozwiazany.Ale nie wiem jak on dziala bo nie mam zrodla.A jestem ciekaw w jaki sposob on zmienia rozdielczosc. Pozdrawiam
  15. Storm

    Zmiana rozdielczości

    Witam! Znacie może funkcje zmienjającą rozdielczość ekranu? Z góry dzięki. Pozdrawiam.
  16. Witam Podobno w tej ksiazeczce,sa omowione bardzo dobrze watki i w ogóle zarzadzanie pamiecia.Widzialem ja w ksiengarniach,wiec mozesz sprawdzic czy zawiera to co cie interesuje(jesli masz na zbyciu ok 50zl za tyle widzialem ja w empiku) Pozdrawiam
  17. Storm

    Operatory

    Masz racje! Jezeli przez operator zakresu(::)nie okreslimy inaczej to przyjazn bedzie dotyczyc funkcji zdefiniowanej globalnie. Pozdrawiam
  18. Storm

    Pobieranie z Rejestru

    Witam! Moze to ci sie przyda: https://4programmers.net/article.php?id=510 Pozdrawiam.
  19. Storm

    Operatory

    A jak inaczej chcesz to zrobić, aby funkcja ta znajdywała się w klasie i nie była zaprzyjaźniona? Ja tylko napisalem,ze przeciez funkcja skladowa ma z definicji dostep do wszelkich skladnikow swojej klasy.Wiec po co deklarowac przyjazn klasy ze swoja funkcja skladowa.Moznaby powiedziec ze ona jest z definicji zaprzyjazniona ze swoja klasa. Odpowiedz na pytanie: Nie chce tego zrobic, bo nie da sie tego zrobic. Przyklad #include<iostream> #include<conio.h> //--------------------------------------------------------------------------- class CVector { float x; float y; float z; public: CVector(float a=0,float b=0,float c=0) :x(a) , y(b) , z(c) //konstruktor { } CVector operator*( float r ) { x*=r; y*=r; z*=r; return (*this); } //friend CVector CVector::operator*( float r ); //czy opuscimy tę linie //czy nie bez róznicy //i tak funkcja ma dostep do skladowych prywatnych wypisz() { std::cout<<"x="<<x<<"\n"<<"y="<<y<<"\n"<<"z="<<z; getch(); } }; //--------------------------------------------------------------------------- int main() { CVector wek(1,1,1) , wek2 ; wek2=wek*4; wek2.wypisz(); return 0; } //--------------------------------------------------------------------------- Pozdrawiam
  20. Storm

    Operatory

    Co do przyjazni funkcji globalnej z klasa masz racje,ale ja mowilem o funkcji skladowej klasy(tu przyjazn ze swoja klasa jest bez sensu). Pozdrawiam
  21. Storm

    Operatory

    Witam. Operacja mnozenia jest operacja dwuargumentowa.Jesli przeladowujemy operator dwuargumentowy to funkcja przeladowujaca(operator): -musi miec dwa argumenty jesli jest zadeklarowana globalnie. -musi miec jeden argument jezeli jest zadeklarowana jako funkcja skladowa klasy(drugim argument bedzie niejawnie przekazywany przez wskaznik this do obiektu tej klasy).Jednym z argumentow zawsze musi byc obiekt tej klasy na rzecz ktorego funkcja przeladowujaca jest wywolywana. Deklaracja funkcji zaprzyjaznionej jest bez sensu,bo po co klasa ma deklarowac swoja wlasna funkcje skladowa(ma ona juz dostep do wszelkich skladnikow) jako zaprzyjazniona. Pozdrawiam
  22. Dzieki! No wlasnie mnie tez nie.
  23. Witam! Mam pytanka nawiazujace do tematu. W win98 i Dosie bylo cos takiego jak przerwanie zegarowe generowane od timera. Z tego powodu aplikacje nie moga otrzymywac komunikatu WM_TIMER nie czesciej niz 55ms. W NT ta warosc wynosi 10ms. 1.A jak to jest w 2000/xp/2003 czy to tez jest 10ms? Bo w MSDN-ie pisza o wartosci USER_TIMER_MINIMUM: https://msdn.microsoft.com/library/en-us/winui/WinUI/WindowsUserInterface/Windowing/Timers/TimerReference/TimerFunctions/SetTimer.asp Ale ile ona wynosi?Ewentualnie jak to sprawdzic? Jesli bym chcial odmierzyc dokladnie czas w MSDN-ie znalazlem funkcje: QueryPerformanceCounter QueryPerformanceFrequency https://msdn.microsoft.com/library/en-us/winui/WinUI/WindowsUserInterface/Windowing/Timers/TimerReference/TimerFunctions/QueryPerformanceFrequency.asp 2.Czy czestotliwosc uzywana w funkcji QueryPerformanceFrequency zalezy od czestotliwosci procesora? Bo gdybym chcial przenies programik na kompa o innej czestotliwosci procka to czy bedzie jakas zmiana w tej czestotliwosci? Dzieki za wszelkie odpowiedzi!
  24. Storm

    Generator

    Wlasnie podziel sie rozwiazaniem bo ja tez jestem ciekawy o co chodzilo!
  25. Storm

    problem z float'em

    Typy zmienoprzecinkowe charakteryzuja sie tym, ze maja skonczona dokladnosc w przeciwienstwie do calkowitych. Tzn iles bitow przypada na na ceche i iles na mantyse(Liczba=M*2^C).Poza tym 0.1 ma chyba nieskonczone rozwiniecie(gdybys chcial 0.1 przedstawic binarnie) w przeciwienstwie np do 0.5 .Stad ta niedokladnosc. Dlatego nigdy nie powinno sie dawac warunku rownosci dla liczb zmiennoprzecinkowych bo program pojdzie w maliny.
×
×
  • Utwórz nowe...