[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/04 11:46 / Filesize : 212 KB / Number-of Response : 986
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

Win32API質問箱 Build62



1 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 02:40:03 ]
スレ立てるまでもない、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

【前スレ】
61 ttp://pc11.2ch.net/test/read.cgi/tech/1199514664/

577 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:42:10 ]
コンパイラはまさかVC6?

578 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:53:08 ]
>>571
実測して差が出るかどうかはわからないけど、理屈の上では変換のコストがなくなるので若干良くなる

wchar_tにするとboostがイミフなエラー出したりすることもあるけど。。。


579 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 23:39:35 ]
W<->A変換速度についてはダンゴさんの意見を聞きたいところだ

580 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 02:52:14 ]
>>577
VC6現役で使ってるが何か?

581 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 02:54:44 ]
VS2005 で素直にダイアログのフォントを使っています。
9x は切り捨て

582 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 03:01:39 ]
暮れに突如DLLラッパー書きたくなって2008Express落としたが重すぎ。
VC6探し出してインスコした。
これアカデミック版なんだよなー、歳は食いたくねぇ。

583 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 09:11:20 ]
msdn2.microsoft.com/en-us/library/
しばらく前から検索すると503になるんだが、俺だけか?
左のツリーからは目的のページには行けるんだが、検索できないと面倒でしかたない。

584 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 10:31:57 ]
GetGlyphOutlineの使い方に関する質問です
www7a.biglobe.ne.jp/~lshen/EternalWindows/Graphics/Bitmap/Bitmap14.html
ここのサイトのソースで
アンチエイリアスを施すフォントにFW_BOLDを指定すると、
このソースではlp[0] = (GetBValue(cr))で例外が発生して、
アプリケーションが落ちてしまいます
このソースに手を加えなければ正常に動く様です
どの辺りが悪いのでしょうか?

よろしくお願いします。

585 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 10:39:30 ]
CreateFont(32, 0, 0, 0, 0,

CreateFont(32, 0, 0, 0, FW_BOLD,
にしたってこと?
落ちないけどなー



586 名前:デフォルトの名無しさん [2008/02/19(火) 10:44:04 ]
教えてください

GetDesktopWindowでハンドルとって
GetDCで デスクトップの画像 取得しているんですが

ログイン画面を取るときには たしかモニターの選択か
なにかしければならないんですよね?

昔何かで観て、必要になったんだけど
見つからない・・・・

よろしくお願いします

587 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 11:46:12 ]
ウィンドウステーション?

588 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 11:58:30 ]
ウィンドウステーションだったかデスクトップだったか
ログイン画面撮るのは難しそうな気もするけど頑張って下さい

589 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 12:02:15 ]
>>586
スレ違いの回答だけど
ログイン画面のキャプチャが欲しいだけなら、VirtualPCとかでOS立ち上げれば良い

590 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 13:02:05 ]
>>585
はい、その通りです

落ちませんか...
もう一度、一から確認し直してみます

ありがとうございました

591 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 14:07:52 ]
エディットコントロールのカーソルが何行目かしりたいのですが
どうすればよいでしょうか?
あと今表示されている一番上と一番下が何行目か知るには
どうすればよいでしょうか?

592 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 14:50:25 ]
>>586>>588
XPまでならサービスで作っておけばできなくもない。
しかしVistaから実現は厳しくなった。

593 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 14:53:11 ]
>>591
カーソル位置は、EM_LINEFROMCHAR
表示のほうは、EM_CHARFROMPOS
とかでどうかなあ

594 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 14:55:06 ]
あ、表示は行位置か。EM_CHARFROMPOS と EM_LINEFROMCHAR の組み合わせだな。

595 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 17:20:22 ]
c:\foo.txt, c:\bar.bmpといった存在するファイルのパスを渡すと
Explorerで表示されるアイコンと同じイメージを取得できる関数ってなんですか?



596 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 17:30:36 ]
SHGetFileInfo でした

597 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 17:57:58 ]
>>591
EM_GETFIRSTVISIBLELINE等々
っていうか、ヘルプのEM_で始まるメッセージは全部チェックしる

598 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 21:52:56 ]
>>592
セッション0、か

599 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:00:33 ]
質問です

ttp://wisdom.sakura.ne.jp/system/winapi/win32/win13.html
ここのサンプルプログラムをVC++2005EEでコンパイルしてみたところ
MessageBoxを呼び出すところで

error C2065: 'LlpcsWnd' : 定義されていない識別子です

といわれコンパイルできません
どうも宣言した変数がlpcsWndなのにLlpcsWndと認識されてしまってるみたいです
ためしにTEXTマクロの中身以外のlpcsWndをLlpcsWndと修正してみたところ
コンパイルに成功し、実行できたのですがこんな修正をせずとも
コンパイルを成功させ実行させる方法とかはありませんか?

ひょっとしたらスレ違いかもしれませんがよろしくおねがいします

600 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:04:23 ]
>>599
>>463


601 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:05:50 ]
>>599
>TEXT(lpcsWnd->lpszName)

TEXT( ) いらないよそこ

602 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:06:12 ]
>>599
ShiftJIS でおk
ってかサイトの方が TEXT マクロの使い方を間違ってる

603 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:12:59 ]
>>600-602
早い返答ありがとうございます
TEXTマクロの使い方が間違っている・・・ですか
まずはネットで大まかにやった後本を買って足りないところを補おうと考えていたのですが
やっぱり一冊は買っておくべきですね・・・

604 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:29:54 ]
こういうサイトに載ってるコードって、無意識的に正しいと思っちゃうよね。

605 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:52:14 ]
その考えは危険



606 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 03:12:04 ]
MSのサンプルでも偶に間違ってるしな

607 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 03:12:59 ]
モーダルダイアログのプロシージャ内で、
親ウインドウのハンドル(DialogBoxのhWndParentに渡したハンドル)を知るにはどうしたらいいですか?
GetParentとかGetAncestorとかGetWindowとか試したんですが、どれも違うようです。

608 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 03:27:44 ]
GetWindowLongPtr()

609 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 10:01:25 ]
>>604
まあいくらなんでも、実際にコンパイル、実行してると思うわな

610 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 10:14:53 ]
>>587,588
徹夜明けで返事が遅れてしまいました
ヒント頂いてありがとうございます。
これからがんばってみます

611 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 10:47:09 ]
>>606
ttp://watch.impress.co.jp/game%2Fdocs/20070927/wv.htm
この記事おもいだした

612 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 12:25:40 ]
>>609
tchar の型によっては全く問題なくコンパイルできる

613 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 12:25:54 ]
サンプルコードはとりあえずAPIが正常終了返す条件を教えてもらう程度にしか見ないほうがいいよな。


614 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 12:31:53 ]
>>612
あーそっか。

615 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 14:35:06 ]
C言語を初めて覚えるのに「猫でも」で痛い目を見たから
どこのサンプルでも一行ずつチェックして確かめてるわ。



616 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 16:34:14 ]
ある文字列stringを描画したときに一定の幅にstringの何文字目まで収まるかを知りたいんだけど、
プロポーショナルフォントも考慮した場合GetTextExtentPoint32()あたりで1文字ずつ
のばしていくしか方法無いかな?
要はテキストの折り返し処理をしたいんだけど、↑の方法だと行数が多いときに遅くなっちゃって。


617 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 16:43:26 ]
無いと思う

618 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 16:45:52 ]
GetTextExtentExPointってのはどう?

619 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 16:48:16 ]
>>616
>ある文字列stringを描画したときに一定の幅にstringの何文字目まで収まるかを知りたいんだけど
DrawTextEx を DT_SINGLELINE で呼び出して、DRAWTEXTPARAMSのuiLengthDrawnを見る。

620 名前:616 mailto:sage [2008/02/20(水) 17:28:18 ]
GetTextExtentExPointとDrawTextExググってみた感じどっちでもいけそうだな。
つか、レス早すぎだろwその知識はうらやましいわ。
ホントありがとう。

621 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 01:07:55 ]
>DT_SINGLELINE
童貞シングルライフと読めて泣いた

622 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 01:23:10 ]
>>621
どんだけ煮詰まってるんだw

623 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 02:14:00 ]
つまんね

624 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 02:40:40 ]
じゃあ死ねよ

625 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 03:06:50 ]
はあ?



626 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 03:08:48 ]
こういう出来ないばっか言う馬鹿女キライ

627 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 03:09:14 ]
ハイ、すいません
ゴバクが通りますよ

628 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 03:10:51 ]
自然な流れに吹いた

629 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 06:02:16 ]
ワロタ ほんとに誤爆なのか

630 名前:デフォルトの名無しさん [2008/02/21(木) 07:41:00 ]
InterlockedExchange関数の使い方、使うメリットを
解りやすく教えてください。
コレを使うと複数プロセスでのメモリアクセスの競合を保護できる?
らしいのですが、イマイチ解りません。

631 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 09:30:31 ]
解かりやすく、と言われても
「同期オブジェクト」の仕組みを理解していないと伝わらないし、理解すれば解かるような……
使い方もメリットもここに書いてある。
 短時間でできる汎用の同期オブジェクト
 msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdndllpro/htm/metrsect.asp

読むのは、「アトミック」、「スピンロック」、「デッドロック」、この3つの意味を正しく理解してから。
一度読んで終わらず何度も読めば良いと思うよ。
仕様を読んだうえでイマイチ解からないところを「ここは何故」と聞きに来ればいい。

同期オブジェクトの解説サイトは沢山あるから検索してみ。

