加入到工程中,再加上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
}
}
这个是个整人的小程序代码,打开后会有提示,提示后会启动系统关机倒计时,只有按提示输入正确的汉字才能关闭“系统关机”命令。本人初学者,自己调的,仅供参考。只做娱乐使用,注意保存修改过的文件。槐敬山
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)