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


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

Win32API質問箱 Build82



1 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 18:56:13 ]
1 名前:デフォルトの名無しさん[] 投稿日:2009/08/02(日) 00:20:49
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。
「知らないならレスしないで下さい。ウザイだけです。 」なんて言わないでねっ!

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

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

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

Win32API質問箱 Build81
pc12.2ch.net/test/read.cgi/tech/1249140049/l50


45 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 09:11:49 ]
これって、64bitだとLPARAMは0xffffffffffffffff/0x00000000ffffffffどっちになるの?

後者だと
case WM_CONTEXTMENU:
 if(lParam==-1)
 ...
みたいなコードは破綻するけど。

46 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 12:37:49 ]
てか、32bitだと上位/下位ワードで分割して使うのが普通なのだが。
64bitも同じように分割(上位下位Dワード?下位Dワードからワード分割?)してから
比較するのが当然。

で、実際64bitはWM_CONTEXTMENUの場合どうしてるの?

47 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 12:40:23 ]
>>46
馬鹿は黙ってろ

48 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 12:57:40 ]
>>46
オマエ頭悪いな

49 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 14:51:43 ]
LOWORD
HIWORD
LODWORD
HIDWORD

50 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 15:32:28 ]
LOQWORD
HIQWORD
LOOWORD
HIOWORD

51 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 15:33:42 ]
いい加減にしろくそが

52 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 16:46:34 ]
結局、64bitでのLPARAMの値を答えられるやつは居ないって事か

53 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 16:59:10 ]
答えられるやつは居ないって事か(キリッ)
      ↓
早く答え教えてください



54 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 17:32:04 ]
int64_tでF/A

55 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 17:33:28 ]
__int64 はだめなの?

56 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 17:59:07 ]
>>45
そんなやつは、(long)lParam == -1でいいよ。

>>46
MSDNライブラリにはGET_X_LPARAM/GET_Y_LPARAMで座標を取得しろと書いてある。
こいつ使っておけば、64ビットでもうまくいくさ。
msdn.microsoft.com/en-us/library/ms647592.aspx

57 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 21:05:45 ]
>>56
そうじゃない
論点は64bitでLPARAMの値がどうなのかという事だ
つーか、64bitで開発してる奴このスレにいないのか?

58 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 21:32:29 ]
どうなのと言われてもintptr_t(=__int64)じゃねぇの

59 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 21:38:04 ]
>>58
>>45に対する答えはどっちだということでは?
ま、GET_X_LPARAM/GET_Y_LPARAMを使ってればどっちでもいいんだけどな。

60 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 21:43:55 ]
普通に考えて
0x00000000ffffffff
はないだろと思うけど俺64bitマシン持ってないからわかんね

64bitプログラムのスレとか無かったっけ

61 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 21:47:07 ]
64 はスレ違い。

62 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 21:59:35 ]
>>57
64bit上でSpy++して確かめたら、0x00000000ffffffffだったぞ。

63 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 22:11:58 ]
x64版Windows7だと0xFFFFFFFFFFFFFFFFが入るな。
互換性を考えれば、まあ当然の選択だろう。
だからといって、上位32bitが何の保証も無い事実は変わらないだろうけど。



64 名前:63 mailto:sage [2009/09/27(日) 22:25:32 ]
メモ帳でShift+F10を押して試したのだが……
もしかしてOSで違う?

65 名前:62 mailto:sage [2009/09/27(日) 22:34:01 ]
>>64
俺はWindows Server R2で、やはりメモ帳にて試した。
Shift-F10とAPPキーの両方ともにやってみたが同じだった。

66 名前:62 mailto:sage [2009/09/27(日) 22:35:31 ]
Windows Server 2008 R2だった、すまん。

67 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 23:08:30 ]
>>62
Spy++って32bitじゃないの?
64bit版なんてあったか?

68 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 23:11:49 ]
あるよ。

69 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 23:19:08 ]
VS2005には無いな。

70 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 00:03:24 ]
>>47,48
理解できない単語が出てきたらググれ

>>56
そんなマクロがあったのか、thx

>>57
マクロの定義を見れば分かると思うが。
と思って自分のの環境見たけど32bit版しかないな。
やっぱり64bit開発環境がないと分からんのか。

71 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 00:19:27 ]
>>70
インポートライブラリは違うけど、ヘッダはx86/x64で共通だよ。
で、コンパイルされる際には_WIN32に加えて_WIN64も定義される。

72 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 00:20:05 ]
>>70
理解できてないのはお前だよ

73 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 00:26:04 ]
>>70
0xffffffffffffffff か 0x00000000ffffffff かは64bit環境で確かめないと分からんだろが

マクロの定義を見れば分かるとか頓珍漢にも程がある。



74 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 00:33:02 ]
>>70
たとえ理解してるつもりでもググれ

75 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 00:40:36 ]
マクロの定義を見れば分かるのでググれません。

76 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 01:30:50 ]
Windows7とServer2008R2で違うのは興味深いな。
元々の実装に、互換性向上を狙って上位32bitにもあえて拡張したのがWin7ってところか。

77 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 12:58:50 ]
>>76
多分バグ

78 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 13:10:47 ]
>>77
多分違う

79 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 14:12:57 ]
いやバグだろ。
まだSP0だからその程度のバグが残っていても不思議ではない。

80 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 14:28:14 ]
VS6のころのドキュメントだとCreateFileMappingに(HANDLE)0xFFFFFFFFを渡すように書いてあったりするし

81 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 16:47:35 ]
XP/Server2003/Vistaのx64で試した人は居ないのか。

82 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 17:04:22 ]
何を?

83 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 17:12:10 ]
結論:.NETを使えば32bit/64bitで困らない



84 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 17:28:50 ]
そう思っていた時期が私にもありました

85 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 18:36:05 ]
OSによって上位32bitが違うとかアホすぎるだろ・・・
てか、モニターが高解像度化して16bitに収まらなくなったらどうするつもりなのだろう。

86 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 18:43:17 ]
>>73
まともな実装なら関係のないbitにはデータは入れないと思うが。
まあ何だかんだ言っても、実際にspy++で確認した>>62,63辺りが正解か。

87 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 20:08:16 ]
>>86
馬鹿はレスしなくていいよ

88 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 20:12:05 ]
>>87
馬鹿はレスしなくていいよ

89 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 20:13:13 ]
>>70
>>86
>>88

悔しそうだな。

90 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 20:18:12 ]
そもそも64bit環境持ってる人に実際に確認してほしいという質問だったから。
確認した奴が正解つうより、確認してなくてマクロの定義うんぬん言ってる奴が馬鹿なだけ。

91 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 22:26:11 ]
>>89
馬鹿はレスしなくていいよ

92 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 23:16:18 ]
>>90
馬鹿はレスしなくていいよ

93 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 23:26:55 ]
馬鹿はレスしたくなるのです



94 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 23:39:55 ]
>>46=>>70=>>86=馬鹿

95 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 23:44:42 ]
馬鹿はお前だよ。マクロの定義を見れば分かる。

96 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 23:48:11 ]
>>95
馬鹿はレスしなくていいよ

97 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 01:15:50 ]
また目覚ましか?
荒らしてる暇があるならさっさと目覚ましと時計をうpしろよ。

98 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 09:20:02 ]
マクロの定義を見て分かるのは上位32bitの値は無視するべきことだけ

99 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 12:17:08 ]
つまり上位32bitには何が入ってるのかは不定だから、
それに依存したコードを書くのは馬鹿、で終わり

100 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 12:19:18 ]
まだやってんのかよレヴェルの低いスレだな

101 名前:片山博文MZ ◆BVYGEn4LD2 [2009/09/29(火) 13:03:24 ]
今、CellSheetという、DataGridView風のGUIを作っている。
www1.axfc.net/uploader/Sc/so/40866.zip

感想をよろしく。

102 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 13:12:22 ]
つってもなあ
lParamを-1と比較するコードはMSだって書いてるんだがw

103 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 13:14:03 ]
で?



104 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 13:15:55 ]
MSが書いてるので全く問題無いということだ

105 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 13:22:25 ]
問題が出たからWindows7で対策したんだろうな

106 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 13:25:07 ]
ま、既存のコードをx64コンパイラでリビルドしただけで何の問題も無く正常に動くなんて有り得ないからな。
MSでさえLPARAMをLONGにキャストするコードとか平気で書いてるので気にしなくていい。