632 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 09:33:38 ]
>>630
使い方・・・ねぇ
例えば LONG 変数があったとして、
LONG x;
この値を普通に操作すると、スレッド間で競合が起きるだろ?
BOOL Lock() {
 if (x == 0) { x = 1; return true; }
 else { return false; }
}
void Unlock() {
 x = 0;
}
InterlockedExchangeを使えば、そういった問題は起きない
BOOL Lock() {
 if (InterlockedExchange(&x, 1) == 0) { return true; }
 else { return false; }
}
void Unlock() {
 InterlockedExchange(&x, 0);
}
こんな例でわかるかなぁ・・・

633 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 09:37:04 ]
あー>>631の追記、
もし同期オブジェクトの解説サイトを読むときは、
日経BP(ITPRO)の解説の一部は人に薦めるようなものではないので
参考にする場合は気をつけて。

634 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 11:57:19 ]
>>631
Interlocked系は同期オブジェクトじゃないだろ……

635 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 15:17:25 ]
GDIのAPIってスレッドセーフなんでしょうか?
極端な例をいえば、1つのHDCの上半分・下半分を2スレッドでSetPixel()していくなど。
HDCへの描画は領域が被らない場合にスレッドセーフか?といったほうがいいのかな。



636 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 15:23:41 ]
safe

637 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 16:34:47 ]
任意のDPI値を持つメモリDCを作成するには、
どのような関数を使えばよいのでしょうか?

CreateCompatibleDC(NULL)で作成したものだと、
GetDeviceCaps(LOGPIXELSX)の値はモニタのDPI値のままになってしまいます。

638 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 16:48:05 ]
ファイル名が変更されたりアプリやOSが再起動されたりしても
常に同じファイルを参照できる方法を探しています.

FATをあきらめてNTFSに限定すれば
GetFileInformationByHandle()の戻り値のBY_HANDLE_FILE_INFORMATIONに含まれる
nFileIndexHighとnFileIndexLow(とdwVolumeSerialNumber)が
ファイルのIDとして使えるようです.

しかし,逆にこれらの情報をもとにファイルを取得する方法がわかりません.
どなたかご教示お願いします.

639 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 17:14:33 ]
OpenFileByIdってのがあるみたいだけど
Requires Windows Vista. って書いてあるなぁ
msdn2.microsoft.com/en-us/library/aa365432(VS.85).aspx
Win32 FileID API Library っての使えばXPでも使えるようになるのかな
よくわからん

640 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 17:31:12 ]
NTFSならApp Dataフォルダーにでもハードリンクなファイル作れば?

641 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 19:34:30 ]
>>638
それって、例えばc:\abc.binを上書きするのに
c:\abc.tmpを作成→c:\abc.binを削除→abc.tmpをabc.binにリネーム
とかやるソフトだとファイルIDが変わると思うけど

642 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 21:43:42 ]
なんか似たような話が書いてあった
www.atmarkit.co.jp/fwin2k/keyword/linktracking/linktracking.html

643 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 02:20:04 ]
ショートカットファイルの自動追跡を利用したらどうかね?
Resolve()とかいうメソッドがあったような

644 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 04:11:41 ]
そんな物アテになるかよ

645 名前:デフォルトの名無しさん [2008/02/22(金) 09:37:07 ]
フォントのプレビュー画面を作成しているのですが、
フォントの言語によってサンプルの文字列を変更しようと思います。
日本語フォントなら日本語の文章を、欧文フォントなら英語の文字列といった具合です。
そのフォントのデフォルトの言語のようなものを得るにはどうしたらよいですか?



646 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 12:37:34 ]
エディットボックスの現在のカーソル位置の段数調べたいんですが
SendMessage(ハンドル名, EM_LINEFROMCHAR, -1, 0);
この使い方であってますか?
なぜか数字が合わないです。

647 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 12:49:24 ]
何が返ってくるん?

648 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 13:53:03 ]
いくつを期待していくつになるんだよ。
最初の行は0だからな。

649 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 14:42:59 ]
>>647 <<648
申し訳ないです。
自分のミスです^^;

すいません、もうひとつ質問なんですが、
SetScrollInfoをつかってウインドウにスクロールバーを設置していますが
ウインドウにツールバーが重なっていてるのですがスクロールバーの幅
を調節する方法はあるのでしょうか?

650 名前:649 mailto:sage [2008/02/22(金) 14:46:03 ]
訂正
ウインドウにツールバーとスクロールバーを設置しています。
ところがツールバーの上にスクロールバーが重なっています。
スクロールバーの幅を調節する方法はあるのでしょうか?

651 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 14:56:46 ]
2時間画面の前で待ってたんだぞ。何かよこせ

ツールバーもエディットボックスもメインウィンドウの子なんでしょ?
エディットを親にしてスクロールバー作れば重ならないはず

652 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 14:56:47 ]
妙なことするより、ツールバーに重ならないように子ウィンドウ作った方が楽かと

653 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 17:49:39 ]
>>651
つ I  これやるよ。

654 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 01:18:09 ]
>>651
申し訳ないです。 ^^;
ウインドウに段数をペイントで書いていまして、
ウインドウに書かれた段数の横にエディットコントロール
を貼り付けています。そしてウインドウのスクロールバー
でエディットコントロールのスクロールを連動させています。

>>652
子ウインドウにエディットコントロールは貼り付けられますか?

655 名前:デフォルトの名無しさん [2008/02/23(土) 20:00:44 ]
WindowsでスプールファイルにEMFがあります。このファイルを元にし
て、印刷しますがこのファイルを解析して、実際に紙に印刷される意味
のあるデータを取得すると言う事は出来るのでしょうか? 

RAWに関しては、解析して意味のあるデータを取得した事はありますが、
EMFに関しては良く分かりません。Windows XPの環境です。初心者です
が、宜しくお願いします。





656 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 20:25:07 ]
>>655
これかなたぶん?
msdn2.microsoft.com/en-us/library/ms534514(VS.85).aspx

657 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 20:57:42 ]
Windows VistaでBeep関数を呼び出しても音が鳴りません。
何か仕様変更等あったのでしょうか。

658 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 20:58:33 ]
EnumEnhMetaFileだろjk

659 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 21:32:15 ]
VC++6.0、SDKでEDITボックスにドラッグアンドドロップしてファイル名を取得したいのですが
DragAcceptFiles(::GetDlgItem(hWnd, IDC_EDIT1), TRUE);
とやってもWM_DROPFILESのメッセージが拾えないです。
リストボックスに同様なものをしたら拾えたのですが
EDITは特殊なのですか?


660 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 22:11:35 ]
>>659
エディットボックス
(というより自分自身がウィンドウプロシージャを握っていないウィンドウ)
のメッセージを受け取ろうとしているのだから、サブクラス化しないと。

661 名前:デフォルトの名無しさん [2008/02/23(土) 22:53:06 ]
>656 有り難う。しかし、日本語でないと良くわからん。日本語のサイトは無いのだろうか?

662 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 23:11:47 ]
>>661
>>658

663 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:30:42 ]
>>660
レスサンクス
調べてみる

664 名前:デフォルトの名無しさん [2008/02/24(日) 01:23:34 ]
作成したexeファイルと同フォルダにヘルプファイルを置いているので、
GetModuleFileName()を使って、パスを取得する処理を入れているのですが、
起動時にこの関数でエラーになってしまいます。
で、GetLastError()を使うとエラーコードは24とのこと。
エラーコード24は「プログラムがコマンドを発行しましたが、コマンドの長さが正しくありません。」らしいのですが、
これは何が理由でエラーとなっているのでしょうか。。


665 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 01:30:16 ]
まずは自分コードを疑おう



666 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 01:48:07 ]
プロセスにマップされたものでないならエラーになるに決まってるだろ

667 名前:666 mailto:sage [2008/02/24(日) 01:50:32 ]
やるんならGetCurrentDirectory使うか
INIとか設定ファイルなんかに持たせるとか
そういうのでいいんでね?

668 名前:664 mailto:sage [2008/02/24(日) 01:53:59 ]
>>665
もちろん自分のコードを疑っているんですが、
その取っ掛かりが欲しくて。
このエラーコードの意味やどういった時に起こるものなのかがわかれば、
どこから目を付ければいいかわかるかなと思ったんですが。

>>666
すみません。
プロセスにマップという意味がよくわかっていませんが、
要は、自exeファイルがあるパスを取得するには、
ただ単にGetModuleFileName()を呼び出すだけではダメだ、ということでしょうか?



669 名前:664 [2008/02/24(日) 02:20:23 ]
>>667
ありがとうございます。
いま作ってるのが常駐するやつでして、
GetCurrentDirectory()もやってみたのですが、
常駐アプリの場合だと、C:\Document and Settings\[User Name]\
が返るみたいでした。


670 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 02:38:56 ]
>>667
おいおいGetCurrentDirectoryとか嘘を教えるなよ
カレントディレクトリ≠exeのディレクトリだと誤作動するアプリの元凶だろ

>>669
GetModuleFileName→(PathRemoveFileSpec)→PathAppend

671 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 02:44:31 ]
その exe を他のディレクトリに移してみてから実行したら
どうなるかは試してみた?。
GetModuleFileName の使い方に問題がなければ
アクセス権や MAX_PATH とかの問題じゃない?

672 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 02:48:10 ]
ずるずる引っ張るぐらいなら最小コードをうpしたほうが早い

673 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 08:33:51 ]
最小コードも何も、>>670に書いてある3つのAPI名でググればすぐに見つかるだろ
その程度の検索も出来ないような奴はプログラマには向いてない

