Stripped C-style comments from C sources and headers where appropriate.
This commit is contained in:
parent
19976849e1
commit
c1dc235d3b
|
@ -1,6 +1,4 @@
|
||||||
/* 24 march 2014 */
|
// 24 march 2014
|
||||||
|
|
||||||
/* TODO either strip the // comments or find out if --std=c99 is safe for cgo */
|
|
||||||
|
|
||||||
#include "winapi_windows.h"
|
#include "winapi_windows.h"
|
||||||
#include "_cgo_export.h"
|
#include "_cgo_export.h"
|
||||||
|
@ -319,13 +317,13 @@ static LRESULT CALLBACK areaWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM
|
||||||
|
|
||||||
data = (void *) GetWindowLongPtrW(hwnd, GWLP_USERDATA);
|
data = (void *) GetWindowLongPtrW(hwnd, GWLP_USERDATA);
|
||||||
if (data == NULL) {
|
if (data == NULL) {
|
||||||
/* the lpParam is available during WM_NCCREATE and WM_CREATE */
|
// the lpParam is available during WM_NCCREATE and WM_CREATE
|
||||||
if (uMsg == WM_NCCREATE) {
|
if (uMsg == WM_NCCREATE) {
|
||||||
storelpParam(hwnd, lParam);
|
storelpParam(hwnd, lParam);
|
||||||
data = (void *) GetWindowLongPtrW(hwnd, GWLP_USERDATA);
|
data = (void *) GetWindowLongPtrW(hwnd, GWLP_USERDATA);
|
||||||
storeAreaHWND(data, hwnd);
|
storeAreaHWND(data, hwnd);
|
||||||
}
|
}
|
||||||
/* act as if we're not ready yet, even during WM_NCCREATE (nothing important to the switch statement below happens here anyway) */
|
// act as if we're not ready yet, even during WM_NCCREATE (nothing important to the switch statement below happens here anyway)
|
||||||
return DefWindowProcW(hwnd, uMsg, wParam, lParam);
|
return DefWindowProcW(hwnd, uMsg, wParam, lParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -414,7 +412,7 @@ static LRESULT CALLBACK areaWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM
|
||||||
return DefWindowProcW(hwnd, uMsg, wParam, lParam);
|
return DefWindowProcW(hwnd, uMsg, wParam, lParam);
|
||||||
}
|
}
|
||||||
xmissedmsg("Area", "areaWndProc()", uMsg);
|
xmissedmsg("Area", "areaWndProc()", uMsg);
|
||||||
return 0; /* unreached */
|
return 0; // unreached
|
||||||
}
|
}
|
||||||
|
|
||||||
DWORD makeAreaWindowClass(char **errmsg)
|
DWORD makeAreaWindowClass(char **errmsg)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* 17 july 2014 */
|
// 17 july 2014
|
||||||
|
|
||||||
#include "winapi_windows.h"
|
#include "winapi_windows.h"
|
||||||
#include "_cgo_export.h"
|
#include "_cgo_export.h"
|
||||||
|
@ -20,7 +20,7 @@ static LRESULT CALLBACK buttonSubProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARA
|
||||||
return (*fv_DefSubclassProc)(hwnd, uMsg, wParam, lParam);
|
return (*fv_DefSubclassProc)(hwnd, uMsg, wParam, lParam);
|
||||||
}
|
}
|
||||||
xmissedmsg("Button", "buttonSubProc()", uMsg);
|
xmissedmsg("Button", "buttonSubProc()", uMsg);
|
||||||
return 0; /* unreached */
|
return 0; // unreached
|
||||||
}
|
}
|
||||||
|
|
||||||
void setButtonSubclass(HWND hwnd, void *data)
|
void setButtonSubclass(HWND hwnd, void *data)
|
||||||
|
@ -36,7 +36,7 @@ static LRESULT CALLBACK checkboxSubProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPA
|
||||||
if (HIWORD(wParam) == BN_CLICKED) {
|
if (HIWORD(wParam) == BN_CLICKED) {
|
||||||
WPARAM check;
|
WPARAM check;
|
||||||
|
|
||||||
/* we didn't use BS_AUTOCHECKBOX (see controls_windows.go) so we have to manage the check state ourselves */
|
// we didn't use BS_AUTOCHECKBOX (see controls_windows.go) so we have to manage the check state ourselves
|
||||||
check = BST_CHECKED;
|
check = BST_CHECKED;
|
||||||
if (SendMessage(hwnd, BM_GETCHECK, 0, 0) == BST_CHECKED)
|
if (SendMessage(hwnd, BM_GETCHECK, 0, 0) == BST_CHECKED)
|
||||||
check = BST_UNCHECKED;
|
check = BST_UNCHECKED;
|
||||||
|
@ -53,7 +53,7 @@ static LRESULT CALLBACK checkboxSubProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPA
|
||||||
return (*fv_DefSubclassProc)(hwnd, uMsg, wParam, lParam);
|
return (*fv_DefSubclassProc)(hwnd, uMsg, wParam, lParam);
|
||||||
}
|
}
|
||||||
xmissedmsg("Checkbox", "checkboxSubProc()", uMsg);
|
xmissedmsg("Checkbox", "checkboxSubProc()", uMsg);
|
||||||
return 0; /* unreached */
|
return 0; // unreached
|
||||||
}
|
}
|
||||||
|
|
||||||
void setCheckboxSubclass(HWND hwnd, void *data)
|
void setCheckboxSubclass(HWND hwnd, void *data)
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
/* 17 july 2014 */
|
// 17 july 2014
|
||||||
|
|
||||||
#include "winapi_windows.h"
|
#include "winapi_windows.h"
|
||||||
|
|
||||||
static ULONG_PTR comctlManifestCookie;
|
static ULONG_PTR comctlManifestCookie;
|
||||||
static HMODULE comctl32;
|
static HMODULE comctl32;
|
||||||
|
|
||||||
/* these are listed as WINAPI in both Microsoft's and MinGW's headers, but not on MSDN for some reason */
|
// these are listed as WINAPI in both Microsoft's and MinGW's headers, but not on MSDN for some reason
|
||||||
BOOL (*WINAPI fv_SetWindowSubclass)(HWND, SUBCLASSPROC, UINT_PTR, DWORD_PTR);
|
BOOL (*WINAPI fv_SetWindowSubclass)(HWND, SUBCLASSPROC, UINT_PTR, DWORD_PTR);
|
||||||
BOOL (*WINAPI fv_RemoveWindowSubclass)(HWND, SUBCLASSPROC, UINT_PTR);
|
BOOL (*WINAPI fv_RemoveWindowSubclass)(HWND, SUBCLASSPROC, UINT_PTR);
|
||||||
LRESULT (*WINAPI fv_DefSubclassProc)(HWND, UINT, WPARAM, LPARAM);
|
LRESULT (*WINAPI fv_DefSubclassProc)(HWND, UINT, WPARAM, LPARAM);
|
||||||
|
@ -16,7 +16,7 @@ LRESULT (*WINAPI fv_DefSubclassProc)(HWND, UINT, WPARAM, LPARAM);
|
||||||
ICC_LISTVIEW_CLASSES | /* list views */ \
|
ICC_LISTVIEW_CLASSES | /* list views */ \
|
||||||
0)
|
0)
|
||||||
|
|
||||||
/* note that this is an 8-bit character string we're writing; see the encoding clause */
|
// note that this is an 8-bit character string we're writing; see the encoding clause
|
||||||
static const char manifest[] = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<assembly xmlns=\"urn:schemas-microsoft-com:asm.v1\" manifestVersion=\"1.0\">\n<assemblyIdentity\n version=\"1.0.0.0\"\n processorArchitecture=\"*\"\n name=\"CompanyName.ProductName.YourApplication\"\n type=\"win32\"\n/>\n<description>Your application description here.</description>\n<dependency>\n <dependentAssembly>\n <assemblyIdentity\n type=\"win32\"\n name=\"Microsoft.Windows.Common-Controls\"\n version=\"6.0.0.0\"\n processorArchitecture=\"*\"\n publicKeyToken=\"6595b64144ccf1df\"\n language=\"*\"\n />\n </dependentAssembly>\n</dependency>\n</assembly>\n";
|
static const char manifest[] = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<assembly xmlns=\"urn:schemas-microsoft-com:asm.v1\" manifestVersion=\"1.0\">\n<assemblyIdentity\n version=\"1.0.0.0\"\n processorArchitecture=\"*\"\n name=\"CompanyName.ProductName.YourApplication\"\n type=\"win32\"\n/>\n<description>Your application description here.</description>\n<dependency>\n <dependentAssembly>\n <assemblyIdentity\n type=\"win32\"\n name=\"Microsoft.Windows.Common-Controls\"\n version=\"6.0.0.0\"\n processorArchitecture=\"*\"\n publicKeyToken=\"6595b64144ccf1df\"\n language=\"*\"\n />\n </dependentAssembly>\n</dependency>\n</assembly>\n";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -38,7 +38,7 @@ DWORD initCommonControls(char **errmsg)
|
||||||
HANDLE ac;
|
HANDLE ac;
|
||||||
INITCOMMONCONTROLSEX icc;
|
INITCOMMONCONTROLSEX icc;
|
||||||
FARPROC f;
|
FARPROC f;
|
||||||
/* this is listed as WINAPI in both Microsoft's and MinGW's headers, but not on MSDN for some reason */
|
// this is listed as WINAPI in both Microsoft's and MinGW's headers, but not on MSDN for some reason
|
||||||
BOOL (*WINAPI ficc)(const LPINITCOMMONCONTROLSEX);
|
BOOL (*WINAPI ficc)(const LPINITCOMMONCONTROLSEX);
|
||||||
|
|
||||||
if (GetTempPathW(MAX_PATH + 1, temppath) == 0) {
|
if (GetTempPathW(MAX_PATH + 1, temppath) == 0) {
|
||||||
|
@ -50,14 +50,14 @@ DWORD initCommonControls(char **errmsg)
|
||||||
return GetLastError();
|
return GetLastError();
|
||||||
}
|
}
|
||||||
file = CreateFileW(filename, GENERIC_WRITE,
|
file = CreateFileW(filename, GENERIC_WRITE,
|
||||||
0, /* don't share while writing */
|
0, // don't share while writing
|
||||||
NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||||
if (file == NULL) {
|
if (file == NULL) {
|
||||||
*errmsg = "error creating manifest file";
|
*errmsg = "error creating manifest file";
|
||||||
return GetLastError();
|
return GetLastError();
|
||||||
}
|
}
|
||||||
nExpected = (sizeof manifest / sizeof manifest[0]) - 1; /* - 1 to omit the terminating null character)
|
nExpected = (sizeof manifest / sizeof manifest[0]) - 1; // - 1 to omit the terminating null character)
|
||||||
SetLastError(0); /* catch errorless short writes */
|
SetLastError(0); // catch errorless short writes
|
||||||
if (WriteFile(file, manifest, nExpected, &nGot, NULL) == 0) {
|
if (WriteFile(file, manifest, nExpected, &nGot, NULL) == 0) {
|
||||||
*errmsg = "error writing manifest file";
|
*errmsg = "error writing manifest file";
|
||||||
return GetLastError();
|
return GetLastError();
|
||||||
|
@ -100,7 +100,7 @@ DWORD initCommonControls(char **errmsg)
|
||||||
return GetLastError();
|
return GetLastError();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* GetProcAddress() only takes a multibyte string */
|
// GetProcAddress() only takes a multibyte string
|
||||||
#define LOAD(fn) f = GetProcAddress(comctl32, fn); \
|
#define LOAD(fn) f = GetProcAddress(comctl32, fn); \
|
||||||
if (f == NULL) { \
|
if (f == NULL) { \
|
||||||
*errmsg = "error loading " fn "()"; \
|
*errmsg = "error loading " fn "()"; \
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// +build !windows,!darwin
|
// +build !windows,!darwin
|
||||||
|
|
||||||
/* 13 august 2014 */
|
// 13 august 2014
|
||||||
|
|
||||||
#include "gtk_unix.h"
|
#include "gtk_unix.h"
|
||||||
#include "_cgo_export.h"
|
#include "_cgo_export.h"
|
||||||
|
@ -18,7 +18,7 @@ typedef struct goContainerClass goContainerClass;
|
||||||
struct goContainer {
|
struct goContainer {
|
||||||
GtkContainer parent_instance;
|
GtkContainer parent_instance;
|
||||||
void *gocontainer;
|
void *gocontainer;
|
||||||
GPtrArray *children; /* for forall() */
|
GPtrArray *children; // for forall()
|
||||||
};
|
};
|
||||||
|
|
||||||
struct goContainerClass {
|
struct goContainerClass {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* 17 july 2014 */
|
// 17 july 2014
|
||||||
|
|
||||||
#include "winapi_windows.h"
|
#include "winapi_windows.h"
|
||||||
#include "_cgo_export.h"
|
#include "_cgo_export.h"
|
||||||
|
@ -22,13 +22,13 @@ static LRESULT CALLBACK containerWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LP
|
||||||
|
|
||||||
data = (void *) GetWindowLongPtrW(hwnd, GWLP_USERDATA);
|
data = (void *) GetWindowLongPtrW(hwnd, GWLP_USERDATA);
|
||||||
if (data == NULL) {
|
if (data == NULL) {
|
||||||
/* the lpParam is available during WM_NCCREATE and WM_CREATE */
|
// the lpParam is available during WM_NCCREATE and WM_CREATE
|
||||||
if (uMsg == WM_NCCREATE) {
|
if (uMsg == WM_NCCREATE) {
|
||||||
storelpParam(hwnd, lParam);
|
storelpParam(hwnd, lParam);
|
||||||
data = (void *) GetWindowLongPtrW(hwnd, GWLP_USERDATA);
|
data = (void *) GetWindowLongPtrW(hwnd, GWLP_USERDATA);
|
||||||
storeContainerHWND(data, hwnd);
|
storeContainerHWND(data, hwnd);
|
||||||
}
|
}
|
||||||
/* act as if we're not ready yet, even during WM_NCCREATE (nothing important to the switch statement below happens here anyway) */
|
// act as if we're not ready yet, even during WM_NCCREATE (nothing important to the switch statement below happens here anyway)
|
||||||
return DefWindowProcW(hwnd, uMsg, wParam, lParam);
|
return DefWindowProcW(hwnd, uMsg, wParam, lParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ static LRESULT CALLBACK containerWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LP
|
||||||
return DefWindowProcW(hwnd, uMsg, wParam, lParam);
|
return DefWindowProcW(hwnd, uMsg, wParam, lParam);
|
||||||
}
|
}
|
||||||
xmissedmsg("container", "containerWndProc()", uMsg);
|
xmissedmsg("container", "containerWndProc()", uMsg);
|
||||||
return 0; /* unreached */
|
return 0; // unreached
|
||||||
}
|
}
|
||||||
|
|
||||||
DWORD makeContainerWindowClass(char **errmsg)
|
DWORD makeContainerWindowClass(char **errmsg)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* 17 july 2014 */
|
// 17 july 2014
|
||||||
|
|
||||||
#include "winapi_windows.h"
|
#include "winapi_windows.h"
|
||||||
#include "_cgo_export.h"
|
#include "_cgo_export.h"
|
||||||
|
@ -13,12 +13,10 @@ HWND newControl(LPWSTR class, DWORD style, DWORD extstyle)
|
||||||
style | WS_CHILD | WS_VISIBLE,
|
style | WS_CHILD | WS_VISIBLE,
|
||||||
CW_USEDEFAULT, CW_USEDEFAULT,
|
CW_USEDEFAULT, CW_USEDEFAULT,
|
||||||
CW_USEDEFAULT, CW_USEDEFAULT,
|
CW_USEDEFAULT, CW_USEDEFAULT,
|
||||||
/*
|
// the following has the consequence of making the control message-only at first
|
||||||
the following has the consequence of making the control message-only at first
|
// this shouldn't cause any problems... hopefully not
|
||||||
this shouldn't cause any problems... hopefully not
|
// but see the msgwndproc() for caveat info
|
||||||
but see the msgwndproc() for caveat info
|
// also don't use low control IDs as they will conflict with dialog boxes (IDCANCEL, etc.)
|
||||||
also don't use low control IDs as they will conflict with dialog boxes (IDCANCEL, etc.)
|
|
||||||
*/
|
|
||||||
msgwin, (HMENU) 100, hInstance, NULL);
|
msgwin, (HMENU) 100, hInstance, NULL);
|
||||||
if (hwnd == NULL)
|
if (hwnd == NULL)
|
||||||
xpanic("error creating control", GetLastError());
|
xpanic("error creating control", GetLastError());
|
||||||
|
@ -44,7 +42,7 @@ LRESULT forwardCommand(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
HWND control = (HWND) lParam;
|
HWND control = (HWND) lParam;
|
||||||
|
|
||||||
/* don't generate an event if the control (if there is one) is unparented (a child of the message-only window) */
|
// don't generate an event if the control (if there is one) is unparented (a child of the message-only window)
|
||||||
if (control != NULL && IsChild(msgwin, control) == 0)
|
if (control != NULL && IsChild(msgwin, control) == 0)
|
||||||
return SendMessageW(control, msgCOMMAND, wParam, lParam);
|
return SendMessageW(control, msgCOMMAND, wParam, lParam);
|
||||||
return DefWindowProcW(hwnd, uMsg, wParam, lParam);
|
return DefWindowProcW(hwnd, uMsg, wParam, lParam);
|
||||||
|
@ -55,7 +53,7 @@ LRESULT forwardNotify(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
NMHDR *nmhdr = (NMHDR *) lParam;
|
NMHDR *nmhdr = (NMHDR *) lParam;
|
||||||
HWND control = nmhdr->hwndFrom;
|
HWND control = nmhdr->hwndFrom;
|
||||||
|
|
||||||
/* don't generate an event if the control (if there is one) is unparented (a child of the message-only window) */
|
// don't generate an event if the control (if there is one) is unparented (a child of the message-only window)
|
||||||
if (control != NULL && IsChild(msgwin, control) == 0)
|
if (control != NULL && IsChild(msgwin, control) == 0)
|
||||||
return SendMessageW(control, msgNOTIFY, wParam, lParam);
|
return SendMessageW(control, msgNOTIFY, wParam, lParam);
|
||||||
return DefWindowProcW(hwnd, uMsg, wParam, lParam);
|
return DefWindowProcW(hwnd, uMsg, wParam, lParam);
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* 16 march 2014 */
|
// 16 march 2014
|
||||||
|
|
||||||
#ifndef __GO_UI_GTK_UNIX_H__
|
#ifndef __GO_UI_GTK_UNIX_H__
|
||||||
#define __GO_UI_GTK_UNIX_H__
|
#define __GO_UI_GTK_UNIX_H__
|
||||||
|
@ -9,20 +9,20 @@ MAX_ALLOWED signals that programs will not use features introduced in newer vers
|
||||||
Thanks to desrt in irc.gimp.net/#gtk+
|
Thanks to desrt in irc.gimp.net/#gtk+
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* GLib/GObject */
|
// GLib/GObject
|
||||||
#define GLIB_VERSION_MIN_REQUIRED GLIB_VERSION_2_32
|
#define GLIB_VERSION_MIN_REQUIRED GLIB_VERSION_2_32
|
||||||
#define GLIB_VERSION_MAX_ALLOWED GLIB_VERSION_2_32
|
#define GLIB_VERSION_MAX_ALLOWED GLIB_VERSION_2_32
|
||||||
|
|
||||||
/* GDK/GTK+ */
|
// GDK/GTK+
|
||||||
#define GDK_VERSION_MIN_REQUIRED GDK_VERSION_3_4
|
#define GDK_VERSION_MIN_REQUIRED GDK_VERSION_3_4
|
||||||
#define GDK_VERSION_MAX_ALLOWED GDK_VERSION_3_4
|
#define GDK_VERSION_MAX_ALLOWED GDK_VERSION_3_4
|
||||||
|
|
||||||
/* cairo has no such macros (thanks Company in irc.gimp.net/#gtk+) */
|
// cairo has no such macros (thanks Company in irc.gimp.net/#gtk+)
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
|
|
||||||
/* table_unix.c */
|
// table_unix.c
|
||||||
extern void tableAppendColumn(GtkTreeView *, gint, gchar *);
|
extern void tableAppendColumn(GtkTreeView *, gint, gchar *);
|
||||||
typedef struct goTableModel goTableModel;
|
typedef struct goTableModel goTableModel;
|
||||||
typedef struct goTableModelClass goTableModelClass;
|
typedef struct goTableModelClass goTableModelClass;
|
||||||
|
@ -36,7 +36,7 @@ struct goTableModelClass {
|
||||||
extern goTableModel *newTableModel(void *);
|
extern goTableModel *newTableModel(void *);
|
||||||
extern void tableUpdate(goTableModel *, gint, gint);
|
extern void tableUpdate(goTableModel *, gint, gint);
|
||||||
|
|
||||||
/* container_unix.c */
|
// container_unix.c
|
||||||
extern GtkWidget *newContainer(void *);
|
extern GtkWidget *newContainer(void *);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* 17 july 2014 */
|
// 17 july 2014
|
||||||
|
|
||||||
#include "winapi_windows.h"
|
#include "winapi_windows.h"
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ DWORD initWindows(char **errmsg)
|
||||||
STARTUPINFOW si;
|
STARTUPINFOW si;
|
||||||
NONCLIENTMETRICSW ncm;
|
NONCLIENTMETRICSW ncm;
|
||||||
|
|
||||||
/* WinMain() parameters */
|
// WinMain() parameters
|
||||||
hInstance = GetModuleHandleW(NULL);
|
hInstance = GetModuleHandleW(NULL);
|
||||||
if (hInstance == NULL) {
|
if (hInstance == NULL) {
|
||||||
*errmsg = "error getting hInstance";
|
*errmsg = "error getting hInstance";
|
||||||
|
@ -32,7 +32,7 @@ DWORD initWindows(char **errmsg)
|
||||||
if ((si.dwFlags & STARTF_USESHOWWINDOW) != 0)
|
if ((si.dwFlags & STARTF_USESHOWWINDOW) != 0)
|
||||||
nCmdShow = si.wShowWindow;
|
nCmdShow = si.wShowWindow;
|
||||||
|
|
||||||
/* icons and cursors */
|
// icons and cursors
|
||||||
hDefaultIcon = LoadIconW(NULL, IDI_APPLICATION);
|
hDefaultIcon = LoadIconW(NULL, IDI_APPLICATION);
|
||||||
if (hDefaultIcon == NULL) {
|
if (hDefaultIcon == NULL) {
|
||||||
*errmsg = "error loading default icon";
|
*errmsg = "error loading default icon";
|
||||||
|
@ -44,7 +44,7 @@ DWORD initWindows(char **errmsg)
|
||||||
return GetLastError();
|
return GetLastError();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* standard fonts */
|
// standard fonts
|
||||||
#define GETFONT(l, f, n) l = CreateFontIndirectW(&ncm.f); \
|
#define GETFONT(l, f, n) l = CreateFontIndirectW(&ncm.f); \
|
||||||
if (l == NULL) { \
|
if (l == NULL) { \
|
||||||
*errmsg = "error loading " n " font"; \
|
*errmsg = "error loading " n " font"; \
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
/* 25 july 2014 */
|
// 25 july 2014
|
||||||
|
|
||||||
#include "winapi_windows.h"
|
#include "winapi_windows.h"
|
||||||
#include "_cgo_export.h"
|
#include "_cgo_export.h"
|
||||||
|
|
||||||
/* provided for cgo's benefit */
|
// provided for cgo's benefit
|
||||||
LPWSTR xWC_TABCONTROL = WC_TABCONTROL;
|
LPWSTR xWC_TABCONTROL = WC_TABCONTROL;
|
||||||
|
|
||||||
static LRESULT CALLBACK tabSubProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR id, DWORD_PTR data)
|
static LRESULT CALLBACK tabSubProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR id, DWORD_PTR data)
|
||||||
|
@ -16,10 +16,10 @@ static LRESULT CALLBACK tabSubProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM l
|
||||||
switch (nmhdr->code) {
|
switch (nmhdr->code) {
|
||||||
case TCN_SELCHANGING:
|
case TCN_SELCHANGING:
|
||||||
r = SendMessageW(hwnd, TCM_GETCURSEL, 0, 0);
|
r = SendMessageW(hwnd, TCM_GETCURSEL, 0, 0);
|
||||||
if (r == (LRESULT) -1) /* no tab currently selected */
|
if (r == (LRESULT) -1) // no tab currently selected
|
||||||
return FALSE;
|
return FALSE;
|
||||||
tabChanging((void *) data, r);
|
tabChanging((void *) data, r);
|
||||||
return FALSE; /* allow change */
|
return FALSE; // allow change
|
||||||
case TCN_SELCHANGE:
|
case TCN_SELCHANGE:
|
||||||
tabChanged((void *) data, SendMessageW(hwnd, TCM_GETCURSEL, 0, 0));
|
tabChanged((void *) data, SendMessageW(hwnd, TCM_GETCURSEL, 0, 0));
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -33,7 +33,7 @@ static LRESULT CALLBACK tabSubProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM l
|
||||||
return (*fv_DefSubclassProc)(hwnd, uMsg, wParam, lParam);
|
return (*fv_DefSubclassProc)(hwnd, uMsg, wParam, lParam);
|
||||||
}
|
}
|
||||||
xmissedmsg("Tab", "tabSubProc()", uMsg);
|
xmissedmsg("Tab", "tabSubProc()", uMsg);
|
||||||
return 0; /* unreached */
|
return 0; // unreached
|
||||||
}
|
}
|
||||||
|
|
||||||
void setTabSubclass(HWND hwnd, void *data)
|
void setTabSubclass(HWND hwnd, void *data)
|
||||||
|
@ -50,7 +50,7 @@ void tabAppend(HWND hwnd, LPWSTR name)
|
||||||
ZeroMemory(&item, sizeof (TCITEM));
|
ZeroMemory(&item, sizeof (TCITEM));
|
||||||
item.mask = TCIF_TEXT;
|
item.mask = TCIF_TEXT;
|
||||||
item.pszText = name;
|
item.pszText = name;
|
||||||
/* MSDN's example code uses the first invalid index directly for this */
|
// MSDN's example code uses the first invalid index directly for this
|
||||||
n = SendMessageW(hwnd, TCM_GETITEMCOUNT, 0, 0);
|
n = SendMessageW(hwnd, TCM_GETITEMCOUNT, 0, 0);
|
||||||
if (SendMessageW(hwnd, TCM_INSERTITEM, (WPARAM) n, (LPARAM) (&item)) == (LRESULT) -1)
|
if (SendMessageW(hwnd, TCM_INSERTITEM, (WPARAM) n, (LPARAM) (&item)) == (LRESULT) -1)
|
||||||
xpanic("error adding tab to Tab", GetLastError());
|
xpanic("error adding tab to Tab", GetLastError());
|
||||||
|
@ -58,11 +58,11 @@ void tabAppend(HWND hwnd, LPWSTR name)
|
||||||
|
|
||||||
void tabGetContentRect(HWND hwnd, RECT *r)
|
void tabGetContentRect(HWND hwnd, RECT *r)
|
||||||
{
|
{
|
||||||
/* not &r; already a pointer (thanks MindChild in irc.efnet.net/#winprog for spotting my failure) */
|
// not &r; already a pointer (thanks MindChild in irc.efnet.net/#winprog for spotting my failure)
|
||||||
SendMessageW(hwnd, TCM_ADJUSTRECT, FALSE, (LPARAM) r);
|
SendMessageW(hwnd, TCM_ADJUSTRECT, FALSE, (LPARAM) r);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* theoretically we don't need to iterate over every tab for this, but let's do it just to be safe */
|
// theoretically we don't need to iterate over every tab for this, but let's do it just to be safe
|
||||||
LONG tabGetTabHeight(HWND hwnd)
|
LONG tabGetTabHeight(HWND hwnd)
|
||||||
{
|
{
|
||||||
RECT r;
|
RECT r;
|
||||||
|
@ -70,7 +70,7 @@ LONG tabGetTabHeight(HWND hwnd)
|
||||||
LONG tallest;
|
LONG tallest;
|
||||||
|
|
||||||
n = SendMessageW(hwnd, TCM_GETITEMCOUNT, 0, 0);
|
n = SendMessageW(hwnd, TCM_GETITEMCOUNT, 0, 0);
|
||||||
/* if there are no tabs, then the control just draws a box over the full window rect, reserving no space for tabs; this is handled with the next line */
|
// if there are no tabs, then the control just draws a box over the full window rect, reserving no space for tabs; this is handled with the next line
|
||||||
tallest = 0;
|
tallest = 0;
|
||||||
for (i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
if (SendMessageW(hwnd, TCM_GETITEMRECT, (WPARAM) i, (LPARAM) (&r)) == FALSE)
|
if (SendMessageW(hwnd, TCM_GETITEMRECT, (WPARAM) i, (LPARAM) (&r)) == FALSE)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// +build !windows,!darwin
|
// +build !windows,!darwin
|
||||||
|
|
||||||
/* 29 july 2014 */
|
// 29 july 2014
|
||||||
|
|
||||||
#include "gtk_unix.h"
|
#include "gtk_unix.h"
|
||||||
#include "_cgo_export.h"
|
#include "_cgo_export.h"
|
||||||
|
@ -14,7 +14,7 @@ void tableAppendColumn(GtkTreeView *table, gint index, gchar *name)
|
||||||
col = gtk_tree_view_column_new_with_attributes(name, renderer,
|
col = gtk_tree_view_column_new_with_attributes(name, renderer,
|
||||||
"text", index,
|
"text", index,
|
||||||
NULL);
|
NULL);
|
||||||
/* allow columns to be resized */
|
// allow columns to be resized
|
||||||
gtk_tree_view_column_set_resizable(col, TRUE);
|
gtk_tree_view_column_set_resizable(col, TRUE);
|
||||||
gtk_tree_view_append_column(table, col);
|
gtk_tree_view_append_column(table, col);
|
||||||
}
|
}
|
||||||
|
@ -37,7 +37,7 @@ G_DEFINE_TYPE_WITH_CODE(goTableModel, goTableModel, G_TYPE_OBJECT,
|
||||||
|
|
||||||
static void goTableModel_init(goTableModel *t)
|
static void goTableModel_init(goTableModel *t)
|
||||||
{
|
{
|
||||||
/* do nothing */
|
// do nothing
|
||||||
}
|
}
|
||||||
|
|
||||||
static void goTableModel_dispose(GObject *obj)
|
static void goTableModel_dispose(GObject *obj)
|
||||||
|
@ -50,14 +50,14 @@ static void goTableModel_finalize(GObject *obj)
|
||||||
G_OBJECT_CLASS(goTableModel_parent_class)->finalize(obj);
|
G_OBJECT_CLASS(goTableModel_parent_class)->finalize(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* and now for the interface function definitions */
|
// and now for the interface function definitions
|
||||||
|
|
||||||
static GtkTreeModelFlags goTableModel_get_flags(GtkTreeModel *model)
|
static GtkTreeModelFlags goTableModel_get_flags(GtkTreeModel *model)
|
||||||
{
|
{
|
||||||
return GTK_TREE_MODEL_LIST_ONLY;
|
return GTK_TREE_MODEL_LIST_ONLY;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* get_n_columns in Go */
|
// get_n_columns in Go
|
||||||
|
|
||||||
static GType goTableModel_get_column_type(GtkTreeModel *model, gint column)
|
static GType goTableModel_get_column_type(GtkTreeModel *model, gint column)
|
||||||
{
|
{
|
||||||
|
@ -86,9 +86,9 @@ bad:
|
||||||
|
|
||||||
static GtkTreePath *goTableModel_get_path(GtkTreeModel *model, GtkTreeIter *iter)
|
static GtkTreePath *goTableModel_get_path(GtkTreeModel *model, GtkTreeIter *iter)
|
||||||
{
|
{
|
||||||
/* note: from this point forward, the GOOD_STAMP checks ensure that the index stored in iter is nonnegative */
|
// note: from this point forward, the GOOD_STAMP checks ensure that the index stored in iter is nonnegative
|
||||||
if (iter->stamp != GOOD_STAMP)
|
if (iter->stamp != GOOD_STAMP)
|
||||||
return NULL; /* this is what both GtkListStore and GtkTreeStore do */
|
return NULL; // this is what both GtkListStore and GtkTreeStore do
|
||||||
return gtk_tree_path_new_from_indices(FROM(iter->user_data), -1);
|
return gtk_tree_path_new_from_indices(FROM(iter->user_data), -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -98,10 +98,10 @@ static void goTableModel_get_value(GtkTreeModel *model, GtkTreeIter *iter, gint
|
||||||
gchar *str;
|
gchar *str;
|
||||||
|
|
||||||
if (iter->stamp != GOOD_STAMP)
|
if (iter->stamp != GOOD_STAMP)
|
||||||
return; /* this is what both GtkListStore and GtkTreeStore do */
|
return; // this is what both GtkListStore and GtkTreeStore do
|
||||||
/* we (actually cgo) allocated str with malloc(), not g_malloc(), so let's free it explicitly and give the GValue a copy to be safe */
|
// we (actually cgo) allocated str with malloc(), not g_malloc(), so let's free it explicitly and give the GValue a copy to be safe
|
||||||
str = goTableModel_do_get_value(t->gotable, FROM(iter->user_data), column);
|
str = goTableModel_do_get_value(t->gotable, FROM(iter->user_data), column);
|
||||||
/* value is uninitialized */
|
// value is uninitialized
|
||||||
g_value_init(value, G_TYPE_STRING);
|
g_value_init(value, G_TYPE_STRING);
|
||||||
g_value_set_string(value, str);
|
g_value_set_string(value, str);
|
||||||
free(str);
|
free(str);
|
||||||
|
@ -113,7 +113,7 @@ static gboolean goTableModel_iter_next(GtkTreeModel *model, GtkTreeIter *iter)
|
||||||
gint index;
|
gint index;
|
||||||
|
|
||||||
if (iter->stamp != GOOD_STAMP)
|
if (iter->stamp != GOOD_STAMP)
|
||||||
return FALSE; /* this is what both GtkListStore and GtkTreeStore do */
|
return FALSE; // this is what both GtkListStore and GtkTreeStore do
|
||||||
index = FROM(iter->user_data);
|
index = FROM(iter->user_data);
|
||||||
index++;
|
index++;
|
||||||
if (index >= goTableModel_getRowCount(t->gotable)) {
|
if (index >= goTableModel_getRowCount(t->gotable)) {
|
||||||
|
@ -130,7 +130,7 @@ static gboolean goTableModel_iter_previous(GtkTreeModel *model, GtkTreeIter *ite
|
||||||
gint index;
|
gint index;
|
||||||
|
|
||||||
if (iter->stamp != GOOD_STAMP)
|
if (iter->stamp != GOOD_STAMP)
|
||||||
return FALSE; /* this is what both GtkListStore and GtkTreeStore do */
|
return FALSE; // this is what both GtkListStore and GtkTreeStore do
|
||||||
index = FROM(iter->user_data);
|
index = FROM(iter->user_data);
|
||||||
if (index <= 0) {
|
if (index <= 0) {
|
||||||
iter->stamp = BAD_STAMP;
|
iter->stamp = BAD_STAMP;
|
||||||
|
@ -187,11 +187,11 @@ static gboolean goTableModel_iter_parent(GtkTreeModel *model, GtkTreeIter *paren
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* end of interface definitions */
|
// end of interface definitions
|
||||||
|
|
||||||
static void goTableModel_initGtkTreeModel(GtkTreeModelIface *interface)
|
static void goTableModel_initGtkTreeModel(GtkTreeModelIface *interface)
|
||||||
{
|
{
|
||||||
/* don't chain; we have nothing to chain to */
|
// don't chain; we have nothing to chain to
|
||||||
#define DEF(x) interface->x = goTableModel_ ## x;
|
#define DEF(x) interface->x = goTableModel_ ## x;
|
||||||
DEF(get_flags)
|
DEF(get_flags)
|
||||||
DEF(get_n_columns)
|
DEF(get_n_columns)
|
||||||
|
@ -206,7 +206,7 @@ static void goTableModel_initGtkTreeModel(GtkTreeModelIface *interface)
|
||||||
DEF(iter_n_children)
|
DEF(iter_n_children)
|
||||||
DEF(iter_nth_child)
|
DEF(iter_nth_child)
|
||||||
DEF(iter_parent)
|
DEF(iter_parent)
|
||||||
/* no need for ref_node and unref_node */
|
// no need for ref_node and unref_node
|
||||||
}
|
}
|
||||||
|
|
||||||
static GParamSpec *goTableModelProperties[2];
|
static GParamSpec *goTableModelProperties[2];
|
||||||
|
@ -247,7 +247,7 @@ goTableModel *newTableModel(void *gotable)
|
||||||
return (goTableModel *) g_object_new(goTableModel_get_type(), "gotable", (gpointer) gotable, NULL);
|
return (goTableModel *) g_object_new(goTableModel_get_type(), "gotable", (gpointer) gotable, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* somewhat naive, but the only alternatives seem to be unloading/reloading the model (or the view!), which is bleh */
|
// somewhat naive, but the only alternatives seem to be unloading/reloading the model (or the view!), which is bleh
|
||||||
void tableUpdate(goTableModel *t, gint old, gint new)
|
void tableUpdate(goTableModel *t, gint old, gint new)
|
||||||
{
|
{
|
||||||
gint i;
|
gint i;
|
||||||
|
@ -256,7 +256,7 @@ void tableUpdate(goTableModel *t, gint old, gint new)
|
||||||
GtkTreeIter iter;
|
GtkTreeIter iter;
|
||||||
|
|
||||||
iter.stamp = GOOD_STAMP;
|
iter.stamp = GOOD_STAMP;
|
||||||
/* first, append extra items */
|
// first, append extra items
|
||||||
if (old < new) {
|
if (old < new) {
|
||||||
for (i = old; i < new; i++) {
|
for (i = old; i < new; i++) {
|
||||||
path = gtk_tree_path_new_from_indices(i, -1);
|
path = gtk_tree_path_new_from_indices(i, -1);
|
||||||
|
@ -266,18 +266,18 @@ void tableUpdate(goTableModel *t, gint old, gint new)
|
||||||
nUpdate = old;
|
nUpdate = old;
|
||||||
} else
|
} else
|
||||||
nUpdate = new;
|
nUpdate = new;
|
||||||
/* next, update existing items */
|
// next, update existing items
|
||||||
for (i = 0; i < nUpdate; i++) {
|
for (i = 0; i < nUpdate; i++) {
|
||||||
path = gtk_tree_path_new_from_indices(i, -1);
|
path = gtk_tree_path_new_from_indices(i, -1);
|
||||||
iter.user_data = TO(i);
|
iter.user_data = TO(i);
|
||||||
g_signal_emit_by_name(t, "row-updated", path, &iter);
|
g_signal_emit_by_name(t, "row-updated", path, &iter);
|
||||||
}
|
}
|
||||||
/* finally, remove deleted items */
|
// finally, remove deleted items
|
||||||
if (old > new)
|
if (old > new)
|
||||||
for (i = new; i < old; i++) {
|
for (i = new; i < old; i++) {
|
||||||
/* note that we repeatedly remove the row at index new, as that changes with each removal; NOT i */
|
// note that we repeatedly remove the row at index new, as that changes with each removal; NOT i
|
||||||
path = gtk_tree_path_new_from_indices(new, -1);
|
path = gtk_tree_path_new_from_indices(new, -1);
|
||||||
/* row-deleted has no iter */
|
// row-deleted has no iter
|
||||||
g_signal_emit_by_name(t, "row-deleted", path);
|
g_signal_emit_by_name(t, "row-deleted", path);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
/* 28 july 2014 */
|
// 28 july 2014
|
||||||
|
|
||||||
#include "winapi_windows.h"
|
#include "winapi_windows.h"
|
||||||
#include "_cgo_export.h"
|
#include "_cgo_export.h"
|
||||||
|
|
||||||
/* provided for cgo's benefit */
|
// provided for cgo's benefit
|
||||||
LPWSTR xWC_LISTVIEW = WC_LISTVIEW;
|
LPWSTR xWC_LISTVIEW = WC_LISTVIEW;
|
||||||
|
|
||||||
static LRESULT CALLBACK tableSubProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR id, DWORD_PTR data)
|
static LRESULT CALLBACK tableSubProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR id, DWORD_PTR data)
|
||||||
|
@ -19,8 +19,8 @@ static LRESULT CALLBACK tableSubProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return (*fv_DefSubclassProc)(hwnd, uMsg, wParam, lParam);
|
return (*fv_DefSubclassProc)(hwnd, uMsg, wParam, lParam);
|
||||||
/* see table.autoresize() in table_windows.go for the column autosize policy */
|
// see table.autoresize() in table_windows.go for the column autosize policy
|
||||||
case WM_NOTIFY: /* from the contained header control */
|
case WM_NOTIFY: // from the contained header control
|
||||||
if (nmhdr->code == HDN_BEGINTRACK)
|
if (nmhdr->code == HDN_BEGINTRACK)
|
||||||
tableStopColumnAutosize((void *) data);
|
tableStopColumnAutosize((void *) data);
|
||||||
return (*fv_DefSubclassProc)(hwnd, uMsg, wParam, lParam);
|
return (*fv_DefSubclassProc)(hwnd, uMsg, wParam, lParam);
|
||||||
|
@ -32,7 +32,7 @@ static LRESULT CALLBACK tableSubProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM
|
||||||
return (*fv_DefSubclassProc)(hwnd, uMsg, wParam, lParam);
|
return (*fv_DefSubclassProc)(hwnd, uMsg, wParam, lParam);
|
||||||
}
|
}
|
||||||
xmissedmsg("Button", "tableSubProc()", uMsg);
|
xmissedmsg("Button", "tableSubProc()", uMsg);
|
||||||
return 0; /* unreached */
|
return 0; // unreached
|
||||||
}
|
}
|
||||||
|
|
||||||
void setTableSubclass(HWND hwnd, void *data)
|
void setTableSubclass(HWND hwnd, void *data)
|
||||||
|
@ -63,7 +63,7 @@ void tableUpdate(HWND hwnd, int nItems)
|
||||||
|
|
||||||
void tableAddExtendedStyles(HWND hwnd, LPARAM styles)
|
void tableAddExtendedStyles(HWND hwnd, LPARAM styles)
|
||||||
{
|
{
|
||||||
/* the bits of WPARAM specify which bits of LPARAM to look for; having WPARAM == LPARAM ensures that only the bits we want to add are affected */
|
// the bits of WPARAM specify which bits of LPARAM to look for; having WPARAM == LPARAM ensures that only the bits we want to add are affected
|
||||||
SendMessageW(hwnd, LVM_SETEXTENDEDLISTVIEWSTYLE, (WPARAM) styles, styles);
|
SendMessageW(hwnd, LVM_SETEXTENDEDLISTVIEWSTYLE, (WPARAM) styles, styles);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
/* 17 july 2014 */
|
// 17 july 2014
|
||||||
|
|
||||||
#include "winapi_windows.h"
|
#include "winapi_windows.h"
|
||||||
#include "_cgo_export.h"
|
#include "_cgo_export.h"
|
||||||
|
|
||||||
/* note that this includes the terminating '\0' */
|
// note that this includes the terminating '\0'
|
||||||
#define NAREACLASS (sizeof areaWindowClass / sizeof areaWindowClass[0])
|
#define NAREACLASS (sizeof areaWindowClass / sizeof areaWindowClass[0])
|
||||||
|
|
||||||
void uimsgloop(void)
|
void uimsgloop(void)
|
||||||
|
@ -19,7 +19,7 @@ void uimsgloop(void)
|
||||||
res = GetMessageW(&msg, NULL, 0, 0);
|
res = GetMessageW(&msg, NULL, 0, 0);
|
||||||
if (res < 0)
|
if (res < 0)
|
||||||
xpanic("error calling GetMessage()", GetLastError());
|
xpanic("error calling GetMessage()", GetLastError());
|
||||||
if (res == 0) /* WM_QUIT */
|
if (res == 0) // WM_QUIT
|
||||||
break;
|
break;
|
||||||
active = GetActiveWindow();
|
active = GetActiveWindow();
|
||||||
if (active != NULL) {
|
if (active != NULL) {
|
||||||
|
@ -70,7 +70,7 @@ static LRESULT CALLBACK msgwinproc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM l
|
||||||
return DefWindowProcW(hwnd, uMsg, wParam, lParam);
|
return DefWindowProcW(hwnd, uMsg, wParam, lParam);
|
||||||
}
|
}
|
||||||
xmissedmsg("message-only", "msgwinproc()", uMsg);
|
xmissedmsg("message-only", "msgwinproc()", uMsg);
|
||||||
return 0; /* unreachable */
|
return 0; // unreachable
|
||||||
}
|
}
|
||||||
|
|
||||||
DWORD makemsgwin(char **errmsg)
|
DWORD makemsgwin(char **errmsg)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* 17 july 2014 */
|
// 17 july 2014
|
||||||
|
|
||||||
/* cgo will include this file multiple times */
|
// cgo will include this file multiple times
|
||||||
#ifndef __GO_UI_WINAPI_WINDOWS_H__
|
#ifndef __GO_UI_WINAPI_WINDOWS_H__
|
||||||
#define __GO_UI_WINAPI_WINDOWS_H__
|
#define __GO_UI_WINAPI_WINDOWS_H__
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@
|
||||||
#define _UNICODE
|
#define _UNICODE
|
||||||
#define STRICT
|
#define STRICT
|
||||||
#define STRICT_TYPED_ITEMIDS
|
#define STRICT_TYPED_ITEMIDS
|
||||||
/* get Windows version right; right now Windows XP */
|
// get Windows version right; right now Windows XP
|
||||||
#define WINVER 0x0501
|
#define WINVER 0x0501
|
||||||
#define _WIN32_WINNT 0x0501
|
#define _WIN32_WINNT 0x0501
|
||||||
#define _WIN32_WINDOWS 0x0501 /* according to Microsoft's winperf.h */
|
#define _WIN32_WINDOWS 0x0501 /* according to Microsoft's winperf.h */
|
||||||
|
@ -22,29 +22,29 @@
|
||||||
#include <wchar.h>
|
#include <wchar.h>
|
||||||
#include <windowsx.h>
|
#include <windowsx.h>
|
||||||
|
|
||||||
/* global messages unique to everything */
|
// global messages unique to everything
|
||||||
enum {
|
enum {
|
||||||
msgRequest = WM_APP + 1, /* + 1 just to be safe */
|
msgRequest = WM_APP + 1, // + 1 just to be safe
|
||||||
msgCOMMAND, /* WM_COMMAND proxy; see forwardCommand() in controls_windows.go */
|
msgCOMMAND, // WM_COMMAND proxy; see forwardCommand() in controls_windows.go
|
||||||
msgNOTIFY, /* WM_NOTIFY proxy */
|
msgNOTIFY, // WM_NOTIFY proxy
|
||||||
msgAreaSizeChanged,
|
msgAreaSizeChanged,
|
||||||
msgAreaRepaintAll,
|
msgAreaRepaintAll,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* uitask_windows.c */
|
// uitask_windows.c
|
||||||
extern void uimsgloop(void);
|
extern void uimsgloop(void);
|
||||||
extern void issue(void *);
|
extern void issue(void *);
|
||||||
extern HWND msgwin;
|
extern HWND msgwin;
|
||||||
extern DWORD makemsgwin(char **);
|
extern DWORD makemsgwin(char **);
|
||||||
|
|
||||||
/* comctl32_windows.c */
|
// comctl32_windows.c
|
||||||
extern DWORD initCommonControls(char **);
|
extern DWORD initCommonControls(char **);
|
||||||
/* these are listed as WINAPI in both Microsoft's and MinGW's headers, but not on MSDN for some reason */
|
// these are listed as WINAPI in both Microsoft's and MinGW's headers, but not on MSDN for some reason
|
||||||
extern BOOL (*WINAPI fv_SetWindowSubclass)(HWND, SUBCLASSPROC, UINT_PTR, DWORD_PTR);
|
extern BOOL (*WINAPI fv_SetWindowSubclass)(HWND, SUBCLASSPROC, UINT_PTR, DWORD_PTR);
|
||||||
extern BOOL (*WINAPI fv_RemoveWindowSubclass)(HWND, SUBCLASSPROC, UINT_PTR);
|
extern BOOL (*WINAPI fv_RemoveWindowSubclass)(HWND, SUBCLASSPROC, UINT_PTR);
|
||||||
extern LRESULT (*WINAPI fv_DefSubclassProc)(HWND, UINT, WPARAM, LPARAM);
|
extern LRESULT (*WINAPI fv_DefSubclassProc)(HWND, UINT, WPARAM, LPARAM);
|
||||||
|
|
||||||
/* control_windows.c */
|
// control_windows.c
|
||||||
extern HWND newControl(LPWSTR, DWORD, DWORD);
|
extern HWND newControl(LPWSTR, DWORD, DWORD);
|
||||||
extern void controlSetParent(HWND, HWND);
|
extern void controlSetParent(HWND, HWND);
|
||||||
extern void controlSetControlFont(HWND);
|
extern void controlSetControlFont(HWND);
|
||||||
|
@ -53,13 +53,13 @@ extern LRESULT forwardNotify(HWND, UINT, WPARAM, LPARAM);
|
||||||
extern void moveWindow(HWND, int, int, int, int);
|
extern void moveWindow(HWND, int, int, int, int);
|
||||||
extern LONG controlTextLength(HWND, LPWSTR);
|
extern LONG controlTextLength(HWND, LPWSTR);
|
||||||
|
|
||||||
/* basicctrls_windows.c */
|
// basicctrls_windows.c
|
||||||
extern void setButtonSubclass(HWND, void *);
|
extern void setButtonSubclass(HWND, void *);
|
||||||
extern void setCheckboxSubclass(HWND, void *);
|
extern void setCheckboxSubclass(HWND, void *);
|
||||||
extern BOOL checkboxChecked(HWND);
|
extern BOOL checkboxChecked(HWND);
|
||||||
extern void checkboxSetChecked(HWND, BOOL);
|
extern void checkboxSetChecked(HWND, BOOL);
|
||||||
|
|
||||||
/* init_windows.c */
|
// init_windows.c
|
||||||
extern HINSTANCE hInstance;
|
extern HINSTANCE hInstance;
|
||||||
extern int nCmdShow;
|
extern int nCmdShow;
|
||||||
extern HICON hDefaultIcon;
|
extern HICON hDefaultIcon;
|
||||||
|
@ -72,26 +72,26 @@ extern HFONT statusbarFont;
|
||||||
extern HBRUSH hollowBrush;
|
extern HBRUSH hollowBrush;
|
||||||
extern DWORD initWindows(char **);
|
extern DWORD initWindows(char **);
|
||||||
|
|
||||||
/* window_windows.c */
|
// window_windows.c
|
||||||
extern DWORD makeWindowWindowClass(char **);
|
extern DWORD makeWindowWindowClass(char **);
|
||||||
extern HWND newWindow(LPWSTR, int, int, void *);
|
extern HWND newWindow(LPWSTR, int, int, void *);
|
||||||
extern void windowClose(HWND);
|
extern void windowClose(HWND);
|
||||||
|
|
||||||
/* common_windows.c */
|
// common_windows.c
|
||||||
extern LRESULT getWindowTextLen(HWND);
|
extern LRESULT getWindowTextLen(HWND);
|
||||||
extern void getWindowText(HWND, WPARAM, LPWSTR);
|
extern void getWindowText(HWND, WPARAM, LPWSTR);
|
||||||
extern void setWindowText(HWND, LPWSTR);
|
extern void setWindowText(HWND, LPWSTR);
|
||||||
extern void updateWindow(HWND);
|
extern void updateWindow(HWND);
|
||||||
extern void storelpParam(HWND, LPARAM);
|
extern void storelpParam(HWND, LPARAM);
|
||||||
|
|
||||||
/* tab_windows.go */
|
// tab_windows.go
|
||||||
extern LPWSTR xWC_TABCONTROL;
|
extern LPWSTR xWC_TABCONTROL;
|
||||||
extern void setTabSubclass(HWND, void *);
|
extern void setTabSubclass(HWND, void *);
|
||||||
extern void tabAppend(HWND, LPWSTR);
|
extern void tabAppend(HWND, LPWSTR);
|
||||||
extern void tabGetContentRect(HWND, RECT *);
|
extern void tabGetContentRect(HWND, RECT *);
|
||||||
extern LONG tabGetTabHeight(HWND);
|
extern LONG tabGetTabHeight(HWND);
|
||||||
|
|
||||||
/* table_windows.go */
|
// table_windows.go
|
||||||
extern LPWSTR xWC_LISTVIEW;
|
extern LPWSTR xWC_LISTVIEW;
|
||||||
extern void setTableSubclass(HWND, void *);
|
extern void setTableSubclass(HWND, void *);
|
||||||
extern void tableAppendColumn(HWND, int, LPWSTR);
|
extern void tableAppendColumn(HWND, int, LPWSTR);
|
||||||
|
@ -99,12 +99,12 @@ extern void tableUpdate(HWND, int);
|
||||||
extern void tableAddExtendedStyles(HWND, LPARAM);
|
extern void tableAddExtendedStyles(HWND, LPARAM);
|
||||||
extern void tableAutosizeColumns(HWND, int);
|
extern void tableAutosizeColumns(HWND, int);
|
||||||
|
|
||||||
/* container_windows.c */
|
// container_windows.c
|
||||||
extern DWORD makeContainerWindowClass(char **);
|
extern DWORD makeContainerWindowClass(char **);
|
||||||
extern HWND newContainer(void *);
|
extern HWND newContainer(void *);
|
||||||
extern void calculateBaseUnits(HWND, int *, int *, LONG *);
|
extern void calculateBaseUnits(HWND, int *, int *, LONG *);
|
||||||
|
|
||||||
/* area_window.c */
|
// area_window.c
|
||||||
#define areaWindowClass L"gouiarea"
|
#define areaWindowClass L"gouiarea"
|
||||||
extern void repaintArea(HWND);
|
extern void repaintArea(HWND);
|
||||||
extern DWORD makeAreaWindowClass(char **);
|
extern DWORD makeAreaWindowClass(char **);
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* 17 july 2014 */
|
// 17 july 2014
|
||||||
|
|
||||||
#include "winapi_windows.h"
|
#include "winapi_windows.h"
|
||||||
#include "_cgo_export.h"
|
#include "_cgo_export.h"
|
||||||
|
@ -12,13 +12,13 @@ static LRESULT CALLBACK windowWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARA
|
||||||
|
|
||||||
data = (void *) GetWindowLongPtrW(hwnd, GWLP_USERDATA);
|
data = (void *) GetWindowLongPtrW(hwnd, GWLP_USERDATA);
|
||||||
if (data == NULL) {
|
if (data == NULL) {
|
||||||
/* the lpParam is available during WM_NCCREATE and WM_CREATE */
|
// the lpParam is available during WM_NCCREATE and WM_CREATE
|
||||||
if (uMsg == WM_NCCREATE) {
|
if (uMsg == WM_NCCREATE) {
|
||||||
storelpParam(hwnd, lParam);
|
storelpParam(hwnd, lParam);
|
||||||
data = (void *) GetWindowLongPtrW(hwnd, GWLP_USERDATA);
|
data = (void *) GetWindowLongPtrW(hwnd, GWLP_USERDATA);
|
||||||
storeWindowHWND(data, hwnd);
|
storeWindowHWND(data, hwnd);
|
||||||
}
|
}
|
||||||
/* act as if we're not ready yet, even during WM_NCCREATE (nothing important to the switch statement below happens here anyway) */
|
// act as if we're not ready yet, even during WM_NCCREATE (nothing important to the switch statement below happens here anyway)
|
||||||
return DefWindowProcW(hwnd, uMsg, wParam, lParam);
|
return DefWindowProcW(hwnd, uMsg, wParam, lParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ static LRESULT CALLBACK windowWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARA
|
||||||
return DefWindowProcW(hwnd, uMsg, wParam, lParam);
|
return DefWindowProcW(hwnd, uMsg, wParam, lParam);
|
||||||
}
|
}
|
||||||
xmissedmsg("Window", "windowWinProc()", uMsg);
|
xmissedmsg("Window", "windowWinProc()", uMsg);
|
||||||
return 0; /* unreached */
|
return 0; // unreached
|
||||||
}
|
}
|
||||||
|
|
||||||
DWORD makeWindowWindowClass(char **errmsg)
|
DWORD makeWindowWindowClass(char **errmsg)
|
||||||
|
|
Loading…
Reference in New Issue