Hi Boris,
Deine Typen sind falsch. 'Long' hat, wie Du schon bemerkt hast, die Breite 64 Bit. Die Parameter der Funktion sind aber vom Typ DWORD, also 32 Bit. Besser ist es sogar, wenn Du den ersten Parameter als IntPtr deklarierst und übergibst, das ist intern nämlich ein HWND und der kann unter einigen Systemen breiter sein, nämlich AFAIR 96 Bit (stimmt das?), jedenfalls die gleiche Breite wie ein System.IntPtr.
Übrigens würde ich Dir vorschlagen, Deine VB-Fragen doch in einem VB-Forum zu stellen, z.B. auf ActiveVB.
Zurück zum Problem, deklarier die Funktion so:
Declare Function ShowWindow Lib "kernel32"(hwnd As IntPtr, showCmd As Int32) As Boolean
und ruf sie so auf:
ShowWindow(Me.Handle, 5)
Am besten ist es aber, Du führst ein Enum für die möglichen Show-Kommandos ein.
Tomt0m! Kannst Du bitte endlich mal zur Kenntnis nehmen, dass das hier nicht das C-Forum ist? Deine Fragen sind hier am falschen Platz. Dieses Forum beschäftigt sich mit C#. Stell Deine Fragen gefälligst im C-Forum!
Hmm, is ne ziemlich verschachtelte Struktur, also aktuell wird mit new angelegt, anschließend in das Grid eingehangen (bzw in eine Liste, die zum Einfügen der einzelnen Elemente in das Grid dient) und dann soll aktuell eben mit Werten befüllt werden, um diese in der Paint-Methode der jeweiligen Zelle, diese zu zeichnen.
Hat soweit eigentlich alles gepasst, weiß auch nicht genau, wo der Fehler lag, habs mir nur noch mal genauer angesehen, aber geht jetzt. Ich denke, das Problem lag darin, dass ich es länger nicht mehr kompiliert hatte (also vom System her, habe ich die Komponente in einer dll liegen und diese war im benutzenden Form nicht aktuell). Jetzt geht es, nachdem ich die dll neu referenziert habe.
Aber trotzdem danke so weit
wieso sollte das lange dauern?
Also hier zeichne ich auch beim start 20000 vierecke und das dauert nicht mal 1 sec.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
private Bitmap bitmap; //Bitmap wo alles drauf gemalt wird
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
bitmap = new Bitmap(this.Size.Width, this.Size.Height); // bitmap ist so groß wie das Fenster
Graphics graph = Graphics.FromImage(bitmap); //das Graphic object von der Bitmap bekommen
Brush brush = new SolidBrush(Color.DarkBlue);
Random rand = new Random(); //Random für Zufalls koordinaten
for (int a = 0; a <= 20000; a++)
{
int x = rand.Next(1, this.Size.Width); //Zufalls koordinaten
int y = rand.Next(1, this.Size.Height); //Zufalls koordinaten
Rectangle rectangle = new Rectangle(new Point(x, y), new Size(2,2));
graph.DrawRectangle(new Pen(brush), rectangle);// male 20000 x ein Dreieck auf die Bitmap
}
pictureBox1.Refresh(); //Ruf Paint auf
}
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawImage(bitmap, new Point(0,0)); //male die große bitmap auf die picture box
}
}
}
genau - dies war auch teil meiner frage.
gibt es da vllt. schon vorgefertgte funktionen?
Kann ich aus dem DataTable-Object ein "CreateTable"-Statement erstellen?
danke schonmal!
Hallo zusammen!
Ich habe ein C-Dll und habe die Dll jetzt in eine .Net Dll Assembly eingebunden. Jetzt möchte ich zukünftig von .Net Programmen und von Excel auf diese .Net Assembly zugreifen. Das Problem dabei ist irgendwie der Zugriff von Excel aus auf die .Net Assembly wenn in der Parameterliste einer Funktion ein Array vorkommt. Excel sagt dann immer "Parameterliste Falsch". Ich glaub ich geh da irgnedwie falsch an die Sache ran.
Hat jemand Erfahrung mit diesem Thema? Wäre nett wenn mir jemand helfen könnte.
mfg Tom
Also ich hab da nochn problem mit der lösung:
Diese ship knoten sind ziemlich weit hinten verschachtelt, und ein zugriff ist nur über xpath möglich aufgrund der struktur.
Wie kann ich diese Lösung trotzdem verwenden?
Meine derzeitige schleife sieht jetzt so aus, funktioniert so aber nicht:
foreach (XmlNode ship in thewurzel.ChildNodes)
{
if (ship["shipType"] != null)
{
thetyp = ship["shipType"].InnerText;
Console.WriteLine("SchiffTyp: " + thetyp);
str += "Schiff: " + thetyp + Environment.NewLine;
}
}
Ich hab halt nicht den richtigen knoten selectiert, wie kann ich das (am besten xpath) machen?
Danke nochmal.
Versuch's mal so:
protected Icon[] aIcon = new Icon[4];
...
// einlesen
for (int i = 0; i < 4; i++)
{
aIcon[i] = new Icon(GetType(), "DerNameDeinerApplication." + i + ".ico");
}
...
// ausgeben
int n = 2; // eine Ziffer zwischen 0 und 3
System.Drawing.Icon(aIcon[n]);
Die Icon müssen deinem Projekt als Verweise 0.ico bis 3.ico hinzugefügt werden.
Was ich vergessen habe zu erwähnen ist, dass diese Problem nur dann auftritt wenn die form.Opacity also die Transparenz des Forms nicht auf 1(nicht transparent) sondern auf einen Wert unter 1 gesetzt wird.