1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski #pragma once 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski #ifndef _WINDOWS_ 27*b1cdbd2cSJim Jagielski #include <windows.h> 28*b1cdbd2cSJim Jagielski #endif 29*b1cdbd2cSJim Jagielski 30*b1cdbd2cSJim Jagielski #ifdef __cplusplus 31*b1cdbd2cSJim Jagielski extern "C"{ 32*b1cdbd2cSJim Jagielski #endif 33*b1cdbd2cSJim Jagielski 34*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------ 35*b1cdbd2cSJim Jagielski // undefine the macros defined in the winuser.h file in order to avoid 36*b1cdbd2cSJim Jagielski // warnings because of multiple defines 37*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------ 38*b1cdbd2cSJim Jagielski 39*b1cdbd2cSJim Jagielski #ifdef SendMessageW 40*b1cdbd2cSJim Jagielski #undef SendMessageW 41*b1cdbd2cSJim Jagielski #endif 42*b1cdbd2cSJim Jagielski 43*b1cdbd2cSJim Jagielski #ifdef CreateWindowExW 44*b1cdbd2cSJim Jagielski #undef CreateWindowExW 45*b1cdbd2cSJim Jagielski #endif 46*b1cdbd2cSJim Jagielski 47*b1cdbd2cSJim Jagielski #ifdef RegisterClassExW 48*b1cdbd2cSJim Jagielski #undef RegisterClassExW 49*b1cdbd2cSJim Jagielski #endif 50*b1cdbd2cSJim Jagielski 51*b1cdbd2cSJim Jagielski #ifdef UnregisterClassW 52*b1cdbd2cSJim Jagielski #undef UnregisterClassW 53*b1cdbd2cSJim Jagielski #endif 54*b1cdbd2cSJim Jagielski 55*b1cdbd2cSJim Jagielski #ifdef RegisterClipboardFormatW 56*b1cdbd2cSJim Jagielski #undef RegisterClipboardFormatW 57*b1cdbd2cSJim Jagielski #endif 58*b1cdbd2cSJim Jagielski 59*b1cdbd2cSJim Jagielski #ifdef GetClipboardFormatNameW 60*b1cdbd2cSJim Jagielski #undef GetClipboardFormatNameW 61*b1cdbd2cSJim Jagielski #endif 62*b1cdbd2cSJim Jagielski 63*b1cdbd2cSJim Jagielski #ifdef SetWindowTextW 64*b1cdbd2cSJim Jagielski #undef SetWindowTextW 65*b1cdbd2cSJim Jagielski #endif 66*b1cdbd2cSJim Jagielski 67*b1cdbd2cSJim Jagielski #ifdef GetWindowTextW 68*b1cdbd2cSJim Jagielski #undef GetWindowTextW 69*b1cdbd2cSJim Jagielski #endif 70*b1cdbd2cSJim Jagielski 71*b1cdbd2cSJim Jagielski #ifdef InsertMenuItemW 72*b1cdbd2cSJim Jagielski #undef InsertMenuItemW 73*b1cdbd2cSJim Jagielski #endif 74*b1cdbd2cSJim Jagielski 75*b1cdbd2cSJim Jagielski #ifndef DrawTextW 76*b1cdbd2cSJim Jagielski #undef DrawTextW 77*b1cdbd2cSJim Jagielski #endif 78*b1cdbd2cSJim Jagielski 79*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------ 80*b1cdbd2cSJim Jagielski // defines 81*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------ 82*b1cdbd2cSJim Jagielski 83*b1cdbd2cSJim Jagielski #define USER9X_API extern 84*b1cdbd2cSJim Jagielski 85*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------ 86*b1cdbd2cSJim Jagielski // declare function pointers to the appropriate user32 functions 87*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------ 88*b1cdbd2cSJim Jagielski 89*b1cdbd2cSJim Jagielski USER9X_API LRESULT ( WINAPI * lpfnSendMessageW) ( 90*b1cdbd2cSJim Jagielski HWND hWnd, // handle to the destination window 91*b1cdbd2cSJim Jagielski UINT Msg, // message 92*b1cdbd2cSJim Jagielski WPARAM wParam, // first message parameter 93*b1cdbd2cSJim Jagielski LPARAM lParam // second message parameter 94*b1cdbd2cSJim Jagielski ); 95*b1cdbd2cSJim Jagielski 96*b1cdbd2cSJim Jagielski USER9X_API HWND ( WINAPI * lpfnCreateWindowExW ) ( 97*b1cdbd2cSJim Jagielski DWORD dwExStyle, // extended window style 98*b1cdbd2cSJim Jagielski LPCWSTR lpClassName, // registered class name 99*b1cdbd2cSJim Jagielski LPCWSTR lpWindowName, // window name 100*b1cdbd2cSJim Jagielski DWORD dwStyle, // window style 101*b1cdbd2cSJim Jagielski int x, // horizontal position of window 102*b1cdbd2cSJim Jagielski int y, // vertical position of window 103*b1cdbd2cSJim Jagielski int nWidth, // window width 104*b1cdbd2cSJim Jagielski int nHeight, // window height 105*b1cdbd2cSJim Jagielski HWND hWndParent, // handle to parent or owner window 106*b1cdbd2cSJim Jagielski HMENU hMenu, // menu handle or child identifier 107*b1cdbd2cSJim Jagielski HINSTANCE hInstance, // handle to application instance 108*b1cdbd2cSJim Jagielski LPVOID lpParam // window-creation data 109*b1cdbd2cSJim Jagielski ); 110*b1cdbd2cSJim Jagielski 111*b1cdbd2cSJim Jagielski USER9X_API ATOM ( WINAPI * lpfnRegisterClassExW ) ( 112*b1cdbd2cSJim Jagielski CONST WNDCLASSEXW* lpwcx // class data 113*b1cdbd2cSJim Jagielski ); 114*b1cdbd2cSJim Jagielski 115*b1cdbd2cSJim Jagielski USER9X_API BOOL ( WINAPI * lpfnUnregisterClassW ) ( 116*b1cdbd2cSJim Jagielski LPCWSTR lpClassName, // class name 117*b1cdbd2cSJim Jagielski HINSTANCE hInstance // handle to application instance 118*b1cdbd2cSJim Jagielski ); 119*b1cdbd2cSJim Jagielski 120*b1cdbd2cSJim Jagielski USER9X_API UINT (WINAPI * lpfnRegisterClipboardFormatW) ( 121*b1cdbd2cSJim Jagielski LPCWSTR lpszFormat // name of new format 122*b1cdbd2cSJim Jagielski ); 123*b1cdbd2cSJim Jagielski 124*b1cdbd2cSJim Jagielski USER9X_API int ( WINAPI * lpfnGetClipboardFormatNameW ) ( 125*b1cdbd2cSJim Jagielski UINT format, // clipboard format to retrieve 126*b1cdbd2cSJim Jagielski LPWSTR lpszFormatName, // format name 127*b1cdbd2cSJim Jagielski int cchMaxCount // length of format name buffer 128*b1cdbd2cSJim Jagielski ); 129*b1cdbd2cSJim Jagielski 130*b1cdbd2cSJim Jagielski USER9X_API BOOL ( WINAPI * lpfnSetWindowTextW ) ( 131*b1cdbd2cSJim Jagielski HWND hWnd, 132*b1cdbd2cSJim Jagielski LPCWSTR lpString 133*b1cdbd2cSJim Jagielski ); 134*b1cdbd2cSJim Jagielski 135*b1cdbd2cSJim Jagielski USER9X_API int ( WINAPI * lpfnGetWindowTextW ) ( 136*b1cdbd2cSJim Jagielski HWND hWnd, // handle to the window or control 137*b1cdbd2cSJim Jagielski LPWSTR lpString, // text buffer 138*b1cdbd2cSJim Jagielski int nMaxCount // length of text buffer 139*b1cdbd2cSJim Jagielski ); 140*b1cdbd2cSJim Jagielski 141*b1cdbd2cSJim Jagielski USER9X_API BOOL ( WINAPI * lpfnInsertMenuItemW ) ( 142*b1cdbd2cSJim Jagielski HMENU hMenu, // handle to menu 143*b1cdbd2cSJim Jagielski UINT uItem, // identifier or position 144*b1cdbd2cSJim Jagielski BOOL fByPosition, // meaning of uItem 145*b1cdbd2cSJim Jagielski LPCMENUITEMINFOW lpmii // menu item information 146*b1cdbd2cSJim Jagielski ); 147*b1cdbd2cSJim Jagielski 148*b1cdbd2cSJim Jagielski USER9X_API int ( WINAPI * lpfnDrawTextW ) ( 149*b1cdbd2cSJim Jagielski HDC hDC, // handle to DC 150*b1cdbd2cSJim Jagielski LPCWSTR lpString, // text to draw 151*b1cdbd2cSJim Jagielski int nCount, // text length 152*b1cdbd2cSJim Jagielski LPRECT lpRect, // formatting dimensions 153*b1cdbd2cSJim Jagielski UINT uFormat // text-drawing options 154*b1cdbd2cSJim Jagielski ); 155*b1cdbd2cSJim Jagielski 156*b1cdbd2cSJim Jagielski USER9X_API BOOL ( WINAPI * lpfnDrawStateW ) ( 157*b1cdbd2cSJim Jagielski HDC hdc, // handle to device context 158*b1cdbd2cSJim Jagielski HBRUSH hbr, // handle to brush 159*b1cdbd2cSJim Jagielski DRAWSTATEPROC lpOutputFunc, // callback function 160*b1cdbd2cSJim Jagielski LPARAM lData, // image information 161*b1cdbd2cSJim Jagielski WPARAM wData, // more image information 162*b1cdbd2cSJim Jagielski int x, // horizontal location 163*b1cdbd2cSJim Jagielski int y, // vertical location 164*b1cdbd2cSJim Jagielski int cx, // image width 165*b1cdbd2cSJim Jagielski int cy, // image height 166*b1cdbd2cSJim Jagielski UINT fuFlags // image type and state 167*b1cdbd2cSJim Jagielski ); 168*b1cdbd2cSJim Jagielski 169*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------ 170*b1cdbd2cSJim Jagielski // redefine the above undefined macros so that the preprocessor replaces 171*b1cdbd2cSJim Jagielski // all occurrences of this macros with our function pointer 172*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------ 173*b1cdbd2cSJim Jagielski 174*b1cdbd2cSJim Jagielski #define SendMessageW lpfnSendMessageW 175*b1cdbd2cSJim Jagielski #define CreateWindowExW lpfnCreateWindowExW 176*b1cdbd2cSJim Jagielski #define RegisterClassExW lpfnRegisterClassExW 177*b1cdbd2cSJim Jagielski #define UnregisterClassW lpfnUnregisterClassW 178*b1cdbd2cSJim Jagielski #define RegisterClipboardFormatW lpfnRegisterClipboardFormatW 179*b1cdbd2cSJim Jagielski #define GetClipboardFormatNameW lpfnGetClipboardFormatNameW 180*b1cdbd2cSJim Jagielski #define SetWindowTextW lpfnSetWindowTextW 181*b1cdbd2cSJim Jagielski #define GetWindowTextW lpfnGetWindowTextW 182*b1cdbd2cSJim Jagielski #define InsertMenuItemW lpfnInsertMenuItemW 183*b1cdbd2cSJim Jagielski #define DrawTextW lpfnDrawTextW 184*b1cdbd2cSJim Jagielski #define DrawStateW lpfnDrawStateW 185*b1cdbd2cSJim Jagielski 186*b1cdbd2cSJim Jagielski #ifdef __cplusplus 187*b1cdbd2cSJim Jagielski } 188*b1cdbd2cSJim Jagielski #endif 189