This repository has been archived on 2024-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
CodeBlocksPortable/WATCOM/samples/win/iconview/switch.c

106 lines
3 KiB
C
Raw Permalink Normal View History

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "view.h"
#include "mdi.h"
#include "icon.h"
#include "switch.h"
#include "win1632.h"
static an_MDI_icon *MDI_Icon;
#define MAX_ICON_STRING 80
/*
* FillListBox - fills the listbox control of the given dialog,
* (identified by child_id) with strings which represent the display modes
* of the various icons found in the fill which contains the MDI icon
* pointed at by MDI_Icon.
*/
static void FillListBox( HWND dialog, unsigned child_id )
{
HWND list_box;
FILE *fp;
an_icon_file *icon_file;
an_icon_resource res;
char buffer[ MAX_ICON_STRING ];
int max_icons, i;
list_box = GetDlgItem( dialog, child_id );
fp = fopen( MDI_Icon->file_name, "rb" );
if( !fp ) return;
icon_file = IconOpen( fp );
fclose( fp );
max_icons = IconCount( icon_file );
for( i = 0; i < max_icons; i++ ) {
IconResInfo( icon_file, &res, i );
wsprintf( buffer, "%d x %d - %d colour",
res.width, res.height, res.colour_count );
SendMessage( list_box, LB_ADDSTRING, 0, (LONG) (LPSTR) &buffer );
}
SendMessage( list_box, LB_SETCURSEL, MDI_Icon->current_icon, 0L );
IconClose( icon_file );
} /* FillListBox */
/*
* SwitchDialogProc - window proc for the dialog which handles the loading
* of a different icon from the current file.
*/
int FAR _EXPORT PASCAL SwitchDialogProc( HWND dialog,
UINT msg, WPARAM wparam, LPARAM lparam )
{
int select;
WORD cmd;
lparam = lparam;
switch( msg ) {
case WM_INITDIALOG:
/* fill list box with strings representing the various icons */
FillListBox( dialog, IDLISTBOX );
break;
case WM_COMMAND:
cmd = LOWORD( wparam );
switch( cmd ) {
case IDLISTBOX:
if( GET_WM_COMMAND_CMD( wparam, lparam ) != LBN_DBLCLK ) break;
/* fall through */
case IDOK:
select = (int) SendMessage( GetDlgItem( dialog, IDLISTBOX ),
LB_GETCURSEL, 0, 0L );
if( select != LB_ERR ) MDI_Icon->current_icon = select;
/* Fall through */
case IDCANCEL:
EndDialog( dialog, cmd != IDCANCEL );
break;
default:
return( FALSE );
}
default:
return( FALSE );
}
return( TRUE );
} /* SwitchDialogProc */
/*
* SwitchIcon - switches the icon which is displayed (chosen from
* all icons available within the file associated with the icon).
* Returns TRUE if the user chooses an icon type from the file,
* otherwise returns FALSE. icon->current_icon will be set to the
* user's choice if they selected a new icon.
*/
int SwitchIcon( an_MDI_icon *icon )
{
FARPROC func;
int ret_val;
MDI_Icon = icon;
func = MakeProcInstance( (FARPROC)SwitchDialogProc, Instance );
ret_val = DialogBox( Instance, "SwitchBox", FrameWindow, (DLGPROC)func );
FreeProcInstance( func );
return( ret_val );
} /* SwitchIcon */