回 帖 发 新 帖 刷新版面

主题:Visual Fortran 中提取lParam的类型数据方法

在fotran API编程时,常需在WM_NIFITYF分支中提取lParam参数,其整数指针往往是一个数据结构,而C++有强制类型转换,在Fortan中似乎找不到,本人采用了如下一种技巧,供分享,希望有高人提供更快捷的方法(该例子为操作一列表视图控件的部分):
      type(T_NMHDR),pointer    ::pHeader!注意消息的信息
    type(T_NMHDR),target    ::tHeader !注意消息的信息
    pointer(lP,tHeader)
***********
  !*****实用堰*****
     case(IDC_LPW)               
     lP = lParam               
    pHeader=>tHeader
       if(pHeader%code==NM_CLICK) then
         iSelect = SendMessage(hWndList1,LVM_GETNEXTITEM,-1,LVNI_FOCUSED)   !    返回选择项
         IF(iSelect==-1) THEN !无选择项
!            i=MessageBox(ghWndMain,"无列表视图选项!","错误",MB_OK.OR.MB_ICONINFORMATION)
            ParaDialogProc=0
            RETURN
         ENDIF 
         flag = 1  !设置flag以便我们知道有项目选中
         LvItem.mask=LVIF_TEXT;
         LvItem.iSubItem=0;
         LvItem.pszText=loc(Text);
         LvItem.cchTextMax=256;
         LvItem.iItem=iSelect;

         i = SendMessage(hWndList1,LVM_GETITEMTEXT,iSelect,loc(LvItem)) !获取Text 
         i=SetDlgItemText(hDlg,IDC_EPWSTY,trim(Text))
!
         LvItem.iSubItem=1;
         i = SendMessage(hWndList1,LVM_GETITEMTEXT,iSelect,loc(LvItem))
         i=SetDlgItemText(hDlg,IDC_EPWNZ,trim(Text))
!
         LvItem.iSubItem=2;
         i = SendMessage(hWndList1,LVM_GETITEMTEXT,iSelect,loc(LvItem))
         Text(i:i) = ' ' 
         i=SetDlgItemText(hDlg,IDC_EPWB0Z,trim(Text))
!
         LvItem.iSubItem=3;
         i = SendMessage(hWndList1,LVM_GETITEMTEXT,iSelect,loc(LvItem))
         Text(i:i) = ' ' 
         i=SetDlgItemText(hDlg,IDC_EPWM,trim(Text))
!
         LvItem.iSubItem=4;
         i = SendMessage(hWndList1,LVM_GETITEMTEXT,iSelect,loc(LvItem))
          Text(i:i) = ' ' 
         i=SetDlgItemText(hDlg,IDC_EPWYAN,trim(Text))
       endif
       ParaDialogProc=1
       RETURN

回复列表 (共2个回复)

沙发

pointer(lP,tHeader) 这个用法只能在 Visual Fortran 中使用。

LvItem.iSubItem=0;  这个也是,标准 Fortran 规范应该是 LvItem%iSubItem=0;

pointer 的这个用法是挺好的,在 LoadLibrary 和 GetProcAddress 组合显式调用 DLL 的导出函数时也非常有用。相当于过程指针。

板凳

寻找一直寻找机会的人!
一个趋势中的趋势的项目!
一个直销和传销终结者的项目!
一个帮助普通创业者成功的项目!
   我们在互联网上正在拓展一个生意项目,现在正在寻求合作伙伴。我们认为成功的关键是你是什么人?还有你和谁在一起。我们在乎的是--您是否是有激情、有梦想的人。有意者请跟我们联系,我们和您谈谈,给您讲解一些生意概念,或许我们可以合作。一个集即时网游、交友,娱乐游戏,网络品牌代理商城,互联网平台项目招商进行中……详情QQ空间资料
网商咨询 摩客天宇QQ 909065437 

我来回复

您尚未登录,请登录后再回复。点此登录或注册