リッチエディットビューにリンクタグのようなものを付けるには – プログラミング – Home

リッチエディットビューにリンクタグのよ...
 
通知
すべてクリア

リッチエディットビューにリンクタグのようなものを付けるには


タチシマ
 タチシマ
(@タチシマ)
ゲスト
結合: 18年前
投稿: 6
Topic starter  

 リッチエディットビューでメモ帳のようなものを作っているのですが、特定の言葉に
対してリンクを張りたいと思っています。
 このようなことは可能なのでしょうか?
 
開発環境は MFC MDI VC++6.0です。


引用解決済
トピックタグ
タチシマ
 タチシマ
(@タチシマ)
ゲスト
結合: 18年前
投稿: 6
Topic starter  

MSDNなどを調べてSetEventMask()とENM_LINKあたりを使えば出来るとわかりました。

領域をドラッグアンドドロップして右クリックのポップアップメニューからのいべんと
に下のように追加したのですがコンパイルは出来ても実行するとエラーになってしまい
ます。

m_pRichEditCtrl->SetEventMask(m_pRichEditCtrl->GetEventMask()|ENM_LINK);

ここではポインタ変数は下のように定義してます
CRichEditCtrl* m_pRichEditCtrl;

ここまでは使用例に書いてあるのでわかったのですがこの先のEN_LINKの処理がどうして
もわかりません。

一応
Void CTextView::OnEnLink(NMHDR *pNMHDR,LRESULT *pResult){
ENLINK *pEnlink = reinterpret_cast<ENLINK *>(pNWHDR);
if(pEnlink->msg==LBUTTONDOWN){
//クリック処理
}
}
としているのですが問題点をご指摘してください。


返信引用
タチシマ
 タチシマ
(@タチシマ)
ゲスト
結合: 18年前
投稿: 6
Topic starter  

さらに追加です。
どうもm_pRichEditCtrlのほうに問題があるみたいです。
この関数群を実行できないみたいです。このほかにもCutやCopyなどの単純なものを実行
しようとしてもASSERTでストップしているので読み込むことが出来ないようです。なに
か間違っている点がわかる方がいたら教えてください。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

ASSERTは何処で止まっていますか?
これは問題点を検討する上でとても大切な情報ですよ。
逆に言うとASSERTで止まっている所にヒントがある場合が多いです。
指摘されているソースの該当行の内容を確認して見てはどうでしょうか?

ASSERTのダイアログが出ると嫌がる人がいますが、
ASSERTは問題点を指摘してくれる有難い物なのでもっと活用しましょう。
あと、MFCやライブラリのソースを読む事も大切なので
もしソースをインストールしていないのであれば、
ソースも一緒にインストールしておいた方がいいです。


返信引用
タチシマ
 タチシマ
(@タチシマ)
ゲスト
結合: 18年前
投稿: 6
Topic starter  

返信が遅れてしまって申し訳ありません。
afxcmn.inlのそれぞれの呼び出しのところで出ているみたいです。Cutすると676で、
copyなら674といった具合です。
 それでいてハンドルエラー的なメッセージをいただいているということはリッチエデ
ィットを使う際にはリッチエディットクラスを作成する以外にも必要な準備があるとい
うことなのでしょうか?


返信引用
初心者
 初心者
(@初心者)
ゲスト
結合: 24年前
投稿: 206
 

リッチエディットコントロールの初期化はされていますか??
AfxInitRichEdit();


返信引用
タチシマ
 タチシマ
(@タチシマ)
ゲスト
結合: 18年前
投稿: 6
Topic starter  

msdnにはダイアログベースではないのでその初期化は必要ないと書いてあったのですが
MDIにもその処理が必要なのでしょうか


返信引用
初心者
 初心者
(@初心者)
ゲスト
結合: 24年前
投稿: 206
 

MDIだったのですね。失礼しましたm(_ _)m
DLLがロードされていれば問題ないと思います。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

リッチエディットクラスを作成するだけは駄目だと思いますよ。
クラスを作成してもウインドウを生成しないとメッセージは使えませんから。
この辺はもっとも基本的な部分なんですが、きちんと理解されているでしょうか?
クラスのインスタンスを作成する事とリッチエディットのウインドウを生成する事は
話が別です。インスタンスだけ作成してもコントロールはできません。


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

 新規作成で「MFC APPWizaid」を選択してViewのクラスで「CRichEditView」
を選択すれば、そのままで動きます。
 ご自分で「CRichEditView」クラスを作ってやってみたいのならまずサンプルを
動かしてみるのが大切です。

 PATIOさんのご意見にもあるとおり、「CRichEditView」のクラスを追加した
だけではうまくいきません。


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

>特定の言葉に対してリンクを張りたいと思っています。
これに対しての対応がなかったみたいですね。
ただ、上の「2007/01/24(水) 20:12:56」に書いた方法でスケルトンを
作ると、「CutやCopy」は普通に出来ます。
このスケルトンを基にして「ENM_LINK」を加えてみたらどうでしょうか。

http://www.kumei.ne.jp/c_lang/sdk2/sdk_149.htm
SDKですが参考にどうぞ。


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235

返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました