■過去ログ置き場に戻る■ 1- 前250 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

Win32API質問箱 Build28
251 名前:デフォルトの名無しさん :05/02/19 21:31:41
>>279
がんばれ。

252 名前:デフォルトの名無しさん :05/02/19 21:59:14
Spy++のように他のアプリケーションが送受信しているメッセージをロギングするには
どうすればいいんでしょうか?
SetWindowsHookEx を使ってもうまくいかないんだけど

253 名前:デフォルトの名無しさん :05/02/19 22:03:03
なにがどううまくいかないのか書かなければ
「お前がヘボいからだ」
としか言いようがないわけだが。

254 名前:デフォルトの名無しさん :05/02/19 22:40:23
DLLを作ろうとしています。これはAveDeskというソフトのプラグインです。

void CALLBACK DeskletSetStatic(HWND hwndDesklet, bool staticValue)
{
  typedef void (CALLBACK *DUMMY)(HWND,bool);
  DUMMY HDeskletSetStatic = (DUMMY) GetProcAddress(GetModuleHandle(0),"DeskletSetStatic");

  if(!HDeskletSetStatic)return;

  HDeskletSetStatic(hwndDesklet,staticValue);
}
というコードがあるんですけど、
これっていったん呼び出されたら、永遠にループしちゃうんじゃないでしょうか??
ここはどんな処理をしてるのかサッパリです。詳しい方教えてください。よろしくお願いします。

255 名前:デフォルトの名無しさん :05/02/19 22:55:45
なんでだよ。
まずちゃんとC言語勉強してから作れ。

256 名前:デフォルトの名無しさん :05/02/19 23:05:20
>>255
そうか?

257 名前:デフォルトの名無しさん :05/02/19 23:06:31
わかった〜〜!!
このDeskletSetStaticという関数がDLLの呼び出し側(AveDesk)
にあるんだきっと。
それで、ここでは逆にDLLから本体の関数を呼び出してるんだ。

258 名前:デフォルトの名無しさん :05/02/19 23:32:56
GetProcAddress
GetModuleHandle(0)

しらべれば簡単にわかることなのにな。

259 名前:デフォルトの名無しさん :05/02/20 00:14:39
>>252
大方フック部分をDLLにしてない or しててもそのDLLとアプリ間でデータのやりとりができていないに一票。

260 名前:デフォルトの名無しさん :05/02/20 01:11:52
>>252 >>259
同じく。フック部分をDLLにしてないにもう一票。


261 名前:デフォルトの名無しさん :05/02/20 02:53:46
>>157
1999年からタイムスリップしてきましたか?

262 名前:デフォルトの名無しさん :05/02/20 03:01:28
>>261
02/16からタイムスリップしてきましたか?

263 名前:デフォルトの名無しさん :05/02/20 13:46:56
シンボルコードって自分で指定しちゃだめかな?

例えると
リソースファイルに
"新規作成" IDM_NEW
とかさ

264 名前:デフォルトの名無しさん :05/02/20 14:47:46
質問です。
デスクトップアイコンすべてを表示/非表示するプログラムを作ろうと
思っているのですが、手がかりがいまいちつかめません。

動作としてましては、
ディスクトップのなにも無いところで右クリック->[アイコンの整列]->[ディスクトップアイコンの表示]
で出来るのと同じことを、プログラムからしたいのです。

MSDNのSystemParametersInfoを呼んでみたのですが、それらしいものが
見つかりませんでした。

検索するとディスクトップのアイコンの表示や非表示するソフトは結構あるみたいでしたが、コードに
ついては見つけることが出来ませんでした。

キーワードやサイト等、なにか手がかりを教えていただけませんでしょうか。



265 名前:デフォルトの名無しさん :05/02/20 14:57:05
>ディスクトップ
ハードディスク上ってこと?

266 名前:デフォルトの名無しさん :05/02/20 15:05:47
ツマんない突っ込みすんなよ。オレモナー。

267 名前:デフォルトの名無しさん :05/02/20 15:05:55
>>265

いえ、実際には存在しますが、デスクトップ画面には表示されないということです。
本当に消去するわけではありません。

ディスクトップ画面にはなにもアイコンは表示されない、
でも、エクスプローラでデスクトップフォルダをのぞくとちゃんと表示されるという状態です。

単純に壁紙が、ディックトップの前面に出てきて、アイコンが隠れてしまうようなイメージですかね。


ちゃんと回答できているか自身ありませんが、私がしようとしている動作は上記のようになります。

268 名前:デフォルトの名無しさん :05/02/20 15:27:58
×ディスクトップ
○デスクトップ(desktop)

269 名前:デフォルトの名無しさん :05/02/20 15:37:35
>>264
>検索するとディスクトップのアイコンの表示や非表示するソフトは結構あるみたいでしたが
そのソフトがどうやってるのかSpy++で見ればわかるかもね。
やったこと無いけど、ウィンドウを最下面に配置してPaintDesktopで壁紙描画すればそれらしくなるんじゃない?

270 名前:デフォルトの名無しさん :05/02/20 15:41:59
レジストリ変更一箇所するだけだろ?


271 名前:デフォルトの名無しさん :05/02/20 15:43:18
>>267
こんなもんでどう?検証で書いたからそのまま載せる。

HWND hWnd = NULL;
hWnd = ::FindWindow( "Progman", "Program Manager" );
hWnd = ::GetTopWindow( hWnd );
hWnd = ::GetTopWindow( hWnd );
::ShowWindow( hWnd, SW_HIDE ); // to hide
// ::ShowWindow( hWnd, SW_SHOW ); // to show

あとは、SPYで該当ウィンドウの意味を調べて自分なりにアレンジしてくらさい。


272 名前:271 :05/02/20 15:48:34
一応参考までに、「ひょっとしたら」IActiveDesktop とかから
何かごにょごにょやるのが正統な方法なのかもしれないけど、
ちょっとそっちは見つけられなかった。

273 名前:デフォルトの名無しさん :05/02/20 15:52:28
>>269
そうですね、一度ソフトを落として、メッセージを見てみます。

>>270
レジストリを操作した場合、OSの再起動が必要になるんですよね。
再起動は出来るだけ避けたいと思っています。

>>271
ありがとうございます、早速ためさせていただきます。

274 名前:デフォルトの名無しさん :05/02/20 15:54:39
>>273
いまどき再起動しなくても変更されるよ


275 名前:デフォルトの名無しさん :05/02/20 15:57:47
>>274
「いまどき」は全く関係ありません。

276 名前:デフォルトの名無しさん :05/02/20 16:06:10
とりあえず場所はここのようです
HKEY_CURRENT_USER
Software
Microsoft
Windows
CurrentVersion
Explorer
Advanced
HideIcons


277 名前:デフォルトの名無しさん :05/02/20 16:07:03
>>267
素晴らしい。
>ディスクトップ
>デスクトップ
>ディックトップ

278 名前:デフォルトの名無しさん :05/02/20 16:07:26
>>271
ありがとうございました。
いただきましたコードで動作しました。

あと、受け取りましたコードでハイドし、
[アイコンの整列]->[デスクトップアイコンの表示](正当な手順)で
Showすることができました。多分、同じしかけなのではないかと思います。

