VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 2007/02/06(Tue) 09:47
投稿者魔界の仮面弁士
Eメール
URL
タイトルRe^2: Calendarコントロールへの書き込み

> >どなたかこのMicrosoft Access Calendar Controlの
> > 任意の日付の枡に文字を書き込んだ方はいらっしゃいませんか?
> 記憶ですが、むか〜し、弁士さんだったかな??(間違いならごめんなさい)
> このコントロールは描画している旨のことを見かけたことがあります。

記憶にないです(^^;)けど、召喚されたらしいので、調べてみました。


とりあえず、MSCAL.OCX ver.8.0 をフォームに貼って、SPY++ で確認してみると、

├[ウィンドウ hhhhhhhh 'Form1' ThunderFormDC]   …… VB6 のフォーム
│└[ウィンドウ hhhhhhhh '' CalendarWndClass]   …… カレンダー コントロール
│ ├[ウィンドウ hhhhhhhh '2' ComboBox]   …… 恐らく、「月」のドロップダウンリスト
│ └[ウィンドウ hhhhhhhh '2007' ComboBox]   …… 恐らく、「年」のドロップダウンリスト

のように、子ウィンドウは 2 つしか持たず、日付部に対しては
ウィンドウハンドルが割り当てられていないようです。
また、カレンダー自身のメンバをオブジェクト ブラウザで見ても、
「任意の日付の枡に文字を書き込む機能」は見当たりません。


一応、プログラムから無理に処理するとなれば、
 1. GetDC API で、コントロールのウィンドウハンドルからデバイスコンテキストを取得。
 2. DrawText または TextOut API で、任意の座標に文字列を描画。
 3. ReleaseDC API で、デバイスコンテキストを解放。
のようにすれば描画できることまでは確認しました。

本気で実装するとなれば、さらに、コントロールのウィンドウハンドルの取得、
描画先の座標位置の計算、再描画のタイミング調査なども必要になりますので、
やはり、カレンダーを自作した方が、遙かに楽ということになってくるでしょうね。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -