AHHHH ICH HABS!!!!
//Preform bit reading of bmp.
Draw.Rectangle rect = new Draw.Rectangle(0, 0, bmp.Width, bmp.Height);
System.Drawing.Imaging.BitmapData bmpData =
bmp.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite,
bmp.PixelFormat);
IntPtr ptr = bmpData.Scan0;
int bytes = bmp.Width * bmp.Height * 4;
byte[] rgbValues = new byte[bytes];
//Marshal copy the bits at ptr to rgbValues at 0 for a size of bytes.
System.Runtime.
InteropServices.Marshal.Copy(ptr, rgbValues, 0, bytes);
bytes = bmp.Width * bmp.Height * 1;
byte[] bValues = new byte[bytes];
int i = 0;
//Convert into a Displayable kind.
while (i != bytes)
{
bValues[i] = rgbValues[i * 4];
i++;
}
lgbmp.pixels = bValues;
Sorry fürs spammen aber ich hab jetzt die ganze nacht an der lösung gesessen!!!! oh weh. Aber es funzt ohne de CPU auszu lasten (trotz rendering calls) ^^ *Freu
Neoncortex schrieb:
Und wenn ich schon mal dabei bin wie fuege ich im Microsoft Explorer eine weitere Rechtsklickoption hinzu. In diesem Falle rechtsklick auf einen Laufwerksbuchstaben und es soll die auswahl "mount" erscheinen.
Das fällt in die Abteilung Windows Shell!
[MSDN: Create Namespace Extensions for Windows Explorer with the .NET Framework]
http://msdn.microsoft.com/msdnmag/issues/04/01/WindowsShell/default.aspx
[MSDN: Creating a Shell Namespace Extension]
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/programmersguide/shell_adv/namespaceextension/namespace.asp
Bei Codeguru und Codeprojekt wirst Du sicher auch Beispiele finden, wobei die Realisierung mit C++ im Vordergrund steht.
jkalk,
ich kenne die beiden Onlinebücher bei Gallileo auch. Sind bestimmt ganz gut, aber ich habe lieber auch etwas gedrucktes in der Hand.
Daher habe ich mir das Buch "Objektorientiertes Programmieren in Visual C#" von Peter Loos gekauft. Also ich bin damit sehr zufrieden. Es hat eher den Charakter eines Lehrbuches, da zu jedem Kapitel Übungsaufgeben (mit Lösungen) vorhanden sind. Die Beispiele sind gut Nachvollziehbar. Der Sprachstil ist locker aber sachlich, so dass es einem nicht gleich wieder langweilig wird.
Ob es geeignet ist, eine Programmiersprache von Grund auf neu zu erlernen weiß ich nicht. Da ich schon lange mit C/C++ und zuletzt auch mit Java zu tun hatte, kommt mir natürlich einiges vertraut vor. Allerdings, und deshalb finde ich das Buch gut, wird auf Grundlegende unterschiede wie z.B. delegates gut eingegangen.
Gruß
Kramny
hier noch ein Link:
http://www.amazon.de/Objektorientiertes-Programmieren-methodische-Einf%C3%BChrung-Fortgeschrittene/dp/3866454066/ref=pd_ka_1/028-0368086-2783731?ie=UTF8&s=books
if (object.GetType().IsSubclassOf(typeof(object)) {...}
Mit GetType() bekommst du ein Objekt vom Typ "Type" zurück. Type Objekte bieten sehr viele Möglichkeiten um etwas über den Typen herauszufinden (Basisklasse, Interfaces usw.). Einfach mal in der MSDN nachschauen (oder IntelliSense benutzen ).
Du könntest mit ProcessStartInfo aus deinem Dialog eine Console Anwendung starten. Was macht dein Programm, dass du zwischen Dialog und Console unterscheiden willst?
[MSDN: ProcessStartInfo Class]
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdiagnosticsprocessstartinfoclasstopic.asp
ProcessStartInfo psi = new ProcessStartInfo("MyConsoleApp.exe");
psi.WindowStyle = ProcessWindowStyle.Hidden;
psi.CreateNoWindow = true;
psi.RedirectStandardOutput = true;
psi.UseShellExecute = false;
Grüsse - Kalle
Vielen Dank,
ich habe nach langem Suchen die Antwort in der WIN32-API gefunden. FreeConsole aus Kernel32.dll befreit den Rest des Programms von der Console.
Das finde ich richtig nützlich und frage mich, warum nicht die vollständige WIN32-Konsolen-API in die .NET-API übernommen wurde.
Gruss
Thomas
Benny_Ben_Ben schrieb:
Das mit OO und so fällt mir leichter als die Flut der neuen Befehle die in der DVD am Anfang behandelt werden.
Hi, die Lernkurve bei C# ist wesentlich steiler als bei C++. Bei C++ müssen wesentlich komplexere Zusammenhänge verstanden werden. C# ist in der Syntax auch wesentlich einfacher als C++. Seit dem ersten Beta Framework ist einiges an Klassen und Sprachimplementierungen hinzugekommen. Ich wühle mich aktuell durch WPF, WCF und WWF. Das MS SDK ist schlappe 2 GByte groß. Was Du also zur Zeit erlebst ist ganz normal und verschwindet je länger du dich mit CSharp beschäftigst.
Grüsse - Kalle
Moin!
Die folgenden Ausführungen erheben keinen Anspruch auf Vollständigkeit, sie kratzen nur an der Oberfläche.
Zu Deinem Problem: Wenn Du selber zeichnest hast Du einen sichtbaren Bereich.
Sagen wir mal 600 Pixel breit und 400 Pixel hoch. Der kann sich natürlich ändern, wenn der User, die Maske vergrößtert oder verkleinert. Wenn er kleinere oder größere Schriftarten als die Windows Standard Schriftgröße gewählt hat usw.
Also Dein (public int breite = 100; public int anzahlSpalten = 10;) geht nicht!
Das ist also der variable sichtbare Bereich, den Du bei deinem Programmstart erstmalig auslesen und berechnen muß und zwar auf den Pixel genau und natürlich bei jeder Aktion des Users neu berechnen muß. Ich nehme mal an, dass Dein Promm verschieden Schriftarten oder Bitmaps als Hintergründe anbietet.
Dann hast Du etwas, was Du in dem sichtbaren Bereich darstellen möchtest - deine Daten. Der darzustellende Bereich kann größer oder kleiner oder gleich dem sichtbaren Bereich sein. Wenn Du also einen Kalender zeichnen willst, mußt Du wissen, wenn ich eine Zeile zeichne, habe ich z. B. 30 Pixel in der Höhe und 250 Pixel in Breite in Abhängig vom sichbaren Bereich verbraucht.
Also der aktuell sichbare Bereich ist 600 x 400
Zeilenhöhe einer Zeile deines Kalenders ist 30
Zeilenbreite einer Zeile deines Kalenders ist 250
Nehmen wir mal an: Du brauchst 30 Zeilen um einen Jahreskalender vollständig zu zeichnen. Dir fehlen also 300 Pixel für die vollständige Darstellung bei dem aktuell sichtbaren Bereich von 600 x 400. Es muß also ein Scrollbar her. Und jetzt muß du wieder neu rechnen zwischen dem sichtbaren Breich und dem was der User noch sehen kann. Er sieht also z. B. nur die ersten 9 Monate. Will er also die nichtzusehenden Monate sehen (300Pixel) muß er scrollen. Ein Click auf die Scrollbar bedeutet, das Du 30 x 250 neu zeichnen mußt und 30 x 250 des sichtbren Bereichs verwerfen muß. Das einzige was fix ist Dein Kalender pro Zeile und Spalte (30x250) der sichtbare und darzustellende Bereich ist immer nur im aktuellen Kontext der Anwendung fix. Alles andere kann sich durch die Aktionen des Users und Deine Kalenderfunktionen (Bitmaps unterschiedliche Schriftarten etc) jeder Zeit ändern.
HTH und Grüsse - Kalle
Danke erst mal für die Antworten.
C-Thomas, das ist ja der Code aus der Hilfe, den ich mal probiert habe, ich habe ihn in meinem 1.Beitrag nur auf das wesentliche reduziert.
xivVerge, das Interssante daran ist ja.., genauso wie lobs es beschrieben hat.
Was das Framework anbelangt so benutze ich VS2005Prof mit Net 2.0. Allerdings handelt es sich bei mir um eine Klassenbibliothek für intelligente Geräte, das heisst ich greife auf das CompactFramework zu, vielleicht liegt ja da das Problem. Nur wo und wie kann man feststellen, welche Version benutzt wird, ich habe ja nur die Möglichkeit entsprechende namespaces einzubinden.
Ich habe da nämlich noch so eine Ungereimtheit mit dem CompactFramework, die ich in einem anderen Beitrag fragen werde.
Gruss Walter
Du kannst auf Events aus dem Unterfenster reagieren. Also im Hauptfenster
Form f = new Form();
f.GotFocus += new EventHandler(childWindowGotFocus);
f.show();
...
private void childWindowGotFocus(object sender, EventArgs args)
{
this.activeForm = (Form)sender; //Vorher activeForm als memeber definieren
}
Das gleiche kannst du mit LostFocus, Closed usw. machen.
Falls "sender" nicht das Unterfenster ist (bin mir da nicht ganz sicher), kannst du ein eigenes Event erstellen, bei dem du als sender das Unterfenster übergibst, und in "OnFocus" des Unterfensters auslösen.
Jetzt bekommst du immer mit, welches das aktive Fenster ist bzw. welches das letzte aktive Fenster war (verliert ja den Focus beim klicken auf das Menü.
Hallo,
ich empfange eine SNMPTRAP über UDP auf dem Port 162.
so sieht der code aus:
UdpClient listener = new UdpClient(listenPort);
IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, 162);
while (run == true)
{
try { byte[] bytes = listener.Receive(ref groupEP);
String dataReceived = System.Text.Encoding.ASCII.GetString(bytes); AddMessage(dataReceived);
}
catch (Exception er) { MessageBox.Show(er.Message.ToString()); }
}
das problem ist, daß ich in meinem string immer nur &&%%))((???? und so was stehen habe ! Irgendwie scheint das encoding net zu stimmen.
Hat jemand ne idee wie das funktioniert.
Danke
Gruß Euro.
Servus,
dann wirds wohl daran liegen, dass dein Char[] nicht gefüllt ist. Wenn es daran nicht mehr liegt, dann machst du irgendwas Anderes
mfg
Hellsgore