home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C/C++ Interactive Guide
/
c-cplusplus-interactive-guide.iso
/
c_ref
/
csource1
/
cenvew
/
winutil.lib
< prev
Wrap
Text File
|
1993-12-02
|
5KB
|
136 lines
// WinUtil.lib - Cmm code wrapper for various useful Windows functions.
// This is by no means an exhaustive collection, but simply
// examples. You may #include this file in your CMM source
// or you may simply copy the routines you like into your
// code. The routines in this file are:
// GetSystemMetrics() - Width and height of various display elements
// GetWindowRect() - return structure containing window coordinates
// MoveWindow() - Move a window to specified coordinates on the screen
// GetWindowHandle() - get handle for a window based on it's matching title
// GetWindowText() - Get title of a window
#define _WINUTIL_LIB 1
GetSystemMetrics(Index)
// return this system metric
{
#define SM_CXSCREEN 0 // screen width
#define SM_CYSCREEN 1 // screen height
#define SM_CXVSCROLL 2
#define SM_CYHSCROLL 3
#define SM_CYCAPTION 4
#define SM_CXBORDER 5
#define SM_CYBORDER 6
#define SM_CXDLGFRAME 7
#define SM_CYDLGFRAME 8
#define SM_CYVTHUMB 9
#define SM_CXHTHUMB 10
#define SM_CXICON 11
#define SM_CYICON 12
#define SM_CXCURSOR 13
#define SM_CYCURSOR 14
#define SM_CYMENU 15
#define SM_CXFULLSCREEN 16
#define SM_CYFULLSCREEN 17
#define SM_CYKANJIWINDOW 18
#define SM_MOUSEPRESENT 19
#define SM_CYVSCROLL 20
#define SM_CXHSCROLL 21
#define SM_DEBUG 22
#define SM_SWAPBUTTON 23
#define SM_RESERVED1 24
#define SM_RESERVED2 25
#define SM_RESERVED3 26
#define SM_RESERVED4 27
#define SM_CXMIN 28
#define SM_CYMIN 29
#define SM_CXSIZE 30
#define SM_CYSIZE 31
#define SM_CXFRAME 32
#define SM_CYFRAME 33
#define SM_CXMINTRACK 34
#define SM_CYMINTRACK 35
#define SM_CMETRICS 36
return( DynamicLink("USER","GETSYSTEMMETRICS",SWORD16,PASCAL,Index) );
}
GetWindowRect(WindowHandle)
// return window coordinates in a structure with the following members
// .left
// .top
// .right
// .bottom
{
// set up blob to retrieve four integers
BLObSize(_rect,4 * 2/*integer size*/);
DynamicLink("USER","GETWINDOWRECT",SWORD16,PASCAL,WindowHandle,_rect);
_ret.left = BLObGet(_rect,0,SWORD16);
_ret.top = BLObGet(_rect,2,SWORD16);
_ret.right = BLObGet(_rect,4,SWORD16);
_ret.bottom = BLObGet(_rect,6,SWORD16);
return(_ret);
}
GetClientRect(WindowHandle)
// return window client-area coordinates in a structure with the following members
// .left
// .top
// .right
// .bottom
{
// set up blob to retrieve four integers
BLObSize(_rect,4 * 2/*integer size*/);
DynamicLink("USER","GETCLIENTRECT",SWORD16,PASCAL,WindowHandle,_rect);
_ret.left = BLObGet(_rect,0,SWORD16);
_ret.top = BLObGet(_rect,2,SWORD16);
_ret.right = BLObGet(_rect,4,SWORD16);
_ret.bottom = BLObGet(_rect,6,SWORD16);
return(_ret);
}
MoveWindow(WindowHandle,x,y,width,height,Repaint)
// move the window to coordinates x,y on the screen, with size width,height.
// if Repaint is not-False then will repaint window
{
DynamicLink("USER","MOVEWINDOW",SWORD16,PASCAL,
WindowHandle,x,y,width,height,Repaint);
}
GetWindowText(WindowHandle)
// return string containing text of this Window handle, or NULL if this window
// has no text
{
BLObSize(_buf,200);
if ( 0 == DynamicLink("USER","GETWINDOWTEXT",SWORD16,PASCAL,
WindowHandle,_buf,BLObSize(_buf)-1) ) {
return(NULL);
}
// copy to shorter string and return that
strcpy(_ret,_buf);
return(_ret);
}
GetWindowHandle(Title)
// Search for a window to match the string: Title or match title for at
// least the length of the string. Return the handle of the window as an
// integer, or return 0 if the window was not found.
{
_len = strlen(Title);
if ( NULL == (_winList = WindowList()) ) return 0;
_count = 1 + GetArraySpan(_winList);
for ( i = 0; i < _count; i++ ) {
// compare the title for this window, if it has one
if ( NULL != (_title = GetWindowText(_winList[i]))
&& 0 == strnicmp(Title,_title,_len) )
return(_winList[i]);
}
return(0);
}