Texto que muestra el código fuente
Página principal
#Definir CM_FILE_SAVEAS 9072
#Definir CM_FILE_EXIT 9071
#Definir CM_FILE_OPEN 9070 p>
#Definición CM _Acerca de 9069
//Archivo de programa principal//
Sitio web principal
/******** * ********************************************/
# include & ltwindows.h & gt
#Notas varias hdrstop
#Include "Main.h"
carácter estático g _ nombre de clase SZ [ ]= " mywindow class ";
HINSTANCE estático g_hInst = NULL
# define IDC_MAIN_TEXT 1001
BOOL cargar archivo (HWND hEdit, LPSTR pszFileName)
{
Procesando hFile
BOOL bSuccess = FALSE
hFile = CreateFile(pszFileName, GENERIC_READ, FILE_SHARE_READ, NULL,
OPEN_EXISTING, 0, 0);
if (hFile! = valor de identificador no válido)
{
DWORD dwFileSize
p>dwFileSize = GetFileSize(hFile, NULL);
if(dwFileSize!= 0xFFFFFFFF)
{
LPSTR pszFileText
pszFileText =( LPSTR)asignación global(GPTR,dw tamaño de archivo+1);
if(pszFileText!=null)
{
DWORD dwRead
if(ReadFile(hFile, pszFileText, dwFileSize, & ampdwRead, NULL))
{
pszFileText[dw tamaño de archivo]= 0 // Terminador nulo
if(SetWindowText(hEdit, pszFileText))
b éxito = true //¡Éxito!
}
global libre(pszFileText);
}
}
cerrar identificador(hFile);
}
Devuelve b correctamente
}
Archivo guardado BOOL (HWND hEdit, LPSTR pszFileName)
{
Procesando hFile
BOOL bSuccess = FALSE
hFile = CreateFile(pszFileName, GENERIC_WRITE, 0, 0,
CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
if (hFile! = valor de identificador no válido)
{
DWORD dwTextLength
dw textlength = GetWindowTextLength( hEdit);
if(dwTextLe
ngth>0)//No hay necesidad de molestarse si no hay texto.
{
LPSTR pszText
pszText =(LPSTR)global alloc(GPTR,dwTextLength+1);
if(pszText! = vacío)
{
if(GetWindowText(hEdit, pszText, dwTextLength + 1))
{
DWORD dwWritten p>
if(WriteFile(hFile, pszText, dwTextLength, & ampdwWritten, NULL))
b Success = true
}
global gratis; (pszText);
}
}
cerrar identificador(hFile);
}
Volver b Éxito;
}
BOOL DoFileOpenSave(HWND hwnd, BOOL bSave)
{
OPENFILENAME ofn
char Nombre de archivo SZ[MAX _ PATH];
memoria cero(& ofn, sizeof(ofn));
Nombre de archivo SZ[0]= 0;
ofn . l structsize = sizeof(ofn);
ofn.hwndOwner = hwnd
ofn.lpstrFilter = "Archivo de texto (*.txt)\0*.Todos los archivos ( *. lpstrDefExt = " txt
if(bsave)
{
ofn.flags = OFN_explorer | OFN_path debe existir | OFN_hide solo lectura|
OFN_overwrite mensaje;
if(getsave filename(& ofn))
{
if (! SaveFile(GetDlgItem(hwnd, IDC_MAIN_TEXT), szFileName))
{
MessageBox(hwnd, "Error al guardar el archivo. ", "Error",
MB_OK | MB_signo de exclamación);
Devuelve FALSO
}
}
}
Otro
{
ofn.flags = OFN_Explorer | OFN_File debe existir | OFN_Hide de solo lectura
if(getopen); nombre de archivo (& ofn))
{
if (!LoadFile(GetDlgItem(hwnd, IDC_MAIN_TEXT), szFileName)) p>
{
MessageBox(hwnd, "Falló la carga del archivo.
", "Error",
MB_OK | MB_signo de exclamación);
Devuelve FALSO
}
}
}
Devuelve TRUE
}
Devolución de llamada LRESULT WndProc(HWND hwnd, mensaje UINT, WPARAM wParam, LPARAM lParam)
{
Cambiar (mensaje)
{
Caso WM_CREATE:
CreateWindow("EDITAR ","", p>
WS_CHILD | WS_VISIBLE | WS_HSCROLL | ES_MULTILINE |
ES_WANTRETURN,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
hwnd, (HMENU)IDC_MAIN_TEXT g_hInst, NULL);
SendDlgItemMessage(hwnd, IDC_MAIN_TEXT, WM_SETFONT,
(WPARAM)GetStockObject(DEFAULT _ GUI _ FONT ),MAKELPARAM(TRUE,0));
Romper;
Caso WM_SIZE:
if (wParam!= TAMAÑO_minimize)
MoveWindow(GetDlgItem(hwnd, IDC_MAIN_TEXT), 0, 0, LOWORD(lParam),
HIWORD(lParam), TRUE);
Romper
Caso WM_SETFOCUS:
SetFocus(GetDlgItem( hwnd, IDC_MAIN_TEXT));
Interrupción;
Caso WM_COMMAND:
Cambiar(lowword(wParam))
{
Caso CM_FILE_OPEN:
DoFileOpenSave(hwnd, FALSE);
Romper;
Caso CM_FILE_SAVEAS:
DoFileOpenSave(hwnd , TRUE);
Interrupción;
Caso CM_FILE_EXIT:
p>
PostMessage(hwnd, WM_CLOSE, 0, 0;
);Break;
Caso CM_About:
MessageBox(NULL, "¡Editor de archivos de Windows! \nUsar API Win32", "Acerca de...", 0);
}
Interrupción;
Caso WM_CLOSE:
destruir ventana(hwnd);
Break;
Caso WM_DESTROY:
PostQuitMessage(0);
Break;
Valor predeterminado:
Devuelve DefWindowProc(hwnd, Message, wParam, lParam);
}
Devuelve 0;
}
int WINAPI WinMain(h instancia h instancia, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
WND
CLASSEX WndClass
HWND hwnd
MSG MSG;
g _ hInst = hInstance
wnd class tamaño CB = sizeof(WNDCLASSEX) ;
clase wnd .
clase wnd = 0;
wnd. .cbwndextra = 0;
clase wnd .h instancia = g_hInst;
WndClass.hIcon = LoadIcon(NULL,IDI_Application);
clase hcursor . cargar cursor(NULL, IDC _ ARROW);
wnd class .HBR background = (HBRUSH)(COLOR _ WINDOW+1);
wnd class . ;
wnd clase .lpsz nombre de clase = g_SZ nombre de clase;
WndClass.hIconSm = LoadIcon(NULL,IDI_Application);
If (!register classex( & WndClass))
{
MessageBox(0, "¡Falló el registro de la ventana!", "¡Error!",
MB _ icono signo de exclamación | MB _ Aceptar | MB _ sistema modal);
Devuelve 0
}
hwnd = CreateWindowEx(
WS_EX_CLIENTEDGE,
g_szClassName,
"Un programa de archivo",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 320, 240,
NULL , NULL, g_hInst, NULL);
if(hwnd == NULL)
{
MessageBox(0, "¡Error al crear la ventana! ","¡error! ”,
MB _ icono signo de exclamación | MB _ OK | MB _ sistema modal
Devuelve 0; ShowWindow (hwnd, nCmdShow);
Actualizar ventana (hwnd);
while(GetMessage(& Msg, NULL, 0, 0))
{
Traducir mensaje(&msg);
enviar mensaje(amp;msg);
}
Devolver Msg.wParam
p>}