[表示 : 全て 最新50 1-99 101- 201- 2chのread.cgiへ]
Update time : 10/09 01:24 / Filesize : 48 KB / Number-of Response : 216
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Win32API質問箱 Build80



1 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 04:25:40 ]
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。
「知らないならレスしないで下さい。ウザイだけです。 」なんて言わないでねっ!

過去スレ、関連リンクは>>2-10くらい。

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(msdn2.microsoft.com/library/)の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで

- Win32API質問箱 wiki
wiki.livedoor.jp/program1/d/FrontPage

Win32API質問箱 Build79
pc12.2ch.net/test/read.cgi/tech/1240411224/

135 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 21:45:59 ]
>>133
FILE_NOTIFY_INFORMATIONの
FileNameがFileNameLengthの分だけ正しい内容になっていればOKだぞ。
0終端はなされないと書かれてあるしな。

136 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 21:50:05 ]
>>134
ググレカス

答えは出てないが↓
ttp://okwave.jp/qa3337870.html

core2だとレジスタ内に温度が格納されている?↓
ttp://pc-match.spaces.live.com/blog/cns!54C129738D4C3785!201.entry

137 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 21:50:11 ]
TOPMOSTのウインドウをオーナーウインドウにしたらできる気もする>最前面より手前

138 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 22:04:25 ]
>>135
有難うっ
>0終端はなされないと書かれてあるしな。
これは知らなかった。WideCharToMultiByteでANSI分の文字数取って変換ってやってた
何にせよ、おかげで解決しそうです。有難うございました。

139 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 22:52:27 ]
VBのリストビュー使ってるんだが、SubItemが編集状態にできないので
フォーカスが当たってる場所に擬似的にテキストボックスを表示させたい
んだが、フォーカスが当たっている座標が分からん。何か良いAPIはないものか。


140 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 23:28:11 ]
>>139
LVM_GETITEMRECT とかでいいんじゃねーの?

141 名前:デフォルトの名無しさん [2009/06/19(金) 00:37:16 ]
初歩的な質問かもしれませんがエディットボックスを作ってもキーボードで文字を打ち込むことができません。なぜでしょうか?
マウスの右クリックから文字を貼り付けることはできます。

142 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 00:50:39 ]
ここは大穴狙いで。
メッセージループでTranslateMessageしていない、とか?

143 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 01:30:01 ]
>>142
すげー助かりましたw
分かってることなのになんでこんなの見落としてたんだろう・・・



144 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 07:32:39 ]
上でも挙がってるReaDirectoryChangesWを使って見たんだが
ファイルを複数移動すると取りこぼす時がある
何か改善案ないかな?

145 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 11:10:38 ]
1個につき1回じゃないぞ

146 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 11:16:13 ]
>>145
勿論承知してる
非同期のマルチスレッドで常に呼んでるけど
ファイルを多数移動すると通知されれず
結果取得の為の待機をしてしまう
このAPIは基本取りこぼしはしない?

147 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 15:06:27 ]
>同期操作が正しく完了した場合、lpBuffer パラメータはフォーマット済みのバッファを表し、
>lpBytesReturned パラメータにはバッファに書き込まれたバイト数が返ります。
>転送バイト数が 0 の場合、バッファが小さ過ぎて、ディレクトリやサブツリーで発生した
>すべての変更に関する詳細情報を格納できなかったことを表します。
>この場合、ディレクトリまたはサブツリーを列挙して、変更内容を計算する必要があります。

148 名前:デフォルトの名無しさん [2009/06/19(金) 15:23:12 ]
とあるサイトで勉強していて、マウスクリックしたところにSetPixelVで点を打ってみましょう、という課題をやってみたのですが
まず
300*300の多次元配列を用意して
int pixel[1000][1000];
WM_LBUTTONDOWNのメッセージで
int w = LOWORD(lParam);
int h = HIWORD(lParam);
pixel[w][h] = 1;
UpdateWindow(hWnd);
return 0;
WM_PAINTのメッセージで
HDC hDC;
PAINTSTRUCT ps;
hDC = BeginPaint( hWnd, &ps );
for(int w=0; w<300; w++)
{
for(int h=0; h<300; h++)
{
if(pixel[w][h] == 1)
{
SetPixelV( hDC, w, h, RGB(255,0,0) );
}
}
}
EndPaint( hWnd, &ps );
return 0;
してみたのですが、windowサイズを変えるまで塗られません。
RedrawWindowも試してみましたが、WM_PAINTが発生しないようです。この方法は駄目でしょうか?
それともwindow生成を自分でクラス化してるのですが、そのクラスに問題があるのでしょうか?


149 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 15:31:40 ]
ちゃんとInvalidateしてる?

150 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 15:39:25 ]
>>147
デバッガで追ったけど、バッファが足りないっていうのは無かった
関数呼んでWaitで変更通知来るまで待機してるんだが
まだ通知されてるだろうに、そこで待機状態に入る

151 名前:148 mailto:sage [2009/06/19(金) 15:47:47 ]
>>149
ありがとうございます。出来ました。

