Phoenix
-
Postów
0 -
Dołączył
-
Ostatnio
Nigdy
Typ zawartości
Profile
Fora
Kalendarz
Articles
Pliki
Posty napisane przez Phoenix
-
-
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
-
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.
-
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.
-
Miło się patrzy jak ludzie się godzą :D
Pozdrawiam
-
Witam, co do pierwszego pytania to odpowiedź znajdziesz pod tym adresem https://warsztat.pac.pl/artykuly/asmicpp/asmicpp.htm. Mam nadzieje, że link bedzie pomocny.
A co do drugiego pytania to rownież mi przyda się przypomnienie :)
Pozdrawiam
-
Oki wielkie dzieki za pomoc
Pozdrowka :)
-
-
-
-
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 :)
-
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
-
Nie wiem czy istnieje jakas funkcja w API do tego celu jednak mozesz uzyc funkcji atoi, ktora zamienia ascii na int.
#include <stdlib.h> int atoi(const char *s);
Pozdrawiam
-
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
-
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
-
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
-
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
-
Wiam wejdz na www.warsztat.pac.pl i przegladnij sobie forum znajdziesz tam troszke informacji na temat winsock'a
Pozdrawiam -
Witam wklej troszke kodu moze wtedy cos poradzimy.
Pozdrawiam -
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
-
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=5TextOut(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
-
-
-
-
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.
Ilość przesyłanych danych
w C
Napisano
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.