标签:des style blog http os 使用 ar for 文件
今天查找资料的时候发现了我曾经做的一个记事本
首先打开VC6.0并且建立一个Win32工程,搭建成下图所示的图形界面
然后在MainDlg.cpp文件中添加下面的代码
#include "stdafx.h" #include <windows.h> #include <windowsx.h> #include <commdlg.h> #include "resource.h" #include "MainDlg.h" BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch(uMsg) { HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog); HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand); HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose); } return FALSE; } BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam) { /*在窗口的标题栏上显示图标*/ SendMessage(hwnd, WM_SETICON, ICON_SMALL, (LPARAM)LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_ICON1))); return TRUE; } void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify) { switch(id) { /*新建*/ case ID_MENUITEMNEW: { /*得到Edit控件的句柄*/ HWND hwndEdit = GetDlgItem(hwnd,IDC_EDIT1); /*清空文本*/ SetWindowText(hwndEdit,TEXT(" ")); } break; /*文件打开*/ case ID_MENUITEMOPEN: { OPENFILENAME ofn;/*文件打开结构*/ char szFile[MAX_PATH];/*文件名数组(存放文件名)*/ /*使用文件打开结构前,将结构体清零*/ ZeroMemory(&ofn,sizeof(ofn)); /*文件大小*/ ofn.lStructSize = sizeof(ofn); /*文件名*/ ofn.lpstrFile = szFile; ofn.lpstrFile[0] = TEXT('\0'); ofn.nMaxFile = sizeof(szFile); /*过滤器*/ ofn.lpstrFilter = TEXT("ALL\0*.*\0Text\0*.TXT\0"); ofn.nFilterIndex = 1; ofn.lpstrFileTitle = NULL; ofn.nMaxFileTitle = 0; ofn.lpstrInitialDir = NULL; /*句柄*/ ofn.hwndOwner = hwnd;//自学能力、探索能力、猜测能力 ofn.Flags = OFN_EXPLORER |OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST; if (GetOpenFileName(&ofn)) { FILE *fp; TCHAR str1[256]; TCHAR str2[2560] = "\0"; fp = fopen(szFile,"r");/*文件读*/ while(fgets(str1,sizeof(str1),fp)) { int len = strlen(str1); if(str1[len - 1] == '\n') { str1[len-1] = '\r'; } strcat(str1,"\n"); strcat(str2,str1); } fclose(fp); SetDlgItemText(hwnd,IDC_EDIT1,str2); } } break; /*文件保存*/ case ID_MENUITEMSAVE: { OPENFILENAME ofn;/*文件打开结构*/ char szFile[MAX_PATH];/*文件名数组(存放文件名)*/ /*使用文件打开结构前,将结构体清零*/ ZeroMemory(&ofn,sizeof(ofn)); /*文件大小*/ ofn.lStructSize = sizeof(ofn); /*文件名*/ ofn.lpstrFile = szFile; ofn.lpstrFile[0] = TEXT('\0'); ofn.nMaxFile = sizeof(szFile); /*过滤器*/ ofn.lpstrFilter = TEXT("ALL\0*.*\0Text\0*.TXT\0"); ofn.nFilterIndex = 1; ofn.lpstrFileTitle = NULL; ofn.nMaxFileTitle = 0; ofn.lpstrInitialDir = NULL; if(GetSaveFileName(&ofn))/*文件保存函数*/ { TCHAR str[2560];/*用于存放文本*/ FILE *fp = fopen(szFile,"w");/*新建一个文件*/ GetDlgItemText(hwnd,IDC_EDIT1,str,sizeof(str));/*得到编辑框上的文本*/ fputs(str,fp);/*将文本打印到文件中*/ fclose(fp);/*关闭文件*/ } } break; /*关闭*/ case ID_MENUITEMEXIT: { exit(-1); } break; /*复制*/ case ID_MENUITEMCOPY: { OpenClipboard(hwnd);/*打开剪贴板*/ EmptyClipboard();/*清空剪贴板上原有的数据*/ TCHAR text[256]; /*得到文本框中的字符*/ GetDlgItemText(hwnd,IDC_EDIT1,text,sizeof(text)); /*从堆中分配一定数目的字节*/ HGLOBAL hglobal = GlobalAlloc(GMEM_DDESHARE , strlen(text)); /*锁定内存中指定的内存块*/ TCHAR *str = (TCHAR*)GlobalLock(hglobal); /*将字符拷贝到内存中*/ strcpy(str , text); GlobalUnlock(hglobal);/*解锁*/ /*将字符串放入剪贴板,CF_TEXT表示数据类型是文本*/ SetClipboardData(CF_TEXT,hglobal); /*关闭剪贴板*/ CloseClipboard(); } break; /*粘贴*/ case ID_MENUITEMPASTE: { /*打开剪贴板*/ OpenClipboard(hwnd); /*判断剪贴板上数据的格式*/ if(IsClipboardFormatAvailable(CF_TEXT)) { /*获取UNICODE数据*/ HANDLE hclip = GetClipboardData(CF_TEXT); TCHAR *str = (TCHAR*) GlobalLock(hclip); GlobalUnlock(hclip); SetDlgItemText(hwnd,IDC_EDIT1,str); } /*关闭剪贴板*/ CloseClipboard(); } break; /*帮助*/ case ID_MENUITEMHELP: { MessageBox(hwnd,TEXT("只有 打开 关闭 保存 新建 ,复制和粘贴不好用"),"",MB_OK); } break; /*关于*/ case ID_MENUITEMABOUT: { MessageBox(hwnd,TEXT("我的第一个记事本\r\nQQ:1042121058"),"",MB_OK); } break; default: break; } } void Main_OnClose(HWND hwnd) { EndDialog(hwnd, 0); }
程序执行结果:
打开一个文本文件后的效果
标签:des style blog http os 使用 ar for 文件
原文地址:http://blog.csdn.net/u010105970/article/details/39452005