Hehe, en af grundene til at jeg spørger her var også at jeg ikke vidste hvordan jeg skulle formulere mine Google-søgniner ;)
Normalt bruger jeg Delphi, og der er en option der hedder "Generate console application" der gør at compileren laver en GUI application OG en dertilhørende konsol. Selvom jeg ved en del om diverse programmeringssprog ved jeg ikke helt hvad der er den gør, men jeg tænker at det samme også må kunne lade sig gøre i c/c++.
Det er egentlig ikke væsenligt hvordan der bliver gjort, men jeg bruger kun mit vindue til OpenGL så jeg vil ikke til at rode med en masse GUI-komponenter. Jeg skal bare ha' sådan at jeg f.eks. kan udskrive test-strenge i en konsol.
En windows app er _enten_ en GUI eller en Console application. Der er ikke nogen blanding.
Jeg har godt nok kodet i delphi for mange år siden, men jeg kan ikke mindes noget GUI når du vælger Console App. Når du kører programmet viser den da kun en console og ikke en form... (Er det ikke korrekt?)
Som sagt ved jeg ikke helt præcist hvordan det fungerer, men hvis du i Delphi f.eks. opretter en ny applikation (gui) og så vælger "Generate console application" under Project->Options->Linker så kører den GUI'en med en konsol i baggrunden.
Under Delphi's hjælpe står følgende: "Causes linker to set a flag in the application’s .EXE file indicating a console mode application." ...men om det betyder at det så bliver til en konsol-applikation der viser en gui ved jeg ikke (og i givet fald heller ikke hvordan det fungerer), men det er meget muligt.
1. In the Project Manager, select TestProjectGroup, right-click, and choose Add New Project.
The New dialog box appears.
2. Choose Console Wizard. The Console Wizard dialog box is displayed. 3. Select the source type (C or C++) and make sure Console Application is checked. (Use VCL/CLX should be unchecked unless you plan to use CLX or VCL objects in your console application.) Then click OK. 3. Select the project in the Project Manager, right-click, and choose save, specifying a project name ConsoleApp.
Notice the project file has the .bpr extension. Be sure to save the file in the same directory as TestProjectGroup.
4. Add the following code to the console application so that the file looks like this:
#include <conio>
#include “HelloDLL.h”
int main (int argc, char **argv) { cout << “Calling the DLL…” << endl; SayHello(); cout << “Hit any key to close…” << endl; getch(); return 0;
}
5. Select the project, right-click, and choose Add to Project to add the DLL library to the project. In the Add to Project dialog box, choose File of Type: *.lib to get a list of library files, and select HelloDLL.lib. Notice C++Builder updates ConsoleApp.cpp to include HelloDLL.lib. 6. In the project options, select the Directories/Conditionals tab and set the intermediate output to OBJDCUS.
C++Builder places the intermediate .OBJs in the specified directory, which is created when the batch file runs.
Det Delphi den gør, det er at du laver en console application men den giver dig en "visuel form" som du kan droppe components på. F.eks. til database adgang eller lignende. Men, den compiler en ganske almindelig console application.
Så bare lav en console application, det er det samme Delphi laver, da det visuelle er kun til "design time" det er ikke noget brugeren nogensinde vil se.
Som sagt før: En app der er en console application _kan_ ikke have en tilhørende GUI...
Det er meget muligt at det er det Delphi gør, men jeg tror ikke helt det er det jeg leder efter. Det jeg laver ER jo en windows-applikation og når den er færdig skal jeg ikke længere bruge konsollen, den er bare til at udskrive testdata i under udviklingsprocessen, så den skal helst være hurtigt at fjerne igen eller evt. kunne startes med en program-parameter.
AllocConsole laver faktisk ingen fejl, der sker bare ingen ting når jeg bruger cout. Jeg læste nogle eksempler hvor de skiftede rundt med nogle handles (noget med at applikationen skulle ha' handle'et til den nye konsol), men jeg fik det ikke til at virke.
Det med DebugView lyder fint, men jeg er faktisk blevet meget glad for idéen om at have en konsol man kan (fra)vælge med en program-parameter.
Hvis du kan finde (eller selv lave) et eksempel med AllocConsole der virker ville det være perfekt.
En console app kan godt have en dertil hørende Dialog (eller Window). Jeg bruger selv samme teknik når jeg leger med OpenGL - altså vise noget i et vindue og skrive log til console.
Hvordan det gøres i Borland ved jeg ikke, men i MinGW er eneste forskel: Uden Console: -mwindows
Med console: (intet flag/option - er default enabled)
Jeg har kigget lidt nærmere på en exefil (lavet med MinGW). Offset 220 (dec) er i en console app: 03 Offset 220 (dec) er i en windows app: 02
tam>> Det krævede lige et par ændringer i din kode for at få den til at udskrive mere end én gang, men nu virker det perfekt. Tak for hjælpen.
Synes godt om
Ny brugerNybegynder
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.