zoukankan      html  css  js  c++  java
  • 一个简单的文本编辑器。(是在DEV C++下写的)

    //头文件//
      main.h
      #define CM_FILE_SAVEAS 9072
      #define CM_FILE_EXIT 9071
      #define CM_FILE_OPEN 9070
      #define CM_ABOUT 9069
      //主程序文件//
      main.c
      /*****************************************************/
      #include <windows.h>
      #pragma hdrstop
      #include "Main.h"
      static char g_szClassName[] = "MyWindowClass";
      static HINSTANCE g_hInst = NULL;
      #define IDC_MAIN_TEXT 1001
      BOOL LoadFile(HWND hEdit, LPSTR pszFileName)
      {
       HANDLE hFile;
       BOOL bSuccess = FALSE;
       hFile = CreateFile(pszFileName, GENERIC_READ, FILE_SHARE_READ, NULL,
       OPEN_EXISTING, 0, 0);
       if(hFile != INVALID_HANDLE_VALUE)
       {
       DWORD dwFileSize;
       dwFileSize = GetFileSize(hFile, NULL);
       if(dwFileSize != 0xFFFFFFFF)
       {
       LPSTR pszFileText;
       pszFileText = (LPSTR)GlobalAlloc(GPTR, dwFileSize + 1);
       if(pszFileText != NULL)
       {
       DWORD dwRead;
       if(ReadFile(hFile, pszFileText, dwFileSize, &dwRead, NULL))
       {
       pszFileText[dwFileSize] = 0; // Null terminator
       if(SetWindowText(hEdit, pszFileText))
       bSuccess = TRUE; // It worked!
       }
       GlobalFree(pszFileText);
       }
       }
       CloseHandle(hFile);
       }
       return bSuccess;
      }
      BOOL SaveFile(HWND hEdit, LPSTR pszFileName)
      {
       HANDLE hFile;
       BOOL bSuccess = FALSE;
       hFile = CreateFile(pszFileName, GENERIC_WRITE, 0, 0,
       CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
       if(hFile != INVALID_HANDLE_VALUE)
       {
       DWORD dwTextLength;
       dwTextLength = GetWindowTextLength(hEdit);
       if(dwTextLength > 0)// No need to bother if there's no text.
       {
       LPSTR pszText;
       pszText = (LPSTR)GlobalAlloc(GPTR, dwTextLength + 1);
       if(pszText != NULL)
       {
       if(GetWindowText(hEdit, pszText, dwTextLength + 1))
       {
       DWORD dwWritten;
       if(WriteFile(hFile, pszText, dwTextLength, &dwWritten, NULL))
       bSuccess = TRUE;
       }
       GlobalFree(pszText);
       }
       }
       CloseHandle(hFile);
       }
       return bSuccess;
      }
      BOOL DoFileOpenSave(HWND hwnd, BOOL bSave)
      {
       OPENFILENAME ofn;
       char szFileName[MAX_PATH];
       ZeroMemory(&ofn, sizeof(ofn));
       szFileName[0] = 0;
       ofn.lStructSize = sizeof(ofn);
       ofn.hwndOwner = hwnd;
       ofn.lpstrFilter = "Text Files (*.txt)*.txtAll Files (*.*)*.*";
       ofn.lpstrFile = szFileName;
       ofn.nMaxFile = MAX_PATH;
       ofn.lpstrDefExt = "txt";
       if(bSave)
       {
       ofn.Flags = OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY |
       OFN_OVERWRITEPROMPT;
       
       if(GetSaveFileName(&ofn))
       {
       if(!SaveFile(GetDlgItem(hwnd, IDC_MAIN_TEXT), szFileName))
       {
       MessageBox(hwnd, "Save file failed.", "Error",
       MB_OK | MB_ICONEXCLAMATION);
       return FALSE;
       }
       }
       }
       else
       {
       ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
       if(GetOpenFileName(&ofn))
       {
       if(!LoadFile(GetDlgItem(hwnd, IDC_MAIN_TEXT), szFileName))
       {
       MessageBox(hwnd, "Load of file failed.", "Error",
       MB_OK | MB_ICONEXCLAMATION);
       return FALSE;
       }
       }
       }
       return TRUE;
      }
      LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
      {
       switch(Message)
       {
       case WM_CREATE:
       CreateWindow("EDIT", "",
       WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | ES_MULTILINE |
       ES_WANTRETURN,
       CW_USEDEFAULT, 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));
       break;
       case WM_SIZE:
       if(wParam != SIZE_MINIMIZED)
       MoveWindow(GetDlgItem(hwnd, IDC_MAIN_TEXT), 0, 0, LOWORD(lParam),
       HIWORD(lParam), TRUE);
       break;
       case WM_SETFOCUS:
       SetFocus(GetDlgItem(hwnd, IDC_MAIN_TEXT));
       break;
       case WM_COMMAND:
       switch(LOWORD(wParam))
       {
       case CM_FILE_OPEN:
       DoFileOpenSave(hwnd, FALSE);
       break;
       case CM_FILE_SAVEAS:
       DoFileOpenSave(hwnd, TRUE);
       break;
       case CM_FILE_EXIT:
       PostMessage(hwnd, WM_CLOSE, 0, 0);
       break;
       case CM_ABOUT:
       MessageBox (NULL, "File Editor for Windows ! Using the Win32 API" , "About...", 0);
       }
       break;
       case WM_CLOSE:
       DestroyWindow(hwnd);
       break;
       case WM_DESTROY:
       PostQuitMessage(0);
       break;
       default:
       return DefWindowProc(hwnd, Message, wParam, lParam);
       }
       return 0;
      }
      int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
       LPSTR lpCmdLine, int nCmdShow)
      {
       WNDCLASSEX WndClass;
       HWND hwnd;
       MSG Msg;
       g_hInst = hInstance;
       WndClass.cbSize = sizeof(WNDCLASSEX);
       WndClass.style = 0;
       WndClass.lpfnWndProc = WndProc;
       WndClass.cbClsExtra = 0;
       WndClass.cbWndExtra = 0;
       WndClass.hInstance = g_hInst;
       WndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
       WndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
       WndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
       WndClass.lpszMenuName = "MAINMENU";
       WndClass.lpszClassName = g_szClassName;
       WndClass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
       if(!RegisterClassEx(&WndClass))
       {
       MessageBox(0, "Window Registration Failed!", "Error!",
       MB_ICONEXCLAMATION | MB_OK | MB_SYSTEMMODAL);
       return 0;
       }
       hwnd = CreateWindowEx(
       WS_EX_CLIENTEDGE,
       g_szClassName,
       "A File Program",
       WS_OVERLAPPEDWINDOW,
       CW_USEDEFAULT, CW_USEDEFAULT, 320, 240,
       NULL, NULL, g_hInst, NULL);
       if(hwnd == NULL)
       {
       MessageBox(0, "Window Creation Failed!", "Error!",
       MB_ICONEXCLAMATION | MB_OK | MB_SYSTEMMODAL);
       return 0;
       }
       ShowWindow(hwnd, nCmdShow);
       UpdateWindow(hwnd);
       while(GetMessage(&Msg, NULL, 0, 0))
       {
       TranslateMessage(&Msg);
       DispatchMessage(&Msg);
       }
       return Msg.wParam;
      }




    //头文件// main.h #define CM_FILE_SAVEAS 9072 #define CM_FILE_EXIT 9071 #define CM_FILE_OPEN 9070 #define CM_ABOUT 9069 //主程序文件// main.c /*****************************************************/ #include <windows.h> #pragma hdrstop #include "Main.h" static char g_szClassName[] = "MyWindowClass"; static HINSTANCE g_hInst = NULL; #define IDC_MAIN_TEXT 1001 BOOL LoadFile(HWND hEdit, LPSTR pszFileName) { HANDLE hFile; BOOL bSuccess = FALSE; hFile = CreateFile(pszFileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, 0); if(hFile != INVALID_HANDLE_VALUE) { DWORD dwFileSize; dwFileSize = GetFileSize(hFile, NULL); if(dwFileSize != 0xFFFFFFFF) { LPSTR pszFileText; pszFileText = (LPSTR)GlobalAlloc(GPTR, dwFileSize + 1); if(pszFileText != NULL) { DWORD dwRead; if(ReadFile(hFile, pszFileText, dwFileSize, &dwRead, NULL)) { pszFileText[dwFileSize] = 0; // Null terminator if(SetWindowText(hEdit, pszFileText)) bSuccess = TRUE; // It worked! } GlobalFree(pszFileText); } } CloseHandle(hFile); } return bSuccess; } BOOL SaveFile(HWND hEdit, LPSTR pszFileName) { HANDLE hFile; BOOL bSuccess = FALSE; hFile = CreateFile(pszFileName, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); if(hFile != INVALID_HANDLE_VALUE) { DWORD dwTextLength; dwTextLength = GetWindowTextLength(hEdit); if(dwTextLength > 0)// No need to bother if there's no text. { LPSTR pszText; pszText = (LPSTR)GlobalAlloc(GPTR, dwTextLength + 1); if(pszText != NULL) { if(GetWindowText(hEdit, pszText, dwTextLength + 1)) { DWORD dwWritten; if(WriteFile(hFile, pszText, dwTextLength, &dwWritten, NULL)) bSuccess = TRUE; } GlobalFree(pszText); } } CloseHandle(hFile); } return bSuccess; } BOOL DoFileOpenSave(HWND hwnd, BOOL bSave) { OPENFILENAME ofn; char szFileName[MAX_PATH]; ZeroMemory(&ofn, sizeof(ofn)); szFileName[0] = 0; ofn.lStructSize = sizeof(ofn); ofn.hwndOwner = hwnd; ofn.lpstrFilter = "Text Files (*.txt)*.txtAll Files (*.*)*.*"; ofn.lpstrFile = szFileName; ofn.nMaxFile = MAX_PATH; ofn.lpstrDefExt = "txt"; if(bSave) { ofn.Flags = OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT; if(GetSaveFileName(&ofn)) { if(!SaveFile(GetDlgItem(hwnd, IDC_MAIN_TEXT), szFileName)) { MessageBox(hwnd, "Save file failed.", "Error", MB_OK | MB_ICONEXCLAMATION); return FALSE; } } } else { ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY; if(GetOpenFileName(&ofn)) { if(!LoadFile(GetDlgItem(hwnd, IDC_MAIN_TEXT), szFileName)) { MessageBox(hwnd, "Load of file failed.", "Error", MB_OK | MB_ICONEXCLAMATION); return FALSE; } } } return TRUE; } LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) { switch(Message) { case WM_CREATE: CreateWindow("EDIT", "", WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | ES_MULTILINE | ES_WANTRETURN, CW_USEDEFAULT, 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)); break; case WM_SIZE: if(wParam != SIZE_MINIMIZED) MoveWindow(GetDlgItem(hwnd, IDC_MAIN_TEXT), 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE); break; case WM_SETFOCUS: SetFocus(GetDlgItem(hwnd, IDC_MAIN_TEXT)); break; case WM_COMMAND: switch(LOWORD(wParam)) { case CM_FILE_OPEN: DoFileOpenSave(hwnd, FALSE); break; case CM_FILE_SAVEAS: DoFileOpenSave(hwnd, TRUE); break; case CM_FILE_EXIT: PostMessage(hwnd, WM_CLOSE, 0, 0); break; case CM_ABOUT: MessageBox (NULL, "File Editor for Windows ! Using the Win32 API" , "About...", 0); } break; case WM_CLOSE: DestroyWindow(hwnd); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hwnd, Message, wParam, lParam); } return 0; } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { WNDCLASSEX WndClass; HWND hwnd; MSG Msg; g_hInst = hInstance; WndClass.cbSize = sizeof(WNDCLASSEX); WndClass.style = 0; WndClass.lpfnWndProc = WndProc; WndClass.cbClsExtra = 0; WndClass.cbWndExtra = 0; WndClass.hInstance = g_hInst; WndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION); WndClass.hCursor = LoadCursor(NULL, IDC_ARROW); WndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); WndClass.lpszMenuName = "MAINMENU"; WndClass.lpszClassName = g_szClassName; WndClass.hIconSm = LoadIcon(NULL, IDI_APPLICATION); if(!RegisterClassEx(&WndClass)) { MessageBox(0, "Window Registration Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK | MB_SYSTEMMODAL); return 0; } hwnd = CreateWindowEx( WS_EX_CLIENTEDGE, g_szClassName, "A File Program", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 320, 240, NULL, NULL, g_hInst, NULL); if(hwnd == NULL) { MessageBox(0, "Window Creation Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK | MB_SYSTEMMODAL); return 0; } ShowWindow(hwnd, nCmdShow); UpdateWindow(hwnd); while(GetMessage(&Msg, NULL, 0, 0)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } return Msg.wParam; }


     
  • 相关阅读:
    使用Junit等工具进行单元测试
    软件工程学习、问题
    贪吃蛇
    使用Junit工具进行单元测试
    两人组
    软件工程的理解
    使用工具进行单元测试
    对软件工程的理解
    单元测试
    我对软件工程的理解
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4066602.html
Copyright © 2011-2022 走看看