CWinAppEx::CWinAppEx( LPCTSTR lpszAppName /*=0*/ ) : CWinApp( lpszAppName ) { // Determine system type OSVERSIONINFO osvi; osvi.dwOSVersionInfoSize = sizeof( osvi ); VERIFY( ::GetVersionEx( &osvi ) ); switch ( osvi.dwPlatformId ) { case VER_PLATFORM_WIN32_NT: if ( osvi.dwMajorVersion >= 5 ) { if ( osvi.dwMinorVersion >= 1 ) { m_eOs = osWinXP; } else { m_eOs = osWin2K; } } else { m_eOs = osWinNT; } break; case VER_PLATFORM_WIN32_WINDOWS: if ( ( osvi.dwMajorVersion > 4 ) || ( osvi.dwMajorVersion == 4 && osvi.dwMinorVersion > 0 ) ) { m_eOs = osWin98; } else { m_eOs = osWin95; } break; default: m_eOs = osUnknown; break; } m_bBitmappedMenus = IsWin50(); // Get system-wide parameters UpdateSystemParameters(); }
void CWinAppEx::UpdateSystemParameters() { m_info.cbSize = sizeof( NONCLIENTMETRICS ); VERIFY( ::SystemParametersInfo( SPI_GETNONCLIENTMETRICS, sizeof( m_info ), &m_info, 0 ) ); if ( IsWin50() ) { VERIFY( ::SystemParametersInfo( SPI_GETMENUANIMATION, 0, &m_bMenuAnimation, 0 ) ); if ( IsWin2K() ) { VERIFY( ::SystemParametersInfo( SPI_GETMENUUNDERLINES, 0, &m_bMenuUnderlines, 0 ) ); VERIFY( ::SystemParametersInfo( SPI_GETUIEFFECTS, 0, &m_bUIEffects, 0 ) ); VERIFY( ::SystemParametersInfo( SPI_GETMENUFADE, 0, &m_bMenuFade, 0 ) ); if ( IsWinXP() ) { VERIFY( ::SystemParametersInfo( SPI_GETFLATMENU, 0, &m_bFlatMenu, 0 ) ); } } } }
void CWinAppEx::SetBitmappedMenus( bool bBitmappedMenus ) { ASSERT( !bBitmappedMenus || IsWin50() ); m_bBitmappedMenus = bBitmappedMenus; }
bool CWinAppEx::GetMenuAnimation() const { ASSERT( IsWin50() ); return ( ( !IsWin2K() || m_bUIEffects ) && m_bMenuAnimation ); }
void CGetFilenameControl::Edit(BOOL fShowDlg) { //bring up the common file open dialog to select the filename //retreive the current filename to use as the initial value CString sCurrentFilename; if (m_sDir.IsEmpty()) GetWindowText(sCurrentFilename); else sCurrentFilename = m_sDir; if (fShowDlg || 0 == sCurrentFilename.GetLength()) { // work out the flags to use DWORD dwFlags = 0; BOOL fOpenFile = TRUE; if (m_dwFlags & GF_HIDEREADONLY) dwFlags |= OFN_HIDEREADONLY; if (m_dwFlags & GF_OVERWRITEPROMPT) dwFlags |= OFN_OVERWRITEPROMPT; if (m_dwFlags & GF_FILEMUSTEXIST) dwFlags |= OFN_FILEMUSTEXIST; if (m_dwFlags & GF_SAVEASDIALOG) { fOpenFile = FALSE; m_dwFlags |= OFN_NOREADONLYRETURN; } if (m_dwFlags & GF_MULTIPLESELECTION) dwFlags |= OFN_ALLOWMULTISELECT; if (IsWin40()) dwFlags |= OFN_EXPLORER; else dwFlags |= OFN_LONGNAMES; #if defined(OFN_ENABLESIZING) if (IsWin41() || (IsWinNT() && IsWin50())) { // Win98 oder WinNT50 dwFlags |= OFN_ENABLESIZING; #if defined(OFN_DONTADDTORECENT) dwFlags |= OFN_DONTADDTORECENT; #endif // defined(OFN_DONTADDTORECENT) } #endif // OFN_ENABLESIZING CGetFileNameDialog dlg (fOpenFile, m_sDefExt, sCurrentFilename, dwFlags, m_sExtFilter, GetParent()); //Modify the title to the desired value dlg.m_ofn.lpstrTitle = m_sTitle; //uncomment the following line if you want to use the old style file open common dialog if (m_dwFlags & GF_OLD_STYLE_DIALOG) dlg.m_ofn.Flags &= ~OFN_EXPLORER; // evtl. Verzeichnis voreinstellen if (!m_sDir.IsEmpty()) dlg.m_ofn.lpstrInitialDir = m_sDir; //bring up the dialog and if hit ok set the text in this control to the new filename if (dlg.DoModal() == IDOK) { SetWindowText (GetPathName (dlg)); if (!(m_dwFlags & GF_HIDEREADONLY) && !(m_dwFlags & GF_SAVEASDIALOG)) { m_fReadOnly = (dlg.m_ofn.Flags & OFN_READONLY) ? TRUE: FALSE; // testen, ob die Datei evtl. schreibgeschützt ist if (!m_fReadOnly) { DWORD dwAttr = ::GetFileAttributes (GetPathName (dlg)); if ((UINT)(-1) != dwAttr) m_fReadOnly = (dwAttr & FILE_ATTRIBUTE_READONLY) ? TRUE : FALSE; } } GetParent()->PostMessage (WM_FILESELECTED); } } else { SetWindowText(sCurrentFilename); m_Files.insert(os_string(sCurrentFilename)); GetParent()->PostMessage (WM_FILESELECTED); } }