source: trunk/src/gui/common/macros.h@ 2417

Last change on this file since 2417 was 2417, checked in by Andreas Schnellbacher, 14 years ago
  • Added svn keywords.
  • Property svn:keywords set to Date Revision Author HeadURL Id
File size: 7.5 KB
Line 
1/****************************** Module Header *******************************
2*
3* Module Name: macros.h
4*
5* Debug and PM related macros.
6*
7* Copyright (c) Netlabs EPM Distribution Project 2002
8*
9* $Id: macros.h 2417 2011-05-15 23:32:51Z aschn $
10*
11* ===========================================================================
12*
13* This file is part of the Netlabs EPM Distribution package and is free
14* software. You can redistribute it and/or modify it under the terms of the
15* GNU General Public License as published by the Free Software
16* Foundation, in version 2 as it comes in the "COPYING" file of the
17* Netlabs EPM Distribution. This library is distributed in the hope that it
18* will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
19* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20* General Public License for more details.
21*
22****************************************************************************/
23
24#ifndef MACROS_H
25#define MACROS_H
26
27#ifdef DEBUG
28#define FUNCENTER printf( "%s: ->\n", __FUNCTION__)
29#define FUNCEXIT printf( "%s: <-\n", __FUNCTION__)
30#define FUNCEXITRC printf( "%s: <- rc=%u/0x%p\n", __FUNCTION__, rc, rc)
31#define DPRINTF(p) printf p
32#define DMARK printf( "%s: (%u)\n", __FUNCTION__, __LINE__)
33
34#include <malloc.h>
35
36#define CHECKMEM fprintf( stderr, "\n%s(%u) : checkmem in %s()\n\n", __FILE__, __LINE__, __FUNCTION__); \
37 fflush( stderr); \
38 _set_crt_msg_handle( 1); \
39 _dump_allocated( 128); \
40 fprintf( stderr, "\n%s(%u) : heapchk %s()returns %u\n\n", __FILE__, __LINE__, __FUNCTION__, _heapchk());
41
42#else
43#define FUNCENTER
44#define FUNCEXIT
45#define FUNCEXITRC
46#define DPRINTF(p)
47#define DMARK
48#define CHECKMEM
49#endif
50
51
52#define CR "\r"
53#define LF "\n"
54#define NEWLINE LF
55#define MAX(a,b) (a > b ? a : b)
56#define MIN(a,b) (a < b ? a : b)
57
58// some string handling
59// internal macro to display a message
60#define NEXTSTR(s) (s+strlen(s)+1)
61#define ENDSTR(s) (s+strlen(s))
62#define _EOS(s) ((PSZ)s + strlen( s))
63#define _EOSSIZE(s) (sizeof( s) - strlen( s))
64
65// some basic PM stuff
66#define CURRENTHAB WinQueryAnchorBlock(HWND_DESKTOP)
67#define LASTERROR ERRORIDERROR( WinGetLastError( CURRENTHAB))
68#define SHOWFATALERROR(hwnd,s) WinMessageBox( HWND_DESKTOP, hwnd, s, __APPNAMESHORT__" - Fatal Error!", -1, MB_CANCEL | MB_ERROR | MB_MOVEABLE)
69#define SHOWERROR(hwnd,s) WinMessageBox( HWND_DESKTOP, hwnd, s, __APPNAMESHORT__, -1, MB_CANCEL | MB_ERROR | MB_MOVEABLE)
70#define SETFOCUS(hwnd,id) (WinSetFocus( HWND_DESKTOP, WinWindowFromID( hwnd, id)))
71
72// set pointer
73#define SETSYSPTR(id) (WinSetPointer( HWND_DESKTOP, WinQuerySysPointer( HWND_DESKTOP, id, FALSE)))
74
75// query dialog info
76#define WINDOWID(hwnd) (WinQueryWindowUShort( hwnd, QWS_ID))
77#define CLIENTWINDOWID(hwnd) (WinQueryWindowUShort( WinWindowFromID( hwnd, FID_CLIENT), QWS_ID))
78
79// query dialog items
80#define EXISTSWINDOW(hwnd,id) (WinWindowFromID ( hwnd, id))
81
82// enable/show dialog item
83#define ENABLEWINDOW(hwnd,id,flag) (WinEnableWindow( WinWindowFromID( hwnd, id), flag))
84#define SHOWWINDOW(hwnd,id,flag) (WinShowWindow( WinWindowFromID( hwnd, id), flag))
85#define ENABLEWINDOWUPDATE(hwnd,id,flag) (WinEnableWindowUpdate( WinWindowFromID( hwnd, id), flag))
86
87// query dialog item values
88#define QUERYTEXTVALUE(hwnd,id,buf) (WinQueryDlgItemText( hwnd, id, sizeof(buf), (PSZ)buf))
89#define QUERYTEXTVALUE2(hwnd,id,buf,len) (WinQueryDlgItemText( hwnd, id, len, (PSZ)buf))
90#define QUERYCHECKVALUE(hwnd,id) ((USHORT) WinSendDlgItemMsg( hwnd, id, BM_QUERYCHECK, 0L, 0L))
91#define DLGQUERYSPINNUMVALUE(hwnd,id,pf) (WinSendDlgItemMsg( hwnd, id, SPBM_QUERYVALUE, MPFROMP( pf), MPFROM2SHORT( 0, SPBQ_ALWAYSUPDATE)))
92
93
94// set dialog item values
95#define SETCHECKVALUE(hwnd,id,check) (WinSendMsg( WinWindowFromID( hwnd,id), BM_SETCHECK, (MPARAM) (check != 0), 0L))
96#define SETTEXTVALUE(hwnd,id,buf) (WinSetDlgItemText( hwnd,id, buf))
97#define SETTITLETEXT(hwnd, buf) (WinSetWindowText( WinWindowFromID( WinQueryWindow( hwnd, QW_PARENT), FID_TITLEBAR), buf))
98#define SETDLGTITLETEXT(hwnd, buf) (WinSetWindowText( WinWindowFromID( hwnd, FID_TITLEBAR), buf))
99#define SETTEXTLIMIT(hwnd,id,buf) ((BOOL) WinSendDlgItemMsg( hwnd, id, EM_SETTEXTLIMIT, MPFROMSHORT(sizeof(buf)), 0L))
100#define SETREADONLY(hwnd,id,flag) ((BOOL) WinSendDlgItemMsg( hwnd, id, EM_SETREADONLY, MPFROMSHORT( flag), 0L))
101#define SETTEXTLIMIT_S(hwnd,id,size) ((BOOL) WinSendDlgItemMsg( hwnd, id, EM_SETTEXTLIMIT, MPFROMSHORT(size), 0L))
102#define DLGINITSPIN(hwnd,id,high,low) (WinSendDlgItemMsg( hwnd, id, SPBM_SETLIMITS, MPFROMLONG(high), MPFROMLONG(low)))
103#define DLGSETSPIN(hwnd,id,value) (WinSendDlgItemMsg( hwnd, id, SPBM_SETCURRENTVALUE, MPFROMLONG(value), 0L))
104
105// simple listbox macros
106#define INSERTITEM(hwnd,id,text) ((ULONG) WinSendDlgItemMsg( hwnd, id, LM_INSERTITEM, MPFROMSHORT( LIT_END), (MPARAM) text))
107#define INSERTITEM_S(hwnd,id,text) ((ULONG) WinSendDlgItemMsg( hwnd, id, LM_INSERTITEM, MPFROMSHORT( LIT_SORTASCENDING), (MPARAM) text))
108#define DELETEITEM(hwnd,id,item) ( WinSendDlgItemMsg( hwnd, id, LM_DELETEITEM, MPFROMSHORT( item), 0L))
109#define DELETEALLITEMS(hwnd,id) ( WinSendDlgItemMsg( hwnd, id, LM_DELETEALL, 0L, 0L))
110#define SETITEMTEXT(hwnd,id,item,text) ( WinSendDlgItemMsg( hwnd, id, LM_SETITEMTEXT, MPFROMSHORT( item), (MPARAM) text))
111#define QUERYITEMTEXT(hwnd,id,item,buf) ( WinSendDlgItemMsg( hwnd, id, LM_QUERYITEMTEXT, MPFROM2SHORT(item,sizeof(buf)), (MPARAM) buf))
112#define QUERYSELECTION(hwnd,id,item) ((ULONG) WinSendDlgItemMsg( hwnd, id, LM_QUERYSELECTION, MPFROMSHORT( item), 0L))
113#define SETSELECTION(hwnd,id,item) ( WinSendDlgItemMsg( hwnd, id, LM_SELECTITEM, MPFROMSHORT(item),MPFROMSHORT(TRUE)))
114#define QUERYITEMCOUNT(hwnd,id) ((ULONG) WinSendDlgItemMsg( hwnd, id, LM_QUERYITEMCOUNT, 0L, 0L))
115#define SETITEMHANDLE(hwnd,id,item,handle) ( WinSendDlgItemMsg( hwnd, id, LM_SETITEMHANDLE, MPFROMSHORT( item), (MPARAM) handle))
116#define QUERYITEMHANDLE(hwnd,id,item) ((PVOID) WinSendDlgItemMsg( hwnd, id, LM_QUERYITEMHANDLE, MPFROMSHORT( item), 0L))
117#define SEARCHITEM(hwnd,id,text) ((ULONG) WinSendDlgItemMsg( hwnd, id, LM_SEARCHSTRING, MPFROM2SHORT( 0, LIT_FIRST), (MPARAM) text))
118#define QUERYTOPITEM(hwnd,id) ((ULONG) WinSendDlgItemMsg( hwnd, id, LM_QUERYTOPINDEX, 0, 0))
119
120// menu macros
121#define FRAMEWINDOW(h) WinQueryWindow( h, QW_PARENT)
122#define FRAMEMENU(h) WinWindowFromID( WinQueryWindow( h, QW_PARENT), FID_MENU)
123#define ENABLEMENUITEM(h,i,c) WinSendMsg( h, MM_SETITEMATTR, MPFROM2SHORT( i, TRUE), MPFROM2SHORT( MIA_DISABLED, (c) ? ~MIA_DISABLED : MIA_DISABLED))
124#define NODISMISSMENUITEM(h,i) WinSendMsg( h, MM_SETITEMATTR, MPFROM2SHORT( i, TRUE), MPFROM2SHORT( MIA_NODISMISS, MIA_NODISMISS))
125#define DELETEMENUITEM(h,i) WinSendMsg( h, MM_DELETEITEM, MPFROM2SHORT( i, TRUE), 0)
126#define SETMENUCHECKVALUE(h,i,c) WinSendMsg( h, MM_SETITEMATTR, MPFROM2SHORT( i, TRUE), MPFROM2SHORT( MIA_CHECKED, (c) ? MIA_CHECKED : ~MIA_CHECKED))
127
128#endif //MACROS_H
129
Note: See TracBrowser for help on using the repository browser.