__declspec(dllexport) brauchst du nicht. Mach die Funktion mit
extern "C" {
int Blala();
}
sichtbar. Das sollte gehen.
Die meisten C++ Compiler verwenden unsinnige Namenserweiterungen für C-Funktionen. Extern "C" exportiert die Funktion mit ihrem echten C-Namen.
the-architect schrieb:
Ich glaub das nennt man "Boxing", oder ist das wieder was anderes?
Is was anderes.
http://www.programmersheaven.com/articles/arun/boxing.htm
Hallo!
Ich versuche gerade verzeifelt mein Programm mit einem Dateitypen zu assozieren. Bei dem folgenden Code werden zwar die ersten SubKeys (VirtualPhotoOrganizer u. .vpoa) angelegt, darunter folgt aber nichts.
public void RegisterVPOA()
{
const string VPO = "VirtuaPhotoOrganizer";
// create the vpo subkey and its contents
Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.ClassesRoot;
key.CreateSubKey(VPO);
key.SetValue("", "Virtual Photo Organizer Album");
key.CreateSubKey("DefaultIcon");
key.SetValue("", System.Windows.Forms.Application.StartupPath + ",0");
key.Close();
key = Microsoft.Win32.Registry.ClassesRoot;
key.OpenSubKey(VPO);
key.CreateSubKey("shell");
key.CreateSubKey("open");
key.CreateSubKey("command");
key.SetValue("", '\"' + System.Windows.Forms.Application.StartupPath + "\" \"%1\"");
key.Close();
// register the extension to our newly created VPO class
key = Microsoft.Win32.Registry.ClassesRoot;
key.CreateSubKey(".vpoa");
key.SetValue("", VPO);
key.Close();
}
Danke schon mal im Voraus für eure Hilfe!
Ich wüsste auch sehr gerne wie man das macht. Ich habe nichts weiter als einen Ansatz, nähere Details dazu müsstest du selber herausfinden:
Wenn du es so willst wie beim XP, dann müsstest du ein semitransparentes, schwarzes Bild in der Auflösung drüberlegen. Jetzt aber die Frage: Wie kann man die Transparenz eines PNGs anzeigen? Oder aber du machst einen aktuellen Screenshot des Bildschirmes. Da wäre aber die Frage: Wie kann man die Farbe des Pixels was sich genau hintendran befindet rausfinden? Denn du könntest, wenn du die Farbe hast, die Helligkeit runterschrauben und ein Rectangle als Graphics-Objekt an dieser Stelle zeichnen, dann wärs dunkler. Ich würde aber sagen dass die erste Methode (mit dem PNG) sauberer wäre...
Wenn du was dazu rausgefunden hast, poste es bitte hier. Wäre auch sehr interessiert daran, hab aber momentan viel um die Ohren.
EDIT: Beim erneuten durchlesen meines Beitrags ist mir gerade etwas eingefallen: Erstelle doch ein neues, komplett Rahmenloses Fenster mit schwarzem Hintergrund über dem ganzen Bildschirm und setz die Transparenz (wie oben beschrieben) auf vielleicht 50%. Sollte klappen
Ich habe den Fehler gefunden.
Der Treiber meines OKI C5100 Druckers war der Übeltäter.
Ich installierte den neuesten Treiber und schwups es funktioniert.
Gruss Mike
Hallo!
Ich arbeite zzt an einer MDI-Anwendung (Html-Editor), bei der der User auf z.b. Einfügen-Frames... klickt, und sich dann eine Listbox öffnet, die diverse 'Typen' beinhaltet. Ich möchte nun, dass der User, eines davon auswählt, und auf OK klickt, und den Code des gewählten Types in das aktive Kind-Formular einfügt. Ich habe mir dazu folgendes überlegt: Wird ein Typ ausgewählt, und klickt der User auf OK, wird je nach selektiertem Typ ein string mit dem Code an das Eltern-Formular übergeben, und dort geschaut, welches Kind-Formular gerade aktiv ist, und dann in dessen RichTextBox geschrieben. - Der Code sieht dazu so aus:
Für das Formular (frmSelectFrame) mit der ListBox
namespace TestProjekt
{
partialclassfrmSelectFrame : Form
{
publicfrmSelectFrame(frmMain f)
{
InitializeComponent();
this.fm = f;
}
privatefrmMain fm = null;
privatevoid pbTypCancel_Click(object sender, EventArgs e)
{
this.Close();
}
privatevoid frmSelectFrame_Load(object sender, EventArgs e)
{
try
{
lbSelectFrame.Items.Add("Typ 1");
lbSelectFrame.Items.Add("Typ 2");
//usw...
}
catch
{
MessageBox.Show("Fehler!");
}
}
privatevoid pbTypOk_Click(object sender, EventArgs e)
{
string frame;
if (lbSelectFrame.SelectedItems == lbSelectFrame.SelectedItems[0])
{
frame = "Typ 1";
this.fm.Frames = frame;
this.Close();
}
elseif (lbSelectFrame.SelectedItems == lbSelectFrame.SelectedItems[1])
{
frame = "Typ 2";
this.fm.Frames = frame;
this.Close();
}
//usw...
}
}
}
Der betreffende Teil am Hauptformular (frmMain)
publicstring Frames
{
get
{
Form activeChild = this.ActiveMdiChild;
RichTextBox rtbActiveChild = (RichTextBox)activeChild.ActiveControl;
returnthis.rtbActiveChild.Text;
}
set
{
Form activeChild = this.ActiveMdiChild;
RichTextBox rtbActiveChild = (RichTextBox)activeChild.ActiveControl;
this.rtbACtiveChild.Text = rtbActiveChild.Text + value;
rtbActiveChild.SelectionLength = rtbActiveChild.SelectionLength;
rtbActiveChild.SelectionStart = rtbActiveChild.Text.Length;
}
}
...und an dieser stelle tritt das Problem auf. VC# meldet mir folgendes: "TestProjekt.frmMain does not contain a definition for 'rtbActiveChild'"
dabei habe ich die rtbActiveChild ja 'deklariert', oder ist das im get/set Abschnitt nicht erlaubt?
Hat jemand von euch einen Lösungsvorschlag?
wäre für jede Hilfe dankbar!
mlg
azok
Wie weit ist ASP.NET eigentlich im Profi Bereich vertreten, z.b. im Vergleich zu LAMP Sytemen?
Eigentlich müßte es doch viel schneller sein als z.b. php, da ja die Applikation zumindest Just in Time kompiliert wird, bzw. man ja auch auf voll kompilierte c dll's zugreifen kann.
Und eine Frage zur Praxis mit ASP.NET:
Was wird eigentlich im ViewState gespeichert?
Die Inhalte von Controls?
Ich weiss bislang nur, dass der Inhalt des View State als hidden field im Web Formular angelegt wird...
Vielen Dank für eure Hilfe
lg.
SliderMax
Aloha,
ich habe ein Problem beim Auslesen der Verzeichnisse. Und zwar schmeisst er mich immer beim Ordner "System Volume Information" raus. Wie kann ich vorher überprüfen ob ich Rechte habe den Ordner mit GetDirectories() auslesen kann?
hier mein Code:
private void StartRec()
{
string strCur = @"C:\";
Stack stack = new Stack();
rec(stack, strCur);
this.m_Thread1Running = false;
}
private void rec(Stack stack, string strCur)
{
foreach(string newdir in Directory.GetDirectories(strCur))
{
if(newdir != null)
{
string strNewDir = newdir.ToLower();
strNewDir += " ";
this.textBox1.AppendText(strNewDir);
try
{
rec(stack, newdir);
}
catch(Exception ex)
{
return;
}
}
}
Hallo!
Ich bin gerade dabei ein kleines Fotoalbum zu entwickeln, jetzt bin ich allerdings bei der Zoomfunktion, die der Viewer natürlich beinhalten muss auf Probleme gestossen.
Mein Viewer besteht aus zwei Teilen: einem Panel am unteren Ende, das einige Bearbeitungsmöglichkeiten bietet und ein leerer Bereich, in den das Bild mit einem System.Drawing.Rectangle gezeichnet wird. Wenn ich in ein Bild hineinzoome, wird das Rectangle früher oder später grösser als das ClientRectangle der Forms sein. Ursprünglich hatte ich gehofft, dass in diesem Fall automatisch Scrollbars eingeblendet werden, dem ist aber nicht so (Property AutoScroll ist auf True gesetzt).
Jetzt frage ich mich, wie ich wohl Scrollbars auf das Form bringe wenn das Bild zu gross wird?
Hi, danke euch beiden. Ich denke, das Prinzip habe ich verstanden und es auch schon in einer kleinen Testapplikation getestet. Aber folgende Fragen habe ich doch noch:
Wenn ich in den Forms mit Localizable = true arbeite, muss ich ja doch für alle neuen Sprachen neu kompilieren. Wenn ich damit NICHT arbeite, muss ich ja von Hand alle Texte neu setzen, wenn ich die Sprache einstelle, da ich dann ja mit einer eigenen Resource arbeiten würde und nicht mehr die Resource der Form genutzt würde.
Wie handelt man das am einfachsten? Ich habe in der Testapplikation eine Sigleton-Klasse geschrieben, die bei Änderung der Sprache die CurrentUICulture setzt, den ResourceManager neu erzeugt und ein Event wirft. Zudem hat sie Schnittstellen zum Zugriff auf die Resources, z.B. GetString(...). Ebenso habe ich ihr Konstanten verpasst, die die Identifier der Resourcen darstellen. Also, z.B. public const string TEXT1 = "text1", wenn in der Resource ein Eintrag text1 existiert.
Hi,
ja ich verwende 2005. Jetzt hab ich grad sogar was noch einfacheres gefunden. In den Project Settings unter publish gibt's so ein hackerl "automatically increment... ".
Seltsamerweise ist das hackerl, wenn ich es weggemacht habe und die seite neu aufrufe, wieder da. Geht aber immer noch alles. Wenn ich es dann weg und wieder hin mache, geht's wieder nicht. Wird wohl ein Bug sein...
Danke auf jeden Fall mal. Meine bisherige Lösung zum debuggen war Recht umständlich: Full Build, mit Debugger starten (weil er da noch was fertig baut), VS verlassen, Projekt kopieren, beide mit nem eigenen VS starten und nicht mehr vorher builden.
Das wird mir jetzt das Leben einfacher machen, danke.