>一応参考までに、「ひょっとしたら」IActiveDesktop とかから
>何かごにょごにょやるのが正統な方法なのかもしれないけど、
>ちょっとそっちは見つけられなかった。

そうですね、頂きました、コードで表示をHIDEしても、OS側は内部でSHOWされてると
思ってるみたいです。どこかに、OSの記憶する内部状態と同期がとれるコードがあり
そうです。

基本的に、271さんに頂いたコードで、動作としては、ぜんぜんOKです。
使わせていただきます、本当にありがとうございました。

>>274
すみません、私が無知でした。
気分をがいされたかもしれませんが、私の不勉強でした
申し訳ございませんでした。そして、ありがとうございました。




279 名前:デフォルトの名無しさん :05/02/20 16:11:53
>>278
っていうかその方法だと再起動したらまた出てくるんじゃない?

280 名前:271 :05/02/20 16:24:08
>>279
あーそう言えばそうですわ。
>>276 のレジストリ変更して SHChangeNotify でも投げてやるのが
いいかもしれないです…。

281 名前:デフォルトの名無しさん :05/02/20 16:27:09
dick

1 《米古風》探偵,刑事,「でか」 
a private 〜  私立探偵.
2 《俗》間抜け,やつ.
3 《俗》ペニス.

282 名前:デフォルトの名無しさん :05/02/20 16:27:34
エクスプローラにボタンやツールバーを追加するのってどうやるんでしょうか。
上手く説明出来ませんが、Norton AntiVirusがやってるようなやつです。
IEにボタンを追加するのならレジストリいじれば出来るようでしたが、
作りたいのはファイルのリネームツールとかでして…。

283 名前:デフォルトの名無しさん :05/02/20 16:38:40
>>282
多分、シェル拡張(shell extension)

284 名前:デフォルトの名無しさん :05/02/20 17:00:30
ProcessWalkerを使ってあるプロセスがオープンしている
オブジェクトハンドルのリストを取得できるのですが、
これと同じ情報を取得するにはどのAPI(テクニック?)を
使えばいいのでしょうか?

ProcessWalker
http://www001.upp.so-net.ne.jp/yamashita/product/pw4.htm

285 名前:デフォルトの名無しさん :05/02/20 17:11:26
MSDN読んだ?

286 名前:デフォルトの名無しさん :05/02/20 17:18:00
読みました。でもそれらしき物が見つかりません。
単純なAPIは用意されておらずメモリ解析などしているんだと思いますが?

287 名前:デフォルトの名無しさん :05/02/20 17:24:03
>>286
sysinternalsに行ってみれば?

288 名前:282 :05/02/20 17:28:20
>283
ありがとう。
ググってみたらそれっぽいサイト見つけたので、のんびり調べてみます。


289 名前:デフォルトの名無しさん :05/02/20 17:31:29
>>287
失礼ですが、何か知っていて言っているんですか?
それとも何も知らないけど、とりあえず
MSDNやsysinternalsにあるかもと言っているだけなんですか?

290 名前:デフォルトの名無しさん :05/02/20 17:34:03
とりあえずdependsでも使ってみたらどうか。

291 名前:デフォルトの名無しさん :05/02/20 18:32:20
debugとreleaseってどう使い分けるのですか?

292 名前:デフォルトの名無しさん :05/02/20 18:33:12
>>289
NtOpenHoge?

293 名前:デフォルトの名無しさん :05/02/20 18:44:07
>>291
VC++スレへどうぞ。

294 名前:デフォルトの名無しさん :05/02/20 18:56:58
>>282
IDeskBand


295 名前:デフォルトの名無しさん :05/02/20 21:37:41
ありえないような場所をHeapFreeするのは危険?
例えばHeapFree(GetProcessHeap(),0,NULL);みたいにNULLポインタを渡すとか。
ただ単にエラーが返ってくるだけならいいが何か実害出たりしない?

296 名前:デフォルトの名無しさん :05/02/20 22:10:38
>>295
GetLastError() で試してみれば?

297 名前:デフォルトの名無しさん :05/02/20 22:27:16
アイコンリソースってどのサイズまでOK?
Windowsに最初からあるのは48×48があるみたいだけど
Windowsのバージョンとかで変わってきたりする?

298 名前:デフォルトの名無しさん :05/02/21 00:04:29
>>297
2000までは32x32

299 名前:デフォルトの名無しさん :05/02/21 00:38:31
>>298
ありがとう。
32でそろえます。

