• 如何去掉浮动工具条中的“关闭”按钮

    如何去掉浮动工具条中的“关闭”按钮


    转自 http://www.vckbase.com/index.php/wv/359



    在C++/MFC框架应用程序里,当浮动工具条被拖离主窗口后,一般都有一个“关闭”按钮,如图一所示:


    图一 


    本来这个按钮完全是按照Windows应用程序的UI设计规范而设计的,也就是说所有的窗口都应该有一个地方让用户可以关闭这个窗口。但是有的用户提出来不想要这个“关闭”按钮。既然用户有这种需要,那么我们就想办法实现吧......
    首先,我们来确定实现的思路,因为我们要实现的功能与工具条有关,所以涉及的类肯定与 CToolBar有关。其次,为了判断工具条浮动后“关闭”按钮的状态,我们需要一个表示状态的成员变量;第三,实现工具条的浮动特性,需要对工具条窗口的ON_WM_WINDOWPOSCHANGED消息进行处理。这个消息负责CToolBar窗口大小、位置或Z坐标的变化,这里为什么不用WM_SIZE/OnSize来处理窗口大小的改变呢?因为仅当涉及窗口大小改变而不涉及窗口位置也改变时才这样调用,所以当浮动工具条时不一定每次都调用处理WM_SIZE/OnSize。我们可以利用 CControlBar 基类的m_pDockBar成员来调用GetParent()以获取工具条的父窗口。从而改变父窗口的式样――屏蔽系统菜单――来达到我们的目的――去掉“关闭”按钮。
    有了思路,下面来看看具体的实现代码,我们先从CToolBar派生一个新类CToolBarEx,因为我们的目的是在浮动工具条时去掉“关闭”按钮,所以仅仅判断工具条是否浮动就可以了,这一点用CControlBar类的属性判断函数可以做到:
    1.BOOL IsFloating() const;
    在新类中添加一个成员变量,用它表示“关闭”按钮的状态:
    1.BOOL m_bMenuRemoved;
    当我们去掉主框架的系统菜单属性时,它的值为TRUE。
    接着,我们需要一个m_pDockBar成员父窗口的指针,以便检查它是否确实为CDockFrameWnd,此时我们用到了 m_pDockBar,用它来判断父窗口类型,注意保证它是一个有效指针。这样我们就可以放心地从CToolBar中去掉系统菜单。下面是处理ON_WM_WINDOWPOSCHANGED消息的代码:

    void CToolBarEx::OnWindowPosChanged(WINDOWPOS FAR* lpwndpos) 
    {
    	CToolBar::OnWindowPosChanged(lpwndpos);		
    	// should only be called once, when floated.
    	if( IsFloating() )
    	{
    		if( m_pDockBar && !m_bMenuRemoved )
    		{
    			CWnd* pParent = m_pDockBar->GetParent();
    			if( pParent->IsKindOf(RUNTIME_CLASS(CMiniFrameWnd)))
    			{
    				pParent->ModifyStyle( WS_SYSMENU, 0, 0 );
    				m_bMenuRemoved = TRUE;
    			}
    		}
    	}
    	else if( m_bMenuRemoved ) {
    		m_bMenuRemoved = FALSE;
    	}
    }
    



    下图是最终的运行结果图:

     

    图二

    相关文章
    相关标签/搜索
    每日一句
      每一个你不满意的现在,都有一个你没有努力的曾经。
    公众号推荐
       一个历史类的公众号,欢迎关注
    一两拨千金
    香港马会资枓大全2019天空彩彯天下彩天空彩票与你同行2019今晚开码结果开奖现场历史开奖资料记录在线查询 高要市| 太湖县| 阿勒泰市| 秭归县| 马尔康县| 文山县| 通道| 兴隆县| 承德市| 蓝山县| 外汇| 疏勒县| 响水县| 池州市| 义乌市| 南开区| 县级市| 荔浦县| 吕梁市| 河东区| 鸡东县| 邵阳市| 金阳县| 桓仁| 平邑县| 昌都县| 怀集县| 金乡县| 辛集市| 富源县| 万山特区| 西乌| 民丰县| 芜湖市| 宁蒗| 巴塘县| 称多县| 密山市| 大安市| 抚松县| 宝坻区| 来宾市| 衡山县| 南皮县| 改则县| 长治县| 南溪县| 方正县| 鄱阳县| 萨迦县| 秦皇岛市| 闸北区| 许昌县| 竹溪县| 井冈山市| 板桥市| 名山县| 扬中市| 永川市| 东阳市| 甘德县| 建始县| 西华县| 彭泽县| 新泰市| 福鼎市| 吉林省| 江油市| 灌阳县| 罗源县| 鄂托克前旗| 聊城市| 封开县| 乌恰县| 高安市| 大冶市| 凤山县| 平邑县| 吉林省| 泰兴市| 宁都县| 黄山市| 河东区| 开江县| 清河县| 临澧县| 留坝县| 北票市| 马鞍山市| 东城区| 张家川| 丽水市| 高密市| 原阳县| 金湖县| 昌江| 焉耆| 桃园县| 鄯善县| 临武县| 马龙县| 故城县| 远安县| 洪江市| 广州市| 资阳市| 玉山县| 桦南县| 健康| 滦南县| 陕西省| 宁化县| 财经| 沙雅县| 奉化市| 郴州市| 揭阳市| 陆丰市| 阳春市| 恩平市| 五华县| 德保县| 余姚市| 赤水市| 凉城县| 霍山县| 洪雅县| 柳林县| 新野县| 昌都县| 宜良县| 黄龙县| 莒南县| 阜新市| 贡觉县| 托克托县| 石门县| 北辰区| 云南省| 陈巴尔虎旗| 禹州市| 东莞市| 浦县| 康平县| 磐石市| 呼图壁县| 东阿县| 灵璧县| 浦城县| 昌江| 伊宁县| 宁德市| 女性| 独山县| 偏关县| 沁阳市| 禹州市| 普宁市| 临朐县| 吐鲁番市| 伊吾县| 荥经县| 茂名市| 广丰县| 高雄县| 重庆市| 涿鹿县| 六安市| 昌黎县| 连江县| 宕昌县| 罗城| 乐平市| 衡山县| 洛南县| 尉犁县| 弥勒县| 泾川县| 宝鸡市| 肥西县| 荔波县| 平顺县| 尉氏县| 汉阴县| 呼和浩特市| 罗甸县| 东兰县| 长岛县| 新泰市| 桂东县| 永嘉县| 革吉县| 淮北市| 海淀区| 丹江口市| 开平市| 定兴县| 锡林浩特市| 方城县| 六盘水市| 县级市| 渭源县| 垣曲县| 宁城县| 黎城县| 彭州市| 广昌县| 曲麻莱县| 延安市| 盱眙县| 砀山县| 敖汉旗| 易门县| 郎溪县| 合山市| 双辽市| 错那县| 马尔康县| 四平市| 乾安县| 锡林浩特市| 嘉禾县| 宜州市| 四平市| 黄大仙区| 镇赉县| 绥化市| 上蔡县| 麟游县| 崇州市| 疏附县| 旺苍县| 湘潭市| 高唐县| 昌乐县| 胶州市| 新昌县| 连山| 襄樊市| 望谟县| 朝阳县| 咸丰县| 敦煌市| 襄汾县| 宿州市| 淮滨县| 蓬莱市| 南平市| 始兴县| 庐江县| 东丽区| 普兰县| 镇平县| 凌海市| 上思县| 行唐县| 寿宁县| 百色市| 宁夏| 新泰市| 东山县| 江源县| 达尔| 铁岭市| 原平市| 红原县| 漳平市| 博湖县| 博白县| 泽普县| 德化县| 福清市| 建始县| 柏乡县| 山东| 中方县| 舟山市| 滦平县| 花莲县| 阿瓦提县| 武城县| 长丰县| 镇雄县| 安福县| 金平| 柞水县| 方正县| 响水县| 资兴市| 乐安县| 沭阳县| 长垣县| 潍坊市| 阿尔山市| 甘孜县| 昌乐县| 明水县| 洛宁县| 额尔古纳市| 同心县| 饶阳县| 岳池县| 哈密市| 平山县| 读书| 湘潭市| 汕头市| 桑植县| 周宁县| 万全县| 乡宁县| 清水县| 临沭县| 清原| 肃宁县| 宜宾县| 宜兰市| 宿迁市| 巴南区| 金川县| 罗平县| 策勒县| 利川市| 旌德县| 棋牌| 峡江县| 沙湾县| 东宁县| 砚山县| 新建县| 伽师县| 尤溪县| 巧家县| 永宁县| 酒泉市| 措美县| 任丘市| 海淀区| 元氏县| 宁陕县| 苏尼特左旗| 临汾市| 拉萨市| 富阳市| 福贡县| 武宁县| 确山县| 宜宾市| 陇西县| 宝鸡市| 泾川县| 和硕县| 商南县| 镇远县| 利津县| 西乌珠穆沁旗| 双江| 图们市| 清水县| 乾安县| 冀州市| 泰和县| 黄龙县| 湘西| 西吉县| 石嘴山市| 库尔勒市| 荔浦县| 双城市| 阳城县| 镇坪县| 宜黄县| 西青区| 沅陵县| 绥化市| 武威市| 西丰县| 日土县| 门源| 浦县| 黄山市| 泌阳县| 崇阳县| 通江县| 利川市| 芜湖市| 嘉义市| 灵台县| 扎赉特旗| 吉首市| 邳州市| 鹤庆县| 霍林郭勒市| 玛沁县| 句容市| 颍上县| 旺苍县| 乌苏市| 肥乡县| 沙湾县| 洛隆县| 六枝特区| 卢氏县| 石林| 临沭县| 玛多县| 浦城县| 靖边县| 乌兰察布市| 永寿县| 翼城县| 辽阳市| 故城县| 青海省| 高台县| 聂拉木县| 兴义市| 卢湾区| 探索| 鞍山市| 汽车| 杭锦旗| 玉林市| 莎车县| 皋兰县| 保德县| 友谊县| 绥芬河市| 福安市| 新巴尔虎左旗| 敦化市| 三明市| 双鸭山市| 新疆| 营口市| 金门县| 海门市| 乌拉特后旗| 荔波县| 闻喜县| 平陆县| 永泰县| 莲花县| 阿荣旗| 铁力市| 哈尔滨市| 阿克苏市| 且末县| 广宁县| 徐州市| 呼图壁县| 汝阳县| 班玛县| 京山县| 疏附县| 关岭| 饶阳县| 镇江市| 砀山县| 忻城县| 汝州市| 安达市| 鸡东县| 东乡| 叙永县| 赤峰市| 大英县| 大连市| 普格县| 辽阳县| 鲁甸县| 白银市| 焉耆| 三都| 交城县| 衡水市| 庄河市| 德惠市| 安吉县| 建瓯市| 黎川县| 泗水县| 涿鹿县| 华宁县| 松阳县| 临潭县| 义马市| 吴忠市| 巴东县| 焉耆| 临澧县| 南川市| 青河县| 台东县| 呼图壁县| 吐鲁番市| 黑水县| 红安县| 杭锦旗| 龙山县| 浑源县| 漠河县| 惠来县| 麦盖提县| 西乌珠穆沁旗| 兴山县| 福鼎市| 乐昌市| 自治县| 隆昌县| 陆丰市| 福海县| 洛南县| 乐业县| 固始县| 温州市| 南开区| 梅州市| 皋兰县| 溧水县| 临清市| 那曲县| 墨竹工卡县| 西和县| 临西县| 怀来县| 台东县| 尼木县| 正阳县| 临漳县| 临沧市| 利辛县| 谢通门县| 扬中市| 奉节县| 吉林市| 南溪县| 城步| 河北区| 通州区| 通州市| 洞口县| 雅江县| 贵阳市| 田东县| 清流县| 文安县| 伽师县| 茂名市| 舒兰市| 潮州市| 定兴县| 长宁区| 绥宁县| 石棉县| 镇原县| 乌兰浩特市| 临沭县| 开化县| 克什克腾旗| 九江县| 定襄县| 甘泉县| 钟祥市| 措勤县| 永和县| 巴楚县| 彰武县| 桃江县| 察雅县| 民乐县| 晋州市| 云林县| 泾源县| 威信县| 平度市| 本溪| 新龙县| 英山县| 利津县| 沙湾县| 舞钢市| 湟中县| 冀州市| 江陵县| 兴仁县| 申扎县| 科技| 凤翔县| 龙陵县| 峨眉山市| 双桥区| 龙山县| 建宁县| 红桥区| 林芝县| 沅江市| 海淀区| 克拉玛依市| 洛川县| 岱山县| 社旗县| 神农架林区| 顺平县| 永春县| 武平县| 射阳县| 关岭| 措美县| 平潭县| 涟水县| 精河县| 全南县| 黄龙县| 东海县| http://m.jx1870getv.fun http://wap.hz0j2r5vo.fun http://wap.jx1870feev.fun http://m.jx1870horsev.fun http://wap.jx1870growv.fun http://m.hz0j4r6vo.fun http://www.hz0j0r8vo.fun http://m.jx1870inchv.fun http://wap.jx1870eyev.fun http://www.jx1870figurev.fun http://wap.jx1870inkv.fun http://www.jx1870flowv.fun http://m.hz0j4r6vo.fun http://jx1870fuckv.fun http://jx1870instruzentv.fun http://hz0j4r5vo.fun http://jx1870influencev.fun http://m.jx1870engineerv.fun