博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
windows基础(二)
阅读量:6088 次
发布时间:2019-06-20

本文共 3198 字,大约阅读时间需要 10 分钟。

添加菜单和控件

添加菜单:CreateMenu()创建一个主菜单,用CreatePopupMenu()可以创建一个下拉的菜单项

AppendMenu:可以创建一个指定的菜单或者创建一个下拉的菜单

函数的格式:BOOL AppendMenu(hMenu hMenu,UINT uFlags,UINT uIDNewltem,LPCTSTR lpNewltem);

第一个参数:将要修改的菜单或者下拉菜单的句柄

第二个参数:是菜单的一些信息,如下

MF_BITMAP:将一个位图用作菜单项。参数lpNewltem里含有该位图的句柄。

MF_CHECKED:在菜单项旁边放置一个选取标记。如果应用程序提供一个选取标记,位图(参见SetMenultemBitmaps),则将选取标记位图放置在菜单项旁边。

MF_DISABLED:使菜单项无效,使该项不能被选择,但不使菜单项变灰。

MF_ENABLED:使菜单项有效,使该项能被选择,并使其从变灰的状态恢复。

MF_GRAYED:使菜单项无效并变灰,使其不能被选择。

MF_MENUBARBREAK:对条的功能同MF_MENUBREAK标志。对下拉式菜单、子菜单或,新列和旧列被垂直线分开。

MF_MENUBREAK:将菜单项放置于新行(对菜单条),或新列(对下拉式菜单、子菜单或快捷菜单)且无分割列。

MF_OWNERDRAW:指定该菜单项为自绘制菜单项。菜单第一次显示前,拥有菜单的窗口接收一个WM_MEASUREITEM消息来得到菜单项的宽和高。然后,只要菜单项被修改,都将发送WM_DRAWITEM消息给菜单拥有者的窗口程序。

MF_POPUP:指定菜单打开一个下拉式菜单或子菜单。参数uIDNewltem下拉式菜单或子菜单的句柄。此标志用来给条、打开一个下拉式菜单或于菜单的菜单项、子菜单或加一个名字。

MF_SEPARATOR:画一条水平区分线。此标志只被下拉式菜单、子菜单或快捷菜单使用。此区分线不能被变灰、无效或加亮。参数IpNewltem和uIDNewltem无用。

MF_STRING:指定菜单项是一个正文字符串;参数lpNewltem指向该字符串。

MF_UNCHECKED:不放置选取标记在菜单项旁边(缺省)。如果应用程序提供一个选取标记位图(参见SetMenultemBitmaps),则将选取标记位图放置在菜单项旁边

第三个参数:是菜单的标识符

第四个参数:是菜单的内容

 

对菜单的一些操作处理主要在消息过程函数的WM_COMMAND消息类型中,在WM_COMMAND中又根据AppendMenu中的第三个参数处理不同的信息

 

 

添加控件:添加控件可以利用CreateWindow来创建,当用来创建控件时,该函数的倒数第三个参数LPCWSTR     lpszMenuName; 的意义发生了变化,表示了该控件的标识

 

CreateWindow如果第一个参数是一个,它指定了窗口的类名。这个类名可以是任何用函数RegisterClass注册的类名,或是任何预定义的控制类名

button按钮;edit 编辑框;ComboBox组合框;LitsBox列表框;MDIClient多文档界面;ScrollBar滚动条;static静态组件;  msctls_trackbar32滑动条;msctls_progress32进度条;systabcontrol32分组框; systreeview32目录框,树行图

第三个参数指定创建窗口的风格,当创建控件的时候也可以可以指定控件风格。该参数可以是下列窗口风格的组合再加上说明部分的控制风格。风格意义:

WS_BORDER:创建一个带边框的窗口。

WS_CAPTION:创建一个有标题框的窗口(包括WS_BORDER风格)。

WS_CHILD:创建一个子窗口。这个风格不能与WS_POPUP风格合用。

WS_CHILDWINDOW:与WS_CHILD。

WS_CLIPCHILDREN:当在父内绘图时,排除子窗口区域。在创建父窗口时使用这个风格。

WS_CLIPSIBLINGS:排除子窗口之间的相对区域,也就是,当一个特定的窗口接收到时,WS_CLIPSIBLINGS 风格将所有层叠窗口排除在绘图之外,只重绘指定的子窗口。如果未指定WS_CLIPSIBLINGS风格,并且子窗口是层叠的,则在重绘子窗口的客户区时,就会重绘邻近的子窗口。

