Red de conocimiento informático - Aprendizaje de código fuente - Texto que muestra el código fuente

Texto que muestra el código fuente

//Archivo de encabezado//

Página principal

#Definir CM_FILE_SAVEAS 9072

#Definir CM_FILE_EXIT 9071

#Definir CM_FILE_OPEN 9070

#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

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))

{

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 ","",

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>

}