Added a function to the Windows backend to keep track of text length. This will be important for sizing purposes.
This commit is contained in:
parent
b31ce95b33
commit
785d6ac4fd
|
@ -38,3 +38,24 @@ void moveWindow(HWND hwnd, int x, int y, int width, int height)
|
|||
if (MoveWindow(hwnd, x, y, width, height, TRUE) == 0)
|
||||
xpanic("error setting window/control rect", GetLastError());
|
||||
}
|
||||
|
||||
LONG controlTextLength(HWND hwnd, LPWSTR text)
|
||||
{
|
||||
HDC dc;
|
||||
HFONT prev;
|
||||
SIZE size;
|
||||
|
||||
dc = GetDC(hwnd);
|
||||
if (dc == NULL)
|
||||
xpanic("error getting DC of control for text length", GetLastError());
|
||||
prev = SelectObject(dc, controlFont);
|
||||
if (prev == NULL)
|
||||
xpanic("error setting control font to DC for text length", GetLastError());
|
||||
if (GetTextExtentPoint32W(dc, text, wcslen(text), &size) == 0)
|
||||
xpanic("error actually getting text length", GetLastError());
|
||||
if (SelectObject(dc, prev) != controlFont)
|
||||
xpanic("error restoring previous control font to DC for text length", GetLastError());
|
||||
if (ReleaseDC(hwnd, dc) == 0)
|
||||
xpanic("error releasing DC of control for text length", GetLastError());
|
||||
return size.cx;
|
||||
}
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
#include <commctrl.h>
|
||||
#include <stdint.h>
|
||||
#include <uxtheme.h>
|
||||
#include <string.h>
|
||||
#include <wchar.h>
|
||||
|
||||
/* global messages unique to everything */
|
||||
enum {
|
||||
|
@ -68,6 +70,7 @@ extern int baseX;
|
|||
extern int baseY;
|
||||
extern void calculateBaseUnits(HWND);
|
||||
extern void moveWindow(HWND, int, int, int, int);
|
||||
extern LONG controlTextLength(HWND, LPWSTR);
|
||||
|
||||
/* window_windows.c */
|
||||
extern DWORD makeWindowWindowClass(char **);
|
||||
|
|
Loading…
Reference in New Issue