home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Graphics 16,000
/
graphics-16000.iso
/
msdos
/
plotting
/
pcgplots
/
gptpage.cpp
< prev
next >
Wrap
C/C++ Source or Header
|
1992-04-24
|
4KB
|
141 lines
/*-----------------------------------------------
GPtIndex.CPP -- CGM Page Index Dialog Box
Class PageObject
-----------------------------------------------*/
#include <windows.h>
#include "gpt.h"
#include <stdio.h>
//#include <stdarg.h>
PageObjectPt PageObject::ThisPageObject= NULL;
LPSTR lstrchr (LPSTR str, char ch) ;
LPSTR lstrrchr (LPSTR str, char ch) ;
BOOL FAR PASCAL _export PageObject::PageDlgProc(HWND hDlg, WORD message,
WORD wParam, LONG lParam)
{
char cLastChar ;
short nEditLen ;
char stg[1000];
char stg2[256];
CgmObjectPt cgm;
int nIndex;
int nPage = 0;
int nItem;
long ind;
void *pic;
HWND hList = GetDlgItem(hDlg, IDD_PLIST);
HWND hPage = GetDlgItem(hDlg, IDD_PNUM);
switch (message) // handle WM_INITDIALOG, WMCOMMAND
{
case WM_INITDIALOG:
ThisPageObject = (PageObjectPt)GetObjectPt(lParam);
cgm = ThisPageObject->CgmObj;
cgm->GetPageText( (PSTR)stg2);
wsprintf((LPSTR)stg,"Current Page = %d",cgm->GetPicNum() );
SetDlgItemText(hDlg,IDD_MESS, stg);
wsprintf((LPSTR)stg,"Last Page = %d", cgm->IndexCgm());
SetDlgItemText(hDlg,IDD_MESS2, stg);
wsprintf((LPSTR)stg,"%d", cgm->GetPicNum());
SetDlgItemText(hDlg,IDD_PNUM, stg);
pic = NULL;
do
{
*stg = '\0';
cgm->GetPictureText((PSTR)stg, &pic);
wsprintf((LPSTR)stg2,"%3d : %s ",++nPage,(LPSTR)stg );
SendMessage(hList, LB_ADDSTRING, NULL, (LONG)(LPSTR)stg2);
} while (pic);
SendMessage(hList, LB_SETCURSEL, cgm->GetPicNum()-1, NULL);
pic = NULL;
ind = 0;
do
{
SendMessage(hList, LB_SETSEL, cgm->GetSel(&pic), ind++);
} while (pic);
return TRUE ;
case WM_COMMAND:
switch (wParam) // control ID's IDD_FLIST, IDD_FNAME, IDOK, IDCANCEL
{
case IDD_PLIST: // Something done with listbox
switch (HIWORD (lParam)) // Handles LBN_SELCHANGE, LBN_DBLCLK
{
case LBN_DBLCLK:
nIndex = SendMessage(hList, LB_GETCURSEL, NULL, NULL);
wsprintf((LPSTR)stg,"%d", nIndex +1);
SetDlgItemText(hDlg,IDD_PNUM, stg);
//EndDialog (hDlg,1+ SendMessage(hList,LB_GETCURSEL,NULL,NULL));
return TRUE;
case LBN_SELCHANGE: // listbox selection change
//nIndex = SendMessage(hList, LB_GETCURSEL, NULL, NULL);
//wsprintf((LPSTR)stg,"%d", nIndex +1);
//SetDlgItemText(hDlg,IDD_PNUM, stg);
return TRUE ;
} // End switch (HIWORD (lParam))
break ; // End case IDD_FLIST
case IDOK:
stg[0] = 5; // 5 bytes max
stg[1] = 0;
int num = SendMessage(hPage,EM_GETLINE,NULL,(LONG)(LPSTR)stg);
stg[num] = 0;
nItem = sscanf(stg,"%d", &num);
cgm = ThisPageObject->CgmObj;
if (nItem !=0 && nItem !=EOF && num > 0 && num <= cgm->IndexCgm() )
EndDialog (hDlg, num);
else
{
wsprintf((LPSTR)stg,"%d",
SendMessage(hList,LB_GETCURSEL,NULL,NULL) +1 );
SetDlgItemText(hDlg,IDD_PNUM, stg);
MessageBeep(0);
}
return TRUE;
case IDD_SELECT:
ind = 0;
pic = NULL;
cgm = ThisPageObject->CgmObj;
do
{
cgm->SetSel(SendMessage(hList, LB_GETSEL, ind++,(long)0 ), &pic);
} while (pic);
EndDialog (hDlg, cgm->GetPicNum());
return TRUE ;
case IDCANCEL: EndDialog (hDlg, NO_PAGE_SELECTED); return TRUE ;
} // End switch (wParam)
break; // End case WM_COMMAND
} // end switch (message)
return FALSE ;
}
// ************* PageObject::PageCgm()
void PageObject::PageCgm(HWND hWndParent)
{
DWORD lParam;
FARPROC lpfnDlgProc = MakeProcInstance(
(FARPROC)PageObject::PageDlgProc, Appl::hInstance) ;
// Do dialog passing pointer to PageObject
SetObjectPt(this, &lParam);
Page = DialogBoxParam ( Appl::hInstance, "Page", hWndParent,
lpfnDlgProc,lParam) ;
FreeProcInstance(lpfnDlgProc);
}