求高手帮忙编写简易文本编辑软件的程序(c语言或者c++编写)

谢谢
2024-12-22 17:25:01
推荐回答(1个)
回答1:

#include

#define ID_EDIT 1

LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM );

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpcmdLine, int nCmdShow)
{
static TCHAR szAppName[] = TEXT("SimpleEdit");
static TCHAR szClassName[] = TEXT("SimpleEditClass");
HWND hwnd;
MSG msg;
WNDCLASS wndclass;

wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon( NULL, IDI_APPLICATION );
wndclass.hCursor = LoadCursor( NULL,IDC_ARROW );
wndclass.hbrBackground = (HBRUSH)GetStockObject( WHITE_BRUSH );
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = szClassName;

if ( !RegisterClass( &wndclass ) )
{
MessageBox( NULL, TEXT("This program requires Windows NT!"),
szAppName, MB_ICONERROR );
return 0;
}

hwnd = CreateWindow( szClassName, TEXT("Simple Edit Control Program"),
WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL );

ShowWindow( hwnd, nCmdShow );
UpdateWindow( hwnd );

while ( GetMessage( &msg, NULL, 0, 0 ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static HWND hwndEdit;

switch( message )
{
case WM_CREATE:
hwndEdit = CreateWindow( TEXT("edit"), NULL,
WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | WS_BORDER
| ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_LEFT,
0, 0, 0, 0, hwnd, (HMENU) ID_EDIT,
(HINSTANCE) GetWindowLong( hwnd, GWL_HINSTANCE ), NULL );
return 0;

case WM_SIZE:
MoveWindow( hwndEdit, 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE );
return 0;

case WM_SETFOCUS:
SetFocus( hwndEdit );
return 0;

case WM_COMMAND:
if( LOWORD(wParam) == ID_EDIT )
if( HIWORD(wParam) == EN_ERRSPACE )
MessageBox( hwnd, "Out Of Memory!", "Edit Error", MB_OK | MB_ICONSTOP );
if( HIWORD(wParam) == EN_MAXTEXT )
MessageBox( hwnd, "Already Max Text!", "Edit Error", MB_OK | MB_ICONSTOP );
return 0;

case WM_DESTROY:
PostQuitMessage( 0 );
return 0;
}
return DefWindowProc( hwnd, message, wParam, lParam );
}