Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako napraviti konteksni meni u visual C++ 6?

[es] :: C/C++ programiranje :: Kako napraviti konteksni meni u visual C++ 6?

[ Pregleda: 1990 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Lavovski

Član broj: 20582
Poruke: 5
*.mgnet.co.yu



Profil

icon Kako napraviti konteksni meni u visual C++ 6?13.02.2004. u 16:01 - pre 245 meseci
Mozda cu uspeti naizgled lako pitanje da zakomplikujem ;-) Potpuni sam pocetnik
u ucenju visual C++. Poznajem osnove C++ jezika (ocigledno ne dovoljno) ali cim sam poceo sa visuel C++ 6 biblijom naisli su problemi.

Mozeli neko da mi kaze u koji deo koda (u koju klasu i funkciju) trebam da dodelim i inicijalizujem C++ objekat kada pravim konteksni meni (meni koji se pojavljuje pritiskom desnog tastera misa na radnoj podlozi programa).
Kod bi otprilike izgledao ovako:

--------------------------------------------------------------------------------
Code:
//dodeljivanje
    g_pmenuContext = new CMenu();
    if (!g_pmenuContext) return -1;
--------------------------------------------------------------------------------
//inicijalizacija
    BOOL bSuccess =    g_pmenuContext->LoadMenu(IDR_CONTEXT);
    if (!bSuccess) return -1;
--------------------------------------------------------------------------------

Po knjizi to je deo koda iz funkcije za obradu komande WM_CREATE




Kada startujem ClassWizard i pogledam koja funkcija obradjuje komandu WM_CREATE to je funkcija

int CAboutDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1;
//ovde ide kod..
return 0;
}

u klasi CAbotDlg.






Kada dodam kod za pravljenje novog objekta dobijam poruke o gresci:
error C2065: 'g_pmenuContext' : undeclared identifier
error C2440: '=' : cannot convert from 'class CMenu *' to 'int'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast
error C2227: left of '->LoadMenuA' must point to class/struct/union
error C2065: 'IDR_CONTEXT' : undeclared identifier

Mozeli neko da mi pojasni gde gresim i kako da ispravim gresku?
Nemojte zameriti ako je pitanje glupo, pocetnik sam i stvarno mi nije jasno, a nema ko da mi pokaze;-)
 
Odgovor na temu

yooyo

Član broj: 4891
Poruke: 1101
62.108.111.*



Profil

icon Re: Kako napraviti konteksni meni u visual C++ 6?13.02.2004. u 20:33 - pre 245 meseci
1. dodaj CMenu* g_pmenuContext; u klasu CAboutDlg
2. po potrebi #include "resource.h"

yooyo
 
Odgovor na temu

Lavovski

Član broj: 20582
Poruke: 5
*.mgnet.co.yu



Profil

icon Re: Kako napraviti konteksni meni u visual C++ 6?14.02.2004. u 13:36 - pre 245 meseci
Ok sada je konteksni meni napravljen i treba omoguciti da se on pojavi kada se pritisne desni taster misa. To radi funkcija za obradu poruke WM_RBUTTONDOWN

-------------------------------------------------------------------------
Code:

 void CMainFrame::OnRButtonDown(UINT nFlags, CPoint point) 
{
//Pretvara klientske koordinate u koordinate ekrana.
ClientToScreen(&point);


  //Prikazuje meni na mestu gde se nalazi pokazivac misa.
    CMainFrame * psubmenu = g_pmenuContext->GetSubMenu(0);
    psubmenu->TrackPopupMenu(TPM_LEFTALIGN | 
                             TPM_RIGHTBUTTON,
                             point.x,
                             point.y,
                             this);
    
     CFrameWnd::OnRButtonDown(nFlags, point);
}

-------------------------------------------------------------------------

Sada dobijam poruke o gresci:
error C2440: 'initializing' : cannot convert from 'class CMenu *' to 'class CMainFrame *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
error C2039: 'TrackPopupMenu' : is not a member of 'CMainFrame'

U cemu sada gresim?
 
Odgovor na temu

[es] :: C/C++ programiranje :: Kako napraviti konteksni meni u visual C++ 6?

[ Pregleda: 1990 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.