www.pudn.com > 大量windows shell编程例子.zip > FoldFun.cpp


/***************************************************************** 
* 
*  Project.....:  Fun with Folders 
*  Application.:  FOLDFUN.exe 
*  Module......:  FOLDFUN.cpp 
*  Description.:  Application main module 
*  Compiler....:  MS Visual C++ 
*  Written by..:  D. Esposito 
*  Environment.:  Windows 9x/NT 
* 
******************************************************************/ 
 
/*---------------------------------------------------------------*/ 
//                        PRAGMA section 
/*---------------------------------------------------------------*/ 
// Force the linker to add the following libraries. 
#ifdef _MSC_VER 
 
#pragma comment(lib, "kernel32.lib") 
#pragma comment(lib, "user32.lib") 
#pragma comment(lib, "gdi32.lib") 
#pragma comment(lib, "shell32.lib") 
#pragma comment(lib, "comctl32.lib") 
 
#endif 
 
/*---------------------------------------------------------------*/ 
//                        INCLUDE section 
/*---------------------------------------------------------------*/ 
#include "FoldFun.h" 
#include  
#include  
#include  
#include "resource.h" 
 
/*---------------------------------------------------------------*/ 
//                        GLOBAL section 
/*---------------------------------------------------------------*/ 
// Data 
HICON g_hIconLarge; 
HICON g_hIconSmall; 
 
// Functions 
void OnInitDialog(HWND); 
void OnOK(HWND); 
void OnSettings(HWND); 
 
// Callbacks 
BOOL CALLBACK APP_DlgProc(HWND, UINT, WPARAM, LPARAM); 
 
 
/*---------------------------------------------------------------*/ 
// Procedure....: WinMain() 
// Description..: Entry point in any Windows program 
// Input........: HINSTANCE, HINSTANCE, LPSTR, int 
// Output.......: int 
/*---------------------------------------------------------------*/ 
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevious,  
                     LPTSTR lpsz, int iCmd) 
{ 
   // Save global data 
   g_hIconLarge = static_cast( 
              LoadImage(hInstance, "APP_ICON", IMAGE_ICON, 
              GetSystemMetrics(SM_CXICON), GetSystemMetrics(SM_CXICON), 0)); 
   g_hIconSmall = static_cast( 
              LoadImage(hInstance, "APP_ICON", IMAGE_ICON, 
              GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CXSMICON), 0)); 
 
   // Enable common controls 
   INITCOMMONCONTROLSEX iccex; 
   iccex.dwSize = sizeof(INITCOMMONCONTROLSEX); 
   iccex.dwICC = ICC_WIN95_CLASSES; 
   InitCommonControlsEx(&iccex); 
 
   // Run main dialog 
   BOOL b = DialogBox(hInstance, "DLG_MAIN", NULL, APP_DlgProc); 
 
   // Exit 
   DestroyIcon(g_hIconLarge); 
   DestroyIcon(g_hIconSmall); 
   return b; 
} 
 
 
/*---------------------------------------------------------------*/ 
// Procedure....: APP_DlgProc() 
// Description..: Responds to all messages sent to the dialog 
// Input........: HWND, UINT, WPARAM, LPARAM 
// Output.......: BOOL 
/*---------------------------------------------------------------*/ 
BOOL CALLBACK APP_DlgProc(HWND hDlg, UINT uiMsg, WPARAM wParam, LPARAM lParam) 
{ 
   switch(uiMsg) 
   { 
   case WM_INITDIALOG: 
      OnInitDialog(hDlg); 
      break; 
 
   case WM_COMMAND: 
      switch(wParam) 
      { 
      case IDCANCEL: 
         EndDialog(hDlg, FALSE); 
         return FALSE; 
 
      case IDC_GETSETTINGS: 
         OnSettings(hDlg); 
		 return FALSE; 
      } 
      break; 
   } 
 
   return FALSE; 
} 
 
 
/***************************************************************** 
* 
*  Internals: 
*    - OnOK() 
*    - OnInitDialog() 
* 
******************************************************************/ 
 
/*---------------------------------------------------------------*/ 
// Procedure...: OnOK() 
// Description.: Do something 
// INPUT.......: HWND 
// OUTPUT......: void 
/*---------------------------------------------------------------*/ 
void OnOK(HWND hDlg) 
{ 
   return; 
} 
 
 
/*---------------------------------------------------------------*/ 
// Procedure...: OnInitDialog() 
// Description.: Initialize the dialog 
// INPUT.......: HWND 
// OUTPUT......: void 
/*---------------------------------------------------------------*/ 
void OnInitDialog(HWND hDlg) 
{ 
   // Set the icons (T/F as to Large/Small icon) 
   SendMessage(hDlg, WM_SETICON, FALSE, reinterpret_cast(g_hIconSmall)); 
   SendMessage(hDlg, WM_SETICON, TRUE, reinterpret_cast(g_hIconLarge)); 
} 
 
 
void OnSettings(HWND hDlg) 
{ 
   SetDlgItemText(hDlg, IDC_SETTINGS, ""); 
 
   SHELLFLAGSTATE sfs; 
   SHGetSettings(&sfs, SSF_DESKTOPHTML | SSF_SHOWALLOBJECTS | 
                  SSF_MAPNETDRVBUTTON | SSF_SHOWATTRIBCOL | SSF_SHOWEXTENSIONS); 
 
   TCHAR szBuf[MAX_PATH] = {0}; 
   if(sfs.fDesktopHTML) 
      lstrcat(szBuf, __TEXT("Active Desktop - View as Web page is active\r\n")); 
 
   if(sfs.fMapNetDrvBtn) 
      lstrcat(szBuf, __TEXT("Network buttons on the toolbar\r\n")); 
 
   if(sfs.fShowAllObjects) 
      lstrcat(szBuf, __TEXT("Shows all files\r\n")); 
 
   if(sfs.fShowAttribCol) 
      lstrcat(szBuf, __TEXT("Shows attributes in Detail view\r\n")); 
 
   if(sfs.fShowExtensions) 
      lstrcat(szBuf, __TEXT("Shows extensions for known file types\r\n")); 
 
   SetDlgItemText(hDlg, IDC_SETTINGS, szBuf); 
} 
 
 
/*  End of file: FoldFun.cpp  */