网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > DELPHI > 正文
用Delphi做一个OpenGL控件
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
下载{$ArticleTitle}原创论文样式
in

  _addref;//增加引用记数,否则一脱离这个方法的作用域,delphi自动释放对象。

  result:=S_OK;

  end

  end

  except

  on e: exception do begin

  e.message:=’添加页面’+e.message;

  messagebox(0, pchar(e.message), ’错误’, mb_ok);

  end;

  end;end;

  function TCXPropSheet.ReplacePage(uPageID: UINT;

  lpfnReplaceWith: TFNADDPROPSHEETPAGE; lParam: LPARAM): HResult;begin

  Result:=E_NOTIMPL;//同文件关联时,外壳不调用ReplacePage,所以不用实现end;回调函数处理属性页的消息,主要要响应WM_INITDIALOG消息来初始化页面显示信息,响应WM_COMMAND消息来处理用户交互,响应WM_NOTIFY消息来处理页面切换或关闭后处理操作结果。

  

  function DialogProc(hwndDlg: HWnd; Msg: UINT; wParam: wParam;

  lParam: LPARAM): Bool; stdcall;

  var

    PageObj: TCXPropSheet;

    filename: string;

    displayName : string;

    SheetHWnd: HWnd;

  begin

    result:=false;

    try

    if Msg=WM_INITDIALOG then begin//初始化界面

  //获得lparam传递过来的对象

    pageObj:=TCXPropSheet(PPropSheetPage(lParam)^.lParam);

  //保存对象信息

    SetWindowLong(hwndDlg, DWL_USER, integer(pageObj));

  //设置界面显示波文件信息

    SetDlgItemText(hwndDlg, 100, PChar(ExtractFileName(PageObj.FFileName)));

    OpenMedia(PageObj.FFileName);

  SetDlgItemText(hwndDlg, 101, PChar(IntToStr(GetWavStatus(MCI_WAVE_STATUS_AVGBYTESPERSEC))));

  SetDlgItemText(hwndDlg, 102, PChar(IntToStr(GetWavStatus(MCI_WAVE_STATUS_BITSPERSAMPLE))));

  SetDlgItemText(hwndDlg, 103, PChar(IntToStr(GetWavStatus(MCI_WAVE_STATUS_CHANNELS))));

  CloseMedia;

    SetWindowLong(hwndDlg, DWL_MSGRESULT, 0);

    Result:=TRUE;

  end

  else if(Msg=WM_COMMAND)then begin

  if Lo(wParam)=110 then//用户点击了关于按钮(id=110)

    MessageBox(0,’作者:hubdog’+#13#10+’email:hubdog@263.net’,’关于’,MB_OK);

  end else if(msg=WM_NOTIFY)then begin

    sheetHwnd:=getparent(hwndDlg);//获得属性页的窗口句柄

    case PNMHdr(lparam)^.code of

  //页面失去焦点

    PSN_KILLACTIVE:

  begin

    SetWindowLong(hwndDlg, DWL_MSGRESULT, 0);

    Result:=TRUE;

  end;

  end;

  end;

    except

    on e: exception do begin

    e.message:=’回调处理’+e.message;

    messagebox(0, pchar(e.message), ’错误’, mb_ok);

  end;

  end;

  end;

  

  建立同驱动器相关联的属性页扩展用

  同上面讲的有两点不同:

  IShellExtInit.Initialize方法传递过来的数据对象包含的驱动器路径可能是CFSTR_MOUNTEDVOLUME格式而不是CF_HDROP格式的。标准驱动器是CF_HDROP格式的,而在NTFS文件系统中映射的远程设备则是CFSTR_MOUNTEDVOLUME格式的。

  注册表项是HKEY_CLASSES_ROOT\Drive\Shellex\PropertySheetHandlers子键。

  建立控制面板属性页扩展

  同上面讲的有两点不同:

  控制面板程序调用IShellPropSheetExt.ReplacePage方法来替换页面,它不调用IShellPropSheetExt。AddPages方法。

  注册方式:子键可以在不同位置创建,这依赖于扩展是针对用户还是针对机器的。对用户方式子键是HKEY_CURRENT_USER\REGSTR_PATH_CONTROLPANEL,否则子键是HKEY_LOCAL_MACHINE\REGSTR_PATH_CON

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号