<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>ツール</title><link>http://blogs.wankuma.com/rapt/category/739.aspx</link><description>ツール</description><managingEditor>RAPT</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>RAPT</dc:creator><title>Gavotte Ramdisk を Windows 7 x64 で使う</title><link>http://blogs.wankuma.com/rapt/archive/2010/04/26/188431.aspx</link><pubDate>Mon, 26 Apr 2010 15:24:00 GMT</pubDate><guid>http://blogs.wankuma.com/rapt/archive/2010/04/26/188431.aspx</guid><wfw:comment>http://blogs.wankuma.com/rapt/comments/188431.aspx</wfw:comment><comments>http://blogs.wankuma.com/rapt/archive/2010/04/26/188431.aspx#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://blogs.wankuma.com/rapt/comments/commentRss/188431.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/rapt/services/trackbacks/188431.aspx</trackback:ping><description>&lt;h3&gt;概要&lt;/h3&gt;
&lt;p&gt;Windows 7 x64 環境で、フリーの Gavotte Ramdisk を使いたい。&lt;br&gt;
ところが、Gavotte Ramdisk のドライバは署名されていないので、そのままでは x64 環境にインストールできない。&lt;br&gt;
巷にはブート中に自動的に [F8] を押して、ドライバの署名を無視して、といった手法がみられるが、これはやりたくない。&lt;br&gt;
そのため、オレオレ証明書を作り、自己署名することでドライバのインストールブロッキングを回避する。&lt;br&gt;
x64 用ドライバは、&lt;code&gt;rramdisk64.sys&lt;/code&gt; なので、これを署名する。&lt;br&gt;
下記で、署名パスワードは &amp;quot;hogehoge&amp;quot; にしているので、適宜変更すること。&lt;br&gt;
※Vista 以降の環境では、コマンドプロンプトを「管理者として実行」にする必要あり。&lt;br&gt;
&lt;/p&gt;
&lt;h3&gt;ドライバを署名する&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&amp;displaylang=en" title="MS:Download details: Windows&amp;reg; Server 2003 SP1 Platform SDK Web Install"&gt;Windows&amp;reg; Server 2003 SP1 Platform SDK Web Install&lt;/a&gt; に含まれている署名ツールをインストール&lt;/li&gt;
&lt;li&gt;証明書(.cer)と秘密鍵(.pvk)を作る(パスワードはすべて同一のものを指定)
&lt;br&gt;&lt;code&gt;&lt;a href="http://msdn.microsoft.com/ja-jp/library/bfsktky3(VS.80).aspx" title="MSDN:証明書作成ツール (Makecert.exe)"&gt;makecert&lt;/a&gt; -sv rramdisk64.pvk -a sha1 -eku 1.3.6.1.5.5.7.3.3 -r -ss Root -len 1024 -sr localMachine -n CN=&amp;quot;rramdisk64.sys&amp;quot; rramdisk64.cer&lt;/code&gt;
&lt;br&gt;-keu 1.3.6.1.5.5.7.3.3 はコード署名
&lt;br&gt;CN=&amp;quot;xxxx&amp;quot; は発行元&lt;/li&gt;
&lt;li&gt;証明書(.cer)からソフトウェア発行元証明書(.spc)ファイルを作る
&lt;br&gt;&lt;code&gt;&lt;a href="http://msdn.microsoft.com/ja-jp/library/f657tk8f(VS.80).aspx" title="MSDN:ソフトウェア発行元証明書テスト ツール (Cert2spc.exe)"&gt;cert2spc&lt;/a&gt; rramdisk64.cer rramdisk64.spc&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;ソフトウェア発行元証明書(.spc)と秘密鍵(.pvk)からキーペア(.pfx)ファイルを作る
&lt;br&gt;&lt;code&gt;pvk2pfx -pvk rramdisk64.pvk -pi hogehoge -spc rramdisk64.spc -pfx rramdisk64.pfx&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;署名ツールでターゲットファイルに電子署名する
&lt;br&gt;&lt;code&gt;signtool sign /f rramdisk64.pfx /p hogehoge /d &amp;quot;rramdisk64.sys&amp;quot; /v rramdisk64.sys&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;証明書のインストール&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;rramdisk64.pfx&lt;/code&gt; を右クリックして「インストール」&lt;/li&gt;
&lt;li&gt;[パスワード] で hogehoge を入力し、「すべての拡張プロパティを含める」にチェック&lt;/li&gt;
&lt;li&gt;[証明書ストア] で「証明書をすべて次のストアに配置する」にチェック&lt;/li&gt;
&lt;li&gt;「物理ストアを表示する」にチェック&lt;/li&gt;
&lt;li&gt;「信頼されたルート証明機関\レジストリ」を選択&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;ドライバのインストール&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;ram4g.reg&lt;/code&gt; をダブルクリックしてインストール&lt;/li&gt;
&lt;li&gt;管理者権限で、普通にコマンドプロンプトを出す&lt;/li&gt;
&lt;li&gt;ブート構成データ エディタで、デジタル署名取得を無効化する
&lt;br&gt;&lt;code&gt;bcdedit /set TESTSIGNING ON&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;PC を再起動&lt;/li&gt;
&lt;li&gt;「ファイル名を指定して実行」で &lt;code&gt;hdwwiz&lt;/code&gt; を入力し、ハードウェアの追加ウィザードを開く&lt;/li&gt;
&lt;li&gt;「一覧から選択したハードウェアをインストールする」にチェックし「次へ」&lt;/li&gt;
&lt;li&gt;「すべてのデバイスを表示」を選択して「次へ」&lt;/li&gt;
&lt;li&gt;「ディスク使用」をクリック&lt;/li&gt;
&lt;li&gt;「製造元のファイルのコピー元」で上記で証明した &lt;code&gt;rramdisk64.sys&lt;/code&gt; のあるフォルダを指定&lt;/li&gt;
&lt;li&gt;これで次々と表示される警告にめげずにクリックしていくと成功&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Ramdisk の作成&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;ramdisk.exe&lt;/code&gt; を右クリックして「管理者として実行」&lt;/li&gt;
&lt;li&gt;「Install Ramdisk」をクリック&lt;/li&gt;
&lt;li&gt;今回は RamDisk を 5GB 使いたいので「Data Size」に「5G」と入力。プルダウンには 3G までしかないが、手入力 OK&lt;/li&gt;
&lt;li&gt;「Drive Letter」も「R:」のままでいいので、そのまま&lt;/li&gt;
&lt;li&gt;Media Type も「Fixed Media」のままで OK&lt;/li&gt;
&lt;li&gt;「OK」をクリック&lt;/li&gt;
&lt;li&gt;PC を再起動&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;これで無事に RAM ドライブが使えるようになりました(^^&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/rapt/aggbug/188431.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>RAPT</dc:creator><title>INI 編集ツール IniModifier を作成してみる (3)</title><link>http://blogs.wankuma.com/rapt/archive/2008/08/17/153287.aspx</link><pubDate>Sun, 17 Aug 2008 16:20:00 GMT</pubDate><guid>http://blogs.wankuma.com/rapt/archive/2008/08/17/153287.aspx</guid><wfw:comment>http://blogs.wankuma.com/rapt/comments/153287.aspx</wfw:comment><comments>http://blogs.wankuma.com/rapt/archive/2008/08/17/153287.aspx#Feedback</comments><slash:comments>235</slash:comments><wfw:commentRss>http://blogs.wankuma.com/rapt/comments/commentRss/153287.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/rapt/services/trackbacks/153287.aspx</trackback:ping><description>&lt;h1&gt;INI 編集ツール IniModifier を作成してみる (3)&lt;/h1&gt;
&lt;p&gt;過去の記事へのリンク：
&lt;br&gt;&lt;A href="http://blogs.wankuma.com/rapt/archive/2008/08/16/153180.aspx" title="INI 編集ツール IniModifier を作成してみる (1) へ"&gt;INI 編集ツール IniModifier を作成してみる (1)&lt;/a&gt;
&lt;br&gt;&lt;A href="http://blogs.wankuma.com/rapt/archive/2008/08/16/153188.aspx" title="INI 編集ツール IniModifier を作成してみる (2) へ"&gt;INI 編集ツール IniModifier を作成してみる (2)&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
まずは、WTL::CRichEditCtrl のヘッダを見てみることにする。&lt;br&gt;
WTL は SDK のラッパであり、MFC とほぼ同機能のメソッドを持っているので迷ったら、MSDN で MFC と SDK のヘルプを見るのが常套手段。
&lt;/p&gt;
&lt;h2&gt;WTL::CRichEditCtrl&lt;/h2&gt;
&lt;div style="font-family:monospace; padding:10px; border:3px double green; margin:10px;"&gt;
&lt;span style="color:green;"&gt;// WTL::CRichEditCtrl (CRichEditCtrlT&amp;lt;ATL::CWindow&amp;gt;) の宣言&lt;/span&gt;
&lt;br&gt;&lt;span style="color:green;"&gt;// Constructors&lt;/span&gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; CRichEditCtrl( &lt;span style="color:magenta;"&gt;HWND&lt;/span&gt; hWnd = &lt;span style="color:magenta;"&gt;NULL&lt;/span&gt; );
&lt;br&gt;&amp;nbsp; &amp;nbsp; CRichEditCtrl&amp;amp; &lt;span style="color:blue;"&gt;operator&lt;/span&gt; =( &lt;span style="color:magenta;"&gt;HWND&lt;/span&gt; hWnd );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;HWND&lt;/span&gt; Create( &lt;span style="color:magenta;"&gt;HWND&lt;/span&gt; hWndParent, ATL::_U_RECT rect = &lt;span style="color:magenta;"&gt;NULL&lt;/span&gt;, &lt;span style="color:magenta;"&gt;LPCTSTR&lt;/span&gt; szWindowName = &lt;span style="color:magenta;"&gt;NULL&lt;/span&gt;,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;DWORD&lt;/span&gt; dwStyle = &lt;span style="color:red;"&gt;0&lt;/span&gt;, &lt;span style="color:magenta;"&gt;DWORD&lt;/span&gt; dwExStyle = &lt;span style="color:red;"&gt;0&lt;/span&gt;,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ATL::_U_MENUorID MenuOrID = &lt;span style="color:red;"&gt;0U&lt;/span&gt;, &lt;span style="color:magenta;"&gt;LPVOID&lt;/span&gt; lpCreateParam = &lt;span style="color:magenta;"&gt;NULL&lt;/span&gt; );
&lt;br&gt;
&lt;br&gt;&lt;span style="color:green;"&gt;// Attributes&lt;/span&gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:magenta;"&gt;LPCTSTR&lt;/span&gt; GetWndClassName();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:magenta;"&gt;LPCTSTR&lt;/span&gt; GetLibraryName();
&lt;br&gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;int&lt;/span&gt; GetLineCount() &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; GetModify() &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;void&lt;/span&gt; SetModify( &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; bModified = &lt;span style="color:magenta;"&gt;TRUE&lt;/span&gt; );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;void&lt;/span&gt; GetRect( &lt;span style="color:magenta;"&gt;LPRECT&lt;/span&gt; lpRect ) &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;DWORD&lt;/span&gt; GetOptions() &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;DWORD&lt;/span&gt; SetOptions( &lt;span style="color:magenta;"&gt;WORD&lt;/span&gt; wOperation, &lt;span style="color:magenta;"&gt;DWORD&lt;/span&gt; dwOptions );
&lt;br&gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:green;"&gt;// NOTE: first word in lpszBuffer must contain the size of the buffer!&lt;/span&gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;int&lt;/span&gt; GetLine( &lt;span style="color:blue;"&gt;int&lt;/span&gt; nIndex, &lt;span style="color:magenta;"&gt;LPTSTR&lt;/span&gt; lpszBuffer ) &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;int&lt;/span&gt; GetLine( &lt;span style="color:blue;"&gt;int&lt;/span&gt; nIndex, &lt;span style="color:magenta;"&gt;LPTSTR&lt;/span&gt; lpszBuffer, &lt;span style="color:blue;"&gt;int&lt;/span&gt; nMaxLength ) &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; CanUndo() &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; CanPaste( &lt;span style="color:magenta;"&gt;UINT&lt;/span&gt; nFormat = &lt;span style="color:red;"&gt;0&lt;/span&gt; ) &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;void&lt;/span&gt; GetSel( &lt;span style="color:magenta;"&gt;LONG&lt;/span&gt;&amp;amp; nStartChar, &lt;span style="color:magenta;"&gt;LONG&lt;/span&gt;&amp;amp; nEndChar ) &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;void&lt;/span&gt; GetSel( CHARRANGE &amp;amp;cr ) &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;int&lt;/span&gt; SetSel( &lt;span style="color:magenta;"&gt;LONG&lt;/span&gt; nStartChar, &lt;span style="color:magenta;"&gt;LONG&lt;/span&gt; nEndChar );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;int&lt;/span&gt; SetSel( CHARRANGE &amp;amp;cr );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;int&lt;/span&gt; SetSelAll();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;int&lt;/span&gt; SetSelNone();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;DWORD&lt;/span&gt; GetDefaultCharFormat( CHARFORMAT&amp;amp; cf ) &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;DWORD&lt;/span&gt; GetSelectionCharFormat( CHARFORMAT&amp;amp; cf ) &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;DWORD&lt;/span&gt; GetEventMask() &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;LONG&lt;/span&gt; GetLimitText() &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;DWORD&lt;/span&gt; GetParaFormat( PARAFORMAT&amp;amp; pf ) &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;
&lt;br&gt;&lt;span style="color:blue;"&gt;#if&lt;/span&gt; ( _RICHEDIT_VER &amp;gt;= &lt;span style="color:red;"&gt;0x0200&lt;/span&gt; )
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;LONG&lt;/span&gt; GetSelText( &lt;span style="color:magenta;"&gt;LPTSTR&lt;/span&gt; lpstrBuff ) &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&lt;span style="color:blue;"&gt;#else&lt;/span&gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:green;"&gt;// RichEdit 1.0 EM_GETSELTEXT is ANSI only&lt;/span&gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;LONG&lt;/span&gt; GetSelText( &lt;span style="color:magenta;"&gt;LPSTR&lt;/span&gt; lpstrBuff ) &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&lt;span style="color:blue;"&gt;#endif&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;&lt;span style="color:blue;"&gt;#ifndef&lt;/span&gt; _ATL_NO_COM
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; GetSelTextBSTR( &lt;span style="color:magenta;"&gt;BSTR&lt;/span&gt;&amp;amp; bstrText ) &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&lt;span style="color:blue;"&gt;#endif&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;&lt;span style="color:blue;"&gt;#if&lt;/span&gt; &lt;span style="color:blue;"&gt;defined&lt;/span&gt;( _WTL_USE_CSTRING ) || &lt;span style="color:blue;"&gt;defined&lt;/span&gt;( __ATLSTR_H__ )
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;LONG&lt;/span&gt; GetSelText( _CSTRING_NS::&lt;span style="color:magenta;"&gt;CString&lt;/span&gt;&amp;amp; strText ) &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&lt;span style="color:blue;"&gt;#endif&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;WORD&lt;/span&gt; GetSelectionType() &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;COLORREF&lt;/span&gt; SetBackgroundColor( &lt;span style="color:magenta;"&gt;COLORREF&lt;/span&gt; cr );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;COLORREF&lt;/span&gt; SetBackgroundColor();&amp;nbsp; &amp;nbsp; &lt;span style="color:green;"&gt;// sets to system background&lt;/span&gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; SetCharFormat( CHARFORMAT&amp;amp; cf, &lt;span style="color:magenta;"&gt;WORD&lt;/span&gt; wFlags );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; SetDefaultCharFormat( CHARFORMAT&amp;amp; cf );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; SetSelectionCharFormat( CHARFORMAT&amp;amp; cf );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; SetWordCharFormat( CHARFORMAT&amp;amp; cf );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;DWORD&lt;/span&gt; SetEventMask( &lt;span style="color:magenta;"&gt;DWORD&lt;/span&gt; dwEventMask );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; SetParaFormat( PARAFORMAT&amp;amp; pf );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; SetTargetDevice( &lt;span style="color:magenta;"&gt;HDC&lt;/span&gt; hDC, &lt;span style="color:blue;"&gt;int&lt;/span&gt; cxLineWidth );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;int&lt;/span&gt; GetTextLength() &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; SetReadOnly( &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; bReadOnly = &lt;span style="color:magenta;"&gt;TRUE&lt;/span&gt; );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;int&lt;/span&gt; GetFirstVisibleLine() &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; EDITWORDBREAKPROCEX GetWordBreakProcEx() &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; EDITWORDBREAKPROCEX SetWordBreakProcEx( EDITWORDBREAKPROCEX pfnEditWordBreakProcEx );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;int&lt;/span&gt; GetTextRange( TEXTRANGE* pTextRange ) &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;
&lt;br&gt;&lt;span style="color:blue;"&gt;#if&lt;/span&gt; ( _RICHEDIT_VER &amp;gt;= &lt;span style="color:red;"&gt;0x0200&lt;/span&gt; )
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;int&lt;/span&gt; GetTextRange( &lt;span style="color:magenta;"&gt;LONG&lt;/span&gt; nStartChar, &lt;span style="color:magenta;"&gt;LONG&lt;/span&gt; nEndChar, &lt;span style="color:magenta;"&gt;LPTSTR&lt;/span&gt; lpstrText ) &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&lt;span style="color:blue;"&gt;#else&lt;/span&gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;int&lt;/span&gt; GetTextRange( &lt;span style="color:magenta;"&gt;LONG&lt;/span&gt; nStartChar, &lt;span style="color:magenta;"&gt;LONG&lt;/span&gt; nEndChar, &lt;span style="color:magenta;"&gt;LPSTR&lt;/span&gt; lpstrText ) &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&lt;span style="color:blue;"&gt;#endif&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;&lt;span style="color:blue;"&gt;#if&lt;/span&gt; ( _RICHEDIT_VER &amp;gt;= &lt;span style="color:red;"&gt;0x0200&lt;/span&gt; )
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;DWORD&lt;/span&gt; GetDefaultCharFormat( CHARFORMAT2&amp;amp; cf ) &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; SetCharFormat( CHARFORMAT2&amp;amp; cf, &lt;span style="color:magenta;"&gt;WORD&lt;/span&gt; wFlags );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; SetDefaultCharFormat( CHARFORMAT2&amp;amp; cf );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;DWORD&lt;/span&gt; GetSelectionCharFormat( CHARFORMAT2&amp;amp; cf ) &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; SetSelectionCharFormat( CHARFORMAT2&amp;amp; cf );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; SetWordCharFormat( CHARFORMAT2&amp;amp; cf );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;DWORD&lt;/span&gt; GetParaFormat( PARAFORMAT2&amp;amp; pf ) &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; SetParaFormat( PARAFORMAT2&amp;amp; pf );
&lt;br&gt;&amp;nbsp; &amp;nbsp; TEXTMODE GetTextMode() &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; SetTextMode( TEXTMODE enumTextMode );
&lt;br&gt;&amp;nbsp; &amp;nbsp; UNDONAMEID GetUndoName() &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; UNDONAMEID GetRedoName() &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; CanRedo() &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; GetAutoURLDetect() &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; SetAutoURLDetect( &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; bAutoDetect = &lt;span style="color:magenta;"&gt;TRUE&lt;/span&gt; );
&lt;br&gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:green;"&gt;// this method is deprecated, please use SetAutoURLDetect&lt;/span&gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; EnableAutoURLDetect( &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; bEnable = &lt;span style="color:magenta;"&gt;TRUE&lt;/span&gt; );
&lt;br&gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;UINT&lt;/span&gt; SetUndoLimit( &lt;span style="color:magenta;"&gt;UINT&lt;/span&gt; uUndoLimit );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;void&lt;/span&gt; SetPalette( &lt;span style="color:magenta;"&gt;HPALETTE&lt;/span&gt; hPalette );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;int&lt;/span&gt; GetTextEx( GETTEXTEX* pGetTextEx, &lt;span style="color:magenta;"&gt;LPTSTR&lt;/span&gt; lpstrText ) &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;int&lt;/span&gt; GetTextEx( &lt;span style="color:magenta;"&gt;LPTSTR&lt;/span&gt; lpstrText, &lt;span style="color:blue;"&gt;int&lt;/span&gt; nTextLen, &lt;span style="color:magenta;"&gt;DWORD&lt;/span&gt; dwFlags = GT_DEFAULT, &lt;span style="color:magenta;"&gt;UINT&lt;/span&gt; uCodePage = CP_ACP, &lt;span style="color:magenta;"&gt;LPCSTR&lt;/span&gt; lpDefaultChar = &lt;span style="color:magenta;"&gt;NULL&lt;/span&gt;, &lt;span style="color:magenta;"&gt;LPBOOL&lt;/span&gt; lpUsedDefChar = &lt;span style="color:magenta;"&gt;NULL&lt;/span&gt; ) &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;int&lt;/span&gt; GetTextLengthEx( GETTEXTLENGTHEX* pGetTextLengthEx ) &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;int&lt;/span&gt; GetTextLengthEx( &lt;span style="color:magenta;"&gt;DWORD&lt;/span&gt; dwFlags = GTL_DEFAULT, &lt;span style="color:magenta;"&gt;UINT&lt;/span&gt; uCodePage = CP_ACP ) &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&lt;span style="color:blue;"&gt;#endif&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;&lt;span style="color:blue;"&gt;#if&lt;/span&gt; ( _RICHEDIT_VER &amp;gt;= &lt;span style="color:red;"&gt;0x0300&lt;/span&gt; )
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;int&lt;/span&gt; SetTextEx( SETTEXTEX* pSetTextEx, &lt;span style="color:magenta;"&gt;LPCTSTR&lt;/span&gt; lpstrText );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;int&lt;/span&gt; SetTextEx( &lt;span style="color:magenta;"&gt;LPCTSTR&lt;/span&gt; lpstrText, &lt;span style="color:magenta;"&gt;DWORD&lt;/span&gt; dwFlags = ST_DEFAULT, &lt;span style="color:magenta;"&gt;UINT&lt;/span&gt; uCodePage = CP_ACP );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;int&lt;/span&gt; GetEditStyle() &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;int&lt;/span&gt; SetEditStyle( &lt;span style="color:blue;"&gt;int&lt;/span&gt; nStyle, &lt;span style="color:blue;"&gt;int&lt;/span&gt; nMask = &lt;span style="color:red;"&gt;-1&lt;/span&gt; );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; SetFontSize( &lt;span style="color:blue;"&gt;int&lt;/span&gt; nFontSizeDelta );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;void&lt;/span&gt; GetScrollPos( &lt;span style="color:magenta;"&gt;LPPOINT&lt;/span&gt; lpPoint ) &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;void&lt;/span&gt; SetScrollPos( &lt;span style="color:magenta;"&gt;LPPOINT&lt;/span&gt; lpPoint );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; GetZoom( &lt;span style="color:blue;"&gt;int&lt;/span&gt;&amp;amp; nNum, &lt;span style="color:blue;"&gt;int&lt;/span&gt;&amp;amp; nDen ) &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; SetZoom( &lt;span style="color:blue;"&gt;int&lt;/span&gt; nNum, &lt;span style="color:blue;"&gt;int&lt;/span&gt; nDen );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; SetZoomOff();
&lt;br&gt;&lt;span style="color:blue;"&gt;#endif&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;&lt;span style="color:green;"&gt;// Operations&lt;/span&gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;void&lt;/span&gt; LimitText( &lt;span style="color:magenta;"&gt;LONG&lt;/span&gt; nChars = &lt;span style="color:red;"&gt;0&lt;/span&gt; );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;int&lt;/span&gt; LineFromChar( &lt;span style="color:magenta;"&gt;LONG&lt;/span&gt; nIndex ) &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;&lt;span style="color:magenta;"&gt;POINT&lt;/span&gt;&lt;/span&gt; PosFromChar( &lt;span style="color:magenta;"&gt;LONG&lt;/span&gt; nChar ) &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;int&lt;/span&gt; CharFromPos( &lt;span style="color:magenta;"&gt;POINT&lt;/span&gt; pt ) &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;void&lt;/span&gt; EmptyUndoBuffer();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;int&lt;/span&gt; LineIndex( &lt;span style="color:blue;"&gt;int&lt;/span&gt; nLine = &lt;span style="color:red;"&gt;-1&lt;/span&gt; ) &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;int&lt;/span&gt; LineLength( &lt;span style="color:blue;"&gt;int&lt;/span&gt; nLine = &lt;span style="color:red;"&gt;-1&lt;/span&gt; ) &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; LineScroll( &lt;span style="color:blue;"&gt;int&lt;/span&gt; nLines, &lt;span style="color:blue;"&gt;int&lt;/span&gt; nChars = &lt;span style="color:red;"&gt;0&lt;/span&gt; );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;void&lt;/span&gt; ReplaceSel( &lt;span style="color:magenta;"&gt;LPCTSTR&lt;/span&gt; lpszNewText, &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; bCanUndo = &lt;span style="color:magenta;"&gt;FALSE&lt;/span&gt; );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;void&lt;/span&gt; SetRect( &lt;span style="color:magenta;"&gt;LPCRECT&lt;/span&gt; lpRect );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; DisplayBand( &lt;span style="color:magenta;"&gt;LPRECT&lt;/span&gt; pDisplayRect );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;LONG&lt;/span&gt; FindText( &lt;span style="color:magenta;"&gt;DWORD&lt;/span&gt; dwFlags, FINDTEXT&amp;amp; ft ) &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;LONG&lt;/span&gt; FindText( &lt;span style="color:magenta;"&gt;DWORD&lt;/span&gt; dwFlags, FINDTEXTEX&amp;amp; ft ) &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;LONG&lt;/span&gt; FormatRange( FORMATRANGE&amp;amp; fr, &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; bDisplay = &lt;span style="color:magenta;"&gt;TRUE&lt;/span&gt; );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;LONG&lt;/span&gt; FormatRange( FORMATRANGE* pFormatRange, &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; bDisplay = &lt;span style="color:magenta;"&gt;TRUE&lt;/span&gt; );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;void&lt;/span&gt; HideSelection( &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; bHide = &lt;span style="color:magenta;"&gt;TRUE&lt;/span&gt;, &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; bChangeStyle = &lt;span style="color:magenta;"&gt;FALSE&lt;/span&gt; );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;void&lt;/span&gt; PasteSpecial( &lt;span style="color:magenta;"&gt;UINT&lt;/span&gt; uClipFormat, &lt;span style="color:magenta;"&gt;DWORD&lt;/span&gt; dwAspect = &lt;span style="color:red;"&gt;0&lt;/span&gt;, HMETAFILE hMF = &lt;span style="color:red;"&gt;0&lt;/span&gt; );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;void&lt;/span&gt; RequestResize();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;LONG&lt;/span&gt; StreamIn( &lt;span style="color:magenta;"&gt;UINT&lt;/span&gt; uFormat, EDITSTREAM&amp;amp; es );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;LONG&lt;/span&gt; StreamOut( &lt;span style="color:magenta;"&gt;UINT&lt;/span&gt; uFormat, EDITSTREAM&amp;amp; es );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;DWORD&lt;/span&gt; FindWordBreak( &lt;span style="color:blue;"&gt;int&lt;/span&gt; nCode, &lt;span style="color:magenta;"&gt;LONG&lt;/span&gt; nStartChar );
&lt;br&gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:green;"&gt;// Additional operations&lt;/span&gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;void&lt;/span&gt; ScrollCaret();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;int&lt;/span&gt; InsertText( &lt;span style="color:blue;"&gt;long&lt;/span&gt; nInsertAfterChar, &lt;span style="color:magenta;"&gt;LPCTSTR&lt;/span&gt; lpstrText, &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; bCanUndo = &lt;span style="color:magenta;"&gt;FALSE&lt;/span&gt; );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;int&lt;/span&gt; AppendText( &lt;span style="color:magenta;"&gt;LPCTSTR&lt;/span&gt; lpstrText, &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; bCanUndo = &lt;span style="color:magenta;"&gt;FALSE&lt;/span&gt; );
&lt;br&gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:green;"&gt;// Clipboard operations&lt;/span&gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; Undo();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Clear();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Copy();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Cut();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Paste();
&lt;br&gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:green;"&gt;// OLE support&lt;/span&gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; IRichEditOle* GetOleInterface() &lt;span style="color:blue;"&gt;const&lt;/span&gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; SetOleCallback( IRichEditOleCallback* pCallback );
&lt;br&gt;
&lt;br&gt;&lt;span style="color:blue;"&gt;#if&lt;/span&gt; ( _RICHEDIT_VER &amp;gt;= &lt;span style="color:red;"&gt;0x0200&lt;/span&gt; )
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; Redo();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;void&lt;/span&gt; StopGroupTyping();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;void&lt;/span&gt; ShowScrollBar( &lt;span style="color:blue;"&gt;int&lt;/span&gt; nBarType, &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; bVisible = &lt;span style="color:magenta;"&gt;TRUE&lt;/span&gt; );
&lt;br&gt;&lt;span style="color:blue;"&gt;#endif&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;&lt;span style="color:blue;"&gt;#if&lt;/span&gt; ( _RICHEDIT_VER &amp;gt;= &lt;span style="color:red;"&gt;0x0300&lt;/span&gt; )
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; SetTabStops( &lt;span style="color:blue;"&gt;int&lt;/span&gt; nTabStops, &lt;span style="color:magenta;"&gt;LPINT&lt;/span&gt; rgTabStops );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; SetTabStops();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;BOOL&lt;/span&gt; SetTabStops( &lt;span style="color:blue;"&gt;const&lt;/span&gt; &lt;span style="color:blue;"&gt;int&lt;/span&gt;&amp;amp; cxEachStop );&amp;nbsp; &amp;nbsp; &lt;span style="color:green;"&gt;// takes an 'int'&lt;/span&gt;
&lt;br&gt;&lt;span style="color:blue;"&gt;#endif&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;
これで大体何ができるか分かった。
あとは、実際に使用しそうで使ったことがないメソッドについて詳しくみていくことにする。
&lt;/p&gt;
&lt;h2&gt;GetLibraryName&lt;/h2&gt;
&lt;p&gt;リッチエディットコントロールを使用するには、最初にリッチエディットコントロールの DLL をロードしておかなければいけないらしい。
&lt;br&gt;リッチエディットコントロールの DLL 名はバージョンによって異なるので（Ver1.0 は RICHED32.DLL で、Ver2.0 以降は RICHED20.DLL）、このメソッドを使うことでその違いを CRichEditCtrl がプリプロセス時点で解決してくれる。
&lt;/p&gt;
&lt;div style="font-family:monospace; padding:10px; border:3px double green; margin:10px;"&gt;
&lt;span style="color:green;"&gt;// IniModifier.cpp&lt;/span&gt;
&lt;br&gt;&lt;span style="color:blue;"&gt;int&lt;/span&gt; &lt;span style="color:magenta;"&gt;WINAPI&lt;/span&gt; _tWinMain( &lt;span style="color:magenta;"&gt;HINSTANCE&lt;/span&gt;, &lt;span style="color:magenta;"&gt;HINSTANCE&lt;/span&gt;, &lt;span style="color:magenta;"&gt;LPTSTR&lt;/span&gt;, &lt;span style="color:blue;"&gt;int&lt;/span&gt; )
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:magenta;"&gt;HMODULE&lt;/span&gt; hRich = ::LoadLibrary( CRichEditCtrl::GetLibraryName() );
&lt;br&gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:green;"&gt;// snip&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; ::FreeLibrary( hRich );
&lt;br&gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;return&lt;/span&gt; nRet;
&lt;br&gt;}
&lt;/div&gt;
&lt;h2&gt;SetSelectionCharFormat&lt;/h2&gt;
&lt;p&gt;現在の選択のテキストの文字書式属性を設定する。
&lt;br&gt;なお、選択範囲がない場合は、以降の入力についての設定となる。
&lt;/p&gt;
&lt;div style="font-family:monospace; padding:10px; border:3px double green; margin:10px;"&gt;
&lt;span style="color:green;"&gt;// CRichEditCtrl m_rich;&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;&lt;span style="color:green;"&gt;// テキストを青色太字にして保護にする&lt;/span&gt;
&lt;br&gt;CHARFORMAT cf;
&lt;br&gt;cf.dwMask = CFM_PROTECTED | CFM_COLOR | CFM_BOLD;
&lt;br&gt;cf.dwEffects = CFE_PROTECTED | CFE_BOLD;
&lt;br&gt;cf.crTextColor = &lt;span style="color:magenta;"&gt;RGB&lt;/span&gt;( &lt;span style="color:red;"&gt;0&lt;/span&gt;, &lt;span style="color:red;"&gt;0&lt;/span&gt;, &lt;span style="color:red;"&gt;255&lt;/span&gt; );
&lt;br&gt;m_rich.SetSelectionCharFormat( cf );
&lt;/div&gt;
&lt;h2&gt;SetEventMask&lt;/h2&gt;
&lt;p&gt;親ウィンドウに送る通知メッセージを指定する。&lt;/p&gt;
&lt;dl style="line-height:130%;"&gt;
&lt;dt&gt;ENM_PROTECTED
 &lt;dd&gt;保護領域を編集しようとした時に WM_NOTIFY メッセージで EN_PROTECTED が通知されるようにする。
 &lt;br&gt;0 を返すと変更許可、非0 を返すと変更禁止とする。
 &lt;br&gt;&lt;code&gt;ENPROTECTED* pProtected = &lt;span style="color:blue;"&gt;reinterpret_cast&lt;/span&gt;&amp;lt; ENPROTECTED* &amp;gt;( &lt;span style="color:blue;"&gt;reinterpret_cast&lt;/span&gt;&amp;lt; LPNMHDR &amp;gt;( lParam ) );&lt;/code&gt; としたとき、
 &lt;br&gt;&lt;code&gt;pProtected-&amp;gt;msg&lt;/code&gt; に、この通知発生原因のメッセージ ID が入っている。
 &lt;br&gt;&lt;code&gt;pProtected-&amp;gt;chrg.cpMin&lt;/code&gt; と &lt;code&gt;pProtected-&amp;gt;chrg.cpMax&lt;/code&gt; に、この通知発生元のインデックス（リッチエディットコントロール先頭位置からのオフセット）が入っている。
