Avatar billede kimbork Nybegynder
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
Avatar billede kimbork Nybegynder
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
Avatar billede arne_v Ekspert
07. februar 2009 - 18:48 #2
Det kan lade sig gøre.

Word, Internet Explorer etc, er alle skrevet i C/C++.
Avatar billede arne_v Ekspert
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 ?
Avatar billede kimbork Nybegynder
07. februar 2009 - 19:01 #4
okay men det var tilfeldigvis ikke lige noget jeg kunne få lidt meget hjælp til vel :)
Avatar billede arne_v Ekspert
07. februar 2009 - 19:06 #5
Jo.

Har du nogen præferencer med hensyn til GUI API ?
Avatar billede arne_v Ekspert
07. februar 2009 - 19:07 #6
Men uanset hvad så kræver det lidt at lave GUI i C++.
Avatar billede arne_v Ekspert
07. februar 2009 - 19:08 #7
Hvis det f.eks. er Win32 API så er følgende tutorial klassisk:
  http://www.winprog.org/tutorial/
Avatar billede kimbork Nybegynder
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 :)
Avatar billede kimbork Nybegynder
07. februar 2009 - 19:13 #9
altså hvis du kan hjælpe mig med at få det lavet så det virker
Avatar billede arne_v Ekspert
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.
Avatar billede kimbork Nybegynder
07. februar 2009 - 19:17 #11
alt det i tutorialen kan jeg finde ud af´:)
Avatar billede kimbork Nybegynder
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 :)
Avatar billede kimbork Nybegynder
07. februar 2009 - 19:29 #13
Nå men kan jeg få hjælp til at komme igang med mit program?
Avatar billede bertelbrander Novice
07. februar 2009 - 19:36 #14
Prøv at kikke på denne tutorial, den er måske lidt tættere på det du skal bruge:
http://damb.dk/dialogtut.php
Avatar billede kimbork Nybegynder
07. februar 2009 - 19:38 #15
Tak jeg kigger lige nærmere på det :)
Avatar billede kimbork Nybegynder
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
Avatar billede bertelbrander Novice
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?
Avatar billede kimbork Nybegynder
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.
Avatar billede bertelbrander Novice
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.
Avatar billede kimbork Nybegynder
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?
Avatar billede kimbork Nybegynder
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
Avatar billede kimbork Nybegynder
07. februar 2009 - 21:15 #22
altså trække i hjørnerne :)
Avatar billede kimbork Nybegynder
07. februar 2009 - 21:21 #23
er du der??
Avatar billede bertelbrander Novice
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.
Avatar billede bertelbrander Novice
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...
Avatar billede bertelbrander Novice
07. februar 2009 - 21:25 #26
Der er et eksempel på at vise et billede her:
http://damb.dk/snip/bitmap.html
Avatar billede kimbork Nybegynder
07. februar 2009 - 21:26 #27
okay, undskyld :)
Avatar billede kimbork Nybegynder
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;
}
Avatar billede bertelbrander Novice
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.
Avatar billede kimbork Nybegynder
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 :)
Avatar billede bertelbrander Novice
07. februar 2009 - 21:53 #31
Jeg synes du skal starte med det vindue der er det første step i min dialogbox tutorial:
http://damb.dk/snip/dialogtut01.html
Avatar billede kimbork Nybegynder
07. februar 2009 - 22:01 #32
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR lpCmdLine, INT nCmdShow)

den fejler i kompilingen på denne linie
Avatar billede bertelbrander Novice
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)
Avatar billede kimbork Nybegynder
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;
Avatar billede bertelbrander Novice
07. februar 2009 - 22:12 #35
Bortset fra at du mangler en } i bunden, kan jeg ikke se at der er problemer i koden.
Avatar billede arne_v Ekspert
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;
Avatar billede kimbork Nybegynder
07. februar 2009 - 22:16 #37
Jaa, så virker den men hvad skal jeg bruge knappen til?
Avatar billede bertelbrander Novice
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.
Avatar billede kimbork Nybegynder
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 :)
Avatar billede kimbork Nybegynder
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 :)
Avatar billede kimbork Nybegynder
07. februar 2009 - 22:27 #41
det med maximer knappen har jeg ordtnet selv:)

så er det kun størelsen af vinduet
Avatar billede bertelbrander Novice
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
Avatar billede kimbork Nybegynder
07. februar 2009 - 22:30 #43
Tak, kan vi så prøve at få et billed ind som vist her?

http://www.freeimagehosting.net/uploads/db5741f2e0.jpg
Avatar billede kimbork Nybegynder
07. februar 2009 - 22:33 #44
kan man ikke gøre så cmd ikke åbner når programmet åbner?
Avatar billede bertelbrander Novice
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...
Avatar billede bertelbrander Novice
07. februar 2009 - 22:39 #46
Som jeg tidligere skrev er der et eksempel du kan kikke på her:
http://damb.dk/snip/bitmap.html
Avatar billede kimbork Nybegynder
07. februar 2009 - 22:44 #47
kender du et andet kompiller program som er gratis?
Avatar billede bertelbrander Novice
07. februar 2009 - 22:46 #48
Ja, CodeBlocks, men hold du dig bare til Dev-C++
Avatar billede kimbork Nybegynder
07. februar 2009 - 22:47 #49
Nå men jeg skriver videre i morgen skal lukke min pc nu :)
Avatar billede kimbork Nybegynder
07. februar 2009 - 22:48 #50
det er bare fordi at jeg ikke kan slå cmd fra
Avatar billede bertelbrander Novice
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.
Avatar billede kimbork Nybegynder
08. februar 2009 - 09:15 #52
Så er jeg her igen
Avatar billede kimbork Nybegynder
08. februar 2009 - 09:22 #53
Jeg kan ikke få din billed exempel til at virke :)
Avatar billede kimbork Nybegynder
08. februar 2009 - 14:00 #54
LUKKER
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester