Récemment, j'étudie le développement de Symbian. Lorsque je souhaite utiliser CDirectScreenAccess pour dessiner directement sur l'appareil, la question se pose. Mon code est ci-dessous:question en utilisant CDirectScreenAccess de Symbian dev
//MySnakeAppView.h
class CMySnakeAppView : public CCoeControl
{
...
private:
void ConstructL(const TRect& aRect);
CDirectScreenAccess* iDSA;
void Restart(RDirectScreenAccess::TTerminationReasons aReason);
void AbortNow(RDirectScreenAccess::TTerminationReasons aReason);
void DrawGraphics();
...
}
//MySnakeAppView.cpp
void CMySnakeAppView::ConstructL(const TRect& aRect)
{
// Create a window for this application view
CreateWindowL();
// Set the windows size
SetRect(aRect);
// Activate the window, which makes it ready to be drawn
ActivateL();
CEikonEnv* env = CEikonEnv::Static();
iDSA = CDirectScreenAccess::NewL(env->WsSession(), *env->ScreenDevice(), Window(), *this);
iDSA->StartL();
DrawGraphics();
}
void CMySnakeAppView::DrawGraphics()
{
CFbsBitGc *gc = iDSA->Gc();
TRgb colorRed = AKN_LAF_COLOR(35);
gc->SetPenColor(colorRed);
gc->DrawRect(TRect(0,0,100,100));
iDSA->ScreenDevice()->Update();
}
void CMySnakeAppView::Restart(RDirectScreenAccess::TTerminationReasons aReason)
{
iDSA->StartL();
DrawGraphics();
}
void CMySnakeAppView::AbortNow(RDirectScreenAccess::TTerminationReasons aReason)
{
iDSA->Cancel();
}
quand je construis ce projet, il est mal avec le code IDSA = CDirectScreenAccess :: NEWL (env-> WsSession(), * env-> ScreenDevice(), Fenêtre (), *ce); c'est une erreur écrit: 'MDirectScreenAccess &' - conversion implicite illégale de 'CMySnakeAppView' à mais quand je le fais comme ceci: IDSA = CDirectScreenAccess :: NEWL (env-> WsSession (*), env -> ScreenDevice(), Window(), (MDirectScreenAccess &) * ceci);
il n'y a pas d'erreur dans la construction, mais encore erreur dans le projet, je ne sais pas pourquoi, j'ai besoin de votre aide
Oui je le fais comme ça, Et ça marche! Merci! – user710756
accepter sa réponse si cela fonctionne – James