微信公开课小程序热门讨论「C语言的记事本程序」最新回复-以前自己写的玩的,有最简单的功能,但是没有计算字数功能,将就用吧,好用就采纳
下面是c的记事本小程序,for windows:加入到工程中,再加上rc资源菜单,用devc++编译即可实现:1、C程序:#includewindows.h#defineCM_FILE_SAVEAS9072#defineCM_FILE_EXIT9071#defineCM_FILE_OPEN9070#defineCM_ABOUT9069staticcharg_szClassName[]=MyWindowClass;staticHINSTANCEg_hInst=NULL;#defineIDC_MAIN_TEXT 1001BOOLLoadFile(HWNDhEdit,LPSTRpszFileName){ HANDLEhFile; BOOLbSuccess=FALSE; hFile=CreateFile(pszFileName,GENERIC_READ,FILE_SHARE_READ,NULL, OPEN_EXISTING,0,0); if(hFile!=INVALID_HANDLE_VALUE) { DWORDdwFileSize; dwFileSize=GetFileSize(hFile,NULL); if(dwFileSize!=0xFFFFFFFF) { LPSTRpszFileText; pszFileText=(LPSTR)GlobalAlloc(GPTR,dwFileSize+1); if(pszFileText!=NULL) { DWORDdwRead; if(ReadFile(hFile,pszFileText,dwFileSize,&dwRead,NULL)) {pszFileText[dwFileSize]=0;//Nullterminatorif(SetWindowText(hEdit,pszFileText))bSuccess=TRUE;//Itworked! } GlobalFree(pszFileText); } } CloseHandle(hFile); } returnbSuccess;}BOOLSaveFile(HWNDhEdit,LPSTRpszFileName){ HANDLEhFile; BOOLbSuccess=FALSE; hFile=CreateFile(pszFileName,GENERIC_WRITE,0,0, CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0); if(hFile!=INVALID_HANDLE_VALUE) { DWORDdwTextLength; dwTextLength=GetWindowTextLength(hEdit); if(dwTextLength0)//Noneedtobotheriftheresnotext. { LPSTRpszText; pszText=(LPSTR)GlobalAlloc(GPTR,dwTextLength+1); if(pszText!=NULL) { if(GetWindowText(hEdit,pszText,dwTextLength+1)) {DWORDdwWritten;if(WriteFile(hFile,pszText,dwTextLength,&dwWritten,NULL))bSuccess=TRUE; } GlobalFree(pszText); } } CloseHandle(hFile); } returnbSuccess;}BOOLDoFileOpenSave(HWNDhwnd,BOOLbSave){ OPENFILENAMEofn; charszFileName[MAX_PATH]; ZeroMemory(&ofn,sizeof(ofn)); szFileName[0]=0; ofn.lStructSize=sizeof(ofn); ofn.hwndOwner=hwnd; ofn.lpstrFilter=TextFiles(*.txt)0*.txt0AllFiles(*.*)0*.*00; 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,Savefilefailed.,Error,MB_OK|MB_ICONEXCLAMATION); returnFALSE; } } } else { ofn.Flags=OFN_EXPLORER|OFN_FILEMUSTEXIST|OFN_HIDEREADONLY; if(GetOpenFileName(&ofn)) { if(!LoadFile(GetDlgItem(hwnd,IDC_MAIN_TEXT),szFileName)) { MessageBox(hwnd,Loadoffilefailed.,Error,MB_OK|MB_ICONEXCLAMATION); returnFALSE; } } } returnTRUE;}LRESULTCALLBACKWndProc(HWNDhwnd,UINTMessage,WPARAMwParam,LPARAMlParam){ switch(Message) { caseWM_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; caseWM_SIZE: if(wParam!=SIZE_MINIMIZED) MoveWindow(GetDlgItem(hwnd,IDC_MAIN_TEXT),0,0,LOWORD(lParam),HIWORD(lParam),TRUE); break; caseWM_SETFOCUS: SetFocus(GetDlgItem(hwnd,IDC_MAIN_TEXT)); break; caseWM_COMMAND: switch(LOWORD(wParam)) { caseCM_FILE_OPEN:DoFileOpenSave(hwnd,FALSE); break; caseCM_FILE_SAVEAS:DoFileOpenSave(hwnd,TRUE); break; caseCM_FILE_EXIT:PostMessage(hwnd,WM_CLOSE,0,0); break; caseCM_ABOUT:MessageBox(NULL,FileEditorforWindows!nUsingtheWin32API,About...,0); } break; caseWM_CLOSE: DestroyWindow(hwnd); break; caseWM_DESTROY: PostQuitMessage(0); break; default: returnDefWindowProc(hwnd,Message,wParam,lParam); } return0;}intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance, LPSTRlpCmdLine,intnCmdShow){ WNDCLASSEXWndClass; HWNDhwnd; MSGMsg; 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,WindowRegistrationFailed!,Error!, MB_ICONEXCLAMATION|MB_OK|MB_SYSTEMMODAL); return0; } hwnd=CreateWindowEx( WS_EX_CLIENTEDGE, g_szClassName, FileEditorExampleProgram, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,CW_USEDEFAULT,1024,768, NULL,NULL,g_hInst,NULL); if(hwnd==NULL) { MessageBox(0,WindowCreationFailed!,Error!, MB_ICONEXCLAMATION|MB_OK|MB_SYSTEMMODAL); return0; } ShowWindow(hwnd,nCmdShow); UpdateWindow(hwnd); while(GetMessage(&Msg,NULL,0,0)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } returnMsg.wParam;}2、RC资源菜单程序:#defineCM_FILE_SAVEAS9072#defineCM_FILE_EXIT9071#defineCM_FILE_OPEN9070#defineCM_ABOUT9069MAINMENUMENU{POPUP&File{ MENUITEM&Open...,CM_FILE_OPEN MENUITEMSave&As...,CM_FILE_SAVEAS MENUITEMSEPARATOR MENUITEME&xit,CM_FILE_EXIT}POPUP&Help{ MENUITEM&About,CM_ABOUT}}已经在devc++调试通过 更多有关「C语言的记事本程序」的疑问请扫码关注微信公开课+小程序!了解更多