PDA

Pogledaj cijelu verziju : c++ buttons



cerberi
27-07-2008, 13:15
trebam pomoć oko izrade buttonsa, checkboxeva i tih stvari u c++ express 2008. stvar je u tome što ne želim da koristi mfc. trebao bih kod koji napravi form-u odredjene veličine, i neki button unutar nje.
recimo ovako: ja zovnem funkciju createButton(int width, int height, char buttonName, ...) npr. i sad ta funckija kreira tu formu i button unutar nje

jeli zna netko kako se to može napraviti?

tip projekta kojeg imam je win32 .dll. evo kod pa molim vas pomozite::



///////////////////////////////////////////////////////////////////////
// sampledll.cpp : Basic example DLL for A6
// (c) conitec / jcl 2004
///////////////////////////////////////////////////////////////////////
// Use this source as template for your own DLLs.
// Copy sampledll.dll to the acknex_plugins folder,
// and include "sampledll.wdl" into your script.
///////////////////////////////////////////////////////////////////////
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
#include <windows.h>
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <tchar.h>
#include <math.h.>
#include <string>
#include <iostream>

// engine specific header file
#define DLL_USE // always define before including adll.h
#include "adll.h"
using namespace std;

///////////////////////////////////////////////////////////////////////
// the following function MUST be defined in your DLL

// DLL main entry point - normally this needs not to be changed
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved )
{
engine_bind();
return TRUE;
}


DLLFUNC void message(LPCSTR text, LPCSTR name, UINT uType)
{
MessageBox(NULL,
text,
name,
uType
);
}

void createButton()
{
// OVDJE BI BIO KOD ZA KREIRANJE FORME I BUTTONA
}

fps_gamer
27-07-2008, 14:08
ti zelis napraviti gumb u gumbu ako sam shvatio?

cerberi
27-07-2008, 14:20
ne ne :D nego želim da kad ja zovnem tu funkciju ona kreira form-u odredjene veličine (iste veličine kao i gumb) i gumb unutar te iste form-e.

želim to na taj način jer radim dll za drugi game enigne i kad je zovnem tu funkciju iz tog engine-a želim da se stvori taj i taj gumb na određenoj poziciji.

neznam ako sam bio jasan, ali...gamer, jel znaš c++ pa da mi pomogneš?

fps_gamer
27-07-2008, 15:24
znam c++... za windowse znam C... sa dll-ovima nemam iskustva...

ti zelis da pozoves funkciju, ona napravi novi prozor i unutra gumb?

cerberi
27-07-2008, 15:33
upravo to. jel moguće i jel znaš kako to napraviti?

fps_gamer
27-07-2008, 16:04
ZNAM... mogu ti napraviti... koliko je hitno?
ja ti dam code i ti to samo ubacis di ti treba... valjda... ili kako vec sa dll...

cerberi
27-07-2008, 16:13
ajd super, hvala. imaš nekakav messenger(ICQ, yahoo, live)? ja ode sad na posao pa kad se vratim iza 11 ili sutra pa da se čujemo, jel može?

fps_gamer
27-07-2008, 17:19
moze... fps_gamer2@hotmail.com

Tracer
27-07-2008, 21:01
Ne sjećam se sad točno no ono što svakako moraš napraviti jest deklaracija pokazivača na gumb, a zatim njegovu inicijalizaciju provesti u funkciji:


//...u definiciji klase prozora
CButton* MojGumb;

//..u funkciji za kreiranje gumba
MojGumb = new CButton(this, ID_MOJGUMB, "Naslov", 10, 10, 100, 25);


...s time da je ovo incijalizacija koja se po pravilu koristi u Borlandovom OWL-u. Vrlo vjerovatno je isto i u MFC-u, ili ima samo manje izmjene. Kasnije još moraš u objektnoj mapi ručno napraviti i poruke poput EV_COMMAND kako bi mogao definirati i akcije tj. funkciju koja će se izvršiti klikom na taj novi gumb. Naravno, i napisati novu funkciju, članicu klase prozora koja će se izvršavati na taj klik. Eh... hvala Bogu što sam ostavio MFC :roll:

fps_gamer
27-07-2008, 21:43
pa cek... nije tako komplicirano...
napravi gumb i napise sta zeli da se napravi kada klikne na njega...

definira ga ovako

DEFINE gumb 21

ako se ne varam...

Tracer
27-07-2008, 22:07
pa cek... nije tako komplicirano...
napravi gumb i napise sta zeli da se napravi kada klikne na njega...

definira ga ovako

DEFINE gumb 21

ako se ne varam...
Ne. To evetualno može biti deklaracija identifikatora preko kojeg povezuješ gumb i funkciju koja se treba izvršiti na klik (preko objekte mape). Gumb je sam po sebi objekt, a u ovom slučaju traži se njegova dinamička alokacija i zato mora sve ići preko pokazivača na CButton.

I naravno, pretprocesorske naredbe počinju s znakom
#S;)

fps_gamer
27-07-2008, 22:22
ok zaboravio... ja cu mu pokusati napraviti... ali nista ne obecajem...

Programko
19-10-2008, 09:47
Mislim da si krenuo u krivom smjeru. Zato jer UI nema puno smisla raditi u DLL-u. I ako želiš napraviti formu u WIN32 lakše je napraviti tako da je definiraš u .res datoteci, i u kodu otvoriš kao modal dialog. Za tvoj primjer pogledaj ovdje http://zetcode.com/tutorials/winapi/dialogs/
Međutim za programiranje forme ja bih krenuo ovim putem http://www.winprog.org/tutorial/dialogs.htmlSs time da uopće ne napravim glavni prozor nego izravno otvormi formu iz resursa DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_ABOUT), hwnd, AboutDlgProc);
i kontoliram callback funkciju

cerberi
19-10-2008, 10:07
ja sam to trebao u .dll jer ne bih to korstio u VS-u nego u drugom 3d engineu - A7 a on ima mogućnost korištenja dll- napravljenih u c++.

pošto mi to više ne treba, može lock