ファイル名に使用できない文字を判断する
Windows Xp になって、ファイル名に使用できない文字を入力したときのメッセージが修正されているのに気がついた。
以前は、カンマとセミコロンが、実際にはファイル名に使用できるにもかかわらず、使用できない文字として表示されていたのは有名な話だ。
ところで、shlwapi.dll には、ファイル名に使用できる文字かどうかを判断する関数がある。PathGetCharType だ。
Windows Xp になって、ファイル名に使用できない文字を入力したときのメッセージが修正されているのに気がついた。
以前は、カンマとセミコロンが、実際にはファイル名に使用できるにもかかわらず、使用できない文字として表示されていたのは有名な話だ。
ところで、shlwapi.dll には、ファイル名に使用できる文字かどうかを判断する関数がある。PathGetCharType だ。
MFC で、入力可能なコンボボックス (スタイルに CBS_DROPDOWN が設定されているもの) に対して、ツールチップを設定します。サンプルは、上が入力不可 (ドロップダウンリスト)、下が入力可能 (ドロップダウン) のコンボボックスです。それぞれ、m_DropdownList と m_DropdownCombo にマッピングしてあります。
以下が、OnInitDialog 内でのツールチップ作成部分
// OnInitDialog
if (m_ToolTip.Create (this))
{
m_ToolTip.AddTool (&m_DropdownList, _T ("ドロップダウンリスト"));
m_ToolTip.AddTool (&m_DropdownCombo, _T ("ドロップダウンコンボ"));
}
で、PreTransrateMessage で以下のようにしてツールチップにマウスイベントを渡します。
// PreTranslateMessage
BOOL CDropdownTooltipDialog::PreTranslateMessage (MSG* pMsg)
{
switch (pMsg->message)
{
case WM_LBUTTONDOWN:
case WM_LBUTTONUP:
case WM_MOUSEMOVE:
m_ToolTip.RelayEvent (pMsg);
break;
default:
break;
}
return CDialog::PreTranslateMessage (pMsg);
}
ダイアログを表示して、コンボボックスをマウスでポイントすると、ドロップダウンリストの方はツールチップを表示しますが、ドロップダウンの方は表示しません。しかしドロップダウンの上辺の端ぎりぎりくらいにポインタを持っていくと、上のように表示されます。これは、ドロップダウンの方は入力するためのエディットボックスが前面に作成されているためです。というわけで、今回のお題はこちら。
SET SOURCEFOLDER=C:\Devenv SET DESTFOLDER=C:\Exec SET TARGETFILE=Sample.exe C: CD "%DESTFOLDER%" REN "%TARGETFILE%" "%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%-%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%%TARGETFILE%" COPY "%SOURCEFOLDER%\%TARGETFILE%" "%TARGETFILE%"
Win32API の TransparentBlt 関数の解説に
SetStretchBltMode 関数で iStretchMode モードの値として設定される BLACKONWHITE と WHITEONBLACK は、TransparentBlt 関数では COLORONCOLOR に変換されます。
とある。が、じっさいには、 HALFTONE も COLORONCOLOR に変換されているように見える。そう書いてあるリソースがどこにもないのだけれど。カラーキーを指定したければ自分でマスクするか、GDI+ を使うのがよさげ。