Avatar billede cvpcvp Nybegynder
14. august 2003 - 12:47 Der er 15 kommentarer og
1 løsning

MFC, Oprette område i Frame hvor man kan scrolle

Jeg har oprettet en frame (arver fra CFrameWnd), jeg vil gerne oprette et område i denne frame hvor det er muligt at scroll ved hjælp af en scrollbar.

Hvordan gør jeg det?

Det ville også være godt hvis det var muligt at indsætte f.eks. CEdit bokse i dette område der skal scrolles i...
Avatar billede jpk Nybegynder
14. august 2003 - 12:49 #1
Er det ikke en doc/view app?
Så kunne du evt. bruge et CFormView..?
Avatar billede cvpcvp Nybegynder
14. august 2003 - 12:50 #2
nej det er det desværre ikke...
Avatar billede jpk Nybegynder
14. august 2003 - 12:55 #3
Du kan sådan set godt bruge view'et alligevel, men du kan også sagtens oprette controls direkte i din frame.
Du skal så bare kalde deres Create metode...
Avatar billede cvpcvp Nybegynder
14. august 2003 - 13:00 #4
ja jeg er godt klar over at jeg kan oprette controls.... men de skal gerne være inde i det område af framet som der skal scrolles i... det skal ikke være en ny frame der åbner men bare ligge i den frame der er der i forvejen..
lidt på denne her måde... hvor det inderste er det der skal scrolles i... og derinde alle controls skal være...

-------------------------------------
|                                  |
|                                  |
|          ---------                |
|          |      |                |
|          |      |                |
|          ---------                |
|                                  |
-------------------------------------
Avatar billede cvpcvp Nybegynder
14. august 2003 - 13:01 #5
hov.... det så kønnere ud da jeg skrev det :-) håber det er forståeligt..
Avatar billede jpk Nybegynder
14. august 2003 - 14:30 #6
Så opret en kontrol, der kan scrolles i, i din frame og opret de andre kontroller i den...
Avatar billede cvpcvp Nybegynder
14. august 2003 - 14:49 #7
hvilken control skulle det være? altså den der kan indeholde andre controls og selv har mulighed for scroll?
Avatar billede jpk Nybegynder
14. august 2003 - 14:56 #8
Hvad med bare at bruge et CWnd..?
Avatar billede cvpcvp Nybegynder
14. august 2003 - 15:05 #9
hvordan sørger jeg for at de controls jeg vil lave kommer til at ligge i den cWnd control?
Avatar billede jpk Nybegynder
14. august 2003 - 15:08 #10
bruger den som parent
Avatar billede cvpcvp Nybegynder
14. august 2003 - 15:09 #11
ok prøver jeg...
Avatar billede cvpcvp Nybegynder
14. august 2003 - 18:43 #12
hvis jeg så indsætter en knap i denne CWnd... hvordan håndtere jeg så de messages den sender når der bliver trykket på den? de bliver vel sendt til dens parent... men hvordan håndterer jeg de beskeder?
Avatar billede jpk Nybegynder
14. august 2003 - 19:47 #13
Hvis du laver en nedarving fra CWnd og bruger den, kan du fange de messages der kommer deri.
Avatar billede cvpcvp Nybegynder
15. august 2003 - 10:25 #14
Jeg har lavet følgende klasse men jeg kan ikke fange de messages den burde sende..

Jeg opretter i mit projekt et objekt af denne klasse.

CTilmeldList temp;

// header file
#pragma once
#include "resource.h"


class CTilmeldList : public CWnd
{
public:
    CTilmeldList(CWnd *);

    void hejfunk();

protected:

    DECLARE_MESSAGE_MAP()

    CWnd* pWnd;
    CButton *hejknap;
};

// cpp file
#include <afxwin.h>
#include "tilmList.h"

BEGIN_MESSAGE_MAP(CTilmeldList, CWnd)
    ON_COMMAND(IDB_HEJ, hejfunk )
END_MESSAGE_MAP()


CTilmeldList::CTilmeldList(CWnd *pThis)
{
    pWnd = new CWnd;

    pWnd->Create(_T("STATIC"), "Hi", WS_CHILD | WS_VISIBLE | WS_BORDER |WS_VSCROLL,
        CRect(211, 120, 556, 385), pThis, 1234);

    hejknap = new CButton;

    hejknap->Create("hej",  WS_CHILD | WS_VISIBLE, CRect(10,110,100,600),pWnd, IDB_HEJ);
}
void CTilmeldList::hejfunk()
{
    MessageBox("hej igen");
}
Avatar billede cvpcvp Nybegynder
15. august 2003 - 10:56 #15
har fundet ud af det... jeg opretter ikke et objekt af CWnd men laver bare en Create i konstruktøren i stedet for... så konstruktøren kommer til at se således ud..
CTilmeldList::CTilmeldList(CWnd *pThis)
{
    Create(NULL, "", WS_CHILD | WS_VISIBLE | WS_BORDER |WS_VSCROLL,
        CRect(211, 120, 556, 385), pThis, 1234);
   
    hejknap = new CButton;

    hejknap->Create("hej2",  WS_CHILD | WS_VISIBLE, CRect(10,110,100,200),this, IDB_HEJ);
}
Avatar billede cvpcvp Nybegynder
19. august 2003 - 12:40 #16
.
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





White paper
Tidsbegrænset kampagne: Overvejer du at udskifte eller tilføje printere i din forretning? Vi kan tilbyde én eller flere maskiner gratis