674 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:00:40 ]
知りたいのはヘルプの位置じゃなくて、GetModuleFileNameがエラーを返す理由でないの?
PathAppend とかぐぐってどうすんの。

675 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:02:39 ]
DWORD GetModuleFileName(hinstModule, lpszPath, cchPath)
戻り値
関数が正常に終了した場合は、 バッファにコピーされた文字列の文字数を返します。
それ以外の場合は、 0を返します。拡張エラー情報を取得するには、 GetLastError関数を使います。



676 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:08:57 ]
ずるずる引っ張るぐらいなら最小コードをうpしたほうが早い

677 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:19:44 ]
もうさ、__argv[0]でも使ってれば?

678 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:22:54 ]
#include<windows.h>
#include<stdio.h>

int main(void){
char filename[_MAX_PATH];

GetModuleFileName(NULL, filename, sizeof(filename));
printf("%.*s\n", sizeof(filename), filename);

return 0;
}

>>676 何故自分で貼らない?質問者か?
>>675 で分からないなら MSDN ダウンロードしなよ 無料だから

679 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:25:35 ]
やっぱ勘違いしてたか。最小コード貼れってのは、質問者に言ってるんだよ。
エラーを再現できる最小限のコードを出せってな。

680 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:30:44 ]
672は誤解されてしまったようで申し訳ない
解決方法は、もちろん示されたAPIをググってコード見直せばOKなんだ
エラー原因もそれで解決するはずなんだが、それができないのなら晒したら? という話

681 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:39:43 ]
> GetModuleFileName(NULL, filename, sizeof(filename));
今時こんなコード書く糞プログラマは偉そうな事言えんぞw

682 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:58:06 ]
普通誤解しないから

683 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 10:06:58 ]
>>678
そんなヘドロみたいなコード貼るな

684 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 10:26:50 ]
>>681
横レスですまないが、素人目にはどこが悪いかわからない。
sizeof(filename)/sizeof(char)としないとUNICODEビルドで問題が出るのかな。

685 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 10:35:55 ]
DWORD GetModuleFileName(HMODULE, LPTSTR, DWORD);



686 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 10:43:13 ]
今は一々URLDownloadToFileで手元にファイルを保存→ファイルを開いて読み込む→
処理→ファイルを消す。ってやってるんだけど、ファイルとして保存しなくても
直接ネット上から読み込む。みたいなスマートな方法ってありませんか?

687 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 10:46:49 ]
普通にソケットを使えばいいだろ

688 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 10:49:03 ]
InternetReadFile

689 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 11:18:04 ]
>>687-688
ありがとう。調べてみたら何となく分かった

690 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 13:52:58 ]
なんかフルボッコなので書き直した
#include<windows.h>
#include<stdio.h>
#include<wchar.h>
#include<tchar.h>

#define NITEM(arr) (sizeof(arr)/sizeof(arr[0]))

int _tmain(void){
TCHAR filename[_MAX_PATH];

GetModuleFileName(NULL, filename, NITEM(filename));
_tprintf(TEXT("%.*s\n"), NITEM(filename), filename);

return 0;
}

691 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 14:11:01 ]
Win32ならRTL_NUMBER_OFかARRAYSIZE使おうぜ。

と書こうとヘッダ見てたら、いつの間にかRTL_NUMBER_OF_V2が増えてる。
こっちはC++専用ながら、ポインタだとコンパイル通らないのか。

692 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 14:26:20 ]
このスレ用のwikiなんてあったんだな
どういう経緯で作られたの? まったく更新されてないようだけど

693 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 14:31:53 ]
V2 というネーミングセンスに吹いたw

694 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 15:02:08 ]
>>692
更新されてないどころか内容も無いし次からテンプレから消してもいいかもな

695 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 15:50:16 ]
>>690
まだまだ叩かれる余地がある。
ttp://msdn2.microsoft.com/en-us/library/ms683197.aspx

まず、2k/XPでは、ファイルパスがMAX_PATHより長かった場合、NULL終端されない。
MAX__PATHより長かった場合、\\?\を使った長いファイルパスを返す。
したがって、filename配列は32000ぐらい確保すれば安全だ。

あと、NTIMEなんていう汚いマクロ使うな。



696 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 15:56:29 ]
NULL終端はされるんじゃないか?
>the string is truncated to nSize characters including the terminating null character.
「null 文字も含め nSize 文字分に切り捨てる」でしょ?

697 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:04:58 ]
Windows XP/2000: The string is truncated to nSize characters and
is not null terminated.
~~~~~~~~~~~~~~~~~~~~

698 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:11:25 ]
あ、本当だ。失礼しました

699 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:20:22 ]
>The global variable _pgmptr is automatically initialized(略)
身も蓋もないとはまさにこのこと(w

700 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:22:52 ]
そもそも_MAX_PATH(アンダースコア付き)なんてWin32APIで使う物では無かろう

701 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:45:36 ]
動けばいいじゃん
こういうどうでもいいとこをグチグチ言ってくる奴多杉

702 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:51:39 ]
お前アホだろ
特定の状況でまともに動かないからレスがついてんだろうが

703 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:51:54 ]
>>701
お前みたいな思想を持つ奴が、Windowsのバージョンアップ程度で、動かなくなる糞コードを書く。

704 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:56:12 ]
偉そうなことを言う奴に限ってコードの出し惜しみ(というかかけない)とか
ちょっとレベルの高い話になると何も答えられないんだよな。


705 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:58:26 ]
先生!ファイル名をnul.exeにしたんですけど、
どうやって起動すればいいですか!?



706 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:36:17 ]
RunDLL32 shell32.dll,ShellExec_RunDLL nul.exe

707 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:09:00 ]
C:\>RunDLL32 shell32.dll,ShellExec_RunDLL c:\nul.exe
指定されたデバイス、パス、またはファイルにアクセスできません。
アクセス許可がない可能性があります。

708 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:33:01 ]
なにがしたいねん

709 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:56:06 ]
prn とか、DOS時代からある予約名を
たまに思い出したかったんだろう

710 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:58:24 ]
C:\>dir nu*
ドライブ C のボリューム ラベルがありません。
C:\ のディレクトリ

2008-01-21 22:09 130,765 NUL
2008-02-03 07:45 53,248 nul.exe

711 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 19:02:56 ]
>>678 屑コード晒す
>>690 書き直してもやっぱり屑コード
>>701 「動けばいいじゃん」

・・・w

712 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 19:07:59 ]