107 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 13:31:39 ]
7とServer2008R2で違うなんておかしくないか?
同じカーネルだろ。

>>62>>63どっちかが間違ってるor何らかの外的要因があると考えた方が自然。

108 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 21:17:36 ]
GetSystemInfo()で得られるSYSTEM_INFOの内容についての質問です。

GetSystemInfo()を実行したプロセス内でユーザーモードでアクセスできる資源は
lpMinimumApplicationAddress 〜 lpMaximumApplicationAddress の間に
コード、ヒープ、スタック、API関数のエントリポイントなど、
すべてあると考えていいんでしょうか?

なんらかのAPI関数のエントリポイントがその範囲外にあるなんて可能性は
ありませんかね?

109 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 21:45:40 ]
9xだとほとんどのAPIが範囲外にある。

110 名前:デフォルトの名無しさん mailto:sage [2009/09/30(水) 00:31:32 ]
ファイルの先頭に追記する方法ありませんか?
ファイルにindex + データ の様に記録したいのですが。
indexは最後にならないと決定できません。データは1Gとかあるとします。

111 名前:デフォルトの名無しさん mailto:sage [2009/09/30(水) 00:48:22 ]
スレ違い

112 名前:デフォルトの名無しさん mailto:sage [2009/09/30(水) 00:49:17 ]
>>110
fseek(fp, 0L, SEEK_SET);
みたいなのを使う

113 名前:デフォルトの名無しさん mailto:sage [2009/09/30(水) 00:52:32 ]
>>110
先頭にデータを挿入するには、ファイル全体を書き直す必要がある。
固定長のデータを書き換えるだけなら、普通に書き換えるだけ。



114 名前:片山博文MZ ◆BVYGEn4LD2 [2009/09/30(水) 13:34:17 ]
CellSheetがここまでできた。
www1.axfc.net/uploader/Sc/so/41213.zip
感想をよろ

115 名前:デフォルトの名無しさん mailto:sage [2009/09/30(水) 16:33:04 ]
>>110
ファイルシステムを直接弄れば可能。

116 名前:デフォルトの名無しさん [2009/09/30(水) 17:14:15 ]
きえろぶっとばされんうちにな

117 名前:デフォルトの名無しさん [2009/09/30(水) 17:19:57 ]
きえろぶっとばされんうちにな(笑)

118 名前:デフォルトの名無しさん [2009/09/30(水) 17:22:08 ]
きえろぶっとばされんうちにな(涙)

119 名前:デフォルトの名無しさん mailto:sage [2009/09/30(水) 17:27:10 ]
(悲)

