欢迎来到我的博客https://www.cnblogs.com/veis/

https://www.cnblogs.com/veis/p/14182037.html

一个简单的记事本

  1 #include <Windows.h>
  2 #include "resource.h"
  3 #include <stdio.h>
  4 
  5 void echo(char *str)
  6 {
  7 MessageBox(NULL, str, TEXT("提示"), MB_OK);
  8 }
  9 
 10 int CALLBACK DialogProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
 11 {
 12 OPENFILENAME ofn;       // OpenFileName 的结构体
 13 char szFile[260];       // 保存文件名称的缓冲字符串
 14 HANDLE hf;              // 文件句柄
 15 DWORD fileSize, readSize;
 16 char *buffer;
 17 
 18 switch(Message)
 19 {
 20 case WM_INITDIALOG:
 21 break;
 22 case WM_COMMAND:
 23 {       
 24 switch(wParam)
 25 {
 26 case ID_NEW_FILE:
 27 SetDlgItemText(hwnd, IDC_TEXT, "");
 28 break;
 29 case ID_OPEN_FILE:
 30 // 初始化 OPENFILENAME 结构体
 31 ZeroMemory(&ofn, sizeof(ofn));
 32 ofn.lStructSize = sizeof(ofn);
 33 ofn.hwndOwner = hwnd;
 34 ofn.lpstrFile = szFile;
 35 // Set lpstrFile[0] to '\0' so that GetOpenFileName does not 
 36 // use the contents of szFile to initialize itself.
 37 ofn.lpstrFile[0] = '\0';
 38 ofn.nMaxFile = sizeof(szFile);
 39 ofn.lpstrFilter = "All\0*.*\0Text\0*.TXT\0";
 40 ofn.nFilterIndex = 1;
 41 ofn.lpstrFileTitle = NULL;
 42 ofn.nMaxFileTitle = 0;
 43 ofn.lpstrInitialDir = NULL;
 44 ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
 45 
 46 // 若成功获取到文件名
 47 if (GetOpenFileName(&ofn)==TRUE)
 48 {
 49 // 输出文件名
 50 //echo(szFile);
 51 hf = CreateFile(szFile, 
 52 GENERIC_READ, // 只读方式打开
 53 0,
 54 (LPSECURITY_ATTRIBUTES) NULL,
 55 OPEN_EXISTING,// 只当文件存在时打开
 56 FILE_ATTRIBUTE_NORMAL,
 57 (HANDLE) NULL
 58 );
 59 }
 60 
 61 if (hf == INVALID_HANDLE_VALUE) // 如果打开失败
 62 { 
 63 echo("无法打开文件\n");
 64 } else 
 65 {
 66 fileSize = GetFileSize(hf,NULL); // 获取文件大小
 67 buffer = (char *)malloc(fileSize + 1); // 获取一块内存
 68 buffer[fileSize] = '\0'; // 设置结尾
 69 
 70 ReadFile(
 71 hf,// 文件句柄
 72 buffer,     // 读取到的文件所存放的缓冲区
 73 fileSize,   // 要读取的字节数
 74 &readSize,  // 实际读取的字节数
 75 NULL        // 用 FILE_FLAG_OVERLAPPED 打开时所需的
 76 );
 77 
 78 SetDlgItemText(hwnd, IDC_TEXT, buffer);
 79 
 80 CloseHandle(hf); // 关闭文件句柄
 81 free(buffer);// 释放内存
 82 }
 83 
 84 break;
 85 case ID_EXIT:
 86 EndDialog(hwnd, 0);
 87 break;  
 88 }
 89 }
 90 break;
 91 case WM_CLOSE:              
 92 DestroyWindow(hwnd);
 93 break;
 94 }
 95 return 0;
 96 }
 97 
 98 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
 99 {
100 // 加载 Rich Edit 控件的 DLL 动态链接库
101 LoadLibrary("RICHED20.DLL");
102 DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN), NULL, DialogProc);
103 }

 

posted @ 2017-06-03 22:56  veis  阅读(183)  评论(0编辑  收藏  举报