Skip to content

mingw build #28

@NS-Clone

Description

@NS-Clone

i builded 1.0.0.13 with mingw (tdm64-gcc-10.3.0-2 x86-32 mode)

safe_size.c
#if SIZE_MAX == 0xFFFFFFFFFFFFFFFFUI64
invalid syntax in gcc should be
#if SIZE_MAX == UINT64_MAX

viv.h
needs extra

//=============================================================================
#ifndef _MSC_VER

    #include <stdint.h>
    //-------------------------------------------------------------------------
    #ifndef __int8
	typedef int8_t   __int8;
    #endif
    //-------------------------------------------------------------------------
    #ifndef __int16
	typedef int16_t  __int16;
    #endif
    //-------------------------------------------------------------------------
    #ifndef __int32
	typedef int32_t  __int32;
    #endif
    //-------------------------------------------------------------------------
    #ifndef __int64
	typedef int64_t  __int64;
    #endif
    //-------------------------------------------------------------------------
    #ifndef __uint8
	typedef uint8_t  __uint8;
    #endif
    //-------------------------------------------------------------------------
    #ifndef __uint16
	typedef uint16_t __uint16;
    #endif
    //-------------------------------------------------------------------------
    #ifndef __uint32
	typedef uint32_t __uint32;
    #endif
    //-------------------------------------------------------------------------
    #ifndef __uint64
	typedef uint64_t __uint64;
    #endif
    //-------------------------------------------------------------------------
#endif
//=============================================================================

viv.c
you can't use

