Saludos amigos de la lista<br><br>si pueden aclarar mi duda les agradeceré mucho<br><br>se trata de remove y tampoco funcionó con DeleteFile<br><br>el caso de esta función es que debe eliminar un archivo, y veo que lo hace bien al menos con un programa mínimo como este:<br>
<br style="background-color: rgb(255, 255, 255); color: rgb(0, 153, 0);"><span style="background-color: rgb(255, 255, 255); color: rgb(0, 102, 0);">#include <span style=""></span><iostream></span><br style="background-color: rgb(255, 255, 255); color: rgb(0, 102, 0);">
<span style="background-color: rgb(255, 255, 255); color: rgb(0, 102, 0);">#include <stdio.h></span><br style="background-color: rgb(255, 255, 255); color: rgb(0, 102, 0);"><span style="background-color: rgb(255, 255, 255); color: rgb(0, 102, 0);">#include <windows.h></span><br>
<br><b style="color: rgb(102, 0, 0);">using namespace</b> std;<br><br><b><span style="color: rgb(102, 0, 0);">int</span></b> main(int argc, <b><span style="color: rgb(102, 0, 0);">char</span></b> *argv[])<br>{<br> FILE *archivo;<br>
archivo = fopen(<span style="color: rgb(255, 0, 0);">"archivo.tmp"</span>,<span style="color: rgb(255, 0, 0);">"w"</span>);<br> fclose(archivo);<br> system(<span style="color: rgb(255, 0, 0);">"PAUSE"</span>);<br>
remove(<span style="color: rgb(255, 0, 0);">"archivo.tmp"</span>);<br><b style="color: rgb(102, 0, 0);"> return</b> EXIT_SUCCESS;<br>}<br><br>pero en mi programa completo el archivo se queda al cerrar el programa no da error de compilación pero no hace lo que debe<br>
<br>como no tengo idea del error copio completo el programa si quieren ver los otros archivos del programa avisen por favor llevo siglos en esto<br><br>#include <windows.h><br>#include <ctype.h><br>#include "lista.h"<br>
#include <stdio.h><br>#include "ids.h"<br>#include <iostream><br><br><br><br><br><br>//*************Prototipos*******************<br>LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);<br>BOOL CALLBACK DlgProc(HWND,UINT,WPARAM,LPARAM);<br>
BOOL CALLBACK DlgProc2(HWND,UINT,WPARAM,LPARAM);<br>int CreateStatic(HINSTANCE,HWND,HWND,int,int,int,int,LPSTR);<br>int CreateEdit(HINSTANCE,HWND,HWND,int,int,int,int,int,LPSTR);<br>int CreateEditVert(HINSTANCE,HWND,HWND,int,int,int,int,int,LPSTR);<br>
int CreateButton(HINSTANCE,HWND,HWND,int,int,int,int,int,LPSTR);<br>int MuestraFicha(HWND,FICHA*,Lista*);<br><br>//**************Función Principal***********<br>int WINAPI WinMain( HINSTANCE hInstance,<br> HINSTANCE hPrevInstance,<br>
LPSTR lpszArgument,<br> int nArgument)<br>{<br> //************ Declaración de variables **************<br> HWND hwnd; //manejador de ventana<br> MSG mensaje;<br> WNDCLASSEX wincl;<br>
<br> <br> /************ Inicialización de la clase *************/<br> wincl.hInstance = hInstance;<br> wincl.lpszClassName = "MiClase";<br> wincl.lpfnWndProc = WndProc;<br> wincl.style = CS_DBLCLKS;<br>
wincl.cbSize = sizeof(WNDCLASSEX);<br> <br> /************** Icono y puntero por defecto *********/<br> wincl.hIcon = LoadIcon(hInstance,MAKEINTRESOURCE(ID_ICONO));<br> wincl.hIconSm = LoadIcon(hInstance,MAKEINTRESOURCE(ID_SMICONO));<br>
wincl.hCursor = LoadCursor(NULL, IDC_ARROW);<br> wincl.lpszMenuName = "Menu1";<br> wincl.cbClsExtra = 0;<br> wincl.cbWndExtra = 0;<br> wincl.hbrBackground = (HBRUSH)CreateSolidBrush(RGB(0,155,255));<br>
<br> <br> <br> //************** Registrar la clase *****************/<br> if(!RegisterClassEx(&wincl))<br> return 0;<br> <br> //*************** Crear la ventana ********************/<br> hwnd = CreateWindowEx(<br>
0, /* Extended possibilites for variation */<br> "MiClase", /* Classname */<br> "Agenda ver 0.6", /* Title Text */<br> WS_OVERLAPPEDWINDOW, /* default window */<br>
CW_USEDEFAULT, /* Windows decides the position */<br> CW_USEDEFAULT, /* where the window ends up on the screen */<br> 395, /* The programs width */<br> 365, /* and height in pixels */<br>
HWND_DESKTOP, /* The window is a child-window to desktop */<br> NULL, /* No menu */<br> hInstance, /* Program Instance handler */<br> NULL /* No Window Creation data */<br>
);<br> <br><br> //************** evita ejecutar mas de una instancia*******************/<br> FILE *temp;<br> char letra;<br><br> if(temp = fopen("temporal.agn","r"))<br> {<br>
fclose(temp);<br> MessageBox(hwnd,"Ya se está ejecutando el programa.\n","",MB_OK);<br> return 0;<br> }<br> else<br> {<br> temp = fopen("temporal.agn","w");<br>
};<br>//****************************************************************************<br> //***************** Muestra la ventana *****************/<br>ShowWindow(hwnd,1);<br> <br> //******************** Bucle de la aplicación *************/<br>
while(true == GetMessage(&mensaje,NULL,0,0))<br> {<br> TranslateMessage(&mensaje);<br> DispatchMessage(&mensaje);<br> }<br> return mensaje.wParam;<br>}<br>///////////////////////////////////////////////////////////////////////////////<br>
//************** definición de funciones ********************************<br>///////////////////////////////////////////////////////////////////////////////<br>LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)<br>
{<br> #include "variables.h"<br> <br> switch(msg)<br> {<br> case WM_CREATE:<br><br> hInst = ((LPCREATESTRUCT)lParam)->hInstance;<br> CreateStatic(hInst,hwnd,<br> hwndStatic1, 10,5,120,25,"Nombre:");<br>
CreateStatic(hInst,hwnd,<br> hwndStatic2, 10,35,120,25,"Apellido:");<br> CreateStatic(hInst,hwnd,<br> hwndStatic3, 10,65,120,25,"Teléfono 1:");<br>
CreateStatic(hInst,hwnd,<br> hwndStatic4, 10,95,120,25,"Teléfono 2:");<br> CreateStatic(hInst,hwnd,<br> hwndStatic5, 10,125,120,25,"Celular 1:");<br>
CreateStatic(hInst,hwnd,<br> hwndStatic6, 10,155,120,25,"Celular 2:");<br> CreateStatic(hInst,hwnd,<br> hwndStatic7, 10,185,120,25,"Observaciones:");<br>
<br> CreateEdit(hInst,hwnd,<br> hwndEdit1,NOMBRE, 150,5,190,25,"");<br> <br> CreateEdit(hInst,hwnd,<br> hwndEdit1,APELLIDO, 150,35,190,25,"");<br>
<br> CreateEdit(hInst,hwnd,<br> hwndEdit1,TELEFONO1, 150,65,190,25,"");<br> CreateEdit(hInst,hwnd,<br> hwndEdit1,TELEFONO2, 150,95,190,25,"");<br>
CreateEdit(hInst,hwnd,<br> hwndEdit1,CELULAR1, 150,125,190,25,"");<br> CreateEdit(hInst,hwnd,<br> hwndEdit1,CELULAR2, 150,155,190,25,"");<br>
CreateEditVert(hInst,hwnd,<br> hwndEdit1,OBSERVACIONES, 150,185,190,80,"");<br> SendDlgItemMessage(hwnd, ID_TXTNOMBRE, EM_LIMITTEXT, 20, 0L);<br> SendDlgItemMessage(hwnd, ID_TXTAPELLIDO, EM_LIMITTEXT, 20, 0L);<br>
SendDlgItemMessage(hwnd, ID_TXTTELEFONO1, EM_LIMITTEXT, 20, 0L);<br> SendDlgItemMessage(hwnd, ID_TXTTELEFONO2, EM_LIMITTEXT, 20, 0L);<br> SendDlgItemMessage(hwnd, ID_TXTCELULAR1, EM_LIMITTEXT, 20, 0L);<br>
SendDlgItemMessage(hwnd, ID_TXTCELULAR2, EM_LIMITTEXT, 20, 0L);<br> SendDlgItemMessage(hwnd, ID_TXTOBSERVACIONES, EM_LIMITTEXT, 255, 0L);<br> <br><br> CreateButton(hInst,hwnd,<br>
hwndButton1,110,270,100,30,CM_SIGUIENTE,"Siguiente >>");<br> CreateButton(hInst, hwnd,<br> hwndButton2, 10,270,100,30,CM_ANTERIOR,"<< Anterior");<br>
CreateButton(hInst,hwnd,<br> hwndButton1,210,270,80,30,CM_ELIMINAR,"Eliminar");<br> CreateButton(hInst,hwnd,<br> hwndButton1,290,270,80,30,CM_IRA,"Ir a...");<br>
<br><br> if (!lista.Carga())<br> {<br> MessageBox(hwnd,"No hay datos.\n"<br> "Debe crear al menos una ficha",<br> "No Existe el fichero",<br>
MB_OK);<br> DialogBoxParam(hInst,"FichaNueva", hwnd,<br> DlgProc, (LPARAM) &ficha);<br> lista.SetFicha(ficha.nombre,NOMBRE);<br>
lista.SetFicha(ficha.apellido,APELLIDO);<br> lista.SetFicha(ficha.telefono1,TELEFONO1);<br> lista.SetFicha(ficha.telefono2,TELEFONO2);<br> lista.SetFicha(ficha.celular1,CELULAR1);<br>
lista.SetFicha(ficha.celular2,CELULAR2);<br> lista.SetFicha(ficha.observaciones,OBSERVACIONES);<br> if (!strcmp(ficha.nombre,""))<br> {<br>
MessageBox(hwnd,"Debe introducir datos","",MB_OK);<br> PostQuitMessage(0);<br> }<br> lista.PushFicha();<br>
}<br><br> MuestraFicha(hwnd,&ficha,&lista);<br> pincel = CreateSolidBrush(RGB(0,155,255));<br> case WM_CTLCOLORSTATIC:<br> SetTextColor((HDC)wParam, RGB(0,0,0));<br>
SetBkColor((HDC)wParam,RGB(0,155,255));<br> return (LRESULT)pincel;<br> case WM_COMMAND:<br> switch(LOWORD(wParam))<br> {<br> case CM_NUEVA:<br>
strcpy(ficha.nombre,"");<br> strcpy(ficha.apellido,"");<br> strcpy(ficha.telefono1,"");<br> strcpy(ficha.telefono2,"");<br>
strcpy(ficha.celular1,"");<br> strcpy(ficha.celular2,"");<br> strcpy(ficha.observaciones,"");<br> DialogBoxParam(hInst,"FichaNueva", hwnd,<br>
DlgProc, (LPARAM) &ficha);<br> if (strcmp(ficha.nombre,"")!=0)<br> {<br> lista.SetFicha(ficha.nombre,NOMBRE);<br> lista.SetFicha(ficha.apellido,APELLIDO);<br>
lista.SetFicha(ficha.telefono1,TELEFONO1);<br> lista.SetFicha(ficha.telefono2,TELEFONO2);<br> lista.SetFicha(ficha.celular1,CELULAR1);<br> lista.SetFicha(ficha.celular2,CELULAR2);<br>
lista.SetFicha(ficha.observaciones,OBSERVACIONES);<br> lista.PushFicha();}<br> MuestraFicha(hwnd,&ficha,&lista);<br> break;<br>
case CM_SIGUIENTE:<br> /* Actualiza la vista con la ficha siguiente*/<br> if (!lista.Siguiente())<br> MessageBox(hwnd,"Última Ficha","",MB_OK);<br>
MuestraFicha(hwnd,&ficha,&lista);<br> break;<br> case CM_ANTERIOR:<br> /* Actualiza la vista con la ficha anterior*/<br> if (!lista.Anterior())<br>
MessageBox(hwnd,"Primera Ficha","",MB_OK);<br> MuestraFicha(hwnd,&ficha,&lista);<br> break;<br> case CM_ELIMINAR:<br>
if(MessageBox(hwnd,"Esto eliminara la ficha actual"<br> ,"ELIMINAR FICHA",MB_YESNO)== IDYES)<br> lista.PullFicha();<br>
if (lista.Existe())<br> MuestraFicha(hwnd,&ficha,&lista);<br> else<br> {<br> MessageBox(hwnd,"Debe existir al menos"<br>
"una ficha.",<br> "Error.",MB_ICONSTOP);<br> lista.GetFicha(ficha.nombre,8);<br>
lista.GetFicha(ficha.apellido,9);<br> lista.GetFicha(ficha.telefono1,10);<br> lista.GetFicha(ficha.telefono2,11);<br> lista.GetFicha(ficha.celular1,12);<br>
lista.GetFicha(ficha.celular2,13);<br> lista.GetFicha(ficha.observaciones,14);<br> ficha.siguiente = NULL;<br> lista.PushFicha();<br>
MessageBox(hwnd,"La ficha no fue"<br> " eliminada.",<br> "...",MB_OK);<br>
};<br> break;<br> case CM_IRA:<br> //Para futuras versiones :-)<br> MessageBox(hwnd,"Esta función no está disponible",<br>
"Ok",MB_ICONEXCLAMATION);<br> break;<br> case CM_BUSCARN:<br> /* Abre una cuadro de dialogo para obtener una<br>
clave de busqueda (el nombre) */<br> DialogBoxParam(hInst,"BusquedaN", hwnd, DlgProc2,<br> (LPARAM) &ficha);<br> //si se escribió algo lo busca<br>
if (strcmp(ficha.nombre,"")!=0)<br> {<br> if (lista.Busca(ficha.nombre,1))<br> MuestraFicha(hwnd,&ficha,&lista);<br>
else<br> {<br> /* char mensaje[50];<br> sprintf(mensaje,"No se puede encontrar \n"<br> "\" %s \"",ficha.nombre);<br>
MessageBox(hwnd,mensaje,"Búsqueda",<br> MB_ICONEXCLAMATION); */<br> lista.Ira(ficha.nombre,1);<br> MuestraFicha(hwnd,&ficha,&lista);<br>
}<br> }<br> break;<br> case CM_BUSCARA:<br> /* Abre una cuadro de dialogo para obtener una<br>
clave de busqueda (el apellido) */<br> DialogBoxParam(hInst,"BusquedaN", hwnd, DlgProc2,<br> (LPARAM) &ficha);<br> //si se escribió algo lo busca<br>
if (strcmp(ficha.nombre,"")!=0)<br> {<br> if (lista.Busca(ficha.nombre,2))<br> MuestraFicha(hwnd,&ficha,&lista);<br>
else// si lo encuentra lo muestra si no avisa<br> {<br> char mensaje[50];<br> sprintf(mensaje,"No se puede encontrar \n"<br>
"\" %s \"",ficha.nombre);<br> MessageBox(hwnd,mensaje,"Búsqueda",<br> MB_ICONEXCLAMATION);<br>
lista.Ira(ficha.nombre,0);<br> }<br> }<br> break;<br> case CM_MODIFICAR:<br> //envia la ficha actual al procedimiento dlg<br>
lista.GetFicha(ficha.nombre,NOMBRE);<br> lista.GetFicha(ficha.apellido,APELLIDO);<br> lista.GetFicha(ficha.telefono1,TELEFONO1);<br> lista.GetFicha(ficha.telefono2,TELEFONO2);<br>
lista.GetFicha(ficha.celular1,CELULAR1);<br> lista.GetFicha(ficha.celular2,CELULAR2);<br> lista.GetFicha(ficha.observaciones,OBSERVACIONES);<br> lista.PullFicha();<br>
lista.Ultima();<br> DialogBoxParam(hInst,"ModificarFicha",hwnd,<br> DlgProc, (LPARAM) &ficha);<br> lista.SetFicha(ficha.nombre,NOMBRE);<br>
lista.SetFicha(ficha.apellido,APELLIDO);<br> lista.SetFicha(ficha.telefono1,TELEFONO1);<br> lista.SetFicha(ficha.telefono2,TELEFONO2);<br> lista.SetFicha(ficha.celular1,CELULAR1);<br>
lista.SetFicha(ficha.celular2,CELULAR2);<br> lista.SetFicha(ficha.observaciones,OBSERVACIONES);<br> lista.PushFicha();<br> MuestraFicha(hwnd,&ficha,&lista);<br>
break;<br> <br> case CM_SALIR:<br> //Guardar los cambios en el archivo<br> <span style="color: rgb(255, 0, 0);">remove("temporal.agn");</span><br>
lista.Guarda();<br> DeleteObject(pincel);<br> PostQuitMessage(0);<br> break;<br> }<br> break;<br>
case WM_DESTROY:<br> <span style="color: rgb(255, 0, 0);"> remove("temporal.agn");</span><br> lista.Guarda();<br> DeleteObject(pincel);<br> PostQuitMessage(0);<br>
break;<br> default:<br> return DefWindowProc(hwnd, msg, wParam, lParam);<br> }<br> return 0;<br> }<br> <br>/********************* ProcedimientoS Para crear los controles ***************/<br>
int CreateStatic(HINSTANCE hInst,<br> HWND hwndPadre,<br> HWND hwndHija, int x,int y, int width, int height,LPSTR texto)<br>{<br> hwndHija = CreateWindowEx<br> (0,<br> "STATIC",<br>
texto,<br> SS_LEFT | WS_CHILD| WS_VISIBLE ,<br> x,<br> y,<br> width,<br> height,<br> hwndPadre,<br> NULL,<br> hInst,<br> NULL );<br>return 0;<br> };<br> <br>int CreateEdit(HINSTANCE hInst,<br>
HWND hwndPadre,<br> HWND hwndHija,<br> int ID,<br> int x,int y, int width, int height,LPSTR texto)<br>{<br> hwndHija = CreateWindowEx<br> (WS_EX_CLIENTEDGE | WS_EX_CONTROLPARENT,<br>
"EDIT",<br> "",<br> ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER |WS_TABSTOP,//| ES_READONLY,<br> x,<br> y,<br> width,<br> height,<br> hwndPadre,<br> (HMENU) ID,<br> hInst,<br>
NULL);<br><br>return 0;<br> };<br><br>int CreateEditVert(HINSTANCE hInst,<br> HWND hwndPadre,<br> HWND hwndHija,<br> int ID,<br> int x,int y, int width, int height,LPSTR texto)<br>
{<br> hwndHija = CreateWindowEx<br> (WS_EX_CLIENTEDGE,<br> "EDIT",<br> "",<br> ES_LEFT | ES_MULTILINE | WS_CHILD | WS_VISIBLE<br> |WS_BORDER | WS_TABSTOP| WS_VSCROLL,//| ES_READONLY,<br>
x,<br> y,<br> width,<br> height,<br> hwndPadre,<br> (HMENU) ID,<br> hInst,<br> NULL);<br>return 0;<br> };<br> <br>int CreateButton(HINSTANCE hInst,<br> HWND hwndPadre,<br> HWND hwndHija,<br>
int x,int y, int width, int height,int idCMD, LPSTR texto)<br>{<br> hwndHija = CreateWindowEx<br> (WS_EX_CLIENTEDGE,<br> "BUTTON",<br> texto,<br> BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP,<br>
x,<br> y,<br> width,<br> height,<br> hwndPadre,<br> (HMENU) idCMD,<br> hInst,<br> NULL);<br>return 0;<br> };<br><br><br>//******************** Procedimiento de Dialogo ******************************<br>
//***********************para añadir y modificar fichas **********************<br>BOOL CALLBACK DlgProc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam)<br>{<br>static FICHA *ficha;<br><br><br> switch (msg) // manipulador del mensaje<br>
{<br> case WM_INITDIALOG:<br> SendDlgItemMessage(hdlg, ID_TXTNOMBRE, EM_LIMITTEXT, 20, 0L);<br> SendDlgItemMessage(hdlg, ID_TXTAPELLIDO, EM_LIMITTEXT, 20, 0L);<br> SendDlgItemMessage(hdlg, ID_TXTTELEFONO1, EM_LIMITTEXT, 20, 0L);<br>
SendDlgItemMessage(hdlg, ID_TXTTELEFONO2, EM_LIMITTEXT, 20, 0L);<br> SendDlgItemMessage(hdlg, ID_TXTCELULAR1, EM_LIMITTEXT, 20, 0L);<br> SendDlgItemMessage(hdlg, ID_TXTCELULAR2, EM_LIMITTEXT, 20, 0L);<br>
SendDlgItemMessage(hdlg, ID_TXTOBSERVACIONES, EM_LIMITTEXT, 255, 0L);<br> ficha = (FICHA*) lParam;<br> SetDlgItemText(hdlg, ID_TXTNOMBRE, ficha->nombre);<br> SetDlgItemText(hdlg, ID_TXTAPELLIDO, ficha->apellido);<br>
SetDlgItemText(hdlg, ID_TXTTELEFONO1, ficha->telefono1);<br> SetDlgItemText(hdlg, ID_TXTTELEFONO2, ficha->telefono2);<br> SetDlgItemText(hdlg, ID_TXTCELULAR1, ficha->celular1);<br>
SetDlgItemText(hdlg, ID_TXTCELULAR2, ficha->celular2);<br> SetDlgItemText(hdlg, ID_TXTOBSERVACIONES, ficha->observaciones);<br> SetFocus(GetDlgItem(hdlg, ID_TXTNOMBRE));<br>
return FALSE;<br> case WM_COMMAND:<br> switch(LOWORD(wParam))<br> {<br> case IDOK:<br> GetDlgItemText(hdlg, ID_TXTNOMBRE, ficha->nombre, 20);<br>
GetDlgItemText(hdlg, ID_TXTAPELLIDO, ficha->apellido, 20);<br> GetDlgItemText(hdlg, ID_TXTTELEFONO1, ficha->telefono1, 20);<br> GetDlgItemText(hdlg, ID_TXTTELEFONO2, ficha->telefono2, 20);<br>
GetDlgItemText(hdlg, ID_TXTCELULAR1, ficha->celular1, 20);<br> GetDlgItemText(hdlg, ID_TXTCELULAR2, ficha->celular2, 20);<br> GetDlgItemText(hdlg, ID_TXTOBSERVACIONES, ficha->observaciones, 255);<br>
EndDialog(hdlg, FALSE);<br><br> break;<br> case IDCANCEL:<br> EndDialog(hdlg, FALSE);<br><br> break;<br>
} return TRUE;<br> } return FALSE;<br>};<br><br>//******************** Procedimiento de Dialogo 2******************************<br>//******************** Para el dialogo de búsqued *****************************<br>
BOOL CALLBACK DlgProc2(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam)<br>{<br>static FICHA *ficha;<br><br><br> switch (msg) // manipulador del mensaje<br> {<br> case WM_INITDIALOG:<br> SendDlgItemMessage(hdlg, ID_TXTNOMBRE, EM_LIMITTEXT, 20, 0L);<br>
ficha = (FICHA*) lParam;<br> strcpy(ficha->nombre,"");<br> SetFocus(GetDlgItem(hdlg, ID_TXTNOMBRE));<br> return FALSE;<br> case WM_COMMAND:<br>
switch(LOWORD(wParam))<br> {<br> case IDOK:<br> GetDlgItemText(hdlg, ID_TXTNOMBRE, ficha->nombre, 20);<br> EndDialog(hdlg, FALSE);<br>
break;<br> case IDCANCEL:<br> EndDialog(hdlg, FALSE);<br> break;<br> } return TRUE;<br> } return FALSE;<br>
}<br><br>//////////////////////////////////////////////////////////////////////////////<br>int MuestraFicha(HWND hwnd,FICHA* ficha,Lista* lista)<br>{<br> int i;<br> for(i=1; i < 8 ; i++)<br> {<br> lista->GetFicha(ficha->nombre,i);<br>
SetDlgItemText(hwnd,i,ficha->nombre);<br> };<br> };<br><br><br>