?? iconpro.c
字號:
if( (hWndActive = (HWND)SendMessage( hMDIClientWnd, WM_MDIGETACTIVE, 0, 0)) != NULL )
SendMessage( hWndActive, WM_CLOSE, 0, lParam );
}
break; // End ID_FILE_CLOSE
// File->Exit menu option - shut 'er down
case ID_F_EXIT:
// Just send a WM_CLOSE - code there will handle it
PostMessage( hWnd, WM_CLOSE, (WPARAM)0, (LPARAM)0 );
break; // End ID_F_EXIT
// Edit->Import BMP and Edit->Stretch-Import BMP - convert BMP file to icon
// Edit->Copy, Edit->Paste, Edit->StretchPaste, Edit->AddFormat, Edit->RemoveFormat
// menu options. Just pass 'em on to the currently active MDI child window
case ID_EDIT_EXPORTBMP:
case ID_EDIT_IMPORTBMP:
case ID_EDIT_STRETCHIMPORTBMP:
case ID_EDIT_COPY:
case ID_EDIT_PASTE:
case ID_EDIT_STRETCHPASTE:
case ID_EDIT_ADDFORMAT:
case ID_EDIT_REMOVEFORMAT:
{
HWND hWndActive;
// Get active MDI child
if( (hWndActive = (HWND)SendMessage( hMDIClientWnd, WM_MDIGETACTIVE, 0, 0 )) != NULL )
{
// Pass the message along
SendMessage( hWndActive, WM_COMMAND, wParam, 0 );
}
}
break; // End ID_EDIT_XXXX
// Window->ArrangeIcons menu option
case ID_WINDOW_ARRANGEICONS:
// Ask the MDIClient to do it
SendMessage( hMDIClientWnd, WM_MDIICONARRANGE, 0, 0);
break; // End ID_WINDOW_ARRANGEICONS
// Window->Cascade menu option
case ID_WINDOW_CASCADE:
// Ask the MDIClient to do it
SendMessage( hMDIClientWnd, WM_MDICASCADE, 0, 0);
break; // End ID_WINDOW_CASCADE
// Window->Tile menu option
case ID_WINDOW_TILE:
// Ask the MDIClient to do it
SendMessage( hMDIClientWnd, WM_MDITILE, (WPARAM)MDITILE_HORIZONTAL, 0);
break; // End ID_WINDOW_TILE
// Window->TileVertical menu option
case ID_WINDOW_TILEVERTICAL:
// Ask the MDIClient to do it
SendMessage( hMDIClientWnd, WM_MDITILE, (WPARAM)MDITILE_VERTICAL, 0);
break; // End ID_WINDOW_TILEVERTICAL
// Help->About menu option
case ID_HELP_ABOUT:
// Launch the About Dialog
DialogBox( hInst, MAKEINTRESOURCE(ICONPRO_ABOUT_DLG), hWnd, AboutDlgProc );
break;
case ID_HELP_CONTENTS:
WinHelp( hWnd, szHelpFileName, HELP_CONTENTS, 0 );
break;
}
return 0l;
}
/* End OnCommand() *********************************************************/
/****************************************************************************
*
* FUNCTION: AboutDlgProc
*
* PURPOSE: Handles messages for About Dialog
*
* PARAMS: HWND hWnd - This window
* UINT Msg - Which message?
* WPARAM wParam - message parameter
* LPARAM lParam - message parameter
*
* RETURNS: BOOL - depends on message
*
* History:
* July '95 - Created
*
\****************************************************************************/
BOOL CALLBACK AboutDlgProc( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam )
{
switch( Msg )
{
case WM_INITDIALOG:
break;
case WM_CLOSE:
PostMessage( hWnd, WM_COMMAND, IDCANCEL, 0l );
break;
case WM_COMMAND:
switch( LOWORD(wParam) )
{
case IDOK:
EndDialog( hWnd, TRUE );
break;
case IDCANCEL:
EndDialog( hWnd, FALSE );
break;
}
break;
default:
return FALSE;
break;
}
return TRUE;
}
/* End AboutDlgProc() ******************************************************/
/****************************************************************************
*
* FUNCTION: CreateNewMDIChildWindow
*
* PURPOSE: Creates and shows a new MDI child window
*
* PARAMS: LPSTR szTitle - The title for the new window
* LPVOID lpData - Data to attach to the window (icon info)
*
* RETURNS: HWND - Handle to the new MDI child window
*
* History:
* July '95 - Created
*
\****************************************************************************/
HWND CreateNewMDIChildWindow( LPTSTR szTitle, LPVOID lpData )
{
HWND hReturnWnd;
// Create the MDI child window
hReturnWnd = CreateMDIWindow( szChildClassName, szTitle, 0,
CW_USEDEFAULT, CW_USEDEFAULT, WINDOW_WIDTH, WINDOW_HEIGHT,
hMDIClientWnd, hInst, (LPARAM)lpData );
// Show it
ShowWindow( hReturnWnd, SW_SHOW );
return hReturnWnd;
}
/* End CreateNewMDIChildWindow() ********************************************/
/****************************************************************************
*
* FUNCTION: GetOpenIconFileName
*
* PURPOSE: Prompts user for the filename for opening
*
* PARAMS: LPSTR szFileName - Buffer to receive name of file
* UINT FilterStringID - ID of filter string
* LPCTSTR szTitle - Title for the Dialog
*
* RETURNS: BOOL - TRUE for success, FALSE for failure
*
* History:
* July '95 - Created
*
\****************************************************************************/
BOOL GetOpenIconFileName( LPTSTR szFileName, UINT FilterStringID, LPCTSTR szTitle )
{
OPENFILENAME ofn;
UINT i, cbString;
TCHAR chReplace;
TCHAR szFilter[256];
// Get the filter string
if ((cbString = LoadString( hInst, FilterStringID, szFilter, sizeof(szFilter))) == 0 )
return FALSE;
// Replace the wildcard with NULL
chReplace = szFilter[cbString - 1]; /* retrieve wildcard */
for (i = 0; szFilter[i] != '\0'; i++)
{
if (szFilter[i] == chReplace)
szFilter[i] = '\0';
}
// Fill out the OPENFILENAME struct
ZeroMemory( &ofn, sizeof( OPENFILENAME ) );
ofn.lStructSize = sizeof( OPENFILENAME );
ofn.hwndOwner = hWndMain;
ofn.hInstance = hInst;
lstrcpy( szFileName, TEXT("") );
ofn.lpstrFile = szFileName;
ofn.nMaxFile = MAX_PATH;
ofn.Flags = OFN_FILEMUSTEXIST;
ofn.lpstrFilter = szFilter;
ofn.lpstrTitle = szTitle;
// Use the common dialog
return GetOpenFileName( &ofn );
}
/* End GetOpenIconFileName() ***********************************************/
/****************************************************************************
*
* FUNCTION: GetSaveIconFileName
*
* PURPOSE: Prompts user for the filename for saving
*
* PARAMS: LPSTR szFileName - Buffer to receive name of file
* UINT FilterStringID - ID of filter string
* LPCTSTR szTitle - Title for the Dialog
*
* RETURNS: BOOL - TRUE for success, FALSE for failure
*
* History:
* July '95 - Created
*
\****************************************************************************/
BOOL GetSaveIconFileName( LPTSTR szFileName, UINT FilterStringID, LPCTSTR szTitle )
{
OPENFILENAME ofn;
UINT i, cbString;
TCHAR chReplace;
TCHAR szFilter[256];
// Get the filter string
if ((cbString = LoadString( hInst, FilterStringID, szFilter, sizeof(szFilter))) == 0 )
return FALSE;
// Replace the wildcard with NULL
chReplace = szFilter[cbString - 1]; /* retrieve wildcard */
for (i = 0; szFilter[i] != '\0'; i++)
{
if (szFilter[i] == chReplace)
szFilter[i] = '\0';
}
// Fill out the OPENFILENAME struct
ZeroMemory( &ofn, sizeof( OPENFILENAME ) );
ofn.lStructSize = sizeof( OPENFILENAME );
ofn.hwndOwner = hWndMain;
ofn.hInstance = hInst;
lstrcpy( szFileName, TEXT("") );
ofn.lpstrFile = szFileName;
ofn.nMaxFile = MAX_PATH;
ofn.Flags = OFN_OVERWRITEPROMPT;
ofn.lpstrFilter = szFilter;
ofn.lpstrDefExt = TEXT("ICO");
ofn.lpstrTitle = szTitle;
// Use the common dialog
return GetSaveFileName( &ofn );
}
/* End GetSaveIconFileName() ***********************************************/
/****************************************************************************
*
* FUNCTION: UpdateMenuState
*
* PURPOSE: Updates states of menu items (called on menu activation)
*
* PARAMS: HWND hWnd - Handle to the window
* HMENU hMenu - Handle to the menu
*
* RETURNS: BOOL - TRUE for success, FALSE for failure
*
* History:
* July '95 - Created
*
\****************************************************************************/
BOOL UpdateMenuState( HWND hWnd, HMENU hMenu )
{
UINT nEnableFlag, nNumFormats;
HWND hWndActive;
// Get a handle to the active MDI child window
hWndActive=(HWND)SendMessage( hMDIClientWnd, WM_MDIGETACTIVE, 0, 0 );
// Find out how many icon image formats it holds
nNumFormats = SendMessage( hWndActive, WM_COMMAND, ID_GETNUMFORMATS, 0 );
// Do we actually have an active window?
if( hWndActive == NULL )
{
// No active MDI child...
EnableMenuItem( hMenu, ID_FILE_NEW, MF_BYCOMMAND | MF_ENABLED );
EnableMenuItem( hMenu, ID_FILE_OPEN, MF_BYCOMMAND | MF_ENABLED );
EnableMenuItem( hMenu, ID_FILE_EXTRACT, MF_BYCOMMAND | MF_ENABLED );
EnableMenuItem( hMenu, ID_FILE_CLOSE, MF_BYCOMMAND | MF_GRAYED );
EnableMenuItem( hMenu, ID_FILE_SAVE, MF_BYCOMMAND | MF_GRAYED );
EnableMenuItem( hMenu, ID_FILE_SAVEAS, MF_BYCOMMAND | MF_GRAYED );
EnableMenuItem( hMenu, ID_F_EXIT, MF_BYCOMMAND | MF_ENABLED );
EnableMenuItem( hMenu, ID_EDIT_COPY, MF_BYCOMMAND| MF_GRAYED );
EnableMenuItem( hMenu, ID_EDIT_PASTE, MF_BYCOMMAND | MF_GRAYED );
EnableMenuItem( hMenu, ID_EDIT_STRETCHPASTE, MF_BYCOMMAND | MF_GRAYED );
EnableMenuItem( hMenu, ID_EDIT_ADDFORMAT, MF_BYCOMMAND | MF_GRAYED );
EnableMenuItem( hMenu, ID_EDIT_IMPORTBMP, MF_BYCOMMAND | MF_GRAYED );
EnableMenuItem( hMenu, ID_EDIT_STRETCHIMPORTBMP, MF_BYCOMMAND | MF_GRAYED );
EnableMenuItem( hMenu, ID_EDIT_EXPORTBMP, MF_BYCOMMAND | MF_GRAYED );
EnableMenuItem( hMenu, ID_EDIT_REMOVEFORMAT, MF_BYCOMMAND | MF_GRAYED );
EnableMenuItem( hMenu, ID_WINDOW_ARRANGEICONS, MF_BYCOMMAND | MF_GRAYED );
EnableMenuItem( hMenu, ID_WINDOW_CASCADE, MF_BYCOMMAND | MF_GRAYED );
EnableMenuItem( hMenu, ID_WINDOW_TILE, MF_BYCOMMAND | MF_GRAYED );
EnableMenuItem( hMenu, ID_WINDOW_TILEVERTICAL, MF_BYCOMMAND | MF_GRAYED );
}
else
{
// We have an active MDI child...
EnableMenuItem( hMenu, ID_FILE_NEW, MF_BYCOMMAND | MF_ENABLED );
EnableMenuItem( hMenu, ID_FILE_OPEN, MF_BYCOMMAND | MF_ENABLED );
EnableMenuItem( hMenu, ID_FILE_EXTRACT, MF_BYCOMMAND | MF_ENABLED );
EnableMenuItem( hMenu, ID_FILE_CLOSE, MF_BYCOMMAND | MF_ENABLED );
nEnableFlag = (BOOL)SendMessage( hWndActive, WM_COMMAND, ID_HASFILECHANGED, 0 ) ? MF_ENABLED : MF_GRAYED;
EnableMenuItem( hMenu, ID_FILE_SAVE, MF_BYCOMMAND | nEnableFlag );
EnableMenuItem( hMenu, ID_FILE_SAVEAS, MF_BYCOMMAND | MF_ENABLED );
EnableMenuItem( hMenu, ID_F_EXIT, MF_BYCOMMAND | MF_ENABLED );
EnableMenuItem( hMenu, ID_EDIT_COPY, MF_BYCOMMAND | (nNumFormats>0)?MF_ENABLED:MF_GRAYED );
if( IsClipboardFormatAvailable( CF_DIB ) )
{
EnableMenuItem( hMenu, ID_EDIT_PASTE, MF_BYCOMMAND | (nNumFormats>0)?MF_ENABLED:MF_GRAYED );
EnableMenuItem( hMenu, ID_EDIT_STRETCHPASTE, MF_BYCOMMAND | (nNumFormats>0)?MF_ENABLED:MF_GRAYED );
}
else
{
EnableMenuItem( hMenu, ID_EDIT_PASTE, MF_BYCOMMAND | MF_GRAYED );
EnableMenuItem( hMenu, ID_EDIT_STRETCHPASTE, MF_BYCOMMAND | MF_GRAYED );
}
EnableMenuItem( hMenu, ID_EDIT_IMPORTBMP, MF_BYCOMMAND | (nNumFormats>0)?MF_ENABLED:MF_GRAYED );
EnableMenuItem( hMenu, ID_EDIT_STRETCHIMPORTBMP, MF_BYCOMMAND | (nNumFormats>0)?MF_ENABLED:MF_GRAYED );
EnableMenuItem( hMenu, ID_EDIT_EXPORTBMP, MF_BYCOMMAND | (nNumFormats>0)?MF_ENABLED:MF_GRAYED );
EnableMenuItem( hMenu, ID_EDIT_ADDFORMAT, MF_BYCOMMAND | MF_ENABLED );
EnableMenuItem( hMenu, ID_EDIT_REMOVEFORMAT, MF_BYCOMMAND | (nNumFormats>0)?MF_ENABLED:MF_GRAYED );
EnableMenuItem( hMenu, ID_WINDOW_ARRANGEICONS, MF_BYCOMMAND | MF_ENABLED );
EnableMenuItem( hMenu, ID_WINDOW_CASCADE, MF_BYCOMMAND | MF_ENABLED );
EnableMenuItem( hMenu, ID_WINDOW_TILE, MF_BYCOMMAND | MF_ENABLED );
EnableMenuItem( hMenu, ID_WINDOW_TILEVERTICAL, MF_BYCOMMAND | MF_ENABLED );
}
return TRUE;
}
/* End UpdateMenuState() ***************************************************/
/****************************************************************************
*
* FUNCTION : QueryCloseAllChildren()
*
* PURPOSE : Asks the child windows if it is ok to close up app. Nothing
* is destroyed at this point. The z-order is not changed.
*
* PARAMS: : none
*
*
* RETURNS : TRUE - If all children agree to the query.
* FALSE- If any one of them disagrees.
*
\***************************************************************************/
BOOL QueryCloseAllChildren( void )
{
register HWND hwndT;
for( hwndT = GetWindow(hMDIClientWnd, GW_CHILD); hwndT; hwndT = GetWindow (hwndT, GW_HWNDNEXT) )
{
if( GetWindow( hwndT, GW_OWNER ) )
continue;
if( SendMessage( hwndT, WM_CLOSE, 0, 0L ) )
return FALSE;
}
return TRUE;
}
/* End QueryCloseAllChildren() **********************************************/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -