[FIX SendMessage を TB_GETIMAGELIST と Windows XP で、イメージ リスト ハンドルを取得するには使用するとする作業が取得、適切なハンドル

文書翻訳 文書翻訳
文書番号: 811415 - 対象製品
この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
すべて展開する | すべて折りたたむ

目次

現象

Microsoft Windows コモン コントロール 6. 0 (Mscomctl.ocx) 内のさまざまなコントロールからイメージのハンドルを取得する SendMessage を使えます。 SendMessage を使用して TB_GETIMAGELIST、LVM_GETIMAGELIST、TVM_GETIMAGELIST、または TCM_GETIMAGELIST imagelist のハンドル、ツールバー、リスト ビュー ツリー ビュー、取得するを渡すことができますおよびタブ ストリップ (TabStrip) コントロールにはタブ ストリップ (TabStrip) コントロールのコントロールします。

しかし、Windows XP を実行するコンピューターでこれを実行すると、誤ったハンドルが返されます。 他の API を呼び出すしこのハンドルを渡すと、これらの API 呼び出しが正しく機能しません。

原因

この問題は Windows XP と Mscomctl.ocx ロードの 2 つの異なるバージョン Comctl32.dll の互換性がないために発生します。

解決方法

サポートされている修正プログラムしますです、はのみことを目的としていますこの資料に記載されている問題を解決します。 修正プログラムは、問題が発生したシステムにのみ適用してください。 この修正プログラム テストを受ける可能性があります。 そのため場合この問題で深刻な影響を受けていないお勧めしますこの修正プログラムを含む次の Visual Studio 6. 0 Service Pack まで待つことです。

この問題を直ちに解決するには Microsoft 製品サポート サービス、修正プログラムを入手するにお問い合わせください。 Microsoft Product Support Services の電話番号一覧およびサポート料金については、次のマイクロソフト Web サイトを参照してください:
http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS
メモ 特殊な場合は、Microsoft Support 担当者により、特定の更新は問題が解決される場合料金がサポート通常発生する可能性があります取り消されます。 通常のサポート料金が追加の質問および問題の特定のアップデートの対象とならない問題について適用されます。

修正プログラム (英語版) のファイル属性は次表のとおりです。 これらのファイルの日時に協定時刻 (UTC) 記載します。 各ファイルの日付および時刻は、世界協定時刻 (UTC) で示されています。 UTC および現地時間の時差を確認するには、コントロール パネル]、日付と時刻ツールの [ タイム ゾーン ] タブを使用してください。
   Date         Time   Version   Size       File name
   -----------------------------------------------------
   13-Dec-2002  00:18  6.0.97.1  1,062,160  Mscomctl.ocx

状況

マイクロソフトではこれが、この資料の冒頭に記載されているマイクロソフト製品のバグとして認識しています。

詳細

動作を再現する手順

ツールバー コントロールを使用して問題を再現をするには次の手順に従います。
  1. 新しい Visual Basic 6. 0 の標準 EXE プロジェクトを開始します。 既定では、Form1 が作成されます。
  2. [ プロジェクト ] メニューの [ コンポーネント ] をクリックします。 [ コンポーネント ] ダイアログ ボックス、 6. Microsoft Windows コモン コントロール 0 に参照を追加します。
  3. Form1 に、 イメージ リスト (ImageList1) コントロールや、 ツールバー の (Toolbar1) のコントロール (Command1)、 コマンド ボタン (CommandButton) コントロール を挿入します。
  4. イメージ リスト コントロールを右クリックし、 イメージ ] タブの 2 つのイメージをイメージ リスト コントロールの追加を実行します。
  5. Add the following code to Form1:
    Option Explicit
    
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long
    Private Declare Function GetImageCount Lib "comctl32" Alias "ImageList_GetImageCount" (ByVal p As Long) As Long
    Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal cmd As Long) As Long
    
    
    Private Const WM_USER = &H400
    Private Const TB_GETIMAGELIST = WM_USER + 49
    Private Const GW_CHILD = 5
    
    Private Sub Command1_Click()
        Dim hImageList As Long, hChild As Long
        
        hChild = GetWindow(Toolbar1.hwnd, GW_CHILD)
        
        hImageList = SendMessage(hChild, TB_GETIMAGELIST, 0, 0)
        MsgBox "Image Count = " & GetImageCount(hImageList)
    End Sub
    
    Private Sub Form_Load()
        Set Toolbar1.ImageList = ImageList1
        Toolbar1.Buttons.Add , , "Button 1"
        Toolbar1.Buttons.Add , , "Button 2"
        Toolbar1.Buttons(1).Image = 1
        Toolbar1.Buttons(2).Image = 2
    End Sub
    
  6. アプリケーションを実行し、 Command1 を実行します。 イメージの数 テキスト ボックスは 0 をです。 修正プログラムを適用した後、イメージの数は正しく 2 として返します。

プロパティ

文書番号: 811415 - 最終更新日: 2014年2月26日 - リビジョン: 2.3
この資料は以下の製品について記述したものです。
  • Microsoft Visual Basic 6.0 Enterprise Edition
  • Microsoft Visual Basic 6.0 Learning Edition
  • the operating system: Microsoft Windows XP
キーワード:?
kbnosurvey kbarchive kbfix kbqfe kbvbp600fix kbmt KB811415 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:811415
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com