Skocz do zawartości

Phoenix

Członkowie
  • Postów

    0
  • Dołączył

  • Ostatnio

    Nigdy

Posty napisane przez Phoenix

  1. Witam, co do Twojego pytania to sprawdzić na pewno idzie (zobacz na ikonke w tray'u przy polaczeniu np: lokalnym). Niestety jak to sprawdzic to juz inna para butow :-), ale mysle ze sprowadza sie to do wypelnienia jakies struktury i wywolaniu funkcji. Moze na MSDN bedzie cos na ten temat ?

    Pozdrawiam.

  2. Jak dla mnie mozesz zrobic to na dwa sposoby dodac ES_SETLIMITTEXT podczas tworzenia kontrolki EDIT:

    // tworzenie kontrolki EDIT
    HWND hEdit;
    hEdit = CreateWindow("EDIT", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | ES_MULTILINE | WS_VSCROLL | EM_SETLIMITTEXT,
    10, 40, 150, 200, hOkna, (HMENU)101, (HINSTANCE)GetWindowLong(hOkna,GWL_HINSTANCE),0);

    Lub drugi sposob, kiedy nie ustawiles ES_SETLIMITTEXT w fukncji CreateWindow. Wyslasz wiadomosc funkcja SendMessage(.....);

    SendMessage(hEdit, EM_SETLIMITTEXT, NULL, NULL);

    hEdit to oczywiscie uchwyt do Twojej kontorlki.

    Jezli cos jest nie jasne to pisz.

    Pozdrawiam

  3. Nie wiem moze sie myle, ale Twoj problem jest raczej zwiazny ze standardem, sprobuje zamiast

    #include <iostream.h> 
    #include <fstream.h>

    uzyc:

    #include <iostream> 
    #include <fstream>
    

    i dopisz jeszcze linie (przed wywolaniem int WINAPI WinMain(...) )

    using namespace std;
    

    Pozdrawiam i pisz smialo jesli nadal jest cos nie tak.

  4. Z tego co widze tab1 i pass sa to tablice zankow i do porownania stringow nie mozesz uzyc instrukcji

    if( tab1 == pass )  // zle
    

    Do porownania stringow uzywaj funkcji:

    int strcmp(
    const char *string1,
    const char *string2
    );

    Jezli wartosci zwrocona bedzie 0 to dwa lancuchy znakow sa identyczne.

    if( (strcmp(tab1, pass)) == 0)
    {
         cout << "Haslo ok";
    }
    

    Pozdrawiam mam nadzieje ze cos pomoglo :), jakby co to pisz.

  5. Natrualnie ze kontrolka Edit posiada mozliwosc zrobienia jej jako multiline. Nalezy ustawic w opcjach kontrolki jako Multiline lub przy tworzeniu w funkcji CreateWindow dodac jej styl ES_MULTILINE.

    Pozdrawiam

  6. Witam. Mam kontrolke ListView (na caly obszar roboczy) i chce w niej wyswietlic menu kontekstowe po zaznaczeniu danego elementu i kliknieciu prawego przycisku myszki. Jaki komunikaty musze obsluzyc ? I jak wyswietlic menu kontekstowe w ListView ?

    Z gory dziekie za odpowiedz

    Pozdrawiam :)

  7. O ile dobrze Cie rozumiem to chodzi o zamiane z elementu tablicy typu char na zamiane na typ int ? Jezeli tak to najlepiej zamienic char na int funkcja atoi.

    #include <stdlib.h>
    int atoi(const char *s);

    Jezeli Cie zle zrozumialem to pisz :)

    Pozdrawiam

  8. Musisz pobrac uchwyty tych kontrolek funkcja GetItemDlg np:

    HWND hEdit;
    hEdit = GetItemDlg(uchwyt_okna, ID_EDITA)

    Nastepnie sciagasz do bufora tekst z kontrolki

    char cBufor[10];
    GetWindowText(hEdit, cBufor, iStringLen);

    Aby znalezc dlugosc stringa uzyj funkcji GetWindowTextLength

    int iStringLen;
    iStringLen = GetWindowTextLength(hEdit);

    Do wstawiania tekstu w kontrolce uzyj funkcji SetWindowText, analogiczne musisz pobrac uchwyt kontrolki do ktorej chcesz wstawic dane.

    HWND hEditTwo;
    hEditTwo = GetDlgItem(uchwyt_okna, ID_EDITATWO);
    SetWindowText(hEditTwo, bufor_z_danymi);

    Jezeli chcesz wstawic dane po wcisnieciu klawisza lub butona to obsluz dany komunikat zwiazany z danym klawiszem.

    W razie problemow pisz smialo :)

    Pozdrawiam

  9. lecz w brolandzie i vc++ nie widze funkcj int main() rozumiesz? nie wiem jak i gdzie ja zeedytowac a jesli bym ja zobaczyl i zaedytowal to o\sobie poradze juz lecz jej nie widze... lecz pytanie gdzie jest funkcja int main w borlandzie czy v++ gdzie?

    Nie za bardzo rozumiem o co chodzi ? Czego nie widzisz ? Jezeli skopiujesz kod i odpalisz pod konsola np. w taki sposob: nazwa_programu.exe parametr, to powinno byc ok. Jezeli masz problem na poziomie kompilacji to sprawdz czy wybrales tworzenie projektu pod konsole. Napisz jakiego kompilatora uzywasz ?

    wytluamczie nzasady dzilaania continue z break rowne funkcji goto bo ja nie widze podobienstwa :/

    Napisze krotko - goto nie powinno sie stosowac poniewaz nie swiadczy to dobrze o programie (programiscie), kod z wieksza ilosci takich instrukcji staje sie bardzo nieczytelny i zawily. Natomiast break uzywa sie do przerwania danej instrukcji takich jak: case, for, while itp. Continue dziala odwrotnie do break :)

    Pozdrawiam

  10. No i last quastion
    jak przy
    main(int argc, char *argv[]); // dla dosowej konsoli
    main(int argc, char *argv[],*env[]); //dla borlanda
    wiec jak to pobrac te 3 rzeczy dla borlanda? jesli pisza printf("%d",argc); nie ma ?? ;/

    Pierwsza funkcje mozesz stosowac w dosowej konsoli dla kompilatora Visual'a i Borland'a (nie wiem jak jest dla innych) - sprawdzalem i chodzi poprawnie.

     main(int argc, char * argv[])
    {
         if(!argc[1])
         {
             printf("Nie podano parametru. Koniec programu");
             exit(0);
          }
    
          else {
                   printf("Podanie parametru 0: %s", argv[0]);
                   printf("Podanie parametru 1: %s,  argv[1]);
         }
    
           return 0;
    }

    Musisz pamietac o tym ze wartosc argc jest na poczatku rowna 1, gdyz jest to sciezka do Twojego programu. A parametry w argv sa zawsze podawane jako string, wiec jesli chcesz podac parametr jako liczbe np.: int to nalezy ten parametr zmienic funkcja atoi.

    Co do sprawdzanie czy dany plik jest exe mozesz sprobowac tak:

    Kopiujesz nazwe pliku wraz z rozszerzeniem do bufora i odcinasz 4 ostatnie znaki ( rozszerzenie np: ".exe") kiedy to masz porownujesz je czy 4 pobrane znaki sa rowne ".exe". W ten sposob na pewno unikniesz problemow z takimi plikami jak "nazwa_pliku.exe.txt". Sposob ten na pewno idzie przedstawic prosciej, ale to jedyne co aktualnie wpadlo mi do glowy :)

    Pozdrawiam jesli chcesz moge umiesci Ci kod ktory sprawdza czy dany plik to ".exe". Dzialajacy na zasadach jak opisalem wyzej

  11. Mialem podobny problem przyczyna byla blednie wypelniona struktura DCB sprawdz dokladnie ustawienia, bit parzystosci, bit stopu itp. Jak chcesz to moge podeslac pola calej struktury. Po drugie wykorzystaj program terminal dzieki ktoremy bedziesz mogl sprawdzic co odbierasz. Pozdrawiam

  12. Witam odpowiem czesciowo na Twoje pytanie, a w zasadzie tylko na ostatnie :), aby wyciagnac tekst z pola edycji uzyj funkcji GetWindowText. Przyjmuje ona trzy parametry są to: hWnd -> tutaj (w Twoim przypadku) uchwyt do kontrolki pola edycji, lpString -> wskaznik do bufora, w ktorym bedzie znajdowal sie tekst z kontrolki, i trzeci parametr to nMaxCount -> liczba znakow jaka chcesz wyciagnac z kontrolki ( przypuszczam ze wartosc NULL sciaga caly tekst, choc nie jestem pewien na 100 %). Funkcja GetWindowText zwraca dlugosc stringu.

    Postaram sie poszukac wiecej informacji, jezeli cos znajde na pewno o tym napisze. W razie problemow z powyzszym opisem wal smialo. :)

    Pozdrawiam

  13. Podam Ci przyklad pod Visuala nie wiem czy zadziala u Ciebie choc mysle ze nie powinno byc problemow :)

    Ja uzwyam dwoch funkcji TextOut i wsprintf
    Dla przykladu mamy zmienna liczba=5

    TextOut(hdc, x, y, buffer, wsprintf(buffer, "Liczba %i", liczba);
    
    hdc - kontekst urzadzenia
    x,y - wspolrzedne tekstu
    buffer - tablica char ktora przechowa nasz tekst
    wsprintf - chyba nie trzeba opisywac dodam ze zwraca dlugosc naszego tekstu, a caly tekst zapisywany jest do zmiennej buffer
    

    Mam nadzieje ze oto chodzilo, a jak nie to probowalem :)

    Pozdrawiam

  14. Link do wydawcy https://www.rm.com.pl

    Najlepje jak wpiszesz w wyszukiwarce "programowanie windows" bo mialem troszke problemow z odnalezeniem tej pozycji

    Pozdrawiam

  15. Do API zdecydowanie polecam ksiazke Charles'a Petzolda "Programowanie Windows" jak na razie mam ja pare dni jednak ksiazka jest pisana przystepnie ( oczywiscie znajomosc podstaw c++, wskazniki itp). Ksiazka ma rowniez bardzo bogate komentarze przy kodach zrodlowych ( dla mnie wielki plus ). Niestety cena jest dosc przytlaczajaca ponad 120 zl moze zabolec.

×
×
  • Utwórz nowe...