| ∧         ∧
|/ ヽ        ./ .∧
|   `、     /   ∧
|      ̄ ̄ ̄    ヽ
| ̄ ̄ ̄月曜日 ̄ ̄ ̄)
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄.\  煽りはいらない
|ヽ-=・=-′ ヽ-=・=-  /   ただ私に絶望したまえ
|::    \___/    /
|:::::::    \/     /

713 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 19:27:46 ]
動けばいいじゃんって言う奴ほど汚いコードかくんだよな
むしろ動けばいいって言う前提で書いてるからなんだろうがw

そういう奴は個人でソースを管理する趣味グラマーでいてくれ

714 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 19:49:09 ]
モジュール単位で仕様がハッキリしておけば中身のコードなんてどうでもいいじゃん

と趣味グラマーが申しております

715 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 19:52:38 ]
その中身を保守する人のことを考えろ



716 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 19:54:25 ]
仕様通り動いてくれるなら正直悪くは無い。
仕様通り動かない、そもそも仕様自体が二転三転するとかだと楽し過ぎるからな。

717 名前:デフォルトの名無しさん [2008/02/24(日) 20:21:51 ]
MessageBoxだとビープ音が鳴ってしまうのですが、
音を消すことはできますか?
もしくは、MessageBoxに似た音の出ないapiはありますか?


718 名前:664 mailto:sage [2008/02/24(日) 20:30:38 ]
664でGetModuleFileName()関連の質問をした者です。
変な質問をしてすみませんでした。


>>676で言われているように、
最小コードを作ったのですが、なぜかこちらではエラーが発生せず、
質問しようにも出来ない状態です。

自分で少しずつ調査して行こうと思います。
お騒がせしてしまって申し訳ありませんでした。

MUI化していないときはエラーになっていなかったので、
とりあえずはMUIあたりから調べてみます。

ありがとうございました。

719 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 20:55:24 ]
>>717
MessageBoxのようなダイアログボックスを作るしか無いんじゃないの?
たまーにMB_NOSOUNDとか欲しくなるんだけどね・・・

720 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 21:01:23 ]
>>719
ありがとう

721 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 22:53:35 ]
先生!
>>690のコードをプロレベルのコードに修正お願いします。

722 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:12:30 ]
屑コードと言う人は、とりあえず
そのコードを正しく直してから批判しな?

723 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:28:42 ]
>>678 屑コード晒す
>>690 書き直してもやっぱり屑コード
>>701 「動けばいいじゃん」
>>722 「正しく直してから批判しな」

724 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:32:47 ]
「?」でこのスレを検索すると、特徴的な使い方している香具師が浮かび上がってくるね。

725 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:32:48 ]
マイタ・デッヤーレ



726 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:35:06 ]
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#include <stdlib.h>

#define CHECK(b) if(b); else goto ERROR

int _tmain(void) {
 int exit_status = EXIT_FAILURE;

 LPTSTR filename = NULL;
 DWORD len;
 TCHAR dummy;

 len = GetModuleFileName(NULL, &dummy, 1);
 CHECK(len != 0);

 filename = malloc((len + 1) * sizeof (TCHAR));
 CHECK(filename != NULL);

 len = GetModuleFileName(NULL, filename, len + 1);
 CHECK(len == 0);

 _tprintf(_T("%.*s\n"), len, filename);

 exit_status = EXIT_SUCCESS;

ERROR:
 free(filename);
 return exit_status;
}

727 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:35:45 ]
>>699
そういうのって C++ のグローバルオブジェクトのコンストラクタから
正しく使えるんだろうか。
もっとも、GetModuleFileName も正しく使えるかどうか。

728 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:56:18 ]
>>726
> CHECK(len == 0);
これは拙く内海?

729 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:59:04 ]
間違えた。
0 の時は 「失敗」 なのか。

730 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 00:21:32 ]
>>726
> len = GetModuleFileName(NULL, &dummy, 1);
で成功すればlen=1だから

> filename = malloc((len + 1) * sizeof (TCHAR));
filenameのバッファが全然足らねーだろ
つーかcalloc使えよ

相変わらず屑コード全開だな

731 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:00:24 ]
質問と回答とこの俺のレス以外はいりません

732 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:01:02 ]
なんでcalloc使わないといけないんだ?w

733 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:06:13 ]
>>678 屑コード晒す
>>690 書き直してもやっぱり屑コード
>>701 「動けばいいじゃん」
>>722 「正しく直してから批判しな」
>>726 屑コードどころかバグありコード晒して恥の上塗り
>>732 「なんでcalloc使わないといけないんだ?w」

734 名前:1 ◆GqrOSDYjeQ mailto:sage [2008/02/25(月) 01:11:01 ]
>>726
#define CHECK(b) if(b); else goto ERROR

このコードは個人的に盗ませてもらうかもしれない
いいもん見せてもらったw


735 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:20:11 ]
煽ってるやつは同一人物か?
違うよな?な?でないとおかしいもんな



736 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:25:48 ]
煽ってるやつは同一人物か?
違うよな?な?でないとおかしいもんな

737 名前:731 mailto:sage [2008/02/25(月) 01:27:05 ]
マジ黙れお前ら

738 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:28:46 ]
こんな感じでいいのか?

LPTSTR name = NULL, newptr;
DWORD len = 32, rlen;
do {
rlen = 0;
len *= 2;
if ( (newptr = (LPTSTR)realloc(name, len * sizeof(TCHAR))) == NULL ) break;
name = newptr;
} while ( (rlen = GetModuleFileName(NULL, name, len)) == len );
if ( rlen ) _putts(name);
free(name);

始め、GetLastErrorを使った切り捨てチェックで実装しようとして気付いたのだが、
SDK for WindowsVista 付属のドキュメントで、
GetModuleFileNameがバッファが小さくて切り捨てした時、
ERROR_INSUFFICIENT_BUFFERがセットされる、とあるけどこれ嘘だな。
いつからか誤った記述が紛れ込んだ予感。

739 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:32:22 ]
>>734が嫌味なのか真性なのか分からない俺はハントシーロムッテロなのか・・・


740 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:36:18 ]
>>738
DWORD len = MAX_PATH, rlen; の方がrealloc呼ばれる回数が減っていいかも

741 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:36:49 ]
MSDNは無謬
そんな風に思っていた時期が…

無い

742 名前:738 mailto:sage [2008/02/25(月) 02:06:26 ]
改めて見るとrealloc使う必要性全然ないな。
随時追加を実装する時のコードだ、これは。
free(name);
if ( (name = (LPTSTR)malloc(len * sizeof(TCHAR))) == NULL ) break;
これでいいや。

743 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 02:27:33 ]
このスレからカルトを感じる

744 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 03:15:59 ]
適当な大き目のバッファをスタックに取ってOK
それで取得できないような糞長いディレクトリを使うような池沼は無視して問題ない。

745 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 04:31:53 ]
俺も1KBくらい取って駄目なら止めるな
無駄な作業だもんw



746 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 05:00:57 ]
プログラム板の住人はいつも無意味にピリピリしてるのれす

747 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 05:06:54 ]
そもそも>>678が勘違いして関係ない糞ース書くからだろ

748 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 07:41:48 ]
そうか・・・。
バッファが足りないときは nSize がそのまま返ってきて
ERROR_INSUFFICIENT_BUFFER エラーになるだけなのか。
あんま斜め読みして横レスするもんじゃないな。

749 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 07:45:05 ]
そういう風に勝手にMaxを想定するプログラマが多いから、
東証のシステムが止まったりするんだよな。





750 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 08:04:45 ]
>>749
Microsoft自体がそうだけどな。
Path系APIがMAX_PATHを超えるパスを正しく処理できない、とか。




751 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 08:12:57 ]
それは、ANSI版使うからだね。Unicode版使えば、約32000文字まで扱えるかな?


752 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 08:50:50 ]
違うよ。Path関数はバッファ長を引数に渡さないからA/W版共にMAX_PATH固定で作ってあるんだよ。

753 名前:デフォルトの名無しさん [2008/02/25(月) 09:30:24 ]
ダイアログボックスに関する質問です。
モーダルダイアログボックスで、キャプションバー付き、システムメニュー&最小化ボタン等付き、オーバーラップスタイルで作成しています。
タイトルは開発環境のダイアログプロパティで指定して、メニューも同様です。
普通のウィンドウって左上にアイコンがでますよね?
ダイアログボックスでも普通はアイコンが表示されるんですが、メニューをダイアログボックスに指定する(追加する?)と
このアイコンが表示されなくなってしまうんですが、どうしたらいいでしょうか
メニューバーを付けないと、アイコンは表示されるんですが・・

一応リソースの中身はこういう風になっています。
IDD_DIALOG1 DIALOGEX 32, 32, 155, 81
STYLE DS_MODALFRAME | WS_MINIMIZEBOX | WS_CAPTION | WS_SYSMENU
CAPTION "タイトル"
MENU IDR_MENU1
FONT 9, "MS Pゴシック"

754 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 10:19:12 ]
指定のフォルダ内にあるファイルのファイル名を全て取得するにはどうすればできますか?
フォルダ内のファイルを全て開きたいんですが

755 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 10:26:52 ]
FindFirstFile
FindNextFile



756 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 10:28:28 ]
FindFirstFile、FindNextFileで列挙する

757 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 10:48:10 ]
ありがとうございます。できました

758 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 12:01:42 ]
ああ、PATH系ってShell系のAPIね。それならそうかも。前、エクスプローラ使って、
頑張って長いパスのファイル・フォルダ作ろうとしたが、そこらへんの壁越えれなった


759 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 15:34:45 ]
>>690見て思ったんだが、配列なら_countof使ったらいかんの?
(VC++2005以降だが2003でも定義コピペすれば使える)

760 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 18:43:09 ]
_countofでもARRAYSIZEでもいいけど、
C89に入れてくれればそれで統一できて良かったのに……。
C99でも遅くない。次の改訂でも遅くないから。

C++だとboost::sizeがあるけど、配列に対してはstd::size_tを返すから、
Win32 APIでは少し使いづらい。定数式が必要なときも使えないし。

761 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 22:45:14 ]
またboost厨か
C++にはSTLがあるという話をするなら分からんでもないが
標準ライブラリでないboost前提で平然と話を進めるあたり流石としか言えない

762 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 22:59:44 ]
つうかそんな小物のためにboost入れたくないな

763 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 01:20:15 ]
CreateWindowExでES_MULTILINEを設定してEDITコントロールを作成すると
WS_TABSTOPを記述してもtabでのコントロール間でのフォーカス遷移がそのコントロールでとまってしまいます。

ES_MULTILINEをスタイルに設定したEDITコントロールでもWS_TABSTOPが使えるようにするにはどうすれば良いですか?

764 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 01:39:18 ]
sizeof も size_t 返すじゃん?

765 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 05:48:03 ]
コンパイル時定数です C言語スレでどうぞ



766 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 07:10:14 ]
>>763
WM_GETDLGCODEの戻り値を
サブクラス化して弄ってやればいいような気がする。
タブが入力できなくなるかもしれんが、それは知らん。

767 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 14:55:53 ]
lpBufSizeの分領域を確保しようとしてるんですが、HttpQueryInfoでHTTP_QUERY_CONTENT_LENGTH
を指定してもlpBufに何も返ってきてくれません
やっぱりHttpOpenRequestの3個目の引数が間違ってるんでしょうか?
index.htmlや./、../など色々試してみても変らずだったんですが
www.google.co.jp/みたいに/の後に何も無い場合って何を入れればいいですか?


//ソース
hInet=InternetOpen(szClassName,INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0);
if(!hInet)return -1;

hConn=InternetConnect(hInet,"www.google.co.jp",INTERNET_DEFAULT_HTTP_PORT,NULL,NULL,INTERNET_SERVICE_HTTP,0,0);
if(!hConn){
   InternetCloseHandle(hInet);
   return -1;
}

hReq=HttpOpenRequest(hConn,"GET","/",NULL,NULL,NULL,0,NULL);
if(!hReq){
   InternetCloseHandle(hConn);
   InternetCloseHandle(hInet);
   return -1;
}

if(!HttpSendRequest(hReq,NULL,0,NULL,0)){
   InternetCloseHandle(hReq);
   InternetCloseHandle(hConn);
   InternetCloseHandle(hInet);
}

HttpQueryInfo(hReq,HTTP_QUERY_CONTENT_LENGTH,lpBufSize,&dwSize,NULL);
※lpBufSizeに何も入らない…

768 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 14:58:53 ]
google の / がどうかは知らないけど、content-length は必ずあるとも限らないしねぇ

769 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 15:50:39 ]
index.htm、またはindex.html

googleはindex.html
www.google.co.jp/index.html = www.google.co.jp/

770 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 16:02:39 ]
"/" 等のディレクトリへのアクセスは、普通はサーバーが解釈してくれるんじゃない?
(index.html, index.htm, default.html, index.asp, ...)

771 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 16:04:49 ]
質問です。
RegisterHotKeyでホットキーを使いたいと思うんですが、
NumLockを外した状態のテンキー(カーソルやらHomeやらEndやらとして動作する)
をホットキーとして利用したいんです。

ところがホットキーの仕様ではいわゆる普通のカーソルキーとテンキー部分との区別が無いので、
どっちのキーを押してもホットキーとして反応してしまいます。

テンキー部分のみをホットキーとして利用できるようなカラクリをこしらえられませんかね。
WM_KEYDOWNとかならExtendedKeyか否かで両者を区別できるんだけどな。
やっぱHookしか無いですかね。

772 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 16:29:15 ]
>>770
解釈ってーかリダイレクトされるな多くの場合は。

773 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 17:00:23 ]
>>768-770
ありがとうございます。とりあえず3番目の因数は/でいいんですね
それでも何も入らないのはヘッダに情報が無いからなのかな
調べてたらInternetQueryDataAvailableでサイズ調べれることを知ったのでこれ
を使って確保することにします

774 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 17:03:09 ]
突っ込んではいけない

775 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 20:02:33 ]
ごめんInternetQueryDataAvailableで分かるのは一度に読み込めるバイト数だったのね
とりあえずは諦めて読み込めない時は5000000確保することにしました
それでこんな風に書いてみたんですが、yahooやgoogleでは途中までしかダウンロード
されないんですが何故ですか?
ずっとブレークポイントで止めたりググたりして調べてるんだけど分からなくて発狂しそうです

とりあえずエラーチェック無しで書いてみてます

if(lpBufSize[0]=='\0')lstrcpy(lpBufSize,"5000000");
BufSize=(atol(lpBufSize))+1;
lpszBuf=(char *)GlobalAlloc(GMEM_FIXED,sizeof(char)*BufSize);
memset(lpszBuf,0x00,sizeof(char)*BufSize);
char *Buf=lpszBuf;
while(1){
    InternetReadFile(hReq,Buf,BufSize,&dwSize);
    Buf+=dwSize;
    if(dwSize == 0)break;
}



776 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 20:35:23 ]
戻り値とGetLastErrorの確認

777 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 20:36:00 ]
msdn2.microsoft.com/en-us/library/aa385103.aspx

>To ensure all data is retrieved, an application must continue
>to call the InternetReadFile function until the function
>returns TRUE and the lpdwNumberOfBytesRead parameter equals zero.

778 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 21:33:00 ]
>>776
ありがとう。ループ1回目はエラー無しで2回目からエラーコードERROR_INVALID_PARAMETERがでて
調べると「パラメータが間違ってる」らしいけど何が間違ってるのかわからない…
現在のソースは>>767>>775をくっつけてる状態です
>>777
完全にダウンロードするには、dwSizeが0かつ関数がTRUEを返すまでループさせないと
いけないってこと?
でもそれだと永遠ループしてしまう

779 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 21:35:22 ]
実際にはない部分の領域も書けるといっちゃダメって話じゃないの。
要するにBufSizeもちゃんと減らせと。

780 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 21:41:32 ]
>>779
ありがとう。そういうことっぽかったです
試しにInternetReadFileの3つ目の引数を1にしてみたらいけました。
ただこれだと効率悪そうなのでまた今度ちゃんと考えて計算してみます
インターネットに繋げるのに6時間以上かかってしまったけど上手くいってよかった

781 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 21:53:13 ]
>>774
「因数」のことか?代わりに突っ込んどくか。

引数(ひきすう)が正しい。

782 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 22:20:34 ]
if(lpBufSize[0]=='\0')lstrcpy(lpBufSize,"5000000");
BufSize=(atol(lpBufSize))+1;

とか

lpszBuf=(char *)GlobalAlloc(GMEM_FIXED,sizeof(char)*BufSize);
memset(lpszBuf,0x00,sizeof(char)*BufSize);

とか突っ込みどころ満載だな

783 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 22:36:56 ]
いんすうwwwwwwwwwwwwwwwwww昔の俺だwwwwwwwwwwwww

784 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 22:50:34 ]
>>782
どう直すと良くなる?

785 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 22:52:30 ]
今時クリップボード以外でGlobalAlloc使う意味あんの?



786 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 22:52:31 ]
GlobalAlloc使う理由がわからん
HeapAllocのがよろしいと思うんだけどね 0梅とかシングルスレッド用オプションとか多機能だし

787 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 22:58:16 ]
スレ的にはnew使うのは無しか

788 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 23:01:08 ]
lpBufSizeがどこから来ているかわからないが、
初めから整数型にしておけよ。特に関数の引数なら尚更。

789 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 23:05:12 ]
音訓交じりな"ひきすう"より"いんすう"と読む方が国語的にはセンスがある筈なんだけどね

790 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 23:06:54 ]
それだと因数と同じ発音だから「ひきすう」と読むと説明される。

791 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 23:07:03 ]
正直HeapAllocも使わない
malloc/callocやnew使ったほうがデバッグビルドでメモリリーク検出できるし

792 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 23:08:47 ]
引数が「ひきすう」なら因数は「よりすう」と読むべき。

793 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 23:11:29 ]
音訓が何か勉強しなおしてこいや

794 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 23:12:04 ]
>>792
なんてこったいwww

795 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 23:21:44 ]
美肌(びはだ)
という読み方が気にならないならおk




796 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 23:25:48 ]
魅せるとか言ってもいいですよ

797 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 23:27:30 ]
美姫と間違えるくらいなら びはだ でおk

798 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 23:31:42 ]
淫吸

799 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 23:32:06 ]
そろそろ用語の読み方スレ池

800 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 00:41:28 ]
HeapAllocのメリットはCreateして丸ごとDestroyできる
とか

801 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 05:31:21 ]
VMwareみたいなものを動かしていると、仮想ディスクのファイルの
断片化が著しいですが、固定サイズに設定した時のWindowsの
ページファイル(意味伝わるでしょうか?)の様に、
ディスクの物理的な、ある領域区画だけしか使わないようにファイルを
更新する方法ってないでしょうか?
デバイスドライバを書かないとだめでしょうか?


802 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 07:02:08 ]
defragしたいの?

803 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 07:08:16 ]
>>801
FDISKで小さい区画を作ってそこだけ使わせればいいじゃん

804 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 12:48:39 ]
ウィンドウのタイトルバーをクリックされて何もせず離された時って
プロシージャにはなんていうメッセージが送られるんでしょうか?


805 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 13:05:33 ]
Spy++で監視



806 名前:デフォルトの名無しさん [2008/02/27(水) 13:16:29 ]
質問です。

クリップボードへのコピーが発生したとき、
それが自分のプロセスからかどうかを調べる
一般的な方法ってあるのでのしょうか?

お願いします。

807 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 16:06:08 ]
コピーが発生したとき通知するAPIはあるけど
プロセスまではわかんなかった気が

SetClipboardData見てれば

808 名前:卍凹 [2008/02/27(水) 18:01:52 ]
質問です
ただいまゲーム作成中なのですが他のPCで実行したらバグが起こりました
環境
OS XP home
開発環境 VS 2005
Win32API
C言語で作成
何を書いていいかわからないのでほかいってくれればすぐに書きます

バグは自分の開発しているPCと他の自分のPCは実行できるが、
なぜか友人のPCでは途中で動きが遅くなりフリーズしてしまう…(;_:)こんな感じです。




809 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 18:25:35 ]
エスパーのさらに上を期待してるのかw

810 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 18:29:51 ]
スペック足りてないんじゃね

811 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 18:34:30 ]
>>808
1208行目のループ文が無限ループしてる

812 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 18:38:57 ]
>>808
メモリとかリソースの解放漏れ

813 名前:卍凹 [2008/02/27(水) 18:47:15 ]
>>810
自分のPCよりスペックの高いPCを友人が持っていたのでためしたが駄目だった
んでスペックが足りないってこともないと思います。
>>811 812
812だとすれば自分のPCでも症状は出ると思うのですけど、今のところはでていません


814 名前:デフォルトの名無しさん [2008/02/27(水) 18:56:33 ]
今日からスッドレの勉強はじめました。

歯痛制御って何ですか?
セマホって何ですか?
クリテカルスポットって何ですか?

815 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 19:32:43 ]
そのまま勉強を続ければ時季に分かるだろう。



816 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 20:13:54 ]
>>808
それはその友人の罠だな。すぐ逃げた方がいい

817 名前:デフォルトの名無しさん [2008/02/27(水) 20:21:27 ]
クリティカルセクションつかって
会社の女のまんこに挿入したいのですが、
どうすればいいですか?


818 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 20:33:45 ]
自分では面白いと思って書き込むんだろうね。
リアルでも空気が読めずに相手にされないのがもろわかりな内容。

819 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 20:53:17 ]
>>818

820 名前:卍凹 [2008/02/27(水) 20:53:52 ]
自分のPCはCeleronで友人のはPen4これぐらいしか大きなちがいはないのですが
なぜ動かないのでしょうか?うpするからみてもらえませんか??

821 名前:デフォルトの名無しさん [2008/02/27(水) 21:10:15 ]
嫌です

822 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 21:13:34 ]
何故、他人が作ったもののデバッグをやらなきゃいかんのか、と

823 名前:卍凹 [2008/02/27(水) 21:15:39 ]
すいませんでしたm(__)m

824 名前:卍凹 [2008/02/27(水) 21:16:22 ]
すいませんでした

825 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 21:35:06 ]
マジで回答期待してるなら
うpロダにソース晒せ




826 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 21:47:26 ]
俺もゲームやりたい

827 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 22:03:14 ]
CeleronがCovingtonなら、十分すぎるほど違いがあるな。

828 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 23:57:47 ]
フォントの10.5ポイントとかとCreateFontの高さを相互変換するにはどうしたら良いですか?

829 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 00:04:25 ]
MFC や WTL の CreatePointFont の実装をパクる

830 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 00:07:08 ]
ポイント/72*DCのdpi = pixelという計算式がある。

MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY), 72);

831 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 00:30:14 ]
>>829-830
ありがとうございます。
そこらへんから調べてみます。感謝。


832 名前:771 mailto:sage [2008/02/28(木) 00:50:22 ]
誰も覚えてないだろうけど>>771はどうにもならんかったのでフックで何とかした。
以上報告まで。

833 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 04:07:03 ]
MSDNライブラリを読むと、BitBltやStretchBltは使えない環境もあるようですが、
AlphaBlendやTransparentBltにはそのような記述がないということは、
BitBlt等はデバイス(GPU?)が行い、AlphaBlend等は全てCPUが処理するということで合ってますか?

834 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 07:00:34 ]
Vista以降を除けば合っていない。
GetDeviceCapsのSHADEBLENDCAPSで対応状況が解る。

835 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 07:01:10 ]
AlphaBlendやTransparentBltはハードウェア処理できたらハードウェア処理するができなかったらソフトウェア処理だったと思う



836 名前:デフォルトの名無しさん [2008/02/28(木) 10:40:58 ]
エクスプローラやAPIのCopyFileを使った巨大ファイルのコピー中に(完了まで数分掛かる)
現時点でのコピーされたバイト数を取得する方法は無いでしょうか?

よろしくお願い致します。

837 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 10:49:50 ]
CopyFileEx

838 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 22:22:29 ]
BitBltが使えない環境なんて考えたことない。
そんなのが実在するなんて恐ろしいわ。

839 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 22:41:33 ]
BItBltはオペレータの組み合わせ具合で
ドライバのまずい部分をつつく可能性はあるね

840 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 00:52:06 ]
>>833
「HDCは画面だけのものじゃない」ってのをよく考えれ。

>>836
アプリが動かしてるのを取得したいんならフックするのがベストかな。
自前ならどーとでもお好きなように。

841 名前:デフォルトの名無しさん [2008/02/29(金) 18:38:33 ]
質問があります。
プログラム中で、マウスホイールを禁止したいと思ってます。
またはプログラム中でホイール動作時の移動量情報を自分で決めたいと思っています。
できれば、WM_CREATE内で。。
ホイール動作時にWM_MOUSEWHEELメッセージが来るのは分かったのですが。。
環境はVC.net + SDK です。よろしくお願いします

842 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 18:44:39 ]
C#のArrayListみたいなのに相当する
出し入れ自由なコレクションって自作するしかない?

843 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 18:56:20 ]
どう考えても、OSの面倒見てくれる範囲じゃないだろ

844 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 19:17:04 ]
大抵のライブラリにはあるだろ

845 名前:デフォルトの名無しさん [2008/02/29(金) 19:58:24 ]
CLISTってのはMFCとかいうのの機能なんでしょ?



846 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 19:59:47 ]
>>842
どの言語?いずれにしてもその言語のスレ行きな、ここはスレ違いだから。

847 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 21:38:35 ]
>>842
Dynamic Pointer Arrayという物がある。
比較的最近のSDKでないと定義されてないけど実はWin95でも使える枯れたAPIだったりする。

848 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:09:33 ]
>>841
WM_MOUSEWHEELでdeltaを好きなようにしたらいかんべ

849 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:16:20 ]
GUI部分と実際の処理部分を別々のソースファイルに書いています。
内部処理のソースファイルで定義した関数から
SetWindowTextでEDITコントロールの内容を変更出来ないんですけど、原因分かりますか?

850 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:16:58 ]
WinAPI難しいなぁ

851 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:21:18 ]
ttp://wisdom.sakura.ne.jp/system/winapi/
テンプレの上記のサイトのメッセージボックス項の
#include <windows.h>

int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance ,
PSTR lpCmdLine , int nCmdShow ) {
CHAR chStr[128];

wsprintf(chStr , "インスタンスハンドル : %d" , hInstance);
MessageBox(NULL , chStr , TEXT("Kitty on your lap") , MB_OK);

return 0;
}
上記のコードを実行しようとすると
error C2664: 'wsprintfW' : 1 番目の引数を 'CHAR [128]' から 'LPWSTR' に変換できません。
error C2664: 'MessageBoxW' : 2 番目の引数を 'CHAR [128]' から 'LPCWSTR' に変換できません。
このようなエラーが出ます
chStrをLPWSTR[128]で宣言してもエラーは相変わらずです。
これはどうすればいんでしょうか?コンパイラはVS2005です

852 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:23:54 ]
>>851
マルチバイト文字セットに変更汁

853 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:29:54 ]
>>851
CHAR→TCHAR

>chStrをLPWSTR[128]で宣言してもエラーは相変わらずです。
ってLPWSTR chStr[128]ってしたってこと?

854 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:36:59 ]
またWISDOMかw

855 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:39:24 ]
>>852
>>853
TCHARにすると
error C2664: 'wsprintfW' : 2 番目の引数を 'const char [26]' から 'LPCWSTR' に変換できません。
こんなエラーが出ます
このエラーからすると第一引数にはchar型が入るように見えるんですが、違う、のかなぁ

>>chStrをLPWSTR[128]で宣言してもエラーは相変わらずです。
>ってLPWSTR chStr[128]ってしたってこと?
です、エラーからしてそういうことかなぁと思いまして



856 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:40:49 ]
>>855
TCHAR chStr[128];
wsprintf(chStr , TEXT("インスタンスハンドル : %d") , hInstance);

857 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:41:54 ]
* UNICODE, ANSI ビルド
* TCHAR, CHAR, WCHAR 型
* TEXT, _T マクロ
この辺についてちゃんと調べるなりドキュメント読んだほうが良いと思う

858 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:48:20 ]
>>855
違うよ。>>852の意味は
[プロジェクト]-[プロパティ]-[構成プロパティ]-[全般]-[文字セット]をマルチ バイト文字セットを使用する
に変更するという意味だよ。

859 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:50:30 ]
error C2664:〜〜〜〜  'A’ から 'B' に変換できません。
※ABは char / wchar_t / LPSTR / LPWSTR / LPCSTR / LPCWSTR など

巷のサンプルコードがこのようなコンパイルエラーを発生させる場合、文字セットが適切ではないです。
開発環境の文字コードの設定をソースにあわせるか、ソースを開発環境の設定にあわせるかしましょう。
方法は各々の開発環境のスレへどうぞ。


この辺の文言がテンプレにあったほうがいいような気がするがお前らはどう思うか

860 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:50:41 ]
>>849
コード見ないとわかんね
ここエスパースレじゃねえし

861 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:52:53 ]
>>860
分からないなら無理に答えていただく必要はありません

862 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:55:44 ]
>>861なりすまし乙
>>860エスパーレスが欲しかったんですけど、ダメですかねえ

863 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:58:31 ]
違うプロセスのウィンドウに SetWindowText を使っているとか

864 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:58:37 ]
無茶言うなw

865 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 23:36:24 ]
>>863
SetWindowText(WM_SETTEXT)は他プロセスでも平気じゃなかったか



866 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 00:04:58 ]
>>865
WM_SETTEXT は大丈夫だけど SetWindowText は駄目

msdn2.microsoft.com/en-us/library/ms633546.aspx
>To set the text of a control in another process,
>send the WM_SETTEXT message directly instead of calling SetWindowText.


867 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 00:15:11 ]
ちょっと占ってみると
HWNDを間違えてる、とでますた。

868 名前:855 mailto:sage [2008/03/01(土) 00:27:56 ]
ありがとうございました、1~10辺り200回くらい読みなおしてきます

869 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 00:47:18 ]
VCってどの辺のバージョンからUnicodeビルドがデフォになってるの?

870 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 00:59:55 ]
2005。Expressロハ化と軌を一にしており
全国の初心者をドツボにハメた。

871 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 01:07:34 ]
なんかしらんが、Unicodeが楽すぎ。マルチバイトで文字区切りなんて悪夢だ。

872 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 01:15:58 ]
>>871
で、油断してるとサロゲートペアとかにはまると。

873 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 01:19:47 ]
UTF16じゃなくて32ならよかったのにな

874 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 01:32:53 ]
まだWin98が現役だというのに・・・

875 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 01:34:54 ]
現役じゃねえよバカ
LANケーブル引っこ抜け



876 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 02:47:15 ]
Windowsフォームアプリケーションでデザイナを使って生成されるコードはMFC?

877 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 02:47:54 ]
開発環境のスレで聞け

878 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 03:17:58 ]
>>870
VS2005インスコして確かめてみたら、マジだ
なんでデフォの動作をころころ変えるかねぇ・・・

つうかメモリ128MBでVS2005が予想以上に重いw

879 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 03:24:58 ]
オレは今どきデフォでMBCSの方が嫌だよ

880 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 04:49:41 ]
>>849ですが解決しました、Win32APIと関係無いところでミスってたようです。
どもでした。

881 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 04:58:54 ]
ktbr

882 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 07:44:23 ]
ころころ動作を変えてねぇだろ。
いままでずっとMBCSだったじゃないか。
というかおれとしては2002か2003の時点で変えてほしかった。

883 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 08:41:54 ]
2005でもコマンドラインからclやnmake叩いてコンパイルすればデフォはMBCSじゃないの?

884 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 08:53:56 ]
プロジェクト作ったときに、デフォルトで/DUNICODE /D_UNICODE
あたりが定義されるだけだからなー。
だから、nmakeについてはMAKEFILEをどうやって作ったかにもよるんじゃね?
あと、環境変数CLとかw

885 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 10:35:16 ]
つーか今時メモリ128MBで開発しようなんて思うほうがどうかしてるよ。



886 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 11:23:20 ]
UNICODE文字が全角幅か半角幅か簡単に調べる方法はありますか?
デバイスコンテキストに固定長フォントセットしてGetTextExtentPoint32()呼び出すしかないでしょうか?


887 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 11:36:01 ]
一部罫線系の記号なんかは、フォントによって
全角半角の扱いがちがったりするし。
UNIXなら、wcwidthでいけるんだけどね。
まー、64Kbit程度のテーブル一回作れば終わるわけだし作れば。

888 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 11:37:29 ]
日本語ターゲットなら、SJISに変換して何バイト取るか調べる手もあるか。
BMP外にあるSJIS表現不能な連中はシラネ。

889 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 11:39:19 ]
>>885
エミュレータだよ

>>886
>>462

890 名前:886 mailto:sage [2008/03/01(土) 13:03:39 ]
>>887-888
ありがとうございます。
記号なんかを含めるとそっちのほうが手っ取り早い気もしますね。

>>889
同じスレ内に答えあったとは・・・
ありがとうございました&すいませんでしたszo


891 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 13:12:53 ]
>>889
エミュレータでしかもメモリ128KBなら、さくさく動くと思う方がおかしい。

892 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 13:52:39 ]
>>891
うむ、たしかにそれは桁違いにおかしいな。

893 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 14:05:19 ]
今時128kのメモリなんて手に入らないだろw

894 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 14:08:47 ]
今時のCPUのキャッシュよりも小さいな。

895 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 14:41:47 ]
64KBのおれのマシンじゃ
このスレのdatすら入らないんだぜ(現在194KB)



896 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 16:43:22 ]
まぁ、基本的に文字が幅をもってるじゃなくてグリフが持ってるんだけどね。


897 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 18:13:11 ]
ZwSetSystemInformationの使い方教えて〜

898 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 18:59:39 ]
>>895
オンメモリ前提なんてここ数年の出来事なんだぜ
もうちょっと前はオンディスクもほぼ不可能で人間様の手と手書きラベルが前提だったんだぜ
もちっとまえはきりが無いので止めとく

899 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 19:00:53 ]
第一引数に動作モードの定数
第二引数に結果を受け取る構造体のポインタ
第三引数の第二引数が示す構造体のサイズ
戻り値はNTSTATUS
構造体と定数は目的によるのでぐぐる

900 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 19:02:57 ]
ASIC内に内蔵されているメモリとかだと、128Kはそれなりに。

901 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 19:30:01 ]
WindowsをスタンバイにするAPIは何でしょうか?

902 名前:デフォルトの名無しさん [2008/03/01(土) 19:38:13 ]
最小化されている任意のウィンドウの通常時のサイズを取得するには
どうすればいいでしょうか?

903 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 20:23:34 ]
GetWindowPlacement

904 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 22:26:34 ]
IShellFolder::ParseDisplayNameの第3引数
MSDNの説明では入力専用のはずなのに、LPCWSTRじゃなくてLPWSTRです。
これは間違いという事でconstな文字列渡してもいいんでしょうか?

905 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 23:54:43 ]
ぜんぜん知らんけど、コンパイラに怒られなかったら大丈夫なんじゃね
コンパイラに怒られたら、渡す以前の問題だわな



906 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 00:14:17 ]
さー?
CreateProcessみたいな例もあるし、
いまのMSDNでconstじゃないなら、一応従っておいたほうがいいんじゃない?

907 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 04:09:43 ]
フォルダを作成すると通知コードはどんなのが来るのでしょうか。

908 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 04:19:46 ]
来ねーよ
自分で待ち構えてないとな

909 名前:907 mailto:sage [2008/03/02(日) 05:01:13 ]
>>908
ありがとうございます。
WM_で探してみたけどたしかにそれらしいものはありませんでした。
調べてみたところ、
RemoveDirectory()、CreateDirectory()はkernel32.dllの関数らしい
のですが、これをフックして、戻り値を調べればわかるような気がしました。
難しそうなので、まだ自分には早そうですね。

910 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 05:05:17 ]
>>907
そのディレクトリを作成したディレクトリをFindFirstChangeNotification()で監視しておけばいい。
どういうパラメータを設定すればいいかは忘れた。

911 名前:907 mailto:sage [2008/03/02(日) 05:23:18 ]
>>910
ありがとうございます。
これは相当使えそうです。

912 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 06:15:29 ]
ファイルやフォルダが作られる度に全ウィンドウへ WM_ なんて投げてたら重くてやってられないだろw

>>911
ReadDirectoryChangesW を使った方がいい

913 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 07:16:31 ]
今回は選ばれない可能性が高いが、選択肢としてSHChangeNotifyRegisterもある

914 名前:907 mailto:sage [2008/03/02(日) 12:07:17 ]
>>912 >>913
ありがとうございます。
ファイルなど個別に調べる場合に使えそうです。

915 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 12:35:32 ]
ダイアログボックスのプロシージャの戻り値って、BOOLかINT_PTRどっちが正解ですか?



916 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 12:37:27 ]
BOOL

917 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 12:40:46 ]
64 ビットのことも考えると INT_PTR じゃないの?

918 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 12:51:00 ]
BOOL=INT_PTRだとばかり思ってたらwindef.hに
typedef int BOOL;
と書いてあって鬱になった俺が通りますよ

919 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 12:55:13 ]
DLGPROC 型の定義を見てみたら?

仕様としては TRUE/FALSE 返すから BOOL なはずではあるけど、
知らない間に仕様拡張されてたら知らん。

920 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 13:18:00 ]
あれってポインタ値以内ならなんでも返せるんじゃなかったっけ?

921 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 13:21:46 ]
>通常、ダイアログボックスプロシージャはメッセージを処理した場合に 0 以外の値(TRUE)を、
>処理しなかった場合に 0(FALSE)を返すべきです。
>ダイアログボックスプロシージャが 0(FALSE)を返した場合、
>ダイアログマネージャはそのメッセージに応答して既定のダイアログ処理を実行します。

>ダイアログボックスプロシージャが、特定の戻り値を必要とするメッセージを処理する場合、
>ダイアログボックスプロシージャは 0 以外の値(TRUE)を返す直前に
>SetWindowLong(hwndDlg, DWL_MSGRESULT, lResult) を呼び出し、
>希望の戻り値を設定するべきです。
>0 以外の値(TRUE)を返す直前に、
>SetWindowLong を呼び出さなければならないことに注意してください。
>それより早く呼び出すと、ネストされたダイアログボックスメッセージが、
>DWL_MSGRESULT の値を上書きする可能性があります。

って書いてあるけど。

922 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 13:42:58 ]
msdn2.microsoft.com/en-us/library/ms645469(VS.85).aspx
MSDNにはINT_PTRと書いてある

923 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 13:46:12 ]
しかし、MSDN はたまに嘘書いてるからなあ。

924 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 13:50:11 ]
例えば?

925 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 14:07:04 ]
GetModulePathName の MAX_PATH 以上のパスを取得する方法が
実は使えないとか?



926 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 14:14:50 ]
>>438

セットアップファイル群の中にそれらしいcabファイルがあるから、
VS2008が入ってない環境だと入るのかもしれない。


927 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 15:02:29 ]
すげー亀レスだな

928 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 15:05:52 ]
最近のSDK
typedef INT_PTR (CALLBACK* DLGPROC)(HWND, UINT, WPARAM, LPARAM);

古いSDK (VC6付属)
typedef BOOL (CALLBACK* DLGPROC)(HWND, UINT, WPARAM, LPARAM);

929 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 15:25:55 ]
仕様変わったのか・・・。
何で INT_PTR にしたんだろう?

930 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 15:31:10 ]
TRUEかFALSEを返すをかえす仕様なんだから、BOOLだったんだろ。
INT_PTRにかえた理由は、64bitコードでは64bitにしたかったんじゃない?

931 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 15:33:23 ]
せめて 32/64 を切り替えるような BOOL 型を導入するべきだと思うんだけどな。

932 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 15:33:35 ]
TRUEFALSEっていうよりはなから0かそれ以外か負の数っていってほしい

933 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 15:34:29 ]
負の数はここでは関係ないと思うが。
GetMessage は別だが。

934 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 17:09:07 ]
GetMessageは未だに使い方間違ってる例を見かけるなぁ

935 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 17:16:56 ]
VS 2008 EE の 「Windows アプリケーション」のテンプレートでも
>while (GetMessage(&msg, NULL, 0, 0))
吐き出すんだけど



936 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 17:30:22 ]
GetMessageって-1とかちゃんと見てないとアチョーなんだっけ?

937 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 17:31:30 ]
実はエラーなんて返さないのかもしれない・・・。

938 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 18:09:39 ]
いまだにIEとかメモリ無くなるギリギリまで
複数インスタンス立ち上げると
リソースがボロボロ欠けたウィンドウが開いて
そのうち黙り込んで応答もしなくなって
システム全体再起動しないといけなくなるのは
IEの中のひとがメモリ確保時にエラーチェック
してないからだと思うんだけどどう?


939 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 18:21:27 ]
100個近くWin95時代のブラクラ状態でIE立ち上げてもヌルヌルにはなるけどシステム落とすまでは逝かないぜ?
環境になんかヘンなもん突っ込んでるんじゃねーの?

940 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 18:36:41 ]
デスクトップヒープの枯渇じゃないの。

941 名前:デフォルトの名無しさん [2008/03/02(日) 18:42:50 ]
ここで質問させてください。
とりあえずC言語の基本を学んだので、ゲーム作りをしてみたいと思った
のですが、Win32APIで1からゲーム作りをするのは効率が悪いのでしょうか?
DirectXから学んだ方がいいのでしょうか?

942 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 18:45:42 ]
どっちでもいいんじゃない

943 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 18:47:52 ]
DirectX自体は、DXライブラリっての使えば簡単に扱えるよ。
ゲーム作りの本質と関係ないところは、既存のライブラリを利用するので充分。

俺に言わせて貰えば、ゲームみたいなシビアというか、ちょっと変わった処理が多いような場合は、
WinAPI直接叩く方が、やりたいことが直にやれるし、ベンキョにもなっていいと思う。


944 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 18:49:31 ]
ある程度頑張ったら、
自分で全部やってみるのも勉強になると思う。

945 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 18:51:55 ]
C++をやりながら、DirectX9か10をやるといい。
C++は使えないと困ることになる。



946 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 18:52:29 ]
C で DirectX 使うのは面倒いからな。

947 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 19:00:37 ]
C#のほうがいいと思う

948 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 19:01:20 ]
折角高速さを追求してるのに
C++ 使わないのはもったいなさ過ぎる。

949 名前:デフォルトの名無しさん [2008/03/02(日) 19:06:08 ]
レスありがとうございます。

C++は現在勉強中です。APIでもいろいろ出来そうなのでこれも並行して
勉強しようと思います。

それと最後に、Win32APIでは、PS2レベルの滑らかな3D描写は出来ないのでしょうか?

950 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 19:10:15 ]
そもそも Win32API には 3D 描画機能が用意されてないから
全部ソフト的に対処する必要があるぜ。
要するに 3D 描画エンジンを自作するという。
しかもハードウェアの助けが得られないから遅い。

まあ、DirectX を通さずにグラフィックボードを直接操作するんなら話は別だが、
あまり意味がないよね。

951 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 19:12:47 ]
これを見て勉強しる!
www.geocities.jp/higuchuu4/index.htm

952 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 19:16:00 ]
>>950
OpenGLがあるじゃないか
微妙な所だがChoosePixelFormatなんかはgdi32にあるからWin32APIということにする

953 名前:デフォルトの名無しさん [2008/03/02(日) 19:29:29 ]
DIRECTXはマニアがやってたハードを解析して最大限の性能を引き出す
というのをMSが肩代わりしてくれる仕組みだ
winAPIでは3Dは無理

954 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 19:45:52 ]
こんなのもあるよ
DarkGDK
www.microsoft.com/express/samples/GameCreators/

955 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 19:59:43 ]
>>953
全角厨キモイ



956 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 20:02:36 ]
全角だけでなく、大文字小文字も無茶苦茶。
3 は半角で D が全角だったりも。

957 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 20:59:59 ]
少し話題に上ったので GetMessage() の戻り値の話をさせてください。
どうやら GetMessage() で -1 が返るのは、引数が無効な値の場合に
限られるようです。つまり msg を MSG 構造体とすると、
(A) GetMessage(&msg, hWnd, 0, 0);
(B) GetMessage(&msg, NULL, 0, 0);
(A) では -1 かどうかのチェックをした方がいいですが、(B) のような
より一般的なケースではチェックは不要ということになります。
なお、MSDN に載っているのも (A) に対する警告と思われます。

958 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 21:01:04 ]
なるほど。

959 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 00:30:44 ]
でもそれはFor exampleとして載っているだけであって
それ以外ないとは書かれていないわけで

960 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 01:15:16 ]
>>957
参考になったが

>>959
という意見もあるし結局どっちなんだろう



961 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 01:24:28 ]
俺は心配性だから常に-1が返ってくる可能性があると思っている。

962 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 01:27:35 ]
そもそも"handle the error and possibly exit"って具体的にどうすればいいのやら・・・

問答無用でbreakするようなコードだとWM_DESTROYを通さないから色々リークするだろうし、
WTLはcontinueしてるけど、毎回-1が返ってくるような状況だとループから抜け出せないし

正直-1の場合は無視でいいとオモタ

963 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 01:31:29 ]
リークとか気にしないでreturnしています。

964 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 01:35:23 ]
とりあえずGetLastError()だけどっかに吐いてから即死します。

965 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 12:59:40 ]
なんで誰も>>915>>932の件の正解を書かない?
一例として、WM_CTLCOLOR*** は「HBRUSHを直接返さなければならない」(DWL_MSGRESULTは禁止)
だから64bitはINT_PTRじゃなきゃまずいんだよ。
HBRUSHの中身が64bitになる実装は存在しないとかいうのは無しね。

If the dialog box procedure processes a message that requires a
specific return value, the dialog box procedure should set the
desired return value by calling
SetWindowLong(hwndDlg, DWL_MSGRESULT, lResult) immediately before
returning TRUE. Note that you must call SetWindowLong immediately
before returning TRUE; doing so earlier may result in the
DWL_MSGRESULT value being overwritten by a nested dialog box
message.
The following messages are exceptions to the general rules stated
above. Consult the documentation for the specific message for
details on the semantics of the return value.

WM_CHARTOITEM
WM_COMPAREITEM
WM_CTLCOLORBTN
WM_CTLCOLORDLG
WM_CTLCOLOREDIT
WM_CTLCOLORLISTBOX
WM_CTLCOLORSCROLLBAR
WM_CTLCOLORSTATIC
WM_INITDIALOG
WM_QUERYDRAGICON
WM_VKEYTOITEM



966 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 13:28:18 ]
だったら BOOL を INT_PTR にするという選択肢もあったはずでは
わざわざ 64-bit 対応の為に関数宣言を書き換える必要があるなんて馬鹿げている

967 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 13:36:16 ]
大量に使われているBOOL(ほとんどは1ビットで足りる用途)を根こそぎ64bitにしたらそれこそ無駄だろうに

968 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 13:49:14 ]
ダイアログプロシージャと違って、こっちが実装する関数ではないけれど、
VirtualAllocとかにも、大きさを指定する引数(今はSIZE_T)が
以前はDWORDだったとか似たような事例は他にもあるな。

969 名前:デフォルトの名無しさん [2008/03/03(月) 14:00:34 ]
猫でものページの第123章 メモリマップト・ファイルのソースをコピペして
実行したんですが「ファイルマッピングのオープン失敗」のメッセージが出て
最後まで実行できませんでした。どこが悪いのでしょうか教えてください。
ソースのページは
www.kumei.ne.jp/c_lang/sdk2/sdk_123.htm
でコピペして実行したcppファイルもあげときます
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6115.txt
すいませんが教えてください


970 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 14:04:35 ]
IDM_READ呼ぶ前にIDM_WRITE呼んでるのか?

971 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 14:53:13 ]
>>967
つ bool / BOOLEAN

972 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 15:05:23 ]
>>971
APIが使ってるBOOL書き換えてどうするんだよw

973 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 15:16:02 ]
>>972
何が言いたいのかよく分からん

そもそも引数や返値を int 型からポインタ型 (INT_PTR) に置き換えても何ら無駄にはならない

974 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 15:47:44 ]
しいて言えばスタック使用量倍増?

975 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 16:00:23 ]
戻り値はレジスタだろうからスタックは使わないんじゃない?



976 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 16:10:57 ]
引数もWin x64 ABIではスタックアクセスは64bit単位じゃなかったっけ?
何れにしろREXプレフィックスでコードサイズは変わるかも

977 名前:デフォルトの名無しさん [2008/03/03(月) 16:48:39 ]
Win32 API のヘルプとか網羅的なマニュアルなど、入手先はどこですか …

978 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 16:51:15 ]
>>977
>>1-2にもリンクがあるMSDNライブラリがそれ。

979 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 17:27:32 ]
>>975
それを変数に格納するってことじゃない?

980 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 18:39:39 ]
リソースのアイコンのバイナリを読み込んでchar[]型の配列に代入するにはどうすれば良いですか?

981 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 19:42:46 ]
LockResourceとかかな

982 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 22:33:40 ]
MENUITEMINFO mii;
ZeroMemory(&mii,sizeof(mii));
mii.cbSize=sizeof(MENUITEMINFO);
mii.fMask=MIIM_FTYPE;
mii.dwTypeData=L"ファイル";

HMENU menu=::CreateMenu();
::InsertMenuItem(menu,0,0,&mii);
::DrawMenuBar(hwnd);

ちゃんとウィンドウ表示してからこれしたらメニュー表示されない・・・なんで?

983 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 22:35:02 ]
SetMenuは?

984 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 23:36:08 ]
ベジエ曲線で囲んだ内部を塗りつぶしたいのですが無理ですか?
教えてくだちい><

985 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 23:42:30 ]
囲まれた図形の内部の座標に対してExtFloodFill








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

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

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