07. februar 2009 - 18:30
Der er
53 kommentarer og 1 løsning
Kan det lade sig gøre?
http://www.freeimagehosting.net/uploads/db5741f2e0.jpg Kan det lade sig gøre t lave et program der kan det (altså en exe fil som ikke skal instaleres)?
Hvis det kan lade sig gøre så hvordan?
Hvis i mangler plere detaljer om det jeg søger så skriv.
Hilsen: Kim Bork
Annonceindlæg fra Kingston Technology
07. februar 2009 - 18:32
#1
Der kommer mer precise billeder når jeg finder ud af om det kan lade sig gøre. Hilsen: Kim Bork
07. februar 2009 - 18:48
#2
Det kan lade sig gøre. Word, Internet Explorer etc, er alle skrevet i C/C++.
07. februar 2009 - 18:49
#3
Men det er ikke nødvendigvis nemt. Først skal du vælge GUI API. Standard Win32 API ? MFC ? Qt ? Wx ? .NET Win Forms ? .NET WPF ? GTK+ ? Motif ?
07. februar 2009 - 19:01
#4
okay men det var tilfeldigvis ikke lige noget jeg kunne få lidt meget hjælp til vel :)
07. februar 2009 - 19:06
#5
Jo. Har du nogen præferencer med hensyn til GUI API ?
07. februar 2009 - 19:07
#6
Men uanset hvad så kræver det lidt at lave GUI i C++.
07. februar 2009 - 19:09
#8
det tror jeg sagtens at jeg kan klare og hvis du vil hjælpe mig med det så kan jeg gi dig 300 point eller mere hvis du vil ha det :)
07. februar 2009 - 19:13
#9
altså hvis du kan hjælpe mig med at få det lavet så det virker
07. februar 2009 - 19:15
#10
Prøv og start med den Win32 API tutorial. Så tager vi problemerne efterhånden som du render i dem.
07. februar 2009 - 19:17
#11
alt det i tutorialen kan jeg finde ud af´:)
07. februar 2009 - 19:18
#12
der er bare ikke noget af det jeg skal bruge udover at der er et tomt vindue som jeg bare skal ha propet nogen ting ind i formoder jeg :)
07. februar 2009 - 19:29
#13
Nå men kan jeg få hjælp til at komme igang med mit program?
07. februar 2009 - 19:38
#15
Tak jeg kigger lige nærmere på det :)
07. februar 2009 - 19:50
#16
bertel jeg syntes ikke rigtigt at jeg fatter nogen af de tutorials på den side du gav mig jeg syntes ikke rigtigt at jeg kan få dem til at virke
07. februar 2009 - 20:14
#17
Du skal nok lige starte med at fortælle hvad det er du ikke kan få til at virke, hvad har du prøvet, hvilke fejl får du og hvilken compiler bruger du?
07. februar 2009 - 21:01
#18
Altså det eneste jeg ville var bare om der var nogen der ville hjælpe mig med at lave det ikke sætte mig i gang med alt muligt andet :) Så hvis der er nogen der vil hjælpe mig så sig lige til.
07. februar 2009 - 21:10
#19
Vi vil gerne hjælpe dig med at lære at lave din applikation og også hjælpe dig med at lave applikationen. Men jeg tvivler på at du finder nogen der vil lave den for dig. Så du bliver nok nødt til at lære selv.
07. februar 2009 - 21:12
#20
okay men jeg kan bare ikke forstå nu har jeg selve vunduet nu mangler jeg bare indeholdet vi kan fx. starte med billedet?
07. februar 2009 - 21:14
#21
eller med hvordan man endre størelsen på vinduet og gør så man ikke kan endre det igen
07. februar 2009 - 21:15
#22
altså trække i hjørnerne :)
07. februar 2009 - 21:21
#23
er du der??
07. februar 2009 - 21:22
#24
Der hvor du opretter hovedvinduet bestemmer du også størrelsen og om man kan trække i hjørnerne for at lave vinduet større eller mindre.
Man opretter hovedvinduet med CreateWindow:
http://msdn.microsoft.com/en-us/library/ms632679 (VS.85).aspx
Det er parametrene x, y, nWidth og nHeight der bestemmer størrelse og placering.
Hvis du angiver WS_THICKFRAME som dwStyle kan man trække i hjørnerne for at ændre størrelse, ellers ikke.
07. februar 2009 - 21:23
#25
Og ja, jeg er her on and off... Hvis jeg svarer, er det fordi jeg er her, ellers er det fordi jeg er ved at skrive et svar, eller ved at lave noget andet...
07. februar 2009 - 21:26
#27
okay, undskyld :)
07. februar 2009 - 21:32
#28
Her er hele mit vindue kan du ikke lige fortælle mig hvor jeg gør så man ikke kan trække i hjørnerne. #include <windows.h> const char g_szClassName[] = "myWindowClass"; // Step 4: the Window Procedure LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_CLOSE: DestroyWindow(hwnd); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hwnd, msg, wParam, lParam); } return 0; } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { WNDCLASSEX wc; HWND hwnd; MSG Msg; //Step 1: Registering the Window Class wc.cbSize = sizeof(WNDCLASSEX); wc.style = 0; wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wc.lpszMenuName = NULL; wc.lpszClassName = g_szClassName; wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION); if(!RegisterClassEx(&wc)) { MessageBox(NULL, "Window Registration Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK); return 0; } // Step 2: Creating the Window hwnd = CreateWindowEx( WS_EX_CLIENTEDGE, g_szClassName, "Mit program :)", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 500, 600, NULL, NULL, hInstance, NULL); if(hwnd == NULL) { MessageBox(NULL, "Window Creation Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK); return 0; } ShowWindow(hwnd, nCmdShow); UpdateWindow(hwnd); // Step 3: The Message Loop while(GetMessage(&Msg, NULL, 0, 0) > 0) { TranslateMessage(&Msg); DispatchMessage(&Msg); } return Msg.wParam; }
07. februar 2009 - 21:42
#29
Som jeg skrev skal du oprette et vindue der ikke har WS_THICKFRAME style, hvis du kikker på:
http://msdn.microsoft.com/en-us/library/ms632600 (VS.85).aspx
Kan du se at den style du bruger (WS_OVERLAPPEDWINDOW) giver dig WS_THICKFRAME, medmindre du gør noget specielt.
Du kan fjerne den style, og dermed blokerer for at brugeren ændrer størrelsen på vinduet, med:
WS_OVERLAPPEDWINDOW & ~WS_THICKFRAME
Det næste problem er så at det vindue du har, er et "normalt" vindue og ikke en dialogbox, det du vil lave er mest en dialogbox.
07. februar 2009 - 21:47
#30
okay kan du så ikke gøre mig en tjæneste og lave det vindue til mig og sende det? så jeg kan komme igang med at lave det der skal ind i vinduet :)
07. februar 2009 - 22:01
#32
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR lpCmdLine, INT nCmdShow) den fejler i kompilingen på denne linie
07. februar 2009 - 22:07
#33
Compiler du som C eller som C++? Det smarteste er at compile som C++ Prøv evt at ændre linjen til: int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
07. februar 2009 - 22:09
#34
Her er koden. og jeg bruger Dev-C++ .-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.--.-.-.-.-.-..-.-.-.-.-.-.--.-.-. #include <windows.h> #define IDC_BUTTON1 1200 #define IDC_STATIC_1 1201 HINSTANCE InstanceHandle; int NumPush = 0; LRESULT CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_CREATE: CreateWindow("STATIC", "0", // Initial Text WS_CHILD | WS_VISIBLE | SS_LEFT, // Style 5, 5, 100, 20, // position hwndDlg, // Owner (HMENU)(IDC_STATIC_1), // ID InstanceHandle, // The application 0); CreateWindow("BUTTON", "Push Me", // Button Text WS_CHILD | WS_VISIBLE, // Style 5, 30, 100, 30, // position hwndDlg, // Owner (HMENU)(IDC_BUTTON1), // ID InstanceHandle, // The application 0); break; case WM_COMMAND: if(HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == IDC_BUTTON1) { NumPush++; SetDlgItemInt(hwndDlg, IDC_STATIC_1, NumPush, TRUE); } break; } return DefWindowProc(hwndDlg, msg, wParam, lParam); } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { InstanceHandle = hInstance; WNDCLASS wc; memset(&wc, 0, sizeof(WNDCLASS)); wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; wc.lpfnWndProc = DialogProc; wc.hInstance = InstanceHandle; wc.hbrBackground = (HBRUSH )(COLOR_BTNFACE + 1); wc.lpszClassName = "WhateverClass"; wc.hCursor = LoadCursor(NULL, IDC_ARROW); if(!RegisterClass(&wc)) return FALSE; HWND WindowHandle = CreateWindow("WhateverClass", "Whatever", // Caption text WS_MINIMIZEBOX | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_MAXIMIZEBOX | WS_CAPTION | WS_BORDER | WS_SYSMENU, 100, 100, 150, 100, // Position NULL, NULL, InstanceHandle, 0); MSG Msg; while(GetMessage(&Msg, WindowHandle, 0, 0xFFFF) > 0) { if(!IsDialogMessage(WindowHandle, &Msg)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } } return 0;
07. februar 2009 - 22:12
#35
Bortset fra at du mangler en } i bunden, kan jeg ikke se at der er problemer i koden.
07. februar 2009 - 22:14
#36
Udover at ændre style kan man også fjerne resize muligheden ved at hapse den message: case WM_SYSCOMMAND: if((wParam & 0xFFF0) == SC_SIZE) { /* ignorer */ } else { return DefWindowProc(hwnd, msg, wParam, lParam); } break;
07. februar 2009 - 22:16
#37
Jaa, så virker den men hvad skal jeg bruge knappen til?
07. februar 2009 - 22:21
#38
På det billede du har af din applikation, er der en knap... Men ellers er det ret let at fjerne den.
07. februar 2009 - 22:24
#39
Nu skal jeg bare ha endret størelsen på vinduet og have fjernet Maximer knappen (den knap ved siden af det røde krydt) hvis det kan lade sig gøre :)
07. februar 2009 - 22:25
#40
nå ja men den knap skulle ju sende en e-mail men den kan godt blive sidende lige nu :)
07. februar 2009 - 22:27
#41
det med maximer knappen har jeg ordtnet selv:) så er det kun størelsen af vinduet
07. februar 2009 - 22:27
#42
Du kan fjerne WS_MAXIMIZEBOX, men den viser knappen alligevel... Det er disse tal der bestemmer størrelse og placering: 100, 100, 150, 100
07. februar 2009 - 22:33
#44
kan man ikke gøre så cmd ikke åbner når programmet åbner?
07. februar 2009 - 22:37
#45
Du kan godt fjerne "cmd". Du skal "bare" fortælle Dev-C++ at det er en Windows app du laver. Det er heldigvis længe siden jeg har brugt Dev-C++, så jeg har fuldstændig glemt hvordan, men der må være nogle options et sted...
07. februar 2009 - 22:44
#47
kender du et andet kompiller program som er gratis?
07. februar 2009 - 22:46
#48
Ja, CodeBlocks, men hold du dig bare til Dev-C++
07. februar 2009 - 22:47
#49
Nå men jeg skriver videre i morgen skal lukke min pc nu :)
07. februar 2009 - 22:48
#50
det er bare fordi at jeg ikke kan slå cmd fra
07. februar 2009 - 22:51
#51
Prøv søge lidt på nettet, der er mange andre der har haft det samme problem, det er ret trivielt at fjerne det vindue.
08. februar 2009 - 09:15
#52
Så er jeg her igen
08. februar 2009 - 09:22
#53
Jeg kan ikke få din billed exempel til at virke :)
08. februar 2009 - 14:00
#54
LUKKER
Kurser inden for grundlæggende programmering