Windows SDK笔记(二):在窗口上建立控件

一、概述

控件是子窗口,它们是系统已经定义好的窗口类,因此不需要注册、

也不需要写消息处理函数。

在主窗口得到WM_CREATE消息时,建立子窗口即可。

二、实例

//参数:窗口句柄,消息,消息参数,消息参数
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
//处理感兴趣的消息
switch (message)
{
case WM_CREATE:
CreateWindow(TEXT("BUTTON"), //控件"类名称"
TEXT("按钮(&A)"),
WS_CHILD | WS_VISIBLE |BS_PUSHBUTTON,
10,
10,
100,
100,
hwnd,
(HMENU)1000, //控件ID
((LPCREATESTRUCT) lParam)->hInstance,  //实例句柄
NULL);
return 0;
case WM_DESTROY:
//当用户关闭窗口,窗口销毁,程序需结束,发退出消息,以退出消息循环
PostQuitMessage (0) ;
return 0 ;
}
//其他消息交给由系统提供的缺省处理函数
return ::DefWindowProc (hwnd, message, wParam, lParam) ;
}

三、关于WM_CREATE消息

WM_CREATE 的lParam参数将会传入一个建立时信息结构指针(LPCREATESTRUCT)。

结构中包含了一些有用信息(窗口建立时的参数)。

typedef struct tagCREATESTRUCT {
LPVOID  lpCreateParams;
HINSTANCE hInstance; //实例句柄
HMENU   hMenu;
HWND   hwndParent;
int    cy;
int    cx;
int    y;
int    x;
LONG   style;
LPCTSTR  lpszName;
LPCTSTR  lpszClass;
DWORD   dwExStyle;
} CREATESTRUCT, *LPCREATESTRUCT;

时间: 2024-11-17 18:24:33

Windows SDK笔记(二):在窗口上建立控件的相关文章

窗体程序根据窗口的大小如何重新排窗口上的控件?

问题描述 窗体程序根据窗口的大小如何重新排窗口上的控件? 窗体程序根据窗口的大小如何重新排窗口上的控件?控件的自动换行自动缩放和自动调整 解决方案 在你的窗口的resize中移动你的控件到所需要的位置即可. 解决方案二: 如何控制其他程序窗体上的窗口控件:下如何控制其他程序窗体上的窗口控件如何控制其他程序窗体上的窗口控件 解决方案三: FillLayout filllayout=new FillLayout(); //创建FillLayout 对象 Filllayout.type=SWT.VER

Windows SDK笔记(经典--一定要看)

Windows SDK笔记(一):Windows程序基本结构 一.概述 Windows程序具有相对固定的结构,对编写者而言,不需要书写整个过程,大部分过程由系统完成.程序中只要按一定的格式填写系统留给客户的那一小部分.所需要完成的有:窗口类的定义.窗口的建立.消息函数的书写.消息循环.   二.消息处理函数 Windows程序是事件驱动的,对于一个窗口,它的大部分例行维护是由系统维护的.没个窗口都有一个消息处理函数.在消息处理函数中,对传入的消息进行处理.系统内还有它自己的缺省消息处理函数. 客

Windows Phone开发(10):常用控件(上)

原文:Windows Phone开发(10):常用控件(上) Windows Phone的控件有几个来源,和传统的桌面应用程序开发或Web开发一样,有默认提供的控件和第三方开者发布的控件.一般而言,如果不是过于复杂的界面布局,使用默认控件就足矣.相比之下,Android SDK中尽管提供了许多可视化控件,但你会发现,实际开发用到的并不多,而且很多控件完全只是摆设,既没有公开相应的操作方法也没有更多可用于开发者自行处理的监听器(这里我习惯翻译为监听器,在安卓里面没有像C#那样使用事件,而是new一

在windows窗体上滚动条控件的起始位置是怎么自定义的?

问题描述 在windows窗体上滚动条控件的起始位置是怎么自定义的? 在windows窗体上滚动条控件的起始位置是怎么自定义的?怎么修改窗口上滚动条的布局,在上面插入快捷定位的按钮呢? 解决方案 Win32窗体的所有控件都认为是窗体,所以创建一个自定义的控件跟创建一个win32的窗体是相似的 参考此篇文章http://www.codeproject.com/KB/miscctrl/custbutton001.aspx 先通过RegisterClassEx注册一个window class,然后就在

vs2010winform窗口关闭后下次打开其上的控件如何保持原来的值?

问题描述 vs2010winform窗口关闭后下次打开其上的控件如何保持原来的值? 列如在一个窗体上有一个checkbox控件,选中后关闭窗体,再打开窗体后checkbox的选中状态没有了,请教如何才能让checkbox保持选中状态,即使关闭后下次打开还是保持上一次操作时的值 解决方案 在程序不退出的情况下可以使用静态变量: 假如程序退出后再次打开,需要将值保存起来,放到数据库,磁盘文件,注册表等地方 解决方案二: 写入到文件保存,下次读取出来填充 解决方案三: 关闭窗体之前,将checkbox

界面-vs windows窗口 按钮及控件

问题描述 vs windows窗口 按钮及控件 怎样实现 单击读取按钮btn 控件dgv 显示 文本文件.csv数据 : 这项目目录跟窗口界面 求细讲!能有代码更好! 谢谢! 解决方案 读取按钮中,根据你的csv文件路径,程序打开读取它的内容,按行读取,然后插入对话框中 http://www.cnblogs.com/Clin/archive/2013/03/14/2959022.html 解决方案二: @guwei4037

vc加载jpeg图片-vc6.0mfc加载jpeg图片,但图片上有控件,移动窗口后,图片覆盖控件

问题描述 vc6.0mfc加载jpeg图片,但图片上有控件,移动窗口后,图片覆盖控件 vc6.0mfc中使用IPicture接口实现加载jpeg图片,但图片上有控件,移动窗口后,图片覆盖控件,怎么解决图片一直保持在控件之后呢?一下是源代码: 头文件: IStream m_pStream; //定义流对象 IPicture *m_pPicture; //定义接口对象 OLE_XSIZE_HIMETRIC m_JPGWidth; //图像宽度 OLE_YSIZE_HIMETRIC m_JPGHeig

qt-如何在Qt5.上设置.窗口整体透明,但是窗体上的控件不透明。

问题描述 如何在Qt5.上设置.窗口整体透明,但是窗体上的控件不透明. 代码: HelloWord::HelloWord(QWidget *parent) : QMainWindow(parent), ui(new Ui::HelloWord) { ui->setupUi(this); QPalette pal = palette(); pal.setColor(QPalette::Background, QColor(0x00,0xff,0x00,0x00)); setPalette(pal)

Android群英传笔记——第三章:Android控件架构与自定义控件讲解

Android群英传笔记--第三章:Android控件架构与自定义控件讲解 真的很久没有更新博客了,三四天了吧,搬家干嘛的,心累,事件又很紧,抽时间把第三章大致的看完了,当然,我还是有一点View的基础的,可以先看下我之前写的几篇基础的View博客 Android绘图机制(一)--自定义View的基础属性和方法 Android绘图机制(二)--自定义View绘制形, 圆形, 三角形, 扇形, 椭圆, 曲线,文字和图片的坐标讲解 Android绘图机制(三)--自定义View的三种实现方式以及实战