mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 01:55:39 +00:00
- add GDI_OBJECT_TYPE_PFE
- use own version of GdiQueryTable() instead of relying on gdi32.dll, as vista seems not to support it anymore svn path=/trunk/; revision=31222
This commit is contained in:
parent
541c17ddaa
commit
12096d19c4
3 changed files with 15 additions and 8 deletions
|
@ -48,6 +48,7 @@ typedef PGDI_TABLE_ENTRY (CALLBACK * GDIQUERYPROC) (void);
|
||||||
#define GDI_OBJECT_TYPE_BITMAP 0x00050000
|
#define GDI_OBJECT_TYPE_BITMAP 0x00050000
|
||||||
#define GDI_OBJECT_TYPE_PALETTE 0x00080000
|
#define GDI_OBJECT_TYPE_PALETTE 0x00080000
|
||||||
#define GDI_OBJECT_TYPE_FONT 0x000a0000
|
#define GDI_OBJECT_TYPE_FONT 0x000a0000
|
||||||
|
#define GDI_OBJECT_TYPE_PFE 0x000c0000
|
||||||
#define GDI_OBJECT_TYPE_BRUSH 0x00100000
|
#define GDI_OBJECT_TYPE_BRUSH 0x00100000
|
||||||
#define GDI_OBJECT_TYPE_EMF 0x00210000
|
#define GDI_OBJECT_TYPE_EMF 0x00210000
|
||||||
#define GDI_OBJECT_TYPE_PEN 0x00300000
|
#define GDI_OBJECT_TYPE_PEN 0x00300000
|
||||||
|
|
|
@ -23,9 +23,17 @@
|
||||||
#include "gdihv.h"
|
#include "gdihv.h"
|
||||||
|
|
||||||
HINSTANCE g_hInstance;
|
HINSTANCE g_hInstance;
|
||||||
GDIQUERYPROC GdiQueryHandleTable;
|
|
||||||
PGDI_TABLE_ENTRY GdiHandleTable = 0;
|
PGDI_TABLE_ENTRY GdiHandleTable = 0;
|
||||||
|
|
||||||
|
static
|
||||||
|
PGDI_TABLE_ENTRY
|
||||||
|
MyGdiQueryTable()
|
||||||
|
{
|
||||||
|
PTEB pTeb = NtCurrentTeb();
|
||||||
|
PPEB pPeb = pTeb->ProcessEnvironmentBlock;
|
||||||
|
return pPeb->GdiSharedHandleTable;
|
||||||
|
}
|
||||||
|
|
||||||
int WINAPI WinMain (HINSTANCE hThisInstance,
|
int WINAPI WinMain (HINSTANCE hThisInstance,
|
||||||
HINSTANCE hPrevInstance,
|
HINSTANCE hPrevInstance,
|
||||||
LPSTR lpszArgument,
|
LPSTR lpszArgument,
|
||||||
|
@ -36,12 +44,7 @@ int WINAPI WinMain (HINSTANCE hThisInstance,
|
||||||
|
|
||||||
InitCommonControls();
|
InitCommonControls();
|
||||||
|
|
||||||
GdiQueryHandleTable = (GDIQUERYPROC)GetProcAddress(GetModuleHandle(L"GDI32.DLL"), "GdiQueryTable");
|
GdiHandleTable = MyGdiQueryTable();
|
||||||
if(!GdiQueryHandleTable)
|
|
||||||
{
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
GdiHandleTable = GdiQueryHandleTable();
|
|
||||||
|
|
||||||
DialogBoxParam(g_hInstance, MAKEINTRESOURCE(IDD_MAINWND), HWND_DESKTOP, MainWindow_WndProc, 0);
|
DialogBoxParam(g_hInstance, MAKEINTRESOURCE(IDD_MAINWND), HWND_DESKTOP, MainWindow_WndProc, 0);
|
||||||
|
|
||||||
|
|
|
@ -86,7 +86,7 @@ HandleList_Update(HWND hHandleListCtrl, HANDLE ProcessId)
|
||||||
((ProcessId == (HANDLE)1) && ((pEntry->Type & GDI_HANDLE_BASETYPE_MASK) == 0)) )
|
((ProcessId == (HANDLE)1) && ((pEntry->Type & GDI_HANDLE_BASETYPE_MASK) == 0)) )
|
||||||
{
|
{
|
||||||
if (ProcessId == (HANDLE)1 ||
|
if (ProcessId == (HANDLE)1 ||
|
||||||
ProcessId == (HANDLE)((ULONG)pEntry->ProcessId & 0xfffc))
|
((LONG)ProcessId & 0xfffc) == ((ULONG)pEntry->ProcessId & 0xfffc))
|
||||||
{
|
{
|
||||||
handle = GDI_HANDLE_CREATE(i, pEntry->Type);
|
handle = GDI_HANDLE_CREATE(i, pEntry->Type);
|
||||||
index = ListView_GetItemCount(hHandleListCtrl);
|
index = ListView_GetItemCount(hHandleListCtrl);
|
||||||
|
@ -178,6 +178,9 @@ GetTypeName(HANDLE handle)
|
||||||
case GDI_OBJECT_TYPE_DCE:
|
case GDI_OBJECT_TYPE_DCE:
|
||||||
strText = L"DCE";
|
strText = L"DCE";
|
||||||
break;
|
break;
|
||||||
|
case GDI_OBJECT_TYPE_PFE:
|
||||||
|
strText = L"PFE";
|
||||||
|
break;
|
||||||
case GDI_OBJECT_TYPE_DONTCARE:
|
case GDI_OBJECT_TYPE_DONTCARE:
|
||||||
strText = L"anything";
|
strText = L"anything";
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue