- Updated comctl32.dll to latest WineHQ release.

svn path=/trunk/; revision=6742
This commit is contained in:
Filip Navara 2003-11-21 21:16:28 +00:00
parent ba0efcb546
commit 348f231f03
26 changed files with 2067 additions and 1281 deletions

View file

@ -1,8 +1,8 @@
*.coff *.coff
*.dll *.dll
*.d *.d
*.a *.a
*.o *.o
*.sym *.sym
*.map *.map
*.tmp *.tmp

View file

@ -191,6 +191,12 @@ BOOL WINAPI DPA_Merge (const HDPA, const HDPA, DWORD, PFNDPACOMPARE, PFNDPAMERGE
#define TB_UNKWN463 (WM_USER+99) #define TB_UNKWN463 (WM_USER+99)
#define TB_UNKWN464 (WM_USER+100) #define TB_UNKWN464 (WM_USER+100)
#define FLATSB_CLASSA "flatsb_class32"
/* FIXME: Rebar definition hack, should be patched in Wine */
#undef RB_GETBANDINFO
#define RB_GETBANDINFO (WM_USER+5) /* just for compatibility */
#define Header_GetItemA(w,i,d) (BOOL)SendMessageA((w),HDM_GETITEMA,(WPARAM)(i),(LPARAM)(HDITEMA*)(d)) #define Header_GetItemA(w,i,d) (BOOL)SendMessageA((w),HDM_GETITEMA,(WPARAM)(i),(LPARAM)(HDITEMA*)(d))
#define Header_GetItemW(w,i,d) (BOOL)SendMessageW((w),HDM_GETITEMW,(WPARAM)(i),(LPARAM)(HDITEMW*)(d)) #define Header_GetItemW(w,i,d) (BOOL)SendMessageW((w),HDM_GETITEMW,(WPARAM)(i),(LPARAM)(HDITEMW*)(d))
#define Header_SetItemA(w,i,d) (BOOL)SendMessageA((w),HDM_SETITEMA,(WPARAM)(i),(LPARAM)(const HDITEMA*)(d)) #define Header_SetItemA(w,i,d) (BOOL)SendMessageA((w),HDM_SETITEMA,(WPARAM)(i),(LPARAM)(const HDITEMA*)(d))
@ -198,15 +204,30 @@ BOOL WINAPI DPA_Merge (const HDPA, const HDPA, DWORD, PFNDPACOMPARE, PFNDPAMERGE
#define ListView_FindItemA(w,p,i) (INT)SendMessageA((w),LVM_FINDITEMA,(WPARAM)(p),(LPARAM)(LVFINDINFOA*)(i)) #define ListView_FindItemA(w,p,i) (INT)SendMessageA((w),LVM_FINDITEMA,(WPARAM)(p),(LPARAM)(LVFINDINFOA*)(i))
#define ListView_FindItemW(w,p,i) (INT)SendMessageW((w),LVM_FINDITEMW,(WPARAM)(p),(LPARAM)(LVFINDINFOW*)(i)) #define ListView_FindItemW(w,p,i) (INT)SendMessageW((w),LVM_FINDITEMW,(WPARAM)(p),(LPARAM)(LVFINDINFOW*)(i))
#define FLATSB_CLASSA "flatsb_class32"
/* FIXME: Rebar definition hack, should be patched in Wine */
#undef RB_GETBANDINFO
#define RB_GETBANDINFO (WM_USER+5) /* just for compatibility */
/* Property sheet Wizard 97 styles */ /* Property sheet Wizard 97 styles */
#define PSH_WIZARD97_OLD 0x2000 #define PSH_WIZARD97_OLD 0x2000
#define PSH_WIZARD97_NEW 0x1000000 #define PSH_WIZARD97_NEW 0x1000000
/* FIXME: Submit to W32API */
#ifndef HDM_SETBITMAPMARGIN
#define HDM_SETBITMAPMARGIN (HDM_FIRST+20)
#endif
#ifndef HDM_GETBITMAPMARGIN
#define HDM_GETBITMAPMARGIN (HDM_FIRST+21)
#endif
#ifndef RBBS_USECHEVRON
#define RBBS_USECHEVRON 0x00000200
#endif
#ifndef RBHT_CHEVRON
#define RBHT_CHEVRON 0x0008
#endif
#ifndef RB_PUSHCHEVRON
#define RB_PUSHCHEVRON (WM_USER+43)
#endif
#ifndef RBN_CHEVRONPUSHED
#define RBN_CHEVRONPUSHED (RBN_FIRST-10)
#endif #endif
#endif /* __REACTOS__ */
#endif /* __WINE_COMCTL32_H */ #endif /* __WINE_COMCTL32_H */

View file

@ -32,9 +32,11 @@ IDI_DRAGARROW ICON "res/idi_dragarrow.ico"
#include "res/comctl_En.rc" #include "res/comctl_En.rc"
#include "res/comctl_Cn.rc" #include "res/comctl_Cn.rc"
#include "res/comctl_De.rc" #include "res/comctl_De.rc"
#include "res/comctl_Fr.rc"
#include "res/comctl_Es.rc" #include "res/comctl_Es.rc"
#include "res/comctl_Fr.rc"
#include "res/comctl_It.rc"
#include "res/comctl_Ko.rc" #include "res/comctl_Ko.rc"
#include "res/comctl_Nl.rc"
#include "res/comctl_Pl.rc" #include "res/comctl_Pl.rc"
#include "res/comctl_Pt.rc" #include "res/comctl_Pt.rc"
#include "res/comctl_Ru.rc" #include "res/comctl_Ru.rc"

View file

@ -38,8 +38,8 @@
#include "winuser.h" #include "winuser.h"
#include "winnls.h" #include "winnls.h"
#include "commctrl.h" #include "commctrl.h"
#include "comctl32.h"
#include "wine/debug.h" #include "wine/debug.h"
#include "comctl32.h"
WINE_DEFAULT_DEBUG_CHANNEL(commctrl); WINE_DEFAULT_DEBUG_CHANNEL(commctrl);

View file

@ -3,6 +3,7 @@
* *
* Copyright 1998 Eric Kohl * Copyright 1998 Eric Kohl
* Copyright 2000 Eric Kohl for CodeWeavers * Copyright 2000 Eric Kohl for CodeWeavers
* Copyright 2003 Maxime Bellenge
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -28,8 +29,6 @@
* - Use notification format * - Use notification format
* - Correct the order maintenance code to preserve valid order * - Correct the order maintenance code to preserve valid order
* *
* FIXME:
* - Little flaw when drawing a bitmap on the right side of the text.
*/ */
#include <stdarg.h> #include <stdarg.h>
@ -82,6 +81,7 @@ typedef struct
INT xOldTrack; /* track offset (see above) after the last WM_MOUSEMOVE */ INT xOldTrack; /* track offset (see above) after the last WM_MOUSEMOVE */
INT nOldWidth; /* width of a sizing item after the last WM_MOUSEMOVE */ INT nOldWidth; /* width of a sizing item after the last WM_MOUSEMOVE */
INT iHotItem; /* index of hot item (cursor is over this item) */ INT iHotItem; /* index of hot item (cursor is over this item) */
INT iMargin; /* width of the margin that surrounds a bitmap */
HIMAGELIST himl; /* handle to a image list (may be 0) */ HIMAGELIST himl; /* handle to a image list (may be 0) */
HEADER_ITEM *items; /* pointer to array of HEADER_ITEM's */ HEADER_ITEM *items; /* pointer to array of HEADER_ITEM's */
@ -234,19 +234,19 @@ HEADER_DrawItem (HWND hwnd, HDC hdc, INT iItem, BOOL bHotTrack)
} }
if (rx >= bmp.bmWidth + 6) { if (rx >= bmp.bmWidth + infoPtr->iMargin) {
cx = bmp.bmWidth; cx = bmp.bmWidth;
} }
else { else {
cx = rx - 6; cx = rx - infoPtr->iMargin;
} }
hdcBitmap = CreateCompatibleDC (hdc); hdcBitmap = CreateCompatibleDC (hdc);
SelectObject (hdcBitmap, phdi->hbm); SelectObject (hdcBitmap, phdi->hbm);
BitBlt (hdc, r.left + 3, yD, cx, cy, hdcBitmap, 0, yS, SRCCOPY); BitBlt (hdc, r.left + infoPtr->iMargin, yD, cx, cy, hdcBitmap, 0, yS, SRCCOPY);
DeleteDC (hdcBitmap); DeleteDC (hdcBitmap);
r.left += (bmp.bmWidth + 3); r.left += (bmp.bmWidth + infoPtr->iMargin);
} }
@ -259,9 +259,13 @@ HEADER_DrawItem (HWND hwnd, HDC hdc, INT iItem, BOOL bHotTrack)
GetObjectA (phdi->hbm, sizeof(BITMAP), (LPVOID)&bmp); GetObjectA (phdi->hbm, sizeof(BITMAP), (LPVOID)&bmp);
textRect = r; textRect = r;
DrawTextW (hdc, phdi->pszText, -1, if (phdi->fmt & HDF_STRING) {
&textRect, DT_LEFT|DT_VCENTER|DT_SINGLELINE|DT_CALCRECT); DrawTextW (hdc, phdi->pszText, -1,
tx = textRect.right - textRect.left; &textRect, DT_LEFT|DT_VCENTER|DT_SINGLELINE|DT_CALCRECT);
tx = textRect.right - textRect.left;
}
else
tx = 0;
ry = r.bottom - r.top; ry = r.bottom - r.top;
rx = r.right - r.left; rx = r.right - r.left;
@ -277,18 +281,18 @@ HEADER_DrawItem (HWND hwnd, HDC hdc, INT iItem, BOOL bHotTrack)
} }
if (r.left + tx + bmp.bmWidth + 9 <= r.right) { if (r.left + tx + bmp.bmWidth + 2*infoPtr->iMargin <= r.right) {
cx = bmp.bmWidth; cx = bmp.bmWidth;
xD = r.left + tx + 6; xD = r.left + tx + infoPtr->iMargin;
} }
else { else {
if (rx >= bmp.bmWidth + 6) { if (rx >= bmp.bmWidth + infoPtr->iMargin ) {
cx = bmp.bmWidth; cx = bmp.bmWidth;
xD = r.right - bmp.bmWidth - 3; xD = r.right - bmp.bmWidth - infoPtr->iMargin;
r.right = xD - 3; r.right = xD - infoPtr->iMargin;
} }
else { else {
cx = rx - 3; cx = rx - infoPtr->iMargin;
xD = r.left; xD = r.left;
r.right = r.left; r.right = r.left;
} }
@ -300,21 +304,37 @@ HEADER_DrawItem (HWND hwnd, HDC hdc, INT iItem, BOOL bHotTrack)
DeleteDC (hdcBitmap); DeleteDC (hdcBitmap);
} }
if ((phdi->fmt & HDF_IMAGE) && (infoPtr->himl)) { if ((phdi->fmt & HDF_IMAGE) && !(phdi->fmt & HDF_BITMAP_ON_RIGHT) && (infoPtr->himl)) {
r.left +=3; r.left += infoPtr->iMargin;
/* FIXME: (r.bottom- (infoPtr->himl->cy))/2 should horicontal center the image ImageList_DrawEx(infoPtr->himl, phdi->iImage, hdc, r.left, r.top + (r.bottom-r.top- infoPtr->himl->cy)/2,
It looks like it doesn't work as expected*/ infoPtr->himl->cx, r.bottom-r.top, CLR_DEFAULT, CLR_DEFAULT, 0);
ImageList_Draw (infoPtr->himl, phdi->iImage,hdc,r.left, (r.bottom- (infoPtr->himl->cy))/2,0); r.left += infoPtr->himl->cx;
r.left += infoPtr->himl->cx;
} }
if ((phdi->fmt & HDF_IMAGE) && (phdi->fmt & HDF_BITMAP_ON_RIGHT) && (infoPtr->himl)) {
RECT textRect;
INT tx;
textRect = r;
if (phdi->fmt & HDF_STRING) {
DrawTextW (hdc, phdi->pszText, -1,
&textRect, DT_LEFT|DT_VCENTER|DT_SINGLELINE|DT_CALCRECT);
tx = textRect.right - textRect.left;
}
else
tx = 0;
ImageList_DrawEx(infoPtr->himl, phdi->iImage, hdc, r.left + tx + 2*infoPtr->iMargin,
r.top + (r.bottom-r.top-infoPtr->himl->cy)/2, infoPtr->himl->cx, r.bottom-r.top,
CLR_DEFAULT, CLR_DEFAULT, 0);
}
if (((phdi->fmt & HDF_STRING) if (((phdi->fmt & HDF_STRING)
|| (!(phdi->fmt & (HDF_OWNERDRAW|HDF_STRING|HDF_BITMAP| || (!(phdi->fmt & (HDF_OWNERDRAW|HDF_STRING|HDF_BITMAP|
HDF_BITMAP_ON_RIGHT|HDF_IMAGE)))) /* no explicit format specified? */ HDF_BITMAP_ON_RIGHT|HDF_IMAGE)))) /* no explicit format specified? */
&& (phdi->pszText)) { && (phdi->pszText)) {
oldBkMode = SetBkMode(hdc, TRANSPARENT); oldBkMode = SetBkMode(hdc, TRANSPARENT);
r.left += 3 ; r.left += infoPtr->iMargin;
r.right -= 3; r.right -= infoPtr->iMargin;
SetTextColor (hdc, (bHotTrack) ? COLOR_HIGHLIGHT : COLOR_BTNTEXT); SetTextColor (hdc, (bHotTrack) ? COLOR_HIGHLIGHT : COLOR_BTNTEXT);
DrawTextW (hdc, phdi->pszText, -1, DrawTextW (hdc, phdi->pszText, -1,
&r, uTextJustify|DT_END_ELLIPSIS|DT_VCENTER|DT_SINGLELINE); &r, uTextJustify|DT_END_ELLIPSIS|DT_VCENTER|DT_SINGLELINE);
@ -904,8 +924,9 @@ HEADER_InsertItemA (HWND hwnd, WPARAM wParam, LPARAM lParam)
lpItem->cxy = phdi->cxy; lpItem->cxy = phdi->cxy;
if (phdi->mask & HDI_TEXT) { if (phdi->mask & HDI_TEXT) {
static char empty[] = "";
if (!phdi->pszText) /* null pointer check */ if (!phdi->pszText) /* null pointer check */
phdi->pszText = ""; phdi->pszText = empty;
if (phdi->pszText != LPSTR_TEXTCALLBACKA) { if (phdi->pszText != LPSTR_TEXTCALLBACKA) {
len = MultiByteToWideChar(CP_ACP, 0, phdi->pszText, -1, NULL, 0); len = MultiByteToWideChar(CP_ACP, 0, phdi->pszText, -1, NULL, 0);
lpItem->pszText = Alloc( len*sizeof(WCHAR) ); lpItem->pszText = Alloc( len*sizeof(WCHAR) );
@ -1091,6 +1112,25 @@ HEADER_SetImageList (HWND hwnd, HIMAGELIST himl)
} }
static LRESULT
HEADER_GetBitmapMargin(HWND hwnd)
{
HEADER_INFO *infoPtr = HEADER_GetInfoPtr(hwnd);
return infoPtr->iMargin;
}
static LRESULT
HEADER_SetBitmapMargin(HWND hwnd, WPARAM wParam)
{
HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);
INT oldMargin = infoPtr->iMargin;
infoPtr->iMargin = (INT)wParam;
return oldMargin;
}
static LRESULT static LRESULT
HEADER_SetItemA (HWND hwnd, WPARAM wParam, LPARAM lParam) HEADER_SetItemA (HWND hwnd, WPARAM wParam, LPARAM lParam)
{ {
@ -1261,6 +1301,7 @@ HEADER_Create (HWND hwnd, WPARAM wParam, LPARAM lParam)
infoPtr->himl = 0; infoPtr->himl = 0;
infoPtr->iHotItem = -1; infoPtr->iHotItem = -1;
infoPtr->bUnicode = IsWindowUnicode (hwnd); infoPtr->bUnicode = IsWindowUnicode (hwnd);
infoPtr->iMargin = 3*GetSystemMetrics(SM_CXEDGE);
infoPtr->nNotifyFormat = infoPtr->nNotifyFormat =
SendMessageA (infoPtr->hwndNotify, WM_NOTIFYFORMAT, (WPARAM)hwnd, NF_QUERY); SendMessageA (infoPtr->hwndNotify, WM_NOTIFYFORMAT, (WPARAM)hwnd, NF_QUERY);
@ -1675,7 +1716,8 @@ HEADER_WindowProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
/* case HDM_EDITFILTER: */ /* case HDM_EDITFILTER: */
/* case HDM_GETBITMAPMARGIN: */ case HDM_GETBITMAPMARGIN:
return HEADER_GetBitmapMargin(hwnd);
case HDM_GETIMAGELIST: case HDM_GETIMAGELIST:
return HEADER_GetImageList (hwnd); return HEADER_GetImageList (hwnd);
@ -1713,7 +1755,8 @@ HEADER_WindowProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
case HDM_ORDERTOINDEX: case HDM_ORDERTOINDEX:
return HEADER_OrderToIndex(hwnd, wParam); return HEADER_OrderToIndex(hwnd, wParam);
/* case HDM_SETBITMAPMARGIN: */ case HDM_SETBITMAPMARGIN:
return HEADER_SetBitmapMargin(hwnd, wParam);
/* case HDM_SETFILTERCHANGETIMEOUT: */ /* case HDM_SETFILTERCHANGETIMEOUT: */

View file

@ -450,7 +450,7 @@ BOOL WINAPI
ImageList_Copy (HIMAGELIST himlDst, INT iDst, HIMAGELIST himlSrc, ImageList_Copy (HIMAGELIST himlDst, INT iDst, HIMAGELIST himlSrc,
INT iSrc, UINT uFlags) INT iSrc, UINT uFlags)
{ {
TRACE("iDst=%d iSrc=%d\n", iDst, iSrc); TRACE("himlDst=%p iDst=%d himlSrc=%p iSrc=%d\n", himlDst, iDst, himlSrc, iSrc);
if (!is_valid(himlSrc) || !is_valid(himlDst)) if (!is_valid(himlSrc) || !is_valid(himlDst))
return FALSE; return FALSE;
@ -1165,7 +1165,7 @@ ImageList_DrawIndirect (IMAGELISTDRAWPARAMS *pimldp)
if (fState & ILS_SATURATE) FIXME("ILS_SATURATE: unimplemented!\n"); if (fState & ILS_SATURATE) FIXME("ILS_SATURATE: unimplemented!\n");
if (fState & ILS_GLOW) FIXME("ILS_GLOW: unimplemented!\n"); if (fState & ILS_GLOW) FIXME("ILS_GLOW: unimplemented!\n");
if (fState & ILS_SHADOW) FIXME("ILS_SHADOW: unimplemented!\n"); if (fState & ILS_SHADOW) FIXME("ILS_SHADOW: unimplemented!\n");
if (fState & ILS_ALPHA) FIXME("ILS_SHADOW: unimplemented!\n"); if (fState & ILS_ALPHA) FIXME("ILS_ALPHA: unimplemented!\n");
if (fStyle & ILD_PRESERVEALPHA) FIXME("ILD_PRESERVEALPHA: unimplemented!\n"); if (fStyle & ILD_PRESERVEALPHA) FIXME("ILD_PRESERVEALPHA: unimplemented!\n");
if (fStyle & ILD_SCALE) FIXME("ILD_SCALE: unimplemented!\n"); if (fStyle & ILD_SCALE) FIXME("ILD_SCALE: unimplemented!\n");
@ -2650,8 +2650,8 @@ _write_bitmap(HBITMAP hBitmap, LPSTREAM pstm, int cx, int cy)
/* XXX is this always correct? */ /* XXX is this always correct? */
icount = bm.bmWidth / cx; icount = bm.bmWidth / cx;
nwidth = cx << 2; nwidth = cx;
nheight = cy * ((icount+3)>>2); nheight = cy * icount;
bitCount = bm.bmBitsPixel == 1 ? 1 : 24; bitCount = bm.bmBitsPixel == 1 ? 1 : 24;
sizeImage = ((((bm.bmWidth * bitCount)+31) & ~31) >> 3) * bm.bmHeight; sizeImage = ((((bm.bmWidth * bitCount)+31) & ~31) >> 3) * bm.bmHeight;
@ -2682,13 +2682,13 @@ _write_bitmap(HBITMAP hBitmap, LPSTREAM pstm, int cx, int cy)
bmih->biPlanes = 1; bmih->biPlanes = 1;
bmih->biBitCount = bitCount; bmih->biBitCount = bitCount;
bmih->biCompression = BI_RGB; bmih->biCompression = BI_RGB;
bmih->biSizeImage = nsizeImage; bmih->biSizeImage = sizeImage;
bmih->biXPelsPerMeter = 0; bmih->biXPelsPerMeter = 0;
bmih->biYPelsPerMeter = 0; bmih->biYPelsPerMeter = 0;
bmih->biClrUsed = 0; bmih->biClrUsed = 0;
bmih->biClrImportant = 0; bmih->biClrImportant = 0;
lpBitsOrg = (LPBYTE)LocalAlloc(LMEM_ZEROINIT, nsizeImage); lpBitsOrg = (LPBYTE)LocalAlloc(LMEM_ZEROINIT, sizeImage);
if(!GetDIBits(xdc, hBitmap, 0, bm.bmHeight, lpBitsOrg, if(!GetDIBits(xdc, hBitmap, 0, bm.bmHeight, lpBitsOrg,
(BITMAPINFO *)bmih, DIB_RGB_COLORS)) (BITMAPINFO *)bmih, DIB_RGB_COLORS))
goto failed; goto failed;
@ -2706,6 +2706,7 @@ _write_bitmap(HBITMAP hBitmap, LPSTREAM pstm, int cx, int cy)
bmih->biWidth = nwidth; bmih->biWidth = nwidth;
bmih->biHeight = nheight; bmih->biHeight = nheight;
bmih->biSizeImage = nsizeImage;
if(bitCount == 1) { if(bitCount == 1) {
/* Hack. */ /* Hack. */

View file

@ -78,7 +78,6 @@
* *
* Extended Styles * Extended Styles
* -- LVS_EX_BORDERSELECT * -- LVS_EX_BORDERSELECT
* -- LVS_EX_CHECKBOXES
* -- LVS_EX_FLATSB * -- LVS_EX_FLATSB
* -- LVS_EX_GRIDLINES * -- LVS_EX_GRIDLINES
* -- LVS_EX_HEADERDRAGDROP * -- LVS_EX_HEADERDRAGDROP
@ -88,14 +87,13 @@
* -- LVS_EX_ONECLICKACTIVATE * -- LVS_EX_ONECLICKACTIVATE
* -- LVS_EX_REGIONAL * -- LVS_EX_REGIONAL
* -- LVS_EX_SIMPLESELECT * -- LVS_EX_SIMPLESELECT
* -- LVS_EX_SUBITEMIMAGES
* -- LVS_EX_TRACKSELECT * -- LVS_EX_TRACKSELECT
* -- LVS_EX_TWOCLICKACTIVATE * -- LVS_EX_TWOCLICKACTIVATE
* -- LVS_EX_UNDERLINECOLD * -- LVS_EX_UNDERLINECOLD
* -- LVS_EX_UNDERLINEHOT * -- LVS_EX_UNDERLINEHOT
* *
* Notifications: * Notifications:
* -- LVN_BEGINDRAG, LVN_BEGINRDRAG * -- LVN_BEGINRDRAG
* -- LVN_BEGINSCROLL, LVN_ENDSCROLL * -- LVN_BEGINSCROLL, LVN_ENDSCROLL
* -- LVN_GETINFOTIP * -- LVN_GETINFOTIP
* -- LVN_HOTTRACK * -- LVN_HOTTRACK
@ -107,7 +105,6 @@
* *
* Messages: * Messages:
* -- LVM_CANCELEDITLABEL * -- LVM_CANCELEDITLABEL
* -- LVM_CREATEDRAGIMAGE
* -- LVM_ENABLEGROUPVIEW * -- LVM_ENABLEGROUPVIEW
* -- LVM_GETBKIMAGE, LVM_SETBKIMAGE * -- LVM_GETBKIMAGE, LVM_SETBKIMAGE
* -- LVM_GETGROUPINFO, LVM_SETGROUPINFO * -- LVM_GETGROUPINFO, LVM_SETGROUPINFO
@ -238,6 +235,7 @@ typedef struct tagLISTVIEW_INFO
INT nSelectionMark; INT nSelectionMark;
INT nHotItem; INT nHotItem;
SHORT notifyFormat; SHORT notifyFormat;
HWND hwndNotify;
RECT rcList; /* This rectangle is really the window RECT rcList; /* This rectangle is really the window
* client rectangle possibly reduced by the * client rectangle possibly reduced by the
* horizontal scroll bar and/or header - see * horizontal scroll bar and/or header - see
@ -398,6 +396,7 @@ static LRESULT LISTVIEW_HScroll(LISTVIEW_INFO *, INT, INT, HWND);
static INT LISTVIEW_GetTopIndex(LISTVIEW_INFO *); static INT LISTVIEW_GetTopIndex(LISTVIEW_INFO *);
static BOOL LISTVIEW_EnsureVisible(LISTVIEW_INFO *, INT, BOOL); static BOOL LISTVIEW_EnsureVisible(LISTVIEW_INFO *, INT, BOOL);
static HWND CreateEditLabelT(LISTVIEW_INFO *, LPCWSTR, DWORD, INT, INT, INT, INT, BOOL); static HWND CreateEditLabelT(LISTVIEW_INFO *, LPCWSTR, DWORD, INT, INT, INT, INT, BOOL);
static HIMAGELIST LISTVIEW_SetImageList(LISTVIEW_INFO *, INT, HIMAGELIST);
/******** Text handling functions *************************************/ /******** Text handling functions *************************************/
@ -529,7 +528,7 @@ static char* debug_getbuf()
return buffers[index++ % DEBUG_BUFFERS]; return buffers[index++ % DEBUG_BUFFERS];
} }
static inline char* debugrange(const RANGE *lprng) static inline const char* debugrange(const RANGE *lprng)
{ {
if (lprng) if (lprng)
{ {
@ -539,7 +538,7 @@ static inline char* debugrange(const RANGE *lprng)
} else return "(null)"; } else return "(null)";
} }
static inline char* debugpoint(const POINT *lppt) static inline const char* debugpoint(const POINT *lppt)
{ {
if (lppt) if (lppt)
{ {
@ -549,7 +548,7 @@ static inline char* debugpoint(const POINT *lppt)
} else return "(null)"; } else return "(null)";
} }
static inline char* debugrect(const RECT *rect) static inline const char* debugrect(const RECT *rect)
{ {
if (rect) if (rect)
{ {
@ -560,7 +559,7 @@ static inline char* debugrect(const RECT *rect)
} else return "(null)"; } else return "(null)";
} }
static char * debugscrollinfo(const SCROLLINFO *pScrollInfo) static const char * debugscrollinfo(const SCROLLINFO *pScrollInfo)
{ {
char* buf = debug_getbuf(), *text = buf; char* buf = debug_getbuf(), *text = buf;
int len, size = DEBUG_BUFFER_SIZE; int len, size = DEBUG_BUFFER_SIZE;
@ -592,7 +591,7 @@ undo:
return text; return text;
} }
static char* debugnmlistview(const NMLISTVIEW *plvnm) static const char* debugnmlistview(const NMLISTVIEW *plvnm)
{ {
if (plvnm) if (plvnm)
{ {
@ -605,7 +604,7 @@ static char* debugnmlistview(const NMLISTVIEW *plvnm)
} else return "(null)"; } else return "(null)";
} }
static char* debuglvitem_t(const LVITEMW *lpLVItem, BOOL isW) static const char* debuglvitem_t(const LVITEMW *lpLVItem, BOOL isW)
{ {
char* buf = debug_getbuf(), *text = buf; char* buf = debug_getbuf(), *text = buf;
int len, size = DEBUG_BUFFER_SIZE; int len, size = DEBUG_BUFFER_SIZE;
@ -641,7 +640,7 @@ undo:
return text; return text;
} }
static char* debuglvcolumn_t(const LVCOLUMNW *lpColumn, BOOL isW) static const char* debuglvcolumn_t(const LVCOLUMNW *lpColumn, BOOL isW)
{ {
char* buf = debug_getbuf(), *text = buf; char* buf = debug_getbuf(), *text = buf;
int len, size = DEBUG_BUFFER_SIZE; int len, size = DEBUG_BUFFER_SIZE;
@ -681,7 +680,7 @@ undo:
return text; return text;
} }
static char* debuglvhittestinfo(const LVHITTESTINFO *lpht) static const char* debuglvhittestinfo(const LVHITTESTINFO *lpht)
{ {
if (lpht) if (lpht)
{ {
@ -721,7 +720,7 @@ static LRESULT notify_hdr(LISTVIEW_INFO *infoPtr, INT code, LPNMHDR pnmh)
pnmh->hwndFrom = infoPtr->hwndSelf; pnmh->hwndFrom = infoPtr->hwndSelf;
pnmh->idFrom = GetWindowLongW(infoPtr->hwndSelf, GWL_ID); pnmh->idFrom = GetWindowLongW(infoPtr->hwndSelf, GWL_ID);
pnmh->code = code; pnmh->code = code;
result = SendMessageW(GetParent(infoPtr->hwndSelf), WM_NOTIFY, result = SendMessageW(infoPtr->hwndNotify, WM_NOTIFY,
(WPARAM)pnmh->idFrom, (LPARAM)pnmh); (WPARAM)pnmh->idFrom, (LPARAM)pnmh);
TRACE(" <= %ld\n", result); TRACE(" <= %ld\n", result);
@ -1738,7 +1737,7 @@ static void LISTVIEW_ShowFocusRect(LISTVIEW_INFO *infoPtr, BOOL fShow)
LISTVIEW_GetItemBox(infoPtr, dis.itemID, &dis.rcItem); LISTVIEW_GetItemBox(infoPtr, dis.itemID, &dis.rcItem);
dis.itemData = item.lParam; dis.itemData = item.lParam;
SendMessageW(GetParent(infoPtr->hwndSelf), WM_DRAWITEM, dis.CtlID, (LPARAM)&dis); SendMessageW(infoPtr->hwndNotify, WM_DRAWITEM, dis.CtlID, (LPARAM)&dis);
} }
else else
{ {
@ -1949,7 +1948,9 @@ static void LISTVIEW_GetItemMetrics(LISTVIEW_INFO *infoPtr, const LVITEMW *lpLVI
Icon.left = State.right; Icon.left = State.right;
Icon.top = Box.top; Icon.top = Box.top;
Icon.right = Icon.left; Icon.right = Icon.left;
if (infoPtr->himlSmall && (!lpColumnInfo || lpLVItem->iSubItem == 0 || (lpColumnInfo->fmt & LVCFMT_IMAGE))) if (infoPtr->himlSmall &&
(!lpColumnInfo || lpLVItem->iSubItem == 0 || (lpColumnInfo->fmt & LVCFMT_IMAGE) ||
((infoPtr->dwLvExStyle & LVS_EX_SUBITEMIMAGES) && lpLVItem->iImage != I_IMAGECALLBACK)))
Icon.right += infoPtr->iconSize.cx; Icon.right += infoPtr->iconSize.cx;
Icon.bottom = Icon.top + infoPtr->nItemHeight; Icon.bottom = Icon.top + infoPtr->nItemHeight;
} }
@ -3388,6 +3389,7 @@ static BOOL set_sub_item(LISTVIEW_INFO *infoPtr, const LVITEMW *lpLVItem, BOOL i
return FALSE; return FALSE;
} }
lpSubItem->iSubItem = lpLVItem->iSubItem; lpSubItem->iSubItem = lpLVItem->iSubItem;
lpSubItem->hdr.iImage = I_IMAGECALLBACK;
*bChanged = TRUE; *bChanged = TRUE;
} }
@ -3597,6 +3599,12 @@ static BOOL LISTVIEW_DrawItem(LISTVIEW_INFO *infoPtr, HDC hdc, INT nItem, INT nS
cdsubitemmode = notify_customdraw(infoPtr, CDDS_PREPAINT, &nmlvcd); cdsubitemmode = notify_customdraw(infoPtr, CDDS_PREPAINT, &nmlvcd);
if (nSubItem == 0) infoPtr->cditemmode = cdsubitemmode; if (nSubItem == 0) infoPtr->cditemmode = cdsubitemmode;
if (cdsubitemmode & CDRF_SKIPDEFAULT) goto postpaint; if (cdsubitemmode & CDRF_SKIPDEFAULT) goto postpaint;
/* we have to send a CDDS_SUBITEM customdraw explicitly for subitem 0 */
if (nSubItem == 0 && cdsubitemmode == CDRF_NOTIFYITEMDRAW)
{
cdsubitemmode = notify_customdraw(infoPtr, CDDS_SUBITEM | CDDS_ITEMPREPAINT, &nmlvcd);
if (cdsubitemmode & CDRF_SKIPDEFAULT) goto postpaint;
}
if (nSubItem == 0 || (cdmode & CDRF_NOTIFYITEMDRAW)) if (nSubItem == 0 || (cdmode & CDRF_NOTIFYITEMDRAW))
prepaint_setup(infoPtr, hdc, &nmlvcd); prepaint_setup(infoPtr, hdc, &nmlvcd);
@ -3680,7 +3688,6 @@ postpaint:
static void LISTVIEW_RefreshOwnerDraw(LISTVIEW_INFO *infoPtr, ITERATOR *i, HDC hdc, DWORD cdmode) static void LISTVIEW_RefreshOwnerDraw(LISTVIEW_INFO *infoPtr, ITERATOR *i, HDC hdc, DWORD cdmode)
{ {
UINT uID = GetWindowLongW(infoPtr->hwndSelf, GWL_ID); UINT uID = GetWindowLongW(infoPtr->hwndSelf, GWL_ID);
HWND hwndParent = GetParent(infoPtr->hwndSelf);
DWORD cditemmode = CDRF_DODEFAULT; DWORD cditemmode = CDRF_DODEFAULT;
NMLVCUSTOMDRAW nmlvcd; NMLVCUSTOMDRAW nmlvcd;
POINT Origin, Position; POINT Origin, Position;
@ -3721,16 +3728,18 @@ static void LISTVIEW_RefreshOwnerDraw(LISTVIEW_INFO *infoPtr, ITERATOR *i, HDC h
TRACE("item=%s, rcItem=%s\n", debuglvitem_t(&item, TRUE), debugrect(&dis.rcItem)); TRACE("item=%s, rcItem=%s\n", debuglvitem_t(&item, TRUE), debugrect(&dis.rcItem));
/*
* Even if we do not send the CDRF_NOTIFYITEMDRAW we need to fill the nmlvcd
* structure for the rest. of the paint cycle
*/
customdraw_fill(&nmlvcd, infoPtr, hdc, &dis.rcItem, &item);
if (cdmode & CDRF_NOTIFYITEMDRAW) if (cdmode & CDRF_NOTIFYITEMDRAW)
{
customdraw_fill(&nmlvcd, infoPtr, hdc, &dis.rcItem, &item);
cditemmode = notify_customdraw(infoPtr, CDDS_PREPAINT, &nmlvcd); cditemmode = notify_customdraw(infoPtr, CDDS_PREPAINT, &nmlvcd);
}
if (!(cditemmode & CDRF_SKIPDEFAULT)) if (!(cditemmode & CDRF_SKIPDEFAULT))
{ {
prepaint_setup (infoPtr, hdc, &nmlvcd); prepaint_setup (infoPtr, hdc, &nmlvcd);
SendMessageW(hwndParent, WM_DRAWITEM, dis.CtlID, (LPARAM)&dis); SendMessageW(infoPtr->hwndNotify, WM_DRAWITEM, dis.CtlID, (LPARAM)&dis);
} }
if (cditemmode & CDRF_NOTIFYPOSTPAINT) if (cditemmode & CDRF_NOTIFYPOSTPAINT)
@ -4000,7 +4009,70 @@ static DWORD LISTVIEW_ApproximateViewRect(LISTVIEW_INFO *infoPtr, INT nItemCount
return dwViewRect; return dwViewRect;
} }
/* << LISTVIEW_CreateDragImage >> */
/***
* DESCRIPTION:
* Create a drag image list for the specified item.
*
* PARAMETER(S):
* [I] infoPtr : valid pointer to the listview structure
* [I] iItem : index of item
* [O] lppt : Upperr-left corner of the image
*
* RETURN:
* Returns a handle to the image list if successful, NULL otherwise.
*/
static HIMAGELIST LISTVIEW_CreateDragImage(LISTVIEW_INFO *infoPtr, INT iItem, LPPOINT lppt)
{
RECT rcItem;
SIZE size;
POINT pos;
HDC hdc, hdcOrig;
HBITMAP hbmp, hOldbmp;
HIMAGELIST dragList = 0;
TRACE("iItem=%d Count=%d \n", iItem, infoPtr->nItemCount);
if (iItem < 0 || iItem >= infoPtr->nItemCount)
return 0;
rcItem.left = LVIR_BOUNDS;
if (!LISTVIEW_GetItemRect(infoPtr, iItem, &rcItem))
return 0;
lppt->x = rcItem.left;
lppt->y = rcItem.top;
size.cx = rcItem.right - rcItem.left;
size.cy = rcItem.bottom - rcItem.top;
hdcOrig = GetDC(infoPtr->hwndSelf);
hdc = CreateCompatibleDC(hdcOrig);
hbmp = CreateCompatibleBitmap(hdcOrig, size.cx, size.cy);
hOldbmp = SelectObject(hdc, hbmp);
rcItem.left = rcItem.top = 0;
rcItem.right = size.cx;
rcItem.bottom = size.cy;
FillRect(hdc, &rcItem, infoPtr->hBkBrush);
pos.x = pos.y = 0;
if (LISTVIEW_DrawItem(infoPtr, hdc, iItem, 0, pos, infoPtr->cditemmode))
{
dragList = ImageList_Create(size.cx, size.cy, ILC_COLOR, 10, 10);
SelectObject(hdc, hOldbmp);
ImageList_Add(dragList, hbmp, 0);
}
else
SelectObject(hdc, hOldbmp);
DeleteObject(hbmp);
DeleteDC(hdc);
ReleaseDC(infoPtr->hwndSelf, hdcOrig);
TRACE("ret=%p\n", dragList);
return dragList;
}
/*** /***
@ -4912,6 +4984,7 @@ static BOOL LISTVIEW_GetItemT(LISTVIEW_INFO *infoPtr, LPLVITEMW lpLVItem, BOOL i
ITEM_INFO *lpItem; ITEM_INFO *lpItem;
ITEMHDR* pItemHdr; ITEMHDR* pItemHdr;
HDPA hdpaSubItems; HDPA hdpaSubItems;
INT isubitem;
TRACE("(lpLVItem=%s, isW=%d)\n", debuglvitem_t(lpLVItem, isW), isW); TRACE("(lpLVItem=%s, isW=%d)\n", debuglvitem_t(lpLVItem, isW), isW);
@ -4920,6 +4993,9 @@ static BOOL LISTVIEW_GetItemT(LISTVIEW_INFO *infoPtr, LPLVITEMW lpLVItem, BOOL i
if (lpLVItem->mask == 0) return TRUE; if (lpLVItem->mask == 0) return TRUE;
/* make a local copy */
isubitem = lpLVItem->iSubItem;
/* a quick optimization if all we're asked is the focus state /* a quick optimization if all we're asked is the focus state
* these queries are worth optimising since they are common, * these queries are worth optimising since they are common,
* and can be answered in constant time, without the heavy accesses */ * and can be answered in constant time, without the heavy accesses */
@ -4946,7 +5022,7 @@ static BOOL LISTVIEW_GetItemT(LISTVIEW_INFO *infoPtr, LPLVITEMW lpLVItem, BOOL i
* depend on the uninitialized fields being 0 */ * depend on the uninitialized fields being 0 */
dispInfo.item.mask = lpLVItem->mask & ~LVIF_PARAM; dispInfo.item.mask = lpLVItem->mask & ~LVIF_PARAM;
dispInfo.item.iItem = lpLVItem->iItem; dispInfo.item.iItem = lpLVItem->iItem;
dispInfo.item.iSubItem = lpLVItem->iSubItem; dispInfo.item.iSubItem = isubitem;
if (lpLVItem->mask & LVIF_TEXT) if (lpLVItem->mask & LVIF_TEXT)
{ {
dispInfo.item.pszText = lpLVItem->pszText; dispInfo.item.pszText = lpLVItem->pszText;
@ -4978,7 +5054,7 @@ static BOOL LISTVIEW_GetItemT(LISTVIEW_INFO *infoPtr, LPLVITEMW lpLVItem, BOOL i
if (lpLVItem->mask & LVIF_PARAM) lpLVItem->lParam = 0; if (lpLVItem->mask & LVIF_PARAM) lpLVItem->lParam = 0;
/* we store only a little state, so if we're not asked, we're done */ /* we store only a little state, so if we're not asked, we're done */
if (!(lpLVItem->mask & LVIF_STATE) || lpLVItem->iSubItem) return TRUE; if (!(lpLVItem->mask & LVIF_STATE) || isubitem) return TRUE;
/* if focus is handled by us, report it */ /* if focus is handled by us, report it */
if ( lpLVItem->stateMask & ~infoPtr->uCallbackMask & LVIS_FOCUSED ) if ( lpLVItem->stateMask & ~infoPtr->uCallbackMask & LVIS_FOCUSED )
@ -5004,24 +5080,33 @@ static BOOL LISTVIEW_GetItemT(LISTVIEW_INFO *infoPtr, LPLVITEMW lpLVItem, BOOL i
lpItem = (ITEM_INFO *)DPA_GetPtr(hdpaSubItems, 0); lpItem = (ITEM_INFO *)DPA_GetPtr(hdpaSubItems, 0);
assert (lpItem); assert (lpItem);
if (lpLVItem->iSubItem) if (isubitem)
{ {
SUBITEM_INFO *lpSubItem = LISTVIEW_GetSubItemPtr(hdpaSubItems, lpLVItem->iSubItem); SUBITEM_INFO *lpSubItem = LISTVIEW_GetSubItemPtr(hdpaSubItems, isubitem);
pItemHdr = lpSubItem ? &lpSubItem->hdr : &callbackHdr; pItemHdr = lpSubItem ? &lpSubItem->hdr : &callbackHdr;
if (!lpSubItem)
{
WARN(" iSubItem invalid (%08x), ignored.\n", isubitem);
isubitem = 0;
}
} }
else else
pItemHdr = &lpItem->hdr; pItemHdr = &lpItem->hdr;
/* Do we need to query the state from the app? */ /* Do we need to query the state from the app? */
if ((lpLVItem->mask & LVIF_STATE) && infoPtr->uCallbackMask && lpLVItem->iSubItem == 0) if ((lpLVItem->mask & LVIF_STATE) && infoPtr->uCallbackMask && isubitem == 0)
{ {
dispInfo.item.mask |= LVIF_STATE; dispInfo.item.mask |= LVIF_STATE;
dispInfo.item.stateMask = infoPtr->uCallbackMask; dispInfo.item.stateMask = infoPtr->uCallbackMask;
} }
/* Do we need to enquire about the image? */ /* Do we need to enquire about the image? */
if ((lpLVItem->mask & LVIF_IMAGE) && pItemHdr->iImage == I_IMAGECALLBACK) if ((lpLVItem->mask & LVIF_IMAGE) && pItemHdr->iImage == I_IMAGECALLBACK &&
(isubitem == 0 || (infoPtr->dwLvExStyle & LVS_EX_SUBITEMIMAGES)))
{
dispInfo.item.mask |= LVIF_IMAGE; dispInfo.item.mask |= LVIF_IMAGE;
dispInfo.item.iImage = I_IMAGECALLBACK;
}
/* Apps depend on calling back for text if it is NULL or LPSTR_TEXTCALLBACKW */ /* Apps depend on calling back for text if it is NULL or LPSTR_TEXTCALLBACKW */
if ((lpLVItem->mask & LVIF_TEXT) && !is_textW(pItemHdr->pszText)) if ((lpLVItem->mask & LVIF_TEXT) && !is_textW(pItemHdr->pszText))
@ -5037,14 +5122,14 @@ static BOOL LISTVIEW_GetItemT(LISTVIEW_INFO *infoPtr, LPLVITEMW lpLVItem, BOOL i
if (dispInfo.item.mask != 0) if (dispInfo.item.mask != 0)
{ {
dispInfo.item.iItem = lpLVItem->iItem; dispInfo.item.iItem = lpLVItem->iItem;
dispInfo.item.iSubItem = lpLVItem->iSubItem; dispInfo.item.iSubItem = lpLVItem->iSubItem; /* yes: the original subitem */
dispInfo.item.lParam = lpItem->lParam; dispInfo.item.lParam = lpItem->lParam;
notify_dispinfoT(infoPtr, LVN_GETDISPINFOW, &dispInfo, isW); notify_dispinfoT(infoPtr, LVN_GETDISPINFOW, &dispInfo, isW);
TRACE(" getdispinfo(2):item=%s\n", debuglvitem_t(&dispInfo.item, isW)); TRACE(" getdispinfo(2):item=%s\n", debuglvitem_t(&dispInfo.item, isW));
} }
/* we should not store values for subitems */ /* we should not store values for subitems */
if (lpLVItem->iSubItem) dispInfo.item.mask &= ~LVIF_DI_SETITEM; if (isubitem) dispInfo.item.mask &= ~LVIF_DI_SETITEM;
/* Now, handle the iImage field */ /* Now, handle the iImage field */
if (dispInfo.item.mask & LVIF_IMAGE) if (dispInfo.item.mask & LVIF_IMAGE)
@ -5054,7 +5139,12 @@ static BOOL LISTVIEW_GetItemT(LISTVIEW_INFO *infoPtr, LPLVITEMW lpLVItem, BOOL i
pItemHdr->iImage = dispInfo.item.iImage; pItemHdr->iImage = dispInfo.item.iImage;
} }
else if (lpLVItem->mask & LVIF_IMAGE) else if (lpLVItem->mask & LVIF_IMAGE)
lpLVItem->iImage = pItemHdr->iImage; {
if(isubitem == 0 || (infoPtr->dwLvExStyle & LVS_EX_SUBITEMIMAGES))
lpLVItem->iImage = pItemHdr->iImage;
else
lpLVItem->iImage = 0;
}
/* The pszText field */ /* The pszText field */
if (dispInfo.item.mask & LVIF_TEXT) if (dispInfo.item.mask & LVIF_TEXT)
@ -5071,7 +5161,7 @@ static BOOL LISTVIEW_GetItemT(LISTVIEW_INFO *infoPtr, LPLVITEMW lpLVItem, BOOL i
} }
/* if this is a subitem, we're done */ /* if this is a subitem, we're done */
if (lpLVItem->iSubItem) return TRUE; if (isubitem) return TRUE;
/* Next is the lParam field */ /* Next is the lParam field */
if (dispInfo.item.mask & LVIF_PARAM) if (dispInfo.item.mask & LVIF_PARAM)
@ -5348,16 +5438,18 @@ static BOOL LISTVIEW_GetSubItemRect(LISTVIEW_INFO *infoPtr, INT nItem, LPRECT lp
POINT Position; POINT Position;
LVITEMW lvItem; LVITEMW lvItem;
if (!lprc || (infoPtr->dwStyle & LVS_TYPEMASK) != LVS_REPORT) return FALSE; if (!lprc) return FALSE;
TRACE("(nItem=%d, nSubItem=%ld)\n", nItem, lprc->top); TRACE("(nItem=%d, nSubItem=%ld)\n", nItem, lprc->top);
/* On WinNT, a subitem of '0' calls LISTVIEW_GetItemRect */ /* On WinNT, a subitem of '0' calls LISTVIEW_GetItemRect */
if (lprc->top == 0) if (lprc->top == 0)
return LISTVIEW_GetItemRect(infoPtr, nItem, lprc); return LISTVIEW_GetItemRect(infoPtr, nItem, lprc);
if ((infoPtr->dwStyle & LVS_TYPEMASK) != LVS_REPORT) return FALSE;
if (!LISTVIEW_GetItemPosition(infoPtr, nItem, &Position)) return FALSE; if (!LISTVIEW_GetItemPosition(infoPtr, nItem, &Position)) return FALSE;
lvItem.mask = lprc->top == 0 ? LVIF_INDENT : 0; lvItem.mask = 0;
lvItem.iItem = nItem; lvItem.iItem = nItem;
lvItem.iSubItem = lprc->top; lvItem.iSubItem = lprc->top;
@ -5890,7 +5982,11 @@ static INT LISTVIEW_HitTest(LISTVIEW_INFO *infoPtr, LPLVHITTESTINFO lpht, BOOL s
if (select && !(uView == LVS_REPORT && (infoPtr->dwLvExStyle & LVS_EX_FULLROWSELECT))) if (select && !(uView == LVS_REPORT && (infoPtr->dwLvExStyle & LVS_EX_FULLROWSELECT)))
{ {
if (uView == LVS_REPORT) UnionRect(&rcBounds, &rcIcon, &rcLabel); if (uView == LVS_REPORT)
{
UnionRect(&rcBounds, &rcIcon, &rcLabel);
UnionRect(&rcBounds, &rcBounds, &rcState);
}
if (!PtInRect(&rcBounds, opt)) iItem = -1; if (!PtInRect(&rcBounds, opt)) iItem = -1;
} }
return lpht->iItem = iItem; return lpht->iItem = iItem;
@ -6502,6 +6598,53 @@ static BOOL LISTVIEW_SetColumnWidth(LISTVIEW_INFO *infoPtr, INT nColumn, INT cx)
return Header_SetItemW(infoPtr->hwndHeader, nColumn, (LPARAM)&hdi); return Header_SetItemW(infoPtr->hwndHeader, nColumn, (LPARAM)&hdi);
} }
/***
* Creates the checkbox imagelist. Helper for LISTVIEW_SetExtendedListViewStyle
*
*/
static HIMAGELIST LISTVIEW_CreateCheckBoxIL(LISTVIEW_INFO *infoPtr)
{
HDC hdc_wnd, hdc;
HBITMAP hbm_im, hbm_mask, hbm_orig;
RECT rc;
HBRUSH hbr_white = GetStockObject(WHITE_BRUSH);
HBRUSH hbr_black = GetStockObject(BLACK_BRUSH);
HIMAGELIST himl;
himl = ImageList_Create(GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON),
ILC_COLOR | ILC_MASK, 2, 2);
hdc_wnd = GetDC(infoPtr->hwndSelf);
hdc = CreateCompatibleDC(hdc_wnd);
hbm_im = CreateCompatibleBitmap(hdc_wnd, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON));
hbm_mask = CreateBitmap(GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), 1, 1, NULL);
ReleaseDC(infoPtr->hwndSelf, hdc_wnd);
rc.left = rc.top = 0;
rc.right = GetSystemMetrics(SM_CXSMICON);
rc.bottom = GetSystemMetrics(SM_CYSMICON);
hbm_orig = SelectObject(hdc, hbm_mask);
FillRect(hdc, &rc, hbr_white);
InflateRect(&rc, -3, -3);
FillRect(hdc, &rc, hbr_black);
SelectObject(hdc, hbm_im);
DrawFrameControl(hdc, &rc, DFC_BUTTON, DFCS_BUTTONCHECK | DFCS_MONO);
SelectObject(hdc, hbm_orig);
ImageList_Add(himl, hbm_im, hbm_mask);
SelectObject(hdc, hbm_im);
DrawFrameControl(hdc, &rc, DFC_BUTTON, DFCS_BUTTONCHECK | DFCS_MONO | DFCS_CHECKED);
SelectObject(hdc, hbm_orig);
ImageList_Add(himl, hbm_im, hbm_mask);
DeleteObject(hbm_mask);
DeleteObject(hbm_im);
DeleteDC(hdc);
return himl;
}
/*** /***
* DESCRIPTION: * DESCRIPTION:
* Sets the extended listview style. * Sets the extended listview style.
@ -6525,6 +6668,14 @@ static DWORD LISTVIEW_SetExtendedListViewStyle(LISTVIEW_INFO *infoPtr, DWORD dwM
else else
infoPtr->dwLvExStyle = dwStyle; infoPtr->dwLvExStyle = dwStyle;
if((infoPtr->dwLvExStyle ^ dwOldStyle) & LVS_EX_CHECKBOXES)
{
HIMAGELIST himl = 0;
if(infoPtr->dwLvExStyle & LVS_EX_CHECKBOXES)
himl = LISTVIEW_CreateCheckBoxIL(infoPtr);
LISTVIEW_SetImageList(infoPtr, LVSIL_STATE, himl);
}
return dwOldStyle; return dwOldStyle;
} }
@ -7179,7 +7330,8 @@ static LRESULT LISTVIEW_Create(HWND hwnd, const CREATESTRUCTW *lpcs)
infoPtr->hwndSelf = hwnd; infoPtr->hwndSelf = hwnd;
infoPtr->dwStyle = lpcs->style; infoPtr->dwStyle = lpcs->style;
/* determine the type of structures to use */ /* determine the type of structures to use */
infoPtr->notifyFormat = SendMessageW(GetParent(infoPtr->hwndSelf), WM_NOTIFYFORMAT, infoPtr->hwndNotify = lpcs->hwndParent;
infoPtr->notifyFormat = SendMessageW(infoPtr->hwndNotify, WM_NOTIFYFORMAT,
(WPARAM)infoPtr->hwndSelf, (LPARAM)NF_QUERY); (WPARAM)infoPtr->hwndSelf, (LPARAM)NF_QUERY);
/* initialize color information */ /* initialize color information */
@ -7675,6 +7827,68 @@ static LRESULT LISTVIEW_KillFocus(LISTVIEW_INFO *infoPtr)
return 0; return 0;
} }
/***
* DESCRIPTION:
* Track mouse/dragging
*
* PARAMETER(S):
* [I] infoPtr : valid pointer to the listview structure
* [I] pt : mouse coordinate
*
* RETURN:
* Zero
*/
static LRESULT LISTVIEW_TrackMouse(LISTVIEW_INFO *infoPtr, POINT pt)
{
INT cxDrag = GetSystemMetrics(SM_CXDRAG);
INT cyDrag = GetSystemMetrics(SM_CYDRAG);
RECT r;
MSG msg;
TRACE("\n");
r.top = pt.y - cyDrag;
r.left = pt.x - cxDrag;
r.bottom = pt.y + cyDrag;
r.right = pt.x + cxDrag;
SetCapture(infoPtr->hwndSelf);
while (1)
{
if (PeekMessageW(&msg, 0, 0, 0, PM_REMOVE | PM_NOYIELD))
{
if (msg.message == WM_MOUSEMOVE)
{
pt.x = (short)LOWORD(msg.lParam);
pt.y = (short)HIWORD(msg.lParam);
if (PtInRect(&r, pt))
continue;
else
{
ReleaseCapture();
return 1;
}
}
else if (msg.message >= WM_LBUTTONDOWN &&
msg.message <= WM_RBUTTONDBLCLK)
{
break;
}
DispatchMessageW(&msg);
}
if (GetCapture() != infoPtr->hwndSelf)
return 0;
}
ReleaseCapture();
return 0;
}
/*** /***
* DESCRIPTION: * DESCRIPTION:
* Processes double click messages (left mouse button). * Processes double click messages (left mouse button).
@ -7746,6 +7960,33 @@ static LRESULT LISTVIEW_LButtonDown(LISTVIEW_INFO *infoPtr, WORD wKey, POINTS pt
infoPtr->nEditLabelItem = -1; infoPtr->nEditLabelItem = -1;
if ((nItem >= 0) && (nItem < infoPtr->nItemCount)) if ((nItem >= 0) && (nItem < infoPtr->nItemCount))
{ {
if ((infoPtr->dwLvExStyle & LVS_EX_CHECKBOXES) && (lvHitTestInfo.flags & LVHT_ONITEMSTATEICON))
{
DWORD state = LISTVIEW_GetItemState(infoPtr, nItem, LVIS_STATEIMAGEMASK) >> 12;
if(state == 1 || state == 2)
{
LVITEMW lvitem;
state ^= 3;
lvitem.state = state << 12;
lvitem.stateMask = LVIS_STATEIMAGEMASK;
LISTVIEW_SetItemState(infoPtr, nItem, &lvitem);
}
return 0;
}
if (LISTVIEW_TrackMouse(infoPtr, lvHitTestInfo.pt))
{
NMLISTVIEW nmlv;
ZeroMemory(&nmlv, sizeof(nmlv));
nmlv.iItem = nItem;
nmlv.ptAction.x = lvHitTestInfo.pt.x;
nmlv.ptAction.y = lvHitTestInfo.pt.y;
notify_listview(infoPtr, LVN_BEGINDRAG, &nmlv);
return 0;
}
if (infoPtr->dwStyle & LVS_SINGLESEL) if (infoPtr->dwStyle & LVS_SINGLESEL)
{ {
if (LISTVIEW_GetItemState(infoPtr, nItem, LVIS_SELECTED)) if (LISTVIEW_GetItemState(infoPtr, nItem, LVIS_SELECTED))
@ -7803,6 +8044,7 @@ static LRESULT LISTVIEW_LButtonDown(LISTVIEW_INFO *infoPtr, WORD wKey, POINTS pt
{ {
/* remove all selections */ /* remove all selections */
LISTVIEW_DeselectAll(infoPtr); LISTVIEW_DeselectAll(infoPtr);
ReleaseCapture();
} }
return 0; return 0;
@ -8499,7 +8741,8 @@ LISTVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
/* case LVM_CANCELEDITLABEL: */ /* case LVM_CANCELEDITLABEL: */
/* case LVM_CREATEDRAGIMAGE: */ case LVM_CREATEDRAGIMAGE:
return (LRESULT)LISTVIEW_CreateDragImage(infoPtr, (INT)wParam, (LPPOINT)lParam);
case LVM_DELETEALLITEMS: case LVM_DELETEALLITEMS:
return LISTVIEW_DeleteAllItems(infoPtr); return LISTVIEW_DeleteAllItems(infoPtr);
@ -9064,7 +9307,7 @@ static LRESULT LISTVIEW_Command(LISTVIEW_INFO *infoPtr, WPARAM wParam, LPARAM lP
} }
default: default:
return SendMessageW (GetParent (infoPtr->hwndSelf), WM_COMMAND, wParam, lParam); return SendMessageW (infoPtr->hwndNotify, WM_COMMAND, wParam, lParam);
} }
return 0; return 0;

View file

@ -1475,8 +1475,7 @@ static BOOL PROPSHEET_CreatePage(HWND hwndParent,
} }
if (psInfo->proppage[index].useCallback) if (psInfo->proppage[index].useCallback)
(*(ppshpage->pfnCallback))(hwndParent, (*(ppshpage->pfnCallback))(0, PSPCB_CREATE,
PSPCB_CREATE,
(LPPROPSHEETPAGEW)ppshpage); (LPPROPSHEETPAGEW)ppshpage);
if(ppshpage->dwFlags & PSP_INTERNAL_UNICODE) if(ppshpage->dwFlags & PSP_INTERNAL_UNICODE)
@ -2028,19 +2027,25 @@ static BOOL PROPSHEET_SetCurSel(HWND hwndDlg,
index+=skipdir; index+=skipdir;
if (index < 0) { if (index < 0) {
index = 0; index = 0;
FIXME("Tried to skip before first property sheet page!\n"); WARN("Tried to skip before first property sheet page!\n");
break; break;
} }
if (index >= psInfo->nPages) { if (index >= psInfo->nPages) {
FIXME("Tried to skip after last property sheet page!\n"); WARN("Tried to skip after last property sheet page!\n");
index = psInfo->nPages-1; index = psInfo->nPages-1;
break; break;
} }
} }
else if (result != 0) else if (result != 0)
{ {
index = PROPSHEET_FindPageByResId(psInfo, result); int old_index = index;
continue; index = PROPSHEET_FindPageByResId(psInfo, result);
if(index >= psInfo->nPages) {
index = old_index;
WARN("Tried to skip to nonexistant page by res id\n");
break;
}
continue;
} }
} }
/* /*

View file

@ -119,7 +119,7 @@
* *
* Still to do: * Still to do:
* 2. Following still not handled: RBBS_FIXEDBMP, * 2. Following still not handled: RBBS_FIXEDBMP,
* RBBS_USECHEVRON, CCS_NORESIZE, * CCS_NORESIZE,
* CCS_NOMOVEX, CCS_NOMOVEY * CCS_NOMOVEX, CCS_NOMOVEY
* 3. Following are only partially handled: * 3. Following are only partially handled:
* RBS_AUTOSIZE, RBBS_VARIABLEHEIGHT * RBS_AUTOSIZE, RBBS_VARIABLEHEIGHT
@ -136,7 +136,7 @@
* WM_SYSCOLORCHANGE, WM_VKEYTOITEM, WM_WININICHANGE * WM_SYSCOLORCHANGE, WM_VKEYTOITEM, WM_WININICHANGE
* 7. The following notifications are not implemented: * 7. The following notifications are not implemented:
* NM_CUSTOMDRAW, NM_RELEASEDCAPTURE * NM_CUSTOMDRAW, NM_RELEASEDCAPTURE
* RB_CHEVRONPUSHED, RBN_MINMAX * RBN_MINMAX
*/ */
#include <stdarg.h> #include <stdarg.h>
@ -194,6 +194,7 @@ typedef struct
RECT rcCapImage; /* calculated caption image rectangle */ RECT rcCapImage; /* calculated caption image rectangle */
RECT rcCapText; /* calculated caption text rectangle */ RECT rcCapText; /* calculated caption text rectangle */
RECT rcChild; /* calculated child rectangle */ RECT rcChild; /* calculated child rectangle */
RECT rcChevron; /* calculated chevron rectangle */
LPWSTR lpText; LPWSTR lpText;
HWND hwndPrevParent; HWND hwndPrevParent;
@ -210,6 +211,8 @@ typedef struct
#define DRAW_TEXT 0x00000004 #define DRAW_TEXT 0x00000004
#define DRAW_RIGHTSEP 0x00000010 #define DRAW_RIGHTSEP 0x00000010
#define DRAW_BOTTOMSEP 0x00000020 #define DRAW_BOTTOMSEP 0x00000020
#define DRAW_CHEVRONHOT 0x00000040
#define DRAW_CHEVRONPUSHED 0x00000080
#define NTF_INVALIDATE 0x01000000 #define NTF_INVALIDATE 0x01000000
typedef struct typedef struct
@ -248,9 +251,11 @@ typedef struct
INT iVersion; /* version number */ INT iVersion; /* version number */
POINTS dragStart; /* x,y of button down */ POINTS dragStart; /* x,y of button down */
POINTS dragNow; /* x,y of this MouseMove */ POINTS dragNow; /* x,y of this MouseMove */
INT ihitBand; /* band number of band whose gripper was grabbed */ INT iOldBand; /* last band that had the mouse cursor over it */
INT ihitoffset; /* offset of hotspot from gripper.left */ INT ihitoffset; /* offset of hotspot from gripper.left */
POINT origin; /* left/upper corner of client */ POINT origin; /* left/upper corner of client */
INT ichevronhotBand; /* last band that had a hot chevron */
INT iGrabbedBand;/* band number of band whose gripper was grabbed */
REBAR_ROW *rows; /* pointer to row indexes */ REBAR_ROW *rows; /* pointer to row indexes */
REBAR_BAND *bands; /* pointer to the array of rebar bands */ REBAR_BAND *bands; /* pointer to the array of rebar bands */
@ -293,6 +298,9 @@ typedef struct
/* if present. */ /* if present. */
#define GRIPPER_WIDTH 3 #define GRIPPER_WIDTH 3
/* Width of the chevron button if present */
#define CHEVRON_WIDTH 10
/* Height of divider for Rebar if not disabled (CCS_NODIVIDER) */ /* Height of divider for Rebar if not disabled (CCS_NODIVIDER) */
/* either top or bottom */ /* either top or bottom */
#define REBAR_DIVIDER 2 #define REBAR_DIVIDER 2
@ -334,7 +342,7 @@ typedef struct
static UINT mindragx = 0; static UINT mindragx = 0;
static UINT mindragy = 0; static UINT mindragy = 0;
static char *band_stylename[] = { static const char *band_stylename[] = {
"RBBS_BREAK", /* 0001 */ "RBBS_BREAK", /* 0001 */
"RBBS_FIXEDSIZE", /* 0002 */ "RBBS_FIXEDSIZE", /* 0002 */
"RBBS_CHILDEDGE", /* 0004 */ "RBBS_CHILDEDGE", /* 0004 */
@ -346,7 +354,7 @@ static char *band_stylename[] = {
"RBBS_NOGRIPPER", /* 0100 */ "RBBS_NOGRIPPER", /* 0100 */
NULL }; NULL };
static char *band_maskname[] = { static const char *band_maskname[] = {
"RBBIM_STYLE", /* 0x00000001 */ "RBBIM_STYLE", /* 0x00000001 */
"RBBIM_COLORS", /* 0x00000002 */ "RBBIM_COLORS", /* 0x00000002 */
"RBBIM_TEXT", /* 0x00000004 */ "RBBIM_TEXT", /* 0x00000004 */
@ -437,10 +445,10 @@ REBAR_DumpBand (REBAR_INFO *iP)
TRACE("hwnd=%p: color=%08lx/%08lx, bands=%u, rows=%u, cSize=%ld,%ld\n", TRACE("hwnd=%p: color=%08lx/%08lx, bands=%u, rows=%u, cSize=%ld,%ld\n",
iP->hwndSelf, iP->clrText, iP->clrBk, iP->uNumBands, iP->uNumRows, iP->hwndSelf, iP->clrText, iP->clrBk, iP->uNumBands, iP->uNumRows,
iP->calcSize.cx, iP->calcSize.cy); iP->calcSize.cx, iP->calcSize.cy);
TRACE("hwnd=%p: flags=%08x, dragStart=%d,%d, dragNow=%d,%d, ihitBand=%d\n", TRACE("hwnd=%p: flags=%08x, dragStart=%d,%d, dragNow=%d,%d, iGrabbedBand=%d\n",
iP->hwndSelf, iP->fStatus, iP->dragStart.x, iP->dragStart.y, iP->hwndSelf, iP->fStatus, iP->dragStart.x, iP->dragStart.y,
iP->dragNow.x, iP->dragNow.y, iP->dragNow.x, iP->dragNow.y,
iP->ihitBand); iP->iGrabbedBand);
TRACE("hwnd=%p: style=%08lx, I'm Unicode=%s, notify in Unicode=%s, redraw=%s\n", TRACE("hwnd=%p: style=%08lx, I'm Unicode=%s, notify in Unicode=%s, redraw=%s\n",
iP->hwndSelf, iP->dwStyle, (iP->bUnicode)?"TRUE":"FALSE", iP->hwndSelf, iP->dwStyle, (iP->bUnicode)?"TRUE":"FALSE",
(iP->NtfUnicode)?"TRUE":"FALSE", (iP->DoRedraw)?"TRUE":"FALSE"); (iP->NtfUnicode)?"TRUE":"FALSE", (iP->DoRedraw)?"TRUE":"FALSE");
@ -484,6 +492,25 @@ REBAR_DumpBand (REBAR_INFO *iP)
} }
static void
REBAR_DrawChevron (HDC hdc, INT left, INT top, INT colorRef)
{
INT x, y;
HPEN hPen, hOldPen;
if (!(hPen = CreatePen( PS_SOLID, 1, GetSysColor( colorRef )))) return;
hOldPen = SelectObject ( hdc, hPen );
x = left + 2;
y = top;
MoveToEx (hdc, x, y, NULL);
LineTo (hdc, x+5, y++); x++;
MoveToEx (hdc, x, y, NULL);
LineTo (hdc, x+3, y++); x++;
MoveToEx (hdc, x, y, NULL);
LineTo (hdc, x+1, y++);
SelectObject( hdc, hOldPen );
DeleteObject( hPen );
}
static HWND static HWND
REBAR_GetNotifyParent (REBAR_INFO *infoPtr) REBAR_GetNotifyParent (REBAR_INFO *infoPtr)
@ -613,6 +640,22 @@ REBAR_DrawBand (HDC hdc, REBAR_INFO *infoPtr, REBAR_BAND *lpBand)
SelectObject (hdc, hOldFont); SelectObject (hdc, hOldFont);
} }
if (!IsRectEmpty(&lpBand->rcChevron))
{
if (lpBand->fDraw & DRAW_CHEVRONPUSHED)
{
DrawEdge(hdc, &lpBand->rcChevron, BDR_SUNKENOUTER, BF_RECT | BF_MIDDLE);
REBAR_DrawChevron(hdc, lpBand->rcChevron.left+1, lpBand->rcChevron.top + 11, COLOR_WINDOWFRAME);
}
else if (lpBand->fDraw & DRAW_CHEVRONHOT)
{
DrawEdge(hdc, &lpBand->rcChevron, BDR_RAISEDINNER, BF_RECT | BF_MIDDLE);
REBAR_DrawChevron(hdc, lpBand->rcChevron.left, lpBand->rcChevron.top + 10, COLOR_WINDOWFRAME);
}
else
REBAR_DrawChevron(hdc, lpBand->rcChevron.left, lpBand->rcChevron.top + 10, COLOR_WINDOWFRAME);
}
if (lpBand->uCDret == (CDRF_NOTIFYPOSTPAINT | CDRF_NOTIFYITEMDRAW)) { if (lpBand->uCDret == (CDRF_NOTIFYPOSTPAINT | CDRF_NOTIFYITEMDRAW)) {
nmcd.dwDrawStage = CDDS_ITEMPOSTPAINT; nmcd.dwDrawStage = CDDS_ITEMPOSTPAINT;
nmcd.hdc = hdc; nmcd.hdc = hdc;
@ -954,6 +997,13 @@ REBAR_CalcHorzBand (REBAR_INFO *infoPtr, UINT rstart, UINT rend, BOOL notify)
SetRect (&lpBand->rcChild, SetRect (&lpBand->rcChild,
lpBand->rcBand.left+lpBand->cxHeader, lpBand->rcBand.top+yoff, lpBand->rcBand.left+lpBand->cxHeader, lpBand->rcBand.top+yoff,
lpBand->rcBand.right-xoff, lpBand->rcBand.bottom-yoff); lpBand->rcBand.right-xoff, lpBand->rcBand.bottom-yoff);
if ((lpBand->fStyle & RBBS_USECHEVRON) && (lpBand->rcChild.right - lpBand->rcChild.left < lpBand->cxIdeal))
{
lpBand->rcChild.right -= CHEVRON_WIDTH;
SetRect(&lpBand->rcChevron, lpBand->rcChild.right,
lpBand->rcChild.top, lpBand->rcChild.right + CHEVRON_WIDTH,
lpBand->rcChild.bottom);
}
} }
else { else {
SetRect (&lpBand->rcChild, SetRect (&lpBand->rcChild,
@ -1431,6 +1481,8 @@ REBAR_Layout (REBAR_INFO *infoPtr, LPRECT lpRect, BOOL notify, BOOL resetclient)
lpBand->fDraw = 0; lpBand->fDraw = 0;
lpBand->iRow = row; lpBand->iRow = row;
SetRectEmpty(&lpBand->rcChevron);
if (HIDDENBAND(lpBand)) continue; if (HIDDENBAND(lpBand)) continue;
lpBand->rcoldBand = lpBand->rcBand; lpBand->rcoldBand = lpBand->rcBand;
@ -2207,7 +2259,7 @@ REBAR_InternalEraseBkGnd (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam, REC
} }
static void static void
REBAR_InternalHitTest (REBAR_INFO *infoPtr, LPPOINT lpPt, UINT *pFlags, INT *pBand) REBAR_InternalHitTest (REBAR_INFO *infoPtr, const LPPOINT lpPt, UINT *pFlags, INT *pBand)
{ {
REBAR_BAND *lpBand; REBAR_BAND *lpBand;
RECT rect; RECT rect;
@ -2227,7 +2279,6 @@ REBAR_InternalHitTest (REBAR_INFO *infoPtr, LPPOINT lpPt, UINT *pFlags, INT *pBa
} }
else { else {
/* somewhere inside */ /* somewhere inside */
infoPtr->ihitBand = -1;
for (iCount = 0; iCount < infoPtr->uNumBands; iCount++) { for (iCount = 0; iCount < infoPtr->uNumBands; iCount++) {
lpBand = &infoPtr->bands[iCount]; lpBand = &infoPtr->bands[iCount];
if (HIDDENBAND(lpBand)) continue; if (HIDDENBAND(lpBand)) continue;
@ -2236,7 +2287,6 @@ REBAR_InternalHitTest (REBAR_INFO *infoPtr, LPPOINT lpPt, UINT *pFlags, INT *pBa
*pBand = iCount; *pBand = iCount;
if (PtInRect (&lpBand->rcGripper, *lpPt)) { if (PtInRect (&lpBand->rcGripper, *lpPt)) {
*pFlags = RBHT_GRABBER; *pFlags = RBHT_GRABBER;
infoPtr->ihitBand = iCount;
TRACE("ON GRABBER %d\n", iCount); TRACE("ON GRABBER %d\n", iCount);
return; return;
} }
@ -2255,6 +2305,11 @@ REBAR_InternalHitTest (REBAR_INFO *infoPtr, LPPOINT lpPt, UINT *pFlags, INT *pBa
TRACE("ON CLIENT %d\n", iCount); TRACE("ON CLIENT %d\n", iCount);
return; return;
} }
else if (PtInRect (&lpBand->rcChevron, *lpPt)) {
*pFlags = RBHT_CHEVRON;
TRACE("ON CHEVRON %d\n", iCount);
return;
}
else { else {
*pFlags = RBHT_NOWHERE; *pFlags = RBHT_NOWHERE;
TRACE("NOWHERE %d\n", iCount); TRACE("NOWHERE %d\n", iCount);
@ -2373,14 +2428,14 @@ REBAR_HandleLRDrag (REBAR_INFO *infoPtr, POINTS *ptsmove)
infoPtr->dragStart.x = 0; infoPtr->dragStart.x = 0;
infoPtr->dragStart.y = 0; infoPtr->dragStart.y = 0;
infoPtr->dragNow = infoPtr->dragStart; infoPtr->dragNow = infoPtr->dragStart;
infoPtr->ihitBand = -1; infoPtr->iGrabbedBand = -1;
ReleaseCapture (); ReleaseCapture ();
return ; return ;
} }
infoPtr->fStatus |= BEGIN_DRAG_ISSUED; infoPtr->fStatus |= BEGIN_DRAG_ISSUED;
} }
ihitBand = infoPtr->ihitBand; ihitBand = infoPtr->iGrabbedBand;
hitBand = &infoPtr->bands[ihitBand]; hitBand = &infoPtr->bands[ihitBand];
imaxdBand = ihitBand; /* to suppress warning message */ imaxdBand = ihitBand; /* to suppress warning message */
@ -3402,8 +3457,11 @@ REBAR_SetBandInfoA (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
} }
if (lprbbi->lpText) { if (lprbbi->lpText) {
INT len = MultiByteToWideChar( CP_ACP, 0, lprbbi->lpText, -1, NULL, 0 ); INT len = MultiByteToWideChar( CP_ACP, 0, lprbbi->lpText, -1, NULL, 0 );
lpBand->lpText = (LPWSTR)Alloc (len*sizeof(WCHAR)); if (len > 1)
MultiByteToWideChar( CP_ACP, 0, lprbbi->lpText, -1, lpBand->lpText, len ); {
lpBand->lpText = (LPWSTR)Alloc (len*sizeof(WCHAR));
MultiByteToWideChar( CP_ACP, 0, lprbbi->lpText, -1, lpBand->lpText, len );
}
} }
} }
@ -3447,8 +3505,11 @@ REBAR_SetBandInfoW (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
} }
if (lprbbi->lpText) { if (lprbbi->lpText) {
INT len = lstrlenW (lprbbi->lpText); INT len = lstrlenW (lprbbi->lpText);
lpBand->lpText = (LPWSTR)Alloc ((len + 1)*sizeof(WCHAR)); if (len > 0)
strcpyW (lpBand->lpText, lprbbi->lpText); {
lpBand->lpText = (LPWSTR)Alloc ((len + 1)*sizeof(WCHAR));
strcpyW (lpBand->lpText, lprbbi->lpText);
}
} }
} }
@ -3721,103 +3782,219 @@ REBAR_GetFont (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
return (LRESULT)infoPtr->hFont; return (LRESULT)infoPtr->hFont;
} }
static LRESULT
REBAR_PushChevron(REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
{
if (wParam >= 0 && (UINT)wParam < infoPtr->uNumBands)
{
NMREBARCHEVRON nmrbc;
REBAR_BAND *lpBand = &infoPtr->bands[wParam];
TRACE("Pressed chevron on band %d\n", wParam);
/* redraw chevron in pushed state */
lpBand->fDraw |= DRAW_CHEVRONPUSHED;
RedrawWindow(infoPtr->hwndSelf, &lpBand->rcChevron,0,
RDW_ERASE|RDW_INVALIDATE|RDW_UPDATENOW);
/* notify app so it can display a popup menu or whatever */
nmrbc.uBand = wParam;
nmrbc.wID = lpBand->wID;
nmrbc.lParam = lpBand->lParam;
nmrbc.rc = lpBand->rcChevron;
nmrbc.lParamNM = lParam;
REBAR_Notify((NMHDR*)&nmrbc, infoPtr, RBN_CHEVRONPUSHED);
/* redraw chevron in previous state */
lpBand->fDraw &= ~DRAW_CHEVRONPUSHED;
InvalidateRect(infoPtr->hwndSelf, &lpBand->rcChevron, TRUE);
return TRUE;
}
return FALSE;
}
static LRESULT static LRESULT
REBAR_LButtonDown (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) REBAR_LButtonDown (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
{ {
REBAR_BAND *lpBand; REBAR_BAND *lpBand;
UINT htFlags;
UINT iHitBand;
POINT ptMouseDown;
ptMouseDown.x = (INT)LOWORD(lParam);
ptMouseDown.y = (INT)HIWORD(lParam);
/* If InternalHitTest did not find a hit on the Gripper, */ REBAR_InternalHitTest(infoPtr, &ptMouseDown, &htFlags, &iHitBand);
/* then ignore the button click. */ lpBand = &infoPtr->bands[iHitBand];
if (infoPtr->ihitBand == -1) return 0;
SetCapture (infoPtr->hwndSelf); if (htFlags == RBHT_CHEVRON)
{
REBAR_PushChevron(infoPtr, iHitBand, 0);
}
else if (htFlags == RBHT_GRABBER || htFlags == RBHT_CAPTION)
{
TRACE("Starting drag\n");
/* save off the LOWORD and HIWORD of lParam as initial x,y */ SetCapture (infoPtr->hwndSelf);
lpBand = &infoPtr->bands[infoPtr->ihitBand]; infoPtr->iGrabbedBand = iHitBand;
infoPtr->dragStart = MAKEPOINTS(lParam);
infoPtr->dragNow = infoPtr->dragStart;
if (infoPtr->dwStyle & CCS_VERT)
infoPtr->ihitoffset = infoPtr->dragStart.y - (lpBand->rcBand.top+REBAR_PRE_GRIPPER);
else
infoPtr->ihitoffset = infoPtr->dragStart.x - (lpBand->rcBand.left+REBAR_PRE_GRIPPER);
/* save off the LOWORD and HIWORD of lParam as initial x,y */
infoPtr->dragStart = MAKEPOINTS(lParam);
infoPtr->dragNow = infoPtr->dragStart;
if (infoPtr->dwStyle & CCS_VERT)
infoPtr->ihitoffset = infoPtr->dragStart.y - (lpBand->rcBand.top+REBAR_PRE_GRIPPER);
else
infoPtr->ihitoffset = infoPtr->dragStart.x - (lpBand->rcBand.left+REBAR_PRE_GRIPPER);
}
return 0; return 0;
} }
static LRESULT static LRESULT
REBAR_LButtonUp (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) REBAR_LButtonUp (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
{ {
NMHDR layout; if (infoPtr->iGrabbedBand >= 0)
RECT rect; {
INT ihitBand; NMHDR layout;
RECT rect;
/* If InternalHitTest did not find a hit on the Gripper, */ infoPtr->dragStart.x = 0;
/* then ignore the button click. */ infoPtr->dragStart.y = 0;
if (infoPtr->ihitBand == -1) return 0; infoPtr->dragNow = infoPtr->dragStart;
ihitBand = infoPtr->ihitBand; ReleaseCapture ();
infoPtr->dragStart.x = 0;
infoPtr->dragStart.y = 0;
infoPtr->dragNow = infoPtr->dragStart;
infoPtr->ihitBand = -1;
ReleaseCapture (); if (infoPtr->fStatus & BEGIN_DRAG_ISSUED) {
REBAR_Notify(&layout, infoPtr, RBN_LAYOUTCHANGED);
REBAR_Notify_NMREBAR (infoPtr, infoPtr->iGrabbedBand, RBN_ENDDRAG);
infoPtr->fStatus &= ~BEGIN_DRAG_ISSUED;
}
if (infoPtr->fStatus & BEGIN_DRAG_ISSUED) { infoPtr->iGrabbedBand = -1;
REBAR_Notify((NMHDR *) &layout, infoPtr, RBN_LAYOUTCHANGED);
REBAR_Notify_NMREBAR (infoPtr, ihitBand, RBN_ENDDRAG); GetClientRect(infoPtr->hwndSelf, &rect);
infoPtr->fStatus &= ~BEGIN_DRAG_ISSUED; InvalidateRect(infoPtr->hwndSelf, NULL, TRUE);
} }
GetClientRect(infoPtr->hwndSelf, &rect);
InvalidateRect(infoPtr->hwndSelf, NULL, TRUE);
return 0; return 0;
} }
static LRESULT
REBAR_MouseLeave (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
{
if (infoPtr->ichevronhotBand >= 0)
{
REBAR_BAND *lpChevronBand = &infoPtr->bands[infoPtr->ichevronhotBand];
if (lpChevronBand->fDraw & DRAW_CHEVRONHOT)
{
lpChevronBand->fDraw &= ~DRAW_CHEVRONHOT;
InvalidateRect(infoPtr->hwndSelf, &lpChevronBand->rcChevron, TRUE);
}
}
infoPtr->iOldBand = -1;
infoPtr->ichevronhotBand = -2;
return TRUE;
}
static LRESULT static LRESULT
REBAR_MouseMove (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) REBAR_MouseMove (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
{ {
REBAR_BAND *band1, *band2; REBAR_BAND *lpChevronBand;
POINTS ptsmove; POINTS ptsmove;
/* Validate entry as hit on Gripper has occurred */
if (GetCapture() != infoPtr->hwndSelf) return 0;
if (infoPtr->ihitBand == -1) return 0;
ptsmove = MAKEPOINTS(lParam); ptsmove = MAKEPOINTS(lParam);
/* if mouse did not move much, exit */ /* if we are currently dragging a band */
if ((abs(ptsmove.x - infoPtr->dragNow.x) <= mindragx) && if (infoPtr->iGrabbedBand >= 0)
(abs(ptsmove.y - infoPtr->dragNow.y) <= mindragy)) return 0; {
REBAR_BAND *band1, *band2;
if (GetCapture() != infoPtr->hwndSelf)
ERR("We are dragging but haven't got capture?!?\n");
band1 = &infoPtr->bands[infoPtr->ihitBand-1]; band1 = &infoPtr->bands[infoPtr->iGrabbedBand-1];
band2 = &infoPtr->bands[infoPtr->ihitBand]; band2 = &infoPtr->bands[infoPtr->iGrabbedBand];
/* Test for valid drag case - must not be first band in row */ /* if mouse did not move much, exit */
if (infoPtr->dwStyle & CCS_VERT) { if ((abs(ptsmove.x - infoPtr->dragNow.x) <= mindragx) &&
if ((ptsmove.x < band2->rcBand.left) || (abs(ptsmove.y - infoPtr->dragNow.y) <= mindragy)) return 0;
(ptsmove.x > band2->rcBand.right) ||
((infoPtr->ihitBand > 0) && (band1->iRow != band2->iRow))) { /* Test for valid drag case - must not be first band in row */
FIXME("Cannot drag to other rows yet!!\n"); if (infoPtr->dwStyle & CCS_VERT) {
} if ((ptsmove.x < band2->rcBand.left) ||
else { (ptsmove.x > band2->rcBand.right) ||
REBAR_HandleLRDrag (infoPtr, &ptsmove); ((infoPtr->iGrabbedBand > 0) && (band1->iRow != band2->iRow))) {
} FIXME("Cannot drag to other rows yet!!\n");
}
else {
REBAR_HandleLRDrag (infoPtr, &ptsmove);
}
}
else {
if ((ptsmove.y < band2->rcBand.top) ||
(ptsmove.y > band2->rcBand.bottom) ||
((infoPtr->iGrabbedBand > 0) && (band1->iRow != band2->iRow))) {
FIXME("Cannot drag to other rows yet!!\n");
}
else {
REBAR_HandleLRDrag (infoPtr, &ptsmove);
}
}
} }
else { else
if ((ptsmove.y < band2->rcBand.top) || {
(ptsmove.y > band2->rcBand.bottom) || POINT ptMove;
((infoPtr->ihitBand > 0) && (band1->iRow != band2->iRow))) { INT iHitBand;
FIXME("Cannot drag to other rows yet!!\n"); UINT htFlags;
} TRACKMOUSEEVENT trackinfo;
else {
REBAR_HandleLRDrag (infoPtr, &ptsmove); ptMove.x = (INT)ptsmove.x;
} ptMove.y = (INT)ptsmove.y;
REBAR_InternalHitTest(infoPtr, &ptMove, &htFlags, &iHitBand);
if (infoPtr->iOldBand >= 0 && infoPtr->iOldBand == infoPtr->ichevronhotBand)
{
lpChevronBand = &infoPtr->bands[infoPtr->ichevronhotBand];
if (lpChevronBand->fDraw & DRAW_CHEVRONHOT)
{
lpChevronBand->fDraw &= ~DRAW_CHEVRONHOT;
InvalidateRect(infoPtr->hwndSelf, &lpChevronBand->rcChevron, TRUE);
}
infoPtr->ichevronhotBand = -2;
}
if (htFlags == RBHT_CHEVRON)
{
/* fill in the TRACKMOUSEEVENT struct */
trackinfo.cbSize = sizeof(TRACKMOUSEEVENT);
trackinfo.dwFlags = TME_QUERY;
trackinfo.hwndTrack = infoPtr->hwndSelf;
trackinfo.dwHoverTime = 0;
/* call _TrackMouseEvent to see if we are currently tracking for this hwnd */
_TrackMouseEvent(&trackinfo);
/* Make sure tracking is enabled so we receive a WM_MOUSELEAVE message */
if(!(trackinfo.dwFlags & TME_LEAVE))
{
trackinfo.dwFlags = TME_LEAVE; /* notify upon leaving */
/* call TRACKMOUSEEVENT so we receive a WM_MOUSELEAVE message */
/* and can properly deactivate the hot chevron */
_TrackMouseEvent(&trackinfo);
}
lpChevronBand = &infoPtr->bands[iHitBand];
if (!(lpChevronBand->fDraw & DRAW_CHEVRONHOT))
{
lpChevronBand->fDraw |= DRAW_CHEVRONHOT;
InvalidateRect(infoPtr->hwndSelf, &lpChevronBand->rcChevron, TRUE);
infoPtr->ichevronhotBand = iHitBand;
}
}
infoPtr->iOldBand = iHitBand;
} }
return 0; return 0;
} }
@ -3869,7 +4046,9 @@ REBAR_NCCreate (HWND hwnd, WPARAM wParam, LPARAM lParam)
infoPtr->clrText = CLR_NONE; infoPtr->clrText = CLR_NONE;
infoPtr->clrBtnText = GetSysColor (COLOR_BTNTEXT); infoPtr->clrBtnText = GetSysColor (COLOR_BTNTEXT);
infoPtr->clrBtnFace = GetSysColor (COLOR_BTNFACE); infoPtr->clrBtnFace = GetSysColor (COLOR_BTNFACE);
infoPtr->ihitBand = -1; infoPtr->iOldBand = -1;
infoPtr->ichevronhotBand = -2;
infoPtr->iGrabbedBand = -1;
infoPtr->hwndSelf = hwnd; infoPtr->hwndSelf = hwnd;
infoPtr->DoRedraw = TRUE; infoPtr->DoRedraw = TRUE;
infoPtr->hcurArrow = LoadCursorA (0, (LPSTR)IDC_ARROW); infoPtr->hcurArrow = LoadCursorA (0, (LPSTR)IDC_ARROW);
@ -4349,6 +4528,9 @@ REBAR_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
case RB_MOVEBAND: case RB_MOVEBAND:
return REBAR_MoveBand (infoPtr, wParam, lParam); return REBAR_MoveBand (infoPtr, wParam, lParam);
case RB_PUSHCHEVRON:
return REBAR_PushChevron (infoPtr, wParam, lParam);
case RB_SETBANDINFOA: case RB_SETBANDINFOA:
return REBAR_SetBandInfoA (infoPtr, wParam, lParam); return REBAR_SetBandInfoA (infoPtr, wParam, lParam);
@ -4425,6 +4607,9 @@ REBAR_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
case WM_MOUSEMOVE: case WM_MOUSEMOVE:
return REBAR_MouseMove (infoPtr, wParam, lParam); return REBAR_MouseMove (infoPtr, wParam, lParam);
case WM_MOUSELEAVE:
return REBAR_MouseLeave (infoPtr, wParam, lParam);
case WM_NCCALCSIZE: case WM_NCCALCSIZE:
return REBAR_NCCalcSize (infoPtr, wParam, lParam); return REBAR_NCCalcSize (infoPtr, wParam, lParam);

View file

@ -1,89 +1,89 @@
/* /*
* Copyright 2002 Tisheng Chen * Copyright 2002 Tisheng Chen
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either * License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version. * version 2.1 of the License, or (at your option) any later version.
* *
* This library is distributed in the hope that it will be useful, * This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details. * Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software * License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
#pragma code_page(936) #pragma code_page(936)
IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140 IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
CAPTION "属性 " CAPTION "属性 "
FONT 8, "MS Sans Serif" FONT 8, "MS Sans Serif"
BEGIN BEGIN
DEFPUSHBUTTON "确定", IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP DEFPUSHBUTTON "确定", IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP
PUSHBUTTON "取消", IDCANCEL,58,122,50,14 PUSHBUTTON "取消", IDCANCEL,58,122,50,14
PUSHBUTTON "应用(&A)", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED PUSHBUTTON "应用(&A)", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED
PUSHBUTTON "帮助", IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP PUSHBUTTON "帮助", IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP
CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,4,4,212,114 CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,4,4,212,114
END END
IDD_WIZARD DIALOG DISCARDABLE 0, 0, 290, 159 IDD_WIZARD DIALOG DISCARDABLE 0, 0, 290, 159
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
CAPTION "Wizard" CAPTION "Wizard"
FONT 8, "MS Sans Serif" FONT 8, "MS Sans Serif"
BEGIN BEGIN
DEFPUSHBUTTON "结束", IDC_FINISH_BUTTON,121,138,50,14 DEFPUSHBUTTON "结束", IDC_FINISH_BUTTON,121,138,50,14
DEFPUSHBUTTON "下一步(&N) >", IDC_NEXT_BUTTON,121,138,50,14 DEFPUSHBUTTON "下一步(&N) >", IDC_NEXT_BUTTON,121,138,50,14
PUSHBUTTON "< 上一步(&B)", IDC_BACK_BUTTON,71,138,50,14 PUSHBUTTON "< 上一步(&B)", IDC_BACK_BUTTON,71,138,50,14
PUSHBUTTON "取消", IDCANCEL,178,138,50,14 PUSHBUTTON "取消", IDCANCEL,178,138,50,14
PUSHBUTTON "帮助", IDHELP,235,138,50,14,WS_GROUP PUSHBUTTON "帮助", IDHELP,235,138,50,14,WS_GROUP
LTEXT "", IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN LTEXT "", IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN
CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5 CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5
END END
IDD_TBCUSTOMIZE DIALOG DISCARDABLE 10, 20, 357, 125 IDD_TBCUSTOMIZE DIALOG DISCARDABLE 10, 20, 357, 125
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "自定义工具栏" CAPTION "自定义工具栏"
FONT 8, "MS Sans Serif" FONT 8, "MS Sans Serif"
BEGIN BEGIN
DEFPUSHBUTTON "关闭(&C)", IDCANCEL,308,6,44,14 DEFPUSHBUTTON "关闭(&C)", IDCANCEL,308,6,44,14
PUSHBUTTON "重置(&e)", IDC_RESET_BTN,308,23,44,14 PUSHBUTTON "重置(&e)", IDC_RESET_BTN,308,23,44,14
PUSHBUTTON "帮助(&H)", IDC_HELP_BTN,308,40,44,14 PUSHBUTTON "帮助(&H)", IDC_HELP_BTN,308,40,44,14
PUSHBUTTON "上移(&U)", IDC_MOVEUP_BTN,308,74,44,14 PUSHBUTTON "上移(&U)", IDC_MOVEUP_BTN,308,74,44,14
PUSHBUTTON "下移(&D)", IDC_MOVEDN_BTN,308,91,44,14 PUSHBUTTON "下移(&D)", IDC_MOVEDN_BTN,308,91,44,14
LTEXT "可用工具栏按钮(&V):", -1,4,5,84,10 LTEXT "可用工具栏按钮(&V):", -1,4,5,84,10
LISTBOX IDC_AVAILBTN_LBOX,4,17,120,100, LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP LISTBOX IDC_AVAILBTN_LBOX,4,17,120,100, LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
PUSHBUTTON "添加(&A) ->", IDOK, 131, 42, 44, 14 PUSHBUTTON "添加(&A) ->", IDOK, 131, 42, 44, 14
PUSHBUTTON "<- 删除(&R)", IDC_REMOVE_BTN,131,62,44,14 PUSHBUTTON "<- 删除(&R)", IDC_REMOVE_BTN,131,62,44,14
LTEXT "当前工具栏按钮(&T):", -1,182,5,78,10 LTEXT "当前工具栏按钮(&T):", -1,182,5,78,10
LISTBOX IDC_TOOLBARBTN_LBOX, 182,17,120,100,LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP LISTBOX IDC_TOOLBARBTN_LBOX, 182,17,120,100,LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
{ {
IDS_CLOSE "关闭" IDS_CLOSE "关闭"
} }
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
{ {
IDM_TODAY "Today:" IDM_TODAY "Today:"
IDM_GOTODAY "Go to today" IDM_GOTODAY "Go to today"
} }
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
{ {
IDS_SEPARATOR "分隔符" IDS_SEPARATOR "分隔符"
} }
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
{ {
HKY_NONE "None" HKY_NONE "None"
} }
#pragma code_page(default) #pragma code_page(default)

View file

@ -1,81 +1,81 @@
/* /*
* Copyright 2000 Uwe Bonnes * Copyright 2000 Uwe Bonnes
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either * License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version. * version 2.1 of the License, or (at your option) any later version.
* *
* This library is distributed in the hope that it will be useful, * This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details. * Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software * License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
LANGUAGE LANG_GERMAN, SUBLANG_DEFAULT LANGUAGE LANG_GERMAN, SUBLANG_DEFAULT
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
{ {
IDS_CLOSE "Schließen" IDS_CLOSE "Schließen"
} }
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
{ {
IDM_TODAY "Heute:" IDM_TODAY "Heute:"
IDM_GOTODAY "Gehe zu Heute" IDM_GOTODAY "Gehe zu Heute"
} }
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
{ {
IDS_SEPARATOR "Trennzeichen" IDS_SEPARATOR "Trennzeichen"
} }
IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140 IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
CAPTION "Eigenschaften für " CAPTION "Eigenschaften für "
FONT 8, "MS Sans Serif" FONT 8, "MS Sans Serif"
BEGIN BEGIN
DEFPUSHBUTTON "&OK", IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP DEFPUSHBUTTON "&OK", IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP
PUSHBUTTON "A&bbrechen", IDCANCEL,58,122,50,14 PUSHBUTTON "A&bbrechen", IDCANCEL,58,122,50,14
PUSHBUTTON "&Anwenden", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED PUSHBUTTON "&Anwenden", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED
PUSHBUTTON "&Hilfe", IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP PUSHBUTTON "&Hilfe", IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP
CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,4,4,212,114 CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,4,4,212,114
END END
IDD_WIZARD DIALOG DISCARDABLE 0, 0, 290, 159 IDD_WIZARD DIALOG DISCARDABLE 0, 0, 290, 159
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
CAPTION "Wizard" CAPTION "Wizard"
FONT 8, "MS Sans Serif" FONT 8, "MS Sans Serif"
BEGIN BEGIN
DEFPUSHBUTTON "&Beenden", IDC_FINISH_BUTTON,121,138,50,14 DEFPUSHBUTTON "&Beenden", IDC_FINISH_BUTTON,121,138,50,14
DEFPUSHBUTTON "&Weiter >", IDC_NEXT_BUTTON,121,138,50,14 DEFPUSHBUTTON "&Weiter >", IDC_NEXT_BUTTON,121,138,50,14
PUSHBUTTON "< &Zurück", IDC_BACK_BUTTON,71,138,50,14 PUSHBUTTON "< &Zurück", IDC_BACK_BUTTON,71,138,50,14
PUSHBUTTON "Abbrechen", IDCANCEL,178,138,50,14 PUSHBUTTON "Abbrechen", IDCANCEL,178,138,50,14
PUSHBUTTON "&Hilfe", IDHELP,235,138,50,14,WS_GROUP PUSHBUTTON "&Hilfe", IDHELP,235,138,50,14,WS_GROUP
LTEXT "", IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN LTEXT "", IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN
CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5 CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5
END END
IDD_TBCUSTOMIZE DIALOG DISCARDABLE 10, 20, 357, 125 IDD_TBCUSTOMIZE DIALOG DISCARDABLE 10, 20, 357, 125
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Toolbar einrichten" CAPTION "Toolbar einrichten"
FONT 8, "MS Sans Serif" FONT 8, "MS Sans Serif"
BEGIN BEGIN
DEFPUSHBUTTON "&Schließen", IDCANCEL,308,6,44,14 DEFPUSHBUTTON "&Schließen", IDCANCEL,308,6,44,14
PUSHBUTTON "&Zurücksetzen", IDC_RESET_BTN,308,23,44,14 PUSHBUTTON "&Zurücksetzen", IDC_RESET_BTN,308,23,44,14
PUSHBUTTON "&Hilfe", IDC_HELP_BTN,308,40,44,14 PUSHBUTTON "&Hilfe", IDC_HELP_BTN,308,40,44,14
PUSHBUTTON "Nach &Oben verschieben", IDC_MOVEUP_BTN,308,74,44,14 PUSHBUTTON "Nach &Oben verschieben", IDC_MOVEUP_BTN,308,74,44,14
PUSHBUTTON "Nach &Unten verschieben", IDC_MOVEDN_BTN,308,91,44,14 PUSHBUTTON "Nach &Unten verschieben", IDC_MOVEDN_BTN,308,91,44,14
LTEXT "&Vorhandene Knöpfe:", -1,4,5,84,10 LTEXT "&Vorhandene Knöpfe:", -1,4,5,84,10
LISTBOX IDC_AVAILBTN_LBOX,4,17,120,100, LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP LISTBOX IDC_AVAILBTN_LBOX,4,17,120,100, LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
PUSHBUTTON "H&inzufügen ->", IDOK, 131, 42, 44, 14 PUSHBUTTON "H&inzufügen ->", IDOK, 131, 42, 44, 14
PUSHBUTTON "<- &Löschen", IDC_REMOVE_BTN,131,62,44,14 PUSHBUTTON "<- &Löschen", IDC_REMOVE_BTN,131,62,44,14
LTEXT "&Toolbarknöpfe:", -1,182,5,78,10 LTEXT "&Toolbarknöpfe:", -1,182,5,78,10
LISTBOX IDC_TOOLBARBTN_LBOX, 182,17,120,100,LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP LISTBOX IDC_TOOLBARBTN_LBOX, 182,17,120,100,LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
END END

View file

@ -1,86 +1,86 @@
/* /*
* Copyright 1999 Eric Kohl * Copyright 1999 Eric Kohl
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either * License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version. * version 2.1 of the License, or (at your option) any later version.
* *
* This library is distributed in the hope that it will be useful, * This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details. * Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software * License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT
IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140 IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
CAPTION "Properties for " CAPTION "Properties for "
FONT 8, "MS Sans Serif" FONT 8, "MS Sans Serif"
BEGIN BEGIN
DEFPUSHBUTTON "OK", IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP DEFPUSHBUTTON "OK", IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP
PUSHBUTTON "Cancel", IDCANCEL,58,122,50,14 PUSHBUTTON "Cancel", IDCANCEL,58,122,50,14
PUSHBUTTON "&Apply", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED PUSHBUTTON "&Apply", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED
PUSHBUTTON "Help", IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP PUSHBUTTON "Help", IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP
CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,4,4,212,114 CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,4,4,212,114
END END
IDD_WIZARD DIALOG DISCARDABLE 0, 0, 290, 159 IDD_WIZARD DIALOG DISCARDABLE 0, 0, 290, 159
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
CAPTION "Wizard" CAPTION "Wizard"
FONT 8, "MS Sans Serif" FONT 8, "MS Sans Serif"
BEGIN BEGIN
DEFPUSHBUTTON "Finish", IDC_FINISH_BUTTON,121,138,50,14 DEFPUSHBUTTON "Finish", IDC_FINISH_BUTTON,121,138,50,14
DEFPUSHBUTTON "&Next >", IDC_NEXT_BUTTON,121,138,50,14 DEFPUSHBUTTON "&Next >", IDC_NEXT_BUTTON,121,138,50,14
PUSHBUTTON "< &Back", IDC_BACK_BUTTON,71,138,50,14 PUSHBUTTON "< &Back", IDC_BACK_BUTTON,71,138,50,14
PUSHBUTTON "Cancel", IDCANCEL,178,138,50,14 PUSHBUTTON "Cancel", IDCANCEL,178,138,50,14
PUSHBUTTON "Help", IDHELP,235,138,50,14,WS_GROUP PUSHBUTTON "Help", IDHELP,235,138,50,14,WS_GROUP
LTEXT "", IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN LTEXT "", IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN
CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5 CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5
END END
IDD_TBCUSTOMIZE DIALOG DISCARDABLE 10, 20, 357, 125 IDD_TBCUSTOMIZE DIALOG DISCARDABLE 10, 20, 357, 125
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Customize Toolbar" CAPTION "Customize Toolbar"
FONT 8, "MS Sans Serif" FONT 8, "MS Sans Serif"
BEGIN BEGIN
DEFPUSHBUTTON "&Close", IDCANCEL,308,6,44,14 DEFPUSHBUTTON "&Close", IDCANCEL,308,6,44,14
PUSHBUTTON "R&eset", IDC_RESET_BTN,308,23,44,14 PUSHBUTTON "R&eset", IDC_RESET_BTN,308,23,44,14
PUSHBUTTON "&Help", IDC_HELP_BTN,308,40,44,14 PUSHBUTTON "&Help", IDC_HELP_BTN,308,40,44,14
PUSHBUTTON "Move &Up", IDC_MOVEUP_BTN,308,74,44,14 PUSHBUTTON "Move &Up", IDC_MOVEUP_BTN,308,74,44,14
PUSHBUTTON "Move &Down", IDC_MOVEDN_BTN,308,91,44,14 PUSHBUTTON "Move &Down", IDC_MOVEDN_BTN,308,91,44,14
LTEXT "A&vailable buttons:", -1,4,5,84,10 LTEXT "A&vailable buttons:", -1,4,5,84,10
LISTBOX IDC_AVAILBTN_LBOX,4,17,120,100, LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP LISTBOX IDC_AVAILBTN_LBOX,4,17,120,100, LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
PUSHBUTTON "&Add ->", IDOK, 131, 42, 44, 14 PUSHBUTTON "&Add ->", IDOK, 131, 42, 44, 14
PUSHBUTTON "<- &Remove", IDC_REMOVE_BTN,131,62,44,14 PUSHBUTTON "<- &Remove", IDC_REMOVE_BTN,131,62,44,14
LTEXT "&Toolbar buttons:", -1,182,5,78,10 LTEXT "&Toolbar buttons:", -1,182,5,78,10
LISTBOX IDC_TOOLBARBTN_LBOX, 182,17,120,100,LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP LISTBOX IDC_TOOLBARBTN_LBOX, 182,17,120,100,LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
{ {
IDS_CLOSE "Close" IDS_CLOSE "Close"
} }
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
{ {
IDM_TODAY "Today:" IDM_TODAY "Today:"
IDM_GOTODAY "Go to today" IDM_GOTODAY "Go to today"
} }
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
{ {
IDS_SEPARATOR "Separator" IDS_SEPARATOR "Separator"
} }
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
{ {
HKY_NONE "None" HKY_NONE "None"
} }

View file

@ -1,86 +1,86 @@
/* /*
* Copyright 2003 José Manuel Ferrer Ortiz * Copyright 2003 José Manuel Ferrer Ortiz
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either * License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version. * version 2.1 of the License, or (at your option) any later version.
* *
* This library is distributed in the hope that it will be useful, * This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details. * Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software * License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
LANGUAGE LANG_SPANISH, SUBLANG_DEFAULT LANGUAGE LANG_SPANISH, SUBLANG_DEFAULT
IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140 IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
CAPTION "Propiedades de " CAPTION "Propiedades de "
FONT 8, "MS Sans Serif" FONT 8, "MS Sans Serif"
BEGIN BEGIN
DEFPUSHBUTTON "Aceptar", IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP DEFPUSHBUTTON "Aceptar", IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP
PUSHBUTTON "Cancelar", IDCANCEL,58,122,50,14 PUSHBUTTON "Cancelar", IDCANCEL,58,122,50,14
PUSHBUTTON "&Aplicar", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED PUSHBUTTON "&Aplicar", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED
PUSHBUTTON "Ayuda", IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP PUSHBUTTON "Ayuda", IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP
CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,4,4,212,114 CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,4,4,212,114
END END
IDD_WIZARD DIALOG DISCARDABLE 0, 0, 290, 159 IDD_WIZARD DIALOG DISCARDABLE 0, 0, 290, 159
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
CAPTION "Ayudante" CAPTION "Ayudante"
FONT 8, "MS Sans Serif" FONT 8, "MS Sans Serif"
BEGIN BEGIN
DEFPUSHBUTTON "Terminar", IDC_FINISH_BUTTON,121,138,50,14 DEFPUSHBUTTON "Terminar", IDC_FINISH_BUTTON,121,138,50,14
DEFPUSHBUTTON "&Siguiente >", IDC_NEXT_BUTTON,121,138,50,14 DEFPUSHBUTTON "&Siguiente >", IDC_NEXT_BUTTON,121,138,50,14
PUSHBUTTON "< &Anterior", IDC_BACK_BUTTON,71,138,50,14 PUSHBUTTON "< &Anterior", IDC_BACK_BUTTON,71,138,50,14
PUSHBUTTON "Cancelar", IDCANCEL,178,138,50,14 PUSHBUTTON "Cancelar", IDCANCEL,178,138,50,14
PUSHBUTTON "Ayuda", IDHELP,235,138,50,14,WS_GROUP PUSHBUTTON "Ayuda", IDHELP,235,138,50,14,WS_GROUP
LTEXT "", IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN LTEXT "", IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN
CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5 CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5
END END
IDD_TBCUSTOMIZE DIALOG DISCARDABLE 10, 20, 357, 125 IDD_TBCUSTOMIZE DIALOG DISCARDABLE 10, 20, 357, 125
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Personalizar barra de herramientas" CAPTION "Personalizar barra de herramientas"
FONT 8, "MS Sans Serif" FONT 8, "MS Sans Serif"
BEGIN BEGIN
DEFPUSHBUTTON "&Cerrar", IDCANCEL,308,6,44,14 DEFPUSHBUTTON "&Cerrar", IDCANCEL,308,6,44,14
PUSHBUTTON "R&estaurar", IDC_RESET_BTN,308,23,44,14 PUSHBUTTON "R&estaurar", IDC_RESET_BTN,308,23,44,14
PUSHBUTTON "&Ayuda", IDC_HELP_BTN,308,40,44,14 PUSHBUTTON "&Ayuda", IDC_HELP_BTN,308,40,44,14
PUSHBUTTON "Mover A&rriba", IDC_MOVEUP_BTN,308,74,44,14 PUSHBUTTON "Mover A&rriba", IDC_MOVEUP_BTN,308,74,44,14
PUSHBUTTON "Mover A&bajo", IDC_MOVEDN_BTN,308,91,44,14 PUSHBUTTON "Mover A&bajo", IDC_MOVEDN_BTN,308,91,44,14
LTEXT "Botones &disponibles:", -1,4,5,84,10 LTEXT "Botones &disponibles:", -1,4,5,84,10
LISTBOX IDC_AVAILBTN_LBOX,4,17,120,100, LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP LISTBOX IDC_AVAILBTN_LBOX,4,17,120,100, LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
PUSHBUTTON "A&ñadir ->", IDOK, 131, 42, 44, 14 PUSHBUTTON "A&ñadir ->", IDOK, 131, 42, 44, 14
PUSHBUTTON "<- &Eliminar", IDC_REMOVE_BTN,131,62,44,14 PUSHBUTTON "<- &Eliminar", IDC_REMOVE_BTN,131,62,44,14
LTEXT "B&otones de la barra:", -1,182,5,78,10 LTEXT "B&otones de la barra:", -1,182,5,78,10
LISTBOX IDC_TOOLBARBTN_LBOX, 182,17,120,100,LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP LISTBOX IDC_TOOLBARBTN_LBOX, 182,17,120,100,LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
{ {
IDS_CLOSE "Cerrar" IDS_CLOSE "Cerrar"
} }
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
{ {
IDM_TODAY "Hoy:" IDM_TODAY "Hoy:"
IDM_GOTODAY "Ir a hoy" IDM_GOTODAY "Ir a hoy"
} }
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
{ {
IDS_SEPARATOR "Separador" IDS_SEPARATOR "Separador"
} }
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
{ {
HKY_NONE "Ninguno" HKY_NONE "Ninguno"
} }

View file

@ -1,90 +1,90 @@
/* /*
* Comctl32 * Comctl32
* French language support * French language support
* *
* Copyright 1999 Eric Kohl * Copyright 1999 Eric Kohl
* Copyright 2003 Vincent Béron * Copyright 2003 Vincent Béron
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either * License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version. * version 2.1 of the License, or (at your option) any later version.
* *
* This library is distributed in the hope that it will be useful, * This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details. * Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software * License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL
IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140 IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
CAPTION "Propriétés pour " CAPTION "Propriétés pour "
FONT 8, "MS Sans Serif" FONT 8, "MS Sans Serif"
BEGIN BEGIN
DEFPUSHBUTTON "OK", IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP DEFPUSHBUTTON "OK", IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP
PUSHBUTTON "Annuler", IDCANCEL,58,122,50,14 PUSHBUTTON "Annuler", IDCANCEL,58,122,50,14
PUSHBUTTON "&Appliquer", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED PUSHBUTTON "&Appliquer", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED
PUSHBUTTON "Aide", IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP PUSHBUTTON "Aide", IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP
CONTROL "onglet", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,4,4,212,114 CONTROL "onglet", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,4,4,212,114
END END
IDD_WIZARD DIALOG DISCARDABLE 0, 0, 290, 159 IDD_WIZARD DIALOG DISCARDABLE 0, 0, 290, 159
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
CAPTION "Assistant" CAPTION "Assistant"
FONT 8, "MS Sans Serif" FONT 8, "MS Sans Serif"
BEGIN BEGIN
DEFPUSHBUTTON "Terminer", IDC_FINISH_BUTTON,121,138,50,14 DEFPUSHBUTTON "Terminer", IDC_FINISH_BUTTON,121,138,50,14
DEFPUSHBUTTON "&Suivant >", IDC_NEXT_BUTTON,121,138,50,14 DEFPUSHBUTTON "&Suivant >", IDC_NEXT_BUTTON,121,138,50,14
PUSHBUTTON "< &Précédent", IDC_BACK_BUTTON,71,138,50,14 PUSHBUTTON "< &Précédent", IDC_BACK_BUTTON,71,138,50,14
PUSHBUTTON "Annuler", IDCANCEL,178,138,50,14 PUSHBUTTON "Annuler", IDCANCEL,178,138,50,14
PUSHBUTTON "Aide", IDHELP,235,138,50,14,WS_GROUP PUSHBUTTON "Aide", IDHELP,235,138,50,14,WS_GROUP
LTEXT "", IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN LTEXT "", IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN
CONTROL "Onglet", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5 CONTROL "Onglet", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5
END END
IDD_TBCUSTOMIZE DIALOG DISCARDABLE 10, 20, 357, 125 IDD_TBCUSTOMIZE DIALOG DISCARDABLE 10, 20, 357, 125
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Personnaliser la barre d'outils" CAPTION "Personnaliser la barre d'outils"
FONT 8, "MS Sans Serif" FONT 8, "MS Sans Serif"
BEGIN BEGIN
DEFPUSHBUTTON "&Fermer", IDCANCEL,308,6,44,14 DEFPUSHBUTTON "&Fermer", IDCANCEL,308,6,44,14
PUSHBUTTON "&Réinitialiser", IDC_RESET_BTN,308,23,44,14 PUSHBUTTON "&Réinitialiser", IDC_RESET_BTN,308,23,44,14
PUSHBUTTON "&Aide", IDC_HELP_BTN,308,40,44,14 PUSHBUTTON "&Aide", IDC_HELP_BTN,308,40,44,14
PUSHBUTTON "&Monter", IDC_MOVEUP_BTN,308,74,44,14 PUSHBUTTON "&Monter", IDC_MOVEUP_BTN,308,74,44,14
PUSHBUTTON "&Descendre", IDC_MOVEDN_BTN,308,91,44,14 PUSHBUTTON "&Descendre", IDC_MOVEDN_BTN,308,91,44,14
LTEXT "Boutons disponibles :", -1,4,5,84,10 LTEXT "Boutons disponibles :", -1,4,5,84,10
LISTBOX IDC_AVAILBTN_LBOX,4,17,120,100, LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP LISTBOX IDC_AVAILBTN_LBOX,4,17,120,100, LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
PUSHBUTTON "A&jouter ->", IDOK, 131, 42, 44, 14 PUSHBUTTON "A&jouter ->", IDOK, 131, 42, 44, 14
PUSHBUTTON "<- &Enlever", IDC_REMOVE_BTN,131,62,44,14 PUSHBUTTON "<- &Enlever", IDC_REMOVE_BTN,131,62,44,14
LTEXT "&Boutons de la barre d'outils :", -1,182,5,78,10 LTEXT "&Boutons de la barre d'outils :", -1,182,5,78,10
LISTBOX IDC_TOOLBARBTN_LBOX, 182,17,120,100,LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP LISTBOX IDC_TOOLBARBTN_LBOX, 182,17,120,100,LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
{ {
IDS_CLOSE "Fermer" IDS_CLOSE "Fermer"
} }
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
{ {
IDM_TODAY "Aujourd'hui:" IDM_TODAY "Aujourd'hui:"
IDM_GOTODAY "Aller à aujourd'hui" IDM_GOTODAY "Aller à aujourd'hui"
} }
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
{ {
IDS_SEPARATOR "Séparateur" IDS_SEPARATOR "Séparateur"
} }
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
{ {
HKY_NONE "Aucun" HKY_NONE "Aucun"
} }

View file

@ -0,0 +1,87 @@
/*
* Copyright 1999 Eric Kohl
* Copyright 2003 Ivan Leo Murray-Smith
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
LANGUAGE LANG_ITALIAN, SUBLANG_DEFAULT
IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
CAPTION "Proprietà per "
FONT 8, "MS Sans Serif"
BEGIN
DEFPUSHBUTTON "OK", IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP
PUSHBUTTON "Annulla", IDCANCEL,58,122,50,14
PUSHBUTTON "&Applica", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED
PUSHBUTTON "Aiuto", IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP
CONTROL "Linguetta", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,4,4,212,114
END
IDD_WIZARD DIALOG DISCARDABLE 0, 0, 290, 159
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
CAPTION "Wizard"
FONT 8, "MS Sans Serif"
BEGIN
DEFPUSHBUTTON "Fine", IDC_FINISH_BUTTON,121,138,50,14
DEFPUSHBUTTON "&Avanti >", IDC_NEXT_BUTTON,121,138,50,14
PUSHBUTTON "< &Indietro", IDC_BACK_BUTTON,71,138,50,14
PUSHBUTTON "Anulla", IDCANCEL,178,138,50,14
PUSHBUTTON "Aiuto", IDHELP,235,138,50,14,WS_GROUP
LTEXT "", IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN
CONTROL "Linguetta", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5
END
IDD_TBCUSTOMIZE DIALOG DISCARDABLE 10, 20, 357, 125
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Personalitta la barra degli strumenti"
FONT 8, "MS Sans Serif"
BEGIN
DEFPUSHBUTTON "&Chiudi", IDCANCEL,308,6,44,14
PUSHBUTTON "R&eimpostare", IDC_RESET_BTN,308,23,44,14
PUSHBUTTON "&Aiuto", IDC_HELP_BTN,308,40,44,14
PUSHBUTTON "Muovi &Su", IDC_MOVEUP_BTN,308,74,44,14
PUSHBUTTON "Muovi &giù", IDC_MOVEDN_BTN,308,91,44,14
LTEXT "&Tasti disponibili:", -1,4,5,84,10
LISTBOX IDC_AVAILBTN_LBOX,4,17,120,100, LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
PUSHBUTTON "&Aggiungi ->", IDOK, 131, 42, 44, 14
PUSHBUTTON "<- &Rimuovi", IDC_REMOVE_BTN,131,62,44,14
LTEXT "&Tast della barra degli strumenti:", -1,182,5,78,10
LISTBOX IDC_TOOLBARBTN_LBOX, 182,17,120,100,LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
END
STRINGTABLE DISCARDABLE
{
IDS_CLOSE "Chiudi"
}
STRINGTABLE DISCARDABLE
{
IDM_TODAY "Oggi:"
IDM_GOTODAY "Vai a oggi"
}
STRINGTABLE DISCARDABLE
{
IDS_SEPARATOR "Separatore"
}
STRINGTABLE DISCARDABLE
{
HKY_NONE "Nessuno"
}

View file

@ -1,81 +1,81 @@
/* /*
* Copyright 2002 Won-kyu Park <wkpark@kldp.org> * Copyright 2002 Won-kyu Park <wkpark@kldp.org>
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either * License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version. * version 2.1 of the License, or (at your option) any later version.
* *
* This library is distributed in the hope that it will be useful, * This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details. * Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software * License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT
IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140 IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
CAPTION "Properties for " CAPTION "Properties for "
FONT 9, "MS Sans Serif" FONT 9, "MS Sans Serif"
BEGIN BEGIN
DEFPUSHBUTTON "확인", IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP DEFPUSHBUTTON "확인", IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP
PUSHBUTTON "취소", IDCANCEL,58,122,50,14 PUSHBUTTON "취소", IDCANCEL,58,122,50,14
PUSHBUTTON "적용(&A)", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED PUSHBUTTON "적용(&A)", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED
PUSHBUTTON "도움말", IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP PUSHBUTTON "도움말", IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP
CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,4,4,212,114 CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,4,4,212,114
END END
IDD_WIZARD DIALOG DISCARDABLE 0, 0, 290, 159 IDD_WIZARD DIALOG DISCARDABLE 0, 0, 290, 159
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
CAPTION "Wizard" CAPTION "Wizard"
FONT 9, "MS Sans Serif" FONT 9, "MS Sans Serif"
BEGIN BEGIN
DEFPUSHBUTTON "종료", IDC_FINISH_BUTTON,121,138,50,14 DEFPUSHBUTTON "종료", IDC_FINISH_BUTTON,121,138,50,14
DEFPUSHBUTTON "다음(&N) >", IDC_NEXT_BUTTON,121,138,50,14 DEFPUSHBUTTON "다음(&N) >", IDC_NEXT_BUTTON,121,138,50,14
PUSHBUTTON "< 이전(&B)", IDC_BACK_BUTTON,71,138,50,14 PUSHBUTTON "< 이전(&B)", IDC_BACK_BUTTON,71,138,50,14
PUSHBUTTON "취소", IDCANCEL,178,138,50,14 PUSHBUTTON "취소", IDCANCEL,178,138,50,14
PUSHBUTTON "도움말", IDHELP,235,138,50,14,WS_GROUP PUSHBUTTON "도움말", IDHELP,235,138,50,14,WS_GROUP
LTEXT "", IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN LTEXT "", IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN
CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5 CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5
END END
IDD_TBCUSTOMIZE DIALOG DISCARDABLE 10, 20, 357, 125 IDD_TBCUSTOMIZE DIALOG DISCARDABLE 10, 20, 357, 125
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Customize Toolbar" CAPTION "Customize Toolbar"
FONT 9, "MS Sans Serif" FONT 9, "MS Sans Serif"
BEGIN BEGIN
DEFPUSHBUTTON "닫기(&C)", IDCANCEL,308,6,44,14 DEFPUSHBUTTON "닫기(&C)", IDCANCEL,308,6,44,14
PUSHBUTTON "다시(&e)", IDC_RESET_BTN,308,23,44,14 PUSHBUTTON "다시(&e)", IDC_RESET_BTN,308,23,44,14
PUSHBUTTON "도움말(&H)", IDC_HELP_BTN,308,40,44,14 PUSHBUTTON "도움말(&H)", IDC_HELP_BTN,308,40,44,14
PUSHBUTTON "Move &Up", IDC_MOVEUP_BTN,308,74,44,14 PUSHBUTTON "Move &Up", IDC_MOVEUP_BTN,308,74,44,14
PUSHBUTTON "Move &Down", IDC_MOVEDN_BTN,308,91,44,14 PUSHBUTTON "Move &Down", IDC_MOVEDN_BTN,308,91,44,14
LTEXT "A&vailable buttons:", -1,4,5,84,10 LTEXT "A&vailable buttons:", -1,4,5,84,10
LISTBOX IDC_AVAILBTN_LBOX,4,17,120,100, LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP LISTBOX IDC_AVAILBTN_LBOX,4,17,120,100, LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
PUSHBUTTON "&Add ->", IDOK, 131, 42, 44, 14 PUSHBUTTON "&Add ->", IDOK, 131, 42, 44, 14
PUSHBUTTON "<- &Remove", IDC_REMOVE_BTN,131,62,44,14 PUSHBUTTON "<- &Remove", IDC_REMOVE_BTN,131,62,44,14
LTEXT "&Toolbar buttons:", -1,182,5,78,10 LTEXT "&Toolbar buttons:", -1,182,5,78,10
LISTBOX IDC_TOOLBARBTN_LBOX, 182,17,120,100,LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP LISTBOX IDC_TOOLBARBTN_LBOX, 182,17,120,100,LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
{ {
IDS_CLOSE "닫기" IDS_CLOSE "닫기"
} }
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
{ {
IDM_TODAY "오늘:" IDM_TODAY "오늘:"
IDM_GOTODAY "Go to today" IDM_GOTODAY "Go to today"
} }
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
{ {
IDS_SEPARATOR "Separator" IDS_SEPARATOR "Separator"
} }

View file

@ -0,0 +1,88 @@
/*
* comctl (Dutch resources)
*
* Copyright 2003 Hans Leidekker
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
LANGUAGE LANG_DUTCH, SUBLANG_DEFAULT
IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
CAPTION "Eigenschappen van "
FONT 8, "MS Sans Serif"
BEGIN
DEFPUSHBUTTON "OK", IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP
PUSHBUTTON "Annuleren", IDCANCEL,58,122,50,14
PUSHBUTTON "&Toepassen", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED
PUSHBUTTON "Help", IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP
CONTROL "Tabblad", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,4,4,212,114
END
IDD_WIZARD DIALOG DISCARDABLE 0, 0, 290, 159
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
CAPTION "Assistent"
FONT 8, "MS Sans Serif"
BEGIN
DEFPUSHBUTTON "Beëindigen", IDC_FINISH_BUTTON,121,138,50,14
DEFPUSHBUTTON "&Volgende >", IDC_NEXT_BUTTON,121,138,50,14
PUSHBUTTON "< V&orige", IDC_BACK_BUTTON,71,138,50,14
PUSHBUTTON "Annuleren", IDCANCEL,178,138,50,14
PUSHBUTTON "Help", IDHELP,235,138,50,14,WS_GROUP
LTEXT "", IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN
CONTROL "Tabblad", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5
END
IDD_TBCUSTOMIZE DIALOG DISCARDABLE 10, 20, 357, 125
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Gereedschappenbalk aanpassen"
FONT 8, "MS Sans Serif"
BEGIN
DEFPUSHBUTTON "&Afsluiten", IDCANCEL,308,6,44,14
PUSHBUTTON "&Reset", IDC_RESET_BTN,308,23,44,14
PUSHBUTTON "&Help", IDC_HELP_BTN,308,40,44,14
PUSHBUTTON "Verplaats Om&hoog", IDC_MOVEUP_BTN,308,74,44,14
PUSHBUTTON "Verplaats Om&laag", IDC_MOVEDN_BTN,308,91,44,14
LTEXT "&Beschikbare knoppen:", -1,4,5,84,10
LISTBOX IDC_AVAILBTN_LBOX,4,17,120,100, LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
PUSHBUTTON "&Toevoegen ->", IDOK, 131, 42, 44, 14
PUSHBUTTON "<- &Verwijderen", IDC_REMOVE_BTN,131,62,44,14
LTEXT "&Knoppen:", -1,182,5,78,10
LISTBOX IDC_TOOLBARBTN_LBOX, 182,17,120,100,LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
END
STRINGTABLE DISCARDABLE
{
IDS_CLOSE "Sluiten"
}
STRINGTABLE DISCARDABLE
{
IDM_TODAY "Vandaag:"
IDM_GOTODAY "Ga vandaag naar"
}
STRINGTABLE DISCARDABLE
{
IDS_SEPARATOR "Scheidingsteken"
}
STRINGTABLE DISCARDABLE
{
HKY_NONE "Geen"
}

View file

@ -1,82 +1,82 @@
/* /*
* Copyright 1999 Eric Kohl * Copyright 1999 Eric Kohl
* Copyright 2002 Jacek Bator * Copyright 2002 Jacek Bator
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either * License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version. * version 2.1 of the License, or (at your option) any later version.
* *
* This library is distributed in the hope that it will be useful, * This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details. * Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software * License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
LANGUAGE LANG_POLISH, SUBLANG_DEFAULT LANGUAGE LANG_POLISH, SUBLANG_DEFAULT
IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140 IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
CAPTION "W³aœciwoœci " CAPTION "W³aœciwoœci "
FONT 8, "MS Sans Serif" FONT 8, "MS Sans Serif"
BEGIN BEGIN
DEFPUSHBUTTON "OK", IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP DEFPUSHBUTTON "OK", IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP
PUSHBUTTON "Anuluj", IDCANCEL,58,122,50,14 PUSHBUTTON "Anuluj", IDCANCEL,58,122,50,14
PUSHBUTTON "&Zastosuj", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED PUSHBUTTON "&Zastosuj", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED
PUSHBUTTON "Pomoc", IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP PUSHBUTTON "Pomoc", IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP
CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,4,4,212,114 CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,4,4,212,114
END END
IDD_WIZARD DIALOG DISCARDABLE 0, 0, 290, 159 IDD_WIZARD DIALOG DISCARDABLE 0, 0, 290, 159
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
CAPTION "Kreator" CAPTION "Kreator"
FONT 8, "MS Sans Serif" FONT 8, "MS Sans Serif"
BEGIN BEGIN
DEFPUSHBUTTON "Zakoñcz", IDC_FINISH_BUTTON,121,138,50,14 DEFPUSHBUTTON "Zakoñcz", IDC_FINISH_BUTTON,121,138,50,14
DEFPUSHBUTTON "&Dalej >", IDC_NEXT_BUTTON,121,138,50,14 DEFPUSHBUTTON "&Dalej >", IDC_NEXT_BUTTON,121,138,50,14
PUSHBUTTON "< &Wstecz", IDC_BACK_BUTTON,71,138,50,14 PUSHBUTTON "< &Wstecz", IDC_BACK_BUTTON,71,138,50,14
PUSHBUTTON "Anuluj", IDCANCEL,178,138,50,14 PUSHBUTTON "Anuluj", IDCANCEL,178,138,50,14
PUSHBUTTON "Pomoc", IDHELP,235,138,50,14,WS_GROUP PUSHBUTTON "Pomoc", IDHELP,235,138,50,14,WS_GROUP
LTEXT "", IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN LTEXT "", IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN
CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5 CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5
END END
IDD_TBCUSTOMIZE DIALOG DISCARDABLE 10, 20, 357, 125 IDD_TBCUSTOMIZE DIALOG DISCARDABLE 10, 20, 357, 125
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Dostosowywanie paska narzêdzi" CAPTION "Dostosowywanie paska narzêdzi"
FONT 8, "MS Sans Serif" FONT 8, "MS Sans Serif"
BEGIN BEGIN
DEFPUSHBUTTON "&Zamknij", IDCANCEL,308,6,44,14 DEFPUSHBUTTON "&Zamknij", IDCANCEL,308,6,44,14
PUSHBUTTON "Z&resetuj", IDC_RESET_BTN,308,23,44,14 PUSHBUTTON "Z&resetuj", IDC_RESET_BTN,308,23,44,14
PUSHBUTTON "&Pomoc", IDC_HELP_BTN,308,40,44,14 PUSHBUTTON "&Pomoc", IDC_HELP_BTN,308,40,44,14
PUSHBUTTON "Przenieœ &w górê", IDC_MOVEUP_BTN,308,74,44,14 PUSHBUTTON "Przenieœ &w górê", IDC_MOVEUP_BTN,308,74,44,14
PUSHBUTTON "Przenieœ w &dó³", IDC_MOVEDN_BTN,308,91,44,14 PUSHBUTTON "Przenieœ w &dó³", IDC_MOVEDN_BTN,308,91,44,14
LTEXT "Do&stêpne przyciski:", -1,4,5,84,10 LTEXT "Do&stêpne przyciski:", -1,4,5,84,10
LISTBOX IDC_AVAILBTN_LBOX,4,17,120,100, LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP LISTBOX IDC_AVAILBTN_LBOX,4,17,120,100, LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
PUSHBUTTON "D&odaj ->", IDOK, 131, 42, 44, 14 PUSHBUTTON "D&odaj ->", IDOK, 131, 42, 44, 14
PUSHBUTTON "<- &Usuñ", IDC_REMOVE_BTN,131,62,44,14 PUSHBUTTON "<- &Usuñ", IDC_REMOVE_BTN,131,62,44,14
LTEXT "&Przyciski paska narzêdzi:", -1,182,5,78,10 LTEXT "&Przyciski paska narzêdzi:", -1,182,5,78,10
LISTBOX IDC_TOOLBARBTN_LBOX, 182,17,120,100,LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP LISTBOX IDC_TOOLBARBTN_LBOX, 182,17,120,100,LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
{ {
IDS_CLOSE "Zamknij" IDS_CLOSE "Zamknij"
} }
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
{ {
IDM_TODAY "Dziœ:" IDM_TODAY "Dziœ:"
IDM_GOTODAY "IdŸ do dziœ" IDM_GOTODAY "IdŸ do dziœ"
} }
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
{ {
IDS_SEPARATOR "Odstêp" IDS_SEPARATOR "Odstêp"
} }

View file

@ -1,86 +1,86 @@
/* /*
* Copyright 2003 Marcelo Duarte * Copyright 2003 Marcelo Duarte
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either * License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version. * version 2.1 of the License, or (at your option) any later version.
* *
* This library is distributed in the hope that it will be useful, * This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details. * Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software * License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
LANGUAGE LANG_PORTUGUESE, SUBLANG_DEFAULT LANGUAGE LANG_PORTUGUESE, SUBLANG_DEFAULT
IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140 IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
CAPTION "Propriedades para " CAPTION "Propriedades para "
FONT 8, "MS Sans Serif" FONT 8, "MS Sans Serif"
BEGIN BEGIN
DEFPUSHBUTTON "OK", IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP DEFPUSHBUTTON "OK", IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP
PUSHBUTTON "Cancelar", IDCANCEL,58,122,50,14 PUSHBUTTON "Cancelar", IDCANCEL,58,122,50,14
PUSHBUTTON "&Aplicar", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED PUSHBUTTON "&Aplicar", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED
PUSHBUTTON "Ajuda", IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP PUSHBUTTON "Ajuda", IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP
CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,4,4,212,114 CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,4,4,212,114
END END
IDD_WIZARD DIALOG DISCARDABLE 0, 0, 290, 159 IDD_WIZARD DIALOG DISCARDABLE 0, 0, 290, 159
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
CAPTION "Assistente" CAPTION "Assistente"
FONT 8, "MS Sans Serif" FONT 8, "MS Sans Serif"
BEGIN BEGIN
DEFPUSHBUTTON "Finalizar", IDC_FINISH_BUTTON,121,138,50,14 DEFPUSHBUTTON "Finalizar", IDC_FINISH_BUTTON,121,138,50,14
DEFPUSHBUTTON "&Avançar >", IDC_NEXT_BUTTON,121,138,50,14 DEFPUSHBUTTON "&Avançar >", IDC_NEXT_BUTTON,121,138,50,14
PUSHBUTTON "< &Voltar", IDC_BACK_BUTTON,71,138,50,14 PUSHBUTTON "< &Voltar", IDC_BACK_BUTTON,71,138,50,14
PUSHBUTTON "Cancelar", IDCANCEL,178,138,50,14 PUSHBUTTON "Cancelar", IDCANCEL,178,138,50,14
PUSHBUTTON "Ajuda", IDHELP,235,138,50,14,WS_GROUP PUSHBUTTON "Ajuda", IDHELP,235,138,50,14,WS_GROUP
LTEXT "", IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN LTEXT "", IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN
CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5 CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5
END END
IDD_TBCUSTOMIZE DIALOG DISCARDABLE 10, 20, 357, 125 IDD_TBCUSTOMIZE DIALOG DISCARDABLE 10, 20, 357, 125
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Personalizar barra de ferramentas" CAPTION "Personalizar barra de ferramentas"
FONT 8, "MS Sans Serif" FONT 8, "MS Sans Serif"
BEGIN BEGIN
DEFPUSHBUTTON "&Fechar", IDCANCEL,308,6,44,14 DEFPUSHBUTTON "&Fechar", IDCANCEL,308,6,44,14
PUSHBUTTON "R&estaurar", IDC_RESET_BTN,308,23,44,14 PUSHBUTTON "R&estaurar", IDC_RESET_BTN,308,23,44,14
PUSHBUTTON "&Ajuda", IDC_HELP_BTN,308,40,44,14 PUSHBUTTON "&Ajuda", IDC_HELP_BTN,308,40,44,14
PUSHBUTTON "A&cima", IDC_MOVEUP_BTN,308,74,44,14 PUSHBUTTON "A&cima", IDC_MOVEUP_BTN,308,74,44,14
PUSHBUTTON "A&baixo", IDC_MOVEDN_BTN,308,91,44,14 PUSHBUTTON "A&baixo", IDC_MOVEDN_BTN,308,91,44,14
LTEXT "Botões &disponíveis:", -1,4,5,84,10 LTEXT "Botões &disponíveis:", -1,4,5,84,10
LISTBOX IDC_AVAILBTN_LBOX,4,17,120,100, LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP LISTBOX IDC_AVAILBTN_LBOX,4,17,120,100, LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
PUSHBUTTON "&Adicionar ->", IDOK, 131, 42, 44, 14 PUSHBUTTON "&Adicionar ->", IDOK, 131, 42, 44, 14
PUSHBUTTON "<- &Remover", IDC_REMOVE_BTN,131,62,44,14 PUSHBUTTON "<- &Remover", IDC_REMOVE_BTN,131,62,44,14
LTEXT "&Botões da barra de ferramentas:", -1,182,5,78,10 LTEXT "&Botões da barra de ferramentas:", -1,182,5,78,10
LISTBOX IDC_TOOLBARBTN_LBOX, 182,17,120,100,LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP LISTBOX IDC_TOOLBARBTN_LBOX, 182,17,120,100,LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
{ {
IDS_CLOSE "Fechar" IDS_CLOSE "Fechar"
} }
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
{ {
IDM_TODAY "Hoje:" IDM_TODAY "Hoje:"
IDM_GOTODAY "Ir para hoje" IDM_GOTODAY "Ir para hoje"
} }
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
{ {
IDS_SEPARATOR "Separador" IDS_SEPARATOR "Separador"
} }
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
{ {
HKY_NONE "Nenhum" HKY_NONE "Nenhum"
} }

View file

@ -1,88 +1,88 @@
/* /*
* comctl (Russian resources) * comctl (Russian resources)
* *
* Copyright 2003 Igor Stepin * Copyright 2003 Igor Stepin
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either * License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version. * version 2.1 of the License, or (at your option) any later version.
* *
* This library is distributed in the hope that it will be useful, * This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details. * Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software * License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140 IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
CAPTION "Ñâîéñòâà äëÿ " CAPTION "Ñâîéñòâà äëÿ "
FONT 8, "MS Sans Serif" FONT 8, "MS Sans Serif"
BEGIN BEGIN
DEFPUSHBUTTON "OK", IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP DEFPUSHBUTTON "OK", IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP
PUSHBUTTON "Îòìåíà", IDCANCEL,58,122,50,14 PUSHBUTTON "Îòìåíà", IDCANCEL,58,122,50,14
PUSHBUTTON "Ïðè&ìåíèòü", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED PUSHBUTTON "Ïðè&ìåíèòü", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED
PUSHBUTTON "&Ñïðàâêà", IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP PUSHBUTTON "&Ñïðàâêà", IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP
CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,4,4,212,114 CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,4,4,212,114
END END
IDD_WIZARD DIALOG DISCARDABLE 0, 0, 290, 159 IDD_WIZARD DIALOG DISCARDABLE 0, 0, 290, 159
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
CAPTION "Ìàñòåð" CAPTION "Ìàñòåð"
FONT 8, "MS Sans Serif" FONT 8, "MS Sans Serif"
BEGIN BEGIN
DEFPUSHBUTTON "Çàâåðøèòü", IDC_FINISH_BUTTON,121,138,50,14 DEFPUSHBUTTON "Çàâåðøèòü", IDC_FINISH_BUTTON,121,138,50,14
DEFPUSHBUTTON "&Äàëåå >", IDC_NEXT_BUTTON,121,138,50,14 DEFPUSHBUTTON "&Äàëåå >", IDC_NEXT_BUTTON,121,138,50,14
PUSHBUTTON "< &Íàçàä", IDC_BACK_BUTTON,71,138,50,14 PUSHBUTTON "< &Íàçàä", IDC_BACK_BUTTON,71,138,50,14
PUSHBUTTON "Îòìåíà", IDCANCEL,178,138,50,14 PUSHBUTTON "Îòìåíà", IDCANCEL,178,138,50,14
PUSHBUTTON "&Ñïðàâêà", IDHELP,235,138,50,14,WS_GROUP PUSHBUTTON "&Ñïðàâêà", IDHELP,235,138,50,14,WS_GROUP
LTEXT "", IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN LTEXT "", IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN
CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5 CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5
END END
IDD_TBCUSTOMIZE DIALOG DISCARDABLE 10, 20, 357, 125 IDD_TBCUSTOMIZE DIALOG DISCARDABLE 10, 20, 357, 125
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Íàñòðîéêà ïàíåëè èíñòðóìåíòîâ" CAPTION "Íàñòðîéêà ïàíåëè èíñòðóìåíòîâ"
FONT 8, "MS Sans Serif" FONT 8, "MS Sans Serif"
BEGIN BEGIN
DEFPUSHBUTTON "&Çàêðûòü", IDCANCEL,308,6,44,14 DEFPUSHBUTTON "&Çàêðûòü", IDCANCEL,308,6,44,14
PUSHBUTTON "Ñ&áðîñèòü", IDC_RESET_BTN,308,23,44,14 PUSHBUTTON "Ñ&áðîñèòü", IDC_RESET_BTN,308,23,44,14
PUSHBUTTON "&Ñïðàâêà", IDC_HELP_BTN,308,40,44,14 PUSHBUTTON "&Ñïðàâêà", IDC_HELP_BTN,308,40,44,14
PUSHBUTTON "Ïåðåìåñòèòü &ââåðõ", IDC_MOVEUP_BTN,308,74,44,14 PUSHBUTTON "Ïåðåìåñòèòü &ââåðõ", IDC_MOVEUP_BTN,308,74,44,14
PUSHBUTTON "Ïåðåìåñòèòü &âíèç", IDC_MOVEDN_BTN,308,91,44,14 PUSHBUTTON "Ïåðåìåñòèòü &âíèç", IDC_MOVEDN_BTN,308,91,44,14
LTEXT "&Äîñòóïíûå êíîïêè:", -1,4,5,84,10 LTEXT "&Äîñòóïíûå êíîïêè:", -1,4,5,84,10
LISTBOX IDC_AVAILBTN_LBOX,4,17,120,100, LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP LISTBOX IDC_AVAILBTN_LBOX,4,17,120,100, LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
PUSHBUTTON "&Äîáàâèòü ->", IDOK, 131, 42, 44, 14 PUSHBUTTON "&Äîáàâèòü ->", IDOK, 131, 42, 44, 14
PUSHBUTTON "<- &Óäàëèòü", IDC_REMOVE_BTN,131,62,44,14 PUSHBUTTON "<- &Óäàëèòü", IDC_REMOVE_BTN,131,62,44,14
LTEXT "&Êíîïêè ïàíåëè èíñòðóìåíòîâ:", -1,182,5,78,10 LTEXT "&Êíîïêè ïàíåëè èíñòðóìåíòîâ:", -1,182,5,78,10
LISTBOX IDC_TOOLBARBTN_LBOX, 182,17,120,100,LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP LISTBOX IDC_TOOLBARBTN_LBOX, 182,17,120,100,LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
{ {
IDS_CLOSE "Çàêðûòü" IDS_CLOSE "Çàêðûòü"
} }
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
{ {
IDM_TODAY "Ñåãîäíÿ:" IDM_TODAY "Ñåãîäíÿ:"
IDM_GOTODAY "Òåêóùàÿ äàòà" IDM_GOTODAY "Òåêóùàÿ äàòà"
} }
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
{ {
IDS_SEPARATOR "Ðàçäåëèòåëü" IDS_SEPARATOR "Ðàçäåëèòåëü"
} }
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
{ {
HKY_NONE "Íåò" HKY_NONE "Íåò"
} }

View file

@ -1,81 +1,81 @@
/* /*
* Copyright 2002-2003 Rok Mandeljc <rok.mandeljc@gimb.org> * Copyright 2002-2003 Rok Mandeljc <rok.mandeljc@gimb.org>
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either * License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version. * version 2.1 of the License, or (at your option) any later version.
* *
* This library is distributed in the hope that it will be useful, * This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details. * Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software * License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
LANGUAGE LANG_SLOVENIAN, SUBLANG_DEFAULT LANGUAGE LANG_SLOVENIAN, SUBLANG_DEFAULT
IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140 IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
CAPTION "Lastnosti" CAPTION "Lastnosti"
FONT 8, "MS Sans Serif" FONT 8, "MS Sans Serif"
BEGIN BEGIN
DEFPUSHBUTTON "V redu", IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP DEFPUSHBUTTON "V redu", IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP
PUSHBUTTON "Preklièi", IDCANCEL,58,122,50,14 PUSHBUTTON "Preklièi", IDCANCEL,58,122,50,14
PUSHBUTTON "&Uporabi", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED PUSHBUTTON "&Uporabi", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED
PUSHBUTTON "Pomoè", IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP PUSHBUTTON "Pomoè", IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP
CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,4,4,212,114 CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,4,4,212,114
END END
IDD_WIZARD DIALOG DISCARDABLE 0, 0, 290, 159 IDD_WIZARD DIALOG DISCARDABLE 0, 0, 290, 159
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
CAPTION "Èarovnik" CAPTION "Èarovnik"
FONT 8, "MS Sans Serif" FONT 8, "MS Sans Serif"
BEGIN BEGIN
DEFPUSHBUTTON "Dokonèaj", IDC_FINISH_BUTTON,121,138,50,14 DEFPUSHBUTTON "Dokonèaj", IDC_FINISH_BUTTON,121,138,50,14
DEFPUSHBUTTON "Naprej >", IDC_NEXT_BUTTON,121,138,50,14 DEFPUSHBUTTON "Naprej >", IDC_NEXT_BUTTON,121,138,50,14
PUSHBUTTON "< Na&zaj", IDC_BACK_BUTTON,71,138,50,14 PUSHBUTTON "< Na&zaj", IDC_BACK_BUTTON,71,138,50,14
PUSHBUTTON "Preklièi", IDCANCEL,178,138,50,14 PUSHBUTTON "Preklièi", IDCANCEL,178,138,50,14
PUSHBUTTON "Pomoè", IDHELP,235,138,50,14,WS_GROUP PUSHBUTTON "Pomoè", IDHELP,235,138,50,14,WS_GROUP
LTEXT "", IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN LTEXT "", IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN
CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5 CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5
END END
IDD_TBCUSTOMIZE DIALOG DISCARDABLE 10, 20, 357, 125 IDD_TBCUSTOMIZE DIALOG DISCARDABLE 10, 20, 357, 125
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Prilagoditev orodne vrstice" CAPTION "Prilagoditev orodne vrstice"
FONT 8, "MS Sans Serif" FONT 8, "MS Sans Serif"
BEGIN BEGIN
DEFPUSHBUTTON "&Zapri", IDCANCEL,308,6,44,14 DEFPUSHBUTTON "&Zapri", IDCANCEL,308,6,44,14
PUSHBUTTON "Po&nastavi", IDC_RESET_BTN,308,23,44,14 PUSHBUTTON "Po&nastavi", IDC_RESET_BTN,308,23,44,14
PUSHBUTTON "&Pomoè", IDC_HELP_BTN,308,40,44,14 PUSHBUTTON "&Pomoè", IDC_HELP_BTN,308,40,44,14
PUSHBUTTON "N&avzgor", IDC_MOVEUP_BTN,308,74,44,14 PUSHBUTTON "N&avzgor", IDC_MOVEUP_BTN,308,74,44,14
PUSHBUTTON "Na&vzdol", IDC_MOVEDN_BTN,308,91,44,14 PUSHBUTTON "Na&vzdol", IDC_MOVEDN_BTN,308,91,44,14
LTEXT "&Gumbi na voljo:", -1,4,5,84,10 LTEXT "&Gumbi na voljo:", -1,4,5,84,10
LISTBOX IDC_AVAILBTN_LBOX,4,17,120,100, LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP LISTBOX IDC_AVAILBTN_LBOX,4,17,120,100, LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
PUSHBUTTON "&Dodaj ->", IDOK, 131, 42, 44, 14 PUSHBUTTON "&Dodaj ->", IDOK, 131, 42, 44, 14
PUSHBUTTON "<- &Odstrani", IDC_REMOVE_BTN,131,62,44,14 PUSHBUTTON "<- &Odstrani", IDC_REMOVE_BTN,131,62,44,14
LTEXT "G&umbi orodne vrstice:", -1,182,5,78,10 LTEXT "G&umbi orodne vrstice:", -1,182,5,78,10
LISTBOX IDC_TOOLBARBTN_LBOX, 182,17,120,100,LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP LISTBOX IDC_TOOLBARBTN_LBOX, 182,17,120,100,LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
{ {
IDS_CLOSE "Zapri" IDS_CLOSE "Zapri"
} }
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
{ {
IDM_TODAY "Danes:" IDM_TODAY "Danes:"
IDM_GOTODAY "&Poglejte danes" IDM_GOTODAY "&Poglejte danes"
} }
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
{ {
IDS_SEPARATOR "Loèilo" IDS_SEPARATOR "Loèilo"
} }

View file

@ -807,8 +807,8 @@ STATUSBAR_WMDestroy (STATUSWINDOWINFO *infoPtr)
if (infoPtr->hwndToolTip) if (infoPtr->hwndToolTip)
DestroyWindow (infoPtr->hwndToolTip); DestroyWindow (infoPtr->hwndToolTip);
Free (infoPtr);
SetWindowLongW(infoPtr->Self, 0, 0); SetWindowLongW(infoPtr->Self, 0, 0);
Free (infoPtr);
return 0; return 0;
} }

View file

@ -79,7 +79,7 @@ typedef struct
BOOL DoRedraw; /* flag for redrawing when tab contents is changed*/ BOOL DoRedraw; /* flag for redrawing when tab contents is changed*/
BOOL needsScrolling; /* TRUE if the size of the tabs is greater than BOOL needsScrolling; /* TRUE if the size of the tabs is greater than
* the size of the control */ * the size of the control */
BOOL fSizeSet; /* was the size of the tabs explicitly set? */ BOOL fHeightSet; /* was the height of the tabs explicitly set? */
BOOL bUnicode; /* Unicode control? */ BOOL bUnicode; /* Unicode control? */
HWND hwndUpDown; /* Updown control used for scrolling */ HWND hwndUpDown; /* Updown control used for scrolling */
} TAB_INFO; } TAB_INFO;
@ -93,7 +93,7 @@ typedef struct
#define DISPLAY_AREA_PADDINGY 2 #define DISPLAY_AREA_PADDINGY 2
#define CONTROL_BORDER_SIZEX 2 #define CONTROL_BORDER_SIZEX 2
#define CONTROL_BORDER_SIZEY 2 #define CONTROL_BORDER_SIZEY 2
#define BUTTON_SPACINGX 4 #define BUTTON_SPACINGX 3
#define BUTTON_SPACINGY 4 #define BUTTON_SPACINGY 4
#define FLAT_BTN_SPACINGX 8 #define FLAT_BTN_SPACINGX 8
#define DEFAULT_TAB_WIDTH 96 #define DEFAULT_TAB_WIDTH 96
@ -344,11 +344,10 @@ static BOOL TAB_InternalGetItemRect(
itemRect->bottom = clientRect.top + itemRect->bottom = clientRect.top +
infoPtr->tabHeight + infoPtr->tabHeight +
itemRect->top * (infoPtr->tabHeight - 2) + itemRect->top * (infoPtr->tabHeight - 2) +
((lStyle & TCS_BUTTONS) ? itemRect->top * BUTTON_SPACINGY : 0); ((lStyle & TCS_BUTTONS) ? itemRect->top * BUTTON_SPACINGY : SELECTED_TAB_OFFSET);
itemRect->top = clientRect.top + itemRect->top = clientRect.top +
SELECTED_TAB_OFFSET +
itemRect->top * (infoPtr->tabHeight - 2) + itemRect->top * (infoPtr->tabHeight - 2) +
((lStyle & TCS_BUTTONS) ? itemRect->top * BUTTON_SPACINGY : 0); ((lStyle & TCS_BUTTONS) ? itemRect->top * BUTTON_SPACINGY : SELECTED_TAB_OFFSET);
} }
/* /*
@ -1072,6 +1071,7 @@ static void TAB_SetItemBounds (HWND hwnd)
INT iTemp; INT iTemp;
RECT* rcItem; RECT* rcItem;
INT iIndex; INT iIndex;
INT icon_width = 0;
/* /*
* We need to get text information so we need a DC and we need to select * We need to get text information so we need a DC and we need to select
@ -1102,7 +1102,7 @@ static void TAB_SetItemBounds (HWND hwnd)
curItemLeftPos = 0; curItemLeftPos = 0;
curItemRowCount = infoPtr->uNumItem ? 1 : 0; curItemRowCount = infoPtr->uNumItem ? 1 : 0;
if (!(lStyle & TCS_FIXEDWIDTH) && !((lStyle & TCS_OWNERDRAWFIXED) && infoPtr->fSizeSet) ) if (!(infoPtr->fHeightSet))
{ {
int item_height; int item_height;
int icon_height = 0; int icon_height = 0;
@ -1134,38 +1134,36 @@ static void TAB_SetItemBounds (HWND hwnd)
TRACE("client right=%ld\n", clientRect.right); TRACE("client right=%ld\n", clientRect.right);
/* Get the icon width */
if (infoPtr->himl)
{
ImageList_GetIconSize(infoPtr->himl, &icon_width, 0);
if (lStyle & TCS_FIXEDWIDTH)
icon_width += 4;
else
/* Add padding if icon is present */
icon_width += infoPtr->uHItemPadding;
}
for (curItem = 0; curItem < infoPtr->uNumItem; curItem++) for (curItem = 0; curItem < infoPtr->uNumItem; curItem++)
{ {
/* Set the leftmost position of the tab. */ /* Set the leftmost position of the tab. */
infoPtr->items[curItem].rect.left = curItemLeftPos; infoPtr->items[curItem].rect.left = curItemLeftPos;
if ( (lStyle & TCS_FIXEDWIDTH) || ((lStyle & TCS_OWNERDRAWFIXED) && infoPtr->fSizeSet)) if (lStyle & TCS_FIXEDWIDTH)
{ {
infoPtr->items[curItem].rect.right = infoPtr->items[curItem].rect.left + infoPtr->items[curItem].rect.right = infoPtr->items[curItem].rect.left +
infoPtr->tabWidth + max(infoPtr->tabWidth, icon_width);
2 * infoPtr->uHItemPadding;
} }
else else
{ {
int icon_width = 0;
int num = 2; int num = 2;
/* Calculate how wide the tab is depending on the text it contains */ /* Calculate how wide the tab is depending on the text it contains */
GetTextExtentPoint32W(hdc, infoPtr->items[curItem].pszText, GetTextExtentPoint32W(hdc, infoPtr->items[curItem].pszText,
lstrlenW(infoPtr->items[curItem].pszText), &size); lstrlenW(infoPtr->items[curItem].pszText), &size);
/* under Windows, there seems to be a minimum width of 2x the height
* for button style tabs */
if (lStyle & TCS_BUTTONS)
size.cx = max(size.cx, 2 * (infoPtr->tabHeight - 2));
/* Add the icon width */
if (infoPtr->himl)
{
ImageList_GetIconSize(infoPtr->himl, &icon_width, 0);
num++;
}
infoPtr->items[curItem].rect.right = infoPtr->items[curItem].rect.left + infoPtr->items[curItem].rect.right = infoPtr->items[curItem].rect.left +
size.cx + icon_width + size.cx + icon_width +
num * infoPtr->uHItemPadding; num * infoPtr->uHItemPadding;
@ -1215,7 +1213,7 @@ static void TAB_SetItemBounds (HWND hwnd)
*/ */
if (lStyle & TCS_BUTTONS) if (lStyle & TCS_BUTTONS)
{ {
curItemLeftPos = infoPtr->items[curItem].rect.right + 1; curItemLeftPos = infoPtr->items[curItem].rect.right + BUTTON_SPACINGX;
if (lStyle & TCS_FLATBUTTONS) if (lStyle & TCS_FLATBUTTONS)
curItemLeftPos += FLAT_BTN_SPACINGX; curItemLeftPos += FLAT_BTN_SPACINGX;
} }
@ -1547,7 +1545,7 @@ TAB_DrawItemInterior
/* used to center the icon and text in the tab */ /* used to center the icon and text in the tab */
RECT rcText; RECT rcText;
INT center_offset; INT center_offset_h, center_offset_v;
/* /*
* Deflate the rectangle to acount for the padding * Deflate the rectangle to acount for the padding
@ -1585,34 +1583,46 @@ TAB_DrawItemInterior
ImageList_GetIconSize(infoPtr->himl, &cx, &cy); ImageList_GetIconSize(infoPtr->himl, &cx, &cy);
if(lStyle & TCS_VERTICAL) if(lStyle & TCS_VERTICAL)
center_offset = ((drawRect->bottom - drawRect->top) - (cy + infoPtr->uHItemPadding + (rcText.right - rcText.left))) / 2; {
center_offset_h = ((drawRect->bottom - drawRect->top) - (cy + infoPtr->uHItemPadding + (rcText.right - rcText.left))) / 2;
center_offset_v = ((drawRect->right - drawRect->left) - (cx + infoPtr->uVItemPadding)) / 2;
}
else else
center_offset = ((drawRect->right - drawRect->left) - (cx + infoPtr->uHItemPadding + (rcText.right - rcText.left))) / 2; {
center_offset_h = ((drawRect->right - drawRect->left) - (cx + infoPtr->uHItemPadding + (rcText.right - rcText.left))) / 2;
center_offset_v = ((drawRect->bottom - drawRect->top) - (cy + infoPtr->uVItemPadding)) / 2;
}
if ((lStyle & TCS_FIXEDWIDTH &&
lStyle & (TCS_FORCELABELLEFT | TCS_FORCEICONLEFT)) ||
(center_offset_h < 0))
center_offset_h = 0;
TRACE("for <%s>, c_o=%d, draw=(%ld,%ld)-(%ld,%ld), textlen=%ld\n", TRACE("for <%s>, c_o=%d, draw=(%ld,%ld)-(%ld,%ld), textlen=%ld\n",
debugstr_w(infoPtr->items[iItem].pszText), center_offset, debugstr_w(infoPtr->items[iItem].pszText), center_offset_h,
drawRect->left, drawRect->top, drawRect->right, drawRect->bottom, drawRect->left, drawRect->top, drawRect->right, drawRect->bottom,
(rcText.right-rcText.left)); (rcText.right-rcText.left));
if((lStyle & TCS_VERTICAL) && (lStyle & TCS_BOTTOM)) if((lStyle & TCS_VERTICAL) && (lStyle & TCS_BOTTOM))
{ {
rcImage.top = drawRect->top + center_offset; rcImage.top = drawRect->top + center_offset_h;
rcImage.left = drawRect->right - cx; /* if tab is TCS_VERTICAL and TCS_BOTTOM, the text is drawn from the */ /* if tab is TCS_VERTICAL and TCS_BOTTOM, the text is drawn from the */
/* right side of the tab, but the image still uses the left as its x position */ /* right side of the tab, but the image still uses the left as its x position */
/* this keeps the image always drawn off of the same side of the tab */ /* this keeps the image always drawn off of the same side of the tab */
rcImage.left = drawRect->right - cx - center_offset_v;
drawRect->top = rcImage.top + (cx + infoPtr->uHItemPadding); drawRect->top = rcImage.top + (cx + infoPtr->uHItemPadding);
} }
else if(lStyle & TCS_VERTICAL) else if(lStyle & TCS_VERTICAL)
{ {
rcImage.top = drawRect->bottom - cy - center_offset; rcImage.top = drawRect->bottom - cy - center_offset_h;
rcImage.left--; rcImage.left = drawRect->left + center_offset_v;
drawRect->bottom = rcImage.top - infoPtr->uHItemPadding; drawRect->bottom = rcImage.top - infoPtr->uHItemPadding;
} }
else /* normal style, whether TCS_BOTTOM or not */ else /* normal style, whether TCS_BOTTOM or not */
{ {
rcImage.left = drawRect->left + center_offset + 3; rcImage.left = drawRect->left + center_offset_h + 3;
drawRect->left = rcImage.left + cx + infoPtr->uHItemPadding; drawRect->left = rcImage.left + cx + infoPtr->uHItemPadding;
rcImage.top -= (lStyle & TCS_BOTTOM) ? 2 : 1; rcImage.top = drawRect->top + center_offset_v;
} }
TRACE("drawing image=%d, left=%ld, top=%ld\n", TRACE("drawing image=%d, left=%ld, top=%ld\n",
@ -1626,33 +1636,47 @@ TAB_DrawItemInterior
rcImage.top, rcImage.top,
ILD_NORMAL ILD_NORMAL
); );
} else /* no image, so just shift the drawRect borders around */ }
else /* no image, so just shift the drawRect borders around */
{ {
if(lStyle & TCS_VERTICAL) if(lStyle & TCS_VERTICAL)
{ {
center_offset = 0; center_offset_h = 0;
/* /*
currently the rcText rect is flawed because the rotated font does not currently the rcText rect is flawed because the rotated font does not
often match the horizontal font. So leave this as 0 often match the horizontal font. So leave this as 0
((drawRect->bottom - drawRect->top) - (rcText.right - rcText.left)) / 2; ((drawRect->bottom - drawRect->top) - (rcText.right - rcText.left)) / 2;
*/ */
if(lStyle & TCS_BOTTOM) if(lStyle & TCS_BOTTOM)
drawRect->top+=center_offset; drawRect->top+=center_offset_h;
else else
drawRect->bottom-=center_offset; drawRect->bottom-=center_offset_h;
} }
else else
{ {
center_offset = ((drawRect->right - drawRect->left) - (rcText.right - rcText.left)) / 2; center_offset_h = ((drawRect->right - drawRect->left) - (rcText.right - rcText.left)) / 2;
drawRect->left+=center_offset; drawRect->left+=center_offset_h;
} }
} }
/* Draw the text */ if(lStyle & TCS_VERTICAL)
if (lStyle & TCS_RIGHTJUSTIFY) {
uHorizAlign = DT_CENTER; center_offset_v = ((drawRect->right - drawRect->left) - ((rcText.bottom - rcText.top) + infoPtr->uVItemPadding)) / 2;
drawRect->left += center_offset_v;
}
else else
{
center_offset_v = ((drawRect->bottom - drawRect->top) - ((rcText.bottom - rcText.top) + infoPtr->uVItemPadding)) / 2;
drawRect->top += center_offset_v;
}
/* Draw the text */
if ((lStyle & TCS_FIXEDWIDTH && lStyle & TCS_FORCELABELLEFT) ||
!center_offset_h)
uHorizAlign = DT_LEFT; uHorizAlign = DT_LEFT;
else
uHorizAlign = DT_CENTER;
if(lStyle & TCS_VERTICAL) /* if we are vertical rotate the text and each character */ if(lStyle & TCS_VERTICAL) /* if we are vertical rotate the text and each character */
{ {
@ -1793,7 +1817,7 @@ static void TAB_DrawItem(
if (iItem == infoPtr->iSelected) if (iItem == infoPtr->iSelected)
{ {
/* Background color */ /* Background color */
if (!((lStyle & TCS_OWNERDRAWFIXED) && infoPtr->fSizeSet)) if (!(lStyle & TCS_OWNERDRAWFIXED))
{ {
DeleteObject(hbr); DeleteObject(hbr);
hbr = GetSysColorBrush(COLOR_SCROLLBAR); hbr = GetSysColorBrush(COLOR_SCROLLBAR);
@ -2334,36 +2358,41 @@ static void TAB_InvalidateTabArea(
RECT clientRect, r; RECT clientRect, r;
DWORD lStyle = GetWindowLongA(hwnd, GWL_STYLE); DWORD lStyle = GetWindowLongA(hwnd, GWL_STYLE);
INT lastRow = infoPtr->uNumRows - 1; INT lastRow = infoPtr->uNumRows - 1;
RECT rect;
if (lastRow < 0) return; if (lastRow < 0) return;
GetClientRect(hwnd, &clientRect); GetClientRect(hwnd, &clientRect);
TAB_InternalGetItemRect(hwnd, infoPtr, infoPtr->uNumItem-1 , &rect, NULL);
if ((lStyle & TCS_BOTTOM) && !(lStyle & TCS_VERTICAL)) if ((lStyle & TCS_BOTTOM) && !(lStyle & TCS_VERTICAL))
{ {
clientRect.top = clientRect.bottom - clientRect.top = clientRect.bottom -
infoPtr->tabHeight - infoPtr->tabHeight -
lastRow * (infoPtr->tabHeight - 2) - lastRow * (infoPtr->tabHeight - 2) -
((lStyle & TCS_BUTTONS) ? lastRow * BUTTON_SPACINGY : 0) - 3; ((lStyle & TCS_BUTTONS) ? lastRow * BUTTON_SPACINGY : 0) - 3;
clientRect.right = clientRect.left + rect.right + 2 * SELECTED_TAB_OFFSET;
} }
else if((lStyle & TCS_BOTTOM) && (lStyle & TCS_VERTICAL)) else if((lStyle & TCS_BOTTOM) && (lStyle & TCS_VERTICAL))
{ {
clientRect.left = clientRect.right - infoPtr->tabHeight - clientRect.left = clientRect.right - infoPtr->tabHeight -
lastRow * (infoPtr->tabHeight - 2) - lastRow * (infoPtr->tabHeight - 2) -
((lStyle & TCS_BUTTONS) ? lastRow * BUTTON_SPACINGY : 0) - 2; ((lStyle & TCS_BUTTONS) ? lastRow * BUTTON_SPACINGY : 0) - 2;
clientRect.bottom = clientRect.top + rect.bottom + 2 * SELECTED_TAB_OFFSET;
} }
else if(lStyle & TCS_VERTICAL) else if(lStyle & TCS_VERTICAL)
{ {
clientRect.right = clientRect.left + infoPtr->tabHeight + clientRect.right = clientRect.left + infoPtr->tabHeight +
lastRow * (infoPtr->tabHeight - 2) - lastRow * (infoPtr->tabHeight - 2) -
((lStyle & TCS_BUTTONS) ? lastRow * BUTTON_SPACINGY : 0) + 2; ((lStyle & TCS_BUTTONS) ? lastRow * BUTTON_SPACINGY : 0) + 2;
clientRect.bottom = clientRect.top + rect.bottom + 2 * SELECTED_TAB_OFFSET;
} }
else else
{ {
clientRect.bottom = clientRect.top + infoPtr->tabHeight + clientRect.bottom = clientRect.top + infoPtr->tabHeight +
lastRow * (infoPtr->tabHeight - 2) + lastRow * (infoPtr->tabHeight - 2) +
((lStyle & TCS_BUTTONS) ? lastRow * BUTTON_SPACINGY : 0) + 2; ((lStyle & TCS_BUTTONS) ? lastRow * BUTTON_SPACINGY : 0) + 2;
clientRect.right = clientRect.left + rect.right + 2 * SELECTED_TAB_OFFSET;
} }
/* Punch out the updown control */ /* Punch out the updown control */
@ -2385,15 +2414,20 @@ TAB_Paint (HWND hwnd, WPARAM wParam)
HDC hdc; HDC hdc;
PAINTSTRUCT ps; PAINTSTRUCT ps;
hdc = wParam== 0 ? BeginPaint (hwnd, &ps) : (HDC)wParam; if (wParam == 0)
{
hdc = BeginPaint (hwnd, &ps);
TRACE("erase %d, rect=(%ld,%ld)-(%ld,%ld)\n",
ps.fErase,
ps.rcPaint.left,ps.rcPaint.top,ps.rcPaint.right,ps.rcPaint.bottom);
TRACE("erase %d, rect=(%ld,%ld)-(%ld,%ld)\n", if (ps.fErase)
ps.fErase,
ps.rcPaint.left,ps.rcPaint.top,ps.rcPaint.right,ps.rcPaint.bottom);
if (ps.fErase)
TAB_EraseBackground (hwnd, hdc); TAB_EraseBackground (hwnd, hdc);
} else {
hdc = (HDC)wParam;
}
TAB_Refresh (hwnd, hdc); TAB_Refresh (hwnd, hdc);
if(!wParam) if(!wParam)
@ -2557,20 +2591,34 @@ TAB_SetItemSize (HWND hwnd, WPARAM wParam, LPARAM lParam)
TAB_INFO *infoPtr = TAB_GetInfoPtr(hwnd); TAB_INFO *infoPtr = TAB_GetInfoPtr(hwnd);
LONG lStyle = GetWindowLongA(hwnd, GWL_STYLE); LONG lStyle = GetWindowLongA(hwnd, GWL_STYLE);
LONG lResult = 0; LONG lResult = 0;
BOOL bNeedPaint = FALSE;
TRACE("\n"); lResult = MAKELONG(infoPtr->tabWidth, infoPtr->tabHeight);
if ((lStyle & TCS_FIXEDWIDTH) || (lStyle & TCS_OWNERDRAWFIXED))
/* UNDOCUMENTED: If requested Width or Height is 0 this means that program wants to use auto size. */
if (lStyle & TCS_FIXEDWIDTH && (infoPtr->tabWidth != (INT)LOWORD(lParam)))
{ {
lResult = MAKELONG(infoPtr->tabWidth, infoPtr->tabHeight); infoPtr->tabWidth = max((INT)LOWORD(lParam), infoPtr->tabMinWidth);
/* UNDOCUMENTED: If requested Width or Height is 0 this means that program wants to use default. */ bNeedPaint = TRUE;
if (LOWORD(lParam)) infoPtr->tabWidth = max((INT)LOWORD(lParam), infoPtr->tabMinWidth);
if (HIWORD(lParam)) infoPtr->tabHeight = (INT)HIWORD(lParam);
TRACE("was h=%d,w=%d, now h=%d,w=%d\n",
HIWORD(lResult), LOWORD(lResult),
infoPtr->tabHeight, infoPtr->tabWidth);
} }
infoPtr->fSizeSet = TRUE;
if (infoPtr->tabHeight != (INT)HIWORD(lParam))
{
if ((infoPtr->fHeightSet = ((INT)HIWORD(lParam) != 0)))
infoPtr->tabHeight = (INT)HIWORD(lParam);
bNeedPaint = TRUE;
}
TRACE("was h=%d,w=%d, now h=%d,w=%d\n",
HIWORD(lResult), LOWORD(lResult),
infoPtr->tabHeight, infoPtr->tabWidth);
if (bNeedPaint)
{
TAB_SetItemBounds(hwnd);
RedrawWindow(hwnd, NULL, NULL, RDW_ERASE | RDW_INVALIDATE | RDW_UPDATENOW);
}
return lResult; return lResult;
} }
@ -2776,61 +2824,63 @@ TAB_GetItemW (HWND hwnd, WPARAM wParam, LPARAM lParam)
static LRESULT static LRESULT
TAB_DeleteItem (HWND hwnd, WPARAM wParam, LPARAM lParam) TAB_DeleteItem (HWND hwnd, WPARAM wParam, LPARAM lParam)
{ {
TAB_INFO *infoPtr = TAB_GetInfoPtr(hwnd); TAB_INFO *infoPtr = TAB_GetInfoPtr(hwnd);
INT iItem = (INT) wParam; INT iItem = (INT) wParam;
BOOL bResult = FALSE; BOOL bResult = FALSE;
if ((iItem >= 0) && (iItem < infoPtr->uNumItem)) if ((iItem >= 0) && (iItem < infoPtr->uNumItem))
{ {
TAB_ITEM *oldItems = infoPtr->items; TAB_ITEM *oldItems = infoPtr->items;
TAB_InvalidateTabArea(hwnd, infoPtr);
infoPtr->uNumItem--; infoPtr->uNumItem--;
infoPtr->items = Alloc(sizeof (TAB_ITEM) * infoPtr->uNumItem); infoPtr->items = Alloc(sizeof (TAB_ITEM) * infoPtr->uNumItem);
if (iItem > 0) if (iItem > 0)
memcpy(&infoPtr->items[0], &oldItems[0], iItem * sizeof(TAB_ITEM)); memcpy(&infoPtr->items[0], &oldItems[0], iItem * sizeof(TAB_ITEM));
if (iItem < infoPtr->uNumItem) if (iItem < infoPtr->uNumItem)
memcpy(&infoPtr->items[iItem], &oldItems[iItem + 1], memcpy(&infoPtr->items[iItem], &oldItems[iItem + 1],
(infoPtr->uNumItem - iItem) * sizeof(TAB_ITEM)); (infoPtr->uNumItem - iItem) * sizeof(TAB_ITEM));
Free(oldItems); Free(oldItems);
/* Readjust the selected index */ /* Readjust the selected index */
if ((iItem == infoPtr->iSelected) && (iItem > 0)) if ((iItem == infoPtr->iSelected) && (iItem > 0))
infoPtr->iSelected--; infoPtr->iSelected--;
if (iItem < infoPtr->iSelected) if (iItem < infoPtr->iSelected)
infoPtr->iSelected--; infoPtr->iSelected--;
if (infoPtr->uNumItem == 0) if (infoPtr->uNumItem == 0)
infoPtr->iSelected = -1; infoPtr->iSelected = -1;
/* Reposition and repaint tabs */ /* Reposition and repaint tabs */
TAB_SetItemBounds(hwnd); TAB_SetItemBounds(hwnd);
TAB_InvalidateTabArea(hwnd,infoPtr);
bResult = TRUE; bResult = TRUE;
} }
return bResult; return bResult;
} }
static LRESULT static LRESULT
TAB_DeleteAllItems (HWND hwnd, WPARAM wParam, LPARAM lParam) TAB_DeleteAllItems (HWND hwnd, WPARAM wParam, LPARAM lParam)
{ {
TAB_INFO *infoPtr = TAB_GetInfoPtr(hwnd); TAB_INFO *infoPtr = TAB_GetInfoPtr(hwnd);
TAB_InvalidateTabArea(hwnd,infoPtr);
Free (infoPtr->items); Free (infoPtr->items);
infoPtr->uNumItem = 0; infoPtr->uNumItem = 0;
infoPtr->iSelected = -1; infoPtr->iSelected = -1;
if (infoPtr->iHotTracked >= 0) if (infoPtr->iHotTracked >= 0)
KillTimer(hwnd, TAB_HOTTRACK_TIMER); KillTimer(hwnd, TAB_HOTTRACK_TIMER);
infoPtr->iHotTracked = -1; infoPtr->iHotTracked = -1;
TAB_SetItemBounds(hwnd); TAB_SetItemBounds(hwnd);
TAB_InvalidateTabArea(hwnd,infoPtr); return TRUE;
return TRUE;
} }
@ -2966,7 +3016,7 @@ TAB_Create (HWND hwnd, WPARAM wParam, LPARAM lParam)
infoPtr->needsScrolling = FALSE; infoPtr->needsScrolling = FALSE;
infoPtr->hwndUpDown = 0; infoPtr->hwndUpDown = 0;
infoPtr->leftmostVisible = 0; infoPtr->leftmostVisible = 0;
infoPtr->fSizeSet = FALSE; infoPtr->fHeightSet = FALSE;
infoPtr->bUnicode = IsWindowUnicode (hwnd); infoPtr->bUnicode = IsWindowUnicode (hwnd);
TRACE("Created tab control, hwnd [%p]\n", hwnd); TRACE("Created tab control, hwnd [%p]\n", hwnd);
@ -3019,8 +3069,7 @@ TAB_Create (HWND hwnd, WPARAM wParam, LPARAM lParam)
/* Initialize the width of a tab. */ /* Initialize the width of a tab. */
infoPtr->tabWidth = DEFAULT_TAB_WIDTH; infoPtr->tabWidth = DEFAULT_TAB_WIDTH;
/* The minimum width is the default width at creation */ infoPtr->tabMinWidth = 0;
infoPtr->tabMinWidth = DEFAULT_TAB_WIDTH;
TRACE("tabH=%d, tabW=%d\n", infoPtr->tabHeight, infoPtr->tabWidth); TRACE("tabH=%d, tabW=%d\n", infoPtr->tabHeight, infoPtr->tabWidth);

View file

@ -176,6 +176,12 @@ typedef struct
WCHAR text[64]; WCHAR text[64];
} CUSTOMBUTTON, *PCUSTOMBUTTON; } CUSTOMBUTTON, *PCUSTOMBUTTON;
typedef enum
{
IMAGE_LIST_DEFAULT,
IMAGE_LIST_HOT,
IMAGE_LIST_DISABLED
} IMAGE_LIST_TYPE;
#define SEPARATOR_WIDTH 8 #define SEPARATOR_WIDTH 8
#define TOP_BORDER 2 #define TOP_BORDER 2
@ -364,12 +370,11 @@ TOOLBAR_IsValidBitmapIndex(TOOLBAR_INFO *infoPtr, INT index)
* function. It returns TRUE if the image was drawn, FALSE otherwise. * function. It returns TRUE if the image was drawn, FALSE otherwise.
*/ */
static BOOL static BOOL
TOOLBAR_DrawImageList (TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr, HIMAGELIST himl, TOOLBAR_DrawImageList (TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr, IMAGE_LIST_TYPE imagelist,
HDC hdc, UINT left, UINT top, UINT draw_flags) HDC hdc, UINT left, UINT top, UINT draw_flags)
{ {
INT index; INT index;
HIMAGELIST himl;
if (!himl) return FALSE;
if (!TOOLBAR_IsValidBitmapIndex(infoPtr,btnPtr->iBitmap)) { if (!TOOLBAR_IsValidBitmapIndex(infoPtr,btnPtr->iBitmap)) {
if (btnPtr->iBitmap == I_IMAGENONE) return FALSE; if (btnPtr->iBitmap == I_IMAGENONE) return FALSE;
@ -385,6 +390,29 @@ TOOLBAR_DrawImageList (TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr, HIMAGELIST h
index); index);
return FALSE; return FALSE;
} }
switch(imagelist)
{
case IMAGE_LIST_DEFAULT:
himl = GETDEFIMAGELIST(infoPtr, GETHIMLID(infoPtr, btnPtr->iBitmap));
break;
case IMAGE_LIST_HOT:
himl = GETHOTIMAGELIST(infoPtr, GETHIMLID(infoPtr, btnPtr->iBitmap));
break;
case IMAGE_LIST_DISABLED:
himl = GETDISIMAGELIST(infoPtr, GETHIMLID(infoPtr, btnPtr->iBitmap));
break;
default:
himl = NULL;
FIXME("Shouldn't reach here\n");
}
if (!himl)
{
TRACE("no image list, returning FALSE\n");
return FALSE;
}
TRACE("drawing index=%d, himl=%p, left=%d, top=%d, flags=%08x\n", TRACE("drawing index=%d, himl=%p, left=%d, top=%d, flags=%08x\n",
index, himl, left, top, draw_flags); index, himl, left, top, draw_flags);
@ -524,31 +552,32 @@ TOOLBAR_DrawArrow (HDC hdc, INT left, INT top, INT colorRef)
*/ */
static void static void
TOOLBAR_DrawString (TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr, TOOLBAR_DrawString (TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr,
HDC hdc, INT nState, DWORD dwStyle, HDC hdc, DWORD dwStyle,
RECT *rcText, LPWSTR lpText, NMTBCUSTOMDRAW *tbcd) RECT *rcText, LPWSTR lpText, NMTBCUSTOMDRAW *tbcd)
{ {
HFONT hOldFont = 0; HFONT hOldFont = 0;
COLORREF clrOld = 0; COLORREF clrOld = 0;
UINT state = tbcd->nmcd.uItemState;
/* draw text */ /* draw text */
if (lpText) { if (lpText) {
TRACE("string rect=(%ld,%ld)-(%ld,%ld)\n", TRACE("string=%s rect=(%ld,%ld)-(%ld,%ld)\n", debugstr_w(lpText),
rcText->left, rcText->top, rcText->right, rcText->bottom); rcText->left, rcText->top, rcText->right, rcText->bottom);
hOldFont = SelectObject (hdc, infoPtr->hFont); hOldFont = SelectObject (hdc, infoPtr->hFont);
if (!(nState & TBSTATE_ENABLED)) { if ((state & CDIS_HOT) && (infoPtr->dwItemCDFlag & TBCDRF_HILITEHOTTRACK )) {
clrOld = SetTextColor (hdc, tbcd->clrTextHighlight);
}
else if (state & CDIS_DISABLED) {
clrOld = SetTextColor (hdc, tbcd->clrBtnHighlight); clrOld = SetTextColor (hdc, tbcd->clrBtnHighlight);
OffsetRect (rcText, 1, 1); OffsetRect (rcText, 1, 1);
DrawTextW (hdc, lpText, -1, rcText, infoPtr->dwDTFlags); DrawTextW (hdc, lpText, -1, rcText, infoPtr->dwDTFlags);
SetTextColor (hdc, comctl32_color.clr3dShadow); SetTextColor (hdc, comctl32_color.clr3dShadow);
OffsetRect (rcText, -1, -1); OffsetRect (rcText, -1, -1);
} }
else if (nState & TBSTATE_INDETERMINATE) { else if (state & CDIS_INDETERMINATE) {
clrOld = SetTextColor (hdc, comctl32_color.clr3dShadow); clrOld = SetTextColor (hdc, comctl32_color.clr3dShadow);
} }
else if (btnPtr->bHot && (infoPtr->dwItemCDFlag & TBCDRF_HILITEHOTTRACK )) {
clrOld = SetTextColor (hdc, tbcd->clrTextHighlight);
}
else { else {
clrOld = SetTextColor (hdc, tbcd->clrText); clrOld = SetTextColor (hdc, tbcd->clrText);
} }
@ -636,7 +665,6 @@ TOOLBAR_DrawButton (HWND hwnd, TBUTTON_INFO *btnPtr, HDC hdc)
NMTBCUSTOMDRAW tbcd; NMTBCUSTOMDRAW tbcd;
DWORD ntfret; DWORD ntfret;
INT offset; INT offset;
HIMAGELIST himlDef;
if (btnPtr->fsState & TBSTATE_HIDDEN) if (btnPtr->fsState & TBSTATE_HIDDEN)
return; return;
@ -734,6 +762,10 @@ TOOLBAR_DrawButton (HWND hwnd, TBUTTON_INFO *btnPtr, HDC hdc)
tbcd.rcText.top = 0; tbcd.rcText.top = 0;
tbcd.rcText.right = rcText.right - rc.left; tbcd.rcText.right = rcText.right - rc.left;
tbcd.rcText.bottom = rcText.bottom - rc.top; tbcd.rcText.bottom = rcText.bottom - rc.top;
/* we use this state later on to decide how to draw the buttons */
/* NOTE: applications can and do alter this to customize their */
/* toolbars */
tbcd.nmcd.uItemState = TOOLBAR_TranslateState(btnPtr);
/* FIXME: what should these be set to ????? */ /* FIXME: what should these be set to ????? */
tbcd.hbrMonoDither = 0; tbcd.hbrMonoDither = 0;
@ -749,7 +781,6 @@ TOOLBAR_DrawButton (HWND hwnd, TBUTTON_INFO *btnPtr, HDC hdc)
tbcd.nmcd.hdc = hdc; tbcd.nmcd.hdc = hdc;
tbcd.nmcd.rc = rc; tbcd.nmcd.rc = rc;
tbcd.nmcd.dwItemSpec = btnPtr->idCommand; tbcd.nmcd.dwItemSpec = btnPtr->idCommand;
tbcd.nmcd.uItemState = TOOLBAR_TranslateState(btnPtr);
tbcd.nmcd.lItemlParam = btnPtr->dwData; tbcd.nmcd.lItemlParam = btnPtr->dwData;
ntfret = TOOLBAR_SendNotify ((NMHDR *)&tbcd, infoPtr, NM_CUSTOMDRAW); ntfret = TOOLBAR_SendNotify ((NMHDR *)&tbcd, infoPtr, NM_CUSTOMDRAW);
infoPtr->dwItemCustDraw = ntfret & 0xffff; infoPtr->dwItemCustDraw = ntfret & 0xffff;
@ -784,12 +815,31 @@ TOOLBAR_DrawButton (HWND hwnd, TBUTTON_INFO *btnPtr, HDC hdc)
goto FINALNOTIFY; goto FINALNOTIFY;
} }
/* Determine index of image list */ if ((dwStyle & TBSTYLE_FLAT) && (tbcd.nmcd.uItemState & CDIS_HOT))
himlDef = GETDEFIMAGELIST(infoPtr, GETHIMLID(infoPtr, btnPtr->iBitmap)); {
if ( infoPtr->dwItemCDFlag & TBCDRF_HILITEHOTTRACK )
{
COLORREF oldclr;
oldclr = SetBkColor(hdc, tbcd.clrHighlightHotTrack);
ExtTextOutA(hdc, 0, 0, ETO_OPAQUE, &rc, NULL, 0, 0);
if (hasDropDownArrow)
ExtTextOutA(hdc, 0, 0, ETO_OPAQUE, &rcArrow, NULL, 0, 0);
SetBkColor(hdc, oldclr);
}
else
{
if (!(tbcd.nmcd.uItemState & CDIS_DISABLED) && !(infoPtr->dwItemCDFlag & TBCDRF_NOEDGES))
{
DrawEdge (hdc, &rc, BDR_RAISEDINNER, BF_RECT);
if (hasDropDownArrow)
DrawEdge (hdc, &rcArrow, BDR_RAISEDINNER, BF_RECT);
}
}
}
/* disabled */ /* disabled */
if (!(btnPtr->fsState & TBSTATE_ENABLED)) { if (tbcd.nmcd.uItemState & CDIS_DISABLED) {
HIMAGELIST himlDis = GETDISIMAGELIST(infoPtr, GETHIMLID(infoPtr, btnPtr->iBitmap));
if (!(dwStyle & TBSTYLE_FLAT) && !(infoPtr->dwItemCDFlag & TBCDRF_NOEDGES)) if (!(dwStyle & TBSTYLE_FLAT) && !(infoPtr->dwItemCDFlag & TBCDRF_NOEDGES))
{ {
DrawEdge (hdc, &rc, EDGE_RAISED, DrawEdge (hdc, &rc, EDGE_RAISED,
@ -805,17 +855,17 @@ TOOLBAR_DrawButton (HWND hwnd, TBUTTON_INFO *btnPtr, HDC hdc)
TOOLBAR_DrawArrow(hdc, rcArrow.left, rcArrow.top + (rcArrow.bottom - rcArrow.top - ARROW_HEIGHT) / 2, COLOR_3DSHADOW); TOOLBAR_DrawArrow(hdc, rcArrow.left, rcArrow.top + (rcArrow.bottom - rcArrow.top - ARROW_HEIGHT) / 2, COLOR_3DSHADOW);
} }
if (!TOOLBAR_DrawImageList (infoPtr, btnPtr, himlDis, if (!TOOLBAR_DrawImageList (infoPtr, btnPtr, IMAGE_LIST_DISABLED,
hdc, rcBitmap.left, rcBitmap.top, hdc, rcBitmap.left, rcBitmap.top,
ILD_NORMAL)) ILD_NORMAL))
TOOLBAR_DrawMasked (infoPtr, btnPtr, hdc, rcBitmap.left, rcBitmap.top); TOOLBAR_DrawMasked (infoPtr, btnPtr, hdc, rcBitmap.left, rcBitmap.top);
TOOLBAR_DrawString (infoPtr, btnPtr, hdc, btnPtr->fsState, dwStyle, &rcText, lpText, &tbcd); TOOLBAR_DrawString (infoPtr, btnPtr, hdc, dwStyle, &rcText, lpText, &tbcd);
goto FINALNOTIFY; goto FINALNOTIFY;
} }
/* pressed TBSTYLE_BUTTON */ /* pressed TBSTYLE_BUTTON */
if (btnPtr->fsState & TBSTATE_PRESSED) { if (tbcd.nmcd.uItemState & CDIS_SELECTED) {
offset = (infoPtr->dwItemCDFlag & TBCDRF_NOOFFSET) ? 0 : 1; offset = (infoPtr->dwItemCDFlag & TBCDRF_NOOFFSET) ? 0 : 1;
if (!(infoPtr->dwItemCDFlag & TBCDRF_NOEDGES)) if (!(infoPtr->dwItemCDFlag & TBCDRF_NOEDGES))
{ {
@ -836,17 +886,17 @@ TOOLBAR_DrawButton (HWND hwnd, TBUTTON_INFO *btnPtr, HDC hdc)
if (hasDropDownArrow) if (hasDropDownArrow)
TOOLBAR_DrawArrow(hdc, rcArrow.left, rcArrow.top + (rcArrow.bottom - rcArrow.top - ARROW_HEIGHT) / 2, COLOR_WINDOWFRAME); TOOLBAR_DrawArrow(hdc, rcArrow.left, rcArrow.top + (rcArrow.bottom - rcArrow.top - ARROW_HEIGHT) / 2, COLOR_WINDOWFRAME);
TOOLBAR_DrawImageList (infoPtr, btnPtr, himlDef, TOOLBAR_DrawImageList (infoPtr, btnPtr, IMAGE_LIST_DEFAULT,
hdc, rcBitmap.left+offset, rcBitmap.top+offset, hdc, rcBitmap.left+offset, rcBitmap.top+offset,
ILD_NORMAL); ILD_NORMAL);
TOOLBAR_DrawString (infoPtr, btnPtr, hdc, btnPtr->fsState, dwStyle, &rcText, lpText, &tbcd); TOOLBAR_DrawString (infoPtr, btnPtr, hdc, dwStyle, &rcText, lpText, &tbcd);
goto FINALNOTIFY; goto FINALNOTIFY;
} }
/* checked TBSTYLE_CHECK */ /* checked TBSTYLE_CHECK */
if ((btnPtr->fsStyle & TBSTYLE_CHECK) && if ((tbcd.nmcd.uItemState & CDIS_CHECKED) &&
(btnPtr->fsState & TBSTATE_CHECKED)) { (btnPtr->fsStyle & TBSTYLE_CHECK)) {
if (!(infoPtr->dwItemCDFlag & TBCDRF_NOEDGES)) if (!(infoPtr->dwItemCDFlag & TBCDRF_NOEDGES))
{ {
if (dwStyle & TBSTYLE_FLAT) if (dwStyle & TBSTYLE_FLAT)
@ -859,80 +909,45 @@ TOOLBAR_DrawButton (HWND hwnd, TBUTTON_INFO *btnPtr, HDC hdc)
TOOLBAR_DrawPattern (hdc, &rc); TOOLBAR_DrawPattern (hdc, &rc);
TOOLBAR_DrawImageList (infoPtr, btnPtr, himlDef, TOOLBAR_DrawImageList (infoPtr, btnPtr, IMAGE_LIST_DEFAULT,
hdc, rcBitmap.left+1, rcBitmap.top+1, hdc, rcBitmap.left+1, rcBitmap.top+1,
ILD_NORMAL); ILD_NORMAL);
TOOLBAR_DrawString (infoPtr, btnPtr, hdc, btnPtr->fsState, dwStyle, &rcText, lpText, &tbcd); TOOLBAR_DrawString (infoPtr, btnPtr, hdc, dwStyle, &rcText, lpText, &tbcd);
goto FINALNOTIFY; goto FINALNOTIFY;
} }
/* indeterminate */ /* indeterminate */
if (btnPtr->fsState & TBSTATE_INDETERMINATE) { if (tbcd.nmcd.uItemState & CDIS_INDETERMINATE) {
if (!(infoPtr->dwItemCDFlag & TBCDRF_NOEDGES)) if (!(infoPtr->dwItemCDFlag & TBCDRF_NOEDGES))
DrawEdge (hdc, &rc, EDGE_RAISED, DrawEdge (hdc, &rc, EDGE_RAISED,
BF_SOFT | BF_RECT | BF_MIDDLE | BF_ADJUST); BF_SOFT | BF_RECT | BF_MIDDLE | BF_ADJUST);
TOOLBAR_DrawPattern (hdc, &rc); TOOLBAR_DrawPattern (hdc, &rc);
TOOLBAR_DrawMasked (infoPtr, btnPtr, hdc, rcBitmap.left, rcBitmap.top); TOOLBAR_DrawMasked (infoPtr, btnPtr, hdc, rcBitmap.left, rcBitmap.top);
TOOLBAR_DrawString (infoPtr, btnPtr, hdc, btnPtr->fsState, dwStyle, &rcText, lpText, &tbcd); TOOLBAR_DrawString (infoPtr, btnPtr, hdc, dwStyle, &rcText, lpText, &tbcd);
goto FINALNOTIFY; goto FINALNOTIFY;
} }
/* normal state */ /* normal state */
if (dwStyle & TBSTYLE_FLAT) if (dwStyle & TBSTYLE_FLAT)
{ {
if (btnPtr->bHot)
{
if ( infoPtr->dwItemCDFlag & TBCDRF_HILITEHOTTRACK )
{
COLORREF oldclr;
oldclr = SetBkColor(hdc, tbcd.clrHighlightHotTrack);
ExtTextOutA(hdc, 0, 0, ETO_OPAQUE, &rc, NULL, 0, 0);
if (hasDropDownArrow)
ExtTextOutA(hdc, 0, 0, ETO_OPAQUE, &rcArrow, NULL, 0, 0);
SetBkColor(hdc, oldclr);
}
else
{
if (!(infoPtr->dwItemCDFlag & TBCDRF_NOEDGES))
{
DrawEdge (hdc, &rc, BDR_RAISEDINNER, BF_RECT);
if (hasDropDownArrow)
DrawEdge (hdc, &rcArrow, BDR_RAISEDINNER, BF_RECT);
}
}
}
#if 1
else /* The following code needs to be removed after
* "hot item" support has been implemented for the
* case where it is being de-selected.
*/
{
FrameRect(hdc, &rc, GetSysColorBrush(COLOR_BTNFACE));
if (hasDropDownArrow)
FrameRect(hdc, &rcArrow, GetSysColorBrush(COLOR_BTNFACE));
}
#endif
if (hasDropDownArrow) if (hasDropDownArrow)
TOOLBAR_DrawArrow(hdc, rcArrow.left+1, rcArrow.top + (rcArrow.bottom - rcArrow.top - ARROW_HEIGHT) / 2, COLOR_WINDOWFRAME); TOOLBAR_DrawArrow(hdc, rcArrow.left+1, rcArrow.top + (rcArrow.bottom - rcArrow.top - ARROW_HEIGHT) / 2, COLOR_WINDOWFRAME);
if (btnPtr->bHot) { if (tbcd.nmcd.uItemState & CDIS_HOT) {
HIMAGELIST himlHot = GETHOTIMAGELIST(infoPtr, /* if hot, attempt to draw with hot image list, if fails,
GETHIMLID(infoPtr, btnPtr->iBitmap)); use default image list */
/* if hot, attempt to draw with himlHot, if fails, use himlDef */
if (!TOOLBAR_DrawImageList (infoPtr, btnPtr, if (!TOOLBAR_DrawImageList (infoPtr, btnPtr,
himlHot, IMAGE_LIST_HOT,
hdc, rcBitmap.left, hdc, rcBitmap.left,
rcBitmap.top, ILD_NORMAL)) rcBitmap.top, ILD_NORMAL))
TOOLBAR_DrawImageList (infoPtr, btnPtr, himlDef, TOOLBAR_DrawImageList (infoPtr, btnPtr, IMAGE_LIST_DEFAULT,
hdc, rcBitmap.left, rcBitmap.top, hdc, rcBitmap.left, rcBitmap.top,
ILD_NORMAL); ILD_NORMAL);
} }
else else
TOOLBAR_DrawImageList (infoPtr, btnPtr, himlDef, TOOLBAR_DrawImageList (infoPtr, btnPtr, IMAGE_LIST_DEFAULT,
hdc, rcBitmap.left, rcBitmap.top, hdc, rcBitmap.left, rcBitmap.top,
ILD_NORMAL); ILD_NORMAL);
} }
@ -950,12 +965,13 @@ TOOLBAR_DrawButton (HWND hwnd, TBUTTON_INFO *btnPtr, HDC hdc)
TOOLBAR_DrawArrow(hdc, rcArrow.left, rcArrow.top + (rcArrow.bottom - rcArrow.top - ARROW_HEIGHT) / 2, COLOR_WINDOWFRAME); TOOLBAR_DrawArrow(hdc, rcArrow.left, rcArrow.top + (rcArrow.bottom - rcArrow.top - ARROW_HEIGHT) / 2, COLOR_WINDOWFRAME);
} }
TOOLBAR_DrawImageList (infoPtr, btnPtr, himlDef, TOOLBAR_DrawImageList (infoPtr, btnPtr, IMAGE_LIST_DEFAULT,
hdc, rcBitmap.left, rcBitmap.top, hdc, rcBitmap.left, rcBitmap.top,
ILD_NORMAL);} ILD_NORMAL);
}
TOOLBAR_DrawString (infoPtr, btnPtr, hdc, btnPtr->fsState, dwStyle, &rcText, lpText, &tbcd); TOOLBAR_DrawString (infoPtr, btnPtr, hdc, dwStyle, &rcText, lpText, &tbcd);
FINALNOTIFY: FINALNOTIFY:
if (infoPtr->dwItemCustDraw & CDRF_NOTIFYPOSTPAINT) if (infoPtr->dwItemCustDraw & CDRF_NOTIFYPOSTPAINT)
@ -2716,11 +2732,15 @@ TOOLBAR_AutoSize (HWND hwnd)
cy = infoPtr->nHeight; cy = infoPtr->nHeight;
cx = infoPtr->nWidth; cx = infoPtr->nWidth;
if (dwStyle & CCS_NOMOVEY) { if ((dwStyle & CCS_BOTTOM) == CCS_NOMOVEY) {
GetWindowRect(hwnd, &window_rect); GetWindowRect(hwnd, &window_rect);
ScreenToClient(parent, (LPPOINT)&window_rect.left); ScreenToClient(parent, (LPPOINT)&window_rect.left);
y = window_rect.top; y = window_rect.top;
} }
if ((dwStyle & CCS_BOTTOM) == CCS_BOTTOM) {
GetWindowRect(hwnd, &window_rect);
y = parent_rect.bottom - ( window_rect.bottom - window_rect.top);
}
} }
if (dwStyle & CCS_NOPARENTALIGN) if (dwStyle & CCS_NOPARENTALIGN)
@ -2737,10 +2757,9 @@ TOOLBAR_AutoSize (HWND hwnd)
} }
infoPtr->bAutoSize = TRUE; infoPtr->bAutoSize = TRUE;
SetWindowPos (hwnd, HWND_TOP, parent_rect.left - x, parent_rect.top - y, SetWindowPos (hwnd, HWND_TOP, x, y, cx, cy, uPosFlags);
cx, cy, uPosFlags); /* The following line makes sure that the infoPtr->bAutoSize is turned off
/* The following line makes sure that the infoPtr->bAutoSize is turned off after * after the setwindowpos calls */
* the setwindowpos calls */
infoPtr->bAutoSize = FALSE; infoPtr->bAutoSize = FALSE;
return 0; return 0;
@ -2780,6 +2799,8 @@ TOOLBAR_ChangeBitmap (HWND hwnd, WPARAM wParam, LPARAM lParam)
TBUTTON_INFO *btnPtr; TBUTTON_INFO *btnPtr;
INT nIndex; INT nIndex;
TRACE("button %d, iBitmap now %d\n", wParam, LOWORD(lParam));
nIndex = TOOLBAR_GetButtonIndex (infoPtr, (INT)wParam, FALSE); nIndex = TOOLBAR_GetButtonIndex (infoPtr, (INT)wParam, FALSE);
if (nIndex == -1) if (nIndex == -1)
return FALSE; return FALSE;
@ -4227,6 +4248,8 @@ TOOLBAR_SetHotImageList (HWND hwnd, WPARAM wParam, LPARAM lParam)
if (infoPtr->iVersion >= 5) if (infoPtr->iVersion >= 5)
id = wParam; id = wParam;
TRACE("hwnd = %p, himl = %p, id = %d\n", hwnd, himl, id);
himlTemp = TOOLBAR_InsertImageList(&infoPtr->himlHot, himlTemp = TOOLBAR_InsertImageList(&infoPtr->himlHot,
&infoPtr->cimlHot, himl, id); &infoPtr->cimlHot, himl, id);
@ -5170,10 +5193,9 @@ TOOLBAR_MouseMove (HWND hwnd, WPARAM wParam, LPARAM lParam)
if (infoPtr->nOldHit != nHit) if (infoPtr->nOldHit != nHit)
{ {
/* Remove the effect of an old hot button if the button was enabled and was /* Remove the effect of an old hot button if the button was
drawn with the hot button effect */ drawn with the hot button effect */
if(infoPtr->nOldHit >= 0 && infoPtr->nOldHit == infoPtr->nHotItem && if(infoPtr->nOldHit >= 0 && infoPtr->nOldHit == infoPtr->nHotItem)
(infoPtr->buttons[infoPtr->nOldHit].fsState & TBSTATE_ENABLED))
{ {
oldBtnPtr = &infoPtr->buttons[infoPtr->nOldHit]; oldBtnPtr = &infoPtr->buttons[infoPtr->nOldHit];
oldBtnPtr->bHot = FALSE; oldBtnPtr->bHot = FALSE;
@ -5186,11 +5208,7 @@ TOOLBAR_MouseMove (HWND hwnd, WPARAM wParam, LPARAM lParam)
infoPtr->nHotItem = nHit; infoPtr->nHotItem = nHit;
/* only enabled buttons show hot effect */ btnPtr->bHot = TRUE;
if(infoPtr->buttons[nHit].fsState & TBSTATE_ENABLED)
{
btnPtr->bHot = TRUE;
}
} }
nmhotitem.dwFlags = HICF_MOUSE; nmhotitem.dwFlags = HICF_MOUSE;
@ -5208,7 +5226,7 @@ TOOLBAR_MouseMove (HWND hwnd, WPARAM wParam, LPARAM lParam)
if (oldBtnPtr) if (oldBtnPtr)
InvalidateRect (hwnd, &oldBtnPtr->rect, InvalidateRect (hwnd, &oldBtnPtr->rect,
TOOLBAR_HasText(infoPtr, oldBtnPtr)); TOOLBAR_HasText(infoPtr, oldBtnPtr));
if (btnPtr && (btnPtr->fsState & TBSTATE_ENABLED)) if (btnPtr)
InvalidateRect(hwnd, &btnPtr->rect, InvalidateRect(hwnd, &btnPtr->rect,
TOOLBAR_HasText(infoPtr, btnPtr)); TOOLBAR_HasText(infoPtr, btnPtr));
@ -5483,7 +5501,7 @@ TOOLBAR_SetRedraw (HWND hwnd, WPARAM wParam, LPARAM lParam)
* According to testing V4.71 of COMCTL32 returns the * According to testing V4.71 of COMCTL32 returns the
* *previous* status of the redraw flag (either 0 or 1) * *previous* status of the redraw flag (either 0 or 1)
* instead of the MSDN documented value of 0 if handled. * instead of the MSDN documented value of 0 if handled.
* (For laughs see the "consistancy" with same function * (For laughs see the "consistency" with same function
* in rebar.) * in rebar.)
* *
*****************************************************/ *****************************************************/
@ -5558,11 +5576,16 @@ TOOLBAR_Size (HWND hwnd, WPARAM wParam, LPARAM lParam)
cy = infoPtr->nHeight; cy = infoPtr->nHeight;
cx = infoPtr->nWidth; cx = infoPtr->nWidth;
if (dwStyle & CCS_NOMOVEY) { if ((dwStyle & CCS_BOTTOM) == CCS_NOMOVEY) {
GetWindowRect(hwnd, &window_rect); GetWindowRect(hwnd, &window_rect);
ScreenToClient(parent, (LPPOINT)&window_rect.left); ScreenToClient(parent, (LPPOINT)&window_rect.left);
y = window_rect.top; y = window_rect.top;
} }
if ((dwStyle & CCS_BOTTOM) == CCS_BOTTOM) {
GetWindowRect(hwnd, &window_rect);
y = parent_rect.bottom -
( window_rect.bottom - window_rect.top);
}
} }
if (dwStyle & CCS_NOPARENTALIGN) { if (dwStyle & CCS_NOPARENTALIGN) {
@ -5581,8 +5604,7 @@ TOOLBAR_Size (HWND hwnd, WPARAM wParam, LPARAM lParam)
cx += GetSystemMetrics(SM_CYEDGE); cx += GetSystemMetrics(SM_CYEDGE);
} }
SetWindowPos (hwnd, 0, parent_rect.left - x, parent_rect.top - y, SetWindowPos (hwnd, 0, x, y, cx, cy, uPosFlags | SWP_NOZORDER);
cx, cy, uPosFlags | SWP_NOZORDER);
} }
return 0; return 0;
} }

View file

@ -97,16 +97,49 @@ typedef struct
#define TIC_SELECTIONMARKMIN 0x100 #define TIC_SELECTIONMARKMIN 0x100
#define TIC_SELECTIONMARK (TIC_SELECTIONMARKMAX | TIC_SELECTIONMARKMIN) #define TIC_SELECTIONMARK (TIC_SELECTIONMARKMAX | TIC_SELECTIONMARKMIN)
static BOOL TRACKBAR_SendNotify (TRACKBAR_INFO *infoPtr, UINT code);
static inline int static inline int
notify_customdraw(NMCUSTOMDRAW *pnmcd, int stage) notify_customdraw(TRACKBAR_INFO *infoPtr, NMCUSTOMDRAW *pnmcd, int stage)
{ {
pnmcd->dwDrawStage = stage; pnmcd->dwDrawStage = stage;
return SendMessageW (GetParent(pnmcd->hdr.hwndFrom), WM_NOTIFY, return SendMessageW (infoPtr->hwndNotify, WM_NOTIFY,
pnmcd->hdr.idFrom, (LPARAM)pnmcd); pnmcd->hdr.idFrom, (LPARAM)pnmcd);
} }
static LRESULT notify_hdr(TRACKBAR_INFO *infoPtr, INT code, LPNMHDR pnmh)
{
LRESULT result;
TRACE("(code=%d)\n", code);
pnmh->hwndFrom = infoPtr->hwndSelf;
pnmh->idFrom = GetWindowLongW(infoPtr->hwndSelf, GWL_ID);
pnmh->code = code;
result = SendMessageW(infoPtr->hwndNotify, WM_NOTIFY,
(WPARAM)pnmh->idFrom, (LPARAM)pnmh);
TRACE(" <= %ld\n", result);
return result;
}
static inline int notify(TRACKBAR_INFO *infoPtr, INT code)
{
NMHDR nmh;
return notify_hdr(infoPtr, code, &nmh);
}
static BOOL
notify_with_scroll (TRACKBAR_INFO *infoPtr, UINT code)
{
BOOL bVert = GetWindowLongW (infoPtr->hwndSelf, GWL_STYLE) & TBS_VERT;
TRACE("%x\n", code);
return (BOOL) SendMessageW (infoPtr->hwndNotify,
bVert ? WM_VSCROLL : WM_HSCROLL,
(WPARAM)code, (LPARAM)infoPtr->hwndSelf);
}
static void TRACKBAR_RecalculateTics (TRACKBAR_INFO *infoPtr) static void TRACKBAR_RecalculateTics (TRACKBAR_INFO *infoPtr)
{ {
int i, tic, nrTics; int i, tic, nrTics;
@ -126,7 +159,7 @@ static void TRACKBAR_RecalculateTics (TRACKBAR_INFO *infoPtr)
(nrTics+1)*sizeof (DWORD)); (nrTics+1)*sizeof (DWORD));
if (!infoPtr->tics) { if (!infoPtr->tics) {
infoPtr->uNumTics = 0; infoPtr->uNumTics = 0;
TRACKBAR_SendNotify(infoPtr, NM_OUTOFMEMORY); notify(infoPtr, NM_OUTOFMEMORY);
return; return;
} }
infoPtr->uNumTics = nrTics; infoPtr->uNumTics = nrTics;
@ -200,26 +233,44 @@ TRACKBAR_GetAutoPageDirection (TRACKBAR_INFO *infoPtr, POINT clickPoint)
} }
static void inline static void inline
TRACKBAR_PageUp (TRACKBAR_INFO *infoPtr) TRACKBAR_PageDown (TRACKBAR_INFO *infoPtr)
{ {
if (infoPtr->lPos == infoPtr->lRangeMax) return; if (infoPtr->lPos == infoPtr->lRangeMax) return;
infoPtr->lPos += infoPtr->lPageSize; infoPtr->lPos += infoPtr->lPageSize;
if (infoPtr->lPos > infoPtr->lRangeMax) if (infoPtr->lPos > infoPtr->lRangeMax)
infoPtr->lPos = infoPtr->lRangeMax; infoPtr->lPos = infoPtr->lRangeMax;
TRACKBAR_SendNotify (infoPtr, TB_PAGEUP); notify_with_scroll (infoPtr, TB_PAGEDOWN);
} }
static void inline static void inline
TRACKBAR_PageDown (TRACKBAR_INFO *infoPtr) TRACKBAR_PageUp (TRACKBAR_INFO *infoPtr)
{ {
if (infoPtr->lPos == infoPtr->lRangeMin) return; if (infoPtr->lPos == infoPtr->lRangeMin) return;
infoPtr->lPos -= infoPtr->lPageSize; infoPtr->lPos -= infoPtr->lPageSize;
if (infoPtr->lPos < infoPtr->lRangeMin) if (infoPtr->lPos < infoPtr->lRangeMin)
infoPtr->lPos = infoPtr->lRangeMin; infoPtr->lPos = infoPtr->lRangeMin;
TRACKBAR_SendNotify (infoPtr, TB_PAGEDOWN); notify_with_scroll (infoPtr, TB_PAGEUP);
}
static void inline TRACKBAR_LineUp(TRACKBAR_INFO *infoPtr)
{
if (infoPtr->lPos == infoPtr->lRangeMin) return;
infoPtr->lPos -= infoPtr->lLineSize;
if (infoPtr->lPos < infoPtr->lRangeMin)
infoPtr->lPos = infoPtr->lRangeMin;
notify_with_scroll (infoPtr, TB_LINEUP);
}
static void inline TRACKBAR_LineDown(TRACKBAR_INFO *infoPtr)
{
if (infoPtr->lPos == infoPtr->lRangeMax) return;
infoPtr->lPos += infoPtr->lLineSize;
if (infoPtr->lPos > infoPtr->lRangeMax)
infoPtr->lPos = infoPtr->lRangeMax;
notify_with_scroll (infoPtr, TB_LINEDOWN);
} }
static void static void
@ -398,9 +449,9 @@ TRACKBAR_AutoPage (TRACKBAR_INFO *infoPtr, POINT clickPoint)
TRACE("x=%ld, y=%ld, dir=%ld\n", clickPoint.x, clickPoint.y, dir); TRACE("x=%ld, y=%ld, dir=%ld\n", clickPoint.x, clickPoint.y, dir);
if (dir > 0 && (infoPtr->flags & TB_AUTO_PAGE_RIGHT)) if (dir > 0 && (infoPtr->flags & TB_AUTO_PAGE_RIGHT))
TRACKBAR_PageUp(infoPtr);
else if (dir < 0 && (infoPtr->flags & TB_AUTO_PAGE_LEFT))
TRACKBAR_PageDown(infoPtr); TRACKBAR_PageDown(infoPtr);
else if (dir < 0 && (infoPtr->flags & TB_AUTO_PAGE_LEFT))
TRACKBAR_PageUp(infoPtr);
else return FALSE; else return FALSE;
infoPtr->flags |= TB_THUMBPOSCHANGED; infoPtr->flags |= TB_THUMBPOSCHANGED;
@ -763,15 +814,15 @@ TRACKBAR_Refresh (TRACKBAR_INFO *infoPtr, HDC hdcDst)
/* start the paint cycle */ /* start the paint cycle */
nmcd.rc = rcClient; nmcd.rc = rcClient;
gcdrf = notify_customdraw(&nmcd, CDDS_PREPAINT); gcdrf = notify_customdraw(infoPtr, &nmcd, CDDS_PREPAINT);
if (gcdrf & CDRF_SKIPDEFAULT) goto cleanup; if (gcdrf & CDRF_SKIPDEFAULT) goto cleanup;
/* Erase backbround */ /* Erase backbround */
if (gcdrf == CDRF_DODEFAULT || if (gcdrf == CDRF_DODEFAULT ||
notify_customdraw(&nmcd, CDDS_PREERASE) != CDRF_SKIPDEFAULT) { notify_customdraw(infoPtr, &nmcd, CDDS_PREERASE) != CDRF_SKIPDEFAULT) {
FillRect (hdc, &rcClient, GetSysColorBrush(COLOR_BTNFACE)); FillRect (hdc, &rcClient, GetSysColorBrush(COLOR_BTNFACE));
if (gcdrf != CDRF_DODEFAULT) if (gcdrf != CDRF_DODEFAULT)
notify_customdraw(&nmcd, CDDS_POSTERASE); notify_customdraw(infoPtr, &nmcd, CDDS_POSTERASE);
} }
/* draw channel */ /* draw channel */
@ -779,12 +830,12 @@ TRACKBAR_Refresh (TRACKBAR_INFO *infoPtr, HDC hdcDst)
nmcd.dwItemSpec = TBCD_CHANNEL; nmcd.dwItemSpec = TBCD_CHANNEL;
nmcd.uItemState = CDIS_DEFAULT; nmcd.uItemState = CDIS_DEFAULT;
nmcd.rc = infoPtr->rcChannel; nmcd.rc = infoPtr->rcChannel;
icdrf = notify_customdraw(&nmcd, CDDS_ITEMPREPAINT); icdrf = notify_customdraw(infoPtr, &nmcd, CDDS_ITEMPREPAINT);
} else icdrf = CDRF_DODEFAULT; } else icdrf = CDRF_DODEFAULT;
if ( !(icdrf & CDRF_SKIPDEFAULT) ) { if ( !(icdrf & CDRF_SKIPDEFAULT) ) {
TRACKBAR_DrawChannel (infoPtr, hdc, dwStyle); TRACKBAR_DrawChannel (infoPtr, hdc, dwStyle);
if (icdrf & CDRF_NOTIFYPOSTPAINT) if (icdrf & CDRF_NOTIFYPOSTPAINT)
notify_customdraw(&nmcd, CDDS_ITEMPOSTPAINT); notify_customdraw(infoPtr, &nmcd, CDDS_ITEMPOSTPAINT);
} }
@ -794,12 +845,12 @@ TRACKBAR_Refresh (TRACKBAR_INFO *infoPtr, HDC hdcDst)
nmcd.dwItemSpec = TBCD_TICS; nmcd.dwItemSpec = TBCD_TICS;
nmcd.uItemState = CDIS_DEFAULT; nmcd.uItemState = CDIS_DEFAULT;
nmcd.rc = rcClient; nmcd.rc = rcClient;
icdrf = notify_customdraw(&nmcd, CDDS_ITEMPREPAINT); icdrf = notify_customdraw(infoPtr, &nmcd, CDDS_ITEMPREPAINT);
} else icdrf = CDRF_DODEFAULT; } else icdrf = CDRF_DODEFAULT;
if ( !(icdrf & CDRF_SKIPDEFAULT) ) { if ( !(icdrf & CDRF_SKIPDEFAULT) ) {
TRACKBAR_DrawTics (infoPtr, hdc, dwStyle); TRACKBAR_DrawTics (infoPtr, hdc, dwStyle);
if (icdrf & CDRF_NOTIFYPOSTPAINT) if (icdrf & CDRF_NOTIFYPOSTPAINT)
notify_customdraw(&nmcd, CDDS_ITEMPOSTPAINT); notify_customdraw(infoPtr, &nmcd, CDDS_ITEMPOSTPAINT);
} }
} }
@ -809,12 +860,12 @@ TRACKBAR_Refresh (TRACKBAR_INFO *infoPtr, HDC hdcDst)
nmcd.dwItemSpec = TBCD_THUMB; nmcd.dwItemSpec = TBCD_THUMB;
nmcd.uItemState = infoPtr->flags & TB_DRAG_MODE ? CDIS_HOT : CDIS_DEFAULT; nmcd.uItemState = infoPtr->flags & TB_DRAG_MODE ? CDIS_HOT : CDIS_DEFAULT;
nmcd.rc = infoPtr->rcThumb; nmcd.rc = infoPtr->rcThumb;
icdrf = notify_customdraw(&nmcd, CDDS_ITEMPREPAINT); icdrf = notify_customdraw(infoPtr, &nmcd, CDDS_ITEMPREPAINT);
} else icdrf = CDRF_DODEFAULT; } else icdrf = CDRF_DODEFAULT;
if ( !(icdrf & CDRF_SKIPDEFAULT) ) { if ( !(icdrf & CDRF_SKIPDEFAULT) ) {
TRACKBAR_DrawThumb(infoPtr, hdc, dwStyle); TRACKBAR_DrawThumb(infoPtr, hdc, dwStyle);
if (icdrf & CDRF_NOTIFYPOSTPAINT) if (icdrf & CDRF_NOTIFYPOSTPAINT)
notify_customdraw(&nmcd, CDDS_ITEMPOSTPAINT); notify_customdraw(infoPtr, &nmcd, CDDS_ITEMPOSTPAINT);
} }
} }
@ -825,7 +876,7 @@ TRACKBAR_Refresh (TRACKBAR_INFO *infoPtr, HDC hdcDst)
/* finish up the painting */ /* finish up the painting */
if (gcdrf & CDRF_NOTIFYPOSTPAINT) if (gcdrf & CDRF_NOTIFYPOSTPAINT)
notify_customdraw(&nmcd, CDDS_POSTPAINT); notify_customdraw(infoPtr, &nmcd, CDDS_POSTPAINT);
cleanup: cleanup:
/* cleanup, if we rendered offscreen */ /* cleanup, if we rendered offscreen */
@ -1196,7 +1247,7 @@ TRACKBAR_SetTic (TRACKBAR_INFO *infoPtr, LONG lPos)
(infoPtr->uNumTics)*sizeof (DWORD)); (infoPtr->uNumTics)*sizeof (DWORD));
if (!infoPtr->tics) { if (!infoPtr->tics) {
infoPtr->uNumTics = 0; infoPtr->uNumTics = 0;
TRACKBAR_SendNotify(infoPtr, NM_OUTOFMEMORY); notify(infoPtr, NM_OUTOFMEMORY);
return FALSE; return FALSE;
} }
infoPtr->tics[infoPtr->uNumTics-1] = lPos; infoPtr->tics[infoPtr->uNumTics-1] = lPos;
@ -1302,7 +1353,7 @@ TRACKBAR_Create (HWND hwnd, LPCREATESTRUCTW lpcs)
infoPtr->uNumTics = 0; /* start and end tic are not included in count*/ infoPtr->uNumTics = 0; /* start and end tic are not included in count*/
infoPtr->uTicFreq = 1; infoPtr->uTicFreq = 1;
infoPtr->tics = NULL; infoPtr->tics = NULL;
infoPtr->hwndNotify= GetParent (hwnd); infoPtr->hwndNotify= lpcs->hwndParent;
TRACKBAR_InitializeThumb (infoPtr); TRACKBAR_InitializeThumb (infoPtr);
@ -1394,18 +1445,20 @@ static LRESULT
TRACKBAR_LButtonUp (TRACKBAR_INFO *infoPtr, DWORD fwKeys, POINTS pts) TRACKBAR_LButtonUp (TRACKBAR_INFO *infoPtr, DWORD fwKeys, POINTS pts)
{ {
if (infoPtr->flags & TB_DRAG_MODE) { if (infoPtr->flags & TB_DRAG_MODE) {
TRACKBAR_SendNotify (infoPtr, TB_ENDTRACK); notify_with_scroll (infoPtr, TB_THUMBPOSITION | (infoPtr->lPos<<16));
notify_with_scroll (infoPtr, TB_ENDTRACK);
infoPtr->flags &= ~TB_DRAG_MODE; infoPtr->flags &= ~TB_DRAG_MODE;
ReleaseCapture (); ReleaseCapture ();
TRACKBAR_SendNotify(infoPtr, NM_RELEASEDCAPTURE); notify(infoPtr, NM_RELEASEDCAPTURE);
TRACKBAR_ActivateToolTip(infoPtr, FALSE); TRACKBAR_ActivateToolTip(infoPtr, FALSE);
TRACKBAR_InvalidateThumb(infoPtr, infoPtr->lPos); TRACKBAR_InvalidateThumb(infoPtr, infoPtr->lPos);
} }
if (infoPtr->flags & TB_AUTO_PAGE) { if (infoPtr->flags & TB_AUTO_PAGE) {
KillTimer (infoPtr->hwndSelf, TB_REFRESH_TIMER); KillTimer (infoPtr->hwndSelf, TB_REFRESH_TIMER);
infoPtr->flags &= ~TB_AUTO_PAGE; infoPtr->flags &= ~TB_AUTO_PAGE;
notify_with_scroll (infoPtr, TB_ENDTRACK);
ReleaseCapture (); ReleaseCapture ();
TRACKBAR_SendNotify(infoPtr, NM_RELEASEDCAPTURE); notify(infoPtr, NM_RELEASEDCAPTURE);
} }
return 0; return 0;
@ -1415,7 +1468,7 @@ TRACKBAR_LButtonUp (TRACKBAR_INFO *infoPtr, DWORD fwKeys, POINTS pts)
static LRESULT static LRESULT
TRACKBAR_CaptureChanged (TRACKBAR_INFO *infoPtr) TRACKBAR_CaptureChanged (TRACKBAR_INFO *infoPtr)
{ {
TRACKBAR_SendNotify (infoPtr, TB_ENDTRACK); notify_with_scroll (infoPtr, TB_ENDTRACK);
return 0; return 0;
} }
@ -1470,19 +1523,6 @@ TRACKBAR_Timer (TRACKBAR_INFO *infoPtr, INT wTimerID, TIMERPROC *tmrpc)
} }
static BOOL
TRACKBAR_SendNotify (TRACKBAR_INFO *infoPtr, UINT code)
{
BOOL bVert = GetWindowLongW (infoPtr->hwndSelf, GWL_STYLE) & TBS_VERT;
TRACE("%x\n", code);
return (BOOL) SendMessageW (GetParent (infoPtr->hwndSelf),
bVert ? WM_VSCROLL : WM_HSCROLL,
(WPARAM)code, (LPARAM)infoPtr->hwndSelf);
}
static LRESULT static LRESULT
TRACKBAR_MouseMove (TRACKBAR_INFO *infoPtr, DWORD fwKeys, POINTS pts) TRACKBAR_MouseMove (TRACKBAR_INFO *infoPtr, DWORD fwKeys, POINTS pts)
{ {
@ -1508,7 +1548,7 @@ TRACKBAR_MouseMove (TRACKBAR_INFO *infoPtr, DWORD fwKeys, POINTS pts)
infoPtr->lPos = dragPos; infoPtr->lPos = dragPos;
infoPtr->flags |= TB_THUMBPOSCHANGED; infoPtr->flags |= TB_THUMBPOSCHANGED;
TRACKBAR_SendNotify (infoPtr, TB_THUMBTRACK | (infoPtr->lPos<<16)); notify_with_scroll (infoPtr, TB_THUMBTRACK | (infoPtr->lPos<<16));
TRACKBAR_InvalidateThumbMove(infoPtr, oldPos, dragPos); TRACKBAR_InvalidateThumbMove(infoPtr, oldPos, dragPos);
@ -1517,55 +1557,50 @@ TRACKBAR_MouseMove (TRACKBAR_INFO *infoPtr, DWORD fwKeys, POINTS pts)
return TRUE; return TRUE;
} }
static BOOL static BOOL
TRACKBAR_KeyDown (TRACKBAR_INFO *infoPtr, INT nVirtKey, DWORD lKeyData) TRACKBAR_KeyDown (TRACKBAR_INFO *infoPtr, INT nVirtKey, DWORD lKeyData)
{ {
BOOL downIsLeft = GetWindowLongW (infoPtr->hwndSelf, GWL_STYLE) & TBS_DOWNISLEFT; DWORD style = GetWindowLongW (infoPtr->hwndSelf, GWL_STYLE);
BOOL downIsLeft = style & TBS_DOWNISLEFT;
BOOL vert = style & TBS_VERT;
LONG pos = infoPtr->lPos; LONG pos = infoPtr->lPos;
TRACE("%x\n", nVirtKey); TRACE("%x\n", nVirtKey);
switch (nVirtKey) { switch (nVirtKey) {
case VK_UP: case VK_UP:
if (downIsLeft) goto step_right; if (!vert && downIsLeft) TRACKBAR_LineDown(infoPtr);
else TRACKBAR_LineUp(infoPtr);
break;
case VK_LEFT: case VK_LEFT:
step_left: if (vert && downIsLeft) TRACKBAR_LineDown(infoPtr);
if (infoPtr->lPos == infoPtr->lRangeMin) return FALSE; else TRACKBAR_LineUp(infoPtr);
infoPtr->lPos -= infoPtr->lLineSize;
if (infoPtr->lPos < infoPtr->lRangeMin)
infoPtr->lPos = infoPtr->lRangeMin;
TRACKBAR_SendNotify (infoPtr, TB_LINEUP);
break; break;
case VK_DOWN: case VK_DOWN:
if (downIsLeft) goto step_left; if (!vert && downIsLeft) TRACKBAR_LineUp(infoPtr);
else TRACKBAR_LineDown(infoPtr);
break;
case VK_RIGHT: case VK_RIGHT:
step_right: if (vert && downIsLeft) TRACKBAR_LineUp(infoPtr);
if (infoPtr->lPos == infoPtr->lRangeMax) return FALSE; else TRACKBAR_LineDown(infoPtr);
infoPtr->lPos += infoPtr->lLineSize;
if (infoPtr->lPos > infoPtr->lRangeMax)
infoPtr->lPos = infoPtr->lRangeMax;
TRACKBAR_SendNotify (infoPtr, TB_LINEDOWN);
break; break;
case VK_NEXT: case VK_NEXT:
if (downIsLeft) goto page_left; if (!vert && downIsLeft) TRACKBAR_PageUp(infoPtr);
page_right: else TRACKBAR_PageDown(infoPtr);
TRACKBAR_PageUp(infoPtr);
break; break;
case VK_PRIOR: case VK_PRIOR:
if (downIsLeft) goto page_right; if (!vert && downIsLeft) TRACKBAR_PageDown(infoPtr);
page_left: else TRACKBAR_PageUp(infoPtr);
TRACKBAR_PageDown(infoPtr);
break; break;
case VK_HOME: case VK_HOME:
if (infoPtr->lPos == infoPtr->lRangeMin) return FALSE; if (infoPtr->lPos == infoPtr->lRangeMin) return FALSE;
infoPtr->lPos = infoPtr->lRangeMin; infoPtr->lPos = infoPtr->lRangeMin;
TRACKBAR_SendNotify (infoPtr, TB_TOP); notify_with_scroll (infoPtr, TB_TOP);
break; break;
case VK_END: case VK_END:
if (infoPtr->lPos == infoPtr->lRangeMax) return FALSE; if (infoPtr->lPos == infoPtr->lRangeMax) return FALSE;
infoPtr->lPos = infoPtr->lRangeMax; infoPtr->lPos = infoPtr->lRangeMax;
TRACKBAR_SendNotify (infoPtr, TB_BOTTOM); notify_with_scroll (infoPtr, TB_BOTTOM);
break; break;
} }
@ -1590,7 +1625,7 @@ TRACKBAR_KeyUp (TRACKBAR_INFO *infoPtr, INT nVirtKey, DWORD lKeyData)
case VK_PRIOR: case VK_PRIOR:
case VK_HOME: case VK_HOME:
case VK_END: case VK_END:
TRACKBAR_SendNotify (infoPtr, TB_ENDTRACK); notify_with_scroll (infoPtr, TB_ENDTRACK);
} }
return TRUE; return TRUE;
} }

View file

@ -3063,6 +3063,7 @@ TREEVIEW_Sort(TREEVIEW_INFO *infoPtr, BOOL fRecurse, HTREEITEM parent,
break; break;
} }
if (!item) item = parent->firstChild;
TREEVIEW_SetFirstVisible(infoPtr, item, FALSE); TREEVIEW_SetFirstVisible(infoPtr, item, FALSE);
} }
@ -3203,7 +3204,8 @@ TREEVIEW_Expand(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *wineItem,
TRACE("TVE_EXPAND %p %s\n", wineItem, TREEVIEW_ItemName(wineItem)); TRACE("TVE_EXPAND %p %s\n", wineItem, TREEVIEW_ItemName(wineItem));
if (bUser || !(wineItem->state & TVIS_EXPANDEDONCE)) if (bUser || ((wineItem->cChildren != 0) &&
!(wineItem->state & TVIS_EXPANDEDONCE)))
{ {
if (!TREEVIEW_SendExpanding(infoPtr, wineItem, TVE_EXPAND)) if (!TREEVIEW_SendExpanding(infoPtr, wineItem, TVE_EXPAND))
{ {
@ -5184,6 +5186,9 @@ static LRESULT WINAPI
TREEVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) TREEVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{ {
TREEVIEW_INFO *infoPtr = TREEVIEW_GetInfoPtr(hwnd); TREEVIEW_INFO *infoPtr = TREEVIEW_GetInfoPtr(hwnd);
TRACE("hwnd %p msg %04x wp=%08x lp=%08lx\n", hwnd, uMsg, wParam, lParam);
if (infoPtr) TREEVIEW_VerifyTree(infoPtr); if (infoPtr) TREEVIEW_VerifyTree(infoPtr);
else else
{ {