WS_DISABLED:创建一个初始状态为禁止的子窗口。一个禁止状态的窗口不能接受来自用户的输入信息。

WS_DLGFRAME:创建一个带对话框边框风格的窗口。这种风格的窗口不能带标题条。

WS_GROUP:指定一组控制的第一个控制。这个控制组由第一个控制和随后定义的控制组成,自第二个控制开始每个控制,具有WS_GROUP风格,每个组的第一个控制带有WS_TABSTOP风格,从而使用户可以在组间移动。用户随后可以使用光标在组内的控制间改变键盘焦点。

WS_HSCROLL:创建一个有水平滚动条的窗口。

WS_ICONIC:创建一个初始状态为最小化状态的窗口。与WS_MINIMIZE风格相同。

WS_MAXIMIZE:创建一个初始状态为最大化状态的窗口。

WS_MAXIMIZEBOX:创建一个具有按钮的窗口。该风格不能与WS_EX_CONTEXTHELP风格同时出现,同时必须指定WS_SYSMENU风格。

WS_OVERLAPPED:产生一个层叠的窗口。一个层叠的窗口有一个标题条和一个边框。与WS_TILED风格相同。

WS_OVERLAPPEDWINDOW:创建一个具有WS_OVERLAPPED,WS_CAPTION,WS_SYSMENU WS_THICKFRAME,WS_MINIMIZEBOX,WS_MAXIMIZEBOX风格的层叠窗口,与WS_TILEDWINDOW风格相同。

WS_POPUP:创建一个弹出式窗口。该风格不能与WS_CHILD风格同时使用。

WS_POPUPWINDOW:创建一个具有WS_BORDER,WS_POPUP,WS_SYSMENU风格的窗口,WS_CAPTION和WS_POPUPWINDOW必须同时设定才能使窗口某单可见。

WS_SIZEBOX:创建一个可调边框的窗口,与WS_THICKFRAME风格相同。

WS_SYSMENU:创建一个在标题条上带有的窗口,必须同时设定WS_CAPTION风格。

WS_TABSTOP:创建一个控制,这个控制在用户按下Tab键时可以获得键盘焦点。按下Tab键后使键盘焦点转移到下一具有WS_TABSTOP风格的控制。

WS_THICKFRAME:创建一个可调边框的窗口,与WS_SIZEBOX风格相同。

WS_TILED:产生一个层叠的窗口。一个层叠的窗口有一个标题和一个边框。与WS_OVERLAPPED风格相同。

WS_TILEDWINDOW:创建一个具有WS_OVERLAPPED,WS_CAPTION,WS_SYSMENU, WS_THICKFRAME,WS_MINIMIZEBOX,WS_MAXIMIZEBOX风格的层叠窗口。与WS_OVERLAPPEDWINDOW风格相同。

WS_VISIBLE:创建一个初始状态为可见的窗口。

WS_VSCROLL:创建一个有垂直滚动条的窗口。

 

//点击窗口时候,鼠标点击的坐标(相对于客户区来说的)

int xPos = GET_X_LPARAM(lParam);

int yPos = GET_Y_LPARAM(lParam);

xPos = LOWORD(lParam);

yPos = HIWORD(lParam);

转载于:https://www.cnblogs.com/chaguang/p/6609962.html

你可能感兴趣的文章
MySQL入门12-数据类型
查看>>
Windows Azure 保留已存在的虚拟网络外网IP(云服务)
查看>>
修改字符集
查看>>
HackTheGame 攻略 - 第四关
查看>>
js删除数组元素
查看>>
带空格文件名的处理(find xargs grep ..etc)
查看>>
华为Access、Hybrid和Trunk的区别和设置
查看>>
centos使用docker下安装mysql并配置、nginx
查看>>
关于HTML5的理解
查看>>
需要学的东西
查看>>
Internet Message Access Protocol --- IMAP协议
查看>>
Linux 获取文件夹下的所有文件
查看>>
对 Sea.js 进行配置(一) seajs.config
查看>>
第六周
查看>>
解释一下 P/NP/NP-Complete/NP-Hard 等问题
查看>>
javafx for android or ios ?
查看>>
微软职位内部推荐-Senior Software Engineer II-Sharepoint
查看>>
sql 字符串操作
查看>>
【转】Android布局优化之ViewStub
查看>>
网络安全管理技术作业-SNMP实验报告
查看>>