Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

236 lines
5.3 KiB

/* File: D:\WACKER\tdll\toolbar.c (Created: 02-Dec-1993)
*
* Copyright 1994 by Hilgraeve Inc. -- Monroe, MI
* All rights reserved
*
* $Revision: 1.39 $
* $Date: 1995/03/24 15:41:04 $
*/
#define OEMRESOURCE // Need for OBM bitmaps...
#include <windows.h>
#include <commctrl.h>
#include "assert.h"
#include "stdtyp.h"
#include "globals.h"
#include "session.h"
#include <term\res.h>
#define BTN_CNT 7
struct stToolbarStuff
{
int nSpacer; /* Number of spaces to insert before button */
int nBmpNum; /* Index of the bitmap for this button */
int nCmd; /* Command to associate with the button */
int nStrRes; /* String resource ID number */
};
static struct stToolbarStuff stTS[] = {
{1, 0, IDM_NEW, IDS_TTT_NEW}, /* New button */
{0, 1, IDM_OPEN, IDS_TTT_OPEN}, /* Open button */
{1, 2, IDM_ACTIONS_DIAL, IDS_TTT_DIAL}, /* Dial button */
{0, 3, IDM_ACTIONS_HANGUP, IDS_TTT_HANGUP}, /* Hangup button */
{1, 4, IDM_ACTIONS_SEND, IDS_TTT_SEND}, /* Send button */
{0, 5, IDM_ACTIONS_RCV, IDS_TTT_RECEIVE}, /* Receive button */
{1, 6, IDM_PROPERTIES, IDS_TTT_PROPERTY}, /* Properties button */
//{1, 7, IDM_HELPTOPICS, IDS_TTT_HELP} /* Help button */
};
static void AddMinitelButtons(const HWND hwnd);
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
* FUNCTION:
* CreateSessionToolbar
*
* DESCRIPTION:
* Creates a toolbar intended for use with the a session
*
* ARGUMENTS:
* hwndSession - session window handle
*
* RETURNS:
* Window handle to toolbar or zero on error.
*
*/
/* ARGSUSED */
HWND CreateSessionToolbar(const HSESSION hSession, const HWND hwndSession)
{
//lint -esym(550,tbBut,tbadbm)
HWND hwnd = (HWND)0;
TBBUTTON tbBut;
int nLoop;
UINT id;
TBADDBITMAP tbadbm;
/*
* Try and create a toolbar with no buttons
*/
hwnd = CreateToolbarEx(hwndSession,
TBSTYLE_TOOLTIPS | WS_CHILD,
IDC_TOOLBAR_WIN,
0,
glblQueryDllHinst(),
0,
0, /* TBBUTTON */
0, /* No buttons to add */
24, 24, /* button size */
24, 24, /* bitmap size */
sizeof(TBBUTTON));
assert(hwnd);
if (IsWindow(hwnd))
{
id = (UINT)SendMessage(hwnd, TB_GETBITMAPFLAGS, 0, 0);
if (id & TBBF_LARGE)
{
id = IDB_BUTTONS_LARGE;
}
else
{
id = IDB_BUTTONS_SMALL;
SendMessage(hwnd, TB_SETBITMAPSIZE, 0, MAKELONG(16,16));
}
tbadbm.hInst = glblQueryDllHinst();
tbadbm.nID = id;
SendMessage(hwnd, TB_ADDBITMAP, (WPARAM)BTN_CNT, (LPARAM)&tbadbm);
/*
* Add some buttons
*/
for (nLoop = 0; nLoop < BTN_CNT; nLoop += 1)
{
int nIndx;
for (nIndx = 0; nIndx < stTS[nLoop].nSpacer; nIndx += 1)
{
/* Just insert space between two buttons */
tbBut.iBitmap = 0;
tbBut.idCommand = 0;
tbBut.fsState = TBSTATE_ENABLED;
tbBut.fsStyle = TBSTYLE_SEP;
tbBut.dwData = 0;
tbBut.iString = 0;
SendMessage(hwnd, TB_ADDBUTTONS, 1, (LPARAM)&tbBut);
}
tbBut.iBitmap = stTS[nLoop].nBmpNum;
tbBut.idCommand = stTS[nLoop].nCmd;
tbBut.fsState = TBSTATE_ENABLED;
tbBut.fsStyle = TBSTYLE_BUTTON;
tbBut.dwData = 0;
tbBut.iString = 0;
SendMessage(hwnd, TB_ADDBUTTONS, 1, (LPARAM)&tbBut);
}
ShowWindow(hwnd, SW_SHOW);
}
return hwnd;
} //lint +esym(550,tbBut,tbadbm)
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
* FUNCTION:
* ToolbarNotification
*
* DESCRIPTION:
* This function is called when the toolbar sends a notification message to
* the session window.
*
* ARGUMENTS:
* hwnd -- the window handle of the session window
* nId -- the control ID (the tool bar in this case)
* nNotify -- the notification code
* hwndCtrl -- the window handle of the tool bar
*
* RETURNS:
* Whatever the notification requires. See individual code below.
*
*/
/* ARGSUSED */
LRESULT ToolbarNotification(const HWND hwnd,
const int nId,
const int nNotify,
const HWND hwndCtrl)
{
//lint -e648 TBN constants overflow
LRESULT lRet = 0;
static int nCount;
switch ((UINT)nNotify)
{
case TBN_BEGINADJUST:
/*
* No return value.
*/
nCount = 1;
break;
case TBN_QUERYDELETE:
/*
* Return TRUE to delete the button or FALSE to prevent the button
* from being deleted.
*/
lRet = FALSE;
break;
case TBN_QUERYINSERT:
/*
* Return TRUE to insert the new button in front of the given
* button, or FALSE to prevent the button from being inserted.
*/
if (nCount > 0)
{
nCount -= 1;
lRet = TRUE;
}
break;
default:
break;
}
return lRet;
//lint +e648
}
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
* FUNCTION:
* ToolbarNeedsText
*
* DESCRIPTION:
* This function is called when the toolbar sends a notification message to
* the session window saying that it needs text for the ToolTips window.
*
* ARGUMENTS:
* hwnd -- the window handle of the session window
* lPar -- the lPar that the session window got
*
* RETURNS:
*
*/
/* ARGSUSED */
void ToolbarNeedsText(HSESSION hSession, long lPar)
{
unsigned int nLoop;
LPTOOLTIPTEXT pText = (LPTOOLTIPTEXT)lPar;
for (nLoop = 0 ; nLoop < DIM(stTS) ; nLoop += 1)
{
if ((int)pText->hdr.idFrom == stTS[nLoop].nCmd)
{
LoadString(glblQueryDllHinst(), (UINT)stTS[nLoop].nStrRes,
pText->szText,
sizeof(pText->szText) / sizeof(TCHAR));
return;
}
}
}