WinCE下显示驱动中有DDGPE::SetMode (int modeId, HPALETTE *palette)函数
modeId:用来设置当前显示模式如:640*480,800*480等
请问下wince下是如何调用SetMode 函数的,这个modeId的值是如何指定的。
s3c2440disp.h里面:
class S3C2440DISP : public DDGPE
{
protected:
GPEModeEx m_ModeInfoEx; // local mode info
ULONG m_nSurfaceBitsAlign; // Surface bits alignments
private:
GPEMode m_ModeInfo;
DWORD m_cbScanLineLength;
DWORD m_cxPhysicalScreen;
DWORD m_cyPhysicalScreen;
DWORD m_colorDepth;
DWORD m_VirtualFrameBuffer;
DWORD m_FrameBufferSize;
SurfaceHeap *m_pVideoMemoryHeap; // Base entry representing all video memory
BOOL m_CursorDisabled;
BOOL m_CursorVisible;
BOOL m_CursorForcedOff;
RECTL m_CursorRect;
POINTL m_CursorSize;
POINTL m_CursorHotspot;
UCHAR *m_CursorBackingStore;
UCHAR *m_CursorXorShape;
UCHAR *m_CursorAndShape;
ULONG m_VideoPowerState;
DWORD m_dwLCDPhysicalFrameBase;
DWORD m_bClearAlternateVideoBCR;
public:
S3C2440DISP(void);
~S3C2440DISP();
virtual INT NumModes(void);
virtual SCODE SetMode(INT modeId, HPALETTE *palette);
......
就是这么调用的。
modeID成员是显示工作模式的编号索引值,由显示设备驱动的开发者负责为一个显示设备的所有可支持的工作模式编号,这个索引值只对一个显示设备是唯一的,并非全局唯一。在结构体GPEMode里面有这个结构体的定义。