<?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>C/C++</title><link>http://blogs.wankuma.com/blue/category/693.aspx</link><description>C/C++</description><managingEditor>Blue(blue@wankuma.com)</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>Blue(blue@wankuma.com)</dc:creator><title>私のやり方まちがっている？(掲示板の回答について)</title><link>http://blogs.wankuma.com/blue/archive/2007/07/20/86259.aspx</link><pubDate>Fri, 20 Jul 2007 21:56:00 GMT</pubDate><guid>http://blogs.wankuma.com/blue/archive/2007/07/20/86259.aspx</guid><wfw:comment>http://blogs.wankuma.com/blue/comments/86259.aspx</wfw:comment><comments>http://blogs.wankuma.com/blue/archive/2007/07/20/86259.aspx#Feedback</comments><slash:comments>18</slash:comments><wfw:commentRss>http://blogs.wankuma.com/blue/comments/commentRss/86259.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/blue/services/trackbacks/86259.aspx</trackback:ping><description>&lt;A href="http://hpcgi1.nifty.com/MADIA/Vcbbs/wwwlng.cgi?print+200707/07070029.txt"&gt;http://hpcgi1.nifty.com/MADIA/Vcbbs/wwwlng.cgi?print+200707/07070029.txt&lt;/A&gt;&lt;BR&gt;より、私の回答スタイルを全否定されました。&lt;BR&gt;&lt;BR&gt;プログラマって、何かを作るってことに達成感を持ちませんかね？&lt;BR&gt;パズルのようにあるピースとピースをつないでゆく、そういうところが面白いと思うんだけど。&lt;img src ="http://blogs.wankuma.com/blue/aggbug/86259.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Blue(blue@wankuma.com)</dc:creator><title>マイクロソフト MVP アワード受賞</title><link>http://blogs.wankuma.com/blue/archive/2007/07/03/83380.aspx</link><pubDate>Tue, 03 Jul 2007 00:52:00 GMT</pubDate><guid>http://blogs.wankuma.com/blue/archive/2007/07/03/83380.aspx</guid><wfw:comment>http://blogs.wankuma.com/blue/comments/83380.aspx</wfw:comment><comments>http://blogs.wankuma.com/blue/archive/2007/07/03/83380.aspx#Feedback</comments><slash:comments>18</slash:comments><wfw:commentRss>http://blogs.wankuma.com/blue/comments/commentRss/83380.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/blue/services/trackbacks/83380.aspx</trackback:ping><description>何もネタがなかったので久々の更新です。&lt;BR&gt;&lt;BR&gt;皆々様のおかけで、Visual Developer&amp;nbsp; - Visual C++のカテゴリで&lt;BR&gt;マイクロソフト MVP アワードを受賞することができました。&lt;BR&gt;&lt;BR&gt;MVPという重圧に恥じぬように日々精進しなければ。。。&lt;img src ="http://blogs.wankuma.com/blue/aggbug/83380.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Blue(blue@wankuma.com)</dc:creator><title>/clr:oldSyntaxでも、ちゃんとデザイン画面で表示できるのね</title><link>http://blogs.wankuma.com/blue/archive/2007/02/19/62954.aspx</link><pubDate>Mon, 19 Feb 2007 01:30:00 GMT</pubDate><guid>http://blogs.wankuma.com/blue/archive/2007/02/19/62954.aspx</guid><wfw:comment>http://blogs.wankuma.com/blue/comments/62954.aspx</wfw:comment><comments>http://blogs.wankuma.com/blue/archive/2007/02/19/62954.aspx#Feedback</comments><slash:comments>321</slash:comments><wfw:commentRss>http://blogs.wankuma.com/blue/comments/commentRss/62954.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/blue/services/trackbacks/62954.aspx</trackback:ping><description>&lt;P&gt;MSDNフォーラムでMC++の質問のために、VS2005のCLR Windowsフォームアプリケーションを&lt;BR&gt;/clr:oldSyntaxで、コンパイルできるように書き直したのですが、&lt;BR&gt;これはデザイン画面使えなくなっちゃうかなぁ～と思ったけど、そうでもなかったです。&lt;BR&gt;&lt;BR&gt;コントロールの配置からイベントまで自動生成されるコードはすべてMC++用になるんですな。&lt;BR&gt;&lt;BR&gt;いろいろ便利になっているのかなと思ったら、新しいフォームとかのCLRコンポーネントは追加できない&lt;BR&gt;ようです。&lt;BR&gt;ですので、追加時は/clrを変更してから、自動生成されたコードをMC++用に書き直し、&lt;BR&gt;再度/clr:oldSyntaxに戻すようなことをしないとだめなのかな。(ここまで面倒見てほしかった。)&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/blue/aggbug/62954.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Blue(blue@wankuma.com)</dc:creator><title>C++/CLIでタイプライブラリを使ってExcelを操作できない その２</title><link>http://blogs.wankuma.com/blue/archive/2007/01/19/56908.aspx</link><pubDate>Fri, 19 Jan 2007 01:15:00 GMT</pubDate><guid>http://blogs.wankuma.com/blue/archive/2007/01/19/56908.aspx</guid><wfw:comment>http://blogs.wankuma.com/blue/comments/56908.aspx</wfw:comment><comments>http://blogs.wankuma.com/blue/archive/2007/01/19/56908.aspx#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://blogs.wankuma.com/blue/comments/commentRss/56908.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/blue/services/trackbacks/56908.aspx</trackback:ping><description>&lt;P&gt;# タイトル長かったので短くしたw&lt;BR&gt;&lt;BR&gt;&lt;A href="http://blogs.wankuma.com/blue/archive/2007/01/16/56466.aspx"&gt;前回&lt;/A&gt;Windows フォームアプリケーションで #importをつかってExcelを使おうとすると、&lt;BR&gt;vtMissingをつかうようなメソッドを使うと、ASSERTして実行できない現象がありました。&lt;BR&gt;&lt;BR&gt;そこでデバッガでさかのぼっていったところ、&lt;IMG style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid" src="http://blue.wankuma.com/blog/20070119/ExcelTest.JPG"&gt;&lt;BR&gt;&lt;BR&gt;ってなのをみつけ、もしかしたらvtMissingが作成できていないとか？と適当なことを思いつき&lt;BR&gt;&lt;FONT color=#0000ff&gt;グローバル変数として _variant_t vtMissing; を入れてみたら&lt;/FONT&gt;、よくわからないけどASSERTもなく動きました！&lt;BR&gt;# extern _varinat_t vtMissing;はcomutil.hに記述されていますが、その定義はどこに記述されているのだろ？&lt;BR&gt;# (記述されていなければリンクエラーになるはずなんだけど。)&lt;BR&gt;&lt;BR&gt;この対処でありなんだろうか？&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/blue/aggbug/56908.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Blue(blue@wankuma.com)</dc:creator><title>[C++/CLI]Windows フォームアプリケーションでタイプライブラリを使ってExcelを操作できない</title><link>http://blogs.wankuma.com/blue/archive/2007/01/16/56466.aspx</link><pubDate>Tue, 16 Jan 2007 01:53:00 GMT</pubDate><guid>http://blogs.wankuma.com/blue/archive/2007/01/16/56466.aspx</guid><wfw:comment>http://blogs.wankuma.com/blue/comments/56466.aspx</wfw:comment><comments>http://blogs.wankuma.com/blue/archive/2007/01/16/56466.aspx#Feedback</comments><slash:comments>1771</slash:comments><wfw:commentRss>http://blogs.wankuma.com/blue/comments/commentRss/56466.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/blue/services/trackbacks/56466.aspx</trackback:ping><description>&lt;P&gt;最近 C++/CLI でも Excel を操作したいという質問をよく見ます。&lt;BR&gt;そこでサンプルでも作っておこうかなとおもって、いろいろやってみたのですが、&lt;BR&gt;CLRプロジェクト－Windows フォームアプリケーションのときに、ある条件のときに実行できなくなります。 &lt;BR&gt;(コンパイルはできる) &lt;BR&gt;&lt;BR&gt;以下そのコードです。Formも立ち上がらずすぐにASSERTします。&lt;BR&gt;(ちなみに、CoInitializeは(何でかはよくわからないけど)不要のようです。) &lt;/P&gt;
&lt;DIV class=sourcecode&gt;&lt;PRE&gt;&lt;SPAN class=keyword&gt;#import&lt;/SPAN&gt; &lt;SPAN class=string&gt;"C:\Program Files\Common Files\Microsoft Shared\OFFICE11\MSO.DLL"&lt;/SPAN&gt; \
    no_namespace rename(&lt;SPAN class=string&gt;"DocumentProperties"&lt;/SPAN&gt;, &lt;SPAN class=string&gt;"DocumentPropertiesXL"&lt;/SPAN&gt;) \ 
    rename(&lt;SPAN class=string&gt;"RGB"&lt;/SPAN&gt;, &lt;SPAN class=string&gt;"MSO_RGBXL"&lt;/SPAN&gt;)
