win32强化练习4.4_状态栏、坐标与时钟

状态栏不是资源,它不需要在资源文件中去创建。

状态栏很简单,但是非常的实用,可以用来做提示,还可以用来显示时间、像素等......

这一节我们练习创建一个状态栏,然后在某一格中显示系统时间,另一格中显示鼠标坐标。

步骤如下:

1. 必须包含头文件:#include <commctrl.h>

2. 声明全局变量:HWND hStatus; 

3. 使用CreateWindow创建窗口:

hStatus = CreateWindowEx(0,STATUSCLASSNAME,"",WS_CHILD |
			WS_BORDER | WS_VISIBLE, 0, 0,0,0, hwnd, NULL, g_hInst, NULL);
4. 需要一个整数的数组来准备给状态栏分区,数值为绝对值(例如{100,200,300...},注意100,100,80这样是错误的!)然后发送消息SB_SETPARTS

int arr[] = {200,300,400,-1}; //0区0~200,1区200~300,2区300~400,3区剩下的 
			SendMessageA(hStatus, SB_SETPARTS, 4, (LPARAM)arr); //按数组分4个区 
			SendMessageA(hStatus, SB_SETTEXTA, 0, (LPARAM)"Hello World!");
5. 显示系统时间 SYSTEMTIME

SetTimer(hwnd, 10, 1000, NULL);
case WM_TIMER:
		{
			SYSTEMTIME st;
			GetLocalTime(&st);
			int iHour = st.wHour;
			int iMin = st.wMinute;
			int iSec = st.wSecond;
			char str[20] = {0};
			sprintf(str, "%02d:%02d:%02d",iHour,iMin,iSec);
			SendMessageA(hStatus, SB_SETTEXTA, 1, (LPARAM)str);
		}
6. 显示坐标

case WM_MOUSEMOVE:
		{
			int x = LOWORD(lParam);
			int y = HIWORD(lParam);
			char str[20] = {0};
			sprintf(str, "X: %3d, Y: %3d",x, y);
			SendMessageA(hStatus, SB_SETTEXTA, 2, (LPARAM)str);
		}
或许使用更多的是进行提示,在状态栏中显示字符串与在标题栏(SetWindowText)显示字符串也没有太大的差别。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值