刚刚接触MFC编程,对初步学习的东西总结一下:
Picture Control控件用作指示灯
在网络通信、串口通信等编程过程中经常会用到Picture Control组件来显示图标,可以用显示的图标颜色(红、绿、灰)来表示通信状态。首先,需准备好红、绿、灰灯的ICO资源,然后导入到VC/VS的资源视图中,并将ID号修改,比如现在有三组ICO资源,ID号分别为IDI_ICON_LEDRED、ID_ICON_LEDGREEN、IDI_ICON_LEDGRAY。然后,将Picture Control的Type属性设置为Icon。最后就可以在程序里实现了。
在程序的OnInitDialog()事件中进行初始化,代码如下,
m_hIconLedRed= (HICON)LoadImage(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON_LEDRED),IMAGE_ICON,40,40,LR_DEFAULTCOLOR);
m_hIconLedGreen= (HICON)LoadImage(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON_LEDGREEN),IMAGE_ICON,40,40,LR_DEFAULTCOLOR);
m_hIconLedGray= (HICON)LoadImage(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON_LEDGRAY),IMAGE_ICON,40,40,LR_DEFAULTCOLOR);
m_cstatSerialLed.SetIcon(m_hIconLedGray); //初始化为灰色。
m_cstatSockStateLed.SetIcon(m_hIconLedGray);//初始化为灰色。
然后在以后程序中要用到则可直接使用SetIcon来实现。比如串口成功打开后,可使用m_cstatSockStateLed.SetIcon(m_hIconLedGreen);来使指示灯显示绿色。
其中m_hIconLedRed、m_hIconLedGreen、m_hIconLedGray在头文件中进行定义。
HICON m_hIconLedRed;
HICON m_hIconLedGreen;
HICON m_hIconLedGray;
其中m_cstatSerialLed、m_cstatSockStateLed是为用作显示串口状态、网口状态的Picture Control组件所添加的变量值。
这里对LoadImage这个函数说明一下:
该函数用作装载图标、光标或位图。
函数原型:HANDLE LoadImage(
HINSTANCE hinst,
LPCTSTR lpszName,
UINT uType,
int cxDesired,
int cyDesired,
UINT fuLoad
);
HINSTANCE---------包含所需要图片的实例的句柄。
LPCSTR--------------图片所在路径及文件名。如果加载资源,此参数为资源号,如果加载文件,则为文件名(绝对路径)。
UINT-------------------图片类型。
int-----------------------图片宽度(像素)。
int-----------------------图片高度。
UINT-------------------load flags
AfxGetInstanceHandle():用来获取实例句柄。
MAKEINTRESOURCE():是把一个"数字形ID",转化为"字符串".但是执行前后,输入的数据的内容和长度是不变的!它只不过就是C语言里面"强制类型转换"而已.