&lt;SPAN class=keyword&gt;#import&lt;/SPAN&gt; &lt;SPAN class=string&gt;"C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB"&lt;/SPAN&gt; \
    no_namespace
&lt;SPAN class=keyword&gt;#import&lt;/SPAN&gt; &lt;SPAN class=string&gt;"D:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE"&lt;/SPAN&gt; \
    rename(&lt;SPAN class=string&gt;"ReplaceText"&lt;/SPAN&gt;, &lt;SPAN class=string&gt;"ReplaceTexXL"&lt;/SPAN&gt;) rename(&lt;SPAN class=string&gt;"CopyFile"&lt;/SPAN&gt;, &lt;SPAN class=string&gt;"CopyFileXL"&lt;/SPAN&gt;) \
    rename(&lt;SPAN class=string&gt;"DialogBox"&lt;/SPAN&gt;, &lt;SPAN class=string&gt;"DialogBoxXL"&lt;/SPAN&gt; ) rename(&lt;SPAN class=string&gt;"RGB"&lt;/SPAN&gt;, &lt;SPAN class=string&gt;"RGBXL"&lt;/SPAN&gt;)\
    rename(&lt;SPAN class=string&gt;"DocumentProperties"&lt;/SPAN&gt;, &lt;SPAN class=string&gt;"DocumentPropertiesXL"&lt;/SPAN&gt;) \
    exclude(&lt;SPAN class=string&gt;"IFont"&lt;/SPAN&gt;) exclude(&lt;SPAN class=string&gt;"IPicture"&lt;/SPAN&gt;) no_dual_interfaces

