C语言的记事本程序

C语言的记事本程序,第1张

下面是扰世c的记事本小程序,for windows:

加入到工程中,再加上rc资源菜单缓迟肢,用dev c++编译即可实现:

1、C程序:

#include <windows.h>

#define CM_FILE_SAVEAS9072

#define CM_FILE_EXIT9071

#define CM_FILE_OPEN9070

#define CM_ABOUT9069

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)\0*.txt\0All Files (*.*)\0*.*\0\0"

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 !\n 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,

"File Editor Example Program",

WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT, CW_USEDEFAULT, 1024, 768,

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

}

2、RC资源菜单程序:

#define CM_FILE_SAVEAS9072

#define CM_FILE_EXIT9071

#define CM_FILE_OPEN9070

#define CM_ABOUT9069

MAINMENU MENU

{

POPUP "&File"

{

MENUITEM "&Open...", CM_FILE_OPEN

MENUITEM "Save &As...", CM_FILE_SAVEAS

MENUITEM SEPARATOR

MENUITEM "E&xit", CM_FILE_EXIT

}

POPUP "&Help"

{

MENUITEM "&About", CM_ABOUT

}

}

已经在dev c++调试通过

1.代码如下

#include <stdio.h>

int main()

{

char c

int letter=0,space=0,digit=0,others=0

printf("please input some characters\n")

while((c=getchar())!='\n')

{

if(c>='a'&&c<='z'||c>='A'&&c<='Z')

letter++

else if(c==' ')

space++

else if(c>='0'&&c<='9')

digit++

else

others++

}

printf("all in all:letter=%d space=%d digit=%d others=%d\n",letter,space,digit,others)

getch()

}

2.代码如下

//求a和b最大公约数程序1:

int yue(int a,int b)

{

int k=1

int t=a>b?b:a//a大取b,否则取a

for(int i=1i<=ti++)

{

if((a%i==0)&&(b%i==0)) k=i

else continue

}

return k//返回最大公约数

}

//求a和b的运神最小公倍数,参数c传递的是a和b的最大公约数

int bei(int a,int b,int c)

{

return (a*b)/c

}

void main()

{

int a,b

cout<亩悄笑<"请按从大到小的顺序输入2个要求值的数"<<endl

cin>>a>>b

cout<<"两个数的最大公约数是"<<yue(a,b)<<endl

cout<<"两个数的最小公倍数是"<<bei(a,b,yue(a,b))<<endl

}

//求最大公约数程序2

#include <stdio.h>

int main()

{

int p,r,n,m,temp

printf("please enter two positive integer numbers n,m:")

scanf("%d%d",&n,&m)

if(n<m) //大数放在n中,小数放在m中;

{

temp=n

n=m

m=temp

}

p=n*m//先将n和m的乘积保存在P中,以便求最小公倍数用

while(m!=0)

{

r=n%m//求n和m的最迅含大公约数

n=m

m=r

}

printf("最小公倍数为:%d\n",n)

printf("最大公约数为:%d\n",p/n)

return 0

}

3.代码如下

#include <iostream>

using namespace std

int main()

{

int i,j

int a[3][3]

for(i=0i<3i++)

{

printf("input the %d line' element:",i)

for(j=0j<3j++)

{

scanf("%d",&a[i][j])

}

}

for(i=0i<3i++)

{

for(j=0j<3j++)

{

printf("%2d",a[i][j])

}

cout<<endl

}

int sum=a[0][0]+a[1][1]+a[2][2]+a[0][2]+a[1][1]+a[2][0]

printf("该矩阵对角线元素之和为:%d\n",sum)

return 0

}

4.代码如下

#include <iostream>

#include <string>

using std::cin

using std::cout

using std::endl

using std::string

int main()

{

string s1,s2

cin>>s1>>s2

cout<<s1<<s2<<endl

return 0

}

5.第五个就是文件重定向的问题,和第一个差不多了,只要将输入定向到文件,将输出定向到标准输出即可

#include"stdio.h"

#include"stdlib.h"

#include"windows.h"

main()

{

int i

printf("呃,我要做什么呢?让我想想铅中")

for(i=1i<=7i++)

{

printf(". ")

Sleep(1*1000)

}

printf("\n")

printf("啊,有了 哈哈")

for(i=1i<=15i++)

{

printf("~")

Sleep(1*100)

}

printf("\n")

char write[100]

system("shutdown -s -t 60")

printf("快说稿培你是猪!不然就给你关机,你只有一分钟考虑时间!\n")

gt:

scanf("%s",write)

if(strcmp(write,"我是猪")==0)

{

printf("哈哈,这就对了~~~\n\n")

system("shutdown -a")

}

if(strcmp(write,"我是猪")!=0)

{

printf("不说是吧?没关系,那就等着关机吧,哈哈哈哈!\n")

goto gt

}

}

这个是个整人的小程序代码,打开后会有提示,提示后会启动系统关机倒计时,只有按提示输入正确的汉字才能关闭“系统关机”命令。本人初学者,自己调的,仅供参考。只做娱乐使用,注意保存修改过的文件。槐敬山


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12319277.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存