InvalidateRgn(hWnd, NULL, true);
UpdateWindow(hWnd);

152 名前:148 mailto:sage [2009/06/19(金) 16:50:15 ]
というか
WM_LBUTTONDOWNのメッセージで
int w = LOWORD(lParam);
int h = HIWORD(lParam);
pixel[w][h] = 1;
InvalidateRect(hWnd, NULL, false);

これだけでOKなんですね

153 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 17:24:23 ]
下図のように自己交差しているリージョンを、
┏━┓
┃  ┃
┗━╋━┓
   ┃  ┃
   ┗━┛
交点で個別のリージョンに分けたいんですけど、
┏━┓
┃  ┃
┗━┛┏━┓
     ┃  ┃
     ┗━┛
簡便な方法ってないものでしょうか。
リージョンに関するWinAPIで対処可能でしょうか。

よろしくお願いします。



154 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 17:33:49 ]
早く教えて下さいよぉ

155 名前:153 ◆D9KRK95MhY mailto:sage [2009/06/19(金) 17:37:04 ]
153です。いちおうトリップつけときます。

156 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 17:40:56 ]
この時間はやはりわかる人はいないんですね。。。

157 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 17:46:22 ]
1日平均10レスのスレにそんな速く回答が帰ってくると思うなっての…。

158 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 17:51:32 ]
>>153
できるよ

159 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 17:52:26 ]
>>153
できますね

160 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 18:15:27 ]
GetRegionDataで地道に作り直すしかないんじゃないか

161 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 19:07:35 ]
>>158-159
具体的にアドバイスした方が良いと思われる。

162 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 19:13:29 ]
┏━┓
┃  ┃
┗━┛┏━┓
     ┃  ┃
     ┗━┛
の上記二つのリージョンを作ったら
CombineRgnで混ぜればいいよ

163 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 19:45:46 ]
>>162
リージョンの合成じゃなくて、分離する方法を聞いていると思われる。



164 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 21:21:38 ]
>>163
あ、すまん勘違いしてた
リージョンから分離したいなら、GetRegionDataから作り直す
ビットマップとかから作るなら、CreateRectRgnとCombineRgn組み合わせればいいよ

165 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 21:25:54 ]
リージョンというより、自己交差しているパスを交点で切り離せれば、
そこからリージョンを作ればいいような気がするな。
ま、APIでそういうことが出来るのかどうかは分からないが。

166 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 21:28:16 ]
海外の身体改造は半端ねえからなあ

眼球くりぬいてLED埋め込んだ奴
vimeo.com/4500681

167 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 21:30:49 ]
>>166
何処の誤爆だ?
怖くて見れない

168 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 21:33:02 ]
ただ光らせるために片目捨てるとかアホだろw

169 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 21:33:47 ]
中盤グロかった・・・

170 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 22:11:57 ]
誤爆はほっとけ

171 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 22:15:42 ]
スレチを承知で聞かせて貰う
グロイ?

172 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 22:17:47 ]
義眼にLED仕込んだバカのビデオだよ

173 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 22:20:47 ]
術前→設計→術後だから血とかはないな



174 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 22:23:56 ]
>>172-173
サンクス。最初の画面で嫌悪感出て見るの辞めた
零見たいにサーモグラフィー埋め込めば良いのに

175 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 23:31:53 ]
話がそれたが、回答としては出尽くしたのか?
他にアイデアがあれば書いといてあげて。

176 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 23:33:14 ]
自演してんなよ

177 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 23:36:28 ]
おれは175=165だけど?

178 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 23:57:57 ]
れぎおん

179 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 02:31:11 ]
無理。

180 名前:153 ◆D9KRK95MhY mailto:sage [2009/06/20(土) 10:55:44 ]
皆さん回答ありがとうございます。
164さんのビットマップから作る方法を検討してみます。

181 名前:デフォルトの名無しさん [2009/06/20(土) 13:46:04 ]
IMEの制御について詳しい方いらっしゃいますか?
漢字仮名まじりの文をIMEを使って全部ひらがなに逆変換したいんですが、
漢字仮名まじりの文をIMEに設定する関数 ImmSetCompositionString(himc, SCS_SETSTR, str, length, NULL, 0)が
MSIME2002では成功するのにATOK2006では失敗します。
一応MSIMEでは動くものが作れたんですが、ぶっちゃけクソ変換なので、できればATOKを活用したいのです。

何か別の方法がないでしょうか?
ネットで調べても変換操作をしたあとの再変換の方法ならあるんですが、
漢字仮名まじりの文をIMEに設定して逆変換する方法で、ATOKで成功するものが見つけられないんです。

182 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 13:51:17 ]
大抵の企業でATOKなんてわざわざ入れてないのでおk

183 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 13:59:03 ]
世間一般の企業がどうとかは関係なくて、自分のところのデータ変換処理に必要なんです。
ATOKだと文脈を理解して適切な読み仮名に変換してくれるはずなので、それに期待してるのです。



184 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 14:04:21 ]
「詳細なテキストサービスのサポートをプログラムのすべてに拡張する」がONならOFFにしてみるとか?
これでうまくいっても、PGでの対応方法は知らないけど。

185 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 15:39:29 ]
>>184
それはOFFになってましたね。
試しにONにしてみると、MSIMEでも逆変換できなくなってしまいました。。。
「詳細なテキストサービスをオフにする」のチェックも変えましたが、こちらは変化なしでした。

Immで始まるIME制御APIは自分が試した大部分でATOKとMSIMEの間で互換性がありました。
しかしIMEとは無関係のところからもってきた文を逆変換することに関してだけは互換性が無いようなのです。
ATOK12ではできたという話がネット上にありましたが、ATOK2006はその方法ではダメでした。
難しいですね。

186 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 16:34:41 ]
コントロールの座標をクライアントから見たい座標で取得する方法でいいのないな?

今はコントロールとクライアントの二つをGetWindoxRectでスクリーン座標から強引に求めてるが
どうも違う

187 名前:デフォルトの名無しさん [2009/06/20(土) 16:43:25 ]
>>186
MapWindowPoints関数を使え。

188 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 16:59:52 ]
ウェブのMSDNって「戻り値」の説明だけごそーり消えてるんだけどなんなんだあれ?
直す気ないのかな?

189 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 17:00:31 ]
関数とprintfとかとAPIはどっちが遅いの?

190 名前:デフォルトの名無しさん [2009/06/20(土) 17:01:21 ]
>>181
ImmGetConversionList でいけるはず

191 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 17:26:14 ]
>>190
IME2003以降では使えないけどな

192 名前:デフォルトの名無しさん [2009/06/20(土) 17:47:12 ]
>>189
自分で調べろ

193 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 17:48:37 ]
FF11 のいずれかを含むページは 10752 ページ中、 164 ページ見つかりました。



194 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 17:48:59 ]
誤爆した

195 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 18:01:34 ]
>>189
OSで応答する分APIが遅い

196 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 18:52:31 ]
>>187
有難うございます!!

197 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 18:54:46 ]
>>195
は?

198 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 19:11:46 ]
システムフックするソースとか見ると、DLL側で良く

#pragma data_seg(".ShareForHook")
HHOOK MouseHook = NULL;
#pragma data_seg()

を眼にするんだが、何でこれをする意味が良く分からない。
単純にHHOOK MouseHook = NULL;じゃ駄目なの?

199 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 19:15:11 ]
#pragma data_segってのはプロセス間での共用メモリスペースを作るオプションでな
その中で宣言された変数はどこのプロセスで変更しても全てのプロセスに伝わるわけだ

何で必要なのかはCallNextHookExの第一引数見れば分かる
2000以降は要らないんだっけかな

200 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 19:15:12 ]
理由もちゃんと書いてあるだろ

201 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 19:26:23 ]
>>197
ライブラリの関数は同じ実行ファイル内にリンクされるのでコストは自分と定義した関数と同じ
APIの場合は、IPCを通じてOS内部にある関数本体のアドレスに引数を渡して結果を受け取るためコスト増

202 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 19:31:04 ]
ああこいつ馬鹿か

203 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 19:34:53 ]
素直に頭が悪くて理解できないと言えよw



204 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 19:36:31 ]
printfもOSのAPI内部で呼ぶっつーの馬鹿

205 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 19:37:02 ]
自分で定義した関数で、想定されうるあらゆるデバイスに対して出力できる処理かいてるのか

206 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 19:38:39 ]
>>199
有難う!
MSDNでのSetWindowsHookEx関数では
>グローバルフックは共有リソースであり
と書いてあった
正直まだ解せない部分もあるけど、システムフックの最低限必要のマナーなのね

207 名前:199 mailto:sage [2009/06/20(土) 19:43:48 ]
ああ、理解力なさそうだね

208 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 20:15:17 ]
>>189=>>195=>>201=>>203

209 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 21:39:29 ]
>>190
ImmGetConversionListを使う方法を教えていただき、どうもありがとうございました。
結論からすると、やはり逆変換はMSIME2002ではできて、ATOK2006ではできなかったです。
ソースコードは下記をそのまま使いました。
athomejp.com/goldfish/api/yomichange.asp

ATOKの2006は鬼門バージョンなんですかねw

210 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 21:54:53 ]
まぁ、そんなもんじゃね?

あとは、実際の動作をエミュレートするかだな。

211 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 21:56:13 ]
プログラム書いていていつも思うのは
LeftとRightとかBeginとEndとか
長さが違うのが無性に腹立つんだが
欧米人には美的感覚ってものが無いのか?

212 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 22:02:25 ]
>>211
まずプログラミング言語ありきってか

213 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 22:12:34 ]
外人さんのデモ見てると、プロポーショナルフォントだったりするしな・・・



214 名前:190 [2009/06/21(日) 00:06:52 ]
>>209
2006ではだめですか。ATOK2005は確か出来たはずなんですが… 残念です。


215 名前:sage [2009/06/21(日) 01:02:46 ]
自分は漢字の読み仮名の取得には
IFELanguageを使ってるが。







[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<48KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef