按钮 下拉列表 还有一个简单的记事本 文件读写等

// WinEdit.cpp : Defines the entry point for the application.
//

#include "stdafx.h"
#include "stdlib.h"
#include "stdio.h"
#include "resource.h"

HINSTANCE g_hInst = NULL;
HWND      g_hEdit = NULL;

void OnCreate( HWND hWnd, UINT nMsg, 
	WPARAM wParam, LPARAM lParam )
{
	g_hEdit = CreateWindow( "EDIT", "Hello EDIT",
		WS_CHILD|WS_VISIBLE|WS_HSCROLL|
		WS_VSCROLL|ES_AUTOHSCROLL|
		ES_AUTOVSCROLL|ES_MULTILINE, 
		0, 0, 100, 200, hWnd,
		(HMENU)1001, g_hInst, NULL );
}

void OnSize( HWND hWnd, UINT nMsg, 
	WPARAM wParam, LPARAM lParam )
{
	int nWidth = LOWORD( lParam );
	int nHeight= HIWORD( lParam );
	if( NULL != g_hEdit )
	{	//将EDIT窗口填满整个客户区
		MoveWindow( g_hEdit, 0, 0, nWidth,
			nHeight, TRUE );
	}
}

void OnSave( )
{
	//获取文字长度
	LRESULT nTextLen = SendMessage( g_hEdit, 
		WM_GETTEXTLENGTH, 0, 0 );
	//获取文字
	CHAR * pszBuff = NULL;
	pszBuff = (CHAR *)malloc( nTextLen + 1 );
	memset( pszBuff, 0, nTextLen + 1 );
	SendMessage( g_hEdit, WM_GETTEXT,
		nTextLen + 1, (LPARAM)pszBuff );
	//MessageBox( NULL, pszBuff, "WinEdit", MB_OK );
	//保存文件
	FILE * pFile = fopen( "C:\\1.txt", "w+" );
	fwrite( pszBuff, nTextLen, 1, pFile );
	fclose( pFile );
	//释放内存
	free( pszBuff );
}

void OnOpen( )
{
	//打开文件读取数据
	FILE * pFile = fopen( "C:\\1.txt", "r" );
	//获取文件长度
	fseek( pFile, 0, SEEK_END );
	long nFileLen = ftell( pFile );
	fseek( pFile, 0, SEEK_SET );
	//读取文件数据
	CHAR * pszBuf = (CHAR *)
		malloc( nFileLen + 1 );
	memset( pszBuf, 0, nFileLen + 1 );
	fread( pszBuf, nFileLen, 1, pFile );
	//关闭文件
	fclose( pFile );
	//将字符显示在EDIT窗口
	SendMessage( g_hEdit, WM_SETTEXT,
		0, (LPARAM)pszBuf );
	//释放内存
	free( pszBuf );
}

void  OnCommand( HWND hWnd, UINT nMsg, 
	WPARAM wParam, LPARAM lParam )
{
	int nNotifyCode = HIWORD( wParam );
	int nEventID    = LOWORD( wParam );
	switch( nEventID )
	{
	case 1001:
		{
			switch( nNotifyCode )
			{
			case EN_CHANGE:
				//MessageBox( NULL, "EN_CHANGE",
				//	"WinEdit", MB_OK );
				break;
			}
		}
		break;
	case ID_SELALL:
		SendMessage( g_hEdit, EM_SETSEL, 0, -1 );
		break;
	case ID_COPY:
		SendMessage( g_hEdit, WM_COPY, 0, 0 );
		break;
	case ID_PASTE:
		SendMessage( g_hEdit, WM_PASTE, 0, 0 );
		break;
	case ID_SAVE:
		OnSave( );
		break;
	case ID_OPEN:
		OnOpen( );
		break;
	}
}

LRESULT CALLBACK WndProc( HWND   hWnd, 
						  UINT   nMsg,
						  WPARAM wParam,
						  LPARAM lParam )
{
	switch( nMsg )
	{
	case WM_CREATE:
		OnCreate( hWnd, nMsg, wParam, lParam );
		break;
	case WM_SIZE:
		OnSize( hWnd, nMsg, wParam, lParam );
		break;
	case WM_COMMAND:
		OnCommand( hWnd, nMsg, wParam, lParam );
		break;
	case WM_DESTROY:
		PostQuitMessage( 0 );
		return 0;
	}
	return DefWindowProc( hWnd, nMsg,
		wParam, lParam );
}

BOOL RegisterWnd( LPSTR pszClassName )
{
	WNDCLASSEX wce = { 0 };
	wce.cbSize        = sizeof( wce );
	wce.cbClsExtra    = 0;
	wce.cbWndExtra    = 0;
	wce.hbrBackground = HBRUSH(COLOR_WINDOW);
	wce.hCursor       = NULL;
	wce.hIcon         = NULL;
	wce.hIconSm       = NULL;
	wce.hInstance     = g_hInst;
	wce.lpfnWndProc   = WndProc;
	wce.lpszClassName = pszClassName;
	wce.lpszMenuName  = NULL;
	wce.style         = CS_HREDRAW|CS_VREDRAW;

	ATOM nAtom = RegisterClassEx( &wce );
	if( 0 ==  nAtom )
	{
		return FALSE;
	}

	return TRUE;
}

