Remove outdated win32 #defines, ensure HMODULE is avail

This commit is contained in:
doyle 2021-12-19 16:37:17 +11:00
parent 15568a7919
commit 2a433e0075

53
dqn.h
View File

@ -35,14 +35,6 @@
// prototypes and definitions in this file. Useful for stopping redefinition // prototypes and definitions in this file. Useful for stopping redefinition
// of symbols if another library includes "Windows.h" // of symbols if another library includes "Windows.h"
// //
// #define DQN_NO_WIN32_SHLWAPI
// See DQN_NO_WIN32_MINIMAL_HEADER. Useful if another library includes
// "shlwapi.h"
//
// #define DQN_NO_WIN32_SHELL_OBJ
// See DQN_NO_WIN32_MINIMAL_HEADER. Useful if another library includes
// "Shlobj.h"
//
// #define DQN_STATIC_API // #define DQN_STATIC_API
// Apply static to all function definitions and disable external linkage to // Apply static to all function definitions and disable external linkage to
// other translation units. // other translation units.
@ -351,20 +343,16 @@ static_assert(sizeof(Dqn_f64) == 8, "Sanity check f64 is 8 bytes
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
#if defined(DQN_OS_WIN32) #if defined(DQN_OS_WIN32)
#if defined(DQN_NO_WIN32_MINIMAL_HEADER) #if defined(DQN_NO_WIN32_MINIMAL_HEADER)
#include <bcrypt.h> // Dqn_OSSecureRNGBytes -> BCryptOpenAlgorithmProvider ... etc
#if defined(DQN_WITH_WIN_NET)
#include <wininet.h> // Dqn_WinNet -> InternetConnect ... etc
#endif // DQN_WITH_WIN_NET
#else #else
// Taken from Windows.h // Taken from Windows.h
// typedef unsigned long DWORD; // typedef unsigned long DWORD;
// typedef unsigned short WORD; // typedef unsigned short WORD;
// typedef int BOOL; // typedef int BOOL;
// typedef void * HWND; // typedef void * HWND;
// typedef void * HMODULE;
// typedef void * HANDLE; // typedef void * HANDLE;
// typedef long NTSTATUS; // typedef long NTSTATUS;
typedef void * HMODULE;
typedef union { typedef union {
struct { struct {
unsigned long LowPart; unsigned long LowPart;
@ -3043,8 +3031,14 @@ DQN_API T *Dqn_ListAt(Dqn_List<T> *list, Dqn_isize index, Dqn_ListChunk<T> **at_
#if defined(DQN_OS_WIN32) #if defined(DQN_OS_WIN32)
#pragma comment(lib, "bcrypt") #pragma comment(lib, "bcrypt")
#pragma comment(lib, "wininet") #pragma comment(lib, "wininet")
#if !defined(DQN_NO_WIN32_MINIMAL_HEADER)
#if defined(DQN_NO_WIN32_MINIMAL_HEADER)
#include <bcrypt.h> // Dqn_OSSecureRNGBytes -> BCryptOpenAlgorithmProvider ... etc
#include <shellscalingapi.h> // Dqn_WinMakeProcessDPIAware -> SetProcessDpiAwareProc
#if defined(DQN_WITH_WIN_NET)
#include <wininet.h> // Dqn_WinNet -> InternetConnect ... etc
#endif // DQN_WITH_WIN_NET
#else
// Taken from Windows.h // Taken from Windows.h
// --------------------------------------------------------------------- // ---------------------------------------------------------------------
// Defines // Defines
@ -3114,9 +3108,15 @@ DQN_API T *Dqn_ListAt(Dqn_List<T> *list, Dqn_isize index, Dqn_ListChunk<T> **at_
#define INVALID_FILE_SIZE ((unsigned long)0xFFFFFFFF) #define INVALID_FILE_SIZE ((unsigned long)0xFFFFFFFF)
// --------------------------------------------------------------------- typedef enum PROCESS_DPI_AWARENESS
// Data Structures {
// --------------------------------------------------------------------- PROCESS_DPI_UNAWARE = 0,
PROCESS_SYSTEM_DPI_AWARE = 1,
PROCESS_PER_MONITOR_DPI_AWARE = 2
} PROCESS_DPI_AWARENESS;
#define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 ((void *)-4)
typedef union { typedef union {
struct { struct {
unsigned long LowPart; unsigned long LowPart;
@ -7021,19 +7021,6 @@ DQN_API Dqn_WinErrorMsg Dqn_WinLastError()
return result; return result;
} }
#if defined(DQN_NO_WIN32_MINIMAL_HEADER)
#include <shellscalingapi.h> // SetProcessDpiAwareProc
#else
typedef enum PROCESS_DPI_AWARENESS
{
PROCESS_DPI_UNAWARE = 0,
PROCESS_SYSTEM_DPI_AWARE = 1,
PROCESS_PER_MONITOR_DPI_AWARE = 2
} PROCESS_DPI_AWARENESS;
#define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 ((void *)-4)
#endif
DQN_API void Dqn_WinMakeProcessDPIAware() DQN_API void Dqn_WinMakeProcessDPIAware()
{ {
typedef bool SetProcessDpiAwareProc(void); typedef bool SetProcessDpiAwareProc(void);
@ -7045,15 +7032,15 @@ DQN_API void Dqn_WinMakeProcessDPIAware()
// GetProcAddress on the DPI function. If it's not there, we're on an old // GetProcAddress on the DPI function. If it's not there, we're on an old
// version of windows, so we can call an older version of the API. // version of windows, so we can call an older version of the API.
void *lib_handle = LoadLibraryA("user32.dll"); void *lib_handle = LoadLibraryA("user32.dll");
if (auto *set_process_dpi_awareness_context = DQN_CAST(SetProcessDpiAwarenessContextProc *)GetProcAddress(lib_handle, "SetProcessDpiAwarenessContext")) if (auto *set_process_dpi_awareness_context = DQN_CAST(SetProcessDpiAwarenessContextProc *)GetProcAddress(DQN_CAST(HMODULE)lib_handle, "SetProcessDpiAwarenessContext"))
{ {
set_process_dpi_awareness_context(DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2); set_process_dpi_awareness_context(DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2);
} }
else if (auto *set_process_dpi_awareness = DQN_CAST(SetProcessDpiAwarenessProc *)GetProcAddress(lib_handle, "SetProcessDpiAwareness")) else if (auto *set_process_dpi_awareness = DQN_CAST(SetProcessDpiAwarenessProc *)GetProcAddress(DQN_CAST(HMODULE)lib_handle, "SetProcessDpiAwareness"))
{ {
set_process_dpi_awareness(PROCESS_PER_MONITOR_DPI_AWARE); set_process_dpi_awareness(PROCESS_PER_MONITOR_DPI_AWARE);
} }
else if (auto *set_process_dpi_aware = DQN_CAST(SetProcessDpiAwareProc *)GetProcAddress(lib_handle, "SetProcessDpiAware")) else if (auto *set_process_dpi_aware = DQN_CAST(SetProcessDpiAwareProc *)GetProcAddress(DQN_CAST(HMODULE)lib_handle, "SetProcessDpiAware"))
{ {
set_process_dpi_aware(); set_process_dpi_aware();
} }