mirror of
https://github.com/reactos/reactos.git
synced 2025-08-04 09:16:17 +00:00
- allow container windows on the docking toolbars
- hide comboboxes if toolbar is vertical - patch from Thomas svn path=/trunk/; revision=21515
This commit is contained in:
parent
2e69e8f9d1
commit
d574bdb7c7
11 changed files with 348 additions and 58 deletions
|
@ -1,39 +0,0 @@
|
||||||
/* iBitmap, idCommand, fsState, fsStyle, bReserved[2], dwData, iString */
|
|
||||||
|
|
||||||
TBBUTTON StdButtons[] = {
|
|
||||||
{TBICON_NEW, ID_NEW, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0}, /* new */
|
|
||||||
{TBICON_OPEN, ID_OPEN, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0}, /* open */
|
|
||||||
{TBICON_SAVE, ID_SAVE, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0}, /* save */
|
|
||||||
|
|
||||||
{10, 0, TBSTATE_ENABLED, BTNS_SEP, {0}, 0, 0}, /* separator */
|
|
||||||
|
|
||||||
{TBICON_PRINT, ID_PRINTPRE, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0 }, /* print */
|
|
||||||
{TBICON_PRINTPRE, ID_PRINT, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0 }, /* print preview */
|
|
||||||
|
|
||||||
{10, 0, TBSTATE_ENABLED, BTNS_SEP, {0}, 0, 0}, /* separator */
|
|
||||||
|
|
||||||
{TBICON_CUT, ID_CUT, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0 }, /* cut */
|
|
||||||
{TBICON_COPY, ID_COPY, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0 }, /* copy */
|
|
||||||
{TBICON_PASTE, ID_PASTE, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0 }, /* paste */
|
|
||||||
|
|
||||||
{10, 0, TBSTATE_ENABLED, BTNS_SEP, {0}, 0, 0}, /* separator */
|
|
||||||
|
|
||||||
{TBICON_UNDO, ID_UNDO, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0 }, /* undo */
|
|
||||||
{TBICON_REDO, ID_REDO, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0 }, /* redo */
|
|
||||||
|
|
||||||
{10, 0, TBSTATE_ENABLED, BTNS_SEP, {0}, 0, 0},
|
|
||||||
};
|
|
||||||
|
|
||||||
TBBUTTON TextButtons[] = {
|
|
||||||
{TBICON_BOLD, ID_BOLD, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0}, /* bold */
|
|
||||||
{TBICON_ITALIC, ID_ITALIC, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0}, /* italic */
|
|
||||||
{TBICON_ULINE, ID_ULINE, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0}, /* underline */
|
|
||||||
|
|
||||||
{10, 0, TBSTATE_ENABLED, BTNS_SEP, {0}, 0, 0}, /* separator */
|
|
||||||
|
|
||||||
{TBICON_TXTLEFT, ID_TXTLEFT, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0 }, /* left justified */
|
|
||||||
{TBICON_TXTCENTER,ID_TXTCENTER,TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0 }, /* centered */
|
|
||||||
{TBICON_TXTRIGHT, ID_TXTRIGHT, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0 }, /* right justified */
|
|
||||||
|
|
||||||
{10, 0, TBSTATE_ENABLED, BTNS_SEP, {0}, 0, 0}, /* separator */
|
|
||||||
};
|
|
|
@ -5,9 +5,9 @@ static HWND hImageType, hUnitType, hHeightUnit, hWidthUnit, hResUnit;
|
||||||
UINT ConvertValue(HWND hDlg, UINT EdBoxChanged, UINT LastUnitSel)
|
UINT ConvertValue(HWND hDlg, UINT EdBoxChanged, UINT LastUnitSel)
|
||||||
{
|
{
|
||||||
LONG Resolution = GetDlgItemInt(hDlg, IDC_RES_EDIT, NULL, FALSE);
|
LONG Resolution = GetDlgItemInt(hDlg, IDC_RES_EDIT, NULL, FALSE);
|
||||||
FLOAT Width = GetDlgItemInt(hDlg, IDC_WIDTH_EDIT, NULL, FALSE);
|
FLOAT Width = (FLOAT)GetDlgItemInt(hDlg, IDC_WIDTH_EDIT, NULL, FALSE);
|
||||||
FLOAT Height = GetDlgItemInt(hDlg, IDC_HEIGHT_EDIT, NULL, FALSE);
|
FLOAT Height = (FLOAT)GetDlgItemInt(hDlg, IDC_HEIGHT_EDIT, NULL, FALSE);
|
||||||
USHORT CurUnit = SendMessage(hUnitType, CB_GETCURSEL, 0, 0);
|
USHORT CurUnit = (USHORT)SendMessage(hUnitType, CB_GETCURSEL, 0, 0);
|
||||||
|
|
||||||
/* if the user typed in the resolution box */
|
/* if the user typed in the resolution box */
|
||||||
if ((EdBoxChanged == IDC_RES_EDIT) && (CurUnit != PIXELS))
|
if ((EdBoxChanged == IDC_RES_EDIT) && (CurUnit != PIXELS))
|
||||||
|
|
|
@ -7,7 +7,6 @@
|
||||||
<define name="__USE_W32API" />
|
<define name="__USE_W32API" />
|
||||||
<define name="_WIN32_IE">0x0600</define>
|
<define name="_WIN32_IE">0x0600</define>
|
||||||
<define name="_WIN32_WINNT">0x0501</define>
|
<define name="_WIN32_WINNT">0x0501</define>
|
||||||
<library>ntdll</library>
|
|
||||||
<library>kernel32</library>
|
<library>kernel32</library>
|
||||||
<library>gdi32</library>
|
<library>gdi32</library>
|
||||||
<library>user32</library>
|
<library>user32</library>
|
||||||
|
|
|
@ -2,15 +2,15 @@
|
||||||
#include <commctrl.h>
|
#include <commctrl.h>
|
||||||
#include "resource.h"
|
#include "resource.h"
|
||||||
|
|
||||||
#define REACTOS_STR_FILE_DESCRIPTION "ReactOS image editor\0"
|
#define REACTOS_STR_FILE_DESCRIPTION "ReactOS image editor\0"
|
||||||
#define REACTOS_STR_INTERNAL_NAME "imagesoft\0"
|
#define REACTOS_STR_INTERNAL_NAME "imagesoft\0"
|
||||||
#define REACTOS_STR_ORIGINAL_FILENAME "imagesoft.exe\0"
|
#define REACTOS_STR_ORIGINAL_FILENAME "imagesoft.exe\0"
|
||||||
#include <reactos/version.rc>
|
#include <reactos/version.rc>
|
||||||
|
|
||||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||||
|
|
||||||
1 24 DISCARDABLE "manifest.xml"
|
1 24 DISCARDABLE "manifest.xml"
|
||||||
|
|
||||||
STRINGTABLE DISCARDABLE
|
STRINGTABLE DISCARDABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_APPNAME "ImageSoft"
|
IDS_APPNAME "ImageSoft"
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
#include <precomp.h>
|
#include <precomp.h>
|
||||||
#include "buttons.h"
|
|
||||||
|
|
||||||
static const TCHAR szMainWndClass[] = TEXT("ImageSoftWndClass");
|
static const TCHAR szMainWndClass[] = TEXT("ImageSoftWndClass");
|
||||||
|
|
||||||
|
@ -7,6 +6,50 @@ static const TCHAR szMainWndClass[] = TEXT("ImageSoftWndClass");
|
||||||
#define ID_MDI_WINDOWMENU 5
|
#define ID_MDI_WINDOWMENU 5
|
||||||
#define NUM_FLT_WND 3
|
#define NUM_FLT_WND 3
|
||||||
|
|
||||||
|
/* toolbar buttons */
|
||||||
|
TBBUTTON StdButtons[] = {
|
||||||
|
/* iBitmap, idCommand, fsState, fsStyle, bReserved[2], dwData, iString */
|
||||||
|
{TBICON_NEW, ID_NEW, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0}, /* new */
|
||||||
|
{TBICON_OPEN, ID_OPEN, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0}, /* open */
|
||||||
|
{TBICON_SAVE, ID_SAVE, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0}, /* save */
|
||||||
|
|
||||||
|
{10, 0, TBSTATE_ENABLED, BTNS_SEP, {0}, 0, 0}, /* separator */
|
||||||
|
|
||||||
|
{TBICON_PRINT, ID_PRINTPRE, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0 }, /* print */
|
||||||
|
{TBICON_PRINTPRE, ID_PRINT, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0 }, /* print preview */
|
||||||
|
|
||||||
|
{10, 0, TBSTATE_ENABLED, BTNS_SEP, {0}, 0, 0}, /* separator */
|
||||||
|
|
||||||
|
{TBICON_CUT, ID_CUT, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0 }, /* cut */
|
||||||
|
{TBICON_COPY, ID_COPY, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0 }, /* copy */
|
||||||
|
{TBICON_PASTE, ID_PASTE, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0 }, /* paste */
|
||||||
|
|
||||||
|
{10, 0, TBSTATE_ENABLED, BTNS_SEP, {0}, 0, 0}, /* separator */
|
||||||
|
|
||||||
|
{TBICON_UNDO, ID_UNDO, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0 }, /* undo */
|
||||||
|
{TBICON_REDO, ID_REDO, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0 }, /* redo */
|
||||||
|
|
||||||
|
{10, 0, TBSTATE_ENABLED, BTNS_SEP, {0}, 0, 0},
|
||||||
|
};
|
||||||
|
|
||||||
|
TBBUTTON TextButtons[] = {
|
||||||
|
{10, 0, TBSTATE_ENABLED, BTNS_SEP, {0}, 0, 0}, /* separator */
|
||||||
|
|
||||||
|
{TBICON_BOLD, ID_BOLD, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0}, /* bold */
|
||||||
|
{TBICON_ITALIC, ID_ITALIC, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0}, /* italic */
|
||||||
|
{TBICON_ULINE, ID_ULINE, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0}, /* underline */
|
||||||
|
|
||||||
|
{10, 0, TBSTATE_ENABLED, BTNS_SEP, {0}, 0, 0}, /* separator */
|
||||||
|
|
||||||
|
{TBICON_TXTLEFT, ID_TXTLEFT, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0 }, /* left justified */
|
||||||
|
{TBICON_TXTCENTER,ID_TXTCENTER,TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0 }, /* centered */
|
||||||
|
{TBICON_TXTRIGHT, ID_TXTRIGHT, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0 }, /* right justified */
|
||||||
|
|
||||||
|
{10, 0, TBSTATE_ENABLED, BTNS_SEP, {0}, 0, 0}, /* separator */
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* menu hints */
|
/* menu hints */
|
||||||
static const MENU_HINT MainMenuHintTable[] = {
|
static const MENU_HINT MainMenuHintTable[] = {
|
||||||
/* File Menu */
|
/* File Menu */
|
||||||
|
@ -111,7 +154,7 @@ MainWndCreateToolbarClient(struct _TOOLBAR_DOCKS *TbDocks,
|
||||||
{
|
{
|
||||||
const TBBUTTON *Buttons = NULL;
|
const TBBUTTON *Buttons = NULL;
|
||||||
UINT NumButtons = 0;
|
UINT NumButtons = 0;
|
||||||
UINT StartImageRes;
|
UINT StartImageRes = 0;
|
||||||
HWND hWndClient = NULL;
|
HWND hWndClient = NULL;
|
||||||
|
|
||||||
UNREFERENCED_PARAMETER(Context);
|
UNREFERENCED_PARAMETER(Context);
|
||||||
|
@ -207,6 +250,40 @@ MainWndCreateToolbarClient(struct _TOOLBAR_DOCKS *TbDocks,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switch (Dockbar->BarId)
|
||||||
|
{
|
||||||
|
case ID_TOOLBAR_TEXT:
|
||||||
|
{
|
||||||
|
HWND hWndCombo;
|
||||||
|
|
||||||
|
/* drop combo box into container window */
|
||||||
|
hWndCombo = CreateWindowEx(0,
|
||||||
|
WC_COMBOBOX,
|
||||||
|
NULL,
|
||||||
|
WS_CHILD | WS_VISIBLE | CBS_DROPDOWN,
|
||||||
|
0, 0, 120, 25,
|
||||||
|
hParent,
|
||||||
|
NULL,
|
||||||
|
hInstance,
|
||||||
|
NULL);
|
||||||
|
if (hWndCombo != NULL)
|
||||||
|
{
|
||||||
|
SetParent(hWndCombo,
|
||||||
|
hWndClient);
|
||||||
|
|
||||||
|
if (!ToolbarInsertSpaceForControl(hWndClient,
|
||||||
|
hWndCombo,
|
||||||
|
0,
|
||||||
|
ID_TXTFONTNAME,
|
||||||
|
TRUE))
|
||||||
|
{
|
||||||
|
DestroyWindow(hWndCombo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (hWndClient != NULL)
|
if (hWndClient != NULL)
|
||||||
{
|
{
|
||||||
*hwnd = hWndClient;
|
*hwnd = hWndClient;
|
||||||
|
@ -277,6 +354,15 @@ MainWndToolbarInsertBand(struct _TOOLBAR_DOCKS *TbDocks,
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static VOID
|
||||||
|
TbCustomControlChange(HWND hWndToolbar,
|
||||||
|
HWND hWndControl,
|
||||||
|
BOOL Vert)
|
||||||
|
{
|
||||||
|
/* the toolbar changed from horizontal to vertical or vice versa... */
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
static VOID CALLBACK
|
static VOID CALLBACK
|
||||||
MainWndToolbarDockBand(struct _TOOLBAR_DOCKS *TbDocks,
|
MainWndToolbarDockBand(struct _TOOLBAR_DOCKS *TbDocks,
|
||||||
const DOCKBAR *Dockbar,
|
const DOCKBAR *Dockbar,
|
||||||
|
@ -317,6 +403,9 @@ MainWndToolbarDockBand(struct _TOOLBAR_DOCKS *TbDocks,
|
||||||
0,
|
0,
|
||||||
(LPARAM)dwStyle);
|
(LPARAM)dwStyle);
|
||||||
|
|
||||||
|
ToolbarUpdateControlSpaces(rbi->hwndChild,
|
||||||
|
TbCustomControlChange);
|
||||||
|
|
||||||
if (SendMessage(rbi->hwndChild,
|
if (SendMessage(rbi->hwndChild,
|
||||||
TB_GETMAXSIZE,
|
TB_GETMAXSIZE,
|
||||||
0,
|
0,
|
||||||
|
@ -630,6 +719,7 @@ static VOID
|
||||||
InitMainWnd(PMAIN_WND_INFO Info)
|
InitMainWnd(PMAIN_WND_INFO Info)
|
||||||
{
|
{
|
||||||
CLIENTCREATESTRUCT ccs;
|
CLIENTCREATESTRUCT ccs;
|
||||||
|
INT statwidths[] = {110, -1};
|
||||||
|
|
||||||
/* FIXME - create controls and initialize the application */
|
/* FIXME - create controls and initialize the application */
|
||||||
|
|
||||||
|
@ -647,6 +737,12 @@ InitMainWnd(PMAIN_WND_INFO Info)
|
||||||
hInstance,
|
hInstance,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
|
if (Info->hStatus != NULL)
|
||||||
|
SendMessage(Info->hStatus,
|
||||||
|
SB_SETPARTS,
|
||||||
|
sizeof(statwidths)/sizeof(int),
|
||||||
|
(LPARAM)statwidths);
|
||||||
|
|
||||||
/* create the MDI client window */
|
/* create the MDI client window */
|
||||||
ccs.hWindowMenu = GetSubMenu(GetMenu(Info->hSelf),
|
ccs.hWindowMenu = GetSubMenu(GetMenu(Info->hSelf),
|
||||||
ID_MDI_WINDOWMENU);
|
ID_MDI_WINDOWMENU);
|
||||||
|
@ -921,11 +1017,33 @@ MainWndProc(HWND hwnd,
|
||||||
|
|
||||||
case WM_NOTIFY:
|
case WM_NOTIFY:
|
||||||
{
|
{
|
||||||
|
UINT BarId;
|
||||||
|
LPNMHDR pnmhdr = (LPNMHDR)lParam;
|
||||||
if (!TbdHandleNotifications(&Info->ToolDocks,
|
if (!TbdHandleNotifications(&Info->ToolDocks,
|
||||||
(LPNMHDR)lParam,
|
pnmhdr,
|
||||||
&Ret))
|
&Ret))
|
||||||
{
|
{
|
||||||
/* FIXME - handle other notifications */
|
if (TbdDockBarIdFromClientWindow(&Info->ToolDocks,
|
||||||
|
pnmhdr->hwndFrom,
|
||||||
|
&BarId))
|
||||||
|
{
|
||||||
|
switch (BarId)
|
||||||
|
{
|
||||||
|
case ID_TOOLBAR_TEXT:
|
||||||
|
switch (pnmhdr->code)
|
||||||
|
{
|
||||||
|
case TBN_DELETINGBUTTON:
|
||||||
|
{
|
||||||
|
LPNMTOOLBAR lpnmtb = (LPNMTOOLBAR)lParam;
|
||||||
|
|
||||||
|
ToolbarDeleteControlSpace(pnmhdr->hwndFrom,
|
||||||
|
&lpnmtb->tbButton);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,7 +47,7 @@ AllocAndLoadString(OUT LPTSTR *lpTarget,
|
||||||
uID);
|
uID);
|
||||||
if (ln++ > 0)
|
if (ln++ > 0)
|
||||||
{
|
{
|
||||||
(*lpTarget) = (LPWSTR)LocalAlloc(LMEM_FIXED,
|
(*lpTarget) = (LPTSTR)LocalAlloc(LMEM_FIXED,
|
||||||
ln * sizeof(TCHAR));
|
ln * sizeof(TCHAR));
|
||||||
if ((*lpTarget) != NULL)
|
if ((*lpTarget) != NULL)
|
||||||
{
|
{
|
||||||
|
@ -207,3 +207,169 @@ VOID MessageBoxInt(INT num)
|
||||||
{
|
{
|
||||||
MessageBox(NULL, _itot(num, NULL, 10), NULL, 0);
|
MessageBox(NULL, _itot(num, NULL, 10), NULL, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Toolbar custom control routines
|
||||||
|
*/
|
||||||
|
|
||||||
|
typedef struct _TBCUSTCTL
|
||||||
|
{
|
||||||
|
HWND hWndControl;
|
||||||
|
INT iCommand;
|
||||||
|
BOOL HideVertical : 1;
|
||||||
|
BOOL IsVertical : 1;
|
||||||
|
} TBCUSTCTL, *PTBCUSTCTL;
|
||||||
|
|
||||||
|
BOOL
|
||||||
|
ToolbarDeleteControlSpace(HWND hWndToolbar,
|
||||||
|
const TBBUTTON *ptbButton)
|
||||||
|
{
|
||||||
|
if ((ptbButton->fsStyle & TBSTYLE_SEP) &&
|
||||||
|
ptbButton->dwData != 0)
|
||||||
|
{
|
||||||
|
PTBCUSTCTL cctl = (PTBCUSTCTL)ptbButton->dwData;
|
||||||
|
|
||||||
|
DestroyWindow(cctl->hWndControl);
|
||||||
|
|
||||||
|
HeapFree(ProcessHeap,
|
||||||
|
0,
|
||||||
|
cctl);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
VOID
|
||||||
|
ToolbarUpdateControlSpaces(HWND hWndToolbar,
|
||||||
|
ToolbarChangeControlCallback ChangeCallback)
|
||||||
|
{
|
||||||
|
BOOL Vert;
|
||||||
|
DWORD nButtons, i;
|
||||||
|
TBBUTTON tbtn;
|
||||||
|
|
||||||
|
Vert = ((SendMessage(hWndToolbar,
|
||||||
|
TB_GETSTYLE,
|
||||||
|
0,
|
||||||
|
0) & CCS_VERT) != 0);
|
||||||
|
|
||||||
|
nButtons = SendMessage(hWndToolbar,
|
||||||
|
TB_BUTTONCOUNT,
|
||||||
|
0,
|
||||||
|
0);
|
||||||
|
|
||||||
|
for (i = 0;
|
||||||
|
i != nButtons;
|
||||||
|
i++)
|
||||||
|
{
|
||||||
|
if (SendMessage(hWndToolbar,
|
||||||
|
TB_GETBUTTON,
|
||||||
|
(WPARAM)i,
|
||||||
|
(LPARAM)&tbtn))
|
||||||
|
{
|
||||||
|
if ((tbtn.fsStyle & TBSTYLE_SEP) && tbtn.dwData != 0)
|
||||||
|
{
|
||||||
|
PTBCUSTCTL cctl = (PTBCUSTCTL)tbtn.dwData;
|
||||||
|
|
||||||
|
cctl->IsVertical = Vert;
|
||||||
|
|
||||||
|
if (cctl->HideVertical)
|
||||||
|
{
|
||||||
|
ShowWindow(cctl->hWndControl,
|
||||||
|
(Vert ? SW_HIDE : SW_SHOW));
|
||||||
|
goto ShowHideSep;
|
||||||
|
}
|
||||||
|
else if (cctl->IsVertical != Vert)
|
||||||
|
{
|
||||||
|
ChangeCallback(hWndToolbar,
|
||||||
|
cctl->hWndControl,
|
||||||
|
Vert);
|
||||||
|
|
||||||
|
ShowHideSep:
|
||||||
|
/* show/hide the separator */
|
||||||
|
SendMessage(hWndToolbar,
|
||||||
|
TB_HIDEBUTTON,
|
||||||
|
(WPARAM)cctl->iCommand,
|
||||||
|
(LPARAM)Vert && cctl->HideVertical);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL
|
||||||
|
ToolbarInsertSpaceForControl(HWND hWndToolbar,
|
||||||
|
HWND hWndControl,
|
||||||
|
INT Index,
|
||||||
|
INT iCmd,
|
||||||
|
BOOL HideVertical)
|
||||||
|
{
|
||||||
|
PTBCUSTCTL cctl;
|
||||||
|
RECT rcControl, rcItem;
|
||||||
|
|
||||||
|
cctl = HeapAlloc(ProcessHeap,
|
||||||
|
0,
|
||||||
|
sizeof(TBCUSTCTL));
|
||||||
|
if (cctl == NULL)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
cctl->HideVertical = HideVertical;
|
||||||
|
cctl->hWndControl = hWndControl;
|
||||||
|
cctl->iCommand = iCmd;
|
||||||
|
|
||||||
|
if (GetWindowRect(hWndControl,
|
||||||
|
&rcControl))
|
||||||
|
{
|
||||||
|
TBBUTTON tbtn = {0};
|
||||||
|
|
||||||
|
tbtn.iBitmap = rcControl.right - rcControl.left;
|
||||||
|
tbtn.idCommand = iCmd;
|
||||||
|
tbtn.fsStyle = TBSTYLE_SEP;
|
||||||
|
tbtn.dwData = (DWORD_PTR)cctl;
|
||||||
|
|
||||||
|
if (SendMessage(hWndToolbar,
|
||||||
|
TB_GETSTYLE,
|
||||||
|
0,
|
||||||
|
0) & CCS_VERT)
|
||||||
|
{
|
||||||
|
if (HideVertical)
|
||||||
|
tbtn.fsState |= TBSTATE_HIDDEN;
|
||||||
|
|
||||||
|
cctl->IsVertical = TRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
cctl->IsVertical = FALSE;
|
||||||
|
|
||||||
|
if (SendMessage(hWndToolbar,
|
||||||
|
TB_INSERTBUTTON,
|
||||||
|
(WPARAM)Index,
|
||||||
|
(LPARAM)&tbtn))
|
||||||
|
{
|
||||||
|
if (SendMessage(hWndToolbar,
|
||||||
|
TB_GETITEMRECT,
|
||||||
|
(WPARAM)Index,
|
||||||
|
(LPARAM)&rcItem))
|
||||||
|
{
|
||||||
|
SetWindowPos(hWndControl,
|
||||||
|
NULL,
|
||||||
|
rcItem.left,
|
||||||
|
rcItem.top,
|
||||||
|
rcItem.right - rcItem.left,
|
||||||
|
rcItem.bottom - rcItem.top,
|
||||||
|
SWP_NOZORDER);
|
||||||
|
|
||||||
|
ShowWindow(hWndControl,
|
||||||
|
SW_SHOW);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
else if (tbtn.fsState & TBSTATE_HIDDEN)
|
||||||
|
{
|
||||||
|
ShowWindow(hWndControl,
|
||||||
|
SW_HIDE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
|
@ -37,7 +37,7 @@ DoOpenFile(HWND hwnd,
|
||||||
_T("TAG Image File Format (*tif)\0*.tif\0") \
|
_T("TAG Image File Format (*tif)\0*.tif\0") \
|
||||||
_T("Portable Network Graphics (*png)\0*.png\0\0");*/
|
_T("Portable Network Graphics (*png)\0*.png\0\0");*/
|
||||||
|
|
||||||
static TCHAR Filter[] = _T("Windows Bitmap (*bmp)\0*.bmp\0");
|
static TCHAR Filter[] = _T("Windows Bitmap (*.bmp)\0*.bmp\0");
|
||||||
|
|
||||||
ofn.lpstrFilter = Filter;
|
ofn.lpstrFilter = Filter;
|
||||||
ofn.lpstrFile = szFileName;
|
ofn.lpstrFile = szFileName;
|
||||||
|
|
|
@ -19,7 +19,10 @@
|
||||||
#ifndef RBN_CHEVRONPUSHED
|
#ifndef RBN_CHEVRONPUSHED
|
||||||
#define RBN_CHEVRONPUSHED (RBN_FIRST - 10)
|
#define RBN_CHEVRONPUSHED (RBN_FIRST - 10)
|
||||||
#endif
|
#endif
|
||||||
ULONG DbgPrint(PCH Format,...);
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#pragma warning(disable : 4100)
|
||||||
|
#endif
|
||||||
|
|
||||||
#define MAX_KEY_LENGTH 256
|
#define MAX_KEY_LENGTH 256
|
||||||
#define NUM_MAINTB_IMAGES 10
|
#define NUM_MAINTB_IMAGES 10
|
||||||
|
@ -152,8 +155,8 @@ VOID SetImageEditorEnvironment(PEDIT_WND_INFO Info,
|
||||||
BOOL InitImageEditWindowImpl(VOID);
|
BOOL InitImageEditWindowImpl(VOID);
|
||||||
VOID UninitImageEditWindowImpl(VOID);
|
VOID UninitImageEditWindowImpl(VOID);
|
||||||
|
|
||||||
/* tooldock.c */
|
|
||||||
|
|
||||||
|
/* tooldock.c */
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
TOP_DOCK = 0,
|
TOP_DOCK = 0,
|
||||||
|
@ -251,6 +254,9 @@ BOOL TbdAddToolbar(PTOOLBAR_DOCKS TbDocks,
|
||||||
const DOCKBAR *Dockbar,
|
const DOCKBAR *Dockbar,
|
||||||
PVOID Context,
|
PVOID Context,
|
||||||
const DOCKBAR_ITEM_CALLBACKS *DockbarCallbacks);
|
const DOCKBAR_ITEM_CALLBACKS *DockbarCallbacks);
|
||||||
|
BOOL TbdDockBarIdFromClientWindow(PTOOLBAR_DOCKS TbDocks,
|
||||||
|
HWND hWndClient,
|
||||||
|
UINT *Id);
|
||||||
BOOL TbdHandleNotifications(PTOOLBAR_DOCKS TbDocks,
|
BOOL TbdHandleNotifications(PTOOLBAR_DOCKS TbDocks,
|
||||||
LPNMHDR pnmh,
|
LPNMHDR pnmh,
|
||||||
LRESULT *Result);
|
LRESULT *Result);
|
||||||
|
@ -334,6 +340,21 @@ VOID GetError(DWORD err);
|
||||||
|
|
||||||
VOID MessageBoxInt(INT num);
|
VOID MessageBoxInt(INT num);
|
||||||
|
|
||||||
|
BOOL ToolbarDeleteControlSpace(HWND hWndToolbar,
|
||||||
|
const TBBUTTON *ptbButton);
|
||||||
|
|
||||||
|
typedef VOID (*ToolbarChangeControlCallback)(HWND hWndToolbar,
|
||||||
|
HWND hWndControl,
|
||||||
|
BOOL Vert);
|
||||||
|
VOID ToolbarUpdateControlSpaces(HWND hWndToolbar,
|
||||||
|
ToolbarChangeControlCallback ChangeCallback);
|
||||||
|
|
||||||
|
BOOL ToolbarInsertSpaceForControl(HWND hWndToolbar,
|
||||||
|
HWND hWndControl,
|
||||||
|
INT Index,
|
||||||
|
INT iCmd,
|
||||||
|
BOOL HideVertical);
|
||||||
|
|
||||||
/* opensave.c */
|
/* opensave.c */
|
||||||
VOID FileInitialize(HWND hwnd);
|
VOID FileInitialize(HWND hwnd);
|
||||||
BOOL DoOpenFile(HWND hwnd, LPTSTR lpFileName, LPTSTR lpName);
|
BOOL DoOpenFile(HWND hwnd, LPTSTR lpFileName, LPTSTR lpName);
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 824 B After Width: | Height: | Size: 822 B |
|
@ -35,6 +35,7 @@
|
||||||
#define ID_TXTLEFT 2033
|
#define ID_TXTLEFT 2033
|
||||||
#define ID_TXTCENTER 2034
|
#define ID_TXTCENTER 2034
|
||||||
#define ID_TXTRIGHT 2035
|
#define ID_TXTRIGHT 2035
|
||||||
|
#define ID_TXTFONTNAME 2036
|
||||||
|
|
||||||
#define ID_REFRESH 3000
|
#define ID_REFRESH 3000
|
||||||
#define ID_HELP 3001
|
#define ID_HELP 3001
|
||||||
|
|
|
@ -263,6 +263,30 @@ TbnRebarEndDrag(PTOOLBAR_DOCKS TbDocks,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOOL
|
||||||
|
TbdDockBarIdFromClientWindow(PTOOLBAR_DOCKS TbDocks,
|
||||||
|
HWND hWndClient,
|
||||||
|
UINT *Id)
|
||||||
|
{
|
||||||
|
PDOCKBAR_ITEM Item;
|
||||||
|
BOOL Ret = FALSE;
|
||||||
|
|
||||||
|
Item = TbDocks->Items;
|
||||||
|
while (Item != NULL)
|
||||||
|
{
|
||||||
|
if (Item->hWndClient == hWndClient)
|
||||||
|
{
|
||||||
|
*Id = Item->DockBar.BarId;
|
||||||
|
Ret = TRUE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
Item = Item->Next;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Ret;
|
||||||
|
}
|
||||||
|
|
||||||
BOOL
|
BOOL
|
||||||
TbdHandleNotifications(PTOOLBAR_DOCKS TbDocks,
|
TbdHandleNotifications(PTOOLBAR_DOCKS TbDocks,
|
||||||
LPNMHDR pnmh,
|
LPNMHDR pnmh,
|
||||||
|
@ -976,13 +1000,13 @@ TbdHandleActivation(PTOOLBAR_DOCKS TbDocks,
|
||||||
BOOL KeepActive = *(BOOL*)wParam;
|
BOOL KeepActive = *(BOOL*)wParam;
|
||||||
HWND hWndActivate = *(HWND*)lParam;
|
HWND hWndActivate = *(HWND*)lParam;
|
||||||
PDOCKBAR_ITEM Item;
|
PDOCKBAR_ITEM Item;
|
||||||
DbgPrint("-- 0x%p --\n", hWnd);
|
|
||||||
Item = TbDocks->Items;
|
Item = TbDocks->Items;
|
||||||
while (Item != NULL)
|
while (Item != NULL)
|
||||||
{
|
{
|
||||||
if (Item->hWndTool != NULL &&
|
if (Item->hWndTool != NULL &&
|
||||||
Item->hWndTool == hWndActivate)
|
Item->hWndTool == hWndActivate)
|
||||||
{DbgPrint("Activate toolbars (0x%p)\n", hWndActivate);
|
{
|
||||||
KeepActive = TRUE;
|
KeepActive = TRUE;
|
||||||
SynchronizeSiblings = FALSE;
|
SynchronizeSiblings = FALSE;
|
||||||
break;
|
break;
|
||||||
|
@ -1000,7 +1024,7 @@ DbgPrint("-- 0x%p --\n", hWnd);
|
||||||
if (Item->hWndTool != NULL &&
|
if (Item->hWndTool != NULL &&
|
||||||
Item->hWndTool != hWnd &&
|
Item->hWndTool != hWnd &&
|
||||||
Item->hWndTool != hWndActivate)
|
Item->hWndTool != hWndActivate)
|
||||||
{DbgPrint("WM_NCACTIVE %p (wnd %p)\n", KeepActive, Item->hWndTool);
|
{
|
||||||
SendMessage(Item->hWndTool,
|
SendMessage(Item->hWndTool,
|
||||||
WM_NCACTIVATE,
|
WM_NCACTIVATE,
|
||||||
(WPARAM)KeepActive,
|
(WPARAM)KeepActive,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue