Konsole erst bei bedarf öffnen???
-
Hallo,
Ich habe Folgenden Code geschrieben, weil ich ein total vergesslicher Dv'ler bin und mir nicht's merken kann:
#include<fstream> #include<iostream> #include<map> #include<string> using namespace std; #include<conio.h> #include"clrscr.h" #include"mytime.h" int main() { map<string, string> data; map<string, string>::iterator pos; ifstream fin("C:\\Geburtstage.txt"); for(int i=0;!fin.eof();++i) { string tmpD, tmpM; fin>>tmpD; fin.get(); getline(fin, tmpM); fin.get(); data.insert(pair<string, string>(tmpD, tmpM)); } for(int i=0;i<8;++i) { pos=data.find(getDate(-7+i)); if(pos!=data.end()) { if(i<6) { cout<<"In "<<7-i<<" Tagen"; } else if(i==6) { cout<<"Morgen"; } else { cout<<"Heute"; } cout<<" ist der "<<pos->first<<"!!!"<<endl<<endl<<"Text:\n"<<pos->second; getch(); clrscr(); } } return 0; }
Was die getDate- und die clrscr-Funktion machen könnt ihr euch ja sicher denken. Die .exe der Programmes wird einfach in den Windows Autostart gelegt und überprüft nach jedem Systemstart die Geburtstage.txt. Dabei öffnet sich die Konsole allerdings (logischerweise) auch, wenn demnächst gar kein Geburtstag ist. Wie könnte ich dieses nerfige aufflackern beseitigen, sprich z.B. die Konsole erst öffnen wenn ein Geburtstag gefunden wurde???
PS: Am besten kein MFC-Kram!
-
Der einfachste Weg ist ein anderes Gerüst zu benutzen. Ein Windows-Window.
#include <windows.h> #include <stdio.h> long _stdcall WndProc(HWND hwnd, unsigned int message, unsigned int wParam, long lParam) { HDC hdc; PAINTSTRUCT ps; char o[1000]; switch(message) { case WM_PAINT: hdc = BeginPaint(hwnd, &ps); _snprintf(o, sizeof(o), "Geburtstag hat heute %s", "Miss Piggy"); TextOut(hdc, 10, 10, o, strlen(o)); EndPaint(hwnd, &ps); return 0; case WM_DESTROY: PostQuitMessage(0); } return DefWindowProc(hwnd, message, wParam, lParam); } static int IstHeuteEinGeburtstag(void) { return 1; /* Heute Geburtstag? */ } int _stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, char *szCmdLine, int iCmdShow) { HWND hwnd; MSG msg; WNDCLASS wc; if (!IstHeuteEinGeburtstag()) return 0; ZeroMemory(&wc, sizeof(WNDCLASS)); wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = WndProc; wc.hInstance = hInstance; wc.hIcon = LoadIcon(0, IDI_INFORMATION); wc.hCursor = LoadCursor(0, IDC_ARROW); wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); wc.lpszClassName = "mbclass"; RegisterClass(&wc); hwnd = CreateWindow("mbclass", "Titel", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, 0, 0, hInstance, 0); ShowWindow(hwnd, iCmdShow); UpdateWindow(hwnd); printf("", hPrevInstance, szCmdLine); while(GetMessage(&msg, 0, 0, 0) > 0) DispatchMessage(&msg); return msg.wParam; }
-
Ach desshalb werden Entwicklungen immer Teurer... (weil ständig grundlegendste sachen quasi neu erforscht werden)
Ändere doch einfach das Subsystem auf Windows und alloziiere eine Konsole nur, wenn du wirklich eine benötigst...
-
kenner der dummköpfe schrieb:
Ändere doch einfach das Subsystem auf Windows und alloziiere eine Konsole nur, wenn du wirklich eine benötigst...
Toll und wie funktioniert das???
-
Einfach mal das naheliegendste in Google einzugeben ist zuviel verlangt, oder?
-
Da ich immer noch nichts gefunden habe ( Hätte ich euch auch vorher sagen können, denn beim googlen bin ich nicht der Hit! ) würde ich um ein Stück Quelltext oder nen verständlichen Link bitten.
Ich hab's z.B. bei http://support.microsoft.com/kb/317433/de versucht, aber mein Dev mekert ohne ende und auch VC++ mekert rum!
-
- Windows Applikation erzeugen.
- Das Hauptfenster nicht instanziieren, sondern dies http://cygwin.com/ml/cygwin/2004-05/msg00215.html
Verfahren in einem entsprechenden if-Block anwenden.Grüsse
*this
-
AGS'ler schrieb:
Da ich immer noch nichts gefunden habe ( Hätte ich euch auch vorher sagen können, denn beim googlen bin ich nicht der Hit! ) würde ich um ein Stück Quelltext oder nen verständlichen Link bitten.
kenner der dummköpfe schrieb:
Ändere doch einfach das Subsystem auf Windows und alloziiere eine Konsole nur, wenn du wirklich eine benötigst...
Da liegt "alloc console" doch irgendwie nahe, oder?
Ich hab's z.B. bei http://support.microsoft.com/kb/317433/de versucht, aber mein Dev mekert ohne ende und auch VC++ mekert rum![/quote]
Kein Wunder, das ist ja auch managed-Zeugs. Achja "mekert rum!" ist keine Fehlerbeschreibung.
-
SG1 schrieb:
Achja "mekert rum!" ist keine Fehlerbeschreibung.
------ Compiling of Release\main.exe ------- bcc32.exe Line 18: error E3027: Your Krawatte ist not right! Line 26: error E3144: Have you had breakfast? Line 33: error E2863: Can't understand this comment! Line 74: error E6043: It's five O'clock. The compiler is going home. Bye! Summary: 4 Errors, 0 Warnings.
-
keksekekse schrieb:
SG1 schrieb:
Achja "mekert rum!" ist keine Fehlerbeschreibung.
------ Compiling of Release\main.exe ------- bcc32.exe Line 18: error E3027: Your Krawatte ist not right! Line 26: error E3144: Have you had breakfast? Line 33: error E2863: Can't understand this comment! Line 74: error E6043: It's five O'clock. The compiler is going home. Bye! Summary: 4 Errors, 0 Warnings.
was laberst du für ein scheiss?
-
line 18 tie
statt krawatte
-
wtf schrieb:
was laberst du für ein scheiss?
*roflstc* ... scaring the cat
Stelfer schrieb:
line 18 tie
statt krawatte
Okok, ich muß zugeben, der große Langenscheidt wäre griffbereit gewesen...
-
Danke an Gast++
SG1 schrieb:
Achja "mekert rum!" ist keine Fehlerbeschreibung.
Ich dachte mir schon, dass das nicht das richtige ist, weshalb eine Fehlerbeschreibung ineffektiv gewesen wäre!
Abgesehen davon hast du doch auch ohne eine fest gestellt, warum es nicht funktioniert:SG1 schrieb:
Kein Wunder, das ist ja auch managed-Zeugs.