diff options
| author | Pietro Gagliardi <[email protected]> | 2015-04-11 22:22:19 -0400 |
|---|---|---|
| committer | Pietro Gagliardi <[email protected]> | 2015-04-11 22:22:19 -0400 |
| commit | f483be3630d25704300b2fdd9a00c930e98c7660 (patch) | |
| tree | eca11b7cd6670e49de981c046d4d73520101004c | |
| parent | bdfa1828bb4d8b3c28a9bb4ca2c45747349139b6 (diff) | |
Implemented uiLabel on Windows. We need to make a somewhat big change to the test program before we can test getting and setting the label's text, though...
| -rw-r--r-- | new/label_windows.c | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/new/label_windows.c b/new/label_windows.c new file mode 100644 index 0000000..8108033 --- /dev/null +++ b/new/label_windows.c @@ -0,0 +1,71 @@ +// 11 april 2015 +#include "uipriv_windows.h" + +struct label { +}; + +static BOOL onWM_COMMAND(uiControl *c, WORD code, LRESULT *lResult) +{ + return FALSE; +} + +static BOOL onWM_NOTIFY(uiControl *c, NMHDR *nm, LRESULT *lResult) +{ + return FALSE; +} + +static void onWM_DESTROY(uiControl *c) +{ + struct label *l = (struct label *) (c->data); + + uiFree(l); +} + +// via http://msdn.microsoft.com/en-us/library/windows/desktop/dn742486.aspx#sizingandspacing +#define labelHeight 8 + +static void preferredSize(uiControl *c, uiSizing *d, intmax_t *width, intmax_t *height) +{ + *width = uiWindowsWindowTextWidth((HWND) uiControlHandle(c)); + *height = uiDlgUnitsToY(labelHeight, d->sys->baseY); +} + +uiControl *uiNewLabel(const char *text) +{ + uiControl *c; + struct label *l; + uiWindowsNewControlParams p; + WCHAR *wtext; + + p.dwExStyle = 0; + p.lpClassName = L"static"; + wtext = toUTF16(text); + p.lpWindowName = wtext; + // SS_LEFTNOWORDWRAP clips text past the end; SS_NOPREFIX avoids accelerator translation + // controls are vertically aligned to the top by default (thanks Xeek in irc.freenode.net/#winapi) + p.dwStyle = SS_LEFTNOWORDWRAP | SS_NOPREFIX; + p.hInstance = hInstance; + p.useStandardControlFont = TRUE; + p.onWM_COMMAND = onWM_COMMAND; + p.onWM_NOTIFY = onWM_NOTIFY; + p.onWM_DESTROY = onWM_DESTROY; + c = uiWindowsNewControl(&p); + uiFree(wtext); + + c->preferredSize = preferredSize; + + l = uiNew(struct label); + c->data = l; + + return c; +} + +char *uiLabelText(uiControl *c) +{ + return uiWindowsControlText(c); +} + +void uiLabelSetText(uiControl *c, const char *text) +{ + uiWindowsControlSetText(c, text); +} |
