home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
magazine
/
wint1_92
/
shaw
/
ddeclnt.cpp
< prev
next >
Wrap
C/C++ Source or Header
|
1991-11-04
|
5KB
|
172 lines
// ddeclnt.cpp RHS 10/15/91
#include"stdwin.h"
#include"dialog.h"
#include"msgbox.h"
#pragma hdrstop
#include"ddeclnt.h"
#include"dde.h"
WinDialog MainDlg;
void StartRequest(HWND hDlg);
class MyApp : public WinAppStdWindow
{
public:
static long far pascal WndProc(HWND, unsigned, WORD, LONG);
MyApp(char *name) : WinAppStdWindow(name)
{
SetClassWinProc(MyApp::WndProc);
SetWinStyle(0L);
SetWinHeight(0);
SetWinWidth(0);
SetClassIcon("DDECLNT");
}
};
BOOL FAR PASCAL DialogProc(HWND hDlg, WORD message, WORD wParam,
LONG lParam)
{
switch(message)
{
case WM_INITDIALOG:
SetDlgItemText(hDlg,RESULT_TOPIC,"");
SetDlgItemText(hDlg,RESULT_SERVER,"");
SetDlgItemText(hDlg,RESULT_ITEM,"");
SetDlgItemText(hDlg,REQUEST_SERVER,"");
SetDlgItemText(hDlg,REQUEST_TOPIC,"");
SetDlgItemText(hDlg,REQUEST_ITEM,"");
SetFocus(GetDlgItem(hDlg, REQUEST_SERVER));
MsgBox::myhWnd = hDlg;
MainDlg.WHandle = hDlg;
MainDlg.SetDlgIcon(
GetClassWord(MainDlg.GetParent(),GCW_HICON));
break;
case WM_COMMAND:
switch(wParam)
{
case BUTTON_REQUEST:
StartRequest(hDlg);
break;
case BUTTON_ADVISE:
MsgBox("Advise not yet implemented!");
break;
case BUTTON_UNADVISE:
MsgBox("UnAdvise not yet implemented!");
break;
case BUTTON_TERMINATE:
MsgBox("Terminate not yet implemented!");
break;
default:
return FALSE;
}
break;
case WM_SYSCOMMAND:
switch(wParam)
{
case SC_CLOSE:
EndDialog(hDlg, TRUE);
break;
default:
return FALSE;
}
break;
default:
return FALSE;
}
return TRUE;
}
HDDEDATA EXPENTRY DDEClientCallBack(
WORD trans,
WORD clipformat,
HCONV hConv,
HSZ hstr1,
HSZ hstr2,
HDDEDATA data,
DWORD transdata1,
DWORD transdata2)
{
switch(trans)
{
default:
return (HDDEDATA)NULL;
}
}
void StartRequest(HWND hDlg)
{
int i;
char buf0[80],buf1[80],buf2[80];
struct _buffers
{
char *buffer;
int field;
} Bufs[3] =
{
{ buf0, REQUEST_SERVER },
{ buf1, REQUEST_TOPIC },
{ buf2, REQUEST_ITEM }
};
int results[3] = { RESULT_SERVER, RESULT_TOPIC, RESULT_ITEM };
for(i = 0; i < 3; i++)
if(GetDlgItemText(hDlg,Bufs[i].field,Bufs[i].buffer,80) == 0)
{
MsgBox("You must specify server, topic AND item!",hDlg);
return;
}
DDEClient newClient(Bufs[0].buffer, Bufs[1].buffer,
(FARPROC)DDEClientCallBack);
newClient.Request(Bufs[2].buffer);
if(newClient.GetResult())
{
for(i = 0; i < 3; i++)
SetDlgItemText(hDlg,results[i],Bufs[i].buffer);
SetDlgItemText(hDlg,RESULT_DATA,(LPSTR)newClient.GetData());
}
else
MsgBox("No Data To Retrieve!");
}
#define WM_USER1 (WM_USER+1)
long FAR PASCAL _export MyApp::WndProc(HWND hWnd, unsigned message,
WORD wParam, LONG lParam)
{
MyApp *pMyApp = (MyApp *)GetPointer(hWnd);
switch(message)
{
case WM_CREATE:
MainDlg.Init("DDECLNT",(FARPROC)DialogProc,hWnd);
// PostMessage(hWnd,WM_USER1,0,0L);
// break;
// case WM_USER1:
MainDlg.Run();
DestroyWindow(hWnd);
break;
case WM_SIZE:
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0L;
}
int PASCAL WinMain(HANDLE, HANDLE, LPSTR, int)
{
MyApp DDEApp("DDEClient");
DDEApp.Hide(); // create hidden window
return DDEApp.Run(); // process any messages
}