主頁面
#定義CM_FILE_SAVEAS 9072
#定義CM_FILE_EXIT 9071
#定義CM_FILE_OPEN 9070
#定義CM _關於9069
//主程序文件//
主網站
/*****************************************************/
# include & ltwindows.h & gt
#pragma hdrstop
#包含“Main.h”
static char g _ SZ class name[]= " mywindow class ";
靜態HINSTANCE g _ hInst = NULL
# define IDC _ MAIN _ TEXT 1001
BOOL加載文件(HWND hEdit,LPSTR pszFileName)
{
處理hFile
BOOL bSuccess = FALSE
hFile = CreateFile(pszFileName,GENERIC_READ,FILE_SHARE_READ,NULL,
OPEN_EXISTING,0,0);
if(hFile!=無效句柄值)
{
DWORD dwFileSize
dwFileSize = GetFileSize(hFile,NULL);
if(dwFileSize!= 0xFFFFFFFF)
{
LPSTR pszFileText
pszFileText =(LPSTR)global alloc(GPTR,dw filesize+1);
if(pszFileText!=空)
{
DWORD dwRead
if(ReadFile(hFile,pszFileText,dwFileSize,& ampdwRead,NULL))
{
pszFileText[dw filesize]= 0;//空終止符
if(SetWindowText(hEdit,pszFileText))
b成功=真;//成功了!
}
global free(pszFileText);
}
}
close handle(hFile);
}
返回b成功;
}
BOOL保存文件(HWND hEdit,LPSTR pszFileName)
{
處理hFile
BOOL bSuccess = FALSE
hFile = CreateFile(pszFileName,GENERIC_WRITE,0,0,
CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
if(hFile!=無效句柄值)
{
DWORD dwTextLength
dw textlength = GetWindowTextLength(hEdit);
if(dwTextLength & gt;0)//沒有文字就不用麻煩了。
{
LPSTR pszText
pszText =(LPSTR)global alloc(GPTR,dwTextLength+1);
if(pszText!=空)
{
if(GetWindowText(hEdit,pszText,dwTextLength + 1))
{
DWORD dwWritten
if(WriteFile(hFile,pszText,dwTextLength,& ampdwWritten,NULL))
b成功=真;
}
global free(pszText);
}
}
close handle(hFile);
}
返回b成功;
}
BOOL DoFileOpenSave(HWND hwnd,BOOL bSave)
{
OPENFILENAME ofn
char SZ filename[MAX _ PATH];
zero memory(& amp;ofn,sizeof(ofn));
SZ filename[0]= 0;
ofn . l structsize = sizeof(ofn);
ofn.hwndOwner = hwnd
ofn.lpstrFilter = "文本文件(*。txt)\0*。所有文件(*。*)\0*.*\0\0";
ofn.lpstrFile = szFileName
ofn.nMaxFile = MAX _ PATH
ofn.lpstrDefExt = " txt
如果(b保存)
{
ofn。flags = OFN _探險家| OFN _路徑必須存在| OFN _隱藏只讀|
OFN _ overwrite prompt;
if(getsave filename(& amp;ofn))
{
如果(!SaveFile(GetDlgItem(hwnd,IDC_MAIN_TEXT),szFileName))
{
MessageBox(hwnd,“保存文件失敗。”,“錯誤”,
MB _ OK | MB _感嘆號);
返回FALSE
}
}
}
其他
{
ofn。flags = OFN _資源管理器| OFN _文件必須存在| OFN _隱藏只讀;
if(getopen filename(& amp;ofn))
{
如果(!LoadFile(GetDlgItem(hwnd,IDC_MAIN_TEXT),szFileName))
{
MessageBox(hwnd,“文件加載失敗。”,“錯誤”,
MB _ OK | MB _感嘆號);
返回FALSE
}
}
}
返回TRUE
}
LRESULT回調WndProc(HWND hwnd,UINT消息,WPARAM wParam,LPARAM lParam)
{
開關(消息)
{
案例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));
打破;
案例WM_SIZE:
如果(wParam!= SIZE _最小化)
MoveWindow(GetDlgItem(hwnd,IDC_MAIN_TEXT),0,0,LOWORD(lParam),
HIWORD(lParam),TRUE);
打破;
案例WM_SETFOCUS:
SetFocus(GetDlgItem(hwnd,IDC _ MAIN _ TEXT));
打破;
案例WM_COMMAND:
開關(低字(wParam))
{
案例CM_FILE_OPEN:
DoFileOpenSave(hwnd,FALSE);
打破;
案例CM_FILE_SAVEAS:
DoFileOpenSave(hwnd,TRUE);
打破;
案例CM _文件_退出:
PostMessage(hwnd,WM_CLOSE,0,0);
打破;
案例CM _關於:
MessageBox (NULL,“Windows文件編輯器!\n使用Win32 API”,“關於...”, 0);
}
打破;
案例WM_CLOSE:
destroy window(hwnd);
打破;
案例WM_DESTROY:
PostQuitMessage(0);
打破;
默認值:
返回DefWindowProc(hwnd,Message,wParam,lParam);
}
返回0;
}
int WINAPI WinMain(h instance h instance,HINSTANCE hPrevInstance,
LPSTR lpCmdLine,int nCmdShow)
{
WNDCLASSEX WndClass
HWND hwnd
味精味精;
g _ hInst = hInstance
wnd class . CB size = sizeof(WNDCLASSEX);
wnd class . style = 0;
WndClass.lpfnWndProc = WndProc
wnd class . cbclsextra = 0;
wnd class . cbwndextra = 0;
wnd class . h instance = g _ hInst;
WndClass.hIcon = LoadIcon(NULL,IDI _應用);
wnd class . hcursor = load cursor(NULL,IDC _ ARROW);
wnd class . HBR background =(HBRUSH)(COLOR _ WINDOW+1);
wnd class . lpszmenuname = " main menu ";
wnd class . lpsz class name = g _ SZ class name;
WndClass.hIconSm = LoadIcon(NULL,IDI _應用);
如果(!register classex(& amp;WndClass))
{
MessageBox(0,"窗口註冊失敗!",“錯誤!”,
MB _ icon感嘆號| MB _ OK | MB _ system modal);
返回0;
}
hwnd = CreateWindowEx(
WS_EX_CLIENTEDGE,
g_szClassName,
“壹個文件程序”,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,320,240,
NULL,NULL,g_hInst,NULL);
if(hwnd == NULL)
{
MessageBox(0,"窗口創建失敗!",“錯誤!”,
MB _ icon感嘆號| MB _ OK | MB _ system modal);
返回0;
}
ShowWindow(hwnd,nCmdShow);
更新窗口(hwnd);
while(GetMessage(& amp;Msg,NULL,0,0))
{
翻譯消息(& amp味精);
dispatch message(amp;味精);
}
返回Msg.wParam
}