blob: 3a65bc027fa70c3e8c5ab94c02a152988c661cde [file] [log] [blame]
/*
* Interface code to button widgets
*
* Copyright David W. Metcalfe, 1993
*
*/
static char Copyright[] = "Copyright David W. Metcalfe, 1993";
#include <X11/Intrinsic.h>
#include <X11/StringDefs.h>
#include "WinButton.h"
#include "windows.h"
#include "heap.h"
#include "win.h"
static void BUTTON_WinButtonCallback(Widget w, XtPointer client_data,
XtPointer call_data);
void BUTTON_CreateButton(LPSTR className, LPSTR buttonLabel, HWND hwnd)
{
WND *wndPtr = WIN_FindWndPtr(hwnd);
WND *parentPtr = WIN_FindWndPtr(wndPtr->hwndParent);
DWORD style;
char widgetName[15];
#ifdef DEBUG_BUTTON
printf("button: label = %s, x = %d, y = %d\n", buttonLabel,
wndPtr->rectClient.left, wndPtr->rectClient.top);
printf(" width = %d, height = %d\n",
wndPtr->rectClient.right - wndPtr->rectClient.left,
wndPtr->rectClient.bottom - wndPtr->rectClient.top);
#endif
if (!wndPtr)
return;
style = wndPtr->dwStyle & 0x0000000F;
switch (style)
{
case BS_PUSHBUTTON:
case BS_DEFPUSHBUTTON:
sprintf(widgetName, "%s%d", className, wndPtr->wIDmenu);
wndPtr->winWidget = XtVaCreateManagedWidget(widgetName,
winButtonWidgetClass,
parentPtr->winWidget,
XtNlabel, buttonLabel,
XtNx, wndPtr->rectClient.left,
XtNy, wndPtr->rectClient.top,
XtNwidth, wndPtr->rectClient.right -
wndPtr->rectClient.left,
XtNheight, wndPtr->rectClient.bottom -
wndPtr->rectClient.top,
XtVaTypedArg, XtNbackground, XtRString,
"grey70", strlen("grey75")+1,
NULL);
XtAddCallback(wndPtr->winWidget, XtNcallback,
BUTTON_WinButtonCallback, (XtPointer) hwnd);
break;
default:
printf("CreateButton: Unsupported button style %lX\n",
wndPtr->dwStyle);
}
GlobalUnlock(hwnd);
GlobalUnlock(wndPtr->hwndParent);
}
static void BUTTON_WinButtonCallback(Widget w, XtPointer client_data,
XtPointer call_data)
{
HWND hwnd = (HWND) client_data;
WND *wndPtr;
wndPtr = WIN_FindWndPtr(hwnd);
CallWindowProc(wndPtr->lpfnWndProc, wndPtr->hwndParent, WM_COMMAND,
wndPtr->wIDmenu, MAKELPARAM(hwnd, BN_CLICKED));
GlobalUnlock(hwnd);
}