• [WM]创建一个StatusBar(入门级)


    Windows风格的程序经常会有StatusBar.这篇文章就简单的介绍下怎么创建并修改StatusBar里面的内容.

    如图,这就是IE的StatusBar.

    WM里面的StatusBar跟Windows的类似,不过消息略少一些.

    g_hwndStatus = CreateStatusWindow(WS_CHILD | CCS_TOP | WS_VISIBLE, 
    		L"12", 		//这里为StatusBar初始的WindowText
    		hWnd, 		//父窗口句柄
    		0xE8011 );	//这个就是ID号,跟控件的那种类似
    

    按后需要发送消息,给StatusBar说,有一个部分,每个部分都是多长:

    static int statusBarPart[3]={50,100,-1};  //这里的数字是每个Part结束的坐标,-1表是占有剩下的区域
    SendMessage(g_hwndStatus,
    		SB_SETPARTS,
    		3,					  //Parts的数量
    		(LPARAM)statusBarPart);	//Parts区域对应的int数组,如果某个区域是-1,那么他就占有剩下的区域
    

    现在剩下的就是给各个parts图标,或者文字了.

    SendMessage(g_hwndStatus,SB_SETTEXT ,0,(LPARAM)message);  //SB_SETTEXT是文字
    SendMessage(g_hwndStatus,SB_SETICON,1,(LPARAM)hIcon);    //SB_SETICON是图标
    

    PS:

    StatusBar如果被创建在Window的Bottom的时候,那个时候Window的Rect可能不太正确,这样StatusBar可能看不见,需要把Window Move一下,减去MenuBar的高度.

    具体可以看SDK下面的Sample MiniPIE

    另外Windows下面StatusBar还可以点击之类的,在WM上面并没有相应的消息

    :-)

  • 相关阅读:
    模拟测试20190806
    替罪羊树学习日记
    [Usaco2015 Jan]Moovie Mooving
    [NOIP2016]愤怒的小鸟
    [BZOJ1556]墓地秘密
    [SDOI2009]学校食堂Dining
    [SCOI2008]奖励关
    [洛谷3930]SAC E#1
    [BZOJ2809/APIO2012]dispatching
    [Usaco2018 Open]Disruption
  • 原文地址:https://www.cnblogs.com/egmkang/p/1728101.html
Copyright © 2020-2023  润新知