提问:如何在RichEidt中单击URL连接时,并打开浏览器转到相应的网页上?

这个网站不安全啊 2002-08-27 10:54:00
如何在RichEidt中单击URL连接时,响应此LBUTTONUP事件,并打开浏览器转到相应的网页上,就象在Word中你输入一个URL地址,之后单击它就可以转到相应的页面上。
谢谢各位高手。
...全文
198 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
huzhangyou 2002-09-02
  • 打赏
  • 举报
回复
见笑了
ENLINK原来是msdn上的一个struct
呵呵
huzhangyou 2002-09-02
  • 打赏
  • 举报
回复
忘了我是在memo的click事件中实现的
huzhangyou 2002-09-02
  • 打赏
  • 举报
回复
请问楼主ENLINK这个类是你自己写的吗?
我好像也有一个方法
应该是差不多
int Row=SendMessage(Memo1->Handle,EM_LINEFROMCHAR, Memo1->SelStart, 0);
if(Row==15)
{
String TmpStr3=buffer+"\\"+"插件\\ie.exe";
ShellExecute(NULL,"open",TmpStr3.c_str(),NULL,NULL,SW_SHOW);}

不过这是MEMO的
而且我自己制定的行
方法可能不怎么好
(buffer是string类型)
  • 打赏
  • 举报
回复
问题我已经解决了!虽然大家没能帮上我的忙,但是我非常的感谢大家。每人我都会给分的。还有下面是我的解决方法。请要解决这个问题的朋友参考一下,一定会有帮助的!
一、首先对RichEdit发送以下消息
::SendMessage( RichEdit->Handle, EM_AUTOURLDETECT, (WPARAM)TRUE, 0 );
::SendMessage( RichEdit->Handle, EM_SETEVENTMASK, 0,
(LPARAM)(::SendMessage(RichEdit->Handle, EM_GETEVENTMASK,0,0) | ENM_LINK));

二、在头文件(*.h)中声明函数:
void __fastcall SubClassWndProc(Messages::TMessage &Msg);

三、然后在构造函数中加 WindowProc = SubClassWndProc;
四、SubClassWndProc的代码:
void __fastcall TmyForm::SubClassWndProc(Messages::TMessage &Msg)

{
Msg.Result = 0;

if (Msg.Msg == WM_NOTIFY)
{
LPNMHDR pnmh = (LPNMHDR)Msg.LParam;
if (pnmh->code == EN_LINK)
{
ENLINK* l_pENLink = ( ENLINK* )pnmh;
switch( l_pENLink->msg)
{
case WM_LBUTTONDOWN:
RichEdit->SelStart = l_pENLink->chrg.cpMin;
RichEdit->SelLength = l_pENLink->chrg.cpMax-l_pENLink->chrg.cpMin;
Cursor = crHourGlass;
::ShellExecute(Handle, "open", RichEdit->SelText.c_str(), NULL, NULL, SW_SHOWNORMAL);
Cursor = crDefault;
break;
}
}
}
WndProc(Msg);
}
  • 打赏
  • 举报
回复
不好意思大哥,在我这里接收不到这个消息啊!EM_AUTOURLDETECT
kingcaiyao 2002-08-27
  • 打赏
  • 举报
回复
消息映射在头文件中:
.h File
class TForm1:public TForm
{
private:
void __fastcall MyMessage(TMessage &myMsg);
public:
BEGIN_MESSAGE_MAP
VCL_MESSAGE_HANDLER(EM_AUTOURLDETECT,TMessage,MyMessage);
END_MESSAGE_MAP(TForm);
};


bluebird97073 2002-08-27
  • 打赏
  • 举报
回复

直接写mousedown就可以了哈
void __fastcall TForm1::RichEdit1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
if(Shift.Contains(ssLeft))
ShellExecute(Handle,"open",RichEdit1->SelText.c_str(),0,0,SW_SHOW);
}
  • 打赏
  • 举报
回复
谢谢大家帮我的忙,但是请问 kingcaiyao(AKing) 一下,你的
void TForm1::MyMessage(TMessage &myMsg)
是如何定义的?是接收处理WM_NOTIFY消息吗?请把你的消息映射那部份代码也给我好吗?
在这里谢了先
kingcaiyao 2002-08-27
  • 打赏
  • 举报
回复
这样:
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{

}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(SendMessage(
RichEdit1->Handle, // handle to destination window
EM_AUTOURLDETECT, // message to send
TRUE, // not used; must be zero
0 // not used; must be zero
)==0)Caption="ok1";
SendMessage(RichEdit1->Handle,EM_SETEVENTMASK ,0,
ENM_LINK|SendMessage(RichEdit1->Handle,EM_GETEVENTMASK,0,0));

RichEdit1->Lines->Add("http://www.csdn.net");
}
//---------------------------------------------------------------------------
void TForm1::MyMessage(TMessage &myMsg)
{
LPNMHDR lpNmhdr = (LPNMHDR)myMsg.LParam;
if (lpNmhdr->code==EN_LINK)
{
ENLINK* lpENLink = ( ENLINK* )lpNmhdr ;
if (lpENLink->msg == WM_LBUTTONDOWN)
{
RichEdit1->SelStart=lpENLink->chrg.cpMin;
RichEdit1->SelLength=lpENLink->chrg.cpMax-lpENLink->chrg.cpMin;

ShellExecute(Handle,"Open",RichEdit1->SelText.c_str(),0,0,SW_SHOW);

}


}

}

我不懂电脑 2002-08-27
  • 打赏
  • 举报
回复
用TCppWebBrowser
jianlinlong 2002-08-27
  • 打赏
  • 举报
回复
去 www.codelphi.com 看看,里面有一篇文章正好是,不过是 delphi 的
内容概要:本文提出了一种针对两级电力市场环境下省间交易商的最优购电模型,重点考虑了现货市场与长期市场的联动机制及市场风险因素,旨在帮助交易商在复杂多变的电力市场环境制定科学合理的购电策略。模型以Matlab为工具实现,通过构建包含市场电价波动、负荷需求不确定性等风险源的优化框架,运用先进的数学规划方法求解最小化购电成本或风险调整后成本的决策方案。文系统阐述了模型的目标函数设计、约束条件设定、风险量化机制(如VaR、CVaR)以及求解算法流程,并通过实际算例验证了模型在提升购电经济性、增强风险抵御能力方面的有效性与实用性。; 适合人群:适用于具备一定电力系统基础知识、运筹学理论背景及Matlab编程能力的高校学生、科研人员以及电力市场运营、能源交易等领域的专业从业者。; 使用场景及目标:①用于全国大学生数学建模竞赛A题等相关赛事电力市场类问题的研究与求解;②为省级及以上电力交易机构和售电公司在跨区购电决策提供计及风险的量化分析工具,实现成本控制与风险规避的平衡;③作为高等院校电力市场、能源经济等课程的教学案例,深化对现代电力市场机制与风险管理方法的理解。; 阅读建议:读者在学习过程应重点关注模型对风险的建模方式与优化算法的具体实现细节,建议结合所提供的Matlab代码进行调试与仿真,通过改变市场参数、风险偏好和约束条件等方式开展敏感性分析,以深入掌握模型的适应性与鲁棒性。

13,871

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