diff options
| author | trustable-code <krauter.simon@arcor.de> | 2019-11-25 18:46:38 +0100 |
|---|---|---|
| committer | trustable-code <krauter.simon@arcor.de> | 2019-11-25 18:46:38 +0100 |
| commit | 1345ae301276ececb98576bae79736cb3e5c4942 (patch) | |
| tree | 260623c5c703efefbc62c20d1ded374b63689a4f | |
| parent | e27e7739535586a859a50fd0d10a9740baa2019a (diff) | |
| download | NiGui-1345ae301276ececb98576bae79736cb3e5c4942.tar.gz NiGui-1345ae301276ececb98576bae79736cb3e5c4942.zip | |
Enable visual styles via manifest file instead of calling CreateActCtxA()
Fixes #75
| -rw-r--r-- | src/nigui/private/windows/manifest_x64.res | bin | 0 -> 644 bytes | |||
| -rw-r--r-- | src/nigui/private/windows/manifest_x86.res | bin | 0 -> 640 bytes | |||
| -rwxr-xr-x | src/nigui/private/windows/platform_impl.nim | 21 | ||||
| -rwxr-xr-x | src/nigui/private/windows/windows.nim | 10 |
4 files changed, 11 insertions, 20 deletions
diff --git a/src/nigui/private/windows/manifest_x64.res b/src/nigui/private/windows/manifest_x64.res Binary files differnew file mode 100644 index 0000000..f302b88 --- /dev/null +++ b/src/nigui/private/windows/manifest_x64.res diff --git a/src/nigui/private/windows/manifest_x86.res b/src/nigui/private/windows/manifest_x86.res Binary files differnew file mode 100644 index 0000000..96c6519 --- /dev/null +++ b/src/nigui/private/windows/manifest_x86.res diff --git a/src/nigui/private/windows/platform_impl.nim b/src/nigui/private/windows/platform_impl.nim index 1e184b4..28759ca 100755 --- a/src/nigui/private/windows/platform_impl.nim +++ b/src/nigui/private/windows/platform_impl.nim @@ -10,6 +10,12 @@ import windows import tables import dynlib +# Link resource file to enable visual styles (without this, controls have Windows 95 look): +when defined(cpu64): + {.link: currentSourcePath().parentDir() / "manifest_x64.res".} +else: + {.link: currentSourcePath().parentDir() / "manifest_x86.res".} + # ---------------------------------------------------------------------------------------- # Internal Things @@ -145,20 +151,6 @@ proc pCreateWindowExWithUserdata(lpClassName: string, dwStyle, dwExStyle: int32, # Set window proc: # discard pSetWindowLongPtr(result, GWLP_WNDPROC, pCommonWndProc) -proc pEnableVisualStyles() = - # Without this, controls have style of Windows 95 - const MaxLength = 500 - var dir = newString(MaxLength) - if GetSystemDirectoryA(dir[0].addr, MaxLength) == 0: pRaiseLastOSError() - var actCtx: ActCtx - actCtx.cbSize = ActCtx.sizeof.int32 - actCtx.dwFlags = ACTCTX_FLAG_RESOURCE_NAME_VALID or ACTCTX_FLAG_SET_PROCESS_DEFAULT or ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID - actCtx.lpSource = "shell32.dll" - actCtx.lpAssemblyDirectory = dir - actCtx.lpResourceName = cast[cstring](124) - var context = CreateActCtxA(actCtx) - if context == INVALID_HANDLE_VALUE: pRaiseLastOSError() - proc pRegisterWindowClass(className: string, wndProc: pointer, style: int32 = 0) = var class: WndClassEx class.cbSize = WndClassEx.sizeof.int32 @@ -399,7 +391,6 @@ proc init(app: App) = if pDefaultParentWindow != nil: raiseError("'app.init()' must not be called a second time.") pInitGdiplus() - pEnableVisualStyles() pRegisterWindowClass(pTopLevelWindowClass, pWindowWndProc) pRegisterWindowClass(pCustomControlWindowClass, pCustomControlWndProc, CS_HREDRAW or CS_VREDRAW) pRegisterWindowClass(pContainerWindowClass, pContainerWndProc) diff --git a/src/nigui/private/windows/windows.nim b/src/nigui/private/windows/windows.nim index d3a4d8c..cc0ad71 100755 --- a/src/nigui/private/windows/windows.nim +++ b/src/nigui/private/windows/windows.nim @@ -31,9 +31,9 @@ # ---------------------------------------------------------------------------------------- const - ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID* = 4 - ACTCTX_FLAG_RESOURCE_NAME_VALID* = 8 - ACTCTX_FLAG_SET_PROCESS_DEFAULT* = 16 + # ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID* = 4 + # ACTCTX_FLAG_RESOURCE_NAME_VALID* = 8 + # ACTCTX_FLAG_SET_PROCESS_DEFAULT* = 16 BIF_RETURNONLYFSDIRS* = 0x00000001 BIF_NEWDIALOGSTYLE* = 0x00000040 BN_CLICKED* = 0 @@ -385,8 +385,8 @@ proc hiWord*(param: pointer): int = proc LoadLibraryA*(lpFileName: cstring): pointer {.importc, libKernel32.} # proc GetModuleHandleA*(lpModuleName: cstring): pointer {.importc, libKernel32.} proc GetLastError*(): int {.importc, libKernel32.} -proc CreateActCtxA*(pActCtx: var ActCtx): pointer {.importc, libKernel32.} -proc GetSystemDirectoryA*(lpBuffer: pointer, uSize: int32): int32 {.importc, libKernel32.} +# proc CreateActCtxA*(pActCtx: var ActCtx): pointer {.importc, libKernel32.} +# proc GetSystemDirectoryA*(lpBuffer: pointer, uSize: int32): int32 {.importc, libKernel32.} proc MultiByteToWideChar*(CodePage, dwFlags: int32, lpMultiByteStr: cstring, cbMultiByte: int32, lpWideCharStr: cstring, cchWideChar: int32): int32 {.importc, libKernel32.} proc WideCharToMultiByte*(CodePage, dwFlags: int32, lpWideCharStr: cstring, cchWideChar: int32, lpMultiByteStr: cstring, cbMultiByte: int32, lpDefaultChar: cstring, lpUsedDefaultChar: pointer): int32 {.importc, libKernel32.} proc GlobalLock*(hMem: pointer): pointer {.importc, libKernel32.} |