HWND CreateWnd( LPSTR pszClassName )
{
	HMENU hMenu = LoadMenu( g_hInst,
		MAKEINTRESOURCE(IDR_MAIN) );
	HWND hWnd = CreateWindowEx( 
		WS_EX_CLIENTEDGE,
		pszClassName, "我的记事本", 
		WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,
		CW_USEDEFAULT, CW_USEDEFAULT,
		CW_USEDEFAULT, NULL, hMenu, g_hInst,
		NULL );
	return hWnd;
}

void DisplayWnd( HWND hWnd )
{
	ShowWindow( hWnd, SW_SHOW );
	UpdateWindow( hWnd );
}

void Message( )
{
	MSG msg = { 0 };
	while( GetMessage( &msg, NULL, 0, 0 ) )
	{
		TranslateMessage( &msg );
		DispatchMessage( &msg );
	}
}

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
	g_hInst = hInstance;
	RegisterWnd( "MYWND" );
	HWND hWnd = CreateWnd( "MYWND" );
	DisplayWnd( hWnd );
	Message( );
	return 0;
}


//上面是一个记事本小程序

// WinComboBox.cpp : Defines the entry point for the application.//#include "stdafx.h"#include "stdio.h"#include "resource.h"HINSTANCE g_hInst = NULL;void OnCreate( HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam ){ //简单组合框的创建CreateWindow( "COMBOBOX", "SIMPLE",WS_CHILD|WS_VISIBLE|CBS_SIMPLE,50, 50, 120, 300, hWnd, (HMENU)1001, g_hInst, NULL );//下拉式组合框的创建CreateWindow( "COMBOBOX", "DROPDOWN",WS_CHILD|WS_VISIBLE|WS_VSCROLL|CBS_DROPDOWN,200, 50, 120, 300, hWnd,(HMENU)1002, g_hInst, NULL );//下拉列表式组合框的创建CreateWindow( "COMBOBOX", "DROPDOWNLIST",WS_CHILD|WS_VISIBLE|WS_VSCROLL|CBS_DROPDOWNLIST,350, 50, 120, 100, hWnd,(HMENU)1003, g_hInst, NULL );}void OnAdd( HWND hWnd ){ //获取COMBOBOX窗口句柄HWND hSimple = GetDlgItem( hWnd, 1001 );HWND hDropDown = GetDlgItem( hWnd, 1002 );HWND hDropList = GetDlgItem( hWnd, 1003 );//添加多个选项CHAR szText[] = "ComboBox 0";for( int nIndex=0; nIndex<10; nIndex++ ){ //添加选项LRESULT nItem = SendMessage( hSimple, CB_ADDSTRING, 0, (LPARAM)szText );//设置项的数据SendMessage( hSimple, CB_SETITEMDATA,nItem, 100+nIndex );SendMessage( hDropDown, CB_ADDSTRING, 0, (LPARAM)szText );SendMessage( hDropList, CB_ADDSTRING, 0, (LPARAM)szText );//改变选项内容szText[9]++;}}void OnDel( HWND hWnd ){ //获取COMBOBOX窗口句柄HWND hSimple = GetDlgItem( hWnd, 1001 );HWND hDropDown = GetDlgItem( hWnd, 1002 );HWND hDropList = GetDlgItem( hWnd, 1003 );//删除指定项SendMessage( hSimple, CB_DELETESTRING, 5, 0 );SendMessage( hDropDown, CB_DELETESTRING, 5, 0 );SendMessage( hDropList, CB_DELETESTRING, 5, 0 );}void OnReset( HWND hWnd ){ //获取COMBOBOX窗口句柄HWND hSimple = GetDlgItem( hWnd, 1001 );HWND hDropDown = GetDlgItem( hWnd, 1002 );HWND hDropList = GetDlgItem( hWnd, 1003 );//清空所有项SendMessage( hSimple, CB_RESETCONTENT, 0, 0 );SendMessage( hDropDown, CB_RESETCONTENT, 0, 0 );SendMessage( hDropList, CB_RESETCONTENT, 0, 0 );}void OnSelect( HWND hWnd ){ //获取COMBOBOX窗口句柄HWND hSimple = GetDlgItem( hWnd, 1001 );HWND hDropDown = GetDlgItem( hWnd, 1002 );HWND hDropList = GetDlgItem( hWnd, 1003 );//获取和设置选择项LRESULT nSel = SendMessage( hSimple, CB_GETCURSEL, 0, 0 );//获取数据LRESULT nValue = SendMessage( hSimple, CB_GETITEMDATA, nSel, 0 );CHAR szInfo[260] = { 0 };sprintf( szInfo, "%d", nValue );MessageBox( NULL, szInfo, "WinCombo", MB_OK );//设置选择项SendMessage( hDropDown, CB_SETCURSEL, nSel, 0 );CHAR szText[] = "ComboBox 5";SendMessage( hDropList, CB_SELECTSTRING, -1, (LPARAM)szText );}void OnFind( HWND hWnd ){ //获取COMBOBOX窗口句柄HWND hSimple = GetDlgItem( hWnd, 1001 );HWND hDropDown = GetDlgItem( hWnd, 1002 );HWND hDropList = GetDlgItem( hWnd, 1003 );//查找字符串CHAR szText[] = "ComboBox 5";LRESULT nFind1 = SendMessage( hSimple, CB_FINDSTRING, -1, (LPARAM)szText );SendMessage( hDropDown, CB_SETCURSEL, nFind1, 0 );SendMessage( hDropList, CB_SETCURSEL, nFind1, 0 );}void OnPath( HWND hWnd ){ //获取COMBOBOX窗口句柄HWND hSimple = GetDlgItem( hWnd, 1001 );HWND hDropDown = GetDlgItem( hWnd, 1002 );HWND hDropList = GetDlgItem( hWnd, 1003 );//显示目录CHAR szPath[MAX_PATH] = "C:\\*.*";SendMessage( hSimple, CB_DIR,DDL_DIRECTORY|DDL_ARCHIVE,(LPARAM)szPath );SendMessage( hDropDown, CB_DIR,DDL_DIRECTORY|DDL_ARCHIVE,(LPARAM)szPath );SendMessage( hDropList, CB_DIR,DDL_DIRECTORY|DDL_ARCHIVE,(LPARAM)szPath );}void OnCommand( HWND hWnd, UINT nMsg,WPARAM wParam, LPARAM lParam ){int nNotifyCode = HIWORD( wParam );int nEventID = LOWORD( wParam );switch( nEventID ){case ID_ADD:OnAdd( hWnd );break;case ID_DEL:OnDel( hWnd );break;case ID_RESET:OnReset( hWnd );break;case ID_SEL:OnSelect( hWnd );break;case ID_FIND:OnFind( hWnd );break;case ID_PATH:OnPath( hWnd );break;case 1001:{HWND hSimple = GetDlgItem( hWnd, 1001 );HWND hDropDown = GetDlgItem( hWnd, 1002 );HWND hDropList = GetDlgItem( hWnd, 1003 );LRESULT nSel = 0;switch( nNotifyCode ){case CBN_SELCHANGE:nSel = SendMessage( hSimple, CB_GETCURSEL, 0, 0 );SendMessage( hDropDown, CB_SETCURSEL, nSel, 0 );SendMessage( hDropList, CB_SETCURSEL, nSel, 0 );//MessageBox( NULL, "CBN_SELCHANGE",// "WinCombo", MB_OK );break;}}break;}}LRESULT CALLBACK WndProc( HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam ){switch( nMsg ){case WM_CREATE:OnCreate( hWnd, nMsg, wParam, lParam );break;case WM_COMMAND:OnCommand( hWnd, nMsg, wParam, lParam );break;case WM_DESTROY:PostQuitMessage( 0 );return 0;}return DefWindowProc( hWnd, nMsg,wParam, lParam );}BOOL RegisterWnd( LPSTR pszClassName ){WNDCLASSEX wce = { 0 };wce.cbSize = sizeof( wce );wce.cbClsExtra = 0;wce.cbWndExtra = 0;wce.hbrBackground = HBRUSH(COLOR_BTNFACE+1);wce.hCursor = NULL;wce.hIcon = NULL;wce.hIconSm = NULL;wce.hInstance = g_hInst;wce.lpfnWndProc = WndProc;wce.lpszClassName = pszClassName;wce.lpszMenuName = NULL;wce.style = CS_HREDRAW|CS_VREDRAW;ATOM nAtom = RegisterClassEx( &wce );if( 0 == nAtom ){return FALSE;}return TRUE;}HWND CreateWnd( LPSTR pszClassName ){HMENU hMenu = LoadMenu( g_hInst,MAKEINTRESOURCE(IDR_MAIN) );HWND hWnd = CreateWindowEx( 0,pszClassName, "MyWnd", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT, NULL, hMenu, g_hInst,NULL );return hWnd;}void DisplayWnd( HWND hWnd ){ShowWindow( hWnd, SW_SHOW );UpdateWindow( hWnd );}void Message( ){MSG msg = { 0 };while( GetMessage( &msg, NULL, 0, 0 ) ){TranslateMessage( &msg );DispatchMessage( &msg );}}int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){g_hInst = hInstance;RegisterWnd( "MYWND" );HWND hWnd = CreateWnd( "MYWND" );DisplayWnd( hWnd );Message( );return 0;}



你可能感兴趣的:(按钮 下拉列表 还有一个简单的记事本 文件读写等)