文档章节

Windows 编程[5] - 学习窗体生成的过程五

涂孟超
 涂孟超
发布于 2014/09/26 15:36
字数 391
阅读 3
收藏 0
根据前面的介绍, 可以完成一个窗口的建立了:
program Project1;

uses
  Windows, Messages;

{窗口回调函数, 必须声明在使用它的程序前面}
function WndProc(wnd: HWND; msg: UINT; wParam: Integer; lParam: Integer): Integer; stdcall;
begin
  Result := 0;
  if msg = WM_DESTROY then {当窗口销毁时}
    PostQuitMessage(0)     {告诉 GetMessage: 退出吧!}
  else
    Result := DefWindowProc(wnd, msg, wParam, lParam); {其他消息做默认处理}
end;

{主程序}
var
  hWnd      : THandle;
  Msg       : TMsg;
  MyWndClass: 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_WINDOW + 1); {背景色使用 Windows 默认的窗口颜色}
  MyWndClass.lpszMenuName  := nil;                      {不指定默认菜单}
  MyWndClass.lpszClassName := 'MyWindowClass';          {给窗口类型命名}

  {注册窗口类型}
  RegisterClass(MyWndClass);

  {建立窗口并返回句柄}
  hWnd := CreateWindow('MyWindowClass',        {窗口类型名}
                       '新窗口',               {标题}
                       WS_OVERLAPPEDWINDOW,    {窗口的常规样式}
                       Integer(CW_USEDEFAULT), {默认水平位置}
                       Integer(CW_USEDEFAULT), {默认垂直位置}
                       Integer(CW_USEDEFAULT), {默认宽度}
                       Integer(CW_USEDEFAULT), {默认高度}
                       0,                      {无父窗口}
                       0,                      {无主菜单}
                       HInstance,              {实例句柄}
                       nil                     {无附加信息}
                       );

  {显示窗口}
  ShowWindow(hWnd, SW_SHOWNORMAL);
  //UpdateWindow(hWnd); {这个更新窗口要不要好像都可以}

  {消息循环}
  while(GetMessage(Msg, 0, 0, 0)) do
  begin
    TranslateMessage(Msg); {对部分键盘消息的再处理}
    DispatchMessage(Msg);  {将消息发送给回调函数}
  end;

end.

 
 
 
 
 

 

 

  
接下来再继续完善这些代码!

本文转载自:http://www.cnblogs.com/del/archive/2008/04/15/1155189.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
MoreWindows博客目录(微软最有价值专家,原创技术文章152篇)

为了方便大家查找和学习,现将本人博客中所有博客文章列出目录。 一. 白话经典算法 目前有17篇,分为七大排序和经典面试题讲解两大类 1. 《白话经典算法系列之一 冒泡排序的三种实现》 2. 《...

morewindows
2013/12/24
0
0
C# WinForm开发系列 - GDI+

UI(User Interface)编程在整个项目开发过程中是个颇为重要的环节,任何好的解决方案若没有良好的用户界面呈现给最终用户,那么就算包含了最先进的技术也不能算是好程序。UI编程体现在两个方...

长征2号
2017/11/14
0
0
Windows8/Silverlight/WPF/WP7/HTML5周学习导读(1月28日-2月3日)

Windows8/Silverlight/WPF/WP7/HTML5周学习导读(1月28日-2月3日) 本周Windows 8开发学习资源更新 本周Silverlight学习资源更新 本周Windows Phone开发学习资源更新 本周WPF学习资源推荐 本周...

冷秋寒
06/29
0
0
使用 .NET 框架轻松开发完美的 Web 窗体控件

作者:David S. Platt 出自:微软 本文假定您熟悉 Visual Basic .NET、C# 和 HTML 下载本文的代码: WebC.exe (274KB) 摘要 预建的自定义控件可以简化和加快应用程序的设计,并使您能够维护 ...

晨曦之光
2012/03/09
1K
0
lichao/angular-ocDialog

angular-ocDialog 基于Angular的窗体应用框架 项目状态 综合情况 综合案例,实际正在开发的项目 Demo: http://probedemo.or-change.cn/probe 托管地址: https://git.oschina.net/increase/Le...

lichao
2015/10/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

shell-日志脚本小实验

1.查找日志2018-8-15,求得那一分钟访问量最大。 #/bin/bash#from cc#2018-8-15#2018-08-15.log 哪一分钟 访问量 最大for d in `ls /data/nginx/logs/`doif [ -a 2018-08-15...

chencheng-linux
昨天
0
0
Android中的设计模式之状态模式

参考 《设计模式:可复用面向对象软件的基础 》5.8 State 状态 对象行为型模式 《Android源码设计模式解析与实战》第7章 随遇而安--状态模式 意图 允许一个对象在其内部状态改变时改变它的行...

newtrek
昨天
0
0
xshell端 vim没有颜色

说明 使用xshell连接服务器的时候,使用vim打开文档没有颜色 解决方法: 1.在更目录home或者etc下找到vim的配置文件vimrc 2.vim打开它找个坑,添加下面这个东西 set t_Co=256 3.保存退出,就...

杉下
昨天
0
0
spring 资料

spring boot http://www.ityouknow.com/springboot/2016/01/06/spring-boot-quick-start.html

zaolonglei
昨天
2
0
TypeScript基础入门 - 函数 - 简介

转载 TypeScript基础入门 - 函数 - 简介 项目实践仓库 https://github.com/durban89/typescript_demo.gittag: 1.1.6 为了保证后面的学习演示需要安装下ts-node,这样后面的每个操作都能直接...

durban
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部