吉林大学:《Windows程序设计》课程电子教案(PPT课件)Windows程序设计教学课件(2/2,主讲人:翟慧杰)

/函数:WndProc /作用:主窗口消息循环 LRESULT CALLBACK WndProc (HWND hwnd,UINT iMsg, WPARAM wParam,LPARAM IParam) static BOOL bNeedSave FALSE; ∥是否保存文件的标志 static char szFileName[MAX PATH];/文件名 static char SzTitleName[MAX FNAME MAX EXT]; static HINSTANCE hInst,./应用程序句柄 static HWND hwndEdit;:/编辑框句柄 static int iOffset; static UINT iMsgFindReplace; LPFINDREPLACE pfr:
//函数:WndProc //作用:主窗口消息循环 LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam) { static BOOL bNeedSave = FALSE; //是否保存文件的标志 static char szFileName[_MAX_PATH];//文件名 static char szTitleName[_MAX_FNAME + _MAX_EXT]; static HINSTANCE hInst;//应用程序句柄 static HWND hwndEdit;//编辑框句柄 static int iOffset; static UINT iMsgFindReplace; LPFINDREPLACE pfr;

switch (iMsg) case WM CREATE:/创建窗口 hInst =((LPCREATESTRUCT)IParam)->hInstance /创建编辑框 hwndEdit Create Window ("edit",NULL, WS CHILD WS VISIBLE WS HSCROLL WS VSCROLL WS BORDER ES LEFT ES MULTILINE ES NOHIDESEL ES AUTOHSCROLL ES AUTOVSCROLL, 0,0,0,0 hwnd,(HMENU)EDITID,hInst,NULL)
switch (iMsg) { case WM_CREATE: //创建窗口 hInst = ((LPCREATESTRUCT) lParam) -> hInstance ; //创建编辑框 hwndEdit = CreateWindow ("edit", NULL, WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL |WS_BORDER | ES_LEFT | ES_MULTILINE |ES_NOHIDESEL | ES_AUTOHSCROLL | ES_AUTOVSCROLL, 0, 0, 0, 0, hwnd, (HMENU) EDITID, hInst, NULL) ;

SendMessage (hwndEdit,EM LIMITTEXT,32000,OL); PopFilelnitialize(hwnd);∥初始化ofn /注册消息FINDMSGSTRING iMsgFindReplace Register WindowMessage (FINDMSGSTRING); Istrcpy(szFileName,(PSTR)(((LPCREATESTRUCT) IParam)->lpCreateParams)); if (strlen (szFileName)>0) { GetFileTitle (szFileName,SZTitleName,sizeof (szTitleName)); /获取文件名 if(!PopFileRead(hwndEdit,.szFileName)/读文件 OkMessage(hwnd,"文件%s不能读取!",SzTitleName); } DoCaption (hwnd,sZTitleName); return 0; case WM SETFOCUS: SetFocus(hwndEdit):/∥使编辑框获得焦点 return 0;
SendMessage (hwndEdit, EM_LIMITTEXT, 32000, 0L); PopFileInitialize (hwnd); //初始化ofn /注册消息FINDMSGSTRING iMsgFindReplace = RegisterWindowMessage (FINDMSGSTRING) ; lstrcpy (szFileName, (PSTR) (((LPCREATESTRUCT) lParam)->lpCreateParams)) ; if (strlen (szFileName) > 0) { GetFileTitle (szFileName, szTitleName, sizeof (szTitleName)); //获取文件名 if (!PopFileRead (hwndEdit, szFileName))//读文件 OkMessage (hwnd, "文件 %s 不能读取!", szTitleName); } DoCaption (hwnd, szTitleName); return 0; case WM_SETFOCUS: SetFocus (hwndEdit); //使编辑框获得焦点 return 0;

case WM SIZE: Move Window (hwndEdit,0,0, LOWORD (IParam), HIWORD (IParam),TRUE): return 0; case WM COMMAND:/菜单命令 if(IParam &LOWORD (wParam)==EDITID) { switch (HIWORD (wParam)) { case EN UPDATE: bNeedSave =TRUE: return 0; case EN ERRSPACE case EN MAXTEXT: MessageBox(hwnd,"编辑框超出边界!.", SzAppName,MB_OK MB ICONSTOP); return 0;
case WM_SIZE: MoveWindow (hwndEdit, 0, 0, LOWORD (lParam), HIWORD (lParam), TRUE); return 0; case WM_COMMAND:// 菜单命令 if (lParam && LOWORD (wParam) == EDITID) { switch (HIWORD (wParam)) { case EN_UPDATE: bNeedSave = TRUE; return 0; case EN_ERRSPACE: case EN_MAXTEXT: MessageBox (hwnd, "编辑框超出边界!.", szAppName, MB_OK | MB_ICONSTOP); return 0; }

break; switch (LOWORD (wParam)) ∥来自文件菜单的消息 case IDM NEW:/新建 if (bNeedSave &IDCANCEL =AskAboutSave (hwnd,sZTitleName)) return 0; SetWindowText (hwndEdit,"\0"); szFileName[0]=\0'; SZTitleName[0]=0'; DoCaption (hwnd,szTitleName); bNeedSave FALSE; return 0; case IDM OPEN:/打开文件 if(bNeedSave &IDCANCEL ==AskAboutSave (hwnd,szTitleName)) return 0
break; } switch (LOWORD (wParam)) { // 来自文件菜单的消息 case IDM_NEW://新建 if (bNeedSave && IDCANCEL ==AskAboutSave (hwnd, szTitleName)) return 0; SetWindowText (hwndEdit, "\0"); szFileName[0] = '\0'; szTitleName[0] = '\0'; DoCaption (hwnd, szTitleName); bNeedSave = FALSE; return 0; case IDM_OPEN://打开文件 if (bNeedSave && IDCANCEL ==AskAboutSave (hwnd, szTitleName)) return 0 ;

/弹出Open对话框 if (PopFileOpenDlg (hwnd,szFileName,sZTitleName)) /读文件 if (!PopFileRead (hwndEdit,szFileName)) OkMessage(hwnd,"不能读取文件osl",SZTitleName), szFileName[0]=\0'; SZTitleName[0]=\0'; DoCaption (hwnd,szTitleName); bNeedSave FALSE; return 0; case IDM SAVE:/保存 if (szFileName[0])
//弹出Open对话框 if (PopFileOpenDlg (hwnd, szFileName, szTitleName)) { //读文件 if (!PopFileRead (hwndEdit, szFileName)) { OkMessage (hwnd, "不能读取文件%s!",szTitleName); szFileName[0] = '\0'; szTitleName[0] = '\0'; } } DoCaption (hwnd, szTitleName); bNeedSave = FALSE; return 0; case IDM_SAVE://保存 if (szFileName[0]) {

/写文件 if (PopFileWrite (hwndEdit,szFileName)) bNeedSave FALSE; return 1; else OkMessage(hwnd,"不能写文件%s",SzTitleName); return 0;
//写文件 if (PopFileWrite (hwndEdit, szFileName)) { bNeedSave = FALSE; return 1; } else OkMessage (hwnd, "不能写文件 %s",szTitleName) ; return 0; }

case IDM SAVEAS:/另存为 /弹出Save AS对话框 if (PopFileSaveDlg (hwnd,szFileName,szTitleName)) DoCaption (hwnd,sZTitleName); if(PopFile Write (hwndEdit,szFileName)) bNeedSave FALSE; return 1; else OkMessage(hwnd,"不能写文件%s",SZTitleName), return 0; case IDM EXIT:/结束 SendMessage (hwnd,WM CLOSE,0,0); return 0;
case IDM_SAVEAS://另存为 //弹出Save AS对话框 if (PopFileSaveDlg (hwnd, szFileName, szTitleName)) { DoCaption (hwnd, szTitleName) ; if (PopFileWrite (hwndEdit, szFileName)) { bNeedSave = FALSE; return 1; } else OkMessage (hwnd, "不能写文件%s",szTitleName) ; } return 0; case IDM_EXIT://结束 SendMessage (hwnd, WM_CLOSE, 0, 0); return 0;

case IDM UNDO/撤消 SendMessage (hwndEdit,WM UNDO,0,0); return 0; case IDM CUT:/剪切 SendMessage (hwndEdit,WM CUT,0,0): return 0; case IDM COPY:/复制 SendMessage (hwndEdit,WM COPY,0,0); return 0; case IDM PASTE:/粘贴 SendMessage (hwndEdit,WM PASTE,0,0); return 0; case IDM CLEAR:/清空 SendMessage (hwndEdit,WM CLEAR,0,0); return 0; case IDM SELALL:/全选 SendMessage (hwndEdit,EM SETSEL,0,-1); return 0;
case IDM_UNDO ://撤消 SendMessage (hwndEdit, WM_UNDO, 0, 0); return 0; case IDM_CUT: //剪切 SendMessage (hwndEdit, WM_CUT, 0, 0); return 0; case IDM_COPY://复制 SendMessage (hwndEdit, WM_COPY, 0, 0); return 0; case IDM_PASTE://粘贴 SendMessage (hwndEdit, WM_PASTE, 0, 0); return 0; case IDM_CLEAR://清空 SendMessage (hwndEdit, WM_CLEAR, 0, 0); return 0; case IDM_SELALL://全选 SendMessage (hwndEdit, EM_SETSEL, 0, -1); return 0;

case IDM FIND:/查找 SendMessage (hwndEdit,EM GETSEL, NULL,(LPARAM)&iOffset); hDlgModeless PopFindFindDlg (hwnd); return 0; case IDM NEXT:/查找下一处 SendMessage (hwndEdit,EM GETSEL,NULL,(LPARAM)&iOffset); if(PopFind ValidFind () PopFindNextText (hwndEdit,&iOffset); else hDlgModeless PopFindFindDlg (hwnd); return 0; case IDM REPLACE:/替换 SendMessage (hwndEdit,EM GETSEL,NULL,(LPARAM)&iOffset); hDlgModeless PopFindReplaceDlg (hwnd); return O;
case IDM_FIND://查找 SendMessage (hwndEdit, EM_GETSEL, NULL,(LPARAM) &iOffset); hDlgModeless = PopFindFindDlg (hwnd); return 0; case IDM_NEXT://查找下一处 SendMessage (hwndEdit, EM_GETSEL, NULL,(LPARAM) &iOffset); if (PopFindValidFind ()) PopFindNextText (hwndEdit, &iOffset); else hDlgModeless = PopFindFindDlg (hwnd); return 0; case IDM_REPLACE://替换 SendMessage (hwndEdit, EM_GETSEL, NULL,(LPARAM) &iOffset); hDlgModeless = PopFindReplaceDlg (hwnd); return 0; }
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 吉林大学:《Windows程序设计》课程电子教案(PPT课件)Windows程序设计教学课件(1/2,主讲人:翟慧杰).ppt
- 吉林大学:《数据结构》课程电子教案(PPT课件)第四章 栈和队列.ppt
- 吉林大学:《数据结构》课程电子教案(PPT课件)第六章 树.ppt
- 吉林大学:《数据结构》课程电子教案(PPT课件)第五章 数组、字符串、集合类.ppt
- 吉林大学:《数据结构》课程电子教案(PPT课件)第二章 面向对象程序设计与C++语言.ppt
- 吉林大学:《数据结构》课程电子教案(PPT课件)第八章 排序.ppt
- 吉林大学:《数据结构》课程电子教案(PPT课件)第三章 线性表.ppt
- 吉林大学:《数据结构》课程电子教案(PPT课件)第七章 图.ppt
- 吉林大学:《数据结构》课程电子教案(PPT课件)第一章 绪论(主讲人:徐沛娟).ppt
- 《数据库管理及应用》课程电子教案(PPT课件)6.04 Normal Form of Relation 关系规范化.ppt
- 《数据库管理及应用》课程电子教案(PPT课件)6.03 Introduction to Normal Form of relation 关系规范化导论.ppt
- 《数据库管理及应用》课程电子教案(PPT课件)6.02 Armstrong 公理体系.ppt
- 《数据库管理及应用》课程电子教案(PPT课件)6.01 Dependency of Data 数据库相关性.ppt
- 《数据库管理及应用》课程电子教案(PPT课件)5.09 Concurrent Control Based Time Stamp 基于时间标记的并发控制技术.ppt
- 《数据库管理及应用》课程电子教案(PPT课件)5.08 Multiple Granularity Locking 多粒度封锁.ppt
- 《数据库管理及应用》课程电子教案(PPT课件)5.07 concurrent control Based time stamp 基于时间标记的并发控制技术.ppt
- 《数据库管理及应用》课程电子教案(PPT课件)5.06 Examination dead lock 死锁的检测.ppt
- 《数据库管理及应用》课程电子教案(PPT课件)5.05 Locking Protocol 加锁协议.ppt
- 《数据库管理及应用》课程电子教案(PPT课件)5.04 Concurrent Control Introduction 并发控制引论.ppt
- 《数据库管理及应用》课程电子教案(PPT课件)5.03 Execution and Recovery of Update Transaction 更新事务的执行与恢复.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第一章 计算机图形学简介 第一节 计算机图形学 第二节 计算机图形学的起源.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第三章 图形变换 第一节 变换的数学基础 第二节 二维图形变换 第三节 二维视见变换.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第二章 图形基元的显示 第一节 直线扫描转换算法.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第一章 计算机图形学简介 第三节 计算机图形学的应用及发展动向 第四节 图形系统的硬件.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第二章 图形基元的显示 第四节 多边形的扫描转换算法.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第三章 图形变换 第四节 三维图形变换.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第二章 图形基元的显示 第四节(2/2).ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第二章 图形基元的显示 第二节 圆的扫描转换算法 第三节 区域填充算法.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第三章 图形变换 第五节 投影.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第四章 曲线和曲面 第一节 曲线和曲面表示的基础知识 第二节Hermite多项式.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第四章 曲线和曲面 第四节 Bezier曲线和曲面.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第四章 曲线和曲面 第三节 Coons曲面.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第四章 曲线和曲面 第五节 B样条曲线和曲面.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第五章 图形运算 第一节 线段的交点计算.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第四章 曲线和曲面 第四节(2/2).ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第三章 图形变换 第六节 裁剪.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第五章 图形运算 第五节(2/2).ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第六章 形体的表示及其数据结构 第二节(2/2).ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第六章 形体的表示及其数据结构 第一节 图形的分段表示 第二节 二维形体的表示.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第六章 形体的表示及其数据结构 第三节 四叉树 第四节 三维几何模型.ppt