| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- // This is a part of the Microsoft Foundation Classes C++ library.
- // Copyright (C) 1992-1998 Microsoft Corporation
- // All rights reserved.
- //
- // This source code is only intended as a supplement to the
- // Microsoft Foundation Classes Reference and related
- // electronic documentation provided with the library.
- // See these sources for detailed information regarding the
- // Microsoft Foundation Classes product.
- #include "stdafx.h"
- #include <dlgs.h>
- #ifdef AFX_AUX_SEG
- #pragma code_seg(AFX_AUX_SEG)
- #endif
- #ifdef _DEBUG
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- #define new DEBUG_NEW
- AFX_COMDAT UINT _afxMsgLBSELCHANGE = 0;
- AFX_COMDAT UINT _afxMsgSHAREVI = 0;
- AFX_COMDAT UINT _afxMsgFILEOK = 0;
- AFX_COMDAT UINT _afxMsgCOLOROK = 0;
- AFX_COMDAT UINT _afxMsgHELP = 0;
- AFX_COMDAT UINT _afxMsgSETRGB = 0;
- BEGIN_MESSAGE_MAP(CCommonDialog, CDialog)
- //{{AFX_MSG_MAP(CCommonDialog)
- ON_WM_HELPINFO()
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
- UINT CALLBACK
- _AfxCommDlgProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
- {
- if (hWnd == NULL)
- return 0;
- _AFX_THREAD_STATE* pThreadState = _afxThreadState.GetData();
- if (pThreadState->m_pAlternateWndInit != NULL)
- {
- ASSERT_KINDOF(CFileDialog,pThreadState->m_pAlternateWndInit);
- pThreadState->m_pAlternateWndInit->SubclassWindow(hWnd);
- pThreadState->m_pAlternateWndInit = NULL;
- }
- ASSERT(pThreadState->m_pAlternateWndInit == NULL);
- if (message == WM_INITDIALOG)
- {
- _afxMsgLBSELCHANGE = ::RegisterWindowMessage(LBSELCHSTRING);
- _afxMsgSHAREVI = ::RegisterWindowMessage(SHAREVISTRING);
- _afxMsgFILEOK = ::RegisterWindowMessage(FILEOKSTRING);
- _afxMsgCOLOROK = ::RegisterWindowMessage(COLOROKSTRING);
- _afxMsgHELP = ::RegisterWindowMessage(HELPMSGSTRING);
- _afxMsgSETRGB = ::RegisterWindowMessage(SETRGBSTRING);
- return (UINT)AfxDlgProc(hWnd, message, wParam, lParam);
- }
- if (message == _afxMsgHELP ||
- (message == WM_COMMAND && LOWORD(wParam) == pshHelp))
- {
- // just translate the message into the AFX standard help command.
- SendMessage(hWnd, WM_COMMAND, ID_HELP, 0);
- return 1;
- }
- if (message < 0xC000)
- {
- // not a ::RegisterWindowMessage message
- return 0;
- }
- // assume it is already wired up to a permanent one
- CDialog* pDlg = (CDialog*)CWnd::FromHandlePermanent(hWnd);
- ASSERT(pDlg != NULL);
- ASSERT_KINDOF(CDialog, pDlg);
- if (pDlg->IsKindOf(RUNTIME_CLASS(CFileDialog)))
- {
- // If we're exploring then we are not interested in the Registered messages
- if (((CFileDialog*)pDlg)->m_ofn.Flags & OFN_EXPLORER)
- return 0;
- }
- // RegisterWindowMessage - does not copy to lastState buffer, so
- // CWnd::GetCurrentMessage and CWnd::Default will NOT work
- // while in these handlers
- // Dispatch special commdlg messages through our virtual callbacks
- if (message == _afxMsgSHAREVI)
- {
- ASSERT_KINDOF(CFileDialog, pDlg);
- return ((CFileDialog*)pDlg)->OnShareViolation((LPCTSTR)lParam);
- }
- else if (message == _afxMsgFILEOK)
- {
- ASSERT_KINDOF(CFileDialog, pDlg);
- if (afxData.bWin4)
- ((CFileDialog*)pDlg)->m_pofnTemp = (OPENFILENAME*)lParam;
- BOOL bResult = ((CFileDialog*)pDlg)->OnFileNameOK();
- ((CFileDialog*)pDlg)->m_pofnTemp = NULL;
- return bResult;
- }
- else if (message == _afxMsgLBSELCHANGE)
- {
- ASSERT_KINDOF(CFileDialog, pDlg);
- ((CFileDialog*)pDlg)->OnLBSelChangedNotify(wParam, LOWORD(lParam),
- HIWORD(lParam));
- return 0;
- }
- else if (message == _afxMsgCOLOROK)
- {
- ASSERT_KINDOF(CColorDialog, pDlg);
- return ((CColorDialog*)pDlg)->OnColorOK();
- }
- else if (message == _afxMsgSETRGB)
- {
- // nothing to do here, since this is a SendMessage
- return 0;
- }
- return 0;
- }
- ////////////////////////////////////////////////////////////////////////////
- // CCommonDialog - common dialog helper class
- void CCommonDialog::OnOK()
- {
- ASSERT_VALID(this);
- if (!UpdateData(TRUE))
- {
- TRACE0("UpdateData failed during dialog termination.\n");
- // the UpdateData routine will set focus to correct item
- return;
- }
- // Common dialogs do not require ::EndDialog
- Default();
- }
- void CCommonDialog::OnCancel()
- {
- ASSERT_VALID(this);
- // Common dialogs do not require ::EndDialog
- Default();
- }
- BOOL CCommonDialog::OnHelpInfo(HELPINFO*)
- {
- return Default();
- }
- ////////////////////////////////////////////////////////////////////////////
|