120 名前:デフォルトの名無しさん [2009/09/30(水) 17:46:12 ]
きえろぶっとばされんうちにな(´・ω・`)

121 名前:デフォルトの名無しさん mailto:sage [2009/09/30(水) 18:13:56 ]
きえろぶっとばされんうちにな(hWnd, Msg, wParam, lParam);

122 名前:デフォルトの名無しさん mailto:sage [2009/09/30(水) 20:22:02 ]
>>121
ちげえだろ!!!

(*きえろぶっとばされんうちにな)(hWnd, Msg, wParam, lParam);

123 名前:デフォルトの名無しさん mailto:sage [2009/09/30(水) 21:23:14 ]
PostThreadMessage(GetCurrentThreadId(), きえろぶっとばされんうちにな, 0, 0);



124 名前:デフォルトの名無しさん mailto:sage [2009/09/30(水) 21:57:05 ]
トランジスタ技術のムック
パソコンのコモンセンスってのが出てたのでてたので読んだ
(最後の三章くらい)

GDIとかAPIとか
自作のテキストボックスってどうやってつくるのとかつか作れるのかとか
コンソールアプリのチュートリアルからWin32に入門したばかりの
自分みたいな人間には有用だった

感動したので報告しとく

125 名前:デフォルトの名無しさん mailto:sage [2009/09/30(水) 22:45:08 ]
> 出てたのでてたので
> つくるのとかつか作れるのかとか

なんで文章にエコーかかってるんだよ

126 名前:デフォルトの名無しさん mailto:sage [2009/09/30(水) 23:06:21 ]
エコーw

127 名前:デフォルトの名無しさん mailto:sage [2009/09/30(水) 23:21:32 ]
>>110
可能ならデータファイルとindexファイルに分ける。

128 名前:デフォルトの名無しさん mailto:sage [2009/09/30(水) 23:32:35 ]
>>110
不可能なら諦める。

129 名前:デフォルトの名無しさん mailto:sage [2009/09/30(水) 23:42:46 ]
>>110
俺ならこうする、という話でいくと、
SQLiteのDBを一時ファイルにして作業を行い、
ファイルへの書き出しは最後にまとめてやる。

130 名前:デフォルトの名無しさん mailto:sage [2009/09/30(水) 23:48:53 ]
教えてください

ja.wikipedia.org/wiki/%E3%82%AF%E3%83%AA%E3%83%86%E3%82%A3%E3%82%AB%E3%83%AB%E3%82%BB%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3
↑のクリティカルセクションのwikiにて
「クリティカルセクションの排他制御ではデッドロックに注意する必要がある。」

と記述されているのですが、クリティカルセクションの排他は
具体的にどういった処理を行っていてどういうことをやっているから
こういう状況になりデッドロックが生じるのでしょうか?

131 名前:デフォルトの名無しさん mailto:sage [2009/10/01(木) 00:03:55 ]
リソースA,B,、それらに対応させているクリティカルセクションA,Bがある。2つのスレッドが動いているとして、

1. スレッド1がAに対して操作を行うために、クリティカルセクションAに入る
2. スレッド2がBに対して操作を行うために、クリティカルセクションBに入る
3. スレッド1がBに対して操作を行うために、クリティカルセクションAに入ろうとして、デッドロック

132 名前:デフォルトの名無しさん mailto:sage [2009/10/01(木) 00:03:57 ]
>>130
クリティカルセクションに限らず2つ以上のリソースをロックする処理は
それぞれのリソースをロックする順番が逆のスレッドと競合すると
どちらも相手の解放待ちになってデッドロックが生じる。

133 名前:131 mailto:sage [2009/10/01(木) 00:04:35 ]
3のところ、クリティカルセクションAじゃなくてBね



134 名前:131 mailto:sage [2009/10/01(木) 00:07:51 ]
4. スレッド2がAに対して操作を行うために、クリティカルセクションAに入ろうとして、デッドロック

だorz 3の段階じゃまだロックされないね

135 名前:デフォルトの名無しさん mailto:sage [2009/10/01(木) 00:11:33 ]
GDGD

136 名前:130 mailto:sage [2009/10/01(木) 00:18:22 ]
>>131-134
ありがとうございます

自分的には別スレッド同士が同時に一つのクリティカルセクションに
入ろうとして稀にデッドロックに陥る可能性があるのかと思っていたのですが、
そういうことなのですね。

137 名前:デフォルトの名無しさん mailto:sage [2009/10/01(木) 01:00:03 ]
そういえばクリティカルセクションってロックした順番に起きないのだったな

138 名前:デフォルトの名無しさん [2009/10/01(木) 16:07:17 ]
きえろぶっとばされんうちにな

139 名前:デフォルトの名無しさん [2009/10/01(木) 16:33:36 ]
きえろぶっとばされんうちにな(笑)

140 名前:デフォルトの名無しさん mailto:sage [2009/10/01(木) 18:01:31 ]
きさっれえうちろにとんばぶな

141 名前:デフォルトの名無しさん [2009/10/01(木) 18:16:24 ]
きえろぶっとばされんうちにな(完)

142 名前:デフォルトの名無しさん [2009/10/01(木) 18:18:50 ]
きえろぶっとばされんうちになEx

143 名前:デフォルトの名無しさん mailto:sage [2009/10/01(木) 18:32:00 ]
きえろぶっとばされんうちにな32



144 名前:デフォルトの名無しさん [2009/10/01(木) 18:34:49 ]
きえろぶっとばされんうちにな.cbSize = sizeof(きえろぶっとばされんうちにな);

145 名前:デフォルトの名無しさん [2009/10/01(木) 18:39:35 ]
きえろぶっとばされんうちにな(NULL)






[ 続きを読む ] / [ 携帯版 ]

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

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