|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
abc_d JLI Master Trainee
Alter: 34 Anmeldedatum: 27.01.2003 Beiträge: 615
Medaillen: Keine
|
Verfasst am: 31.01.2003, 06:19 Titel: Auf den Desktopzeichnen |
|
|
Hi
Ich versuche immer zu jedem Kapitel ein übungsbeispiel zu machen um es besser zu lernen. Ich bein gerade im GDI Kapitel und möchte ein programm schreiben das ich dann auf ner LAN auf den Computer eines Freundes in den Autostart kopiere.
Leider funktioniert das nicht. Das Programm soll auf den Desktop schreiben(im Buch steht das man mit hDC=GetDC(NULL); den Desktop holen kann) das ein Virus drauf ist.
*g* meine Freunde werden sich freuen. "Wer hat mir einen Virus gegeben. Manuel warst du das?" *g*
Hier mal der Code, wenn ich es starte tut sich einfahc nichts:
Code: |
#include <windows.h>
int i=10000;
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
//Struktur zum Zeichnen
PAINTSTRUCT ps;
HDC hDC;
//erfassung des Desktops
hDC=GetDC(NULL);
hDC=BeginPaint(NULL,&ps);
// das TRUE werde ich später noch ersetzen
while(TRUE)
{
//if(i==10000)
//{
// (Werde den Text noch überdenken)
TextOut(hDC,20,20,"Ich bin ein Virus",20);
//i=0;
//}
//
}
EndPaint(NULL,&ps);
ReleaseDC(NULL,hDC);
return 0;
} |
|
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 31.01.2003, 10:51 Titel: |
|
|
Mal abgesehen, das sowas nicht gerade nett ist hast du Fehler im Programm:
1. Du weisst hDC 2x hintereinander zu. Das GetDC() ermittelt doch schon einen gültigen HDC, ein BeginPaint danach überschreibt diesen. Da BiginPaint immer nur innerhalb von WM_PAINT genutzt werden darf erhältst du hierbei NULL - also einen ungültigen HDC.
Überprüfe das mit GetDC() erhaltene HDC auf ungleich NULL.
Statt EndPaint() musst du ReleaseDC verwenden.
Etwas direct auf den Screen zu schreiben ist immer eine sehr unschöne Sache, vorallem weil einfach jedes Fenster übermalt wird... Diese Funktion ist eher dafür gedacht, das man die Farbwerte bestimmter Bildschirmkoordinaten ermitteln kann.
AFE-GmdG _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
|
abc_d JLI Master Trainee
Alter: 34 Anmeldedatum: 27.01.2003 Beiträge: 615
Medaillen: Keine
|
Verfasst am: 31.01.2003, 12:53 Titel: |
|
|
Danke hier der code, man muss das Prog aber per Taskmanager beenden:
Code: |
#include <windows.h>
int i=0;
int z=0;
int s=0;
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
//Struktur zum Zeichnen
HDC hDC;
hDC=GetDC(NULL);
// das TRUE werde ich später noch ersetzen
MessageBox(NULL,"Du hast ein Virus auf deiner Festplatte","VIRUS",MB_OK);
while(TRUE)
{
for(double u;u==1000000;u++)
{
}
do{
TextOut(hDC,i-800,i,"Du hast ein Virus auf deiner Festplatte||FEHLER||Du hast ein Virus auf deiner Festplatte||FEHLER||Du hast ein Virus auf deiner Festplatte||HAHAHA||Du hast ein Virus auf deiner Festplatte||Du hast ein Virus auf deiner Festplatte||FEHLER||Du hast ein Virus auf deiner Festplatte||FEHLER",300);
TextOut(hDC,z-800,z,"Du hast ein Virus auf deiner Festplatte||FEHLER||Du hast ein Virus auf deiner Festplatte||FEHLER||Du hast ein Virus auf deiner Festplatte||HAHAHA||Du hast ein Virus auf deiner Festplatte||Du hast ein Virus auf deiner Festplatte||FEHLER||Du hast ein Virus auf deiner Festplatte||FEHLER",300);
TextOut(hDC,s-800,s,"Du hast ein Virus auf deiner Festplatte||FEHLER||Du hast ein Virus auf deiner Festplatte||FEHLER||Du hast ein Virus auf deiner Festplatte||HAHAHA||Du hast ein Virus auf deiner Festplatte||Du hast ein Virus auf deiner Festplatte||FEHLER||Du hast ein Virus auf deiner Festplatte||FEHLER",300);
i=i+20;
z=i+20;
s=z+20;
}
while(i != 400);
}
ReleaseDC(NULL,hDC);
return 0;
}
|
|
|
Nach oben |
|
|
abc_d JLI Master Trainee
Alter: 34 Anmeldedatum: 27.01.2003 Beiträge: 615
Medaillen: Keine
|
Verfasst am: 01.02.2003, 11:46 Titel: |
|
|
Noch ne Frage ich hab hier gelesen das man mit BOOL BlockInput (BOOL fBlockIt); die Tastatur und maus speren kann.
Dazu muss man aber die Datei User32.lib ins Projekt einbinden wie geht das? |
|
Nach oben |
|
|
Compuholic Mini JLI'ler
Anmeldedatum: 15.10.2002 Beiträge: 25
Medaillen: Keine
|
Verfasst am: 02.02.2003, 17:54 Titel: |
|
|
Die user32.lib ist standardmäßig in die Bibliothekenliste bei den Linkeroptionen aufgenommen. Du mußt nur den Header einbinden. |
|
Nach oben |
|
|
abc_d JLI Master Trainee
Alter: 34 Anmeldedatum: 27.01.2003 Beiträge: 615
Medaillen: Keine
|
Verfasst am: 02.02.2003, 18:03 Titel: |
|
|
Wie gesagt ich bin anfänger. Wie mach ich das genau? mit #include <User32.lib> gehts nicht |
|
Nach oben |
|
|
Master_York JLI'ler
Anmeldedatum: 23.07.2002 Beiträge: 124 Wohnort: Langenhagen(Hannover) Medaillen: Keine
|
Verfasst am: 02.02.2003, 18:58 Titel: |
|
|
Hi du must nur die Header für user32.lib einbinden.
Die dazugehörige header ist winable.h.
Also mach es so:
Code: |
#include <winable.h>
|
Bye |
|
Nach oben |
|
|
abc_d JLI Master Trainee
Alter: 34 Anmeldedatum: 27.01.2003 Beiträge: 615
Medaillen: Keine
|
Verfasst am: 03.02.2003, 10:00 Titel: |
|
|
Danke! |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|