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

本文详细解析了WinEdit与WinComboBox在Windows应用程序中的实现方式,包括文本编辑功能如保存、打开、文本操作等,以及组合框组件的创建、添加、删除、复位、选择、查找和路径显示等功能的实现细节。
// 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;}



本系统旨在构建一套面向高等院校的综合性教务管理平台,涵盖学生、教师及教务处三个核心角色的业务需求。系统设计着重于实现教学流程的规范化与数据处理的自动化,以提升日常教学管理工作的效率与准确性。 在面向学生的功能模块中,系统提供了课程选修服务,学生可依据培养方案选择相应课程,并生成个人专属的课表。成绩查询功能支持学生查阅个人各科目成绩,同时系统可自动计算并展示该课程的全班最高分、平均分、最低分以及学生在班级内的成绩排名。 教师端功能主要围绕课程与成绩管理展开。教师可发起课程设置申请,提交包括课程编码、课程名称、学分学时、课程概述在内的新课程信息,亦可对已开设课程的信息进行更新或撤销。在课程管理方面,教师具备录入所授课程期末考试成绩的权限,并可导出选修该课程的学生名单。 教务处作为管理中枢,拥有课程审批与教学统筹两大核心职能。课程设置审批模块负责处理教师提交的课程申请,管理员可根据教学计划与资源情况进行审核批复。教学安排模块则负责全局管控,包括管理所有学生的选课最终结果、生成包含学号、姓名、课程及成绩的正式成绩单,并能基于选课与成绩数据,统计各门课程的实际选课人数、最高分、最低分、平均分以及成绩合格的学生数量。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值