#include <Windows.h>
#include "resource.h"
#include <stdio.h>
void echo(char *str)
{
	MessageBox(NULL, str, TEXT("提示"), MB_OK);
}
int CALLBACK DialogProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
	OPENFILENAME ofn;       // OpenFileName 的结构体
	char szFile[260];       // 保存文件名称的缓冲字符串
	HANDLE hf;              // 文件句柄
	DWORD fileSize, readSize;
	char *buffer;
	switch(Message)
	{
	case WM_INITDIALOG:
		break;
	case WM_COMMAND:
		{       
			switch(wParam)
			{
			case ID_NEW_FILE:
				SetDlgItemText(hwnd, IDC_TEXT, "");
				break;
			case ID_OPEN_FILE:
				// 初始化 OPENFILENAME 结构体
				ZeroMemory(&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;
				// 若成功获取到文件名
				if (GetOpenFileName(&ofn)==TRUE)
				{
					// 输出文件名
					//echo(szFile);
					hf = CreateFile(szFile, 
						GENERIC_READ, // 只读方式打开
						0,	
						(LPSECURITY_ATTRIBUTES) NULL,
						OPEN_EXISTING,	// 只当文件存在时打开
						FILE_ATTRIBUTE_NORMAL,
						(HANDLE) NULL
					);
				}
				if (hf == INVALID_HANDLE_VALUE) // 如果打开失败
				{ 
					echo("无法打开文件\n");
				} else 
				{
					fileSize = GetFileSize(hf,NULL); // 获取文件大小
					buffer = (char *)malloc(fileSize + 1); // 获取一块内存
					buffer[fileSize] = ‘\0‘; // 设置结尾
					ReadFile(
						hf,			// 文件句柄
						buffer,     // 读取到的文件所存放的缓冲区
						fileSize,   // 要读取的字节数
						&readSize,  // 实际读取的字节数
						NULL        // 用 FILE_FLAG_OVERLAPPED 打开时所需的
						);
					SetDlgItemText(hwnd, IDC_TEXT, buffer);
					CloseHandle(hf); // 关闭文件句柄
					free(buffer);	// 释放内存
				}			
					
				break;
			case ID_EXIT:
				EndDialog(hwnd, 0);
				break;   				
			}
		}
		break;
	case WM_CLOSE:              
		DestroyWindow(hwnd);
		break;
	}
	return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
{
	// 加载 Rich Edit 控件的 DLL 动态链接库
	LoadLibrary("RICHED20.DLL");
	DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN), NULL, DialogProc);
}
一个简单的记事本
原文:http://www.cnblogs.com/veis/p/6938820.html