投稿日 | : 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)
どなたか、よいアドバイスはございませんでしょうか?