gflLoadBitmap return error

Discussions on GFL SDK, the graphic library for reading and writing graphic files

Moderators: XnTriq, xnview

Post Reply
Loginanton
Posts: 1
Joined: Sat Nov 21, 2009 4:07 am

gflLoadBitmap return error

Post by Loginanton » Sat Nov 21, 2009 4:15 am

Hi. Function gflLoadBitmap return GFL_ERROR_FILE_OPEN. Please help me find error. Code:
main.cpp:

Code: Select all

#include <windows.h>
#include "libgfl.h"
#include "libgfle.h"
#include "main.h"
/* глобальные переменные */
HINSTANCE h; // хендл программы
HWND hw; // хендл главного окна программы
GFL_BITMAP *img = NULL; // картинка
/* WinMain */
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int)
{
	h = GetModuleHandle(0);
	hw = CreateMainWindow(h,"ImgView"); // создали интерфейс
	/* цикл обработки сообщений */
	if(gflLibraryInit()) // инициализация библиотеки
		MessageBox(0,"Error","Error",MB_OK);
	MSG msg;
	while(GetMessage(&msg,0,0,0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hw,UINT msg,WPARAM wp, LPARAM lp)
{
	switch(msg)
	{
	 case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	 case WM_COMMAND:
		switch(LOWORD(wp))
		{
		 case IDM_EXIT:
			SendMessage(hw,WM_DESTROY,wp,lp);
			return 0;
		 case IDM_OPEN:
			OpenImage(hw, img);
			return 0;
		}
	}
	return DefWindowProc(hw,msg,wp,lp);
}
main.h:

Code: Select all

#define IDM_OPEN 0
#define IDM_EXIT 1

/* прототипы функций */
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);

void CreateClass(HINSTANCE h,char * clname)
{
	WNDCLASSEX wc;
	memset(&wc,0,sizeof(WNDCLASSEX)); // забили нулями структуру
	wc.cbSize = sizeof(WNDCLASSEX);
	wc.lpfnWndProc = WndProc;
	wc.hInstance = h;
	wc.hCursor = LoadCursor(0,IDC_ARROW);
	wc.hbrBackground = (HBRUSH)COLOR_BACKGROUND;
	wc.lpszClassName = clname;
	RegisterClassEx(&wc); // создали класс окна программы
}

HWND CreateMainWindow(HINSTANCE h,char * title)
{
	CreateClass(h,"ImgViewClass");
	return CreateWindowEx
	(
		0, // расширенные стили
		"ImgViewClass", // имя класса окна
		title, // заголовок окна
		WS_OVERLAPPEDWINDOW|WS_VISIBLE, // стили окна
		CW_USEDEFAULT, // x
		CW_USEDEFAULT, // y
		CW_USEDEFAULT, // ширина
		CW_USEDEFAULT, // высота
		0, // хендл родителя
		LoadMenu(h,"ImgViewMenu"), // хендл меню
		h, // хендл программы, чьё окно
		0 // сферический нолик в вакуме
	);
}

LPSTR OpenFileName(HWND hw)
{
	OPENFILENAME ofn;
	char szFile[260];
	ZeroMemory(&ofn, sizeof(ofn));
	ofn.lStructSize = sizeof(ofn);
	ofn.hwndOwner = hw;
	ofn.lpstrFile = szFile;
	ofn.lpstrFile[0] = '\0';
	ofn.nMaxFile = sizeof(szFile);
	ofn.lpstrFilter = "JPEG\0*.jpg\0GIF\0*.gif\0PNG\0*.png\0BMP\0*.bmp";
	ofn.nFilterIndex = 1;
	ofn.lpstrFileTitle = NULL;
	ofn.nMaxFileTitle = 0;
	ofn.lpstrInitialDir = NULL;
	ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
	if(GetOpenFileName(&ofn))
	{
		return ofn.lpstrFile;
	}
	else
	{
		return 0;
	}
}

void OpenImage(HWND hw,GFL_BITMAP * img)
{
	if(img)
		gflFreeBitmap(img);
	GFL_LOAD_PARAMS params;
	gflGetDefaultLoadParams(&params); // устанавливаем параметры в стандартные
	LPSTR str = OpenFileName(hw);
	if(str)
	{
		MessageBox(0,gflGetErrorString(gflLoadBitmap(str,&img,&params,0)),"Error",MB_OK);
	}
}
main.rc:

Code: Select all

#include "main.h"

ImgViewMenu MENU
{
MENUITEM "&Open", IDM_OPEN
MENUITEM "&Exit", IDM_EXIT
}
I use VS 2008

User avatar
xnview
Author of XnView
Posts: 31891
Joined: Mon Oct 13, 2003 7:31 am
Location: France
Contact:

Re: gflLoadBitmap return error

Post by xnview » Mon Nov 23, 2009 7:52 am

You don't have gflLibraryInit or Exit
Pierre.

Post Reply