Avatar billede trine_h Nybegynder
09. november 2003 - 10:08 Der er 4 kommentarer og
1 løsning

funktion som kan tegne på skærmen udenfor onpaint i mfc

Hvordan laver jeg en funktion udenfor onpaint i mfc der kan tegne på skærmen og som kaldes fra onpaint. hvad er det for parametre den skal kaldes med?
Avatar billede trine_h Nybegynder
09. november 2003 - 10:27 #1
eks. følger; Jeg har en onpaint som kalder funktionen tegn() men hvilke parametre skal jeg kalde med for at kunne tegne i tegn() funktionen?
void CButtonWindow::OnPaint ()
{
  CPaintDC dc (this);
  tegn();
}
void CButtonWindow::tegn()
{
}
Avatar billede bertelbrander Novice
09. november 2003 - 15:14 #2
Jeg ville lave den som:

void tegn(CDC &dc)

Så kan du kalde den fra både OnPaint() med en CPaintDC og fra andre funktioner med en CDC, f.ex;

void CButtonWindow::SomeFunc()
{
  CDC *dc = GetDC();
  tegn(*dc);
  ReleaseDC(dc);
}

void CButtonWindow::OnPaint ()
{
  CPaintDC dc (this);
  tegn(dc);
}
void CButtonWindow::tegn()
{
  dc.TextOut(10, 10, "Hello", 5);
}
Avatar billede trine_h Nybegynder
09. november 2003 - 19:59 #3
tak for svaret - lig et svar og du får pointene. Mon du også kan svare mig på hvordan jeg kører et simpelt c++/mfc program  som dette i visual studio.net - hvilken type projekt skal jeg vælge?:

#include <afxwin.h>

// Declare the application class
class CHelloApp : public CWinApp
{
public:
  virtual BOOL InitInstance();
};

// Create an instance of the application class
CHelloApp HelloApp;

// Declare the main window class
class CHelloWindow : public CFrameWnd
{
  CStatic* cs;
public:
  CHelloWindow();
};

// The InitInstance function is called each
// time the application first executes.
BOOL CHelloApp::InitInstance()
{
  m_pMainWnd = new CHelloWindow();
  m_pMainWnd->ShowWindow(m_nCmdShow);
  m_pMainWnd->UpdateWindow();
  return TRUE;
}

// The constructor for the window class
CHelloWindow::CHelloWindow()
{
  // Create the window itself
  Create(NULL,
    "Hello World!",
    WS_OVERLAPPEDWINDOW,
    CRect(0,0,200,200));
  // Create a static label
  cs = new CStatic();
  cs->Create("hello world",
    WS_CHILD|WS_VISIBLE|SS_CENTER,
    CRect(50,80,150,150),
    this);
}
Avatar billede bertelbrander Novice
09. november 2003 - 21:37 #4
Jeg kender ikke .net version af Visual Studio, men i min version 6 ville jeg vælge en "Win32 Application"

Jeg forsøger at undgå at få point.
Avatar billede trine_h Nybegynder
10. november 2003 - 08:17 #5
ok!
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