最近、私はSymbian開発を研究しています。 CDirectScreenAccessを使用してデバイスに直接描画する場合、問題が発生します。 私のコードは以下の通りです:私はこのプロジェクトをビルドするときSymbianデベロッパのCDirectScreenAccessに関する質問
//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();
}
は、それがコード IDSA = CDirectScreenAccess :: NEWL(env-> WsSession()、* env-> ScreenDevice()、窓(と間違っています)、 *この); これはその書き込みミスです: - : IDSA = CDirectScreenAccess :: NEWL(env-> WsSession()、* envを 'MDirectScreenAccess &' に 'CMySnakeAppView' から違法な暗黙の型変換を、私はこのようにそれを行うとき - > ScreenDevice()、Window()、(MDirectScreenAccess &)* this);それはのistanceではないので
が建物の中に間違いはありませんが、まだプロジェクトに誤りがあり、私はなぜ知らない、私は、あなたが*これを渡すことはできません
はい私はこれが好きです、そしてそれは動作します!ありがとう! – user710756
彼の答えを受け入れる – James