HRESULT ExcelTest()
{
    HRESULT hr = S_OK;
    Excel::_ApplicationPtr pApp = NULL;
    &lt;SPAN class=keyword&gt;try&lt;/SPAN&gt;
    {
        hr = pApp.CreateInstance(L&lt;SPAN class=string&gt;"Excel.Application"&lt;/SPAN&gt;);
        &lt;SPAN class=keyword&gt;if&lt;/SPAN&gt; (FAILED(hr)) _com_issue_error(hr);
        Excel::WorkbooksPtr pWorkbooks = pApp-&amp;gt;GetWorkbooks();
        &lt;SPAN class=keyword&gt;if&lt;/SPAN&gt; (pWorkbooks)
        { 
            Excel::_WorkbookPtr pWorkbook = pWorkbooks-&amp;gt;Add();
            &lt;SPAN class=keyword&gt;if&lt;/SPAN&gt; (pWorkbook)
                pWorkbook-&amp;gt;Close();
        }
        pApp-&amp;gt;Quit();
    }
    &lt;SPAN class=keyword&gt;catch&lt;/SPAN&gt; (_com_error&amp;amp; e)
    {
        hr = e.Error();
    }
    &lt;SPAN class=keyword&gt;if&lt;/SPAN&gt; (pApp) pApp.Release();
    &lt;SPAN class=keyword&gt;return&lt;/SPAN&gt; hr;
}&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P&gt;環境:Visual Studio 2005 Pro SP1/Windows Xp Pro SP2/Excel 2003 Personal SP2&lt;BR&gt;オプション:Unicode 文字セットを使用する, 共通言語ランタイム サポート (/clr)&lt;BR&gt;(一応ソースは分けてあります。(ExcelTest.cpp))&lt;BR&gt;&lt;BR&gt;これをCLRコンソールアプリケーションで記述し動かしても何も問題ありません。&lt;BR&gt;で、本題の&lt;BR&gt;&amp;gt;ある条件のときに&lt;BR&gt;とは、引数省略時のvtMissingではなかろうか？と思っています。&lt;BR&gt;上のコードの Excel::Workbooks::Add と Excel::Workbook::Close をコメントアウトすると正常に実行できます。&lt;BR&gt;また、&lt;BR&gt;&amp;gt;Excel::_WorkbookPtr pWorkbook = pWorkbooks-&amp;gt;Add();&lt;BR&gt;を&lt;BR&gt;Excel::_WorkbookPtr pWorkbook = pWorkbooks-&amp;gt;Add(Excel::xlWBATWorksheet);&lt;BR&gt;にして、Excel::Workbook::Close をコメントアウトしても正常に実行できます。&lt;BR&gt;&lt;BR&gt;&amp;gt;pWorkbook-&amp;gt;Close();&lt;BR&gt;を&lt;BR&gt;_variant_t v;&lt;BR&gt;pWorkbook-&amp;gt;Close(v);&lt;BR&gt;としても実行できません。&lt;BR&gt;&lt;BR&gt;ASSERTは&lt;BR&gt;D:\Program Files\Microsoft Visual Studio 8\VC\crt\src\dbgheap.c の 1473 で発生し、ちょっと理解しにくそうなものです。&lt;BR&gt;&amp;gt;_ASSERTE(_CrtIsValidHeapPointer(pUserData));&lt;BR&gt;&lt;BR&gt;一応、#pragma unmanged とか、試してみたけど意味なしっぽく、お手上げ状態です、、、&lt;BR&gt;もう少しやってみて、だめなら掲示板にスレたてますかな。&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/blue/aggbug/56466.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Blue(blue@wankuma.com)</dc:creator><title>VC2005のインテリセンスってどうなの？</title><link>http://blogs.wankuma.com/blue/archive/2006/11/26/47069.aspx</link><pubDate>Sun, 26 Nov 2006 02:45:00 GMT</pubDate><guid>http://blogs.wankuma.com/blue/archive/2006/11/26/47069.aspx</guid><wfw:comment>http://blogs.wankuma.com/blue/comments/47069.aspx</wfw:comment><comments>http://blogs.wankuma.com/blue/archive/2006/11/26/47069.aspx#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://blogs.wankuma.com/blue/comments/commentRss/47069.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/blue/services/trackbacks/47069.aspx</trackback:ping><description>&lt;P&gt;VC2005で気になったこと。&lt;BR&gt;MFCの～A、～Wのあるメソッドで、どうも～Wしかインテリセンスで表示されないような。&lt;BR&gt;(～Aや～Wのつかないものが表示されない)&lt;BR&gt;&lt;FONT size=2&gt;※一部のクラスのメソッドで文字セット：Unicodeでしか試していません。&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;VC2005(VS2005 Pro)&lt;BR&gt;&lt;IMG style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid" src="http://blue.wankuma.com/blog/20061126/VC2005.JPG"&gt;&lt;BR&gt;↑&lt;BR&gt;の場合、GetWindowTextってのは候補にないの？ってことです。&lt;BR&gt;(実際は使えます。)&lt;/P&gt;
&lt;P&gt;参考(VC6 Stand)&lt;BR&gt;&lt;IMG style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid" src="http://blue.wankuma.com/blog/20061126/VC6.JPG"&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;ちなみに windows.hのGetWindowTextの場合は３つとも表示されます。&lt;BR&gt;&lt;IMG style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid" src="http://blue.wankuma.com/blog/20061126/VC2005API.JPG"&gt;&lt;BR&gt;&lt;BR&gt;編集追記)&lt;BR&gt;よく考えると、CWnd::GetWindowTextと宣言されているものの&lt;BR&gt;GetWindowTextが#defineで置き換わった後のものを表示しているような気がします。&lt;BR&gt;(ということで、_MBCSの場合はGetWindowTextAしか出ないわけなのかな。)&lt;BR&gt;&lt;BR&gt;まぁ一番問題なのは、折角TCHARとして使っているのにもかかわらず、&lt;BR&gt;GetWindowTextWとか使っちゃったら、_MBCSではコンパイルできなくなってしまうということです。&lt;BR&gt;(TCHARを理解していない人ははまりそうですな。)&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/blue/aggbug/47069.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Blue(blue@wankuma.com)</dc:creator><title>String^型の変数を可変長引数に指定してもいいのか？</title><link>http://blogs.wankuma.com/blue/archive/2006/11/23/46658.aspx</link><pubDate>Thu, 23 Nov 2006 02:03:00 GMT</pubDate><guid>http://blogs.wankuma.com/blue/archive/2006/11/23/46658.aspx</guid><wfw:comment>http://blogs.wankuma.com/blue/comments/46658.aspx</wfw:comment><comments>http://blogs.wankuma.com/blue/archive/2006/11/23/46658.aspx#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://blogs.wankuma.com/blue/comments/commentRss/46658.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/blue/services/trackbacks/46658.aspx</trackback:ping><description>&lt;P&gt;ある掲示板で、「String^型をchar型配列にするにはsprintfを使えばいい」というのを見ました。&lt;BR&gt;実際試してみるとうまくいっているようには見える。&lt;BR&gt;&lt;BR&gt;ただ、可変長引数にString^型を渡す？そんなのやっていいの？って疑問が出ました。&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;&lt;SPAN class=codetitle&gt;実験コード&lt;/SPAN&gt;
&lt;DIV class=sourcecode&gt;&lt;PRE&gt;&lt;SPAN class=keyword&gt;#include&lt;/SPAN&gt; &lt;SPAN class=string&gt;&amp;lt;cstdarg&amp;gt;&lt;/SPAN&gt;
&lt;SPAN class=keyword&gt;#include&lt;/SPAN&gt; &lt;SPAN class=string&gt;&amp;lt;cstdio&amp;gt;&lt;/SPAN&gt;

