Fixed linker errors. Now for runtime errors.

This commit is contained in:
Pietro Gagliardi 2015-09-01 07:33:13 -04:00
parent 099d15b638
commit 993cb67ba4
5 changed files with 58 additions and 7 deletions

View File

@ -57,7 +57,7 @@ void uninitContainer(void)
logLastError("error unregistering container window class in uninitContainer()");
}
HWND makeContainer(void)
HWND newContainer(void)
{
return uiWindowsEnsureCreateControlHWND(WS_EX_CONTROLPARENT,
containerClass, L"",

View File

@ -1,6 +1,24 @@
// 16 august 2015
#include "uipriv_windows.h"
HWND uiWindowsEnsureCreateControlHWND(DWORD dwExStyle, LPCWSTR lpClassName, LPCWSTR lpWindowName, DWORD dwStyle, HINSTANCE hInstance, LPVOID lpParam, BOOL useStandardControlFont)
{
HWND hwnd;
hwnd = CreateWindowExW(dwExStyle,
lpClassName, lpWindowName,
dwStyle | WS_CHILD | WS_VISIBLE,
0, 0,
// use a nonzero initial size just in case some control breaks with a zero initial size
100, 100,
utilWindow, NULL, hInstance, lpParam);
if (hwnd == NULL)
logLastError("error creating window in uiWindowsUtilCreateControlHWND()");
if (useStandardControlFont)
SendMessageW(hwnd, WM_SETFONT, (WPARAM) hMessageFont, (LPARAM) TRUE);
return hwnd;
}
static uintmax_t type_uiWindowsControl = 0;
uintmax_t uiWindowsControlType(void)
@ -35,3 +53,24 @@ void uiWindowsFinishControl(uiControl *c)
c->CommitShow = defaultCommitShow;
c->CommitHide = defaultCommitHide;
}
char *uiWindowsUtilText(HWND hwnd)
{
WCHAR *wtext;
char *text;
wtext = windowText(hwnd);
text = toUTF8(wtext);
uiFree(wtext);
return text;
}
void uiWindowsUtilSetText(HWND hwnd, const char *text)
{
WCHAR *wtext;
wtext = toUTF16(text);
if (SetWindowTextW(hwnd, wtext) == 0)
logLastError("error setting control text in uiWindowsControlSetText()");
uiFree(wtext);
}

View File

@ -50,7 +50,7 @@ static void onDestroy(uiRadioButtons *r)
hwnd = ptrArrayIndex(r->hwnds, HWND, 0);
ptrArrayDelete(r->hwnds, 0);
uiWindowsUnregisterWM_COMMANDHandler(hwnd);
uiWindowsUtilDestroy(hwnd);
uiWindowsEnsureDestroyWindow(hwnd);
}
ptrArrayDestroy(r->hwnds);
}

View File

@ -15,18 +15,18 @@ void uninitResizes(void)
ptrArrayDestroy(resizes);
}
void queueResize(uiControl *c)
void uiWindowsControlQueueRelayout(uiWindowsControl *c)
{
uintmax_t i;
uiControl *d;
uiWindowsControl *d;
// resizing a control requires us to reocmpute the sizes of everything in the top-level window
c = toplevelOwning(c);
c = uiWindowsControl(toplevelOwning(uiControl(c)));
if (c == NULL)
return;
// make sure we're only queued once
for (i = 0 ; i < resizes->len; i++) {
d = ptrArrayIndex(resizes, uiControl *, i);
d = ptrArrayIndex(resizes, uiWindowsControl *, i);
if (c == d)
return;
}
@ -53,7 +53,7 @@ void doResizes(void)
}
}
void moveWindow(HWND hwnd, intmax_t x, intmax_t y, intmax_t width, intmax_t height, uiWindowsSizing *d)
void uiWindowsEnsureMoveWindow(HWND hwnd, intmax_t x, intmax_t y, intmax_t width, intmax_t height)
{
RECT r;

View File

@ -80,3 +80,15 @@ void setExStyle(HWND hwnd, DWORD exstyle)
{
SetWindowLongPtrW(hwnd, GWL_EXSTYLE, (LONG_PTR) exstyle);
}
void uiWindowsEnsureDestroyWindow(HWND hwnd)
{
if (DestroyWindow(hwnd) == 0)
logLastError("error destroying window in uiWindowsEnsureDestroyWindow");
}
void uiWindowsEnsureSetParent(HWND hwnd, HWND parent)
{
if (SetParent(hwnd, parent) == 0)
logLastError("error setting window parent in uiWindowsEnsureSetParent");
}