87 lines
2.3 KiB
C
87 lines
2.3 KiB
C
/*
|
|
* 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);
|
|
}
|
|
|
|
|
|
|