&lt;SPAN class=keyword&gt;#pragma unmanaged&lt;/SPAN&gt;

&lt;SPAN class=keyword&gt;void&lt;/SPAN&gt; test1( &lt;SPAN class=keyword&gt;char&lt;/SPAN&gt;* first, ... )
{
    &lt;SPAN class=keyword&gt;char&lt;/SPAN&gt;* letter = first;
    va_list args;
    
    va_start( args, first );
    
    &lt;SPAN class=keyword&gt;while&lt;/SPAN&gt; ( letter != &lt;SPAN class=number&gt;0&lt;/SPAN&gt; )
    {
        printf( &lt;SPAN class=string&gt;"'%s'\n"&lt;/SPAN&gt;, letter );
        letter = va_arg( args, &lt;SPAN class=keyword&gt;char&lt;/SPAN&gt;* );
    }
    
    va_end( args );
}

&lt;SPAN class=keyword&gt;#pragma managed&lt;/SPAN&gt;

&lt;SPAN class=keyword&gt;int&lt;/SPAN&gt; main()
{
    System::String^ s = L&lt;SPAN class=string&gt;"漢字ひらがなEIJI1234+/?"&lt;/SPAN&gt;;
    
    &lt;SPAN class=comment&gt;// 実験&lt;/SPAN&gt;
    test1( &lt;SPAN class=string&gt;"てすと"&lt;/SPAN&gt;, s, &lt;SPAN class=number&gt;0&lt;/SPAN&gt; );
    
    &lt;SPAN class=keyword&gt;return&lt;/SPAN&gt; &lt;SPAN class=number&gt;0&lt;/SPAN&gt;;
}&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P&gt;var_arg( args, char* )のようにchar*型で受ければうまいこと変換されているのかなぁ。(なんでだろ？)&lt;BR&gt;(ということで、swprintfは使えないようだ。) &lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/blue/aggbug/46658.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>