你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:文章管理 / 本期精品文章
如何在PowerBuilder中结合VC实现界面的灵活显示
 

由于PouwerBuilder自身编程方面的限制,其语言本身不能对Windows任务栏进行操作,也不能对超出应用窗口之外的鼠标移动进行响应,从而影响了PowerBuilder编程的界面表现手法。下面通过Visual  C++ 6.0将功能函数封装在PowerBuilder可调用的动态链接库中,实现了Windows 消息函数与PowerBuilder应用程序的交互,应用程序能对任务栏的图标操作进行反应,能捕捉到鼠标在计算机全屏幕的位置,从而实现应用程序窗口的自动显示和隐藏功能。读者通过阅读本文能够开拓PowerBuilder的编程思路,了解Visual c++的任务栏和钩子函数的编程方法。构建程序的主要步骤:

1.      PowerBuilderopen事件

 构建一窗口w_main(),在open事件中调用database.dll中的addiconstarthook函数, addiconwindows工具栏生成一个图标,starthook启用自定义钩子函数,截获对鼠标的处理。代码如下:

ls_tip="自动备份数据库"

li_rec=addicon(handle(this),1024,ls_tip)

//pbm_custom01的事件号为1024

starthook()

    

2.      C++addicon函数

所有自定义函数都在database.cpp中定义,addicon函数的核心代码如下:

HWND CDatabaseApp::addicon(HWND hwnd,UINT umsg,LPCSTR lptip)

{

     BOOL bz;

     NOTIFYICONDATA m_nid;

     memset(&m_nid,0,sizeof(m_nid));

      HICON hicon=NULL;

      hicon=LoadIcon(IDI_ICON1);

      m_nid.hIcon=hicon;//定义图标所显示的图像

      m_nid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP;

      strncpy(m_nid.szTip,lptip,sizeof(m_nid.szTip));//设置图标的提示字符

      m_nid.uCallbackMessage=umsg;

//图标激活时传递给pb窗口的自定义事件的事件号,本事件号为1024,对应于pb中的自定义事件selfshow,event IDpbm_custom01。当左击图标时,pb中的selfshow被执行。

      m_nid.cbSize=sizeof(m_nid);

      m_nid.hWnd=hwnd;//pb窗口指针,图标激活时调用该窗口中自定义事件selfshow

      m_nid.uID=6911060;//图标的标识号

      bz=Shell_NotifyIcon(NIM_ADD,&m_nid);

      return (HWND)bz;

}

3.      C++中的starthook函数

addicon函数的核心代码如下:

bool starthook()

{

  hinstance=AfxGetInstanceHandle();

  hHook=SetWindowsHookEx(WH_MOUSE,(HOOKPROC) mouseproc,hinstance,0);

//安装一个钩子函数mouseproc用于监视鼠标消息

  return (bool)hHook;

}

  推荐精品文章

·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 
·2023年7月目录
·2023年6月目录 
·2023年5月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089