[3191]
Re: AboutBox
げんた
>#fffbf0
なんかダイアログボックスがエディタの背景にとけ込んでしまって見にくいな.カメレオンみたいだ.
>お次は下線。IDC_STATIC_URL_* に SS_OWNERDRAW|WS_TABSTOP スタイルを追加して
ここはOK.
>BOOL CDlgAbout::OnDrawItem(...)
文字列表示はだめぽ.
GetWindowTextで文字列を取得してExtTextOutで描画.
文字列は自前で書くので,WM_CTLCOLORSTATICでの文字色設定は不要になった.
それと下線を青くするためにはPenを設定しなくてはならない.そのまま線を引くと黒くなってしまう.
文字の下に合わせるには文字の表示領域を取得して座標を計算する必要があると思ったが,
なんとなくうまくかけているので,現状でいいだろう.
>URLフォーカス時にEnter押すとぶっ飛んでくれないかな?
キー入力を拾って,nCursorStateに応じてブラウザを開けば良いような気がする.
あと,キーの上にカーソルを持っていったとき指の形になって欲しいとか.
それとカーソルを持っていったとき色が変わるのも捨てがたいんだけどなぁ.
---
[現状]
http://sakura-editor.sourceforge.net/snapshot/sakura-verdlg2.zip
BOOL CDlgAbout::OnDrawItem( WPARAM wParam, LPARAM lParam )
{
if((UINT)wParam == IDC_STATIC_URL_UR ||
(UINT)wParam == IDC_STATIC_URL_ORG ) {
LPDRAWITEMSTRUCT lpdis = (LPDRAWITEMSTRUCT)lParam;
RECT& rc = lpdis->rcItem;
POINT pt;
// Sep. 25, 2003 wmlhq 文字は常に青色
::SetTextColor( lpdis->hDC, RGB(0,0,0xff) );
// 普通に描画? だめだったらTextOutで描いてやって。
HWND hCtl = GetDlgItem( m_hWnd, (UINT)wParam );
char buf[256];
GetWindowText( hCtl, buf, 256 );
ExtTextOut( lpdis->hDC, rc.left, rc.top, ETO_CLIPPED, &rc,
buf, GetWindowTextLength( hCtl ), NULL);
HPEN hPen = CreatePen( PS_SOLID, 1, RGB(0,0,0xff));
HPEN hOldPen = (HPEN)SelectObject( lpdis->hDC, hPen );
// 下線を描く。色はこれでいいのか?
MoveToEx(lpdis->hDC, rc.left, rc.bottom - 1, &pt);
LineTo( lpdis->hDC, rc.right, rc.bottom - 1);
if(lpdis->itemState & ODS_FOCUS)
DrawFocusRect(lpdis->hDC, &rc); // キーボード操作用。
SelectObject( lpdis->hDC, hOldPen );
DeleteObject( hPen );
}
return TRUE;
}