mirror of
https://github.com/reactos/reactos.git
synced 2024-12-27 09:34:43 +00:00
add image editing software started in audited repo
svn path=/trunk/; revision=21164
This commit is contained in:
parent
db000e5299
commit
11c3ca9f05
10 changed files with 1060 additions and 0 deletions
|
@ -19,6 +19,9 @@
|
|||
<directory name="ibrowser">
|
||||
<xi:include href="ibrowser/ibrowser.rbuild" />
|
||||
</directory>
|
||||
<directory name="imagesoft">
|
||||
<xi:include href="imagesoft/imagesoft.rbuild" />
|
||||
</directory>
|
||||
<directory name="msconfig">
|
||||
<xi:include href="msconfig/msconfig.rbuild" />
|
||||
</directory>
|
||||
|
|
44
reactos/base/applications/imagesoft/about.c
Normal file
44
reactos/base/applications/imagesoft/about.c
Normal file
|
@ -0,0 +1,44 @@
|
|||
#include "imagesoft.h"
|
||||
|
||||
extern HINSTANCE hInstance;
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#pragma warning(disable : 4100)
|
||||
#endif
|
||||
BOOL CALLBACK
|
||||
AboutDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
HWND hLicenseEditWnd;
|
||||
HICON hIcon = NULL;
|
||||
TCHAR strLicense[700];
|
||||
|
||||
switch (message)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
|
||||
hIcon = LoadImage(hInstance, MAKEINTRESOURCE(IDI_ICON), IMAGE_ICON, 16, 16, 0);
|
||||
SendMessage(hDlg, WM_SETICON, ICON_SMALL, (LPARAM)hIcon);
|
||||
|
||||
hLicenseEditWnd = GetDlgItem(hDlg, IDC_LICENSE_EDIT);
|
||||
|
||||
LoadString(hInstance, IDS_LICENSE, strLicense,
|
||||
sizeof(strLicense) / sizeof(TCHAR));
|
||||
|
||||
SetWindowText(hLicenseEditWnd, strLicense);
|
||||
|
||||
return TRUE;
|
||||
|
||||
case WM_COMMAND:
|
||||
|
||||
if ((LOWORD(wParam) == IDOK) || (LOWORD(wParam) == IDCANCEL))
|
||||
{
|
||||
DestroyIcon(hIcon);
|
||||
EndDialog(hDlg, LOWORD(wParam));
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
107
reactos/base/applications/imagesoft/en.rc
Normal file
107
reactos/base/applications/imagesoft/en.rc
Normal file
|
@ -0,0 +1,107 @@
|
|||
IDR_MAINMENU MENU
|
||||
BEGIN
|
||||
POPUP "&File"
|
||||
BEGIN
|
||||
MENUITEM "New...", ID_NEW
|
||||
MENUITEM "Open...", ID_OPEN
|
||||
MENUITEM "Close", ID_CLOSE, GRAYED
|
||||
MENUITEM "Close all", ID_CLOSEALL, GRAYED
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Save", ID_SAVE, GRAYED
|
||||
MENUITEM "Save As", ID_SAVEAS, GRAYED
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Print Preview", ID_PRINTPRE, GRAYED
|
||||
MENUITEM "Print...", ID_PRINT, GRAYED
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Properties...", ID_PROP, GRAYED
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&xit", ID_EXIT
|
||||
END
|
||||
POPUP "Edit"
|
||||
BEGIN
|
||||
MENUITEM "Undo", ID_UNDO, GRAYED
|
||||
MENUITEM "Redo", ID_REDO, GRAYED
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Cut", ID_CUT, GRAYED
|
||||
MENUITEM "Copy", ID_COPY, GRAYED
|
||||
MENUITEM "Paste", ID_PASTE, GRAYED
|
||||
MENUITEM "Paste as new image",ID_PASTENEWIMAGE, GRAYED
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Select All", ID_SELALL, GRAYED
|
||||
END
|
||||
POPUP "Image"
|
||||
BEGIN
|
||||
MENUITEM "Crop", -1, GRAYED
|
||||
MENUITEM "Resize", -1, GRAYED
|
||||
MENUITEM "Rotate", -1, GRAYED
|
||||
MENUITEM "Flip", -1, GRAYED
|
||||
MENUITEM "Stretch", -1, GRAYED
|
||||
MENUITEM "Skew", -1, GRAYED
|
||||
MENUITEM "Invert Colours", -1, GRAYED
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Attributes", -1, GRAYED
|
||||
END
|
||||
POPUP "Colours"
|
||||
BEGIN
|
||||
MENUITEM "Edit Colours...", ID_EDITCOLOURS
|
||||
END
|
||||
POPUP "Window"
|
||||
BEGIN
|
||||
MENUITEM "Tile", -1
|
||||
MENUITEM "Cascade", -1
|
||||
END
|
||||
POPUP "Help"
|
||||
BEGIN
|
||||
MENUITEM "About...", ID_ABOUT
|
||||
END
|
||||
END
|
||||
|
||||
IDR_POPUP MENU
|
||||
BEGIN
|
||||
POPUP "popup"
|
||||
BEGIN
|
||||
|
||||
MENUITEM SEPARATOR
|
||||
|
||||
END
|
||||
END
|
||||
|
||||
|
||||
IDD_ABOUTBOX DIALOGEX 22,16,190,182
|
||||
CAPTION "About ImageSoft"
|
||||
FONT 8,"Tahoma",0,0
|
||||
STYLE WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME
|
||||
BEGIN
|
||||
LTEXT "ImageSoft v0.1\nCopyright (C) 2006\nby Ged Murphy (gedmurphy@gmail.com)", IDC_STATIC, 48, 7, 130, 26
|
||||
PUSHBUTTON "Close", IDOK, 75, 162, 44, 15
|
||||
ICON IDI_ICON, IDC_STATIC, 10, 10, 7, 30
|
||||
EDITTEXT IDC_LICENSE_EDIT, 8, 44, 174, 107, WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ES_READONLY | ES_MULTILINE
|
||||
END
|
||||
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_LICENSE "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA."
|
||||
END
|
||||
|
||||
/* status bar info */
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_CURPOS "Cursor : %d,%d"
|
||||
IDS_READY "Ready"
|
||||
END
|
||||
|
||||
/* Tooltips */
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_TOOLTIP_NEW "New"
|
||||
IDS_TOOLTIP_OPEN "Open"
|
||||
IDS_TOOLTIP_SAVE "Save"
|
||||
IDS_TOOLTIP_PRINTPRE "Print preview"
|
||||
IDS_TOOLTIP_PRINT "Print"
|
||||
IDS_TOOLTIP_CUT "Cut"
|
||||
IDS_TOOLTIP_COPY "Copy"
|
||||
IDS_TOOLTIP_PASTE "Paste"
|
||||
IDS_TOOLTIP_UNDO "Undo"
|
||||
IDS_TOOLTIP_REDO "Redo"
|
||||
END
|
682
reactos/base/applications/imagesoft/imagesoft.c
Normal file
682
reactos/base/applications/imagesoft/imagesoft.c
Normal file
|
@ -0,0 +1,682 @@
|
|||
#include "imagesoft.h"
|
||||
|
||||
#define ID_MDI_FIRSTCHILD 50000
|
||||
|
||||
const TCHAR AppClassName[] = _T("Parent");
|
||||
const TCHAR ChildClassName[] = _T("Child");
|
||||
|
||||
|
||||
HINSTANCE hInstance;
|
||||
HWND hMainWnd;
|
||||
HWND hMDIClient;
|
||||
HWND hStatus;
|
||||
HWND hTool;
|
||||
HWND hwndRebar;
|
||||
HMENU hShortcutMenu;
|
||||
|
||||
|
||||
/*
|
||||
* Initialize the structure and send a message to the MDI
|
||||
* frame requesting a new new child window.
|
||||
*/
|
||||
HWND CreateNewMDIChild(HWND hMDIClient)
|
||||
{
|
||||
MDICREATESTRUCT mcs;
|
||||
HWND hChild;
|
||||
TCHAR Buf[15];
|
||||
static DWORD MDINum = 1;
|
||||
|
||||
_sntprintf(Buf, sizeof(Buf) / sizeof(TCHAR), _T("Untitled%d"), MDINum);
|
||||
|
||||
mcs.szTitle = Buf;
|
||||
mcs.szClass = ChildClassName;
|
||||
mcs.hOwner = hInstance;
|
||||
mcs.x = mcs.cx = CW_USEDEFAULT;
|
||||
mcs.y = mcs.cy = CW_USEDEFAULT;
|
||||
mcs.style = MDIS_ALLCHILDSTYLES;
|
||||
|
||||
hChild = (HWND)SendMessage(hMDIClient, WM_MDICREATE, 0, (LONG)&mcs);
|
||||
if(!hChild)
|
||||
{
|
||||
MessageBox(hMDIClient, _T("MDI Child creation failed."), _T("Error!"),
|
||||
MB_ICONEXCLAMATION | MB_OK);
|
||||
return hChild;
|
||||
}
|
||||
|
||||
MDINum++;
|
||||
return hChild;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Main program message handler
|
||||
*/
|
||||
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
switch(msg)
|
||||
{
|
||||
case WM_CREATE:
|
||||
{
|
||||
CLIENTCREATESTRUCT ccs;
|
||||
TBADDBITMAP tbab;
|
||||
INT iImageOffset;
|
||||
INT statwidths[] = {300, 450, 550, -1}; /* widths of status bar */
|
||||
TCHAR Buf[6];
|
||||
|
||||
/* Toolbar buttons */
|
||||
TBBUTTON tbb [NUM_BUTTONS] =
|
||||
{ /* iBitmap, idCommand, fsState, fsStyle, bReserved[2], dwData, iString */
|
||||
{STD_FILENEW, ID_NEW, TBSTATE_ENABLED, TBSTYLE_BUTTON, {0}, 0, 0}, /* new */
|
||||
{STD_FILEOPEN, ID_OPEN, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0}, /* open */
|
||||
{STD_FILESAVE, ID_SAVE, TBSTATE_INDETERMINATE, BTNS_BUTTON, {0}, 0, 0}, /* save */
|
||||
|
||||
/* Note: First item for a seperator is its width in pixels */
|
||||
{10, 0, TBSTATE_ENABLED, BTNS_SEP, {0}, 0, 0}, /* separator */
|
||||
|
||||
{STD_PRINTPRE, ID_PRINTPRE, TBSTATE_INDETERMINATE, BTNS_BUTTON, {0}, 0, 0 }, /* print */
|
||||
{STD_PRINT, ID_PRINT, TBSTATE_INDETERMINATE, BTNS_BUTTON, {0}, 0, 0 }, /* print preview */
|
||||
|
||||
{10, 0, TBSTATE_ENABLED, BTNS_SEP, {0}, 0, 0}, /* separator */
|
||||
|
||||
{STD_CUT, ID_CUT, TBSTATE_INDETERMINATE, BTNS_BUTTON, {0}, 0, 0 }, /* cut */
|
||||
{STD_COPY, ID_COPY, TBSTATE_INDETERMINATE, BTNS_BUTTON, {0}, 0, 0 }, /* copy */
|
||||
{STD_PASTE, ID_PASTE, TBSTATE_INDETERMINATE, BTNS_BUTTON, {0}, 0, 0 }, /* paste */
|
||||
|
||||
{10, 0, TBSTATE_ENABLED, BTNS_SEP, {0}, 0, 0}, /* separator */
|
||||
|
||||
{STD_UNDO, ID_UNDO, TBSTATE_INDETERMINATE, BTNS_BUTTON, {0}, 0, 0 }, /* undo */
|
||||
{STD_REDOW, ID_REDO, TBSTATE_INDETERMINATE, BTNS_BUTTON, {0}, 0, 0 }, /* redo */
|
||||
};
|
||||
|
||||
|
||||
/* ======================== Create Std Toolbar ============================== */
|
||||
|
||||
/* Create Toolbar */
|
||||
hTool = CreateWindowEx(0,
|
||||
TOOLBARCLASSNAME,
|
||||
NULL,
|
||||
WS_CHILD | WS_VISIBLE | TBSTYLE_FLAT | TBSTYLE_TOOLTIPS,
|
||||
0, 0, 0, 0,
|
||||
hwnd,
|
||||
(HMENU)IDC_TOOLBAR,
|
||||
hInstance,
|
||||
NULL);
|
||||
if(hTool == NULL)
|
||||
MessageBox(hwnd, _T("Could not create tool bar."), _T("Error!"), MB_OK | MB_ICONERROR);
|
||||
|
||||
/* Send the TB_BUTTONSTRUCTSIZE message, which is required for backward compatibility */
|
||||
SendMessage(hTool, TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0);
|
||||
|
||||
/* Add custom images */
|
||||
tbab.hInst = HINST_COMMCTRL;
|
||||
tbab.nID = IDB_STD_SMALL_COLOR;
|
||||
iImageOffset = (INT)SendMessage(hTool, TB_ADDBITMAP, NUM_BUTTONS, (LPARAM)&tbab);
|
||||
/* tbb[0].iBitmap += iImageOffset; / * properties * /
|
||||
tbb[1].iBitmap += iImageOffset; / * refresh * /
|
||||
tbb[2].iBitmap += iImageOffset; / * export * /
|
||||
tbb[4].iBitmap += iImageOffset; / * create * /
|
||||
tbb[6].iBitmap += iImageOffset; / * start * /
|
||||
tbb[7].iBitmap += iImageOffset; / * stop * /
|
||||
tbb[8].iBitmap += iImageOffset; / * pause * /
|
||||
tbb[9].iBitmap += iImageOffset; / * restart * /
|
||||
tbb[11].iBitmap += iImageOffset; / * help * /
|
||||
tbb[12].iBitmap += iImageOffset; / * exit * /
|
||||
*/
|
||||
/* Add buttons to toolbar */
|
||||
SendMessage(hTool, TB_ADDBUTTONS, NUM_BUTTONS, (LPARAM) &tbb);
|
||||
|
||||
/* Show toolbar */
|
||||
ShowWindow(hTool, SW_SHOWNORMAL);
|
||||
|
||||
|
||||
|
||||
/* ======================== Create Floating Toolbar ============================== */
|
||||
|
||||
|
||||
|
||||
|
||||
/* ======================== Create Status Bar ============================== */
|
||||
|
||||
hStatus = CreateWindowEx(0,
|
||||
STATUSCLASSNAME,
|
||||
NULL,
|
||||
WS_CHILD | WS_VISIBLE | SBARS_SIZEGRIP,
|
||||
0, 0, 0, 0,
|
||||
hwnd,
|
||||
(HMENU)IDC_STATUSBAR,
|
||||
hInstance,
|
||||
NULL);
|
||||
if(hStatus == NULL)
|
||||
MessageBox(hwnd, _T("Could not create status bar."),
|
||||
_T("Error!"), MB_OK | MB_ICONERROR);
|
||||
|
||||
SendMessage(hStatus, SB_SETPARTS, sizeof(statwidths)/sizeof(int), (LPARAM)statwidths);
|
||||
|
||||
|
||||
/* ======================== Create Popup Menu ============================== */
|
||||
|
||||
hShortcutMenu = LoadMenu(hInstance, MAKEINTRESOURCE (IDR_POPUP));
|
||||
hShortcutMenu = GetSubMenu(hShortcutMenu, 0);
|
||||
|
||||
|
||||
/* ======================= Create MDI Client ============================= */
|
||||
|
||||
/* Find window menu where children will be listed */
|
||||
ccs.hWindowMenu = GetSubMenu(GetMenu(hwnd), 4);
|
||||
ccs.idFirstChild = ID_MDI_FIRSTCHILD;
|
||||
|
||||
hMDIClient = CreateWindowEx(WS_EX_CLIENTEDGE,
|
||||
_T("mdiclient"),
|
||||
NULL,
|
||||
WS_CHILD | WS_CLIPCHILDREN | WS_VSCROLL | WS_HSCROLL | WS_VISIBLE,
|
||||
CW_USEDEFAULT,
|
||||
CW_USEDEFAULT,
|
||||
CW_USEDEFAULT,
|
||||
CW_USEDEFAULT,
|
||||
hwnd,
|
||||
(HMENU)IDC_MAIN_MDI,
|
||||
GetModuleHandle(NULL),
|
||||
(LPVOID)&ccs);
|
||||
|
||||
|
||||
if(hMDIClient == NULL)
|
||||
MessageBox(hwnd, _T("Could not create MDI client."),
|
||||
_T("Error!"), MB_OK | MB_ICONERROR);
|
||||
|
||||
|
||||
/* ======================= Miscelaneous ============================= */
|
||||
|
||||
/* indicate program is ready in the status bar */
|
||||
LoadString(hInstance, IDS_READY, Buf, sizeof(Buf) / sizeof(TCHAR));
|
||||
SendMessage(hStatus, SB_SETTEXT, 0, (LPARAM)Buf);
|
||||
|
||||
/* inilalize file open/save structure */
|
||||
FileInitialize(hwnd);
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
case WM_SIZE:
|
||||
{
|
||||
RECT rcTool;
|
||||
int iToolHeight;
|
||||
|
||||
RECT rcStatus;
|
||||
int iStatusHeight;
|
||||
|
||||
HWND hMDI;
|
||||
int iMDIHeight;
|
||||
RECT rcClient;
|
||||
|
||||
/* Size toolbar and get height */
|
||||
hTool = GetDlgItem(hwnd, IDC_TOOLBAR);
|
||||
SendMessage(hTool, TB_AUTOSIZE, 0, 0);
|
||||
|
||||
GetWindowRect(hTool, &rcTool);
|
||||
iToolHeight = rcTool.bottom - rcTool.top;
|
||||
|
||||
/* Size status bar and get height */
|
||||
hStatus = GetDlgItem(hwnd, IDC_STATUSBAR);
|
||||
SendMessage(hStatus, WM_SIZE, 0, 0);
|
||||
|
||||
GetWindowRect(hStatus, &rcStatus);
|
||||
iStatusHeight = rcStatus.bottom - rcStatus.top;
|
||||
|
||||
/* Calculate remaining height and size for the MDI frame */
|
||||
GetClientRect(hwnd, &rcClient);
|
||||
|
||||
iMDIHeight = rcClient.bottom - iToolHeight - iStatusHeight;
|
||||
|
||||
hMDI = GetDlgItem(hwnd, IDC_MAIN_MDI);
|
||||
SetWindowPos(hMDIClient, NULL, 0, iToolHeight, rcClient.right, iMDIHeight, SWP_NOZORDER);
|
||||
}
|
||||
break;
|
||||
|
||||
case WM_NOTIFY:
|
||||
{
|
||||
NMHDR* nm = (NMHDR*) lParam;
|
||||
|
||||
switch (nm->code)
|
||||
{
|
||||
case TTN_GETDISPINFO:
|
||||
{
|
||||
LPTOOLTIPTEXT lpttt;
|
||||
UINT idButton;
|
||||
|
||||
lpttt = (LPTOOLTIPTEXT) lParam;
|
||||
|
||||
/* Specify the resource identifier of the descriptive
|
||||
* text for the given button. */
|
||||
idButton = (UINT)lpttt->hdr.idFrom;
|
||||
switch (idButton)
|
||||
{
|
||||
case ID_NEW:
|
||||
lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_NEW);
|
||||
break;
|
||||
|
||||
case ID_OPEN:
|
||||
lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_OPEN);
|
||||
break;
|
||||
|
||||
case ID_SAVE:
|
||||
lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_SAVE);
|
||||
break;
|
||||
|
||||
case ID_PRINTPRE:
|
||||
lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_PRINTPRE);
|
||||
break;
|
||||
|
||||
case ID_PRINT:
|
||||
lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_PRINT);
|
||||
break;
|
||||
|
||||
case ID_CUT:
|
||||
lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_CUT);
|
||||
break;
|
||||
|
||||
case ID_COPY:
|
||||
lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_COPY);
|
||||
break;
|
||||
|
||||
case ID_PASTE:
|
||||
lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_PASTE);
|
||||
break;
|
||||
|
||||
case ID_UNDO:
|
||||
lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_UNDO);
|
||||
break;
|
||||
|
||||
case ID_REDO:
|
||||
lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_REDO);
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case WM_CONTEXTMENU:
|
||||
{
|
||||
int xPos, yPos;
|
||||
|
||||
xPos = GET_X_LPARAM(lParam);
|
||||
yPos = GET_Y_LPARAM(lParam);
|
||||
|
||||
TrackPopupMenuEx(hShortcutMenu, TPM_RIGHTBUTTON,
|
||||
xPos, yPos, hwnd, NULL);
|
||||
}
|
||||
break;
|
||||
|
||||
case WM_COMMAND:
|
||||
|
||||
switch(LOWORD(wParam))
|
||||
{
|
||||
case ID_NEW:
|
||||
CreateNewMDIChild(hMDIClient);
|
||||
break;
|
||||
|
||||
case ID_OPEN:
|
||||
DoOpenFile(hwnd);
|
||||
break;
|
||||
|
||||
case ID_SAVEAS:
|
||||
DoSaveFile(hwnd);
|
||||
break;
|
||||
|
||||
case ID_CLOSE:
|
||||
{
|
||||
/* close the active child window */
|
||||
HWND hChild = (HWND)SendMessage(hMDIClient, WM_MDIGETACTIVE,0,0);
|
||||
if(hChild)
|
||||
{
|
||||
SendMessage(hChild, WM_CLOSE, 0, 0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case ID_CLOSEALL:
|
||||
{
|
||||
HWND hChild;
|
||||
/* loop until all windows have been closed */
|
||||
while ((hChild = (HWND)SendMessage(hMDIClient, WM_MDIGETACTIVE,0,0)) != NULL)
|
||||
{
|
||||
SendMessage(hChild, WM_CLOSE, 0, 0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case ID_EXIT:
|
||||
PostMessage(hwnd, WM_CLOSE, 0, 0);
|
||||
break;
|
||||
|
||||
case ID_EDITCOLOURS:
|
||||
{
|
||||
/* open up the colour selection dialog */
|
||||
|
||||
static CHOOSECOLOR cc;
|
||||
static COLORREF crCustColors[16];
|
||||
|
||||
cc.lStructSize = sizeof(CHOOSECOLOR);
|
||||
cc.hwndOwner = hwnd;
|
||||
cc.hInstance = NULL;
|
||||
cc.rgbResult = RGB(0x80, 0x80, 0x80);
|
||||
cc.lpCustColors = crCustColors;
|
||||
cc.Flags = CC_RGBINIT | CC_FULLOPEN;
|
||||
cc.lCustData = 0;
|
||||
cc.lpfnHook = NULL;
|
||||
cc.lpTemplateName = NULL;
|
||||
|
||||
ChooseColor(&cc);
|
||||
}
|
||||
break;
|
||||
|
||||
case ID_WINDOW_TILE:
|
||||
SendMessage(hMDIClient, WM_MDITILE, 0, 0);
|
||||
break;
|
||||
|
||||
case ID_WINDOW_CASCADE:
|
||||
SendMessage(hMDIClient, WM_MDICASCADE, 0, 0);
|
||||
break;
|
||||
|
||||
case ID_ABOUT:
|
||||
DialogBox(hInstance,
|
||||
MAKEINTRESOURCE(IDD_ABOUTBOX),
|
||||
hMainWnd,
|
||||
(DLGPROC)AboutDialogProc);
|
||||
break;
|
||||
|
||||
default:
|
||||
/* Catch all commands that I didn't process directly and do
|
||||
* a check to see if the value is greater than or equal to
|
||||
* ID_MDI_FIRSTCHILD. If it is, then the user has clicked
|
||||
* on one of the Window menu items and we send the message
|
||||
* on to DefFrameProc() for processing.
|
||||
*/
|
||||
if(LOWORD(wParam) >= ID_MDI_FIRSTCHILD)
|
||||
DefFrameProc(hwnd, hMDIClient, WM_COMMAND, wParam, lParam);
|
||||
else
|
||||
{
|
||||
HWND hChild = (HWND)SendMessage(hMDIClient, WM_MDIGETACTIVE,0,0);
|
||||
if(hChild)
|
||||
SendMessage(hChild, WM_COMMAND, wParam, lParam);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case WM_CLOSE:
|
||||
DestroyMenu(hShortcutMenu);
|
||||
DestroyWindow(hwnd);
|
||||
break;
|
||||
|
||||
case WM_DESTROY:
|
||||
PostQuitMessage(0);
|
||||
break;
|
||||
|
||||
default:
|
||||
return DefFrameProc(hwnd, hMDIClient, msg, wParam, lParam);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* MDI child window message handler
|
||||
*/
|
||||
LRESULT CALLBACK MDIChildWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
static BOOL fLeftButtonDown, fRightButtonDown;
|
||||
static HDC hdcMem;
|
||||
static INT cxClient, cyClient, xMouse, yMouse;
|
||||
HDC hdc;
|
||||
PAINTSTRUCT ps;
|
||||
|
||||
switch(msg)
|
||||
{
|
||||
case WM_CREATE:
|
||||
break;
|
||||
|
||||
case WM_MDIACTIVATE:
|
||||
{
|
||||
HMENU hMenu, hFileMenu;
|
||||
UINT EnableFlag;
|
||||
|
||||
hMenu = GetMenu(hMainWnd);
|
||||
if(hwnd == (HWND)lParam)
|
||||
{ /* being activated, enable the menus */
|
||||
EnableFlag = MF_ENABLED;
|
||||
}
|
||||
else
|
||||
{
|
||||
TCHAR Buf[6];
|
||||
/* being de-activated, gray the menus */
|
||||
EnableFlag = MF_GRAYED;
|
||||
|
||||
/* indicate program is ready in the status bar */
|
||||
LoadString(hInstance, IDS_READY, Buf, sizeof(Buf) / sizeof(TCHAR));
|
||||
SendMessage(hStatus, SB_SETTEXT, 0, (LPARAM)Buf);
|
||||
}
|
||||
|
||||
EnableMenuItem(hMenu, 1, MF_BYPOSITION | EnableFlag); /* edit */
|
||||
EnableMenuItem(hMenu, 2, MF_BYPOSITION | EnableFlag); /* image */
|
||||
EnableMenuItem(hMenu, 3, MF_BYPOSITION | EnableFlag); /* colours */
|
||||
EnableMenuItem(hMenu, 4, MF_BYPOSITION | EnableFlag); /* window */
|
||||
|
||||
hFileMenu = GetSubMenu(hMenu, 0);
|
||||
EnableMenuItem(hFileMenu, ID_SAVEAS, MF_BYCOMMAND | EnableFlag);
|
||||
|
||||
EnableMenuItem(hFileMenu, ID_CLOSE, MF_BYCOMMAND | EnableFlag);
|
||||
EnableMenuItem(hFileMenu, ID_CLOSEALL, MF_BYCOMMAND | EnableFlag);
|
||||
|
||||
SendMessage(hTool, TB_SETSTATE, ID_COPY,
|
||||
(LPARAM)MAKELONG(TBSTATE_ENABLED, 0));
|
||||
|
||||
DrawMenuBar(hMainWnd);
|
||||
}
|
||||
break;
|
||||
|
||||
case WM_MOUSEMOVE:
|
||||
{
|
||||
POINT pt;
|
||||
TCHAR Buf[200];
|
||||
TCHAR Cur[15];
|
||||
|
||||
pt.x = LOWORD(lParam);
|
||||
pt.y = HIWORD(lParam);
|
||||
|
||||
/* set cursor location in the status bar */
|
||||
LoadString(hInstance, IDS_CURPOS, Cur, sizeof(Cur) / sizeof(TCHAR));
|
||||
_sntprintf(Buf, sizeof(Buf) / sizeof(TCHAR), Cur, pt.x, pt.y);
|
||||
SendMessage(hStatus, SB_SETTEXT, 0, (LPARAM)Buf);
|
||||
|
||||
if (!fLeftButtonDown && !fRightButtonDown)
|
||||
return 0;
|
||||
|
||||
hdc = GetDC(hwnd);
|
||||
|
||||
SelectObject(hdc,
|
||||
GetStockObject(fLeftButtonDown ? BLACK_PEN : WHITE_PEN) );
|
||||
|
||||
SelectObject(hdcMem,
|
||||
GetStockObject(fLeftButtonDown ? BLACK_PEN : WHITE_PEN) );
|
||||
|
||||
MoveToEx (hdc, xMouse, yMouse, NULL);
|
||||
MoveToEx (hdcMem, xMouse, yMouse, NULL);
|
||||
|
||||
xMouse = (short) LOWORD(lParam);
|
||||
yMouse = (short) HIWORD(lParam);
|
||||
|
||||
LineTo(hdc, xMouse, yMouse);
|
||||
LineTo(hdcMem, xMouse, yMouse);
|
||||
|
||||
ReleaseDC(hwnd, hdc);
|
||||
}
|
||||
break;
|
||||
|
||||
case WM_LBUTTONDOWN:
|
||||
if (!fRightButtonDown)
|
||||
SetCapture(hwnd);
|
||||
|
||||
xMouse = LOWORD(lParam);
|
||||
yMouse = HIWORD(lParam);
|
||||
fLeftButtonDown = TRUE;
|
||||
break;
|
||||
|
||||
case WM_LBUTTONUP:
|
||||
if (fLeftButtonDown)
|
||||
SetCapture(NULL);
|
||||
|
||||
fLeftButtonDown = FALSE;
|
||||
break;
|
||||
|
||||
case WM_RBUTTONDOWN:
|
||||
if (!fLeftButtonDown)
|
||||
SetCapture(hwnd);
|
||||
|
||||
xMouse = LOWORD(lParam);
|
||||
yMouse = HIWORD(lParam);
|
||||
fRightButtonDown = TRUE;
|
||||
break;
|
||||
|
||||
case WM_RBUTTONUP:
|
||||
if (fRightButtonDown)
|
||||
SetCapture(NULL);
|
||||
|
||||
fRightButtonDown = FALSE;
|
||||
break;
|
||||
|
||||
case WM_PAINT:
|
||||
hdc = BeginPaint(hwnd, &ps);
|
||||
|
||||
BitBlt(hdc, 0, 0, cxClient, cyClient, hdcMem, 0, 0, SRCCOPY);
|
||||
|
||||
EndPaint(hwnd, &ps);
|
||||
break;
|
||||
|
||||
case WM_COMMAND:
|
||||
switch(LOWORD(wParam))
|
||||
{
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
case WM_SIZE:
|
||||
return DefMDIChildProc(hwnd, msg, wParam, lParam);
|
||||
|
||||
default:
|
||||
{
|
||||
TCHAR Buf[6];
|
||||
|
||||
/* indicate program is ready in the status bar */
|
||||
LoadString(hInstance, IDS_READY, Buf, sizeof(Buf) / sizeof(TCHAR));
|
||||
SendMessage(hStatus, SB_SETTEXT, 0, (LPARAM)Buf);
|
||||
|
||||
return DefMDIChildProc(hwnd, msg, wParam, lParam);
|
||||
}
|
||||
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Register the MDI child window class
|
||||
*/
|
||||
BOOL SetUpMDIChildWindowClass(HINSTANCE hInstance)
|
||||
{
|
||||
WNDCLASSEX wc;
|
||||
|
||||
wc.cbSize = sizeof(WNDCLASSEX);
|
||||
wc.style = CS_HREDRAW | CS_VREDRAW;
|
||||
wc.lpfnWndProc = MDIChildWndProc;
|
||||
wc.cbClsExtra = 0;
|
||||
wc.cbWndExtra = 0;
|
||||
wc.hInstance = hInstance;
|
||||
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
|
||||
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
|
||||
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
|
||||
wc.lpszMenuName = NULL;
|
||||
wc.lpszClassName = ChildClassName;
|
||||
wc.hIconSm = (HICON)LoadImage(hInstance,
|
||||
MAKEINTRESOURCE(IDI_ICON), IMAGE_ICON, 16, 16, 0);
|
||||
|
||||
if(!RegisterClassEx(&wc))
|
||||
{
|
||||
MessageBox(0, _T("Could Not Register Child Window"), _T("Error!"),
|
||||
MB_ICONEXCLAMATION | MB_OK);
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#pragma warning(disable : 4100)
|
||||
#endif
|
||||
int WINAPI WinMain(HINSTANCE hThisInstance, HINSTANCE hPrevInstance,
|
||||
LPSTR lpCmdLine, int nCmdShow)
|
||||
{
|
||||
WNDCLASSEX wc;
|
||||
MSG Msg;
|
||||
INITCOMMONCONTROLSEX icex;
|
||||
|
||||
hInstance = hThisInstance;
|
||||
|
||||
icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
|
||||
icex.dwICC = ICC_BAR_CLASSES;
|
||||
InitCommonControlsEx(&icex);
|
||||
|
||||
wc.cbSize = sizeof(WNDCLASSEX);
|
||||
wc.style = 0;
|
||||
wc.lpfnWndProc = WndProc;
|
||||
wc.cbClsExtra = 0;
|
||||
wc.cbWndExtra = 0;
|
||||
wc.hInstance = hInstance;
|
||||
wc.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON));
|
||||
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
|
||||
wc.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1);
|
||||
wc.lpszMenuName = MAKEINTRESOURCE(IDR_MAINMENU);
|
||||
wc.lpszClassName = AppClassName;
|
||||
wc.hIconSm = (HICON)LoadImage(hInstance,
|
||||
MAKEINTRESOURCE(IDI_ICON), IMAGE_ICON, 16, 16, 0);
|
||||
|
||||
if(!RegisterClassEx(&wc))
|
||||
{
|
||||
MessageBox(NULL, _T("Window Registration Failed!"), _T("Error!"),
|
||||
MB_ICONEXCLAMATION | MB_OK);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(!SetUpMDIChildWindowClass(hInstance))
|
||||
return 0;
|
||||
|
||||
hMainWnd = CreateWindowEx(0,
|
||||
AppClassName,
|
||||
_T("ImageSoft"),
|
||||
WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN,
|
||||
CW_USEDEFAULT, CW_USEDEFAULT, 800, 600,
|
||||
NULL, NULL, hInstance, NULL);
|
||||
|
||||
if(hMainWnd == NULL)
|
||||
{
|
||||
MessageBox(NULL, _T("Window Creation Failed!"), _T("Error!"),
|
||||
MB_ICONEXCLAMATION | MB_OK);
|
||||
return 0;
|
||||
}
|
||||
|
||||
ShowWindow(hMainWnd, nCmdShow);
|
||||
UpdateWindow(hMainWnd);
|
||||
|
||||
while( GetMessage( &Msg, NULL, 0, 0 ) )
|
||||
{
|
||||
if (!TranslateMDISysAccel(hMDIClient, &Msg))
|
||||
{
|
||||
TranslateMessage(&Msg);
|
||||
DispatchMessage(&Msg);
|
||||
}
|
||||
}
|
||||
return (int)Msg.wParam;
|
||||
}
|
21
reactos/base/applications/imagesoft/imagesoft.h
Normal file
21
reactos/base/applications/imagesoft/imagesoft.h
Normal file
|
@ -0,0 +1,21 @@
|
|||
#ifndef __IMAGESOFT_H
|
||||
#define __IMAGESOFT_H
|
||||
|
||||
//#define WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
#include <windowsx.h> /* GET_X/Y_LPARAM */
|
||||
#include <stdio.h>
|
||||
#include <tchar.h>
|
||||
#include <commctrl.h>
|
||||
#include "resource.h"
|
||||
|
||||
#define MAX_KEY_LENGTH 256
|
||||
#define NUM_BUTTONS 13
|
||||
|
||||
BOOL CALLBACK AboutDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
|
||||
|
||||
VOID FileInitialize (HWND hwnd);
|
||||
VOID DoOpenFile(HWND hwnd);
|
||||
VOID DoSaveFile(HWND hwnd);
|
||||
|
||||
#endif /* __IMAGESOFT_H */
|
27
reactos/base/applications/imagesoft/imagesoft.rbuild
Normal file
27
reactos/base/applications/imagesoft/imagesoft.rbuild
Normal file
|
@ -0,0 +1,27 @@
|
|||
<?xml version="1.0"?>
|
||||
<rbuild xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
<module name="imagesoft" type="win32gui" installbase="system32" installname="imagesoft.exe">
|
||||
<include base="imagesoft">.</include>
|
||||
<define name="UNICODE" />
|
||||
<define name="_UNICODE" />
|
||||
<define name="__REACTOS__" />
|
||||
<define name="__USE_W32API" />
|
||||
<define name="_WIN32_IE">0x600</define>
|
||||
<define name="_WIN32_WINNT">0x501</define>
|
||||
<library>kernel32</library>
|
||||
<library>gdi32</library>
|
||||
<library>user32</library>
|
||||
<library>advapi32</library>
|
||||
<library>version</library>
|
||||
<library>comctl32</library>
|
||||
<library>shell32</library>
|
||||
<library>comdlg32</library>
|
||||
<compilationunit name="unit.c">
|
||||
<file>imagesoft.c</file>
|
||||
<file>about.c</file>
|
||||
<file>opensave.c</file>
|
||||
</compilationunit>
|
||||
<file>imagesoft.rc</file>
|
||||
<pch>imagesoft.h</pch>
|
||||
</module>
|
||||
</rbuild>
|
16
reactos/base/applications/imagesoft/imagesoft.rc
Normal file
16
reactos/base/applications/imagesoft/imagesoft.rc
Normal file
|
@ -0,0 +1,16 @@
|
|||
#include <windows.h>
|
||||
#include <commctrl.h>
|
||||
#include "resource.h"
|
||||
|
||||
#define REACTOS_STR_FILE_DESCRIPTION "ReactOS image editor\0"
|
||||
#define REACTOS_STR_INTERNAL_NAME "imagesoft\0"
|
||||
#define REACTOS_STR_ORIGINAL_FILENAME "imagesoft.exe\0"
|
||||
#include <reactos/version.rc>
|
||||
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
|
||||
IDI_ICON ICON "res/imagesoft.ico"
|
||||
|
||||
#include "En.rc"
|
||||
|
||||
|
90
reactos/base/applications/imagesoft/opensave.c
Normal file
90
reactos/base/applications/imagesoft/opensave.c
Normal file
|
@ -0,0 +1,90 @@
|
|||
#include "imagesoft.h"
|
||||
|
||||
static OPENFILENAME ofn;
|
||||
|
||||
/*
|
||||
* Initialize file open / save structure
|
||||
*/
|
||||
VOID FileInitialize(HWND hwnd)
|
||||
{
|
||||
ZeroMemory(&ofn, sizeof(ofn));
|
||||
ofn.lStructSize = sizeof(OPENFILENAME);
|
||||
ofn.hwndOwner = hwnd;
|
||||
ofn.nMaxFile = MAX_PATH;
|
||||
ofn.nMaxFileTitle = MAX_PATH;
|
||||
ofn.lpstrDefExt = _T("bmp");
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* Write the file to disk
|
||||
*/
|
||||
BOOL DoWriteFile(LPCTSTR pszFileName)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
* Read the file from disk
|
||||
*/
|
||||
BOOL DoReadFile(LPCTSTR pszFileName)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Show the file open dialog
|
||||
*/
|
||||
VOID DoOpenFile(HWND hwnd)
|
||||
{
|
||||
TCHAR szFileName[MAX_PATH] = _T("");
|
||||
static TCHAR Filter[] = _T("All image files (*.gif,*.bmp,*.jpg,*.jpeg,*.tif,*.png)\0*.gif,*.bmp,*.jpg,*.jpeg,*.tif,*.png\0") \
|
||||
_T("All files (*.*)\0*.*\0") \
|
||||
_T("Graphics Interchange format (*gif)\0*.gif\0") \
|
||||
_T("Windows Bitmap (*bmp)\0*.bmp\0") \
|
||||
_T("JPEG File Interchange Format (*jpg,*.jpeg)\0*.jpg,*.jpeg\0") \
|
||||
_T("TAG Image File Format (*tif)\0*.tif\0") \
|
||||
_T("Portable Network Graphics (*png)\0*.png\0\0");
|
||||
|
||||
ofn.lpstrFilter = Filter;
|
||||
ofn.lpstrFile = szFileName;
|
||||
ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
|
||||
|
||||
if (GetOpenFileName(&ofn))
|
||||
{
|
||||
if (DoReadFile(szFileName))
|
||||
return;
|
||||
}
|
||||
|
||||
if (CommDlgExtendedError() != CDERR_GENERALCODES)
|
||||
MessageBox(NULL, _T("Open file failed"), NULL, 0);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Show the file saveas dialog
|
||||
*/
|
||||
VOID DoSaveFile(HWND hwnd)
|
||||
{
|
||||
TCHAR szFileName[MAX_PATH] = _T("");
|
||||
static TCHAR Filter[] = _T("Graphics Interchange format (*gif)\0*.gif\0") \
|
||||
_T("Windows Bitmap (*bmp)\0*.bmp\0") \
|
||||
_T("JPEG File Interchange Format (*jpg,*.jpeg)\0*.jpg,*.jpeg\0") \
|
||||
_T("TAG Image File Format (*tif)\0*.tif\0") \
|
||||
_T("Portable Network Graphics (*png)\0*.png\0\0");
|
||||
|
||||
ofn.lpstrFilter = Filter;
|
||||
ofn.lpstrFile = szFileName;
|
||||
ofn.Flags = OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;
|
||||
|
||||
if (GetSaveFileName(&ofn))
|
||||
{
|
||||
if (DoWriteFile(szFileName))
|
||||
return;
|
||||
}
|
||||
|
||||
if (CommDlgExtendedError() != CDERR_GENERALCODES)
|
||||
MessageBox(NULL, _T("Save to file failed"), NULL, 0);
|
||||
}
|
||||
|
BIN
reactos/base/applications/imagesoft/res/imagesoft.ico
Normal file
BIN
reactos/base/applications/imagesoft/res/imagesoft.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 29 KiB |
70
reactos/base/applications/imagesoft/resource.h
Normal file
70
reactos/base/applications/imagesoft/resource.h
Normal file
|
@ -0,0 +1,70 @@
|
|||
#define IDC_STATIC -1
|
||||
|
||||
#define IDC_TOOLBAR 1001
|
||||
#define IDC_STATUSBAR 1002
|
||||
#define IDC_MAIN_MDI 1004
|
||||
|
||||
#define ID_NEW 2000
|
||||
#define ID_OPEN 2001
|
||||
#define ID_CLOSE 2002
|
||||
#define ID_CLOSEALL 2003
|
||||
#define ID_SAVE 2004
|
||||
#define ID_SAVEAS 2005
|
||||
#define ID_PRINTPRE 2006
|
||||
#define ID_PRINT 2007
|
||||
#define ID_PROP 2008
|
||||
#define ID_CUT 2009
|
||||
#define ID_COPY 2010
|
||||
#define ID_PASTE 2011
|
||||
#define ID_PASTENEWIMAGE 2012
|
||||
#define ID_UNDO 2013
|
||||
#define ID_REDO 2014
|
||||
#define ID_SELALL 2015
|
||||
#define ID_EXIT 2016
|
||||
#define ID_EDITCOLOURS 2017
|
||||
|
||||
#define ID_REFRESH 3000
|
||||
#define ID_HELP 3001
|
||||
#define ID_WINDOW_TILE 3002
|
||||
#define ID_WINDOW_CASCADE 3003
|
||||
|
||||
/* Menu */
|
||||
#define IDR_MAINMENU 102
|
||||
#define IDR_POPUP 103
|
||||
#define ID_ABOUT 4031
|
||||
|
||||
|
||||
/* tooltips */
|
||||
#define IDS_TOOLTIP_NEW 6000
|
||||
#define IDS_TOOLTIP_OPEN 6001
|
||||
#define IDS_TOOLTIP_SAVE 6002
|
||||
#define IDS_TOOLTIP_PRINTPRE 6003
|
||||
#define IDS_TOOLTIP_PRINT 6004
|
||||
#define IDS_TOOLTIP_CUT 6005
|
||||
#define IDS_TOOLTIP_COPY 6006
|
||||
#define IDS_TOOLTIP_PASTE 6007
|
||||
#define IDS_TOOLTIP_UNDO 6008
|
||||
#define IDS_TOOLTIP_REDO 6009
|
||||
|
||||
#define IDI_ICON 50
|
||||
#define IDB_BUTTONS 51
|
||||
|
||||
/* toolbar buttons */
|
||||
#define TBICON_PROP 0
|
||||
#define TBICON_REFRESH 1
|
||||
#define TBICON_EXPORT 2
|
||||
#define TBICON_CREATE 3
|
||||
#define TBICON_START 4
|
||||
#define TBICON_STOP 5
|
||||
#define TBICON_PAUSE 6
|
||||
#define TBICON_RESTART 7
|
||||
#define TBICON_HELP 8
|
||||
#define TBICON_EXIT 9
|
||||
|
||||
/* about box info */
|
||||
#define IDD_ABOUTBOX 200
|
||||
#define IDC_LICENSE_EDIT 201
|
||||
#define IDS_LICENSE 202
|
||||
|
||||
#define IDS_CURPOS 550
|
||||
#define IDS_READY 551
|
Loading…
Reference in a new issue