» »

[VC++, MFC] OnPaint

[VC++, MFC] OnPaint

black ice ::

Imam dialog v katerem bi rad glede na akcije na radio button(ih), checkboxih in drop down meniju izrisal nekaj likov. Imam dva dialoga in sicer osnovni dialog poimenovan vaja1 (datoteka vaja1Dlg.cpp) in dialog Risanje (datoteka DialogRisanje.cpp). Spodaj je koda v DialogRisanje.cpp:
// DialogRisanje.cpp : implementation file

#include "stdafx.h"
#include "vaja1.h"
#include "DialogRisanje.h"
#include "afxdialogex.h"

// CDialogRisanje dialog

IMPLEMENT_DYNAMIC(CDialogRisanje, CDialogEx)

CDialogRisanje::CDialogRisanje(CWnd* pParent /*=NULL*/)
	: CDialogEx(CDialogRisanje::IDD, pParent)
{

}

CDialogRisanje::~CDialogRisanje()
{
}

void CDialogRisanje::DoDataExchange(CDataExchange* pDX)
{
	CDialogEx::DoDataExchange(pDX);
}


BEGIN_MESSAGE_MAP(CDialogRisanje, CDialogEx)
END_MESSAGE_MAP()

// CDialogRisanje message handlers
void CDialogRisanje::OnPaint()
{
	CBrush *barva;
	barva = new CBrush(RGB(0,255,255));   //inicializacija barve
	dc.SelectStockObject(NULL_PEN); //brez obrobe
	dc.SelectObject(barva); //nastavitev barve
	dc.Ellipse(70,150,40,50);//risanje elementa
	barva->DeleteObject(); //brisanja barve ker je pač kazalec
	// sklicevanje na radio btn in check box
	radioBtn1 = (CButton *)GetDlgItem(IDC_RADIO1);
	radioBtn1->SetCheck(1);

	//onemogočimo checkBoxe
	CheckBox1.EnableWindow(0);
}


in še napake, ki mi jih javlja prevajalnik:
	2	IntelliSense: #error directive: Please use the /MD switch for _AFXDLL builds	
	3	IntelliSense: inherited member is not allowed	
	4	IntelliSense: identifier "dc" is undefined	
	5	IntelliSense: identifier "radioBtn1" is undefined	
	6	IntelliSense: identifier "CheckBox1" is undefined	


Nimam več trohice potrpljenja s to zadevo in resno premišljujem da bi celotno zadevo nekam zabrisal. :D

jinzo ::

Kako pa si sploh dodal tale onPaint?
Pravtako, tam rabis
CButton *radioBtn1 = (CButton *)GetDlgItem(IDC_RADIO1);

whatever ::

Tam maš u visual studio nekje pod options/configuration/debug al nekaj takega maš neke opcije Multithread debug DLL pa to ... tisto probi spremenit, mogoče samo to (nastavitve kompajlerja) jebe pa je koda drugač vredi.
Veliko jih je notri, še več jih je pa zunaj.
Bilijarde v šole! - Ivan Kramberger
Abnormal behaviour of abnormal brain makes me normal.

jinzo ::

Ja ni ne, ko mu v onPaint manjka en konstrukt na začetku, po tem predvidevam da je metodo napisal na roke, kar pa potem nebo vredu ker ni pravega MESSAGE-ja povezal z to funkcijo in tako ali tako nebo delala.

black ice ::

Z malo pomoči sem rešil zadevo. Sedaj me matra to, da mi ne izriše elipse. Je kakšna ideja?
void CDialogRisanje::OnPaint()
{
	CPaintDC dc(this);
	CBrush *barva;

	barva = new CBrush(RGB(30,50,255));   //inicializacija barve

	dc.SelectStockObject(NULL_PEN); //brez obrobe

	dc.SelectObject(barva); //nastavitev barve

	dc.Ellipse(40,50,70,150);//risanje elementa

	barva->DeleteObject(); //brisanja barve ker je pač kazalec

	//če greš brez zgornje kode je default barva bela, Risanje se dela v metodi ...on paint
	// sklicevanje na radio btn in check box
		
	CButton *radioBtn1 = (CButton *)GetDlgItem(IDC_RADIO1);
	radioBtn1 = (CButton *)GetDlgItem(IDC_RADIO1);
	radioBtn1->SetCheck(1);

	//onemogočimo checkBoxe
	//CheckBox1.EnableWindow(0);
}

whatever ::

dc->getDC();
dc->releaseDC();

mogoče, jaz sem delal z Win32 API, MFC je brezveze in sam še bolj kompliciran.
Veliko jih je notri, še več jih je pa zunaj.
Bilijarde v šole! - Ivan Kramberger
Abnormal behaviour of abnormal brain makes me normal.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[c#] ukaz radirka

Oddelek: Programiranje
9772 (565) japol
»

[c#] picturebox, slika na sliko

Oddelek: Programiranje
15755 (565) japol
»

mfc problem

Oddelek: Programiranje
161225 (789) FuI2cY
»

[C++ Visual Studio] kako narisati krog?

Oddelek: Programiranje
141147 (914) c0dehunter
»

[C++] preprosto risanje

Oddelek: Programiranje
71307 (1184) popec

Več podobnih tem