static void _viv_key_add(struct _viv_key_list_s *key_list,int command_index,DWORD keyflags);
static void _viv_key_add(_viv_key_list_t *key_list,int command_index,DWORD keyflags)
{
...

gcc thinks that struct _viv_key_list_s *key_list and _viv_key_list_t *key_list are different things

and you can't use this to
for some unknown reason

static void _viv_key_add(struct _viv_key_list_s *key_list,int command_index,DWORD keyflags);
static void _viv_key_add(struct _viv_key_list_s *key_list,int command_index,DWORD keyflags)

so you need move all declarations above
and use _viv_key_list_t instead of struct _viv_key_list_s in prototype

// MF_OWNERDRAW = don't show in menu.
static _viv_command_t _viv_commands[] = 
{
	{"&File",MF_POPUP,_VIV_MENU_ROOT,_VIV_MENU_FILE},

	{"&Open File...",MF_STRING,_VIV_MENU_FILE,VIV_ID_FILE_OPEN_FILE},
	{"Open &Folder...",MF_STRING,_VIV_MENU_FILE,VIV_ID_FILE_OPEN_FOLDER},
	{"Open Everything &Search...",MF_STRING|MF_OWNERDRAW,_VIV_MENU_FILE,VIV_ID_FILE_OPEN_EVERYTHING_SEARCH},
	{"&Add File...",MF_STRING|MF_OWNERDRAW,_VIV_MENU_FILE,VIV_ID_FILE_ADD_FILE},
	{"Add Folder...",MF_STRING|MF_OWNERDRAW,_VIV_MENU_FILE,VIV_ID_FILE_ADD_FOLDER},
	{"Add Everything Search...",MF_STRING|MF_OWNERDRAW,_VIV_MENU_FILE,VIV_ID_FILE_ADD_EVERYTHING_SEARCH},
	{0,MF_SEPARATOR,_VIV_MENU_FILE,0},
	{"Open F&ile Location...",MF_STRING,_VIV_MENU_FILE,VIV_ID_FILE_OPEN_FILE_LOCATION},
	{"&Edit...",MF_STRING,_VIV_MENU_FILE,VIV_ID_FILE_EDIT},
	{"Pre&view...",MF_STRING,_VIV_MENU_FILE,VIV_ID_FILE_PREVIEW},
	{"&Print...",MF_STRING,_VIV_MENU_FILE,VIV_ID_FILE_PRINT},
	{"Set &Desktop Wallpaper",MF_STRING,_VIV_MENU_FILE,VIV_ID_FILE_SET_DESKTOP_WALLPAPER},
	{"&Close",MF_STRING|MF_OWNERDRAW,_VIV_MENU_FILE,VIV_ID_FILE_CLOSE}, // this just clears the image.
	{0,MF_SEPARATOR,_VIV_MENU_FILE,0},
	{"&Delete",MF_STRING|MF_DELETE,_VIV_MENU_FILE,VIV_ID_FILE_DELETE},
	{"Delete (Recycle)",MF_STRING|MF_OWNERDRAW,_VIV_MENU_FILE,VIV_ID_FILE_DELETE_RECYCLE},
	{"Delete (Permanently)",MF_STRING|MF_OWNERDRAW,_VIV_MENU_FILE,VIV_ID_FILE_DELETE_PERMANENTLY},
	{"&Rename",MF_STRING,_VIV_MENU_FILE,VIV_ID_FILE_RENAME},
	{"P&roperties",MF_STRING,_VIV_MENU_FILE,VIV_ID_FILE_PROPERTIES},
	{0,MF_SEPARATOR,_VIV_MENU_FILE,0},
	{"E&xit",MF_STRING,_VIV_MENU_FILE,VIV_ID_FILE_EXIT},
	
	{"&Edit",MF_POPUP,_VIV_MENU_ROOT,_VIV_MENU_EDIT},

	{"Cu&t",MF_STRING,_VIV_MENU_EDIT,VIV_ID_EDIT_CUT},
	{"&Copy",MF_STRING,_VIV_MENU_EDIT,VIV_ID_EDIT_COPY},
	{"Copy Filename",MF_STRING|MF_OWNERDRAW,_VIV_MENU_EDIT,VIV_ID_EDIT_COPY_FILENAME},
	{"Cop&y Image",MF_STRING,_VIV_MENU_EDIT,VIV_ID_EDIT_COPY_IMAGE},
	{"&Paste",MF_STRING|MF_OWNERDRAW,_VIV_MENU_EDIT,VIV_ID_EDIT_PASTE},
	{0,MF_SEPARATOR,_VIV_MENU_EDIT,0},
	{"Rotate &Cloc&kwise",MF_STRING,_VIV_MENU_EDIT,VIV_ID_EDIT_ROTATE_90},
	{"Rotate Cou&nterclockwise",MF_STRING,_VIV_MENU_EDIT,VIV_ID_EDIT_ROTATE_270},
	{0,MF_SEPARATOR,_VIV_MENU_EDIT,0},
	{"Copy to &Folder...",MF_STRING,_VIV_MENU_EDIT,VIV_ID_EDIT_COPY_TO},
	{"Mo&ve to Folder...",MF_STRING,_VIV_MENU_EDIT,VIV_ID_EDIT_MOVE_TO},

	{"&View",MF_POPUP,_VIV_MENU_ROOT,_VIV_MENU_VIEW},
	
	{"Caption",MF_STRING|MF_OWNERDRAW,_VIV_MENU_VIEW,VIV_ID_VIEW_CAPTION},
	{"Frame",MF_STRING|MF_OWNERDRAW,_VIV_MENU_VIEW,VIV_ID_VIEW_THICKFRAME},
	{"&Menu",MF_STRING,_VIV_MENU_VIEW,VIV_ID_VIEW_MENU},
	{"Status &Bar",MF_STRING,_VIV_MENU_VIEW,VIV_ID_VIEW_STATUS},
	{"&Controls",MF_STRING,_VIV_MENU_VIEW,VIV_ID_VIEW_CONTROLS},
//	{0,MF_SEPARATOR,_VIV_MENU_VIEW,0},
	{"&Preset",MF_POPUP,_VIV_MENU_VIEW,_VIV_MENU_VIEW_PRESET},
	{"&Minimal",MF_STRING,_VIV_MENU_VIEW_PRESET,VIV_ID_VIEW_PRESET_1},
	{"&Compact",MF_STRING,_VIV_MENU_VIEW_PRESET,VIV_ID_VIEW_PRESET_2},
	{"&Normal",MF_STRING,_VIV_MENU_VIEW_PRESET,VIV_ID_VIEW_PRESET_3},
	{0,MF_SEPARATOR,_VIV_MENU_VIEW,0},
	{"F&ullscreen",MF_STRING,_VIV_MENU_VIEW,VIV_ID_VIEW_FULLSCREEN},
	{"&Slideshow",MF_STRING,_VIV_MENU_VIEW,VIV_ID_VIEW_SLIDESHOW},
	{"&Window Size",MF_POPUP,_VIV_MENU_VIEW,_VIV_MENU_VIEW_WINDOW_SIZE},
	{"50%",MF_STRING,_VIV_MENU_VIEW_WINDOW_SIZE,VIV_ID_VIEW_WINDOW_SIZE_50},
	{"100%",MF_STRING,_VIV_MENU_VIEW_WINDOW_SIZE,VIV_ID_VIEW_WINDOW_SIZE_100},
	{"200%",MF_STRING,_VIV_MENU_VIEW_WINDOW_SIZE,VIV_ID_VIEW_WINDOW_SIZE_200},
	{"&Auto Fit",MF_STRING,_VIV_MENU_VIEW_WINDOW_SIZE,VIV_ID_VIEW_WINDOW_SIZE_AUTO_FIT},
	{"&Refresh",MF_STRING,_VIV_MENU_VIEW,VIV_ID_VIEW_REFRESH},
	{0,MF_SEPARATOR,_VIV_MENU_VIEW,0},
	{"&Allow Shrinking",MF_STRING,_VIV_MENU_VIEW,VIV_ID_VIEW_ALLOW_SHRINKING},
	{"&Keep Aspect Ratio",MF_STRING,_VIV_MENU_VIEW,VIV_ID_VIEW_KEEP_ASPECT_RATIO},
	{"&Fill Window",MF_STRING,_VIV_MENU_VIEW,VIV_ID_VIEW_FILL_WINDOW},
	{"1:1",MF_STRING,_VIV_MENU_VIEW,VIV_ID_VIEW_1TO1},
	{"&Best Fit",MF_STRING|MF_OWNERDRAW,_VIV_MENU_VIEW,VIV_ID_VIEW_BESTFIT},
	{0,MF_SEPARATOR,_VIV_MENU_VIEW,0},
	{"Pa&n && Scan",MF_POPUP,_VIV_MENU_VIEW,_VIV_MENU_VIEW_PANSCAN},
	{"&Increase Size",MF_STRING,_VIV_MENU_VIEW_PANSCAN,VIV_ID_VIEW_PANSCAN_INCREASE_SIZE},
	{"&Decrease Size",MF_STRING,_VIV_MENU_VIEW_PANSCAN,VIV_ID_VIEW_PANSCAN_DECREASE_SIZE},
	{"I&ncrease Width",MF_STRING,_VIV_MENU_VIEW_PANSCAN,VIV_ID_VIEW_PANSCAN_INCREASE_WIDTH},
	{"D&ecrease Width",MF_STRING,_VIV_MENU_VIEW_PANSCAN,VIV_ID_VIEW_PANSCAN_DECREASE_WIDTH},
	{"In&crease Height",MF_STRING,_VIV_MENU_VIEW_PANSCAN,VIV_ID_VIEW_PANSCAN_INCREASE_HEIGHT},
	{"De&cre&ase Height",MF_STRING,_VIV_MENU_VIEW_PANSCAN,VIV_ID_VIEW_PANSCAN_DECREASE_HEIGHT},
	{"&Zoom",MF_POPUP,_VIV_MENU_VIEW,_VIV_MENU_VIEW_ZOOM},
	{"Zoom &In",MF_STRING,_VIV_MENU_VIEW_ZOOM,VIV_ID_VIEW_ZOOM_IN},
	{"Zoom &Out",MF_STRING,_VIV_MENU_VIEW_ZOOM,VIV_ID_VIEW_ZOOM_OUT},
	{"&Reset",MF_STRING,_VIV_MENU_VIEW_ZOOM,VIV_ID_VIEW_ZOOM_RESET},
	{0,MF_SEPARATOR,_VIV_MENU_VIEW_PANSCAN,0},
	{"Move &Up",MF_STRING,_VIV_MENU_VIEW_PANSCAN,VIV_ID_VIEW_PANSCAN_MOVE_UP},
	{"Move &Down",MF_STRING,_VIV_MENU_VIEW_PANSCAN,VIV_ID_VIEW_PANSCAN_MOVE_DOWN},
	{"Move &Left",MF_STRING,_VIV_MENU_VIEW_PANSCAN,VIV_ID_VIEW_PANSCAN_MOVE_LEFT},
	{"Move &Right",MF_STRING,_VIV_MENU_VIEW_PANSCAN,VIV_ID_VIEW_PANSCAN_MOVE_RIGHT},
	{"Move Up Left",MF_STRING|MF_OWNERDRAW,_VIV_MENU_VIEW_PANSCAN,VIV_ID_VIEW_PANSCAN_MOVE_UP_LEFT},
	{"Move Up Right",MF_STRING|MF_OWNERDRAW,_VIV_MENU_VIEW_PANSCAN,VIV_ID_VIEW_PANSCAN_MOVE_UP_RIGHT},
	{"Move Down Left",MF_STRING|MF_OWNERDRAW,_VIV_MENU_VIEW_PANSCAN,VIV_ID_VIEW_PANSCAN_MOVE_DOWN_LEFT},
	{"Move Down Right",MF_STRING|MF_OWNERDRAW,_VIV_MENU_VIEW_PANSCAN,VIV_ID_VIEW_PANSCAN_MOVE_DOWN_RIGHT},
	{"Move Cen&ter",MF_STRING,_VIV_MENU_VIEW_PANSCAN,VIV_ID_VIEW_PANSCAN_MOVE_CENTER},
	{0,MF_SEPARATOR,_VIV_MENU_VIEW_PANSCAN,0},
	{"Re&set",MF_STRING,_VIV_MENU_VIEW_PANSCAN,VIV_ID_VIEW_PANSCAN_RESET},
	{0,MF_SEPARATOR,_VIV_MENU_VIEW,0},
	{"On &Top",MF_POPUP,_VIV_MENU_VIEW,_VIV_MENU_VIEW_ONTOP},
	{"&Always",MF_STRING|MFT_RADIOCHECK,_VIV_MENU_VIEW_ONTOP,VIV_ID_VIEW_ONTOP_ALWAYS},
	{"&While Playing Slideshow or Animating",MF_STRING|MFT_RADIOCHECK,_VIV_MENU_VIEW_ONTOP,VIV_ID_VIEW_ONTOP_WHILE_PLAYING_OR_ANIMATING},
	{"&Never",MF_STRING|MFT_RADIOCHECK,_VIV_MENU_VIEW_ONTOP,VIV_ID_VIEW_ONTOP_NEVER},
	{"&Options...",MF_STRING,_VIV_MENU_VIEW,VIV_ID_VIEW_OPTIONS},
	{"&Slideshow",MF_POPUP,_VIV_MENU_ROOT,_VIV_MENU_SLIDESHOW},
	{"&Play/Pause",MF_STRING,_VIV_MENU_SLIDESHOW,VIV_ID_SLIDESHOW_PAUSE},
	{0,MF_SEPARATOR,_VIV_MENU_SLIDESHOW,0},
	{"&Rate",MF_POPUP,_VIV_MENU_SLIDESHOW,_VIV_MENU_SLIDESHOW_RATE},
	{"&Decrease Rate",MF_STRING,_VIV_MENU_SLIDESHOW_RATE,VIV_ID_SLIDESHOW_RATE_DEC},
	{"&Increase Rate",MF_STRING,_VIV_MENU_SLIDESHOW_RATE,VIV_ID_SLIDESHOW_RATE_INC},
	{0,MF_SEPARATOR,_VIV_MENU_SLIDESHOW_RATE,0},
	{"250 Milliseconds",MF_STRING|MFT_RADIOCHECK,_VIV_MENU_SLIDESHOW_RATE,VIV_ID_SLIDESHOW_RATE_250},
	{"500 Milliseconds",MF_STRING|MFT_RADIOCHECK,_VIV_MENU_SLIDESHOW_RATE,VIV_ID_SLIDESHOW_RATE_500},
	{"&1 Second",MF_STRING|MFT_RADIOCHECK,_VIV_MENU_SLIDESHOW_RATE,VIV_ID_SLIDESHOW_RATE_1000},
	{"&2 Seconds",MF_STRING|MFT_RADIOCHECK,_VIV_MENU_SLIDESHOW_RATE,VIV_ID_SLIDESHOW_RATE_2000},
	{"&3 Seconds",MF_STRING|MFT_RADIOCHECK,_VIV_MENU_SLIDESHOW_RATE,VIV_ID_SLIDESHOW_RATE_3000},
	{"&4 Seconds",MF_STRING|MFT_RADIOCHECK,_VIV_MENU_SLIDESHOW_RATE,VIV_ID_SLIDESHOW_RATE_4000},
	{"&5 Seconds",MF_STRING|MFT_RADIOCHECK,_VIV_MENU_SLIDESHOW_RATE,VIV_ID_SLIDESHOW_RATE_5000},
	{"&6 Seconds",MF_STRING|MFT_RADIOCHECK,_VIV_MENU_SLIDESHOW_RATE,VIV_ID_SLIDESHOW_RATE_6000},
	{"&7 Seconds",MF_STRING|MFT_RADIOCHECK,_VIV_MENU_SLIDESHOW_RATE,VIV_ID_SLIDESHOW_RATE_7000},
	{"&8 Seconds",MF_STRING|MFT_RADIOCHECK,_VIV_MENU_SLIDESHOW_RATE,VIV_ID_SLIDESHOW_RATE_8000},
	{"&9 Seconds",MF_STRING|MFT_RADIOCHECK,_VIV_MENU_SLIDESHOW_RATE,VIV_ID_SLIDESHOW_RATE_9000},
	{"1&0 Seconds",MF_STRING|MFT_RADIOCHECK,_VIV_MENU_SLIDESHOW_RATE,VIV_ID_SLIDESHOW_RATE_10000},
	{"20 Seconds",MF_STRING|MFT_RADIOCHECK,_VIV_MENU_SLIDESHOW_RATE,VIV_ID_SLIDESHOW_RATE_20000},
	{"30 Seconds",MF_STRING|MFT_RADIOCHECK,_VIV_MENU_SLIDESHOW_RATE,VIV_ID_SLIDESHOW_RATE_30000},
	{"40 Seconds",MF_STRING|MFT_RADIOCHECK,_VIV_MENU_SLIDESHOW_RATE,VIV_ID_SLIDESHOW_RATE_40000},
	{"50 Seconds",MF_STRING|MFT_RADIOCHECK,_VIV_MENU_SLIDESHOW_RATE,VIV_ID_SLIDESHOW_RATE_50000},
	{"1 Minute",MF_STRING|MFT_RADIOCHECK,_VIV_MENU_SLIDESHOW_RATE,VIV_ID_SLIDESHOW_RATE_60000},
	{"Custom...",MF_STRING|MFT_RADIOCHECK,_VIV_MENU_SLIDESHOW_RATE,VIV_ID_SLIDESHOW_RATE_CUSTOM},

	{"&Animation",MF_POPUP,_VIV_MENU_ROOT,_VIV_MENU_ANIMATION},
	{"&Play/Pause",MF_STRING,_VIV_MENU_ANIMATION,VIV_ID_ANIMATION_PLAY_PAUSE},
	{0,MF_SEPARATOR,_VIV_MENU_ANIMATION,0},
	{"Jump &Forward",MF_STRING,_VIV_MENU_ANIMATION,VIV_ID_ANIMATION_JUMP_FORWARD_MEDIUM},
	{"Jump &Backward",MF_STRING,_VIV_MENU_ANIMATION,VIV_ID_ANIMATION_JUMP_BACKWARD_MEDIUM},
	{"Short Jump &Forward",MF_STRING|MF_OWNERDRAW,_VIV_MENU_ANIMATION,VIV_ID_ANIMATION_JUMP_FORWARD_SHORT},
	{"Short Jump &Backward",MF_STRING|MF_OWNERDRAW,_VIV_MENU_ANIMATION,VIV_ID_ANIMATION_JUMP_BACKWARD_SHORT},
	{"Long Jump &Forward",MF_STRING|MF_OWNERDRAW,_VIV_MENU_ANIMATION,VIV_ID_ANIMATION_JUMP_FORWARD_LONG},
	{"Long Jump &Backward",MF_STRING|MF_OWNERDRAW,_VIV_MENU_ANIMATION,VIV_ID_ANIMATION_JUMP_BACKWARD_LONG},
	{0,MF_SEPARATOR,_VIV_MENU_ANIMATION,0},
	{"F&rame Step",MF_STRING,_VIV_MENU_ANIMATION,VIV_ID_ANIMATION_FRAME_STEP},
	{"Pre&vious Frame",MF_STRING,_VIV_MENU_ANIMATION,VIV_ID_ANIMATION_FRAME_PREV},
	{"F&irst Frame",MF_STRING,_VIV_MENU_ANIMATION,VIV_ID_ANIMATION_FRAME_HOME},
	{"&Last Frame",MF_STRING,_VIV_MENU_ANIMATION,VIV_ID_ANIMATION_FRAME_END},
	{0,MF_SEPARATOR,_VIV_MENU_ANIMATION,0},
	{"&Decrease Rate",MF_STRING,_VIV_MENU_ANIMATION,VIV_ID_ANIMATION_RATE_DEC},
	{"&Increase Rate",MF_STRING,_VIV_MENU_ANIMATION,VIV_ID_ANIMATION_RATE_INC},
	{"R&eset Rate",MF_STRING,_VIV_MENU_ANIMATION,VIV_ID_ANIMATION_RATE_RESET},
	
	{"&Navigate",MF_POPUP,_VIV_MENU_ROOT,_VIV_MENU_NAVIGATE},
	{"&Next",MF_STRING,_VIV_MENU_NAVIGATE,VIV_ID_NAV_NEXT},
	{"P&revious",MF_STRING,_VIV_MENU_NAVIGATE,VIV_ID_NAV_PREV},
	{"&Home",MF_STRING,_VIV_MENU_NAVIGATE,VIV_ID_NAV_HOME},
	{"&End",MF_STRING,_VIV_MENU_NAVIGATE,VIV_ID_NAV_END},
	{0,MF_SEPARATOR,_VIV_MENU_NAVIGATE,0},
	{"S&ort",MF_POPUP,_VIV_MENU_NAVIGATE,_VIV_MENU_NAVIGATE_SORT},
	{"&Name",MF_STRING|MFT_RADIOCHECK,_VIV_MENU_NAVIGATE_SORT,VIV_ID_NAV_SORT_NAME},
	{"Full &Path and Filename",MF_STRING|MFT_RADIOCHECK,_VIV_MENU_NAVIGATE_SORT,VIV_ID_NAV_SORT_FULL_PATH_AND_FILENAME},
	{"&Size",MF_STRING|MFT_RADIOCHECK,_VIV_MENU_NAVIGATE_SORT,VIV_ID_NAV_SORT_SIZE},
	{"Date &Modified",MF_STRING|MFT_RADIOCHECK,_VIV_MENU_NAVIGATE_SORT,VIV_ID_NAV_SORT_DATE_MODIFIED},
	{"Date &Created",MF_STRING|MFT_RADIOCHECK,_VIV_MENU_NAVIGATE_SORT,VIV_ID_NAV_SORT_DATE_CREATED},
	{0,MF_SEPARATOR,_VIV_MENU_NAVIGATE_SORT,0},
	{"&Ascending",MF_STRING|MFT_RADIOCHECK,_VIV_MENU_NAVIGATE_SORT,VIV_ID_NAV_SORT_ASCENDING},
	{"&Descending",MF_STRING|MFT_RADIOCHECK,_VIV_MENU_NAVIGATE_SORT,VIV_ID_NAV_SORT_DESCENDING},
	{"&Shuffle",MF_STRING,_VIV_MENU_NAVIGATE,VIV_ID_NAV_SHUFFLE},
	{0,MF_SEPARATOR,_VIV_MENU_NAVIGATE,0},
	{"&Jump To...",MF_STRING,_VIV_MENU_NAVIGATE,VIV_ID_NAV_JUMPTO},

	{"&Help",MF_POPUP,_VIV_MENU_ROOT,_VIV_MENU_HELP},
	{"&Help",MF_STRING,_VIV_MENU_HELP,VIV_ID_HELP_HELP},
	{"&Command Line Options",MF_STRING,_VIV_MENU_HELP,VIV_ID_HELP_COMMAND_LINE_OPTIONS},
	{0,MF_SEPARATOR,_VIV_MENU_HELP,0},
	{"Home &Page",MF_STRING,_VIV_MENU_HELP,VIV_ID_HELP_WEBSITE},
	{"&Donate",MF_STRING,_VIV_MENU_HELP,VIV_ID_HELP_DONATE},
	{0,MF_SEPARATOR,_VIV_MENU_HELP,0},
	{"&About",MF_STRING,_VIV_MENU_HELP,VIV_ID_HELP_ABOUT},
};

#define _VIV_COMMAND_COUNT	(sizeof(_viv_commands) / sizeof(_viv_command_t))

typedef struct _viv_key_list_s
{
	config_key_t *start[_VIV_COMMAND_COUNT];
	config_key_t *last[_VIV_COMMAND_COUNT];
	
}_viv_key_list_t;


//static void _viv_key_add(struct _viv_key_list_s *key_list,int command_index,DWORD keyflags);
//static void _viv_key_clear(struct _viv_key_list_s *key_list,int command_index);
//static void _viv_key_list_copy(struct _viv_key_list_s *dst,const struct _viv_key_list_s *src);
//static void _viv_key_clear_all(struct _viv_key_list_s *list);
//static void _viv_key_list_init(struct _viv_key_list_s *list);
static void _viv_key_add( _viv_key_list_t *key_list,int command_index,DWORD keyflags);
static void _viv_key_clear( _viv_key_list_t *key_list,int command_index);
static void _viv_key_list_copy( _viv_key_list_t *dst,const struct _viv_key_list_s *src);
static void _viv_key_clear_all( _viv_key_list_t *list);
static void _viv_key_list_init( _viv_key_list_t *list);

static void _viv_options_key_list_sel_change(HWND hwnd,int previous_key_index);
static void _viv_options_remove_key(HWND hwnd);
static void _viv_options_edit_key(HWND hwnd,int key_index);
static INT_PTR CALLBACK _viv_edit_key_proc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam);
static LRESULT CALLBACK _viv_edit_key_edit_proc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam);
static int _viv_get_current_key_mod_flags(void);
static void _viv_options_edit_key_changed(HWND hwnd);
static void _viv_edit_key_set_key(HWND hwnd,DWORD key_flags);

//static void _viv_key_remove(struct _viv_key_list_s *keylist,int command_index,DWORD keyflags);
//static void _viv_edit_key_remove_currently_used_by(struct _viv_key_list_s *keylist,DWORD keyflags);
static void _viv_key_remove( _viv_key_list_t *keylist,int command_index,DWORD keyflags);
static void _viv_edit_key_remove_currently_used_by( _viv_key_list_t *keylist,DWORD keyflags);

also you need -municode as compiler argument
or createwindowex doesn't return hwnd and nothing works!!!!!

changes
voidImageViewer_1_0_0_13_gcc10_changes.zip

also i used prebuilt mingw-w64-i686-libwebp-1.0.0-1-any.pkg.tar.xz from msys2
libwebp.zip
needs

libwebp.a
libwebpdemux.a

mingw-w64-i686-libwebp-1.0.1-1-any.pkg.tar.xz with nt6+ calls in kernel32 already

for linking

-lcomctl32
-lws2_32
-lshlwapi
-lMsimg32
-lImm32	
-lUnicoWS
-lUrlmon
-lcomdlg32
-lgdi32
-lole32 
-luuid 
-lshell32
-luser32
-lkernel32

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions