Avatar billede AlexanderCI Nybegynder
19. juli 2014 - 21:40 Der er 6 kommentarer

Funktionsproblem og kopibeskyttelse

Hej alle på Eksperten,

Jeg er i gang med at lave et program i C++ Win32 med Dev-C++ fra Orwell. Jeg er hertil stødt på 2 problemer, som jeg håber I kan hjælpe mig med.
NB: Jeg benytter standart skabelonen fra Dev-C++ fra Orwell.

1) Mit spørgsmål angår GetWindowText() funktionen. Jeg har et EDIT felt, hvor brugeren kan indtaste noget. Herefter klikker brugeren på en knap, hvorefter en MessageBox popper op med teksten. Det fungerer fint. Problemet kommer, når jeg gerne vil benytte 2 variabler - altså når brugeren indtaster noget i 2 EDIT felter og herefter klikker på knappen. Min kodeopbygning ser sådan ud:


case WS_CREATE:{
CreateWindow(EDIT-felt);
CreateWindow(EDIT-felt2);
CreateWindow(BUTTON);
}

case WS_COMMAND:{
IF(BUTTON IS CLICKED)
{
int len = GetWindowTextLength(EDIT-felt-navn) +1;
static char text[500];

GetWindowText(EDIT-felt-navn, text, len);

CreateWindow("STATIC", text, WS_VISIBLE | WS_CHILD, x, y, h, w, hwnd, (HMENU) ID, NULL, NULL);
}
}


Som det fremgår benytter jeg text til at opbevarer inputet, men jeg ved ikke hvordan jeg skal få den til at vise begge EDIT-felters indhold i ét felt.

2) Programmet jeg er i gang med at lave kræver ikke nogen installation, så det er kun en .exe-fil, som kørers lokal uden internetadgang. Jeg kunne godt tænke mig en form for SIMPEL kopibeskyttelse, så brugeren af programmet kun kan bruge programmet på den computer det bliver kørt på første gang på (altså skal brugeren ikke kunne copy-past'e programmet til en anden computer og kører det der).
Jeg har tidligere prøvet at få fat i brugerens MAC adresse og ville på den måde validerer den enkelte computer, men det lykkedes mig aldrig at få det til at virke.
Måske én af jer kan vise mig hvordan man kan få fat i MAC adressen eller eventuelt komme med en anden idé/mulighed for kopibeskyttelse?
Avatar billede arne_v Ekspert
20. juli 2014 - 04:43 #1
re 1)

du allokerer en buffer og kopierer data til den buffer og bruger saa den buffer
Avatar billede arne_v Ekspert
20. juli 2014 - 04:44 #2
re 2)

Den slags gik vist af mode for ca. 20 aar siden
Avatar billede AlexanderCI Nybegynder
20. juli 2014 - 14:07 #3
Mange tak for begge svar Arne!

Jeg bliver nok nødt til at have dig til at uddybe dit svar til første spørgsmål, da jeg ikke er helt sikker på hvordan det skal virke.
Jeg er dertil heller ikke helt sikker på, at jeg beskrev mit problem godt nok - i hvert fald vil jeg lige beskrive det på en anden måde.

Når jeg skriver et program i C++ til console, skriver jeg følgende hvis jeg vil udskrive flere variabler:

cout << "Værdien af x er: " << x << "\nOg værdien af y er: " << y << endl;

Som jeg beskrev i mit første indlæg skriver jeg følgende, når jeg vil have et output i win32:

CreateWindow("STATIC", text, WS_VISIBLE | WS_CHILD, x, y, h, w, hwnd, (HMENU) ID, NULL, NULL);

Her benytter jeg text som variable, men findes der nogen måde,hvorpå jeg kan få flere variabler ud, og få samme resultat, som ved ovenstående console output?
Avatar billede AlexanderCI Nybegynder
21. juli 2014 - 21:35 #4
Hej alle,

Lige en tilbagemelding, da jeg selv har fundet en løsning på problemet. Jeg har benyttet følgende kode:

std::ostringstream os;
os << "Værdien af x er : " << x << " og værdien af y er: " << y << endl;
std::string text = os.str();

CreateWindow("STATIC", text.c_str(), WS_VISIBLE | WS_CHILD, x, y, h, w, hwnd, (HMENU)ID, NULL, NULL);
Avatar billede arne_v Ekspert
22. juli 2014 - 03:59 #5
Jeg er noget skeptisk overfor at din Win32 kode bruger char og ikke wchar_t. Er det saa vigtigt at vaere Windows 95/98/ME kompatibel?

:-)

Men lad os sige at du er OK med char saa burde ovenstaaende kunne laves som.

char text[1000];
strcpy(text, x);
strcat(text, y);
CreateWindow(..., text, ...);
Avatar billede AlexanderCI Nybegynder
28. juli 2014 - 03:36 #6
Arne: Undskyld det sene svar.
Nej det er nu ikke vigtigt, som du nok havde regne ud. :)
Det var ikke noget jeg havde tænkt over.
Ift. dit eksempel så ja, det kan sagtens bruges. Jeg kigger lige på hvad der kan implementeres lettest.
Mange tak for dit forslag.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester