| 21.やっぱりリソースをいじるのです |
| 22.メッセージをバインドしていきます |
<A HREF = "○○○○○○">〜</A>で記述され、この○○○○○○の中に
/////////////////////////////////////////////////////////////////////////////
// CDlgSetLink メッセージ ハンドラ
void CDlgSetLink::OnLnkRadioHttp()
{
m_strUrl = "http:";
UpdateData(false);
}
void CDlgSetLink::OnLnkRadioMail()
{
m_strUrl = "mailto:";
UpdateData(false);
}
void CDlgSetLink::OnLnkRadioFtp()
{
m_strUrl = "ftp:";
UpdateData(false);
}
|
// リンク
void CMyHtmlView::OnInsLink()
{
CString strSel;
CDlgSetLink cDlg;
if(cDlg.DoModal()!=IDOK){return;}
}
|
BOOL CDlgSetLink::OnInitDialog()
{
CDialog::OnInitDialog();
m_strUrl = "http:";
m_btnCheck.SetCheck(1);
UpdateData(false);
return TRUE; // コントロールにフォーカスを設定しないとき、戻り値は TRUE となります
// 例外: OCX プロパティ ページの戻り値は FALSE となります
}
|
void CDlgSetLink::OnLnkBtnUrl()
{
// Documentのポインタ
CMyHtmlDoc* pDoc = GetMyDocument();
CString strBasePath; // 基準(現在開いているドキュメント)フルパス
CString strFilePath; // リンクターゲットのフルパス
// ファイルを開くダイアログ(コモンダイアログ)
CString strFilter = "htmlファイル(*.html;*.htm)|*.html; *.htm|全てのファイル(*.*)|*.*||";
CFileDialog cDlg(true,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,strFilter,NULL);
if(cDlg.DoModal()!=IDOK){return;}
// リンクターゲットのフルパス取得
strFilePath = cDlg.GetPathName();
// ドキュメントフルパスを取得
strBasePath = pDoc->GetPathName();
// 未保存のためドキュメントフルパスが取得できない場合
if(strBasePath.IsEmpty()){AfxMessageBox("ドキュメントを一度保存してください");return;}
// 相対パスの計算
m_strUrl = GetRelativePath(strBasePath,strFilePath);
UpdateData(false);
}
|
| 23.タグ生成コードを作成しよう |
class CDlgSetLink : public CDialog
{
// コンストラクション
public:
void MakeTag(CString strIns); // ここを追加
CString strTag; // ここを追加
CDlgSetLink(CWnd* pParent = NULL); // 標準のコンストラクタ
// ダイアログ データ
|
// タグの生成
void CDlgSetLink::MakeTag(CString strIns)
{
CString strTagA,strTagB;
strTagA = "<A HREF=\"";
strTagA += m_strUrl;
strTagA += "\">";
strTagB = "</A>";
strTag = strTagA + strIns + strTagB;
}
|
strTagA += "\">";つまるところ、上の赤い"が文字列を識別するダブルクォーテーションで、緑色の"は「"」そのものということになります。
// リンク
void CMyHtmlView::OnInsLink()
{
CString strSel;
CDlgSetLink cDlg;
if(cDlg.DoModal()!=IDOK){return;}
CEdit& cEdt = GetEditCtrl();
cEdt.Copy();
strSel = GetClipBoard();
cDlg.MakeTag(strSel);
PasteString(cDlg.strTag);
SetFocus();
}
|
