メモリのハンドル
■ このスレッドは過去ログ倉庫に格納されています
0001杉山 遥
NGNGLocalFree、LocalLock などと言う関数でそれらしき
記述を見かけました。このハンドルは変数のポインタから
取得したり出来るのでしょうか?
この辺りの概念がよくわからないのでよろしければ
教えてください。
0002名無しさん@お腹いっぱい。
NGNG普通ハンドルってポインタのことじゃないの?
0003名無しさん@お腹いっぱい。
NGNGMac では、typedef char *Ptr; typedef Ptr *Handle; だった。
0004名無しさん@お腹いっぱい。
NGNGのは構わないけど、ハンドルをポインタ代わりに扱
うのは特殊な場合を除いてダメ。
特殊な場合ってのは、GLobalAlloc()やLocalAlloc()
なら、タイプがGPTRの時とか。
ハンドルってのは、単に識別子でしかないのよ。
0005名無しさん@お腹いっぱい。
NGNG普通ハンドルって自動車に付いているのアレのことじゃないの?
0006名無しさん@お腹いっぱい。
NGNGのは構わないけど、ハンドルをアレ代わりに扱
うのは特殊な場合を除いてダメ。
ハンドルってのは、単に識別子でしかないのよ。
0007名無しさん@お腹いっぱい。
NGNG0008名無しさん@DTMF
NGNG普通パンドラって空けてはいけないアレのことじゃないの?
間違ってたらゴメン
普通コンドルってペルーなんかにいるアレのことじゃないの?
間違ってたらゴメン
普通バンドルってハードを買うとついてくるアレのことじゃないの?
0009名無しさん@お腹いっぱい。
NGNG普通パンヤオってチューヤンの名字のことじゃないの?
間違ってたらゴメン
普通ハンドルってここでよく見る�d�jのことじゃないの?
0010名無しさん@お腹いっぱい。
NGNGのは構わないけど、パンヤオをアレ代わりに扱
うのは特殊な場合を除いてダメ。
特殊な場合ってのは、アフリカ縦断()やoperator += 伊藤
とかなら、タイプが電波少年の時とか。
パンヤオってのは、単に識別子でしかないのよ。
0011�j�d
NGNG00121です
NGNG変更したいのです。
ためしたのは
EM_GETHANDLEでコントロールのハンドルを取得して
LocalFreeで解放。
これはハンドルは帰ってきましたが解放できませんでした。
これがうまく行けば新規の変数のハンドルを取得して
EM_SETHANDLEでコントロールに設定しようと思っています。
根本的に間違っているかもしれませんが
何かアドバイスがあったらお願いします。
0013名無しさん@お腹いっぱい。
NGNG今時Windows3.1ですか?そうでないなら、結局同じ
とは言えGlobalXX系を使いましょう。LocalXX系は16
bit時代の互換のためのものです。
順序としては、EM_GETHANDLEでエディットコントロー
ルのハンドルを取得、GlobalAlloc()で自分用メモリハ
ンドル取得、EM_SETHANDLEで自分用設定、GlobalFree()
でEM_GETHANDLEで取得したハンドルの開放でしょうか。
このハンドルの指すメモリ内容を変更する場合は
GLobalLock()でポインタを得てからです。
使用後はGlobalUnlock()して下さい。
00141
NGNGレス有難うございます。早速試してみます。
0015杉山 遥
NGNGなにか誤った点がありますでしょうか?
(1) EM_GETHANDLE で現在のメモリハンドル取得
(2) GlobalAlloc で GPTRフラグで新規メモリ作成 (ハンドルが返りました)
(3) EM_SETHANDLE で (2) のハンドルを指定
(4) GlobalFree で (1) のハンドルを解放 (Nullが返ってきたので成功しました)
(5) GlobalLock で (2) ハンドルを指定しポインタを取得 (成功しました)
(6) エディットに入力してみるが入力不可能。
もう一点なのですが(1) で取得したハンドルのポインタを取得する方法は
ありますか? このハンドルに GlobalLock は働きませんでした。
APIは駆け出しなのでなにぶん勘違いもあるかと思いますが
よろしくお願いします。
0016Visual名無しさん
NGNGLockしちゃったらエディットコントロール側で書き込めなくなるのでは?
…外してるかも。
0017名無しさん@お腹いっぱい。
NGNGWin32ではGlobal〜()系とLocal〜()系に差はないと思うけど。
両方ともWin16互換APIなんだし。
Win32 nativeなのはHeap〜()系とVirtual〜()系ね。
00183
NGNG勉強になりやした。どうも。UNIXでは聞きなれない言葉だなあ。
0019名無しさん@お腹いっぱい。
NGNGunixであまり聞かないのは86の16bit環境でメモリのスワップを
する話でよく出るから、目立たないのかも。
■ このスレッドは過去ログ倉庫に格納されています