• [MetaHook] Surface hook


    Hook ISurface function.

      1 #include <metahook.h>
      2 #include <vgui/ISurface.h>
      3 
      4 using namespace vgui;
      5 
      6 ISurface *g_pSurface = 0;
      7 
      8 void (__fastcall *g_pfnCSurface_Shutdown)(void *pthis, int edx) = 0;
      9 void (__fastcall *g_pfnCSurface_RunFrame)(void *pthis, int edx) = 0;
     10 VPANEL (__fastcall *g_pfnCSurface_GetEmbeddedPanel)(void *pthis, int edx) = 0;
     11 void (__fastcall *g_pfnCSurface_SetEmbeddedPanel)(void *pthis, int edx, VPANEL pPanel) = 0;
     12 void (__fastcall *g_pfnCSurface_PushMakeCurrent)(void *pthis, int edx, VPANEL panel, bool useInsets) = 0;
     13 void (__fastcall *g_pfnCSurface_PopMakeCurrent)(void *pthis, int edx, VPANEL panel) = 0;
     14 void (__fastcall *g_pfnCSurface_DrawSetColor)(void *pthis, int edx, int r, int g, int b, int a) = 0;
     15 void (__fastcall *g_pfnCSurface_DrawSetColor2)(void *pthis, int edx, Color col) = 0;
     16 void (__fastcall *g_pfnCSurface_DrawFilledRect)(void *pthis, int edx, int x0, int y0, int x1, int y1) = 0;
     17 void (__fastcall *g_pfnCSurface_DrawOutlinedRect)(void *pthis, int edx, int x0, int y0, int x1, int y1) = 0;
     18 void (__fastcall *g_pfnCSurface_DrawLine)(void *pthis, int edx, int x0, int y0, int x1, int y1) = 0;
     19 void (__fastcall *g_pfnCSurface_DrawPolyLine)(void *pthis, int edx, int *px, int *py, int numPoints) = 0;
     20 void (__fastcall *g_pfnCSurface_DrawSetTextFont)(void *pthis, int edx, HFont font) = 0;
     21 void (__fastcall *g_pfnCSurface_DrawSetTextColor)(void *pthis, int edx, int r, int g, int b, int a) = 0;
     22 void (__fastcall *g_pfnCSurface_DrawSetTextColor2)(void *pthis, int edx, Color col) = 0;
     23 void (__fastcall *g_pfnCSurface_DrawSetTextPos)(void *pthis, int edx, int x, int y) = 0;
     24 void (__fastcall *g_pfnCSurface_DrawGetTextPos)(void *pthis, int edx, int &x, int &y) = 0;
     25 void (__fastcall *g_pfnCSurface_DrawPrintText)(void *pthis, int edx, const wchar_t *text, int textLen) = 0;
     26 void (__fastcall *g_pfnCSurface_DrawUnicodeChar)(void *pthis, int edx, wchar_t wch) = 0;
     27 void (__fastcall *g_pfnCSurface_DrawUnicodeCharAdd)(void *pthis, int edx, wchar_t wch) = 0;
     28 void (__fastcall *g_pfnCSurface_DrawFlushText)(void *pthis, int edx) = 0;
     29 IHTML* (__fastcall *g_pfnCSurface_CreateHTMLWindow)(void *pthis, int edx, IHTMLEvents *events, VPANEL context) = 0;
     30 void (__fastcall *g_pfnCSurface_PaintHTMLWindow)(void *pthis, int edx, IHTML *htmlwin) = 0;
     31 void (__fastcall *g_pfnCSurface_DeleteHTMLWindow)(void *pthis, int edx, IHTML *htmlwin) = 0;
     32 void (__fastcall *g_pfnCSurface_DrawSetTextureFile)(void *pthis, int edx, int id, const char *filename, int hardwareFilter, bool forceReload) = 0;
     33 void (__fastcall *g_pfnCSurface_DrawSetTextureRGBA)(void *pthis, int edx, int id, const unsigned char *rgba, int wide, int tall, int hardwareFilter, bool forceReload) = 0;
     34 void (__fastcall *g_pfnCSurface_DrawSetTexture)(void *pthis, int edx, int id) = 0;
     35 void (__fastcall *g_pfnCSurface_DrawGetTextureSize)(void *pthis, int edx, int id, int &wide, int &tall) = 0;
     36 void (__fastcall *g_pfnCSurface_DrawTexturedRect)(void *pthis, int edx, int x0, int y0, int x1, int y1) = 0;
     37 bool (__fastcall *g_pfnCSurface_IsTextureIDValid)(void *pthis, int edx, int id) = 0;
     38 int (__fastcall *g_pfnCSurface_CreateNewTextureID)(void *pthis, int edx, bool procedural) = 0;
     39 void (__fastcall *g_pfnCSurface_GetScreenSize)(void *pthis, int edx, int &wide, int &tall) = 0;
     40 void (__fastcall *g_pfnCSurface_SetAsTopMost)(void *pthis, int edx, VPANEL panel, bool state) = 0;
     41 void (__fastcall *g_pfnCSurface_BringToFront)(void *pthis, int edx, VPANEL panel) = 0;
     42 void (__fastcall *g_pfnCSurface_SetForegroundWindow)(void *pthis, int edx, VPANEL panel) = 0;
     43 void (__fastcall *g_pfnCSurface_SetPanelVisible)(void *pthis, int edx, VPANEL panel, bool state) = 0;
     44 void (__fastcall *g_pfnCSurface_SetMinimized)(void *pthis, int edx, VPANEL panel, bool state) = 0;
     45 bool (__fastcall *g_pfnCSurface_IsMinimized)(void *pthis, int edx, VPANEL panel) = 0;
     46 void (__fastcall *g_pfnCSurface_FlashWindow)(void *pthis, int edx, VPANEL panel, bool state) = 0;
     47 void (__fastcall *g_pfnCSurface_SetTitle)(void *pthis, int edx, VPANEL panel, const wchar_t *title) = 0;
     48 void (__fastcall *g_pfnCSurface_SetAsToolBar)(void *pthis, int edx, VPANEL panel, bool state) = 0;
     49 void (__fastcall *g_pfnCSurface_CreatePopup)(void *pthis, int edx, VPANEL panel, bool minimised, bool showTaskbarIcon, bool disabled, bool mouseInput, bool kbInput) = 0;
     50 void (__fastcall *g_pfnCSurface_SwapBuffers)(void *pthis, int edx, VPANEL panel) = 0;
     51 void (__fastcall *g_pfnCSurface_Invalidate)(void *pthis, int edx, VPANEL panel) = 0;
     52 void (__fastcall *g_pfnCSurface_SetCursor)(void *pthis, int edx, HCursor cursor) = 0;
     53 bool (__fastcall *g_pfnCSurface_IsCursorVisible)(void *pthis, int edx) = 0;
     54 void (__fastcall *g_pfnCSurface_ApplyChanges)(void *pthis, int edx) = 0;
     55 bool (__fastcall *g_pfnCSurface_IsWithin)(void *pthis, int edx, int x, int y) = 0;
     56 bool (__fastcall *g_pfnCSurface_HasFocus)(void *pthis, int edx) = 0;
     57 bool (__fastcall *g_pfnCSurface_SupportsFeature)(void *pthis, int edx, ISurface::SurfaceFeature_e feature) = 0;
     58 void (__fastcall *g_pfnCSurface_RestrictPaintToSinglePanel)(void *pthis, int edx, VPANEL panel) = 0;
     59 void (__fastcall *g_pfnCSurface_SetModalPanel)(void *pthis, int edx, VPANEL panel) = 0;
     60 VPANEL (__fastcall *g_pfnCSurface_GetModalPanel)(void *pthis, int edx) = 0;
     61 void (__fastcall *g_pfnCSurface_UnlockCursor)(void *pthis, int edx) = 0;
     62 void (__fastcall *g_pfnCSurface_LockCursor)(void *pthis, int edx) = 0;
     63 void (__fastcall *g_pfnCSurface_SetTranslateExtendedKeys)(void *pthis, int edx, bool state) = 0;
     64 VPANEL (__fastcall *g_pfnCSurface_GetTopmostPopup)(void *pthis, int edx) = 0;
     65 void (__fastcall *g_pfnCSurface_SetTopLevelFocus)(void *pthis, int edx, VPANEL panel) = 0;
     66 HFont (__fastcall *g_pfnCSurface_CreateFont)(void *pthis, int edx) = 0;
     67 bool (__fastcall *g_pfnCSurface_AddGlyphSetToFont)(void *pthis, int edx, HFont font, const char *windowsFontName, int tall, int weight, int blur, int scanlines, int flags, int lowRange, int highRange) = 0;
     68 bool (__fastcall *g_pfnCSurface_AddCustomFontFile)(void *pthis, int edx, const char *fontFileName) = 0;
     69 int (__fastcall *g_pfnCSurface_GetFontTall)(void *pthis, int edx, HFont font) = 0;
     70 void (__fastcall *g_pfnCSurface_GetCharABCwide)(void *pthis, int edx, HFont font, int ch, int &a, int &b, int &c) = 0;
     71 int (__fastcall *g_pfnCSurface_GetCharacterWidth)(void *pthis, int edx, HFont font, int ch) = 0;
     72 void (__fastcall *g_pfnCSurface_GetTextSize)(void *pthis, int edx, HFont font, const wchar_t *text, int &wide, int &tall) = 0;
     73 VPANEL (__fastcall *g_pfnCSurface_GetNotifyPanel)(void *pthis, int edx) = 0;
     74 void (__fastcall *g_pfnCSurface_SetNotifyIcon)(void *pthis, int edx, VPANEL context, HTexture icon, VPANEL panelToReceiveMessages, const char *text) = 0;
     75 void (__fastcall *g_pfnCSurface_PlaySound)(void *pthis, int edx, const char *fileName) = 0;
     76 int (__fastcall *g_pfnCSurface_GetPopupCount)(void *pthis, int edx) = 0;
     77 VPANEL (__fastcall *g_pfnCSurface_GetPopup)(void *pthis, int edx, int index) = 0;
     78 bool (__fastcall *g_pfnCSurface_ShouldPaintChildPanel)(void *pthis, int edx, VPANEL childPanel) = 0;
     79 bool (__fastcall *g_pfnCSurface_RecreateContext)(void *pthis, int edx, VPANEL panel) = 0;
     80 void (__fastcall *g_pfnCSurface_AddPanel)(void *pthis, int edx, VPANEL panel) = 0;
     81 void (__fastcall *g_pfnCSurface_ReleasePanel)(void *pthis, int edx, VPANEL panel) = 0;
     82 void (__fastcall *g_pfnCSurface_MovePopupToFront)(void *pthis, int edx, VPANEL panel) = 0;
     83 void (__fastcall *g_pfnCSurface_MovePopupToBack)(void *pthis, int edx, VPANEL panel) = 0;
     84 void (__fastcall *g_pfnCSurface_SolveTraverse)(void *pthis, int edx, VPANEL panel, bool forceApplySchemeSettings) = 0;
     85 void (__fastcall *g_pfnCSurface_PaintTraverse)(void *pthis, int edx, VPANEL panel) = 0;
     86 void (__fastcall *g_pfnCSurface_EnableMouseCapture)(void *pthis, int edx, VPANEL panel, bool state) = 0;
     87 void (__fastcall *g_pfnCSurface_GetWorkspaceBounds)(void *pthis, int edx, int &x, int &y, int &wide, int &tall) = 0;
     88 void (__fastcall *g_pfnCSurface_GetAbsoluteWindowBounds)(void *pthis, int edx, int &x, int &y, int &wide, int &tall) = 0;
     89 void (__fastcall *g_pfnCSurface_GetProportionalBase)(void *pthis, int edx, int &width, int &height) = 0;
     90 void (__fastcall *g_pfnCSurface_CalculateMouseVisible)(void *pthis, int edx) = 0;
     91 bool (__fastcall *g_pfnCSurface_NeedKBInput)(void *pthis, int edx) = 0;
     92 bool (__fastcall *g_pfnCSurface_HasCursorPosFunctions)(void *pthis, int edx) = 0;
     93 void (__fastcall *g_pfnCSurface_SurfaceGetCursorPos)(void *pthis, int edx, int &x, int &y) = 0;
     94 void (__fastcall *g_pfnCSurface_SurfaceSetCursorPos)(void *pthis, int edx, int x, int y) = 0;
     95 void (__fastcall *g_pfnCSurface_DrawTexturedPolygon)(void *pthis, int edx, int *p, int n) = 0;
     96 int (__fastcall *g_pfnCSurface_GetFontAscent)(void *pthis, int edx, HFont font, wchar_t wch) = 0;
     97 void (__fastcall *g_pfnCSurface_SetAllowHTMLJavaScript)(void *pthis, int edx, bool state) = 0;
     98 
     99 class CSurface : public ISurface
    100 {
    101 public:
    102     void Shutdown(void);
    103     void RunFrame(void);
    104     VPANEL GetEmbeddedPanel(void);
    105     void SetEmbeddedPanel(VPANEL pPanel);
    106     void PushMakeCurrent(VPANEL panel, bool useInsets);
    107     void PopMakeCurrent(VPANEL panel);
    108     void DrawSetColor(int r, int g, int b, int a);
    109     void DrawSetColor(Color col);
    110     void DrawFilledRect(int x0, int y0, int x1, int y1);
    111     void DrawOutlinedRect(int x0, int y0, int x1, int y1);
    112     void DrawLine(int x0, int y0, int x1, int y1);
    113     void DrawPolyLine(int *px, int *py, int numPoints);
    114     void DrawSetTextFont(HFont font);
    115     void DrawSetTextColor(int r, int g, int b, int a);
    116     void DrawSetTextColor(Color col);
    117     void DrawSetTextPos(int x, int y);
    118     void DrawGetTextPos(int &x, int &y);
    119     void DrawPrintText(const wchar_t *text, int textLen);
    120     void DrawUnicodeChar(wchar_t wch);
    121     void DrawUnicodeCharAdd(wchar_t wch);
    122     void DrawFlushText(void);
    123     IHTML *CreateHTMLWindow(IHTMLEvents *events, VPANEL context);
    124     void PaintHTMLWindow(IHTML *htmlwin);
    125     void DeleteHTMLWindow(IHTML *htmlwin);
    126     void DrawSetTextureFile(int id, const char *filename, int hardwareFilter, bool forceReload);
    127     void DrawSetTextureRGBA(int id, const unsigned char *rgba, int wide, int tall, int hardwareFilter, bool forceReload);
    128     void DrawSetTexture(int id);
    129     void DrawGetTextureSize(int id, int &wide, int &tall);
    130     void DrawTexturedRect(int x0, int y0, int x1, int y1);
    131     bool IsTextureIDValid(int id);
    132     int CreateNewTextureID(bool procedural = false);
    133     void GetScreenSize(int &wide, int &tall);
    134     void SetAsTopMost(VPANEL panel, bool state);
    135     void BringToFront(VPANEL panel);
    136     void SetForegroundWindow(VPANEL panel);
    137     void SetPanelVisible(VPANEL panel, bool state);
    138     void SetMinimized(VPANEL panel, bool state);
    139     bool IsMinimized(VPANEL panel);
    140     void FlashWindow(VPANEL panel, bool state);
    141     void SetTitle(VPANEL panel, const wchar_t *title);
    142     void SetAsToolBar(VPANEL panel, bool state);
    143     void CreatePopup(VPANEL panel, bool minimised, bool showTaskbarIcon = true, bool disabled = false, bool mouseInput = true, bool kbInput = true);
    144     void SwapBuffers(VPANEL panel);
    145     void Invalidate(VPANEL panel);
    146     void SetCursor(HCursor cursor);
    147     bool IsCursorVisible(void);
    148     void ApplyChanges(void);
    149     bool IsWithin(int x, int y);
    150     bool HasFocus(void);
    151     bool SupportsFeature(SurfaceFeature_e feature);
    152     void RestrictPaintToSinglePanel(VPANEL panel);
    153     void SetModalPanel(VPANEL panel);
    154     VPANEL GetModalPanel(void);
    155     void UnlockCursor(void);
    156     void LockCursor(void);
    157     void SetTranslateExtendedKeys(bool state);
    158     VPANEL GetTopmostPopup(void);
    159     void SetTopLevelFocus(VPANEL panel);
    160     HFont CreateFont(void);
    161     bool AddGlyphSetToFont(HFont font, const char *windowsFontName, int tall, int weight, int blur, int scanlines, int flags, int lowRange, int highRange);
    162     bool AddCustomFontFile(const char *fontFileName);
    163     int GetFontTall(HFont font);
    164     void GetCharABCwide(HFont font, int ch, int &a, int &b, int &c);
    165     int GetCharacterWidth(HFont font, int ch);
    166     void GetTextSize(HFont font, const wchar_t *text, int &wide, int &tall);
    167     VPANEL GetNotifyPanel(void);
    168     void SetNotifyIcon(VPANEL context, HTexture icon, VPANEL panelToReceiveMessages, const char *text);
    169     void PlaySound(const char *fileName);
    170     int GetPopupCount(void);
    171     VPANEL GetPopup(int index);
    172     bool ShouldPaintChildPanel(VPANEL childPanel);
    173     bool RecreateContext(VPANEL panel);
    174     void AddPanel(VPANEL panel);
    175     void ReleasePanel(VPANEL panel);
    176     void MovePopupToFront(VPANEL panel);
    177     void MovePopupToBack(VPANEL panel);
    178     void SolveTraverse(VPANEL panel, bool forceApplySchemeSettings = false);
    179     void PaintTraverse(VPANEL panel);
    180     void EnableMouseCapture(VPANEL panel, bool state);
    181     void GetWorkspaceBounds(int &x, int &y, int &wide, int &tall);
    182     void GetAbsoluteWindowBounds(int &x, int &y, int &wide, int &tall);
    183     void GetProportionalBase(int &width, int &height);
    184     void CalculateMouseVisible(void);
    185     bool NeedKBInput(void);
    186     bool HasCursorPosFunctions(void);
    187     void SurfaceGetCursorPos(int &x, int &y);
    188     void SurfaceSetCursorPos(int x, int y);
    189     void DrawTexturedPolygon(int *p, int n);
    190     int GetFontAscent(HFont font, wchar_t wch);
    191     void SetAllowHTMLJavaScript(bool state);
    192 };
    193 
    194 void CSurface::Shutdown(void)
    195 {
    196     return g_pfnCSurface_Shutdown(this, 0);
    197 }
    198 
    199 void CSurface::RunFrame(void)
    200 {
    201     return g_pfnCSurface_RunFrame(this, 0);
    202 }
    203 
    204 VPANEL CSurface::GetEmbeddedPanel(void)
    205 {
    206     return g_pfnCSurface_GetEmbeddedPanel(this, 0);
    207 }
    208 
    209 void CSurface::SetEmbeddedPanel(VPANEL pPanel)
    210 {
    211     return g_pfnCSurface_SetEmbeddedPanel(this, 0, pPanel);
    212 }
    213 
    214 void CSurface::PushMakeCurrent(VPANEL panel, bool useInsets)
    215 {
    216     return g_pfnCSurface_PushMakeCurrent(this, 0, panel, useInsets);
    217 }
    218 
    219 void CSurface::PopMakeCurrent(VPANEL panel)
    220 {
    221     return g_pfnCSurface_PopMakeCurrent(this, 0, panel);
    222 }
    223 
    224 void CSurface::DrawSetColor(int r, int g, int b, int a)
    225 {
    226     return g_pfnCSurface_DrawSetColor(this, 0, r, g, b, a);
    227 }
    228 
    229 void CSurface::DrawSetColor(Color col)
    230 {
    231     return g_pfnCSurface_DrawSetColor2(this, 0, col);
    232 }
    233 
    234 void CSurface::DrawFilledRect(int x0, int y0, int x1, int y1)
    235 {
    236     return g_pfnCSurface_DrawFilledRect(this, 0, x0, y0, x1, y1);
    237 }
    238 
    239 void CSurface::DrawOutlinedRect(int x0, int y0, int x1, int y1)
    240 {
    241     return g_pfnCSurface_DrawOutlinedRect(this, 0, x0, y0, x1, y1);
    242 }
    243 
    244 void CSurface::DrawLine(int x0, int y0, int x1, int y1)
    245 {
    246     return g_pfnCSurface_DrawLine(this, 0, x0, y0, x1, y1);
    247 }
    248 
    249 void CSurface::DrawPolyLine(int *px, int *py, int numPoints)
    250 {
    251     return g_pfnCSurface_DrawPolyLine(this, 0, px, py, numPoints);
    252 }
    253 
    254 void CSurface::DrawSetTextFont(HFont font)
    255 {
    256     return g_pfnCSurface_DrawSetTextFont(this, 0, font);
    257 }
    258 
    259 void CSurface::DrawSetTextColor(int r, int g, int b, int a)
    260 {
    261     return g_pfnCSurface_DrawSetTextColor(this, 0, r, g, b, a);
    262 }
    263 
    264 void CSurface::DrawSetTextColor(Color col)
    265 {
    266     return g_pfnCSurface_DrawSetTextColor2(this, 0, col);
    267 }
    268 
    269 void CSurface::DrawSetTextPos(int x, int y)
    270 {
    271     return g_pfnCSurface_DrawSetTextPos(this, 0, x, y);
    272 }
    273 
    274 void CSurface::DrawGetTextPos(int &x, int &y)
    275 {
    276     return g_pfnCSurface_DrawGetTextPos(this, 0, x, y);
    277 }
    278 
    279 void CSurface::DrawPrintText(const wchar_t *text, int textLen)
    280 {
    281     return g_pfnCSurface_DrawPrintText(this, 0, text, textLen);
    282 }
    283 
    284 void CSurface::DrawUnicodeChar(wchar_t wch)
    285 {
    286     return g_pfnCSurface_DrawUnicodeChar(this, 0, wch);
    287 }
    288 
    289 void CSurface::DrawUnicodeCharAdd(wchar_t wch)
    290 {
    291     return g_pfnCSurface_DrawUnicodeCharAdd(this, 0, wch);
    292 }
    293 
    294 void CSurface::DrawFlushText(void)
    295 {
    296     return g_pfnCSurface_DrawFlushText(this, 0);
    297 }
    298 
    299 IHTML* CSurface::CreateHTMLWindow(IHTMLEvents *events, VPANEL context)
    300 {
    301     return g_pfnCSurface_CreateHTMLWindow(this, 0, events, context);
    302 }
    303 
    304 void CSurface::PaintHTMLWindow(IHTML *htmlwin)
    305 {
    306     return g_pfnCSurface_PaintHTMLWindow(this, 0, htmlwin);
    307 }
    308 
    309 void CSurface::DeleteHTMLWindow(IHTML *htmlwin)
    310 {
    311     return g_pfnCSurface_DeleteHTMLWindow(this, 0, htmlwin);
    312 }
    313 
    314 void CSurface::DrawSetTextureFile(int id, const char *filename, int hardwareFilter, bool forceReload)
    315 {
    316     return g_pfnCSurface_DrawSetTextureFile(this, 0, id, filename, hardwareFilter, forceReload);
    317 }
    318 
    319 void CSurface::DrawSetTextureRGBA(int id, const unsigned char *rgba, int wide, int tall, int hardwareFilter, bool forceReload)
    320 {
    321     return g_pfnCSurface_DrawSetTextureRGBA(this, 0, id, rgba, wide, tall, hardwareFilter, forceReload);
    322 }
    323 
    324 void CSurface::DrawSetTexture(int id)
    325 {
    326     return g_pfnCSurface_DrawSetTexture(this, 0, id);
    327 }
    328 
    329 void CSurface::DrawGetTextureSize(int id, int &wide, int &tall)
    330 {
    331     return g_pfnCSurface_DrawGetTextureSize(this, 0, id, wide, tall);
    332 }
    333 
    334 void CSurface::DrawTexturedRect(int x0, int y0, int x1, int y1)
    335 {
    336     return g_pfnCSurface_DrawTexturedRect(this, 0, x0, y0, x1, y1);
    337 }
    338 
    339 bool CSurface::IsTextureIDValid(int id)
    340 {
    341     return g_pfnCSurface_IsTextureIDValid(this, 0, id);
    342 }
    343 
    344 int CSurface::CreateNewTextureID(bool procedural)
    345 {
    346     return g_pfnCSurface_CreateNewTextureID(this, 0, procedural);
    347 }
    348 
    349 void CSurface::GetScreenSize(int &wide, int &tall)
    350 {
    351     return g_pfnCSurface_GetScreenSize(this, 0, wide, tall);
    352 }
    353 
    354 void CSurface::SetAsTopMost(VPANEL panel, bool state)
    355 {
    356     return g_pfnCSurface_SetAsTopMost(this, 0, panel, state);
    357 }
    358 
    359 void CSurface::BringToFront(VPANEL panel)
    360 {
    361     return g_pfnCSurface_BringToFront(this, 0, panel);
    362 }
    363 
    364 void CSurface::SetForegroundWindow(VPANEL panel)
    365 {
    366     return g_pfnCSurface_SetForegroundWindow(this, 0, panel);
    367 }
    368 
    369 void CSurface::SetPanelVisible(VPANEL panel, bool state)
    370 {
    371     return g_pfnCSurface_SetPanelVisible(this, 0, panel, state);
    372 }
    373 
    374 void CSurface::SetMinimized(VPANEL panel, bool state)
    375 {
    376     return g_pfnCSurface_SetMinimized(this, 0, panel, state);
    377 }
    378 
    379 bool CSurface::IsMinimized(VPANEL panel)
    380 {
    381     return g_pfnCSurface_IsMinimized(this, 0, panel);
    382 }
    383 
    384 void CSurface::FlashWindow(VPANEL panel, bool state)
    385 {
    386     return g_pfnCSurface_FlashWindow(this, 0, panel, state);
    387 }
    388 
    389 void CSurface::SetTitle(VPANEL panel, const wchar_t *title)
    390 {
    391     return g_pfnCSurface_SetTitle(this, 0, panel, title);
    392 }
    393 
    394 void CSurface::SetAsToolBar(VPANEL panel, bool state)
    395 {
    396     return g_pfnCSurface_SetAsToolBar(this, 0, panel, state);
    397 }
    398 
    399 void CSurface::CreatePopup(VPANEL panel, bool minimised, bool showTaskbarIcon, bool disabled, bool mouseInput, bool kbInput)
    400 {
    401     return g_pfnCSurface_CreatePopup(this, 0, panel, minimised, showTaskbarIcon, disabled, mouseInput, kbInput);
    402 }
    403 
    404 void CSurface::SwapBuffers(VPANEL panel)
    405 {
    406     return g_pfnCSurface_SwapBuffers(this, 0, panel);
    407 }
    408 
    409 void CSurface::Invalidate(VPANEL panel)
    410 {
    411     return g_pfnCSurface_Invalidate(this, 0, panel);
    412 }
    413 
    414 void CSurface::SetCursor(HCursor cursor)
    415 {
    416     return g_pfnCSurface_SetCursor(this, 0, cursor);
    417 }
    418 
    419 bool CSurface::IsCursorVisible(void)
    420 {
    421     return g_pfnCSurface_IsCursorVisible(this, 0);
    422 }
    423 
    424 void CSurface::ApplyChanges(void)
    425 {
    426     return g_pfnCSurface_ApplyChanges(this, 0);
    427 }
    428 
    429 bool CSurface::IsWithin(int x, int y)
    430 {
    431     return g_pfnCSurface_IsWithin(this, 0, x, y);
    432 }
    433 
    434 bool CSurface::HasFocus(void)
    435 {
    436     return g_pfnCSurface_HasFocus(this, 0);
    437 }
    438 
    439 bool CSurface::SupportsFeature(SurfaceFeature_e feature)
    440 {
    441     return g_pfnCSurface_SupportsFeature(this, 0, feature);
    442 }
    443 
    444 void CSurface::RestrictPaintToSinglePanel(VPANEL panel)
    445 {
    446     return g_pfnCSurface_RestrictPaintToSinglePanel(this, 0, panel);
    447 }
    448 
    449 void CSurface::SetModalPanel(VPANEL panel)
    450 {
    451     return g_pfnCSurface_SetModalPanel(this, 0, panel);
    452 }
    453 
    454 VPANEL CSurface::GetModalPanel(void)
    455 {
    456     return g_pfnCSurface_GetModalPanel(this, 0);
    457 }
    458 
    459 void CSurface::UnlockCursor(void)
    460 {
    461     return g_pfnCSurface_UnlockCursor(this, 0);
    462 }
    463 
    464 void CSurface::LockCursor(void)
    465 {
    466     return g_pfnCSurface_LockCursor(this, 0);
    467 }
    468 
    469 void CSurface::SetTranslateExtendedKeys(bool state)
    470 {
    471     return g_pfnCSurface_SetTranslateExtendedKeys(this, 0, state);
    472 }
    473 
    474 VPANEL CSurface::GetTopmostPopup(void)
    475 {
    476     return g_pfnCSurface_GetTopmostPopup(this, 0);
    477 }
    478 
    479 void CSurface::SetTopLevelFocus(VPANEL panel)
    480 {
    481     return g_pfnCSurface_SetTopLevelFocus(this, 0, panel);
    482 }
    483 
    484 HFont CSurface::CreateFont(void)
    485 {
    486     return g_pfnCSurface_CreateFont(this, 0);
    487 }
    488 
    489 bool CSurface::AddGlyphSetToFont(HFont font, const char *windowsFontName, int tall, int weight, int blur, int scanlines, int flags, int lowRange, int highRange)
    490 {
    491     return g_pfnCSurface_AddGlyphSetToFont(this, 0, font, windowsFontName, tall, weight, blur, scanlines, flags, lowRange, highRange);
    492 }
    493 
    494 bool CSurface::AddCustomFontFile(const char *fontFileName)
    495 {
    496     return g_pfnCSurface_AddCustomFontFile(this, 0, fontFileName);
    497 }
    498 
    499 int CSurface::GetFontTall(HFont font)
    500 {
    501     return g_pfnCSurface_GetFontTall(this, 0, font);
    502 }
    503 
    504 void CSurface::GetCharABCwide(HFont font, int ch, int &a, int &b, int &c)
    505 {
    506     return g_pfnCSurface_GetCharABCwide(this, 0, font, ch, a, b, c);
    507 }
    508 
    509 int CSurface::GetCharacterWidth(HFont font, int ch)
    510 {
    511     return g_pfnCSurface_GetCharacterWidth(this, 0, font, ch);
    512 }
    513 
    514 void CSurface::GetTextSize(HFont font, const wchar_t *text, int &wide, int &tall)
    515 {
    516     return g_pfnCSurface_GetTextSize(this, 0, font, text, wide, tall);
    517 }
    518 
    519 VPANEL CSurface::GetNotifyPanel(void)
    520 {
    521     return g_pfnCSurface_GetNotifyPanel(this, 0);
    522 }
    523 
    524 void CSurface::SetNotifyIcon(VPANEL context, HTexture icon, VPANEL panelToReceiveMessages, const char *text)
    525 {
    526     return g_pfnCSurface_SetNotifyIcon(this, 0, context, icon, panelToReceiveMessages, text);
    527 }
    528 
    529 void CSurface::PlaySound(const char *fileName)
    530 {
    531     return g_pfnCSurface_PlaySound(this, 0, fileName);
    532 }
    533 
    534 int CSurface::GetPopupCount(void)
    535 {
    536     return g_pfnCSurface_GetPopupCount(this, 0);
    537 }
    538 
    539 VPANEL CSurface::GetPopup(int index)
    540 {
    541     return g_pfnCSurface_GetPopup(this, 0, index);
    542 }
    543 
    544 bool CSurface::ShouldPaintChildPanel(VPANEL childPanel)
    545 {
    546     return g_pfnCSurface_ShouldPaintChildPanel(this, 0, childPanel);
    547 }
    548 
    549 bool CSurface::RecreateContext(VPANEL panel)
    550 {
    551     return g_pfnCSurface_RecreateContext(this, 0, panel);
    552 }
    553 
    554 void CSurface::AddPanel(VPANEL panel)
    555 {
    556     return g_pfnCSurface_AddPanel(this, 0, panel);
    557 }
    558 
    559 void CSurface::ReleasePanel(VPANEL panel)
    560 {
    561     return g_pfnCSurface_ReleasePanel(this, 0, panel);
    562 }
    563 
    564 void CSurface::MovePopupToFront(VPANEL panel)
    565 {
    566     return g_pfnCSurface_MovePopupToFront(this, 0, panel);
    567 }
    568 
    569 void CSurface::MovePopupToBack(VPANEL panel)
    570 {
    571     return g_pfnCSurface_MovePopupToBack(this, 0, panel);
    572 }
    573 
    574 void CSurface::SolveTraverse(VPANEL panel, bool forceApplySchemeSettings)
    575 {
    576     return g_pfnCSurface_SolveTraverse(this, 0, panel, forceApplySchemeSettings);
    577 }
    578 
    579 void CSurface::PaintTraverse(VPANEL panel)
    580 {
    581     return g_pfnCSurface_PaintTraverse(this, 0, panel);
    582 }
    583 
    584 void CSurface::EnableMouseCapture(VPANEL panel, bool state)
    585 {
    586     return g_pfnCSurface_EnableMouseCapture(this, 0, panel, state);
    587 }
    588 
    589 void CSurface::GetWorkspaceBounds(int &x, int &y, int &wide, int &tall)
    590 {
    591     return g_pfnCSurface_GetWorkspaceBounds(this, 0, x, y, wide, tall);
    592 }
    593 
    594 void CSurface::GetAbsoluteWindowBounds(int &x, int &y, int &wide, int &tall)
    595 {
    596     return g_pfnCSurface_GetAbsoluteWindowBounds(this, 0, x, y, wide, tall);
    597 }
    598 
    599 void CSurface::GetProportionalBase(int &width, int &height)
    600 {
    601     return g_pfnCSurface_GetProportionalBase(this, 0, width, height);
    602 }
    603 
    604 void CSurface::CalculateMouseVisible(void)
    605 {
    606     return g_pfnCSurface_CalculateMouseVisible(this, 0);
    607 }
    608 
    609 bool CSurface::NeedKBInput(void)
    610 {
    611     return g_pfnCSurface_NeedKBInput(this, 0);
    612 }
    613 
    614 bool CSurface::HasCursorPosFunctions(void)
    615 {
    616     return g_pfnCSurface_HasCursorPosFunctions(this, 0);
    617 }
    618 
    619 void CSurface::SurfaceGetCursorPos(int &x, int &y)
    620 {
    621     return g_pfnCSurface_SurfaceGetCursorPos(this, 0, x, y);
    622 }
    623 
    624 void CSurface::SurfaceSetCursorPos(int x, int y)
    625 {
    626     return g_pfnCSurface_SurfaceSetCursorPos(this, 0, x, y);
    627 }
    628 
    629 void CSurface::DrawTexturedPolygon(int *p, int n)
    630 {
    631     return g_pfnCSurface_DrawTexturedPolygon(this, 0, p, n);
    632 }
    633 
    634 int CSurface::GetFontAscent(HFont font, wchar_t wch)
    635 {
    636     return g_pfnCSurface_GetFontAscent(this, 0, font, wch);
    637 }
    638 
    639 void CSurface::SetAllowHTMLJavaScript(bool state)
    640 {
    641     return g_pfnCSurface_SetAllowHTMLJavaScript(this, 0, state);
    642 }
    643 
    644 void Surface_InstallHook(void)
    645 {
    646     CreateInterfaceFn EngineCreateInterface = g_pMetaHookAPI->GetEngineFactory();
    647     g_pSurface = (ISurface *)EngineCreateInterface(VGUI_SURFACE_INTERFACE_VERSION, 0);
    648 
    649     CSurface Surface;
    650     DWORD *pVFTable = *(DWORD **)&Surface;
    651 
    652     g_pMetaHookAPI->VFTHook(g_pSurface, 0,  1, (void *)pVFTable[ 1], (void *&)g_pfnCSurface_Shutdown);
    653     g_pMetaHookAPI->VFTHook(g_pSurface, 0,  2, (void *)pVFTable[ 2], (void *&)g_pfnCSurface_RunFrame);
    654     g_pMetaHookAPI->VFTHook(g_pSurface, 0,  3, (void *)pVFTable[ 3], (void *&)g_pfnCSurface_GetEmbeddedPanel);
    655     g_pMetaHookAPI->VFTHook(g_pSurface, 0,  4, (void *)pVFTable[ 4], (void *&)g_pfnCSurface_SetEmbeddedPanel);
    656     g_pMetaHookAPI->VFTHook(g_pSurface, 0,  5, (void *)pVFTable[ 5], (void *&)g_pfnCSurface_PushMakeCurrent);
    657     g_pMetaHookAPI->VFTHook(g_pSurface, 0,  6, (void *)pVFTable[ 6], (void *&)g_pfnCSurface_PopMakeCurrent);
    658     g_pMetaHookAPI->VFTHook(g_pSurface, 0,  7, (void *)pVFTable[ 7], (void *&)g_pfnCSurface_DrawSetColor2);
    659     g_pMetaHookAPI->VFTHook(g_pSurface, 0,  8, (void *)pVFTable[ 8], (void *&)g_pfnCSurface_DrawSetColor);
    660     g_pMetaHookAPI->VFTHook(g_pSurface, 0,  9, (void *)pVFTable[ 9], (void *&)g_pfnCSurface_DrawFilledRect);
    661     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 10, (void *)pVFTable[10], (void *&)g_pfnCSurface_DrawOutlinedRect);
    662     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 11, (void *)pVFTable[11], (void *&)g_pfnCSurface_DrawLine);
    663     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 12, (void *)pVFTable[12], (void *&)g_pfnCSurface_DrawPolyLine);
    664     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 13, (void *)pVFTable[13], (void *&)g_pfnCSurface_DrawSetTextFont);
    665     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 14, (void *)pVFTable[14], (void *&)g_pfnCSurface_DrawSetTextColor2);
    666     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 15, (void *)pVFTable[15], (void *&)g_pfnCSurface_DrawSetTextColor);
    667     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 16, (void *)pVFTable[16], (void *&)g_pfnCSurface_DrawSetTextPos);
    668     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 17, (void *)pVFTable[17], (void *&)g_pfnCSurface_DrawGetTextPos);
    669     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 18, (void *)pVFTable[18], (void *&)g_pfnCSurface_DrawPrintText);
    670     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 19, (void *)pVFTable[19], (void *&)g_pfnCSurface_DrawUnicodeChar);
    671     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 20, (void *)pVFTable[20], (void *&)g_pfnCSurface_DrawUnicodeCharAdd);
    672     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 21, (void *)pVFTable[21], (void *&)g_pfnCSurface_DrawFlushText);
    673     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 22, (void *)pVFTable[22], (void *&)g_pfnCSurface_CreateHTMLWindow);
    674     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 23, (void *)pVFTable[23], (void *&)g_pfnCSurface_PaintHTMLWindow);
    675     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 24, (void *)pVFTable[24], (void *&)g_pfnCSurface_DeleteHTMLWindow);
    676     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 25, (void *)pVFTable[25], (void *&)g_pfnCSurface_DrawSetTextureFile);
    677     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 26, (void *)pVFTable[26], (void *&)g_pfnCSurface_DrawSetTextureRGBA);
    678     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 27, (void *)pVFTable[27], (void *&)g_pfnCSurface_DrawSetTexture);
    679     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 28, (void *)pVFTable[28], (void *&)g_pfnCSurface_DrawGetTextureSize);
    680     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 29, (void *)pVFTable[29], (void *&)g_pfnCSurface_DrawTexturedRect);
    681     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 30, (void *)pVFTable[30], (void *&)g_pfnCSurface_IsTextureIDValid);
    682     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 31, (void *)pVFTable[31], (void *&)g_pfnCSurface_CreateNewTextureID);
    683     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 32, (void *)pVFTable[32], (void *&)g_pfnCSurface_GetScreenSize);
    684     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 33, (void *)pVFTable[33], (void *&)g_pfnCSurface_SetAsTopMost);
    685     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 34, (void *)pVFTable[34], (void *&)g_pfnCSurface_BringToFront);
    686     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 35, (void *)pVFTable[35], (void *&)g_pfnCSurface_SetForegroundWindow);
    687     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 36, (void *)pVFTable[36], (void *&)g_pfnCSurface_SetPanelVisible);
    688     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 37, (void *)pVFTable[37], (void *&)g_pfnCSurface_SetMinimized);
    689     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 38, (void *)pVFTable[38], (void *&)g_pfnCSurface_IsMinimized);
    690     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 39, (void *)pVFTable[39], (void *&)g_pfnCSurface_FlashWindow);
    691     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 40, (void *)pVFTable[40], (void *&)g_pfnCSurface_SetTitle);
    692     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 41, (void *)pVFTable[41], (void *&)g_pfnCSurface_SetAsToolBar);
    693     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 42, (void *)pVFTable[42], (void *&)g_pfnCSurface_CreatePopup);
    694     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 43, (void *)pVFTable[43], (void *&)g_pfnCSurface_SwapBuffers);
    695     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 44, (void *)pVFTable[44], (void *&)g_pfnCSurface_Invalidate);
    696     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 45, (void *)pVFTable[45], (void *&)g_pfnCSurface_SetCursor);
    697     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 46, (void *)pVFTable[46], (void *&)g_pfnCSurface_IsCursorVisible);
    698     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 47, (void *)pVFTable[47], (void *&)g_pfnCSurface_ApplyChanges);
    699     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 48, (void *)pVFTable[48], (void *&)g_pfnCSurface_IsWithin);
    700     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 49, (void *)pVFTable[49], (void *&)g_pfnCSurface_HasFocus);
    701     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 50, (void *)pVFTable[50], (void *&)g_pfnCSurface_SupportsFeature);
    702     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 51, (void *)pVFTable[51], (void *&)g_pfnCSurface_RestrictPaintToSinglePanel);
    703     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 52, (void *)pVFTable[52], (void *&)g_pfnCSurface_SetModalPanel);
    704     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 53, (void *)pVFTable[53], (void *&)g_pfnCSurface_GetModalPanel);
    705     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 54, (void *)pVFTable[54], (void *&)g_pfnCSurface_UnlockCursor);
    706     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 55, (void *)pVFTable[55], (void *&)g_pfnCSurface_LockCursor);
    707     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 56, (void *)pVFTable[56], (void *&)g_pfnCSurface_SetTranslateExtendedKeys);
    708     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 57, (void *)pVFTable[57], (void *&)g_pfnCSurface_GetTopmostPopup);
    709     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 58, (void *)pVFTable[58], (void *&)g_pfnCSurface_SetTopLevelFocus);
    710     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 59, (void *)pVFTable[59], (void *&)g_pfnCSurface_CreateFont);
    711     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 60, (void *)pVFTable[60], (void *&)g_pfnCSurface_AddGlyphSetToFont);
    712     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 61, (void *)pVFTable[61], (void *&)g_pfnCSurface_AddCustomFontFile);
    713     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 62, (void *)pVFTable[62], (void *&)g_pfnCSurface_GetFontTall);
    714     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 63, (void *)pVFTable[63], (void *&)g_pfnCSurface_GetCharABCwide);
    715     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 64, (void *)pVFTable[64], (void *&)g_pfnCSurface_GetCharacterWidth);
    716     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 65, (void *)pVFTable[65], (void *&)g_pfnCSurface_GetTextSize);
    717     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 66, (void *)pVFTable[66], (void *&)g_pfnCSurface_GetNotifyPanel);
    718     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 67, (void *)pVFTable[67], (void *&)g_pfnCSurface_SetNotifyIcon);
    719     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 68, (void *)pVFTable[68], (void *&)g_pfnCSurface_PlaySound);
    720     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 69, (void *)pVFTable[69], (void *&)g_pfnCSurface_GetPopupCount);
    721     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 70, (void *)pVFTable[70], (void *&)g_pfnCSurface_GetPopup);
    722     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 71, (void *)pVFTable[71], (void *&)g_pfnCSurface_ShouldPaintChildPanel);
    723     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 72, (void *)pVFTable[72], (void *&)g_pfnCSurface_RecreateContext);
    724     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 73, (void *)pVFTable[73], (void *&)g_pfnCSurface_AddPanel);
    725     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 74, (void *)pVFTable[74], (void *&)g_pfnCSurface_ReleasePanel);
    726     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 75, (void *)pVFTable[75], (void *&)g_pfnCSurface_MovePopupToFront);
    727     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 76, (void *)pVFTable[76], (void *&)g_pfnCSurface_MovePopupToBack);
    728     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 77, (void *)pVFTable[77], (void *&)g_pfnCSurface_SolveTraverse);
    729     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 78, (void *)pVFTable[78], (void *&)g_pfnCSurface_PaintTraverse);
    730     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 79, (void *)pVFTable[79], (void *&)g_pfnCSurface_EnableMouseCapture);
    731     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 80, (void *)pVFTable[80], (void *&)g_pfnCSurface_GetWorkspaceBounds);
    732     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 81, (void *)pVFTable[81], (void *&)g_pfnCSurface_GetAbsoluteWindowBounds);
    733     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 82, (void *)pVFTable[82], (void *&)g_pfnCSurface_GetProportionalBase);
    734     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 83, (void *)pVFTable[83], (void *&)g_pfnCSurface_CalculateMouseVisible);
    735     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 84, (void *)pVFTable[84], (void *&)g_pfnCSurface_NeedKBInput);
    736     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 85, (void *)pVFTable[85], (void *&)g_pfnCSurface_HasCursorPosFunctions);
    737     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 86, (void *)pVFTable[86], (void *&)g_pfnCSurface_SurfaceGetCursorPos);
    738     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 87, (void *)pVFTable[87], (void *&)g_pfnCSurface_SurfaceSetCursorPos);
    739     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 88, (void *)pVFTable[88], (void *&)g_pfnCSurface_DrawTexturedPolygon);
    740     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 89, (void *)pVFTable[89], (void *&)g_pfnCSurface_GetFontAscent);
    741     g_pMetaHookAPI->VFTHook(g_pSurface, 0, 90, (void *)pVFTable[90], (void *&)g_pfnCSurface_SetAllowHTMLJavaScript);
    742 }
  • 相关阅读:
    ZOJ 1060 Count the Color
    POJ 3321 Apple Tree
    数字三角形模型
    静态维护区间加等差数列的求和问题
    Codeforces Round #622 (Div. 2)-题解
    算法竞赛进阶指南0x00-算法基础
    Codeforces Round #628 (Div. 2)
    Codeforces Round #625 (Div. 2, based on Technocup 2020 Final Round)
    Codeforces Round #621 (Div. 1 + Div. 2)
    Codeforces Round #620 (Div. 2) 题解
  • 原文地址:https://www.cnblogs.com/crsky/p/4741763.html
Copyright © 2020-2023  润新知