土曜日, 12月 08, 2007

「リンクしてあるテキスト」をちりばめたマップ

最近ウィキペディアを見ていて気づいたのは、メディアの種類が増えたこと。内容の充実と共に、投稿されている音声ファイルや動画が、ネットメディアのよさをフルに生かしている。もちろん、ウィキの最大のメリットは、テキストにリンクが張られていて、気になるキーワードを深く掘り下げて検索できること。

そこで発見したのは、この「高雄市」のページにある「リンクしてあるテキスト」をちりばめたマップ。地図の画像の上に、テキストが重ねてあって、リンクが張ってある。HTMLをこのように使うと、クリッカブルマップが自然にHTMLで表現できることに、いたく感動したので、さっそくアプリを作ってみました。

なにって、このアプリ。画像を読み込んで、自由な位置にテキストを置いて、リンクを張る。これを、HTMLのコードとして出力すると、クリッカブルマップをどんなページにも埋め込めるモノで、LabelMapというプログラムを起動したら、File|Open で画像を読み込む。マウスで好きな位置をクリックして、テキストを入力。右クリックでポップアップメニューの、Set Link でURLアドレスを打ち込んで...という作業を繰り返して、書きたいテキストをすべて入力。あとは、File|Export to HTML を選択すると、該当するHTMLコードが表示されます。あとは、編集するなりコピーするなり、HTMLのページに埋め込んで利用します。

ダウンロードはこちらから。

LabelMap

日曜日, 12月 02, 2007

IEのツールバーを作成する

IEでは、レジストリで設定すると右クリックでアプリを登録できるが、セキュリティのためかメニューにはその機能がない。右クリックを禁止するサイトでスクリプトを走らせるには、新たなメニューバーをコンパイルしないとならない。バランスの悪い対処法といえる。

とつい思ったのだが、マイクロソフト社公式サイトでは、KBBARなるサンプルコードが置いてある。それを用いると、DLLの形式で、ツールバーが作成できる。

多少つかえたのが、COM関連のクラスであるが、ここに、ページのURLを取得するコードを記述する(エラー処理は省略)。

CComBSTR url;
m_pBand->m_pIE->get_LocationURL(&url);

さらに、選択されたテキストを取得するコードを以下に示す。

IHTMLDocument2 *pDoc;
m_pBand->m_pIE->get_Document((IDispatch**)&pDoc);
IHTMLSelectionObject *pObject;
pDoc->get_selection(&pObject);
IHTMLTxtRange *pRange;
pObject->createRange((IDispatch**)&pRange);
CComBSTR selectedText;
pRange->get_text(&selectedText);

これを走らせると、メニューではなく、ツールバーからDLLを起動できる。

Qt: 外部プログラムを起動する

  Qt/C++ のアプリは、外部へ直接アクセスできます。これはネットアプリでは不可能な Qt のメリットです。 外部プログラムを起動することもできます。QProcess::startDetached() を使うと独立したプロセスを立ち上げることができます。 この QProces...