文档章节

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

涂孟超
 涂孟超
发布于 2014/09/26 15:36
字数 391
阅读 3
收藏 0
点赞 0
评论 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.

 
 
 
 
 

 

 

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

© 著作权归作者所有

共有 人打赏支持
涂孟超
粉丝 12
博文 2004
码字总数 14107
作品 0
深圳
程序员
c#调用COM组件

使用工具:Windows Forms ActiveX Control Importer (Aximp.exe)Aximp可以将ActiveX 控件的 COM 类型库中的类型定义转换为 Windows 窗体控件。 Windows窗体只能加载Windows窗体控件--继承自C...

amath0312 ⋅ 2013/05/18 ⋅ 0

MoreWindows博客目录(微软最有价值专家,原创技术文章152篇)

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

morewindows ⋅ 2013/12/24 ⋅ 0

C# WinForm开发系列 - GDI+

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

长征2号 ⋅ 2017/11/14 ⋅ 0

使用C++绘制不规则的窗体

使用C++绘制不规则的窗体   一、序言   在绝大多数的Windows应用程序中,其窗体都是使用的正规正矩的矩形窗体,例如我们常用的,“记事本”,“扫雷”,等等。矩形窗体,具有编程实现简单...

IMGTN ⋅ 2012/06/17 ⋅ 0

使用 .NET 框架轻松开发完美的 Web 窗体控件

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

晨曦之光 ⋅ 2012/03/09 ⋅ 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

Windows8/Silverlight/WPF/WP7/HTML5周学习导读(1月28日-2月3日)

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

冷秋寒 ⋅ 2013/02/06 ⋅ 0

sudami和achillis对初学者的建议

sudami对初学者的一点建议 1. 若对Windows底层开发没有兴趣,不建议继续深究, 若有些兴趣可以继续。 2. 先广泛打基础,比如C/ASM/C++/MFC,再学习Windows核心编程,对R3上的一些开发有所熟悉...

狂斩一条龙 ⋅ 2012/06/15 ⋅ 0

myeclipse使用hibernate正向工程和逆向工程

1.myeclipse使用hibernate正向工程,hibernate的正向工程是指从java实体类生成数据库表的过程,这种过程符合java程序员面向对象编程的思想,也是工程设计的时候使用比较多的一种思想。具体实...

linsir ⋅ 2010/06/29 ⋅ 0

C#从入门到精通之Windows窗体

1.Form窗体 1.1 设置启动窗口:Application.Run(new Form1()); 1.2 窗体的属性 1.更改窗体的图标:在属性面板中设置窗口的Icon属性(在添加窗体图标时图标格式只能是ico) 2.隐藏窗体的标题栏...

tiegenz ⋅ 03/23 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

SpringCloud 微服务 (六) 服务通信 RestTemplate

壹 通信的方式主要有两种,Http 和 RPC SpringCloud使用的是Http方式通信, Dubbo的通信方式是RPC 记录学习SpringCloud的restful方式: RestTemplate (本篇)、Feign 贰 RestTemplate 类似 Http...

___大侠 ⋅ 3分钟前 ⋅ 0

React创建组件的三种方式

1.无状态函数式组建 无状态函数式组件,也就是你无法使用State,也无法使用组件的生命周期方法,这就决定了函数组件都是展示性组件,接收Props,渲染DOM,而不关注其他逻辑。 无状态函数式组...

kimyeongnam ⋅ 10分钟前 ⋅ 0

react 判断实例类型

今天在写组件的时候想通过判断内部子元素不同而在父元素上应用不同的class,于是首先要解决的就是如何判断子元素的类型。 这里附上一个讲的很全面的文章: https://www.cnblogs.com/onepixel...

球球 ⋅ 16分钟前 ⋅ 0

Centos7备份数据到百度网盘

一、关于 有时候我们需要进行数据备份,如果能自动将数据备份到百度网盘,那将会非常方便。百度网盘有较大的存储空间,而且不怕数据丢失,安全可靠。下面简单的总结一下如何使用 bypy 实现百...

zctzl ⋅ 30分钟前 ⋅ 0

开启远程SSH

SSH默认没有开启账号密码登陆,需要再配置表中修改: vim /etc/ssh/sshd_configPermitRootLogin yes #是否可以使用root账户登陆PasswordAuthentication yes #是都开启密码登陆ser...

Kefy ⋅ 33分钟前 ⋅ 0

Zookeeper3.4.11+Hadoop2.7.6+Hbase2.0.0搭建分布式集群

有段时间没更新博客了,趁着最近有点时间,来完成之前关于集群部署方面的知识。今天主要讲一讲Zookeeper+Hadoop+Hbase分布式集群的搭建,在我前几篇的集群搭建的博客中已经分别讲过了Zookeep...

海岸线的曙光 ⋅ 41分钟前 ⋅ 0

js保留两位小数方法总结

本文是小编针对js保留两位小数这个大家经常遇到的经典问题整理了在各种情况下的函数写法以及遇到问题的分析,以下是全部内容: 一、我们首先从经典的“四舍五入”算法讲起 1、四舍五入的情况...

孟飞阳 ⋅ 59分钟前 ⋅ 0

python log

python log 处理方式 log_demo.py: 日志代码。 #! /usr/bin/env python# -*- coding: utf-8 -*-# __author__ = "Q1mi""""logging配置"""import osimport logging.config# 定义三种......

inidcard ⋅ 今天 ⋅ 0

mysql 中的信息数据库以及 shell 查询 sql

Information_schema 是 MySQL 自带的信息数据库,里面的“表”保存着服务器当前的实时信息。它提供了访问数据库元数据的方式。 什么是元数据呢?元数据是关于数据的数据,如数据库名或表名,...

blackfoxya ⋅ 今天 ⋅ 0

maven配置阿里云镜像享受飞的感觉

1.在maven目录下的conf/setting.xml中找到mirrors添加如下内容,对所有使用改maven打包的项目生效。 <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.al......

kalnkaya ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部