/****************************************************************************** * * (C) COPYRIGHT MICROSOFT CORP., 2000 * * TITLE: Nameit.cpp * * VERSION: 1.0 * * AUTHOR: KeisukeT * * DATE: 27 Mar, 2000 * * DESCRIPTION: * Device naming page of WIA class installer. * * *******************************************************************************/ // // Precompiled header // #include "precomp.h" #pragma hdrstop // // Include // #include "nameit.h" // // Function // CNameDevicePage::CNameDevicePage(PINSTALLER_CONTEXT pInstallerContext) : CInstallWizardPage(pInstallerContext, NameTheDevice) { // // Set link to previous/next page. This page should show up. // m_uPreviousPage = IDD_DYNAWIZ_SELECT_NEXTPAGE; m_uNextPage = EmeraldCity; // // Initialize member. // m_pInstallerContext = pInstallerContext; } CNameDevicePage::~CNameDevicePage() { } // CNameDevicePage() BOOL CNameDevicePage::OnNotify( LPNMHDR lpnmh ) { BOOL bRet; DWORD dwMessageId; DebugTrace(TRACE_PROC_ENTER,(("CNameDevicePage::OnNotify: Enter... \r\n"))); // // Initialize local. // bRet = FALSE; dwMessageId = 0; // // Dispatch message. // switch(lpnmh->code){ case PSN_KILLACTIVE: { CString csFriendlyName; DebugTrace(TRACE_STATUS,(("CNameDevicePage::OnNotify: PSN_KILLACTIVE.\r\n"))); // // Dialog is about to disappear. Set FriendlyName. // if(NULL == m_pCDevice){ DebugTrace(TRACE_WARNING,(("CNameDevicePage::OnNotify: WARNING!! CDevice doesn't exist.\r\n"))); bRet = FALSE; goto OnNotify_return; } // // Get FriendlyName from text box. // csFriendlyName.GetContents(GetDlgItem(m_hwnd, DeviceFriendlyName)); // // Check the FriendlyName only when user push 'NEXT'. // if(m_bNextButtonPushed){ DWORD dwLength; // // Check length. // dwLength = lstrlen((LPCTSTR)csFriendlyName); if(0 == dwLength){ dwMessageId = NoDeviceName; } if(dwLength > MAX_FRIENDLYNAME){ dwMessageId = DeviceNameTooLong; } // // Check if it's unique. // if(!csFriendlyName.IsEmpty()){ // // Acquire mutex to access name store. // if(ERROR_SUCCESS != m_pCDevice->AcquireInstallerMutex(MAX_MUTEXTIMEOUT)){ // it must be done at least in 60 sec. DebugTrace(TRACE_ERROR,("CNameDevicePage::OnNotify: ERROR!! Unable to acquire mutex in 60 sec.\r\n")); } // if(ERROR_SUCCESS != AcquireInstallerMutex(60000)) // // Refresh current device list. // m_pCDevice->CollectNames(); // // See if Friendly is unique. // if(!(m_pCDevice->IsFriendlyNameUnique((LPTSTR)csFriendlyName))){ dwMessageId = DuplicateDeviceName; } // if(!(m_pCDevice->IsFriendlyNameUnique((LPTSTR)csFriendlyName))) } // if(!csFriendlyName.IsEmpty()) // // If FriendlyName is invalid, show error MessageBox. // if(0 != dwMessageId){ // // Select text box. // SendDlgItemMessage(m_hwnd, DeviceFriendlyName, EM_SETSEL, 0, MAKELPARAM(0, -1)); SetFocus(GetDlgItem(m_hwnd, DeviceFriendlyName)); // // Show error message box. // ShowInstallerMessage(dwMessageId); // // Don't leave this page. // SetWindowLongPtr(m_hwnd, DWLP_MSGRESULT, TRUE); bRet = TRUE; goto OnNotify_return; } else { // if(0 != dwMessageId) // // Set FriendlyName. // m_pCDevice->SetFriendlyName((LPTSTR)csFriendlyName); } // // if(0 != dwMessageId) } // else (m_bNextButtonPushed) // // Release mutex. // m_pCDevice->ReleaseInstallerMutex(); // // Reset pCDevice. // m_pCDevice = NULL; bRet = TRUE; goto OnNotify_return; } // case PSN_KILLACTIVE case PSN_SETACTIVE: { DebugTrace(TRACE_STATUS,(("CNameDevicePage::OnNotify: PSN_SETACTIVE.\r\n"))); // // Get current CDevice object; // m_pCDevice = (CDevice *)m_pInstallerContext->pDevice; if(NULL == m_pCDevice){ DebugTrace(TRACE_ERROR, (("CNameDevicePage::OnNotify: ERROR!! CDevice is not created.\r\n"))); } // // Show current friendly name. // SetDlgItemText(m_hwnd, DeviceFriendlyName, m_pCDevice->GetFriendlyName()); // // Limit the text upto MAX_FRIENDLYNAME. (=64) // SendDlgItemMessage(m_hwnd, DeviceFriendlyName, EM_LIMITTEXT, MAX_FRIENDLYNAME, 0); // // If "PortSelect = no", then set previous page to device selection page. // if(PORTSELMODE_NORMAL != m_pCDevice->GetPortSelectMode()) { m_uPreviousPage = IDD_DYNAWIZ_SELECTDEV_PAGE; } else { m_uPreviousPage = IDD_DYNAWIZ_SELECT_NEXTPAGE; } goto OnNotify_return; } // case PSN_SETACTIVE: } // switch(lpnmh->code) OnNotify_return: // // Release mutex. ReleaseInstallerMutex() will handle invalid handle also, so we can call anyway. // if(NULL != m_pCDevice){ m_pCDevice->ReleaseInstallerMutex(); } // if(NULL != m_pCDevice) DebugTrace(TRACE_PROC_LEAVE,(("CNameDevicePage::OnNotify: Leaving... Ret=0x%x.\r\n"), bRet)); return bRet; } // CNameDevicePage::OnNotify()