Avatar billede venja Nybegynder
03. juni 2003 - 12:15 Der er 15 kommentarer og
1 løsning

udskrive billede af dialogboks i MFC

Jeg vil gerne tilføje en menufunktion i en MFC applikation hvor man eksempelvis vælger enuen filer og dernæst udskriv hvorefter man får et "screenshot" af dialogboksen ud på default printeren. - er der nogen der har et godt kodeeksempel til dette formål ??
Avatar billede soepro Nybegynder
03. juni 2003 - 12:33 #1
Indsæt følgende i din message-handler til menu-punktet 'Filer->Udskriv':

Form1->Print();

hvor "Form1" er navnet på den form du vil have udskrevet.
Avatar billede soepro Nybegynder
03. juni 2003 - 12:35 #2
Hvis det er en RichEdit kontrol du vil have indholdet udskrevet af:

void CWordPadView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
  CRichEditView::OnPrint(pDC, pInfo);
  if (pInfo != NULL && pInfo->m_bPreview)
    DrawMargins(pDC);
}
Avatar billede venja Nybegynder
03. juni 2003 - 12:45 #3
nu er jeg en novice og ikke helt dikke rpå hav ddu mener.... - den form jeg vil have udskrevet ?
Avatar billede venja Nybegynder
03. juni 2003 - 12:45 #4
jeg kan åbenbart heller ikke stave
Avatar billede venja Nybegynder
03. juni 2003 - 13:20 #5
med form mener du så navnet på menuen eller hvad ?
Avatar billede soepro Nybegynder
03. juni 2003 - 13:31 #6
Nej, jeg mener navnet på den instans du har af f.eks. din dialog:

CDialog *MyDialog;

MyDialog->Print();
Avatar billede bertelbrander Novice
03. juni 2003 - 13:32 #7
Skal dette forsåes på den måde at du har en dialogbox med en menu, hvis brugeren vælger et bestemt menupunkt får han udskrevet dialogbox'en (inklusive diverse knapper, menu'er, rammer, listbox'er osv) på printeren?
Avatar billede killer_bee Nybegynder
03. juni 2003 - 13:32 #8
soepro >> der bliver brugt MFC .. så jeg tror ikke Borland kode kan bruges..
Som jeg forstår spm. så vil du programatisk lave AltGr+PrintScreen.?.. men har ikke nogen forslag til hvordan det kan kodes :(.. vil dog lytte med
Avatar billede killer_bee Nybegynder
03. juni 2003 - 13:48 #9
hva med dette:

CWnd::Print
Call this member function to draw the current window in the specified device context, which is most commonly in a printer device context.
void Print(
  CDC* pDC,
  DWORD dwFlags
) const;

Kan det bruges?
Avatar billede soepro Nybegynder
03. juni 2003 - 14:24 #10
Analogt til Print() ovenfor Print(MyDialog->pDC, <flags>);
Avatar billede killer_bee Nybegynder
03. juni 2003 - 14:33 #11
soepro >> man kan ikke 'bare' skrive MyDialog->pDC ... og device context skal ikke være dialogens, men printerens ..
Avatar billede soepro Nybegynder
03. juni 2003 - 14:52 #12
killer_bee >> Hvorfor skriver du så ikke hvad man reelt skal skrive - du kommer jo så (også) "bare" med forslag, som alligevel ikke direkte kan bruges !
Avatar billede soepro Nybegynder
03. juni 2003 - 15:09 #13
Princippet under MFC on C++ Builder er det samme: programmet skal indeholde en "event" handler til den event der hedder OnPrint(). Under MFC skal MESSAGE_MAP'en angive at ID_FILE_PRINT er en mulighed (den "skydes" automatisk af Windows som reaktion på menu-punktet 'Filer->Print'), ligesom der skal være de tilsvarende event handlere.

Følgende er udtræk fra MS egen kode til WordPad:

:
BEGIN_MESSAGE_MAP(CWordPadView)
        // Andre kommandoer
        // :
    ON_COMMAND(ID_FILE_PRINT, OnFilePrint)
        // :

END_MESSAGE_MAP()
:
void CWordPadView::OnFilePrint()
{
    // don't allow winini changes to occur while printing
    m_bInPrint = TRUE;
    Cwnd::OnFilePrint();
    // printer may have changed
    theApp.NotifyPrinterChanged(); // this will cause a GetDocument()->PrinterChanged();
    m_bInPrint = FALSE;
}
:
void CWordPadView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
    CWnd::Print(pDC, pInfo);   
}
Avatar billede killer_bee Nybegynder
03. juni 2003 - 15:19 #14
soepro << jeg kommenterede det bare fordi det var direkte forkert!... elers foreslå alt det du vil :)
Avatar billede venja Nybegynder
05. juni 2003 - 13:17 #15
jeg roder lige lidt med alle jeres udemærkede forslag og vender så tilbage med point !!
Avatar billede venja Nybegynder
16. juni 2003 - 22:08 #16
det du´r, - takker mange gange
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