mirror of
https://github.com/reactos/reactos.git
synced 2025-02-22 08:25:03 +00:00
[SHIMGVW] Consider failure case of loading file (#2606)
If loading an image file failed, then properly handle it. The command line is rundll32 shimgvw.dll,ImageView_Fullscreen . CORE-16911
This commit is contained in:
parent
d8e47d61d4
commit
3926e9b3c8
23 changed files with 118 additions and 40 deletions
|
@ -4,6 +4,7 @@ STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_APPTITLE "Прегледът за снимки и факсове на РеактОС"
|
IDS_APPTITLE "Прегледът за снимки и факсове на РеактОС"
|
||||||
IDS_SETASDESKBG "Слагане като подкраска"
|
IDS_SETASDESKBG "Слагане като подкраска"
|
||||||
|
IDS_NOPREVIEW "No preview available."
|
||||||
IDS_PREVIEW "Преглед"
|
IDS_PREVIEW "Преглед"
|
||||||
/* Tooltips */
|
/* Tooltips */
|
||||||
IDS_TOOLTIP_NEXT_PIC "Следващо изображение"
|
IDS_TOOLTIP_NEXT_PIC "Следващо изображение"
|
||||||
|
|
|
@ -9,6 +9,7 @@ STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_APPTITLE "ReactOS prohlížeč obrázků a faxů"
|
IDS_APPTITLE "ReactOS prohlížeč obrázků a faxů"
|
||||||
IDS_SETASDESKBG "Nastavit jako pozadí plochy"
|
IDS_SETASDESKBG "Nastavit jako pozadí plochy"
|
||||||
|
IDS_NOPREVIEW "No preview available."
|
||||||
IDS_PREVIEW "Náhled"
|
IDS_PREVIEW "Náhled"
|
||||||
/* Tooltips */
|
/* Tooltips */
|
||||||
IDS_TOOLTIP_NEXT_PIC "Další obrázek"
|
IDS_TOOLTIP_NEXT_PIC "Další obrázek"
|
||||||
|
|
|
@ -4,6 +4,7 @@ STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_APPTITLE "ReactOS-Bild- und Faxansicht"
|
IDS_APPTITLE "ReactOS-Bild- und Faxansicht"
|
||||||
IDS_SETASDESKBG "Als Desktophintergrund setzen"
|
IDS_SETASDESKBG "Als Desktophintergrund setzen"
|
||||||
|
IDS_NOPREVIEW "No preview available."
|
||||||
IDS_PREVIEW "Vorschau"
|
IDS_PREVIEW "Vorschau"
|
||||||
/* Tooltips */
|
/* Tooltips */
|
||||||
IDS_TOOLTIP_NEXT_PIC "Nächstes Bild"
|
IDS_TOOLTIP_NEXT_PIC "Nächstes Bild"
|
||||||
|
|
|
@ -4,6 +4,7 @@ STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_APPTITLE "ReactOS Picture and Fax Viewer"
|
IDS_APPTITLE "ReactOS Picture and Fax Viewer"
|
||||||
IDS_SETASDESKBG "Set as Desktop Background"
|
IDS_SETASDESKBG "Set as Desktop Background"
|
||||||
|
IDS_NOPREVIEW "No preview available."
|
||||||
IDS_PREVIEW "Preview"
|
IDS_PREVIEW "Preview"
|
||||||
/* Tooltips */
|
/* Tooltips */
|
||||||
IDS_TOOLTIP_NEXT_PIC "Next Picture"
|
IDS_TOOLTIP_NEXT_PIC "Next Picture"
|
||||||
|
|
|
@ -6,6 +6,7 @@ STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_APPTITLE "Visor de imágenes y fax de ReactOS"
|
IDS_APPTITLE "Visor de imágenes y fax de ReactOS"
|
||||||
IDS_SETASDESKBG "Establecer como fondo de escritorio"
|
IDS_SETASDESKBG "Establecer como fondo de escritorio"
|
||||||
|
IDS_NOPREVIEW "No preview available."
|
||||||
IDS_PREVIEW "Vista previa"
|
IDS_PREVIEW "Vista previa"
|
||||||
/* Tooltips */
|
/* Tooltips */
|
||||||
IDS_TOOLTIP_NEXT_PIC "Siguiente imagen"
|
IDS_TOOLTIP_NEXT_PIC "Siguiente imagen"
|
||||||
|
|
|
@ -4,6 +4,7 @@ STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_APPTITLE "Visionneuse d'Images et Fax de ReactOS"
|
IDS_APPTITLE "Visionneuse d'Images et Fax de ReactOS"
|
||||||
IDS_SETASDESKBG "Définir comme Arrière-plan du Bureau"
|
IDS_SETASDESKBG "Définir comme Arrière-plan du Bureau"
|
||||||
|
IDS_NOPREVIEW "No preview available."
|
||||||
IDS_PREVIEW "Aperçu"
|
IDS_PREVIEW "Aperçu"
|
||||||
/* Tooltips */
|
/* Tooltips */
|
||||||
IDS_TOOLTIP_NEXT_PIC "Image Suivante"
|
IDS_TOOLTIP_NEXT_PIC "Image Suivante"
|
||||||
|
|
|
@ -4,6 +4,7 @@ STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_APPTITLE "מציג התמונות והפקסים של ReactOS"
|
IDS_APPTITLE "מציג התמונות והפקסים של ReactOS"
|
||||||
IDS_SETASDESKBG "קבע כרקע שולחן עבודה"
|
IDS_SETASDESKBG "קבע כרקע שולחן עבודה"
|
||||||
|
IDS_NOPREVIEW "No preview available."
|
||||||
IDS_PREVIEW "תצוגה מקדימה"
|
IDS_PREVIEW "תצוגה מקדימה"
|
||||||
/* Tooltips */
|
/* Tooltips */
|
||||||
IDS_TOOLTIP_NEXT_PIC "התמונה הבאה"
|
IDS_TOOLTIP_NEXT_PIC "התמונה הבאה"
|
||||||
|
|
|
@ -4,6 +4,7 @@ STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_APPTITLE "Visualizzatore immagini e fax di ReactOS"
|
IDS_APPTITLE "Visualizzatore immagini e fax di ReactOS"
|
||||||
IDS_SETASDESKBG "Imposta come sfondo del desktop"
|
IDS_SETASDESKBG "Imposta come sfondo del desktop"
|
||||||
|
IDS_NOPREVIEW "No preview available."
|
||||||
IDS_PREVIEW "Anteprima"
|
IDS_PREVIEW "Anteprima"
|
||||||
/* Tooltips */
|
/* Tooltips */
|
||||||
IDS_TOOLTIP_NEXT_PIC "Immagine successiva"
|
IDS_TOOLTIP_NEXT_PIC "Immagine successiva"
|
||||||
|
|
|
@ -4,6 +4,7 @@ STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_APPTITLE "ReactOS画像とFAXビュアー"
|
IDS_APPTITLE "ReactOS画像とFAXビュアー"
|
||||||
IDS_SETASDESKBG "デスクトップの背景に設定する"
|
IDS_SETASDESKBG "デスクトップの背景に設定する"
|
||||||
|
IDS_NOPREVIEW "No preview available."
|
||||||
IDS_PREVIEW "プレビュー"
|
IDS_PREVIEW "プレビュー"
|
||||||
/* Tooltips */
|
/* Tooltips */
|
||||||
IDS_TOOLTIP_NEXT_PIC "次の画像"
|
IDS_TOOLTIP_NEXT_PIC "次の画像"
|
||||||
|
|
|
@ -6,6 +6,7 @@ STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_APPTITLE "ReactOS paveikslėlių ir faksogramų peržiūros programa"
|
IDS_APPTITLE "ReactOS paveikslėlių ir faksogramų peržiūros programa"
|
||||||
IDS_SETASDESKBG "Nustatyti kaip darbalaukio foną"
|
IDS_SETASDESKBG "Nustatyti kaip darbalaukio foną"
|
||||||
|
IDS_NOPREVIEW "No preview available."
|
||||||
IDS_PREVIEW "Preview"
|
IDS_PREVIEW "Preview"
|
||||||
/* Tooltips */
|
/* Tooltips */
|
||||||
IDS_TOOLTIP_NEXT_PIC "Tolesnis paveikslėlis"
|
IDS_TOOLTIP_NEXT_PIC "Tolesnis paveikslėlis"
|
||||||
|
|
|
@ -4,6 +4,7 @@ STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_APPTITLE "ReactOS bilde og Faks Viser"
|
IDS_APPTITLE "ReactOS bilde og Faks Viser"
|
||||||
IDS_SETASDESKBG "Sett som skrivebord bakgrunn"
|
IDS_SETASDESKBG "Sett som skrivebord bakgrunn"
|
||||||
|
IDS_NOPREVIEW "No preview available."
|
||||||
IDS_PREVIEW "Skriv ut"
|
IDS_PREVIEW "Skriv ut"
|
||||||
/* Tooltips */
|
/* Tooltips */
|
||||||
IDS_TOOLTIP_NEXT_PIC "Neste bilde"
|
IDS_TOOLTIP_NEXT_PIC "Neste bilde"
|
||||||
|
|
|
@ -9,6 +9,7 @@ STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_APPTITLE "Przeglądarka obrazów i faksów ReactOS"
|
IDS_APPTITLE "Przeglądarka obrazów i faksów ReactOS"
|
||||||
IDS_SETASDESKBG "Ustaw jako tło pulpitu"
|
IDS_SETASDESKBG "Ustaw jako tło pulpitu"
|
||||||
|
IDS_NOPREVIEW "No preview available."
|
||||||
IDS_PREVIEW "Podgląd"
|
IDS_PREVIEW "Podgląd"
|
||||||
/* Tooltips */
|
/* Tooltips */
|
||||||
IDS_TOOLTIP_NEXT_PIC "Następny obraz"
|
IDS_TOOLTIP_NEXT_PIC "Następny obraz"
|
||||||
|
|
|
@ -9,6 +9,7 @@ STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_APPTITLE "Visualizador de imagens e faxes do ReactOS"
|
IDS_APPTITLE "Visualizador de imagens e faxes do ReactOS"
|
||||||
IDS_SETASDESKBG "Definir como plano de fundo da área de trabalho"
|
IDS_SETASDESKBG "Definir como plano de fundo da área de trabalho"
|
||||||
|
IDS_NOPREVIEW "No preview available."
|
||||||
IDS_PREVIEW "Pre-visualizar"
|
IDS_PREVIEW "Pre-visualizar"
|
||||||
/* Tooltips */
|
/* Tooltips */
|
||||||
IDS_TOOLTIP_NEXT_PIC "Próxima imagem"
|
IDS_TOOLTIP_NEXT_PIC "Próxima imagem"
|
||||||
|
|
|
@ -11,6 +11,7 @@ STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_APPTITLE "Vizualizare fax și imagini"
|
IDS_APPTITLE "Vizualizare fax și imagini"
|
||||||
IDS_SETASDESKBG "Plasează ca decor de fundal"
|
IDS_SETASDESKBG "Plasează ca decor de fundal"
|
||||||
|
IDS_NOPREVIEW "No preview available."
|
||||||
IDS_PREVIEW "Previzionare"
|
IDS_PREVIEW "Previzionare"
|
||||||
/* Tooltips */
|
/* Tooltips */
|
||||||
IDS_TOOLTIP_NEXT_PIC "Imaginea următare"
|
IDS_TOOLTIP_NEXT_PIC "Imaginea următare"
|
||||||
|
|
|
@ -4,6 +4,7 @@ STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_APPTITLE "Программа просмотра изображений и факсов"
|
IDS_APPTITLE "Программа просмотра изображений и факсов"
|
||||||
IDS_SETASDESKBG "Установить как фон рабочего стола"
|
IDS_SETASDESKBG "Установить как фон рабочего стола"
|
||||||
|
IDS_NOPREVIEW "No preview available."
|
||||||
IDS_PREVIEW "Предпросмотр"
|
IDS_PREVIEW "Предпросмотр"
|
||||||
/* Tooltips */
|
/* Tooltips */
|
||||||
IDS_TOOLTIP_NEXT_PIC "Следующее изображение"
|
IDS_TOOLTIP_NEXT_PIC "Следующее изображение"
|
||||||
|
|
|
@ -8,6 +8,7 @@ STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_APPTITLE "Zobrazovač obrázkov a faxov systému ReactOS"
|
IDS_APPTITLE "Zobrazovač obrázkov a faxov systému ReactOS"
|
||||||
IDS_SETASDESKBG "Nastaviť ako pozadie pracovnej plochy"
|
IDS_SETASDESKBG "Nastaviť ako pozadie pracovnej plochy"
|
||||||
|
IDS_NOPREVIEW "No preview available."
|
||||||
IDS_PREVIEW "Preview" // Náhľad, Ukážka, Prezrieť ???
|
IDS_PREVIEW "Preview" // Náhľad, Ukážka, Prezrieť ???
|
||||||
/* Tooltips */
|
/* Tooltips */
|
||||||
IDS_TOOLTIP_NEXT_PIC "Nasledujúci obrázok"
|
IDS_TOOLTIP_NEXT_PIC "Nasledujúci obrázok"
|
||||||
|
|
|
@ -8,6 +8,7 @@ STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_APPTITLE "ReactOS Vëzhguesi i Fotove dhe Faxit"
|
IDS_APPTITLE "ReactOS Vëzhguesi i Fotove dhe Faxit"
|
||||||
IDS_SETASDESKBG "Vendos si Sfond Desktopi"
|
IDS_SETASDESKBG "Vendos si Sfond Desktopi"
|
||||||
|
IDS_NOPREVIEW "No preview available."
|
||||||
IDS_PREVIEW "Shikim Paraprak"
|
IDS_PREVIEW "Shikim Paraprak"
|
||||||
/* Tooltips */
|
/* Tooltips */
|
||||||
IDS_TOOLTIP_NEXT_PIC "Fotoja Tjetër"
|
IDS_TOOLTIP_NEXT_PIC "Fotoja Tjetër"
|
||||||
|
|
|
@ -6,6 +6,7 @@ STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_APPTITLE "ReactOS Resim ve Belgegeçer Görüntüleyicisi"
|
IDS_APPTITLE "ReactOS Resim ve Belgegeçer Görüntüleyicisi"
|
||||||
IDS_SETASDESKBG "Masaüstü Arka Planı Olarak Ayarla"
|
IDS_SETASDESKBG "Masaüstü Arka Planı Olarak Ayarla"
|
||||||
|
IDS_NOPREVIEW "No preview available."
|
||||||
IDS_PREVIEW "Ön İzleme"
|
IDS_PREVIEW "Ön İzleme"
|
||||||
/* Tooltips */
|
/* Tooltips */
|
||||||
IDS_TOOLTIP_NEXT_PIC "Sonraki Resim"
|
IDS_TOOLTIP_NEXT_PIC "Sonraki Resim"
|
||||||
|
|
|
@ -12,6 +12,7 @@ STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_APPTITLE "Програма перегляду зображень і факсів ReactOS"
|
IDS_APPTITLE "Програма перегляду зображень і факсів ReactOS"
|
||||||
IDS_SETASDESKBG "Встановити як фон робочого столу"
|
IDS_SETASDESKBG "Встановити як фон робочого столу"
|
||||||
|
IDS_NOPREVIEW "No preview available."
|
||||||
IDS_PREVIEW "Перегляд"
|
IDS_PREVIEW "Перегляд"
|
||||||
/* Tooltips */
|
/* Tooltips */
|
||||||
IDS_TOOLTIP_NEXT_PIC "Наступне зображення"
|
IDS_TOOLTIP_NEXT_PIC "Наступне зображення"
|
||||||
|
|
|
@ -7,6 +7,7 @@ STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_APPTITLE "ReactOS 图片和传真查看器"
|
IDS_APPTITLE "ReactOS 图片和传真查看器"
|
||||||
IDS_SETASDESKBG "设置为桌面背景"
|
IDS_SETASDESKBG "设置为桌面背景"
|
||||||
|
IDS_NOPREVIEW "No preview available."
|
||||||
IDS_PREVIEW "预览"
|
IDS_PREVIEW "预览"
|
||||||
/* Tooltips */
|
/* Tooltips */
|
||||||
IDS_TOOLTIP_NEXT_PIC "下一张图片"
|
IDS_TOOLTIP_NEXT_PIC "下一张图片"
|
||||||
|
|
|
@ -6,6 +6,7 @@ STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_APPTITLE "ReactOS 圖片和傳真檢視器"
|
IDS_APPTITLE "ReactOS 圖片和傳真檢視器"
|
||||||
IDS_SETASDESKBG "設定為桌面背景"
|
IDS_SETASDESKBG "設定為桌面背景"
|
||||||
|
IDS_NOPREVIEW "No preview available."
|
||||||
IDS_PREVIEW "預覽"
|
IDS_PREVIEW "預覽"
|
||||||
/* Tooltips */
|
/* Tooltips */
|
||||||
IDS_TOOLTIP_NEXT_PIC "下一張圖片"
|
IDS_TOOLTIP_NEXT_PIC "下一張圖片"
|
||||||
|
|
|
@ -38,6 +38,7 @@
|
||||||
/* Strings */
|
/* Strings */
|
||||||
#define IDS_APPTITLE 100
|
#define IDS_APPTITLE 100
|
||||||
#define IDS_SETASDESKBG 101
|
#define IDS_SETASDESKBG 101
|
||||||
|
#define IDS_NOPREVIEW 102
|
||||||
#define IDS_PREVIEW 550
|
#define IDS_PREVIEW 550
|
||||||
|
|
||||||
/* Friendly File Type Names */
|
/* Friendly File Type Names */
|
||||||
|
|
|
@ -37,7 +37,7 @@
|
||||||
HINSTANCE hInstance;
|
HINSTANCE hInstance;
|
||||||
SHIMGVW_SETTINGS shiSettings;
|
SHIMGVW_SETTINGS shiSettings;
|
||||||
SHIMGVW_FILENODE *currentFile;
|
SHIMGVW_FILENODE *currentFile;
|
||||||
GpImage *image;
|
GpImage *image = NULL;
|
||||||
WNDPROC PrevProc = NULL;
|
WNDPROC PrevProc = NULL;
|
||||||
|
|
||||||
HWND hDispWnd, hToolBar;
|
HWND hDispWnd, hToolBar;
|
||||||
|
@ -186,6 +186,9 @@ static void ZoomInOrOut(BOOL bZoomIn)
|
||||||
{
|
{
|
||||||
INT i;
|
INT i;
|
||||||
|
|
||||||
|
if (image == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
if (bZoomIn) /* zoom in */
|
if (bZoomIn) /* zoom in */
|
||||||
{
|
{
|
||||||
/* find next step */
|
/* find next step */
|
||||||
|
@ -237,6 +240,9 @@ static void ResetZoom(void)
|
||||||
RECT Rect;
|
RECT Rect;
|
||||||
UINT ImageWidth, ImageHeight;
|
UINT ImageWidth, ImageHeight;
|
||||||
|
|
||||||
|
if (image == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
/* get disp window size and image size */
|
/* get disp window size and image size */
|
||||||
GetClientRect(hDispWnd, &Rect);
|
GetClientRect(hDispWnd, &Rect);
|
||||||
GdipGetImageWidth(image, &ImageWidth);
|
GdipGetImageWidth(image, &ImageWidth);
|
||||||
|
@ -329,6 +335,9 @@ static void pSaveImageAs(HWND hwnd)
|
||||||
UINT j;
|
UINT j;
|
||||||
WCHAR *c;
|
WCHAR *c;
|
||||||
|
|
||||||
|
if (image == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
GdipGetImageEncodersSize(&num, &size);
|
GdipGetImageEncodersSize(&num, &size);
|
||||||
codecInfo = malloc(size);
|
codecInfo = malloc(size);
|
||||||
if (!codecInfo)
|
if (!codecInfo)
|
||||||
|
@ -421,32 +430,54 @@ static void pSaveImageAs(HWND hwnd)
|
||||||
free(codecInfo);
|
free(codecInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static VOID
|
||||||
|
pPrintImage(HWND hwnd)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
}
|
||||||
|
|
||||||
|
static VOID
|
||||||
|
EnableToolBarButtons(BOOL bEnable)
|
||||||
|
{
|
||||||
|
SendMessage(hToolBar, TB_ENABLEBUTTON, IDC_SAVE, bEnable);
|
||||||
|
SendMessage(hToolBar, TB_ENABLEBUTTON, IDC_PRINT, bEnable);
|
||||||
|
}
|
||||||
|
|
||||||
static VOID
|
static VOID
|
||||||
pLoadImageFromNode(SHIMGVW_FILENODE *node, HWND hwnd)
|
pLoadImageFromNode(SHIMGVW_FILENODE *node, HWND hwnd)
|
||||||
{
|
{
|
||||||
WCHAR szTitleBuf[800];
|
WCHAR szTitleBuf[800];
|
||||||
WCHAR szResStr[512];
|
WCHAR szResStr[512];
|
||||||
WCHAR *c;
|
LPWSTR pchFileTitle;
|
||||||
|
|
||||||
if (node)
|
if (image)
|
||||||
{
|
{
|
||||||
c = wcsrchr(node->FileName, '\\');
|
GdipDisposeImage(image);
|
||||||
if (c)
|
image = NULL;
|
||||||
{
|
|
||||||
c++;
|
|
||||||
}
|
|
||||||
|
|
||||||
LoadStringW(hInstance, IDS_APPTITLE, szResStr, ARRAYSIZE(szResStr));
|
|
||||||
StringCbPrintfW(szTitleBuf, sizeof(szTitleBuf), L"%ls%ls%ls", szResStr, L" - ", c);
|
|
||||||
SetWindowTextW(hwnd, szTitleBuf);
|
|
||||||
|
|
||||||
if (image)
|
|
||||||
{
|
|
||||||
GdipDisposeImage(image);
|
|
||||||
}
|
|
||||||
|
|
||||||
pLoadImage(node->FileName);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (node == NULL)
|
||||||
|
{
|
||||||
|
EnableToolBarButtons(FALSE);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
pLoadImage(node->FileName);
|
||||||
|
|
||||||
|
LoadStringW(hInstance, IDS_APPTITLE, szResStr, ARRAYSIZE(szResStr));
|
||||||
|
if (image != NULL)
|
||||||
|
{
|
||||||
|
pchFileTitle = PathFindFileNameW(node->FileName);
|
||||||
|
StringCbPrintfW(szTitleBuf, sizeof(szTitleBuf),
|
||||||
|
L"%ls%ls%ls", szResStr, L" - ", pchFileTitle);
|
||||||
|
SetWindowTextW(hwnd, szTitleBuf);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SetWindowTextW(hwnd, szResStr);
|
||||||
|
}
|
||||||
|
|
||||||
|
EnableToolBarButtons(image != NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static SHIMGVW_FILENODE*
|
static SHIMGVW_FILENODE*
|
||||||
|
@ -617,6 +648,8 @@ ImageView_DrawImage(HWND hwnd)
|
||||||
HBRUSH white;
|
HBRUSH white;
|
||||||
HGDIOBJ hbrOld;
|
HGDIOBJ hbrOld;
|
||||||
UINT uFlags;
|
UINT uFlags;
|
||||||
|
WCHAR szText[128];
|
||||||
|
HGDIOBJ hFontOld;
|
||||||
|
|
||||||
hdc = BeginPaint(hwnd, &ps);
|
hdc = BeginPaint(hwnd, &ps);
|
||||||
if (!hdc)
|
if (!hdc)
|
||||||
|
@ -632,18 +665,34 @@ ImageView_DrawImage(HWND hwnd)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
GdipGetImageWidth(image, &ImageWidth);
|
GetClientRect(hwnd, &rect);
|
||||||
GdipGetImageHeight(image, &ImageHeight);
|
white = GetStockObject(WHITE_BRUSH);
|
||||||
|
|
||||||
if (GetClientRect(hwnd, &rect))
|
if (image == NULL)
|
||||||
{
|
{
|
||||||
|
FillRect(hdc, &rect, white);
|
||||||
|
|
||||||
|
LoadStringW(hInstance, IDS_NOPREVIEW, szText, ARRAYSIZE(szText));
|
||||||
|
|
||||||
|
SetTextColor(hdc, RGB(0, 0, 0));
|
||||||
|
SetBkMode(hdc, TRANSPARENT);
|
||||||
|
|
||||||
|
hFontOld = SelectObject(hdc, GetStockObject(DEFAULT_GUI_FONT));
|
||||||
|
DrawTextW(hdc, szText, -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER |
|
||||||
|
DT_NOPREFIX);
|
||||||
|
SelectObject(hdc, hFontOld);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
GdipGetImageWidth(image, &ImageWidth);
|
||||||
|
GdipGetImageHeight(image, &ImageHeight);
|
||||||
|
|
||||||
ZoomedWidth = (ImageWidth * ZoomPercents) / 100;
|
ZoomedWidth = (ImageWidth * ZoomPercents) / 100;
|
||||||
ZoomedHeight = (ImageHeight * ZoomPercents) / 100;
|
ZoomedHeight = (ImageHeight * ZoomPercents) / 100;
|
||||||
|
|
||||||
x = (rect.right - ZoomedWidth) / 2;
|
x = (rect.right - ZoomedWidth) / 2;
|
||||||
y = (rect.bottom - ZoomedHeight) / 2;
|
y = (rect.bottom - ZoomedHeight) / 2;
|
||||||
|
|
||||||
white = GetStockObject(WHITE_BRUSH);
|
|
||||||
// Fill top part
|
// Fill top part
|
||||||
margin = rect;
|
margin = rect;
|
||||||
margin.bottom = y - 1;
|
margin.bottom = y - 1;
|
||||||
|
@ -903,46 +952,50 @@ ImageView_WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
|
||||||
currentFile = currentFile->Prev;
|
currentFile = currentFile->Prev;
|
||||||
pLoadImageFromNode(currentFile, hwnd);
|
pLoadImageFromNode(currentFile, hwnd);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IDC_NEXT:
|
case IDC_NEXT:
|
||||||
{
|
{
|
||||||
currentFile = currentFile->Next;
|
currentFile = currentFile->Next;
|
||||||
pLoadImageFromNode(currentFile, hwnd);
|
pLoadImageFromNode(currentFile, hwnd);
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
break;
|
|
||||||
case IDC_ZOOMP:
|
case IDC_ZOOMP:
|
||||||
{
|
|
||||||
ZoomInOrOut(TRUE);
|
ZoomInOrOut(TRUE);
|
||||||
}
|
break;
|
||||||
break;
|
|
||||||
case IDC_ZOOMM:
|
case IDC_ZOOMM:
|
||||||
{
|
|
||||||
ZoomInOrOut(FALSE);
|
ZoomInOrOut(FALSE);
|
||||||
}
|
break;
|
||||||
break;
|
|
||||||
case IDC_SAVE:
|
case IDC_SAVE:
|
||||||
pSaveImageAs(hwnd);
|
pSaveImageAs(hwnd);
|
||||||
|
break;
|
||||||
|
|
||||||
break;
|
|
||||||
case IDC_PRINT:
|
case IDC_PRINT:
|
||||||
|
pPrintImage(hwnd);
|
||||||
|
break;
|
||||||
|
|
||||||
break;
|
|
||||||
case IDC_ROT1:
|
case IDC_ROT1:
|
||||||
{
|
{
|
||||||
GdipImageRotateFlip(image, Rotate270FlipNone);
|
if (image)
|
||||||
ImageView_UpdateWindow(hwnd);
|
{
|
||||||
|
GdipImageRotateFlip(image, Rotate270FlipNone);
|
||||||
|
ImageView_UpdateWindow(hwnd);
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
|
||||||
case IDC_ROT2:
|
case IDC_ROT2:
|
||||||
{
|
{
|
||||||
GdipImageRotateFlip(image, Rotate90FlipNone);
|
if (image)
|
||||||
ImageView_UpdateWindow(hwnd);
|
{
|
||||||
|
GdipImageRotateFlip(image, Rotate90FlipNone);
|
||||||
|
ImageView_UpdateWindow(hwnd);
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -1106,7 +1159,10 @@ ImageView_CreateWindow(HWND hwnd, LPWSTR szFileName)
|
||||||
pFreeFileList(currentFile);
|
pFreeFileList(currentFile);
|
||||||
|
|
||||||
if (image)
|
if (image)
|
||||||
|
{
|
||||||
GdipDisposeImage(image);
|
GdipDisposeImage(image);
|
||||||
|
image = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
Anime_FreeInfo();
|
Anime_FreeInfo();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue