文档章节

Windows 编程[1] - 窗体生成的过程一

涂孟超
 涂孟超
发布于 2014/09/26 15:34
字数 237
阅读 8
收藏 0
点赞 0
评论 0
本例效果图:



新建一个控制台程序, 贴入下面代码即可运行:
program Project1;

uses
  Windows, Messages;

{等待调用的过程, 用于在窗体上绘制文本}
Procedure OnPaint(h: HDC);
const
  s = 'CodeGear Delphi 2007';
begin
  TextOut(h, 10, 10, PChar(s), Length(s));
end;

{窗口回调过程}
function WndProc(wnd: HWND; msg: UINT; wParam: Integer; lParam: Integer): Integer; stdcall;
var
  Handle: HDC;
  ps: PAINTSTRUCT;
begin
  case msg of
    WM_PAINT: begin
        Handle := BeginPaint(wnd, ps);
        OnPaint(Handle);
        EndPaint(wnd, ps);
        result := 0;
     end;
    WM_DESTROY: begin
        PostQuitMessage(0);
        result := 0;
      end;
   else
      Result := DefWindowProc(wnd, msg, wParam, lParam);
   end;
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         := LoadIcon(0, IDI_QUESTION);
   MyWndClass.hCursor       := LoadCursor(0, IDC_ARROW);
   MyWndClass.hbrBackground := HBRUSH(GetStockObject(WHITE_BRUSH));
   MyWndClass.lpszMenuName  := nil;
   MyWndClass.lpszClassName := 'MyWindowClass';

   RegisterClass(MyWndClass);

   hWnd := CreateWindow('MyWindowClass', '这是窗口标题', WS_OVERLAPPEDWINDOW,
      100, 100, 250, 150, 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

lichao/angular-ocDialog

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

lichao ⋅ 2015/10/13 ⋅ 0

C# WinForm开发系列 - GDI+

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

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

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

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

晨曦之光 ⋅ 2012/03/09 ⋅ 0

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

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

IMGTN ⋅ 2012/06/17 ⋅ 0

Qt中动态加载窗口

在编程中,我经常会遇见要根据用户触发按钮,动态生成窗口的情况。在此有两种方法可以动态生成窗口:一:直接在槽函数中调用窗口类。二:将**.ui添加到资源文件,通过QUiLoader加载。 现将两...

乔三爷 ⋅ 2017/08/06 ⋅ 0

Invoke and BeginInvoke

在Invoke或者BeginInvoke的使用中无一例外地使用了委托Delegate,至于委托的本质请参考我的另一随笔:对.net事件的看法。 一、为什么Control类提供了Invoke和BeginInvoke机制? 关于这个问题...

回忆在昨天 ⋅ 2012/10/23 ⋅ 0

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

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

linsir ⋅ 2010/06/29 ⋅ 0

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

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

morewindows ⋅ 2013/12/24 ⋅ 0

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

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

tiegenz ⋅ 03/23 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Windows下安装运行phpMyAdmin

首先确保安装了phpMyAdmin,其次要求服务器是打开的。 如果是在Windows下,建议下载安装WampServer,这是一个集成软件,集成了Apache+MySQL+PHP的开发环境,而且也自带了phpMyAdmin这个软件。...

临江仙卜算子 ⋅ 3分钟前 ⋅ 0

jdk1.8 安装及环境变量配置

1.根据jdk 的软件安装包,首先安装,jdk,

kuchawyz ⋅ 4分钟前 ⋅ 0

给Java字节码加上”翅膀“的JIT编译器

给Java字节码加上”翅膀“的JIT编译器 上面文章在介绍Java的内存模型的时候,提到过由于编译器的优化会导致重排序的问题,其中一个比较重要的点地方就是关于JIT编译器的功能。JIT的英文单词是...

九劫散仙 ⋅ 4分钟前 ⋅ 0

PCI简介(二)

1.x86处理器系统地址空间简介 1.1 CPU地址空间 CPU地址空间是指CPU所能寻址的空间大小,比如对于32位CPU来说,其所能寻址的空间大小为0~4G。这是由CPU自身的地址总线数目决定的。这段空间也被...

深山野老 ⋅ 6分钟前 ⋅ 0

spring中的InitializingBean接口

好久没更博了,真有点怀念,前段时间刚和上家公司say bye,这次进的是电商公司,今天刚开始看代码,逻辑很复杂。 今天看的注册功能,里面见到一个知识点,现在记录一下,今天看项目时见到里面...

千元机爱好者 ⋅ 7分钟前 ⋅ 0

机器学习:数据预处理之独热编码(One-Hot)

前言 ———————————————————————————————————————— 在机器学习算法中,我们经常会遇到分类特征,例如:人的性别有男女,祖国有中国,美国,法国等。 ...

NateHuang ⋅ 15分钟前 ⋅ 0

MyBatis之输入与输出(resultType、resultMap)映射

在MyBatis中,我们通过parameterType完成输入映射(指将值映射到sql语句的占位符中,值的类型与dao层响应方法的参数类型一致),通过resultType完成输出映射(从数据库中输出,通过dao层的方法查...

瑟青豆 ⋅ 16分钟前 ⋅ 0

屏蔽运营商广告劫持

在今天早上我查找知乎时再次遇到了恶心的运营商广告劫持,右下角硕大的广告直接让知乎挂掉了,我刷了五次知乎才好,之前休息的时候逛知乎也是多次加载错误,估计也是这劫持的锅,相信各位也遇...

gcudwork ⋅ 20分钟前 ⋅ 0

java web 进度条实现原理

资料路径 https://blog.csdn.net/fengsheng5210/article/details/79305026

zaolonglei ⋅ 20分钟前 ⋅ 0

命令行输出java版本与环境变量配置的不一样问题解决

问题:java10刚出来,本着好奇的心,急切的装了体验一下,然后实际项目需求还是java8,所以体验完了就把环境变量改回来了,但是出现了一个问题,命令行输出java版本与环境变量配置的不一样,...

消散了的诗意 ⋅ 23分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部