Asuntos Oficiales > Retos
Formato Bmp
Danielo:
Lo que pasa es que cuando se abre un fichero en C++ con fopen y el archivo tiene path, hay que abrirlo así :( :
--- Código: Text ---FILE* handle = fopen("D:\\path-name\\fichero.nnn", "r+b"); más info en: http://www.zator.com/Cpp/E5_5_2a.htm
JuanK:
<_< Antes de que me digan nada ya mire que ya esta disponible el compilador gms completo , de hecho esta comom opcion por defecto :huh:
Lo que pasa es que me da mucha pereza este cuento de linux, para evitarme la fatiga lo habia instalado desde synaptic pero al parecer no todos los paquetes que oferecn estan actualizadod... pero estoy bajando el binario a ver si esta noche hago el deber... lo que si ya esta confirmado es que monodevelop no soportara c# 2.0 hsta que no se libere la version 1.0 de monodevelop lo cual no se cuando sera... :whistling: asi que tendre que compilar por linea de comandos... y con la manotada de referencias que usé -_-
JuanK:
--- Cita de: "Danielo" --- Lo que pasa es que cuando se abre un fichero en C++ con fopen y el archivo tiene path, hay que abrirlo así :( :
--- Código: Text ---FILE* handle = fopen("D:\\path-name\\fichero.nnn", "r+b"); más info en: http://www.zator.com/Cpp/E5_5_2a.htm
--- Fin de la cita ---
sigo sin entender tu problema... es decir y que hay con eso. por eso no te puede fallar ;)
Danielo:
--- Cita de: "JuanK" ---
--- Cita de: "Danielo" --- Lo que pasa es que cuando se abre un fichero en C++ con fopen y el archivo tiene path, hay que abrirlo así :( :
--- Código: Text ---FILE* handle = fopen("D:\\path-name\\fichero.nnn", "r+b"); más info en: http://www.zator.com/Cpp/E5_5_2a.htm
--- Fin de la cita ---
sigo sin entender tu problema... es decir y que hay con eso. por eso no te puede fallar ;)
--- Fin de la cita ---
si no está fallando eso, el error debe estar por otro lado y me temo que es porque el procedimiento que muestra el bitmap en pantalla no puede recibir la ruta y el archivo a cargar:
--- Código: Text ---/* Esta función es invocada por la función DispatchMessage() */LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam){OPENFILENAME ofn; // common dialog box structurechar szFile[260]; // buffer for file nameHANDLE hf; // file handle // Initialize OPENFILENAMEZeroMemory(&ofn, sizeof(ofn));ofn.lStructSize = sizeof(ofn);ofn.hwndOwner = hwnd;ofn.lpstrFile = szFile;//// Set lpstrFile[0] to '\0' so that GetOpenFileName does not // use the contents of szFile to initialize itself.//ofn.lpstrFile[0] = '\0';ofn.nMaxFile = sizeof(szFile);ofn.lpstrFilter = "All\0*.*\0Text\0*.TXT\0";ofn.nFilterIndex = 1;ofn.lpstrFileTitle = NULL;ofn.nMaxFileTitle = 0;ofn.lpstrInitialDir = NULL;ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST; static HINSTANCE hInstance; // inicializo instancia... no si sirve para algo HDC hDC;PAINTSTRUCT ps; unsigned long x,y; switch (msg) /* manipulador del mensaje */ { case WM_COMMAND: switch(LOWORD(wParam)) { case CM_ABRIR: // Display the Open dialog box. if (GetOpenFileName(&ofn)==TRUE){ hf = CreateFile(ofn.lpstrFile, GENERIC_READ,0, (LPSECURITY_ATTRIBUTES) NULL,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,(HANDLE) NULL); MessageBox(hwnd, szFile, "Mensaje de prueba", MB_OK); // Muestra ruta del bitmap imagenBMP *bmp=CargarBitmapArchivo(szFile); hDC = BeginPaint(hwnd, &ps); for(y =0;y< getAltoBitmap(bmp); y++){ for(x = 0; x < getAnchoBitmap(bmp); x++) SetPixelV(hDC,x,y,getPixelMatrizBMP(y,x,bmp)); } EndPaint(hwnd, &ps); } break; case CM_SALIR: PostQuitMessage(0); /* envía un mensaje WM_QUIT a la cola de mensajes */ break; } break; case WM_DESTROY: PostQuitMessage(0); /* envía un mensaje WM_QUIT a la cola de mensajes */ break; default: /* para los mensajes de los que no nos ocupamos */ return DefWindowProc(hwnd, msg, wParam, lParam); } return 0;} Mi programa, tiene un menú sencillo que por ahora solo tiene la opción de Abrir y Salir, entonces, cuando selecciono Abrir se ejecuta GetOpenFileName y obtengo la ruta y nombre del bitmap a mostrar en pantalla, luego veo la ruta con un messagebox y se ve correctamente.
El problema tal vez viene en el paso siguiente ya que me sale un mensaje que dice:
"se ha detectado un problema y debe cerrarse"
Aparentemente lo que pasa es que salta el error cuando se procesa:
imagenBMP *bmp=CargarBitmapArchivo(szFile);
Esta función lo que hace es leer los datos del bitmap y funciona bien porque la he probado, es por eso que en un principio pensé que el path y el archivo que vienen en szFile no estaban siendo bien interpretados por fopen (función que se encuentra detro de CargarBitmapArchivo.
Tal vez no es dentro del case CM_ABRIR que tengo que escribir el codigo de mostrar el bitmap en pantalla, no lo se. He intentado escribir ese mismo código en el case CM_PAINT y tampoco funciona bien :(
Geo:
--- Cita de: "JuanK" --- Saludos,
con motivo que Geo me envio su programa con WxWidgets y C++ y me lo paso en versiones linux y windows y funciono OK, me propuse a revisar mejor lo del proyecto Mono asi que trate de ejecutar mis 2 proyectos del reto hechos en C# en un linux ubunto y no me funciono :'(...
la razon resulta que el runtime de mono en el momento solo soporta hasta C# 1.1, el soporte para C# 2.0 aun no esta completo y desde luego mis programas se compilaron con C# 2.0.
Asi que decidi instalar el monodevelop en linux ubuntu , cree un proyecto con mis fuentes de la libreria que hice y la compile... compilo perfecto!!! :lol:
Despues procedi a compilar los dos proyectos que hice para el reto, el extra y el de la entrega, el Extra compilo perfecto y funciono perfecto , pero el del reto no porque utiliza cosas de C# 2.0, pude haber instalado el gmcs ( el compilador de mono para c# 2.0) pero no porque eso implicaria invertirle mas tiempo, sin embargo vi la documentacion y verifique que el unico error por el que no compilabara ya esta soportado en C# 2.0 para mono.
Lo mas interesante fue que coji mi libreria y el aplicativo compilado en linux ubuntu con C#1.1 y me lleve el ejecutable tal como se genero en linux y me funciono en windosw XP sin hacerle nada :o ya que al tener en windows XP instalado el runtime del .net framework 2.0 tengo soporte para todas las versiones anteriores de c# :D.
Hice la prueba invertida, busque en mi pc algunos proyecto antiguos que tenia de C# 1.1 , un hola mundo y otra aplicacion de consola, y me lleve los exe tal cual a linux ubuntu... funcionaron de inmediadto... de maravilla :lol:
--- Fin de la cita ---
Jeje, se me olvidó comentarte :P. Cuando me pasaste tu código, lo compilé en Ubuntu instalando monodevelop, la librería compiló sin muchos problemas, el problema fué cuando intenté con tu aplicación principal, chequé documentación y versiones, no recuerdo si era algo con Windows.Forms (y también con las características del 2.0), así que ya no le busqué (te repito, no sé C# aunque poco a poco me voy metiendo :D).
Es muy común que en los repositorios no cuentes con las últimas versiones de algún programa/librería, ya que pasan por un proceso de "candidato->estable", aunque hasta ahora desconozco el proceso real de integración de un paquete a Ubuntu y a Debian.
Lo de tu ejecutable que funciona en Windows, era una de las cosas que me preguntaba pues, cuando compilé con mono, vi que le agrega la extensión .exe a los programas, chequé el formato del ejecutable resultante y dice ¡ejecutable de Windows :blink:!
Saludos,
JJ (Geo).
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa