VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 2003/04/23(Wed) 14:40
投稿者JJ
Eメール
URL
タイトルターミナルサーバを介したCreateCompatibleBitmap

はじめまして、JJと言います。

今、ターミナルサーバを使用したプログラムを作成しています。
VBで作成した画像をビットマップにしてエクセルに出力するプログラムなのですが、CreateCompatibleBitmapを使用して領域を確保しようとすると、エラーになってしまいます。GetLastErrorで取得したエラー内容は以下のとおりです。

エラー番号:8
メッセージ:このコマンドを実行するのに十分な記憶域がありません

この現象は、ターミナルサーバを使用した場合だけおきます。

1.ターミナルサーバを使用していないマシン
  問題なく動作します

2.ターミナルサーバをインストールしたマシン
  上記のエラーが必ず発生します

3.ターミナルサーバに対してクライアントで接続したとき
  エラーが発生します
  ただし、クライアントを起動させるときに800x600の解像度で実行すると、問題なく  動作します
  (ターゲットマシンは1024x768です)

また、2,3の場合でも、CreateCompatibleBitmapのパラメータの横幅、縦幅を小さくすれば、動作します。
しかし、2倍のメモリを積んだマシンをサーバにしても、エラーは発生しました。

以下がプログラムです。

    lngWidth = ScaleX(CNST_LAYOUT_WIDTH, vbTwips, vbPixels)
    lngHeight = ScaleY(CNST_LAYOUT_HEIGHT, vbTwips, vbPixels)
    
    lngMemDC = CreateCompatibleDC(GetDC(0))

    If lngMemDC = 0 Then
        MsgBox PRINT_MSG_ERR_CREATEDC
        Exit Function
    End If
    
    lngNewBitmap = CreateCompatibleBitmap(GetDC(0), lngWidth, lngHeight)
  'ここでエラーが発生します

    If lngNewBitmap = 0 Then
        Call DeleteObject(lngMemDC)
        MsgBox PRINT_MSG_ERR_CREATEBITMAP
        Exit Function
    End If
    
    lngOldBitmap = SelectObject(lngMemDC, lngNewBitmap)


どなたか、よいアドバイスはございませんでしょうか?


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -