Windows 编程[6] - 学习窗体生成的过程六: 最终的代码!
program Project1;usesWindows, Messages;{回调函数; 其中要处理的消息很多, 最好用 case 语句} function WndProc(wnd: HWND; msg: UINT; wParam: Integer; lParam: Integer): Integer; stdcall; beginResult := 0;case msg ofWM_DESTROY: PostQuitMessage(0); {收到 WM_DESTROY 后, 发送 WM_QUIT 消息指示退出}else{其他消息交 DefWindowProc 处理; DefWindowProc 会返回回调函数需要的返回值}Result := DefWindowProc(wnd, msg, wParam, lParam);end; end;{登记与注册窗口类的函数} function RegMyWndClass: Boolean; varMyWndClass: TWndClass; begin{指定窗口类型}MyWndClass.style := CS_HREDRAW or CS_VREDRAW; {改变大小时重绘}MyWndClass.lpfnWndProc := @WndProc; {回调函数指针}MyWndClass.cbClsExtra := 0; {没有额外的窗口类信息}MyWndClass.cbWndExtra := 0; {没有额外的窗口信息}MyWndClass.hInstance := HInstance; {程序实例句柄}MyWndClass.hIcon := 0; {没指定图标}MyWndClass.hCursor := LoadCursor(0, IDC_ARROW); {选用了系统提供的指针}MyWndClass.hbrBackground := HBRUSH(COLOR_BTNFACE + 1); {背景色使用 Windows 默认的按钮颜色}MyWndClass.lpszMenuName := nil; {不指定默认菜单}MyWndClass.lpszClassName := 'MyWindowClass'; {给窗口类型命名}Result := RegisterClass(MyWndClass) <> 0; {注册窗口类型} end;{主程序} varhWnd: THandle;Msg : TMsg; begin{调用登记与注册窗口的函数}if not RegMyWndClass thenbeginMessageBox(0, '窗口类注册失败!', '提示', MB_OK + MB_ICONERROR);Exit;end;{建立窗口并返回句柄; 既然有 CreateWindowEx 就不使用 CreateWindow 了}hWnd := CreateWindowEx(0, {不使用扩展风格}'MyWindowClass', {窗口类型名}'新窗口', {标题}WS_OVERLAPPEDWINDOW, {窗口的常规样式}Integer(CW_USEDEFAULT), {默认水平位置}Integer(CW_USEDEFAULT), {默认垂直位置}Integer(CW_USEDEFAULT), {默认宽度}Integer(CW_USEDEFAULT), {默认高度}0, {无父窗口}0, {无主菜单}HInstance, {实例句柄}nil {无附加信息});if hWnd = 0 then {如果窗口建立失败}beginMessageBox(0, '窗口建立失败!', '提示', MB_OK + MB_ICONERROR);Exit;end;{显示窗口与更新窗口}ShowWindow(hWnd, SW_SHOWNORMAL);UpdateWindow(hWnd);{消息循环; GetMessage 在收到 WM_QUIT 消息时会返回 False, 从而终止循环}while(GetMessage(Msg, 0, 0, 0)) dobeginTranslateMessage(Msg); {需要对部分键盘消息的再处理}DispatchMessage(Msg); {将消息发送给回调函数}end;Halt(Msg.wParam); {没有了消息循环程序自然会退出; 加上这句, 程序会根据退出码主动退出} end.
Windows 编程[6] - 学习窗体生成的过程六: 最终的代码!相关推荐
- Windows 编程[3] - 学习窗体生成的过程三
为什么80%的码农都做不了架构师?>>> 根据前面的理论, 一个窗口生成的框架应该是这个样子: program Project1;uses Windows; {前面提到的函数都 ...
- Windows 编程[5] - 学习窗体生成的过程五
根据前面的介绍, 可以完成一个窗口的建立了: program Project1;usesWindows, Messages;{窗口回调函数, 必须声明在使用它的程序前面} function WndPr ...
- Windows编程课程学习笔记
一. Windows程序内部运行机制--Windows编程课程学习笔记 二. MFC框架程序分析--Windows编程课程学习笔记 三. 简单绘图--Windows编程课程学习笔记 四. 文本编程-- ...
- delphi windows编程_学习C/C++:伴随我成长的编程书!
学习C++是一个艰难的过程.如果从我第一次看C++的书算起,现在已经过了11年了.一开始的动机也是很不靠谱的.刚开始我很喜欢用VB6来开发游戏,但是我能找到的资料都是用C++来做例子的,文字部分又不丰 ...
- 七. 界面编程--Windows编程课程学习笔记
7.1更改窗口大小.标题.风格 7.1.1 在窗口创建之前更改 如果希望在应用程序窗口创建之前修改它的大小.标题和风格,应该在CMainFrame类的PreCreateWindow成员函数进行.该函数 ...
- 六. 对话框编程--Windows编程课程学习笔记
6.1 对话框基本知识 对话框是一个窗口,与对话框资源相关的类为CDialog,由CWnd类派生而来.可以将对话框看成是一个大容器,在它上面能够放置各种标准和扩展控件,是用户与程序进行交互的重要手段. ...
- Windows编程-- 用户方式中线程的同步---关键代码段(临界区)
可以从例子学习,更好的掌握 #include <windows.h> #include <iostream.h> //两个线程的声明 DWORD WINAPI Fun1Proc ...
- C/C++ 编程推荐学习顺序和书籍
自学或者学习C/C++编程不知道怎么办?那么恭喜你看到本文,本文将会为你提供C/C++编程的学习书籍顺序推荐,希望对大家有帮助! C/C++语言基础入门书籍: <C Primer Plus> ...
- 少儿编程Scratch学习教程2--官方初学指南
下载完软件,可以看一下官方的初学指南.学习下基本的操作. Scratch主要由角色和背景两部分构成.其中角色和背景都是由脚本,造型和声音组成的. 打开软件就可以看见下面的界面了. 在红色的脚本区域,是 ...
- 少儿编程Scratch学习教程--Scratch介绍及参赛相关
之前写了几篇关于Scratch的使用文章.忽然想起,忘记介绍下Scratch了. Scratch是一款由麻省理工学院(MIT) 设计开发的少儿编程工具.官方网址是麻省理工学院网站的一个分支.这个软件的 ...
最新文章
- lovely desktop
- 【PAT乙级】1028 人口普查 (20 分)
- javascript --- 尾递归优化的实现
- Android 最新左右可见上下页的banner实现demo
- [记录] --- linux上项目
- 程序员加班一周休病假,犯了小错误遭开除,老板怒斥程序员不中用
- 源码完全注释:socket select
- Continuous Laplacian, Functional Map, Spectral CNN
- win10清理c盘_别再用什么管家!打开这个功能,Win10自动给你清垃圾
- [JLOI 2016]成绩比较
- javascript跑马灯效果
- RRT算法三维避障的MATLAB实现
- 雷电模拟器Android obb,exagear模拟器数据obb包
- 瑞斯康达raisecom交换机基础配置
- oracle报1405,【案例】Oracle报错ORA-15054 asm diskgroup无法mount的解决办法
- 面试系列一:精选大数据面试真题10道(混合型)-附答案详细解析
- 让复选框实现单选功能
- Linux中Web项目部署以及基本指令
- java基础之重写父类_繁星漫天_新浪博客
- Markdown的语法使用