&lt;dt&gt;ENM_KEYEVENTS
 &lt;dd&gt;キーボードイベントが発生した時に WM_NOTIFY メッセージで EN_MSGFILTER が通知されるようにする。
 &lt;br&gt;0 を返すと通常のイベントを処理する。非0 を返すと以降のイベント処理を無視する。
 &lt;br&gt;&lt;code&gt;MSGFILTER* pFilter = &lt;span style="color:blue;"&gt;reinterpret_cast&lt;/span&gt;&amp;lt; MSGFILTER* &amp;gt;( &lt;span style="color:blue;"&gt;reinterpret_cast&lt;/span&gt;&amp;lt; LPNMHDR &amp;gt;( lParam ) );&lt;/code&gt; としたとき、
 &lt;br&gt;&lt;code&gt;pFilter-&amp;gt;msg&lt;/code&gt; に、この通知発生原因のメッセージ ID が入っている。
&lt;dt&gt;ENM_MOUSEEVENTS
 &lt;dd&gt;マウスイベントが発生した時に WM_NOTIFY メッセージで EN_MSGFILTER が通知されるようにする。
 &lt;br&gt;EN_MSGFILTER の動作については、ENM_KEYEVENTS と同じ。
&lt;/dl&gt;
&lt;div style="font-family:monospace; padding:10px; border:3px double green; margin:10px;"&gt;
m_rich.SetEventMask( ENM_PROTECTED | ENM_KEYEVENTS | ENM_MOUSEEVENTS );
&lt;/div&gt;&lt;img src ="http://blogs.wankuma.com/rapt/aggbug/153287.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>RAPT</dc:creator><title>INI 編集ツール IniModifier を作成してみる (2)</title><link>http://blogs.wankuma.com/rapt/archive/2008/08/16/153188.aspx</link><pubDate>Sat, 16 Aug 2008 01:23:00 GMT</pubDate><guid>http://blogs.wankuma.com/rapt/archive/2008/08/16/153188.aspx</guid><wfw:comment>http://blogs.wankuma.com/rapt/comments/153188.aspx</wfw:comment><comments>http://blogs.wankuma.com/rapt/archive/2008/08/16/153188.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/rapt/comments/commentRss/153188.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/rapt/services/trackbacks/153188.aspx</trackback:ping><description>&lt;h1&gt;INI 編集ツール IniModifier を作成してみる (2)&lt;/h1&gt;
&lt;p&gt;過去の記事へのリンク：
&lt;br&gt;&lt;A href="http://blogs.wankuma.com/rapt/archive/2008/08/16/153180.aspx" title="INI 編集ツール IniModifier を作成してみる (1) へ"&gt;INI 編集ツール IniModifier を作成してみる (1)&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
リソース配置が楽なのでダイアログベースで作ることにする。&lt;br&gt;
とりあえずリソースエディタで適当にコントロールを配置して、UI を決める。&lt;br&gt;
ダイアログの自動リサイズを実装するため、CDialogResize も継承しておく。&lt;br&gt;
&lt;/p&gt;
&lt;div style="font-family:monospace; padding:10px; border:3px double green; margin:10px;"&gt;
&lt;span style="color:blue;"&gt;class&lt;/span&gt; CMainDlg&lt;br&gt;
&amp;nbsp; &amp;nbsp; : &lt;span style="color:blue;"&gt;public&lt;/span&gt; CDialogImpl&amp;lt; CMainDlg &amp;gt;&lt;br&gt;
&amp;nbsp; &amp;nbsp; , &lt;span style="color:blue;"&gt;public&lt;/span&gt; CDialogResize&amp;lt; CMainDlg &amp;gt;&lt;br&gt;
{&lt;br&gt;
&lt;/div&gt;
&lt;p&gt;
テキストを編集したり色をつけたりしたいので、リッチエディットコントロールを使ってみようと思う。リッチエディットコントロールを使うのはこれが初めてだが、WTL のヘッダを見ていると結構いろいろできそうなので、せっかくなので調べながら作っていくことにする。&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;リソースエディタのイメージはこんな感じ↓&lt;/p&gt;
&lt;img src="http://rapt.wankuma.com/IniModifier_image01.png" width="545px" height="363px" alt="リソースエディタのイメージ" /&gt;&lt;br&gt;
&lt;p&gt;
リッチエディットコントロールは 2.0 を使うこととする。&lt;br&gt;
CDialogResize は atlframe.h&lt;br&gt;
CRichEditCtrl は atlctrls.h&lt;br&gt;
にそれぞれ定義されているので、stdafx.h は下記のようになった。
&lt;/p&gt;
&lt;div style="font-family:monospace; padding:10px; border:3px double green; margin:10px;"&gt;
&lt;span style="color:green;"&gt;// stdafx.h&lt;/span&gt;
&lt;br&gt;&lt;span style="color:green;"&gt;// Change these values to use different versions&lt;/span&gt;
&lt;br&gt;&lt;span style="color:blue;"&gt;#define&lt;/span&gt; WINVER&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color:red;"&gt;0x0500&lt;/span&gt;
&lt;br&gt;&lt;span style="color:blue;"&gt;#define&lt;/span&gt; _WIN32_WINNT&amp;nbsp; &amp;nbsp; &lt;span style="color:red;"&gt;0x0501&lt;/span&gt;
&lt;br&gt;&lt;span style="color:blue;"&gt;#define&lt;/span&gt; _WIN32_IE&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color:red;"&gt;0x0501&lt;/span&gt;
&lt;br&gt;&lt;span style="color:blue;"&gt;#define&lt;/span&gt; _RICHEDIT_VER&amp;nbsp; &amp;nbsp;&lt;span style="color:red;"&gt;0x0200&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;&lt;span style="color:green;"&gt;// WTL よりも ATL を優先する場合は、atlapp.h より前に include すること&lt;/span&gt;
&lt;br&gt;&lt;span style="color:blue;"&gt;#include&lt;/span&gt; &lt;span style="color:red;"&gt;&amp;lt;atlstr.h&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color:blue;"&gt;#include&lt;/span&gt; &lt;span style="color:red;"&gt;&amp;lt;atltypes.h&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;&lt;span style="color:blue;"&gt;#include&lt;/span&gt; &lt;span style="color:red;"&gt;&amp;lt;atlbase.h&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color:blue;"&gt;#include&lt;/span&gt; &lt;span style="color:red;"&gt;&amp;lt;atlapp.h&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;&lt;span style="color:blue;"&gt;extern&lt;/span&gt; CAppModule _Module;
&lt;br&gt;
&lt;br&gt;&lt;span style="color:blue;"&gt;#include&lt;/span&gt; &lt;span style="color:red;"&gt;&amp;lt;atlcrack.h&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;&lt;span style="color:blue;"&gt;#include&lt;/span&gt; &lt;span style="color:red;"&gt;&amp;lt;atlframe.h&amp;gt;&lt;/span&gt;&amp;nbsp; &lt;span style="color:green;"&gt;// CDialogResize&lt;/span&gt;
&lt;br&gt;&lt;span style="color:blue;"&gt;#include&lt;/span&gt; &lt;span style="color:red;"&gt;&amp;lt;atlctrls.h&amp;gt;&lt;/span&gt;&amp;nbsp; &lt;span style="color:green;"&gt;// CRichEditCtrl&lt;/span&gt;
&lt;br&gt;&lt;span style="color:blue;"&gt;#include&lt;/span&gt; &lt;span style="color:red;"&gt;&amp;lt;atldlgs.h&amp;gt;&lt;/span&gt;&amp;nbsp; &amp;nbsp;&lt;span style="color:green;"&gt;// CFileDialog&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;処理の関係上、文字セットは UNICODE ではなく、マルチバイト文字セット(MBCS) でビルドすることにする。&lt;/p&gt;
&lt;div style="font-family:monospace; padding:10px; border:3px double green; margin:10px;"&gt;
&lt;span style="color:green;"&gt;// stdafx.cpp&lt;/span&gt;
&lt;br&gt;&lt;span style="color:blue;"&gt;#if defined&lt;/span&gt;( _UNICODE ) || &lt;span style="color:blue;"&gt;defined&lt;/span&gt;( UNICODE )
&lt;br&gt;&lt;span style="color:blue;"&gt;#error&lt;/span&gt; This program doesn't assume unicode build.
&lt;br&gt;&lt;span style="color:blue;"&gt;#endif&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;
# ところで、なぜ &lt;code style="font-size:100%;"&gt;#error&lt;/code&gt; ディレクティブではマルチバイト文字が使えないんだろ。&lt;br&gt;
# ダブルクォーテーションで括ってやってもだめ。L&amp;quot;&amp;quot; としてもだめ。何かうまくいくようにしてくれるといいんだけど。
&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/rapt/aggbug/153188.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>RAPT</dc:creator><title>INI 編集ツール IniModifier を作成してみる (1)</title><link>http://blogs.wankuma.com/rapt/archive/2008/08/16/153180.aspx</link><pubDate>Sat, 16 Aug 2008 00:18:00 GMT</pubDate><guid>http://blogs.wankuma.com/rapt/archive/2008/08/16/153180.aspx</guid><wfw:comment>http://blogs.wankuma.com/rapt/comments/153180.aspx</wfw:comment><comments>http://blogs.wankuma.com/rapt/archive/2008/08/16/153180.aspx#Feedback</comments><slash:comments>209</slash:comments><wfw:commentRss>http://blogs.wankuma.com/rapt/comments/commentRss/153180.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/rapt/services/trackbacks/153180.aspx</trackback:ping><description>&lt;h1&gt;IniModifier&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://www.jrsoftware.org/isinfo.php" title="Inno Setup へ"&gt;Inno Setup&lt;/a&gt; のフロントエンドである ISTool の&lt;a href="http://rapt21.com/innosetup.php" title="ISTool の日本語言語ファイル配布ページへ"&gt;日本語言語ファイル&lt;/a&gt;作成をしたりしているが、INI 形式のファイルをアップデートが非常にめんどくさすぎるので何かツールを作成しようと思う。&lt;/p&gt;
&lt;p&gt;開発環境は以下の通り。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows XP sp2
&lt;li&gt;Visual C++ .NET 2003 sp1
&lt;li&gt;WTL 8.0
&lt;/ul&gt;
&lt;p&gt;要件仕様は下記の通りとする。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ファイルのエンコーディングは SJIS/UTF-8 に対応。（できれば EUC も対応。）
&lt;li&gt;セクション名・キー名で差分チェックを行う。
&lt;li&gt;Visual SourceSafe の比較画面のように見比べつつ編集もできるようにする。
&lt;li&gt;セクション：&lt;b style="color:black;"&gt;[太字表示]&lt;/b&gt;
&lt;li&gt;コメント：&lt;b style="color:green;"&gt;緑色表示&lt;/b&gt;
&lt;li&gt;追加されたセクション・キー：&lt;b style="color:blue;"&gt;青色表示&lt;/b&gt;
&lt;li&gt;削除されたセクション・キー：&lt;b style="color:red;"&gt;赤色表示&lt;/b&gt;
&lt;li&gt;削除されたキー：キーの先頭に &lt;code style="font-size:100%;"&gt;&amp;quot;&lt;span style="color:red; font-weight:bold;"&gt;;&amp;lt;DEL&amp;gt;:&lt;/span&gt;&amp;quot;&lt;/code&gt; を追加。
&lt;/ul&gt;
&lt;p&gt;IniModifier の完成イメージはこんな感じ↓&lt;/p&gt;
&lt;img src="http://rapt.wankuma.com/IniModifier_image00.png" width="545px" height="363px" alt="IniModifier の完成イメージ" /&gt;&lt;img src ="http://blogs.wankuma.com/rapt/aggbug/153180.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>RAPT</dc:creator><title>ウイルスバスター 2008 の落とし穴</title><link>http://blogs.wankuma.com/rapt/archive/2008/03/04/126295.aspx</link><pubDate>Tue, 04 Mar 2008 23:48:00 GMT</pubDate><guid>http://blogs.wankuma.com/rapt/archive/2008/03/04/126295.aspx</guid><wfw:comment>http://blogs.wankuma.com/rapt/comments/126295.aspx</wfw:comment><comments>http://blogs.wankuma.com/rapt/archive/2008/03/04/126295.aspx#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://blogs.wankuma.com/rapt/comments/commentRss/126295.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/rapt/services/trackbacks/126295.aspx</trackback:ping><description>&lt;P&gt;自宅では、メーラーは秀丸メールを使用しているのだけど、大量にくる迷惑メールはウイルスバスター 2007 の迷惑/詐欺メールの判定機能（[MEIWAKU] や [Phishing] と件名に表示）を併用してうまくフィルタリングさせていた。&lt;/P&gt;
&lt;P&gt;ところが 3/1 に自宅のウイルスバスターを 2008 にアップデートしたところ、深刻な問題が発生。迷惑メール対策機能を設定しているにも関わらず、上記の [MEIWAKU] といった文字が追加されなくなり、&lt;FONT color=#006400 size=4&gt;&lt;STRONG&gt;メールのフィルタリングが動作しなくなってしまった&lt;/STRONG&gt;&lt;/FONT&gt;。&lt;/P&gt;
&lt;P&gt;何度か設定を見直したが、設定ミスというのは考えられず、むしろ&lt;FONT color=#006400 size=4&gt;&lt;STRONG&gt;機能削除&lt;/STRONG&gt;&lt;/FONT&gt;された感がある。そこで、サポートにメール問い合わせをしてみた。&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;以下、回答。&lt;BR&gt;----------&lt;BR&gt;迷惑/詐欺メールの判定につきまして、[MEIWAKU]や[Phishing]と件名に表示という機能は&lt;BR&gt;大変申し訳ございませんがご要望されている機能は&lt;BR&gt;現時点では、ウイルスバスター2008 にはにはございません。&lt;/P&gt;
&lt;P&gt;ご希望に添うことができず、誠に申し訳ございませんが製品仕様につき&lt;BR&gt;なにとぞご理解、ご了承のほどよろしくお願いいたします。&lt;/P&gt;
&lt;P&gt;なお、「秀丸メール」は動作要件外となっております。&lt;BR&gt;大変申し訳ございませんが、何卒ご了承いただきますようお願いいたします。&lt;BR&gt;----------&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;とのことorz&lt;/P&gt;
&lt;P&gt;いやな予感、大的中。速攻で 2007 に戻しました。&lt;BR&gt;この迷惑メール判定機能が便利でアッサリ 3 年契約したのに・・・&lt;BR&gt;とりあえず再登載の要望は出しておくか。&lt;/P&gt;
&lt;P&gt;年内は 2007 が使えるからいいとして、来年からどうしようかな。&lt;BR&gt;こうなってはウイルスバスター 2008 は もはや&lt;FONT color=#006400 size=4&gt;&lt;STRONG&gt;使う意味ない&lt;/STRONG&gt;&lt;/FONT&gt;し、何かいいフィルタリングソフトを探さないといけないかな。。&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/rapt/aggbug/126295.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>RAPT</dc:creator><title>Microsoft Office 2007 Ultimate が届きました</title><link>http://blogs.wankuma.com/rapt/archive/2007/07/05/83765.aspx</link><pubDate>Thu, 05 Jul 2007 01:30:00 GMT</pubDate><guid>http://blogs.wankuma.com/rapt/archive/2007/07/05/83765.aspx</guid><wfw:comment>http://blogs.wankuma.com/rapt/comments/83765.aspx</wfw:comment><comments>http://blogs.wankuma.com/rapt/archive/2007/07/05/83765.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/rapt/comments/commentRss/83765.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/rapt/services/trackbacks/83765.aspx</trackback:ping><description>&lt;P&gt;すばらしいことに、帰宅したら既に注文したものが届いていました。&lt;BR&gt;早速動作テストだー。&lt;BR&gt;といっても、ソフトウェアなので、初期不良といえば、ディスクのリードエラーぐらいしか&lt;BR&gt;ありえないのだけど。&lt;/P&gt;
&lt;P&gt;ま、最低限必要なものはインストール済みだから、認証だけでいいか、と思っていたのだけど、&lt;BR&gt;認証画面で Microsoft Office 2007 Professional と書かれていたのがちょっと嫌な感じだったので&lt;BR&gt;体験版の Microsoft Office 2007 Professional と Groove 2007 を一度アンインストールし、&lt;BR&gt;改めて、届いた &lt;FONT color=#008000&gt;&lt;STRONG&gt;Microsoft Office 2007 Ultimate&lt;/STRONG&gt;&lt;/FONT&gt; の DVD から再インストールしました。&lt;/P&gt;
&lt;P&gt;個人情報の設定は、前回インストールした際に設定した内容を覚えてくれていたようで、&lt;BR&gt;特に何もする必要がなく、すんなり移行できました。&lt;/P&gt;
&lt;P&gt;Ultimate とはいえ、結局は必須な Excel と Groove、そして使う可能性があるものとして、&lt;BR&gt;Word と PowerPoint、そして VisioViewer をインストールしました。&lt;/P&gt;
&lt;P&gt;Outlook, Access, Publisher, InfoPath, OneNote, InterConnect については、面白そうなものも&lt;BR&gt;あるけれど結局使わなそうな気がしたので、必要になったら入れるということで、今回は&lt;BR&gt;インストールしませんでした。&lt;/P&gt;
&lt;P&gt;今まで使っていた Microsoft Office のバージョンは、2000 だったのもあって、特に UI まわりで&lt;BR&gt;ギャップが激しいですが、幸いなことに、必要なおもな操作については、キーボードショートカット&lt;BR&gt;の割り当てについて大きな変更がなかったようなので、まぁ何とか使えています。&lt;/P&gt;
&lt;P&gt;そしてもちろん、&lt;FONT color=#008000&gt;&lt;STRONG&gt;2007/07/31 購入分まで有効&lt;/STRONG&gt;&lt;/FONT&gt;な&lt;BR&gt;&lt;FONT color=#008000 size=4&gt;&lt;STRONG&gt;「今が決め時! 夏のラッキークーポン キャンペーン」&lt;/STRONG&gt;&lt;BR&gt;&lt;/FONT&gt;の申込用紙の作成も終わり、あとは 2007/08/07 までに郵便局に持っていくだけです。&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/rapt/aggbug/83765.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>RAPT</dc:creator><title>Microsoft Office 2007 買いました！</title><link>http://blogs.wankuma.com/rapt/archive/2007/07/03/83399.aspx</link><pubDate>Tue, 03 Jul 2007 01:44:00 GMT</pubDate><guid>http://blogs.wankuma.com/rapt/archive/2007/07/03/83399.aspx</guid><wfw:comment>http://blogs.wankuma.com/rapt/comments/83399.aspx</wfw:comment><comments>http://blogs.wankuma.com/rapt/archive/2007/07/03/83399.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/rapt/comments/commentRss/83399.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/rapt/services/trackbacks/83399.aspx</trackback:ping><description>&lt;P&gt;今更か？　とか言われそうですが、予算がなかったのと、これがないとな～んもできねー&lt;BR&gt;とかいう状態ではなかったので、体験版でお茶を濁していました。&lt;/P&gt;
&lt;P&gt;でもまぁ、￥5,000 キャッシュバック優待キャンペーンも今月末が期限だし、本体価格も&lt;BR&gt;大分下がったので、そろそろ買っておくか、ということで、勢いで &lt;FONT color=#008000&gt;&lt;STRONG&gt;Ultimate 版&lt;/STRONG&gt;&lt;/FONT&gt;を買ってみました。&lt;BR&gt;&lt;FONT color=#800080 size=2&gt;# まぁ、Groove の関係で、どうせ買うなら Ultimate 版ってことは発売時から決めていたことですが(^^&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;例によって使いこなせる自信はありませんが、&lt;FONT color=#008000&gt;&lt;STRONG&gt;使いこなす必要はなく、使えればいい&lt;/STRONG&gt;&lt;/FONT&gt;んです（ど～ん&lt;/P&gt;
&lt;P&gt;同一 PC、マルチブート環境で複数 OS にインストールして使用できるかどうかのライセンスの方が&lt;BR&gt;不明なのと、メインが XP なので、取り急ぎ、XP の方に入れたいと思います。&lt;BR&gt;&lt;FONT color=#800080 size=2&gt;# 当面 Vista はオモチャとして以外は使えなさそうなので。。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;到着は最速で水曜日かなー&lt;BR&gt;わくわく&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/rapt/aggbug/83399.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>RAPT</dc:creator><title>コードの色付け for C/C++</title><link>http://blogs.wankuma.com/rapt/archive/2006/12/29/54100.aspx</link><pubDate>Fri, 29 Dec 2006 04:31:00 GMT</pubDate><guid>http://blogs.wankuma.com/rapt/archive/2006/12/29/54100.aspx</guid><wfw:comment>http://blogs.wankuma.com/rapt/comments/54100.aspx</wfw:comment><comments>http://blogs.wankuma.com/rapt/archive/2006/12/29/54100.aspx#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://blogs.wankuma.com/rapt/comments/commentRss/54100.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/rapt/services/trackbacks/54100.aspx</trackback:ping><description>&lt;P&gt;かつて某所で使うために作ったものですが。&lt;/P&gt;
&lt;P&gt;&lt;a href="http://www.atmark.gr.jp/~s2000/r/rtl/CSrcConv.html" title="C/C++ Source Converterへ"&gt;C/C++ Source Converter&lt;/a&gt;&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/rapt/aggbug/54100.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>RAPT</dc:creator><title>Microsoft&amp;reg; XML Notepad 2007 を使ってみた。</title><link>http://blogs.wankuma.com/rapt/archive/2006/11/27/47220.aspx</link><pubDate>Mon, 27 Nov 2006 01:34:00 GMT</pubDate><guid>http://blogs.wankuma.com/rapt/archive/2006/11/27/47220.aspx</guid><wfw:comment>http://blogs.wankuma.com/rapt/comments/47220.aspx</wfw:comment><comments>http://blogs.wankuma.com/rapt/archive/2006/11/27/47220.aspx#Feedback</comments><slash:comments>90</slash:comments><wfw:commentRss>http://blogs.wankuma.com/rapt/comments/commentRss/47220.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/rapt/services/trackbacks/47220.aspx</trackback:ping><description>&lt;P&gt;ひろえむ産地の&lt;BR&gt;&lt;A href="http://blogs.wankuma.com/hirom/archive/2006/11/26/47088.aspx"&gt;http://blogs.wankuma.com/hirom/archive/2006/11/26/47088.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;を見て、さっそく使ってみました。&lt;/P&gt;
&lt;P&gt;CDATA とか TEXT とかを追加すると改行がなくなる。&lt;BR&gt;Element と Attribute のみなら、見た目（インデント）もきれいになる。&lt;BR&gt;この仕様はよくわからないけど。&lt;/P&gt;
&lt;P&gt;どうせなら、このツール自身の UI も XML で編集できたらおもしろいのに、と思った。&lt;BR&gt;そうすれば各国語版も自由に使えそうだし、と。&lt;/P&gt;
&lt;P&gt;デフォルトでは日本語は文字化けするけどオプションで設定を変えれば普通に使える。&lt;BR&gt;それで下記が３時間くらいでちゃっちゃと作った解説ページ。半分仕事だけど。汗&lt;BR&gt;&lt;A href="http://www.atmark.gr.jp/~s2000/r/xml_notepad.html"&gt;http://www.atmark.gr.jp/~s2000/r/xml_notepad.html&lt;/A&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/rapt/aggbug/47220.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>