加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

利用LabWindows/CVI控制显示器的开启与关闭

(2006-11-19 21:32:57)
分类: LabWindow/CVI技术文章
  本例子举例说明了在LabWindows/CVI中调用SDK函数过程中使用两种方式获得调用句柄。在LabWindows/CVI句柄的数据类型为整型,而在Windows中,句柄的类型通常为HWND类型,这就需要在使用过程中进行强制转换。
  如果想在电脑运行时关闭显示器节电,那么可以用如下程序。
 
  程序界面:
 
  利用LabWindows/CVI控制显示器的开启与关闭
 
  程序代码:
 
#include "windows.h"
#include   
#include
#include "显示器操作.h"
static int panelHandle;
int __stdcall WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                       LPSTR lpszCmdLine, int nCmdShow)
{
 if (InitCVIRTE (hInstance, 0, 0) == 0)
  return -1; /* out of memory */
 if ((panelHandle = LoadPanel (0, "显示器操作.uir", PANEL)) < 0)
  return -1;
 DisplayPanel (panelHandle);
 RunUserInterface ();
 DiscardPanel (panelHandle);
 return 0;
}
int CVICALLBACK QuitCallback (int panel, int control, int event,
  void *callbackData, int eventData1, int eventData2)
{
 switch (event)
 {
  case EVENT_COMMIT:
   QuitUserInterface (0);
   break;
 }
 return 0;
}
//关闭按钮
int CVICALLBACK off (int panel, int control, int event,
  void *callbackData, int eventData1, int eventData2)
{
 int handle;
 switch (event)
 {
  case EVENT_COMMIT:
   
   //获得面板句柄
   GetPanelAttribute (panelHandle, ATTR_SYSTEM_WINDOW_HANDLE, &handle);
   
   //关闭显示器
   SendMessage((HWND)handle, WM_SYSCOMMAND, SC_MONITORPOWER, 2);
   break;
 }
 return 0;
}
//开启按钮
int CVICALLBACK on (int panel, int control, int event,
  void *callbackData, int eventData1, int eventData2)
{
 int handle;
 switch (event)
 {
  case EVENT_COMMIT:
   
   //获得CVI窗口句柄
   handle = GetCVIWindowHandle();
   
   //打开显示器
   SendMessage((HWND)handle, WM_SYSCOMMAND, SC_MONITORPOWER, -1);
   break;
 }
 return 0;
}

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有