home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tricks of the Windows Gam…ming Gurus (2nd Edition)
/
Disc2.iso
/
msdn_vcb
/
samples
/
vc98
/
atl
/
atlduck
/
duckdoerdlg.cpp
< prev
next >
Wrap
C/C++ Source or Header
|
1998-03-26
|
4KB
|
126 lines
// DuckDoerDlg.cpp : Implementation of CDuckDoerDlg
//
// This is a part of the Active Template Library.
// Copyright (C) 1996-1998 Microsoft Corporation
// All rights reserved.
//
// This source code is only intended as a supplement to the
// Active Template Library Reference and related
// electronic documentation provided with the library.
// See these sources for detailed information regarding the
// Active Template Library product.
#include "stdafx.h"
#include "DuckDoerDlg.h"
#include "duckdoer.h"
/////////////////////////////////////////////////////////////////////////////
// CDuckDoerDlg
CDuckDoerDlg::CDuckDoerDlg()
{
m_pObject = NULL;
m_xListboxExtentMax = 0;
CDuckDoer::m_pDlg = this;
}
CDuckDoerDlg::~CDuckDoerDlg()
{
}
LRESULT CDuckDoerDlg::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
CenterWindow();
return 1; // Let the system set the focus
}
LRESULT CDuckDoerDlg::OnOK(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
{
ShowWindow(SW_HIDE);
_ASSERT(m_pObject != NULL);
m_pObject->m_bLocked = FALSE;
((IDuckDoer*)m_pObject)->Release(); // release the lock on the object
return 0;
}
LRESULT CDuckDoerDlg::OnCancel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
{
_ASSERT(FALSE);
return 0;
}
LRESULT CDuckDoerDlg::OnQuack(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
{
USES_CONVERSION;
TCHAR szWhosCalling[100];
_tcscpy(szWhosCalling, _T("Server Quacking for Sink No. XX."));
CComBSTR szOut(szWhosCalling);
m_pObject->Fire_Quack(szOut);
return 1;
}
LRESULT CDuckDoerDlg::OnFlap(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
{
USES_CONVERSION;
TCHAR szWhosCalling[100];
_tcscpy(szWhosCalling, _T("Server Flapping for Sink No. XX."));
CComBSTR szOut(szWhosCalling);
m_pObject->Fire_Flap(szOut);
return 1;
}
LRESULT CDuckDoerDlg::OnPaddle(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
{
USES_CONVERSION;
TCHAR szWhosCalling[100];
_tcscpy(szWhosCalling, _T("Server Paddling for Sink No. XX."));
CComBSTR szOut(szWhosCalling);
m_pObject->Fire_Paddle(szOut);
return 1;
}
LRESULT CDuckDoerDlg::OnWalk(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
{
USES_CONVERSION;
TCHAR szWhosCalling[100];
_tcscpy(szWhosCalling, _T("Server Walking for Sink No. XX."));
CComBSTR szOut(szWhosCalling);
m_pObject->Fire_Walk(szOut);
return 1;
}
void CDuckDoerDlg::RecalcListboxExtent(LPCTSTR szEntry, BOOL bAdded)
{
HDC hDC;
HWND hwndListbox = GetDlgItem(IDC_LISTCONNPTS);
SIZE size;
_ASSERTE(hwndListbox != NULL);
hDC = ::GetDC(hwndListbox);
_ASSERTE(hDC != NULL);
_VERIFY(::GetTextExtentPoint32(hDC, szEntry, _tcslen(szEntry), &size));
if (bAdded && size.cx > m_xListboxExtentMax)
{
m_xListboxExtentMax = size.cx;
::SendMessage(hwndListbox, LB_SETHORIZONTALEXTENT, (WPARAM)size.cx, 0);
}
else if (!bAdded && size.cx == m_xListboxExtentMax)
{
TCHAR szBuffer[100];
m_xListboxExtentMax = 0;
int nLim = ::SendMessage(hwndListbox, LB_GETCOUNT, 0, 0);
_ASSERTE(nLim != LB_ERR);
for (int i = 0; i <= nLim; i++)
{
::SendMessage(hwndListbox, LB_GETTEXT, (WPARAM)i, (LPARAM)szBuffer);
::GetTextExtentPoint32(hDC, szBuffer, _tcslen(szBuffer), &size);
if (size.cx > m_xListboxExtentMax)
m_xListboxExtentMax = size.cx;
}
::SendMessage(hwndListbox, LB_SETHORIZONTALEXTENT, (WPARAM)size.cx, 0);
}
::ReleaseDC(hwndListbox, hDC);
}