300 名前:デフォルトの名無しさん :05/02/21 01:14:12
WM_CHARを使って、zが押された時に処理するプログラムを作りたいんですけどどうすればいいのですか?
switch(msg) {
case WM_CHAR
switch(wParam)
case ?
?の部分が分かりません・・・・

301 名前:デフォルトの名無しさん :05/02/21 01:22:33
z

302 名前:デフォルトの名無しさん :05/02/21 01:26:13
zだとエラーが出ます。

303 名前:デフォルトの名無しさん :05/02/21 01:27:13
'z'

304 名前:デフォルトの名無しさん :05/02/21 01:28:39
それだと、反応無しです

305 名前:デフォルトの名無しさん :05/02/21 01:39:57
'z'と'Z'は違うぞ?

306 名前:デフォルトの名無しさん :05/02/21 02:41:10
switch(msg) {
case WM_CHAR:
switch(wParam) {
case 'Z':
case 'z':
case '\x1A':
あと適当に
}
}


307 名前:デフォルトの名無しさん :05/02/21 03:01:09
なぜ、ctrl-z・・・

308 名前:デフォルトの名無しさん :05/02/21 03:06:23
>>307
>>300

309 名前:デフォルトの名無しさん :05/02/21 03:24:11
いや・・・いらんだろ

310 名前:デフォルトの名無しさん :05/02/21 03:26:38
ctrl-z は orz に似てるとオモタ

311 名前:デフォルトの名無しさん :05/02/21 11:07:07
恥を偲んでお尋ねします
"DWORD_PTR"ってどのインクルードファイルで定義されてるのでしょうか・・・
DX9SDKのDirectsoundを使うとき、windows.h、mmsystem.h、mmreg.h、dsound.hを
インクルードしたのですが、ビルド時に"DWORD_PTR"型が定義されてないと
怒られます
名前の通り*DWORDなんでしょうけど自分で定義するのもなんだし

DirectX7のdirectsoundはこれだけで通ったような気もするんだけどな・・・
依存関係がわかんねぇよウワァァァン

312 名前:デフォルトの名無しさん :05/02/21 11:13:01
>>311
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog/winprog/windows_data_types.asp
Basetsd.hだそーだ

313 名前:デフォルトの名無しさん :05/02/21 12:05:07
まぁ、>>311のbasetsd.hにはDWORD_PTRは定義されてないけどね。

PlatformSDKをいれてインクルードパス(優先順位に注意)通せば良いと思うよ。

314 名前:デフォルトの名無しさん :05/02/21 12:12:28
>>311
grepやfindが出来ないエディタ使ってるのか?


315 名前:デフォルトの名無しさん :05/02/21 12:46:11
>>314
放っといて下さい

316 名前:311 :05/02/21 12:58:18
Basetsd.hには定義されてないようです
今PlatformSDKをインスコしております(PCがクソ遅くて眩暈)
なんかVC4+DX7とは勝手が違ってさっぱりだ…

317 名前:デフォルトの名無しさん :05/02/21 13:05:08
>>316
念のため書くけど、
PlatformSDKのBasetsd.hには定義されてて、
Basetsd.hはwindows.hをインクルードすればインクルードされるから、
#include <basetsd.h>とか書く必要ないからな。

318 名前:デフォルトの名無しさん :05/02/21 13:26:02
>>311
DWORD_PTR は>.311の想像とはまったく違っていて、「DWORDと何かへのポインタの両方を
情報の欠落無しに納めることの出来る整数」のこと。Win32 では普通のDWORDとほぼ同じ。
他にもLONG_PTRとか似たようなものがある。

319 名前:デフォルトの名無しさん :05/02/21 13:49:55
LPDWORD

320 名前:311 :05/02/21 13:49:59
色々とマリガトウございます
>>317
つまりまずはPlatformSDKを入れねばならんという事ですな…
>>318
盛大に勘違いしてますた('A`)

今PlatformSDKをインスコしてサーチパスを登録してビルドしたらエラー数が100を超えて中断しますた
もうだめぽ

PlatformSDKについてもうちょっと調べてみます

321 名前:311 :05/02/21 14:29:57
挫折の悪寒
なんでこんなに複雑になってんだyo…

322 名前:デフォルトの名無しさん :05/02/21 15:39:09
<dsound.h>の前に<dplay.h>をインクルードしたらコンパイル通ったりしない?

323 名前:デフォルトの名無しさん :05/02/21 15:44:58
あ、>>322のは、あくまで
#define DWORD_PTR DWORD
が定義されているヘッダファイルについて書いただけね。
なんか、話が違ってきてるみたい。

324 名前:311 :05/02/21 16:00:29

 ヾ(゚∀。)ノシ
  
時代の流れについていけなくなりますた
そもそもPlatformSDKってなんだよ

>>323
駄目ですた

325 名前:デフォルトの名無しさん :05/02/21 16:33:20
LoadStringで文字列が切れた(バッファが足りない)ことを検出する方法はないのでしょうか?

326 名前:デフォルトの名無しさん :05/02/21 17:06:06
>>325
MFCやWTLのCString::LoadString()では
戻り値とバッファのサイズであれこれやってるね

327 名前:デフォルトの名無しさん :05/02/21 17:07:46
>>325
MSDN の記述。
>関数が成功すると、バッファにコピーされたバイト数 (ANSI 版) または文字数 (Unicode 版) が返ります
>(終端の NULL は含まない) 。
(…NULL とか間抜けな事が書いてあるが、そこは目を瞑って)
切り捨てられていなければ、
  戻り値 < nBufferMax
のはず。

328 名前:デフォルトの名無しさん :05/02/21 17:08:55
>>325
バッファに1文字以上(1バイトじゃないよ)の余地があること。
マルチバイトならGetCPInfoで1文字の最大バイト数を調べる。
S-JISなら、\0の後に2バイト以上の余地があることを確認する。
でいいと思う。

たしかLoadStringは、最後の全角文字が分割されそうなときは先行バイトもロードしない。
だから\0の後方に1バイトの余地があるからといって、全体がロードできた証拠にはならない。

329 名前:デフォルトの名無しさん :05/02/21 17:31:17
まぁ、最初から大き目のバッファ用意して、
そもそも切捨てが起こらないようにした方がいいよ。

330 名前:デフォルトの名無しさん :05/02/21 18:16:54
>>324
ダメってのは、dplay.hには宣言されてないのか?
上の質問では、その変数が定義されてないって質問しかしてないから、変化があったのに知らせないと誰も助けてくれないよ

まぁ、DirectSoundに関する質問ならスレ違いだけどね
(DX質問スレの方)

331 名前:デフォルトの名無しさん :05/02/21 18:34:28
>>326-329
328が完璧みたいですね、ありがとうございました。


332 名前:デフォルトの名無しさん :05/02/21 18:57:51
ツールバーで、始めからモッコリしているのではなく、
マウスポインタが上に来た時にモッコリさせるやり方、
または検索する為のキーワードを教えてください。

333 名前:デフォルトの名無しさん :05/02/21 19:06:45
TBSTYLE_FLAT

334 名前:332 :05/02/21 19:34:21
>>333
色が白に変わってしまいますが(透けて親ウィンドウが見えている?)、
オンザモッコリは出来ている模様です。
ありがとうございました。
色が変わってしまう部分も、対処法が分かりましたらご報告します。

335 名前:デフォルトの名無しさん :05/02/21 20:33:30
まあ漏れなんか彼女と会う前からモッコリしてるけどな。

336 名前:332 :05/02/21 21:18:04
猫に乗っていましたが、以下のように後から設定するとうまくいきました。
LONG lStyle;
lStyle = GetWindowLong(hToolWnd, GWL_STYLE);
lStyle |= TBSTYLE_FLAT;
SetWindowLong(hToolWnd, GWL_STYLE, lStyle);

>>335
私も若かりし時(10代)はそういう事もありました。

337 名前:デフォルトの名無しさん :05/02/21 21:24:00
>>306
そのコード打ったのですが、なにも起こらないです・・・・・

338 名前:デフォルトの名無しさん :05/02/21 22:07:02
>>337
そりゃ、自分で何もしなければ何も起きない

339 名前:デフォルトの名無しさん :05/02/21 23:34:34
TB_MOKKORI

340 名前:デフォルトの名無しさん :05/02/22 01:02:56
DWebBrowserEvents2::OnQuitはどういうときに呼び出されるのでしょうか?
ホストウインドウ(AtlAxWin)をDestroyWindowしても呼び出されません。

341 名前:デフォルトの名無しさん :05/02/22 01:13:55
>>340
OutProcでIE(など)を開き、それがユーザ操作で終了したとき。

開くとこまではこんなソース。

CLSIDFromProgID(L"InternetExplorer.Application", &clsid);
CoCreateInstance(clsid, NULL, CLSCTX_ALL,IID_IUnknown, (LPVOID *)&pUnknown);

342 名前:デフォルトの名無しさん :05/02/22 01:34:15
340
分かりました、ありがとうございます。
自分のアプリケーションへの埋め込みブラウザの場合、IEと同様な動作を期待するなら適切なタイミングで自分で発行してやるってことですね?

343 名前:デフォルトの名無しさん :05/02/22 04:09:38
デバイスコンテキストに描画する座標を指定できるapiはありますか

344 名前:デフォルトの名無しさん :05/02/22 04:23:15
何言ってんだかわからない。MSDNでも開け。ぐぐってさえもいないだろう。

345 名前:デフォルトの名無しさん :05/02/22 04:35:27
>>344
はぁ?文盲は黙ってろデブ

346 名前:デフォルトの名無しさん :05/02/22 05:11:10
香ばしいな

347 名前:デフォルトの名無しさん :05/02/22 05:33:52
デブが何か言ってますよw

348 名前:デフォルトの名無しさん :05/02/22 05:44:40
香ばしいな

349 名前:デフォルトの名無しさん :05/02/22 05:46:41
アロエリーナ

350 名前:デフォルトの名無しさん :05/02/22 06:03:02
自前アプリに埋め込んだウェブブラウザの画像読み込みを抑止する方法がわかりません
ざっと検索した範囲だと、ホストから実装して、Invokeをオーバーライドするみたいな事が書いてあるようなのですが、

CAxWindow::SetExternalDispatchで外部ディスパッチを指定すれば
そこでダウンロードコントロールをいじれるんじゃないかなという気がして試してみたいのですが、、
ここで必要なディスパッチインターフェイスをどうやって用意するべきか分かりません。

何か良いサンプルはありませんか?

351 名前:デフォルトの名無しさん :05/02/22 06:23:38
MFCスレ行くか?

352 名前:デフォルトの名無しさん :05/02/22 10:06:51
>>344
文盲

353 名前:デフォルトの名無しさん :05/02/22 10:56:09
>>352
粘着

354 名前:デフォルトの名無しさん :05/02/22 12:11:03
>>353
ぬるぽ

355 名前:デフォルトの名無しさん :05/02/22 12:15:32
>>354
ガッ

356 名前:デフォルトの名無しさん :05/02/22 13:02:11
>>351
あ、すいませんATLスレでしたorz

357 名前:デフォルトの名無しさん :05/02/22 15:09:09
円を描くには、Ellipseですが、これだと外枠しか描かれません。
円の内側を描くようにするためには、どのAPIをつかえばいいのでしょうか?

358 名前:デフォルトの名無しさん :05/02/22 15:11:24
>>357
Ellipse

Ellipse
1 個の楕円を描画します。
指定された外接長方形の中心が楕円の中心になります。
現在のペンを使って楕円を描画し、現在のブラシを使って塗りつぶします。


359 名前:デフォルトの名無しさん :05/02/22 17:22:25
MSDN読まない奴大杉

360 名前:デフォルトの名無しさん :05/02/22 18:38:06
WS_POPUPとして、メニューもどきなウィンドウを作って(自作)表示させたのですが、
CreateMenuで表示されるWindowsデフォルトのメニューとは違い、以下の問題が浮上しました。

・メニューを消す際に、一瞬、親のウィンドウが非アクティブに切り替わる。(その後、アクティブに戻る)
・他のメニューに切り替える時、メニューをSW_HIDEして消しますが、CreateMenuで作成されたMenuをHideする時のように綺麗に消えてくれない。

解決法がわかるかたいらっしゃいますか?

361 名前:デフォルトの名無しさん :05/02/22 18:43:36
>>360
CreatePopupMenu()
TrackPopupMenu()

辺りを使用し、メニューもどきではなく、
ちゃんとしたメニューを生成・表示する。

362 名前:360 :05/02/22 19:03:20
>>361
いえ、それはわかっているのですが、
あくまで自作のメニューを表示させたいので、
CreatePopupMenu内部でどのようにコードが組まれているのかが知りたいですね。

363 名前:デフォルトの名無しさん :05/02/22 19:17:45
先頭はあれだ。消す前にSetFocusでおやにフォーカスを戻せ。
後者はあれだ。きれいに消える、が何を意味しているのかによる。
ひょっとするとAnimateWindowで解決するかもしれない。

364 名前:デフォルトの名無しさん :05/02/22 19:30:11
>>362
何故、「自作メニューもどき」にこだわるのか?

365 名前:デフォルトの名無しさん :05/02/22 19:56:17
wineのソース見てみるとか

366 名前:デフォルトの名無しさん :05/02/22 20:27:30
>>360
最近のメニューはカスタムドローでDirectXのSurfaceのGDIを渡してくる
らしきところからおそらくLayered Windowになってると思う。

カスタムドローした方が楽だと思うけど。
何ならメニューアイテム1個で中は自由に描いてもいいし。

367 名前:デフォルトの名無しさん :05/02/22 22:16:06

STARTUPINFO si;
を宣言すると

エラーC2275
'identifier' : typedef 識別子に、クラス メンバ アクセス演算子 (->) を使用しました。

発生してしまうんですけど、どうしたら良いのでしょうか?

368 名前:デフォルトの名無しさん :05/02/22 22:31:48
>>367
エラー発生行はその行で間違いないか?
あと、もうちょっと前後のコード晒せ。

369 名前:デフォルトの名無しさん :05/02/22 22:45:09
>>368
間違いないです

//コメントアウトするとちゃんと通るので

エラーは こうでした
C:\My Documents\ABC\a.c(87) : error C2275: 'STARTUPINFO' : typedef 識別子に、クラス メンバ アクセス演算子 (->) を使用しました。
c:\program files\microsoft visual studio\vc98\include\winbase.h(3818) : 'STARTUPINFO' の宣言を確認してください。
C:\My Documents\ABC\a.c(87) : error C2146: 構文エラー : ';' が、識別子 'si' の前に必要です。
C:\My Documents\ABC\a.c(87) : error C2065: 'si' : 定義されていない識別子です。


370 名前:デフォルトの名無しさん :05/02/22 22:46:52
>>369
その上の行あたりが間違ってると思うよ。

371 名前:デフォルトの名無しさん :05/02/22 22:50:48
>>370みたいな可能性があるから、>>368が前後のコード晒せって言ってるのに。

372 名前:デフォルトの名無しさん :05/02/22 22:53:08
分かりました
こうなんですけど

int WINAPI WinMain(HINSTANCE hCurInst, HINSTANCE hPrevInst,
LPSTR lpsCmdLine, int nCmdShow)
{
MSG msg;
hINSTANCE = hCurInst;
  STARTUPINFO si; //STARTUPINFO si;  ← こうすると通りますけど

if (!InitApp(hCurInst))
return FALSE;
if (!InitInstance(hCurInst, nCmdShow))
return FALSE;

while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}

373 名前:デフォルトの名無しさん :05/02/22 23:03:05
ネットワークプログラミング板で質問したのですが、
スレ違いだったと指摘を受けたので、こちらで質問させていただきます。
ttp://www.geocities.jp/wininet_dll_jp/
このHPをサンプルに使って、WinInetでPOST処理を作ってみたのですが、
POSTのボディ部をPHPの受信側が受け取りません。
パケットキャプチャしてみた結果では、ボディ部はちゃんと
送信していました。
同様にPHPで作った送信PGでPOSTしてみて、
結果ではうまく値がわたったので、受信側はうまく動いていると思います。
どうやれば、受信部のPHPで受け取ってくれるようになるのでしょうか?
どうぞよろしくお願い致します。

374 名前:デフォルトの名無しさん :05/02/22 23:05:00
文字セットとかはちゃんとあってるのか?
つうか、ソースをちょっとは晒せ。
超能力者じゃねぇんだから。

375 名前:デフォルトの名無しさん :05/02/22 23:09:22
>>372

もしかして、拡張子.cにしてないか?
宣言と文の混在はc++の仕様だぞ

376 名前:デフォルトの名無しさん :05/02/22 23:15:51
今いろいろ調べていたんですが
どうしても分かりませんでした

>>375

言われたとうり a.c ファイルで *.cだったので
a.cppにしたら通るようになりました

どうも、ありがとうございます m(ヽ)m

377 名前:デフォルトの名無しさん :05/02/22 23:16:41
( ゚д゚)ポカーン

378 名前:デフォルトの名無しさん :05/02/22 23:17:59
>  STARTUPINFO si; //STARTUPINFO si;  ← こうすると通りますけど
なにか違うか?


379 名前:デフォルトの名無しさん :05/02/22 23:22:32
>>378
STARTUPINFO si;
をコメントアウトしたらって意味じゃね?

380 名前:デフォルトの名無しさん :05/02/22 23:23:16
>>375
C99(ぼそ

381 名前:デフォルトの名無しさん :05/02/22 23:24:37
>>379
naruhodo

382 名前:デフォルトの名無しさん :05/02/23 02:33:49
beginpaintでエディットコントロールのハンドルからDCを取得して
textoutで描画してもキー入力を受け付けません。受け付けるようにするにはどうしたらいいですか?

383 名前:382 :05/02/23 02:52:24
できました。すいません

384 名前:デフォルトの名無しさん :05/02/23 03:01:42
エディットコントロールを自作したいのですがどうすればいいですか?

385 名前:384 :05/02/23 03:26:24
やっぱりいいです

386 名前:デフォルトの名無しさん :05/02/23 03:37:06
フォトショッをプ自作したいのですがどうすればいいですか?

387 名前:386 :05/02/23 04:00:27
やっぱりいいです

388 名前:386 :05/02/23 04:33:33
できました。すいません

389 名前:デフォルトの名無しさん :05/02/23 05:50:37
あんまりオモロナイ

390 名前:デフォルトの名無しさん :05/02/23 09:11:35
ウィンドウAの上にウィンドウBとCが並んで表示されています。
ウィンドウCにはスクロールバーはありません。
ウィンドウBをスクロールさせるとウィンドウCもスクロールするようにしたいのですがどうすればいいですか?

391 名前:デフォルトの名無しさん :05/02/23 09:34:45
>>374
ソースは基本的にリンク先のコードそのままで、
プロキシ対応の処理などを追加しただけです。
貼っても長いし、インデント崩れてみにくいので…
送信先がPHP以外のものなら、POSTできてるので、
文字セットはあっているとおもいます。


392 名前:デフォルトの名無しさん :05/02/23 10:14:01
>>390
ウィンドウBで WM_XSCROLL が呼ばれたらそこで
ウィンドウBとウィンドウCに再描画命令を送ればいいんでないかい?
ウィンドウCの描画でウィンドウBのスクロール情報を
使ってはならない規則などないからな。

393 名前:デフォルトの名無しさん :05/02/23 10:26:13
再描画したところで全く意味はありません。

↓次の解決策をどうぞ

394 名前:デフォルトの名無しさん :05/02/23 11:28:14
393==386

395 名前:392 :05/02/23 11:38:35
というか 393==390 じゃないのか?あまりにも失礼じゃないか?
ウィンドウB,Cが自分で定義したウィンドウなら
WM_PAINT でスクロール情報をもとに描画すればスクロールは実現するだろ?
ウィンドウズ定義のコントロールだったら、そのくらい質問でちゃんと書いとけよ。

教える気が萎えた。

396 名前:デフォルトの名無しさん :05/02/23 12:36:59
>>391
だから、ソース晒せ。

397 名前:デフォルトの名無しさん :05/02/23 13:01:08
自己解決しました。

398 名前:デフォルトの名無しさん :05/02/23 15:36:52
TrueTypeフォントを斜体にしたときのオーバーハング値って取れますか?
GetTextMetrics/GetOutlineTextMetricsじゃだめっぽいんです。


399 名前:デフォルトの名無しさん :05/02/23 16:53:43
リストビューの項目を一時的に隠すことが可能でしょうか?

400 名前:デフォルトの名無しさん :05/02/23 17:20:41
>>398
GetTextExtentPoint32
オーバーハングって分からんが
斜体にした時としない時の差?

401 名前:398 :05/02/23 18:25:49
>>400
>斜体にした時としない時の差?
です。
GetTextExtentPoint32も試してみますー


402 名前:デフォルトの名無しさん :05/02/23 23:15:43
Win2000orWinXPですがntdll.dllがマップされる仮想アドレス空間でのアドレスは
常に同じですか?kernel32.dllは同じだそうですが。
なぜかというとクラッシュが起きてデバッガが起動し、呼び出し履歴を見ると
ntdllの中でクラッシュしてるのですがそこが何なのか知りたいのです。
でもそのプロセス内で何処にロードされたかは今となっては後の祭りで分らないんです。
よろしくお願いします。


403 名前:デフォルトの名無しさん :05/02/24 00:10:50
>>402
悪いのはntdllじゃなくて、もまいのプログラム。
まちがいない。

404 名前:デフォルトの名無しさん :05/02/24 00:55:52
自作クラスをCreateWindowで複数作ったのですが、staticの部分が共通化されてしまいます。
それぞれのクラスごとにデータを保持していて欲しいのですが、こういう場合は普通どうしていますか?

405 名前:デフォルトの名無しさん :05/02/24 00:56:43
>>404
それぞれのウィンドウごとにデータを保持していて欲しい、です。

406 名前:デフォルトの名無しさん :05/02/24 01:00:04
「自作クラス」が何のことやらよくわからんが、SetPropやSetWindowLongじゃだめなんか?
C++のクラスって事ならstaticじゃ無くすればいいだけだな。

407 名前:デフォルトの名無しさん :05/02/24 01:00:24
GetWindowLongPtr
SetProp

408 名前:デフォルトの名無しさん :05/02/24 01:24:20
>>406
WNDCLASSEXをRegisterClassExで登録したもので、そのうちの、プロシージャ部についての話です。
例えば、HBITMAPの形で画像を保持しておいても、
staticだと別ウィンドウ向けに登録したものに変更されてしまい、全てのウィンドウが同じ画像になってしまいます。

今から、その2つについて調べてみます。

409 名前:デフォルトの名無しさん :05/02/24 03:00:52
そもそも、なんでstaticにしたのだ?


410 名前:デフォルトの名無しさん :05/02/24 05:04:18
>>404=408
GetWindowLong の GWL_USERDATA か
もしくは拡張ウィンドウメモリを使え。
どっちも GetWindowLong に載ってる。

というかお前の404の日本語は下手過ぎ。読む側のことも考えろ。

411 名前:410 :05/02/24 05:09:12
(´-`).。oO(っていうか407が微妙に答えてるじゃん。でも GetWindowLongPtr ってなんだ?)

412 名前:デフォルトの名無しさん :05/02/24 05:24:50
>>410
ぐぐれ

413 名前:410 :05/02/24 05:30:28
(´-`).。oO(インクルードディレクトリ探しても見つからなかったから誤植かとオモタ、スマソ)

414 名前:デフォルトの名無しさん :05/02/24 11:32:31
thisポインタをどっかに保存して
共通部分になってるウィンドウプロシジャーのメソッドから
それぞれのクラスのメソッドをthisポインタを介して参照する

保存場所については散々でてるしいいな

415 名前:デフォルトの名無しさん :05/02/24 14:25:01
>>414
もしかしてこんなプログラム書いてるひと?
http://pc5.2ch.net/test/read.cgi/tech/1108815602/124


416 名前:デフォルトの名無しさん :05/02/24 18:37:02
SetTimer関数を使って定期的に画面を更新したいんですが、画面が更新されません。

ウインドウ作成時に
SetTimer(hWnd,1,10,NULL);
でタイマを作って

WM_TIMER:
SendMessage(hWnd,WM_PAINT,wParam,lParam);

で10ミリ秒ごとにWM_PAINTを発行し再描画されるようにしているんですが・・・何か間違ってますか?

417 名前:デフォルトの名無しさん :05/02/24 18:40:08
>>416
WM_PAINTはシステムが発行するものです。
ユーザプログラムが発行してはいけません。
WM_PAINTを発生させたければInvalidateRect等を使いなさい。

418 名前:デフォルトの名無しさん :05/02/24 18:40:12
はい。

419 名前:デフォルトの名無しさん :05/02/24 19:01:48
>417
WM_TIMER:
//描画

とすれば10ミリ秒ごとに描画されますか?

420 名前:デフォルトの名無しさん :05/02/24 19:12:48
やってみろヴォケ

421 名前:デフォルトの名無しさん :05/02/24 19:22:09
>>420
やるの面倒くさいから聞いてるんだヴォケ

422 名前:デフォルトの名無しさん :05/02/24 19:24:52
そういう書かれ方されると10人20人もそういう人がいるみたいな印象受けますけど、そうでもないですし。
正直なとこ、自分としては割と傷つくんですが。

423 名前:デフォルトの名無しさん :05/02/24 19:25:48
>>421
419の方法で大丈夫です。やってみましょう。

424 名前:デフォルトの名無しさん :05/02/24 19:25:49
シリアル通信でWriteFileのときに
フレーミングエラーがたまに起きて、これがでると
その後のWriteFileやReadFileが失敗してしまうのですが
なんか対策ってありますか?
どーやったら復帰できるのでしょうか?

425 名前:デフォルトの名無しさん :05/02/24 19:43:15
>>416
この場合はGetDCの方で描画する方がいいかも。
後、1タイマーの精度が悪いのでせいぜい50ミリ秒ぐらいかな。

426 名前:デフォルトの名無しさん :05/02/24 19:46:02
>>403
あなたはゴミですねぇ。ここに居る必要ないんじゃないですか?
もう自分で調べましたけどね。ちなみに俺のプログラムがよんでるんじゃないんですが。。
(バカのてめぇ勝手な仮定に突っ込んでも無駄か。。)


427 名前:デフォルトの名無しさん :05/02/24 19:49:45
>>426
すれ違い
http://pc5.2ch.net/test/read.cgi/tech/1108989422/

428 名前:デフォルトの名無しさん :05/02/24 19:50:04
>>425
タイマーの精度50ミリか?

429 名前:デフォルトの名無しさん :05/02/24 20:04:16
SetTimer自体の精度は50msよりマシだった気がするけど、メッセージで来るから全く信用できない気がする。
というか10msで更新だとかなりCPUパワー食われるような‥‥

何をやりたいのか書いた方がいいと思われ。

430 名前:デフォルトの名無しさん :05/02/24 20:11:52
>>427
だから説明してみろよ。
何処にntdllに問題があると書いてある?
何処に俺のプログラムからクラッシュしていると書いてある?
日本語が読めるか?質問はdllのロードされる位置についてだ。
なんでこんな見当違いで無駄なレスをつける奴を擁護するのか言ってみろ。


431 名前:デフォルトの名無しさん :05/02/24 20:16:21
>>402
kernel32だったか忘れたけどWin2KでSP当てたらアドレスが変わってた事があった。
過信は禁物。

432 名前:デフォルトの名無しさん :05/02/24 20:16:30
>>430
すれ違い
http://pc5.2ch.net/test/read.cgi/tech/1108989422/


433 名前:デフォルトの名無しさん :05/02/24 20:17:30
>>432
バカダネェ。しかし。死ねよ


434 名前:デフォルトの名無しさん :05/02/24 20:19:03
>>432
さっさと答えろ。なんか考えでもあるのか?
すれ違いだの書いてりゃ2チャンらしくていいとでも思ってるのか?


435 名前:419 :05/02/24 20:29:14
>417さんのやり方でやってみました。
ヴォケとか書いてるのは私じゃないので悪しからず

436 名前:デフォルトの名無しさん :05/02/24 20:29:15
とにかくお前>>432みたいなのはリアルでもネットでも消えろ。
なんの価値もないレスがつかなければまだ知識のある人のレスが望めたんだよ。
答えを持ってないなら書かなきゃいいじゃねぇか。ばっかじゃねぇの?


あと関係ない皆さん、スレ汚しちゃってすみませんね。
もう消えるよ

437 名前:デフォルトの名無しさん :05/02/24 20:31:45
>>402
マジレスするとDUMPBINか何かでDLLのエクスポートテーブル見れば
どんな場所かわかるよ。

ちなみにシステムdllのロードアドレスは固定。
つーかPEヘッダ手繰ってけばわかるけど。
アドレスとかの仕組みはAdvancedWindowsという本に詳しく載ってる。

438 名前:デフォルトの名無しさん :05/02/24 20:34:44
>>437
ありがとうございます。アドレスについては今日調べて解決しました。


439 名前:デフォルトの名無しさん :05/02/24 20:35:50
Advanced Windows
http://www.amazon.co.jp/exec/obidos/ASIN/4756138055/250-8382872-5552210

440 名前:デフォルトの名無しさん :05/02/24 20:39:33
高いけど物凄い良書なので買ったほうがいいね>Advanced
版を重ねてるから古いのをつかまされない様注意

441 名前:デフォルトの名無しさん :05/02/24 20:51:38
>>428>>429
宍戸さんの所に載ってるけど、自分のマシンも同じ感じ。
http://www.sm.rim.or.jp/~shishido/timeri.html

タイマーを10ミリ秒ぐらいの間を取って5つ生成して、
それぞれ50ミリ秒感覚で来る事で、
結果的に10ミリ秒感覚になるとか出来ないかな。

442 名前:デフォルトの名無しさん :05/02/24 20:53:03
このスレの存在意義を失わせるような本を紹介するなよ・・・。

443 名前:デフォルトの名無しさん :05/02/24 21:54:43
ttp://wisdom.sakura.ne.jp/system/winapi/win32/win47.html
>タイマーには 分解能 という限界周期が定められており
>この分解能以上の周期でメッセージを発行することはできないのです
>この周期は 9x と NT で異なり、 9x の場合は55ミリ秒、NT は10ミリ秒です
>つまり、9x は1秒間に最大で18回、 NT は100回までしか WM_TIMER を発生させられないのです

444 名前:デフォルトの名無しさん :05/02/24 23:18:49
すごい自作自演なスレですね。

445 名前:デフォルトの名無しさん :05/02/25 02:17:03
PCVOID という型が用意されていないことに ヽ(`Д´)ノ ウワァァァァン となったことはありませんか?

446 名前:デフォルトの名無しさん :05/02/25 02:21:26
ありません

447 名前:445 :05/02/25 02:58:20
いえね、LPTSTR 等の先頭の L は過去の遺物だって話を聞いたものですから、
私は文字列ポインタ型に PTSTR と PCTSTR を使っていたわけですよ。
で、最近、汎用ポインタに PVOID を使おうとしたところ、PCVOID が
用意されていないということに気がついた次第でございまして。
まあ本質的な問題ではないのですが、イケてるWin32プログラマの皆様は一体
どの組み合わせを使っていらっしゃるのかなーなんて気になっちゃいまして。
 (1) LPVOID と LPCVOID
 (2) PVOID と CONST VOID *
 (3) void * と const void *
ちなみに MSDN の CopyMemory() の項目では (2) が使われているんですよね…。

448 名前:デフォルトの名無しさん :05/02/25 10:14:35
エディットコントロールのソースみたいのですが見ることはできますか?

449 名前:デフォルトの名無しさん :05/02/25 12:57:24
>>448
お好みでどうぞ。
http://www.bulldog.co.jp/ ブルドックソース株式会社 東京都
http://www.kagome.co.jp/ カゴメ株式会社 愛知県
http://www.otafuku.co.jp/ オタフクソース株式会社 広島県
http://www.ikari-s.co.jp/ イカリソース株式会社 大阪府
http://www.kikkoman.co.jp/ キッコーマン株式会社 千葉県
http://www.oliversauce.com/オリバーソース株式会社 兵庫県
http://www.sky-net.or.jp/toshi/ カープソース 広島県
http://www.maruki-su.com/ 株式会社 川上酢店 愛知県
http://www.kozima.co.jp/ 小島食品製造株式会社 愛知県
http://www.komi.co.jp/ コーミ株式会社 愛知県
http://www.sankyohikari.co.jp/ サンキョーヒカリ 愛知県
http://www.junmaru.co.jp/ 株式会社 純正食品マルシマ 広島県
http://www.papaya-sauce.co.jp/ パパヤソース本舗 大洋産業株式会社 京都府
http://www.takahashisauce.com/ 高橋ソース株式会社 埼玉県
http://www.choko.co.jp/ チョーコー醤油株式会社 長崎県
http://www.timelyhit.ne.jp/ajiyoko/shop/sauce/sauce1.htm 阪神ソース株式会社 兵庫県
http://www.kyoto-thinking.co.jp/hirota/京風味ソース本舗 蛇ノ目食品廣田徳七商店 京都
http://www.optic.or.jp/com/fujiisauce/fujiisauce.html 有限会社 藤井ソース工場 岡山県
http://www2.neweb.ne.jp/wd/hikari/ ヒカリ食品 徳島県
http://www.hat.hi-ho.ne.jp/aokia/ 下北沢ビレッジソース 丸寿食品工業株式会社 東京都
http://www.yamayashokuhin.co.jp/ 山屋食品株式会社 東京都
http://www4.osk.3web.ne.jp/~brother1/ブラザーソース森彌食品工業株式会社
http://www.asahi.co.jp/you/t20011026.html神戸地ソース物語
【関連団体】
http://www.maff.go.jp/koueki/sougou/35/35.htm(社)日本ソース工業会
http://www.japan-tomato.or.jp/社団法人 全国トマト工業会
http://www.soysauce.or.jp/ 日本醤油協会

450 名前:デフォルトの名無しさん :05/02/25 13:34:26
空気読めてない馬鹿がいるな

451 名前:デフォルトの名無しさん :05/02/25 14:13:39
>>447
俺だったら自分でtypedef const VOID *PCVOID;と書くか、
PVOIDとconst VOID *あるいはvoid *とconst void *の組み合わせにする。

452 名前:デフォルトの名無しさん :05/02/25 15:37:44
>>447
オレは極力標準の型を使う。
と言うわけで3。

453 名前:デフォルトの名無しさん :05/02/25 16:36:56
>>447

おいらは>>452さんとは真逆で型は極力MS定義を使うようにしてる。
なので(1)

自前定義よりは他の人が見たとき混乱しにくいかなとか
将来何かしらの拡張があった場合とかMSヘッダ側でうまい事修正・対応してくれるかな
とか期待して。

上の理由は逆にすると、実際の型を知る場合に複雑なMSヘッダから定義を探さなければならないとか
MSヘッダでまずいこと修正・対応される場合もあるとかいろんな問題も含んでるので
どれが良いって事もないと思う。
ケースバイケースって感じで

454 名前:デフォルトの名無しさん :05/02/25 16:43:43
GetWindowText,SetWindowTextで扱える文字列って通常何文字までですか?
エディットコントロールは32KBみたいですけど、普通のウィンドウでも最大そこまでOK?

455 名前:デフォルトの名無しさん :05/02/25 16:46:52
>>454
勝手な想像では、GetWindowTextLength() で扱える数値分ではないだろうかと。

456 名前:デフォルトの名無しさん :05/02/25 17:02:00
>>454
エディットの32KBは9xの制限でNTは制限ない。(メモリ上の制限はあるが)
コントロールによりけりだと思われ。

457 名前:デフォルトの名無しさん :05/02/25 18:25:01
>>456
はぁ?NTでも32K越えたら編集できねぇよボケ

458 名前:デフォルトの名無しさん :05/02/25 18:34:52
???わけワカメ

459 名前:デフォルトの名無しさん :05/02/25 18:39:19
>>457
とりあえず、732kBのテキストファイルをメモ帳で普通に開けたことを
報告しておく。

460 名前:デフォルトの名無しさん :05/02/25 18:46:37
おまいらそういう時は取りあえずMSDNみようよ

EM_LIMITTEXTの解説から抜粋

Rich edit controls: If this parameter is zero, the text length is set to 64,000 characters.
Edit controls on Windows NT/2000/XP: If this parameter is zero, the text length is set to 0x7FFFFFFE characters for single-line edit controls or ?1 for multiline edit controls.
Edit controls on Windows 95/98/Me: If this parameter is zero, the text length is set to 0x7FFE characters for single-line edit controls or 0xFFFF for multiline edit controls.

まあ、この数値がMAXと書いてあるわけでもなく
この数値がまで保障されると書いてあるわけでもないのでソースにならんと言えばその通りだけど
この数値が制限だとおもっていいんじゃない?

461 名前:デフォルトの名無しさん :05/02/25 18:54:53
だから何?

462 名前:447 :05/02/25 19:56:39
>>451
なるほど。データ型の意味が明白なら、自前で定義するというのもアリですよね…。

>>452
そういう考え方もありますね。私も最初はそうだったのですが、文字配列に
TCHAR を使うようになってからすっかり Windows のデータ型に染まってしまいまして。

>>453
やはり、どれを採用するにしてもメリットとデメリットがあるでしょうし、
コーディングスタイルも人それぞれということになりそうですね。

たいへん参考になりました。レスを下さった皆さん、どうもありがとうございました。

463 名前:デフォルトの名無しさん :05/02/26 00:51:57
あんの〜ハンガリー記法の中の
PSTRとPTSTRとは
どう違うんですか?
Tが付くのと付かないのの差がよくわからないんですが・

464 名前:69式フリーPG ◆hND3Lufios :05/02/26 00:55:50
LPTSTR/PTSTR == TCHAR *
LPSTR/PSTR == char *

かな。

465 名前:デフォルトの名無しさん :05/02/26 01:30:57
そろそろソースもUNICODEで書きたいな・・・

466 名前:デフォルトの名無しさん :05/02/26 01:59:48
>>465
メモ帳で書くといいよ

467 名前:デフォルトの名無しさん :05/02/26 03:37:29
コンパイル出来たっけ?

468 名前:デフォルトの名無しさん :05/02/26 04:39:02
fopenで得たFILE*型のハンドルから、
CreateFileで使うハンドルを得られた気がするんですが、
なんて名前のAPIかどなたかご存じないでしょうか?

469 名前:デフォルトの名無しさん :05/02/26 06:50:21
>>468
そういうAPI/ライブラリ関数は無い。
FILE *をごにょごにょすれば?

470 名前:デフォルトの名無しさん :05/02/26 08:03:22
_get_osfhandle(_fileno(fp))
これじゃないか?

471 名前:デフォルトの名無しさん :05/02/26 12:50:19
Unicode版は重くなるだけ。
MBCSを基本にすえておいて、必要な場面だけバッファをUnicodeに変換して
Unicode版の関数を使うのがベターだと思うよ。

472 名前:デフォルトの名無しさん :05/02/26 12:54:05
抽象的な質問で大変申し訳ないんだが、画面上に関数のグラフを描画する際に
WM_CREATEがきた時に関数の値を計算して、staticな関数に保存するのと
WM_PAINTが来るたびに計算するのとどっちがいいと思う?

473 名前:デフォルトの名無しさん :05/02/26 12:54:25
こんにちは

LPCTSTRの文字列のある文字が、1バイト文字なのか2バイト文字(日本語など)なのかを調べるAPIはあると思いますが、
教えていただけますか?

474 名前:デフォルトの名無しさん :05/02/26 12:54:36
>>472
staticな関数じゃない、staticな配列だ…
ゴメンね

475 名前:デフォルトの名無しさん :05/02/26 12:55:32
>>473
こんにちは

476 名前:デフォルトの名無しさん :05/02/26 13:00:37
>>473
やぁ、こんにちは

477 名前:デフォルトの名無しさん :05/02/26 13:04:55
>>471
NT系のOSでもそうなん?


478 名前:デフォルトの名無しさん :05/02/26 13:11:52
>>473
IsDBCSLeadByteExあたりだろーか

479 名前:デフォルトの名無しさん :05/02/26 13:17:49
実際に見たわけではないけど、
よく聞く話としては英語版のWindowsXPは日本語版よりかなり軽いらしい。
ソースコードは同じでも、
ビルドされた生成物が文字列の変換や比較で使う関数の実装が違うから。
日本語環境はかなりCPUを損していると思う。

480 名前:デフォルトの名無しさん :05/02/26 13:27:20
>>472
計算する物にもよるけど、計算結果を他に使わないなら、毎回WM_PAINTで計算&描画するのでいいと思う。
昔の定石だとWM_CREATEが来たときに計算して裏のメモリデバイスコンテキストに描画。
WM_PAINTが来たときには、BeginPaint()で再描画必要な領域を取得して、
裏からそこだけコピー・・・としてたけど、最近の高性能なパソコンなら、
そこまでする必要もないかと。


481 名前:デフォルトの名無しさん :05/02/26 13:27:23
ソースをすべてUnicode対応にしてしまうと、
単にバッファ全体を扱いたいにもかかわらず、関数が厳密に文字として扱おうとして
過保護な作りになってしまうことが多々ある。
最適化で劣っているはずのLinuxが速度面で優位なのは
Unicode周りの処理が関係しているからかもしれない。

482 名前:デフォルトの名無しさん :05/02/26 13:39:34
それって、日本語版XPは、英語版XPとは違うビルドってこと?

483 名前:デフォルトの名無しさん :05/02/26 13:40:03
>>480
ありがとうございまし

484 名前:デフォルトの名無しさん :05/02/26 13:42:29
んなわきゃない。それだとLinuxでJavaを扱うと劇重ってことになっちゃう

485 名前:デフォルトの名無しさん :05/02/26 13:51:49
>>484
意味がわからん。何を比較対象にしたの?

486 名前:473 :05/02/26 13:58:12
>>478
解決しました。
ありがとうございました。

487 名前:デフォルトの名無しさん :05/02/26 13:59:56
>>486
IsDBCSLeadByteもあるからな

488 名前:デフォルトの名無しさん :05/02/26 14:08:52
IsDBCSLeadByteA
IsDBCSLeadByteW

489 名前:473 :05/02/26 14:15:03
自作のエディタを作ってるので
今日から開発開始ですが、今日の夜には完成すると思います。
エディタもそうなんですが、自作のターミナル(TeraTermやHyperTerminalみたいなもの)もあわせて作る予定です。
Cisco製品で試してみようと思います。

はい。
一番の山は漢字変換当たりだろうと思います。

490 名前:デフォルトの名無しさん :05/02/26 14:38:34
>>489
MBCS(SJIS)の1バイト目と、2バイト目の範囲は重なってる。
IsDBCSLeadByteがTrueを返しても、1バイト目か2バイト目だと言うこと
以上は分からないぞ。
作る前に、ShiftJISやEUCやJISの仕様について、勉強してきた方が良い。

491 名前:489 :05/02/26 14:48:57
>>490
一バイトがDBCSかどうかわかれば結構ですよ。
別にMS-WORDのような重装備なものをつくるわけじゃありません。

全テキスト文字スタイル固定のシンプルなテキストエディタですから。
ご意見ありがとうございました。

492 名前:デフォルトの名無しさん :05/02/26 14:57:21
根本的にわかってない悪寒。

493 名前:デフォルトの名無しさん :05/02/26 15:02:46
2バイト系文字(漢字)のSJISの場合、第一バイトは81h〜9Fhだから
1バイト文字(ASCII)と区別できるんだよな。
でも2バイト系文字の第二バイトは40h〜7Ehが存在するから
これがASCIIと区別できないんだよな。
だから2バイト系かどうかは先頭から順にリード、トレイル、ASCII、を
チェックしながら調べないと絶対わからんはずだが。。


494 名前:デフォルトの名無しさん :05/02/26 15:10:20
スレ違い

495 名前:デフォルトの名無しさん :05/02/26 15:10:36
489は半角カタカナの仕組みがわかってればいいんだけど・・・

496 名前:デフォルトの名無しさん :05/02/26 15:13:08
素直にランタイムの_mbsbtypeとか使っておけという話だ。

497 名前:デフォルトの名無しさん :05/02/26 15:24:24
なにも改善されないんだが

498 名前:デフォルトの名無しさん :05/02/26 15:26:11
されるよ

499 名前:デフォルトの名無しさん :05/02/26 15:30:55
もう春だね。

500 名前:デフォルトの名無しさん :05/02/26 15:33:13
全部Unicodeにすれば良いんだよ


■過去ログ置き場に戻る■ 1- 前250 次250 最新50
DAT2HTML 0.33f Converted.