Avatar billede fredag1 Nybegynder
26. april 2006 - 15:09 Der er 7 kommentarer

Et C program der tegner en circle

Jeg har bruge for et C++ program der åbnder et window og tegne
en circle eller firkant på det. Windowet må gerne have File-> åben o.s.v
Avatar billede krismort Nybegynder
26. april 2006 - 15:27 #1
det er nok nemmest at lave i java, ellers skal du nok checke windows forms eller borland c++ builder ud.
Avatar billede fredag1 Nybegynder
26. april 2006 - 15:31 #2
Jeg arbjder på Code worrier. Ikke borland. Det hel skal codes i rene C++!
Avatar billede krismort Nybegynder
26. april 2006 - 15:45 #3
okay så skal du nok checkke windows api'en ud

Der er metoder til at oprette vinduer og metoder til at tegne cirkler, rectangler, ellipser og linier i vinduets grafik buffer.

Du kan osse bruge setPixel på dit hDC og så plotte farven på en enkelt pixel.

Det at oprette et vindue med "ren c++" er ikke nogen triviel opgave men du kan sikkert finde tonsvis af tutorials omkring det på nettet med en enkelt google.
Avatar billede driis Nybegynder
26. april 2006 - 19:15 #4
Som krismort er inde på, er "et simpelt Windows-program" i C++ faktisk ikke særligt simpelt, hvilket skyldes Windows' programmeringsmodel. Kort fortalt skal du lave et et window, og derefter begynde at køre et message loop, hvor du skal håndtere de beskeder Windows sender til dit program. En rigtig god tutorial er her:
http://www.winprog.org/tutorial
Avatar billede bertelbrander Novice
26. april 2006 - 22:02 #5
Det er ikke så svært:

#include <windows.h>

HINSTANCE InstanceHandle;
HWND      MainWindow;

LRESULT CALLBACK MainWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
  switch (msg)
  {
    case WM_DESTROY:
      PostQuitMessage(0);
      break;
    case WM_PAINT:
      {
        PAINTSTRUCT PaintStruct;
        HDC dc = BeginPaint(hwnd, &PaintStruct);
        Ellipse(dc, 10, 10, 100, 100);
        MoveToEx(dc, 0, 0, 0);
        LineTo(dc, 100, 100);
        EndPaint(hwnd, &PaintStruct);
      }
    default:
      return DefWindowProc(hwnd,msg,wParam,lParam);
  }
  return 0;
}

HWND CreateMainWindow()
{
  WNDCLASS wc;
  memset(&wc, 0, sizeof(WNDCLASS));
  wc.style = CS_HREDRAW | CS_VREDRAW  | CS_DBLCLKS ;
  wc.lpfnWndProc = (WNDPROC )MainWndProc;
  wc.hInstance = InstanceHandle;
  wc.hbrBackground = (HBRUSH )(COLOR_WINDOW + 1);
  wc.lpszClassName = "SimpleWinWndClass";
  wc.lpszMenuName = 0;
  wc.hCursor = LoadCursor(NULL, IDC_ARROW);
  wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
  if(!RegisterClass(&wc))
      return 0;

  return CreateWindow("SimpleWinWndClass",
                      "Simple-Window",
                      WS_MINIMIZEBOX | WS_VISIBLE |
                      WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_MAXIMIZEBOX |
                      WS_CAPTION | WS_BORDER | WS_SYSMENU | WS_THICKFRAME,
                      CW_USEDEFAULT, 0, CW_USEDEFAULT, 0,
                      0,
                      0,
                      InstanceHandle,
                      0);
}

int WINAPI WinMain(HINSTANCE hInstance,
                  HINSTANCE hPrevInstance,
                  LPSTR lpCmdLine,
                  INT nCmdShow)
{
  InstanceHandle = hInstance;

  if((MainWindow = CreateMainWindow()) == (HWND )0)
  {
      MessageBox(0, "Failed to create MainWindow!", "Warning", MB_OK);
      return 0;
  }
  ShowWindow(MainWindow, SW_SHOW);
  MSG Msg;
  while(GetMessage(&Msg, 0, 0, 0))
  {
      TranslateMessage(&Msg);
      DispatchMessage(&Msg);
  }
  return Msg.wParam;
}
Avatar billede fredag1 Nybegynder
27. april 2006 - 09:32 #6
Tak alle sammen,
Bertel det virker. Du er bare supper!
Avatar billede fredag1 Nybegynder
27. april 2006 - 09:33 #7
tak
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