goo blog サービス終了のお知らせ 
goo

VS2008(WINVER と_WIN32_WINNT)

Visual Studio(以下VS)2003で動作してVS2008では動作しなかった事例
環境
OS XP SP2
win32 Project(未MFC)
状況
リバーコントロールでRB_INSERTBANDが失敗する
VS2003で作成して実行した場合とをVS2008で実行した場合に違いがある。
両方のバージョンともにコンパイル、ビルドは可能。
VS2003では、リバーコントロール、追加コントロールが正常に表示されるが、
VS2008では、どちらも表示されない。
また、SPY++にて各コントロールは作成されているのを確認。
以下一部抜粋。
/* 
   hRebar = CreateWindowEx(WS_EX_TOOLWINDOW,REBARCLASSNAME,NULL,…);
   REBARBANDINFO	rebarInfo;
   rebarInfo.cbSize = sizeof( REBARBANDINFO ); // 他省略
 */
SendMessage( hRebar, RB_INSERTBAND, (WPARAM)-1, (LPARAM)&rebarInfo );
// 上記、SendMessageでエラー(戻り値:0)


改善方法
とりあえず、以下を追加することでOK。(0x0600の指定で上記エラー発生)
#define WINVER		0x0501
#define _WIN32_WINNT	0x0501


関連URL
Visual C++ の概念 : 移植とアップグレード
方法 : WINVER および _WIN32_WINNT を変更する
http://msdn2.microsoft.com/ja-jp/library/6sehtctf.aspx


# VISTA…
コメント ( 1 ) | Trackback ( 0 )
« ソート 日本語表記に... »
 
コメント
 
 
 
助かりました (drednote)
2009-07-23 18:24:21
リバーコントロールへのバンドの挿入が何やっても失敗するので必死で原因を調べていました。
まさかVS2008であること自体が罠だったとは……
 
コメントを投稿する
 
名前
タイトル
URL
コメント
コメント利用規約に同意の上コメント投稿を行ってください。

数字4桁を入力し、投稿ボタンを押してください。