Win32API質問箱 Build ..
[2ch|▼Menu]
49:デフォルトの名無しさん
09/02/28 17:32:50
>>40-41
サンクス
RT_TOOLBAR の定義 MAKEINTRESOURCE(241)
この241を他の値に変えたらツールバーが出てこない。
これって何を表してんの?

50:デフォルトの名無しさん
09/02/28 17:35:12
>>49
MSの中の人が241はツールバーだと決めたというだけのこと。

51:デフォルトの名無しさん
09/02/28 17:47:36
>>48
はじめてのクリティカルセクションで緊張しまくり
どうしよう....

52:デフォルトの名無しさん
09/02/28 17:57:02
スピンロックカウントを数えていれば終わるさ

53:デフォルトの名無しさん
09/02/28 18:48:34
>>35, 37
追記。
WM_TIMERとWM_PAINTはキュー経由のメッセージのフリをしているだけで、
内部ではフラグだと考えて良い。

54:デフォルトの名無しさん
09/02/28 18:54:42
その辺はAdvanced Windowsに書いてあるな。

55:デフォルトの名無しさん
09/02/28 20:57:13
俺のAdvanced Windowsには載ってないな@5版
削られたのかな

56:デフォルトの名無しさん
09/02/28 21:35:17
>>55
事実じゃないから、削られたのか

57:デフォルトの名無しさん
09/02/28 22:02:56
本当にないな。4版の第6部 ウィンドウシステム相当の部分が見当たらない。

4版目次
URLリンク(ascii.asciimw.jp)
5版上目次
URLリンク(ec.nikkeibp.co.jp)
5版下目次
URLリンク(ec.nikkeibp.co.jp)

58:デフォルトの名無しさん
09/03/01 02:56:08
>>46, >>48
わかりました。やってみます。どうもありがとうございました。
ちなみに宿題ではない。

59:デフォルトの名無しさん
09/03/01 10:51:36
ちなみに宿題ではない。仕事だ。

60:デフォルトの名無しさん
09/03/01 10:55:44
D:デバイス
D:どくりつしてない
B:ビットマップ

D:デバイス
I:いぞんしてない
B:ビットマップ

でいいじゃん

61:45
09/03/01 11:04:13
どうやらWinInetはSJISしかサポートしてないようですねorz
あきらめてJavaでやります。

62:デフォルトの名無しさん
09/03/01 12:30:50
>61
FtpPutFileWとかUnicdode版の関数はあるようだけど、それでも駄目ってこと?
URLリンク(msdn.microsoft.com)(VS.85).aspx

63:デフォルトの名無しさん
09/03/01 14:00:18
Unicdode版

64:デフォルトの名無しさん
09/03/01 14:52:19
クリアしたら画像を保存(壁紙とか)
みたいなソフトっていっぱいあるけど、あれはどうやってるんですか?
考えついたのは、バイナリデータをソースにあらかじめ組み込んでおいて
クリアしたらそれを、書き出すというモノなんですが文字化けが酷くて実用は出来なそうでした

もし、分かるかたいたら教えてください
画像のフォーマットはpngかbmpを考えています

65:デフォルトの名無しさん
09/03/01 14:56:31
bitbltではだめなのか?

66:デフォルトの名無しさん
09/03/01 15:00:59
dcにgetdibitsして書き出す

67:デフォルトの名無しさん
09/03/01 15:12:10
リソースに埋め込んでおけばいいのではないの?

68:デフォルトの名無しさん
09/03/01 15:26:54
ゲームのご褒美なら、簡単に抜き出せていいかどうかの判断もいるんじゃないか?

69:デフォルトの名無しさん
09/03/01 15:28:35
そういうのはとりあえず目的が達成できてから考えるようにしろ

70:デフォルトの名無しさん
09/03/01 15:37:00
>>68を見るまで>>64が何を言っているのかわからなかった

71:デフォルトの名無しさん
09/03/01 15:54:14
>>70
日本語を勉強しましょう。

72:デフォルトの名無しさん
09/03/01 15:59:40
> クリアしたら画像を保存(壁紙とか) みたいなソフトっていっぱいあるけど、

・クリアって何を?
・画像って何の画像を?
 壁紙を保存ってどういうこと?

いっぱい省略されてるからわからないだけ。
それを補完できるのは >>71 が単にそういうものを知ってるだけのことで、
日本語の勉強とは関係ないよ。

73:デフォルトの名無しさん
09/03/01 16:04:05
>>72
マジキチ

74:デフォルトの名無しさん
09/03/01 16:05:08
>>72
キモイよ

75:デフォルトの名無しさん
09/03/01 16:05:15
Win32APIスレだからクリアという単語がゲームの事だと気が付くのに時間かかったぞ。

76:デフォルトの名無しさん
09/03/01 16:05:48
OSバージョンかわるごとに挙動ころころ変わるAPIってなんかあったっけ?
スレリンク(win板:827-番)
827 名前:名無し~3.EXE[sage] 投稿日:2009/03/01(日) 14:26:02 ID:y4EldHyY
>823
APIの動作がころころ変わるってことだ。
だから、あるバージョンのみの走行だけ見てアプリ書くと、他のバージョンでうまくいかないことがあるみたい。
これを不安定と言わずなんというのか。

833 名前:名無し~3.EXE[sage] 投稿日:2009/03/01(日) 15:16:43 ID:NnvMw1HI
>>827
どのAPIさ?

834 名前:名無し~3.EXE[sage] 投稿日:2009/03/01(日) 15:26:33 ID:y4EldHyY
>>833こいつも馬鹿だなw
言わずと知れたWinAPI。
COMとかDCOMもどうなってんの。

77:デフォルトの名無しさん
09/03/01 16:09:38
クリア=消去とすると「消去したら画像を保存」なんて意味不明
他にPC上でクリアする物といえばゲームと考えるのが妥当だろ

78:デフォルトの名無しさん
09/03/01 16:26:59
>>76
APIの定義にもよるだろうけれど、コモンコントロール系の文字なのかバイトなのかなどは
額に#マークが浮かぶ代表例じゃないだろうか。
誰もが一度は通る道。

79:デフォルトの名無しさん
09/03/01 16:30:41
>>77
釣りならウザイだけです。 お帰りください。

本気で言ってるならウザイだけです。 お帰りください。


80:デフォルトの名無しさん
09/03/01 16:34:48
>>78
そんなんじゃなくてただの馬鹿
850 名前:名無し~3.EXE[sage] 投稿日:2009/03/01(日) 16:08:40 ID:y4EldHyY
IMEで変換中に投稿になってしまった。 前項棄却改めて投稿する。
>>844
> なら何で答えられないのさ
> >>827みたいなこと書いてるって事は
> まさかMSDN読まずに適当に組んでおいて動かないなんて言ってないだろうな
開発は止めたと言っているだろう。 それは古いことだ。
そして、その態度を維持する方向で進んで来た。
まあ、そんなながてAPIのころころかわる痛手は風の便りに聞こえ来た、ということでいいんじゃないの。

855 名前:名無し~3.EXE[sage] 投稿日:2009/03/01(日) 16:13:31 ID:y4EldHyY
>>854
> >>850
> よくないから
> 教えてよ
やだ、MSに聞け。お宅の弱点はなんですかと。

856 名前:名無し~3.EXE[sage] 投稿日:2009/03/01(日) 16:15:51 ID:+8xe5/d/
そんなAPIないから答えられないんですねわかります

863 名前:名無し~3.EXE[sage] 投稿日:2009/03/01(日) 16:27:38 ID:y4EldHyY
答えないから。答えに相当するものがないなんて馬鹿でも思わないんだけど、
>>856ときたら、盲目的なMSの追従者だことw
窓餌とは、Windowsに関するキーワード。
窓蜜とは、Windowsに関するインタレスト。
窓餌を探し、新しい風評をおこすものを窓魚という。
窓蜜を求めて徘徊するものを窓虫という。
それを大きく包む範疇を窓厨という。
いずれをお望みやw

81:デフォルトの名無しさん
09/03/01 16:39:05
>>76
ころころって訳じゃないけどKB418138とか。大きなお世話って感じ。

笑ったのが、XP初期の頃の要らんソフトてんこもりメーカー製パソコン
付属ソフトなのに稀にアイコンの登録に失敗するのがあった

82:デフォルトの名無しさん
09/03/01 16:53:13
OSのバージョンが変わるたびに挙動がころころ変わるAPIなんてないだろう…
NT3.5->4.0とか9x->2000で挙動が変わったくらいか?

83:デフォルトの名無しさん
09/03/01 17:08:50
彼は非公開APIの事を言いたいのでしょうw

84:デフォルトの名無しさん
09/03/01 17:13:33
reserved だった引数が変わったりしてる
あとIEバージョンによってサポートされるAPIが変わってる
IE3.x -> 4.x なんかは随分違う

85:デフォルトの名無しさん
09/03/01 17:14:35
creat が create になったんですね。わかります。

86:デフォルトの名無しさん
09/03/01 17:15:02
>>84
いや、どう見てもそんな話じゃないでしょ

87:デフォルトの名無しさん
09/03/01 17:17:33
MS に文句いう奴の9割は、自分のコードに問題がある(俺調べ

88:デフォルトの名無しさん
09/03/01 17:18:10
>>85
いや、どう見てもそんな話じゃないでしょ

89:デフォルトの名無しさん
09/03/01 17:18:52
>>82
ころころはともかくOS毎に動作が違うAPIは結構あるよ。
>>78もそうだし、スペースを与えたときのGetGlyphOutline()の戻り値とかも
はまることが多いんじゃないかな。

90:デフォルトの名無しさん
09/03/01 17:32:16
>>87
そもそもy4EldHyYはコード書いたことあるかすら怪しい

91:デフォルトの名無しさん
09/03/01 17:56:25
9x/NTで動作が違ってても仕方ないと思うけど2000/XPで違うとかは勘弁してほしいな

92:デフォルトの名無しさん
09/03/01 18:00:31
コードを書いたことがあるかどうかはこの際どうでもいい。
OSのバージョンで挙動がころころ変わるのは問題だと言っているのだ。

93:デフォルトの名無しさん
09/03/01 18:02:04
どのAPI?

94:デフォルトの名無しさん
09/03/01 18:02:43
GetModuleFileNameとか?

95:デフォルトの名無しさん
09/03/01 18:06:00
GetVersion(Ex)だろ

返ってくるデータがころころ変わりすぎ
ほんと迷惑なAPIだよ・・・

96:デフォルトの名無しさん
09/03/01 18:06:14
ロングファイル名対応以外になんか変化あったっけ?
UNC表記?

97:デフォルトの名無しさん
09/03/01 18:06:44
>>95
ワロタw

98:デフォルトの名無しさん
09/03/01 18:07:04
GetModule〜は95/98と2k/XPとそれ以降で違うんだっけ

99:デフォルトの名無しさん
09/03/01 18:09:08
Windowsほど互換性に気を遣っているOSは少ないと思うけどなぁ

100:デフォルトの名無しさん
09/03/01 18:10:53
GDIも9xだけ制限が厳しいことがよくある。
GetTextExtentPoint32での文字数は8192字(バイト)以内
CreatePenで2ポイント以上は実線しか作れない
パスで使用可能な描画関数が少ない

101:デフォルトの名無しさん
09/03/01 18:10:55
>>99
お前の感想はどうでもいい

102:デフォルトの名無しさん
09/03/01 18:11:45
まあ他OSがどうしているのかは興味のあるところ。

103:デフォルトの名無しさん
09/03/01 18:12:18
9xは正確にはWin32じゃない(Win32c)から挙動が違ってても不思議ではない

104:デフォルトの名無しさん
09/03/01 18:13:05
寡占企業なんだからちょっとくらい叩いても罰は当たらないと言ってみる

105:デフォルトの名無しさん
09/03/01 18:13:34
今どき win9x のことを気にしないといけないなんて、大変ですねぇ。


106:デフォルトの名無しさん
09/03/01 18:14:43
XP/Vistaしか気にしない奴は.NETでも使ってろ

107:デフォルトの名無しさん
09/03/01 18:18:23
98でも.NET2.0は入った気がするぞ

108:デフォルトの名無しさん
09/03/01 18:19:59
しかし、LINQの使えない.NET Framework 2.0に用はない。

109:デフォルトの名無しさん
09/03/01 18:22:07
あんまり古いOSにこだわり続けるのもどうなんかな・・・

110:デフォルトの名無しさん
09/03/01 18:23:37
自分では使ったことないけれど、
Uniscribeは再頒布できないようなのに
細かなバージョンアップが続いていて大変そうな印象を持っている。

111:デフォルトの名無しさん
09/03/01 18:25:28
>>109
むしろ古いOSに拘らないならわざわざWin32APIを直接叩く必要は無いでしょ

112:デフォルトの名無しさん
09/03/01 18:31:39
別にXPでAPI叩いたっていいじゃないですか!

113:デフォルトの名無しさん
09/03/01 19:07:50
家では未だに98SEな俺は特に気にしてない。

114:デフォルトの名無しさん
09/03/01 19:28:28
OS によって挙動不審になるAPI;SystemParametersInfo()

115:デフォルトの名無しさん
09/03/01 19:39:49
挙動不審じゃねーだろ

お前じゃあるまいし (w

116:デフォルトの名無しさん
09/03/01 20:03:40
怪しい…

117:デフォルトの名無しさん
09/03/01 20:33:28
TBSTYLE_EX_DRAWDDARROWSの設定されたツールバーのボタンサイズをうまく取得する方法ある?
普通にTB_GETBUTTONSIZEだと▼の部分のサイズが取得できない。

118:デフォルトの名無しさん
09/03/01 21:08:08
>>114
マイドキュメントやシステムフォルダの場所を取得するってのもいい感じにいっちゃっている。

119:デフォルトの名無しさん
09/03/01 21:15:42
プロパティシートのように手軽にタブコントロールでページの切り替えをする方法はないでしょうか?

120:デフォルトの名無しさん
09/03/01 21:54:49
なぜプロパティシートがダメなのかわからないと答えようがない

121:デフォルトの名無しさん
09/03/01 21:57:53
>>115
このAPIの場合は挙動不審でいいんだよ、いちいちケチつけるな。

122:デフォルトの名無しさん
09/03/01 22:04:18
>>120
OKやキャンセルはいらないので…

123:デフォルトの名無しさん
09/03/01 22:32:01
消せばいいじゃねーか

124:デフォルトの名無しさん
09/03/02 00:31:14
いろいろとムチャクチャなAPI
SHFileOperation

125:デフォルトの名無しさん
09/03/02 01:11:16
cREATEfILEで開いたものはFPRINTFとかで使えない?

126:デフォルトの名無しさん
09/03/02 01:16:50
使えない

127:デフォルトの名無しさん
09/03/02 01:40:04
GetDCで取得したHDCはずっと使ってもいいですかー?

128:デフォルトの名無しさん
09/03/02 01:49:55
>>125
FILE *fp = _fdopen(_open_osfhandle(handle), "r");とかでいけない?

129:デフォルトの名無しさん
09/03/02 01:53:25
>>127
CS_OWNDCでないならこまめに返すべき

130:デフォルトの名無しさん
09/03/02 02:03:08
ども

131:デフォルトの名無しさん
09/03/02 16:57:53
IEコンポーネントでIEがレンダリングしたWebページ全体を
ビットマップにキャプチャーする方法をご存知でしたら教えて
頂きたいのですが...APIを援用してもかまいません

132:デフォルトの名無しさん
09/03/02 17:24:21
そのページの上に背景ブラシ NULL のウィンドウをかぶせて、そいつのデバイスコンテキストからビットマップを取得する。

133:131
09/03/02 18:39:32
>>132
それで出来るんですか。
ちょっとやってみます。(出来なくても責めません)
ありがとうございました。

134:デフォルトの名無しさん
09/03/02 19:15:25
>>131
OleDrawあたりでいいのか?

135:デフォルトの名無しさん
09/03/02 19:17:25
>>132
マジでそんな簡単な方法でページ全体がキャプチャーできるなら世の中のキャプチャーソフトって糞ばっかってこと?


136:デフォルトの名無しさん
09/03/02 19:26:30
>>135
その方法で、昔、(見せかけの)デスクトップ上を玉が転がり落ちるスクリーンセーバを作ったぞ。

137:デフォルトの名無しさん
09/03/02 19:32:50
>>136
じゃあ多分話してる内容がかみ合ってないな。

・スレを全レス表示して、それを一枚のキャプチャにしたいって話 >>131
・画面に表示されている任意の箇所をキャプチャするって話 >>132

ってことだろう?



138:デフォルトの名無しさん
09/03/02 20:17:42
WM_ERASEBKGND揉み消したらいいのねー

139:デフォルトの名無しさん
09/03/02 20:36:09
WM_PRINTとか拡大鏡系のAPIとかDWMサムネイルとか方法はいろいろある。

140:デフォルトの名無しさん
09/03/02 22:04:18
昔、Sleipnir1.66用のプラグインでそういうの作ったことあったけど、
えらいめんどくさかったなぁ…

141:デフォルトの名無しさん
09/03/02 22:47:44
>>135
オーバーレイはそれじゃ取れないから

142:デフォルトの名無しさん
09/03/02 22:50:46
とれないね

143:デフォルトの名無しさん
09/03/02 22:52:35
つまり>>132は回答者としてはクズってこと?

144:45
09/03/02 22:57:46
そういうこと

145:デフォルトの名無しさん
09/03/02 23:00:36
自演するならもうちょい時間あけような

146:デフォルトの名無しさん
09/03/02 23:12:54
つまり>>144==>>145は自演としてはクズってこと?


147:デフォルトの名無しさん
09/03/02 23:47:32
>>137
それ以前に、>>136は、9xとかの話じゃね?

148:デフォルトの名無しさん
09/03/02 23:50:09
>>143
正しく言うとこのスレにはクズしかいないが正しい
お前も、おれも、そして、残りの奴も全てクズ
クズがクズに向かってクズって楽しいすれだよな
クズどおしの罵倒スレこれがこのスレ
今日は>>143がクズ罵倒開始を宣告したってことだな


149:デフォルトの名無しさん
09/03/03 01:32:21
2chで何をいまさらw

150:131
09/03/03 01:54:18
回答者への罵倒は質問者への迷惑にもなりますので
何とかご遠慮頂けないでしょうか

151:デフォルトの名無しさん
09/03/03 02:03:15
クズに不可能なことを要求しないでね

152:デフォルトの名無しさん
09/03/03 09:18:50
>>131
「IE レンダリング ビットマップ」とかでググると出てくるぞ
そこは.netでやってるぽいけど、IEコンポーネント使えれば他言語でもいけるんじゃね?

153:デフォルトの名無しさん
09/03/03 16:53:26
流れぶった切って質問。

WinXP&VC++2008EE@Unicodeにて
RASEnumConnectionsというAPIを使ってネットワーク接続を列挙しようとしているんだが、
コード632(構造体のサイズが違います)というエラーが出て、引数が変更無しで帰ってくるんだ。
RASCONN構造体の最初のdwSizeメンバと二つ目の引数にsizeof(RASCONN)を入れてる。
ANSIでもダメだった。ちなみにうちの環境ではsizeof(RASCONN)は1384バイト(@Unicode)らしい。
(スレチだったらすまん&誘導よろ)

154:デフォルトの名無しさん
09/03/03 17:02:38
>>153
WINVERマクロの値とras.hを確認

155:デフォルトの名無しさん
09/03/03 17:12:23
>>154
レスありがとう。
確認したところ、WINVERが0x600で、RAS.hの範囲が〜0x500までみたいだ。
ちょっと#undefして再定義してくる。

156:デフォルトの名無しさん
09/03/03 17:22:10
>>154
出来た!ありがとう。
(windows.h読む前にWINVER設定すればいいのね)
連投スマソ。

157:デフォルトの名無しさん
09/03/04 16:35:46
ちょっとお馬鹿な質問ですが
SendMessageのLParamに構造体のポインタを与えて時に
別アプリで受けたらそれ読めますか?

158:デフォルトの名無しさん
09/03/04 16:58:12
>>157
うん、当然無理に決まってるよね。

159:デフォルトの名無しさん
09/03/04 17:00:23
>>158
ですねよ。
素直にマップドピュピュファイルを使いますよ。

160:デフォルトの名無しさん
09/03/04 17:32:31
>>33
ですが、まだでしょうか?

161:デフォルトの名無しさん
09/03/04 17:45:33
>>160
もうちょっと待ってて

162:デフォルトの名無しさん
09/03/04 17:59:58
>>160
つグーグル

163:デフォルトの名無しさん
09/03/04 18:02:09
>>162
知らないならレスしないで下さい。ウザいだけです。

164:デフォルトの名無しさん
09/03/04 18:04:24
>>163
マジレスすると、ググール先生でVB6のソース出てくるだろ?
そのまんまじゃんwww
そのまま使えないなら、33の質問内容が悪い。
もう少し具体的に質問しろwww

165:デフォルトの名無しさん
09/03/04 18:24:07
>>164
知らないならレスしないで下さい。ウザいだけです。

166:デフォルトの名無しさん
09/03/04 18:28:02
質問もレスなわけだがw

167:デフォルトの名無しさん
09/03/04 18:36:41
質問に対してググれって言う馬鹿はレスするなって事じゃね?

168:デフォルトの名無しさん
09/03/04 18:47:50
くれくれ君はググれでいくね?

169:デフォルトの名無しさん
09/03/04 18:58:37
相変わらず外野うぜーな
文句あるならズバっと回答して成仏させてやれよ

170:デフォルトの名無しさん
09/03/04 19:04:10
>>169
知らないならレスしないで下さい。ウザいだけです。

171:デフォルトの名無しさん
09/03/04 19:25:27
マップドピュドピュw

172:デフォルトの名無しさん
09/03/04 19:26:11
>>171
突っ込みたいの我慢してたのに

173:デフォルトの名無しさん
09/03/04 20:47:58
>>159はそれを言いたかっただけのクズですか?

174:デフォルトの名無しさん
09/03/04 20:51:49
>>157
メッセージよっては OK。WM_COPYDATA とか。

175:デフォルトの名無しさん
09/03/04 20:58:34
Windows VISTA SP1
VS 2008

URLリンク(homepage2.nifty.com)をみて
以下の様に組み込んだのですが、この プリントダイアログを出した後に、
ウィンドウを閉じてプログラムを終了させると、
なぜか、Windowタスクマネージャ→プロセスに
*.exe が残ってしまいます。残ってしまうので次ビルドすると
error PRJ0008 : ファイル '*.exe' を削除できませんでした。
とメッセージが出てしまいます。
このダイアログを出さない場合は プロセスに*.exeは残らずきちんと消えてくれます。
なぜなのでしょうか?

176:デフォルトの名無しさん
09/03/04 20:59:51
ソースは以下です。
if (PrintDlg(&pd)==TRUE)
{
StartDoc(pd.hDC, &di);
StartPage(pd.hDC);
GetTextMetrics(pd.hDC, &tm);
//File
//0枚目
wsprintf(PrintBuf,CPrint.szStrFile,0,Common_Data->File0);
TextOut(pd.hDC, 100, tm.tmHeight * 0, PrintBuf,strlen(PrintBuf));
//1枚目
wsprintf(PrintBuf,CPrint.szStrFile,1,Common_Data->File1);
TextOut(pd.hDC, 100, tm.tmHeight * 1, PrintBuf, strlen(PrintBuf));
//2枚
wsprintf(PrintBuf,CPrint.szStrFile,2,Common_Data->File2);
TextOut(pd.hDC, 100, tm.tmHeight * 2, PrintBuf, strlen(PrintBuf));

EndPage(pd.hDC);
EndDoc(pd.hDC);
//DeleteObject(hPen);
DeleteDC(pd.hDC);
}

177:デフォルトの名無しさん
09/03/04 21:00:03
なんか残ってるんだろうね。

178:デフォルトの名無しさん
09/03/04 22:02:12
XP SP2では発生していなかったと思います。
VISTAでは新しい関数を使うのかと思い調べたらPrintDlgEXがありましたが
構造体に何を設定すればいいのか 分からない。必要最低限の設定
でいいんですが・・。

179:デフォルトの名無しさん
09/03/04 22:04:01
指定のウィンドウの一つ下にあるウィンドウのウィンドウハンドルを得る関数って何でしたっけ?

180:デフォルトの名無しさん
09/03/04 22:19:54
GW_CHILD を指定して GetWindow() とか?

181:デフォルトの名無しさん
09/03/04 22:21:00
StartDoc から DeleteDC までを全部コメントアウトしても同様?

182:デフォルトの名無しさん
09/03/04 22:25:53
>>179
GetNextWindowのことか?

183:デフォルトの名無しさん
09/03/04 22:29:48
>>181
StartDoc から DeleteDC をコメントアウトしても同様です。
PrintDlg(&pd); と単独で記述して プリントダイアログを
出したあとに すぐにキャンセルして そしてプログラムを
終了させても プロセスに残ってしまいます。



184:デフォルトの名無しさん
09/03/04 22:35:42
構造体の中身は?

185:デフォルトの名無しさん
09/03/05 00:33:31
>>162>>164
グーグルで最初に出てくるサイトのサンプルをVB.NETに直して色々試したのですが
取得失敗と出て終わってしまい困っています。
res = AccessibleObjectFromWindow(lngHWND, OBJID_CLIENT, IID_IAccessible, objAcc)
でlngHWNDに数字が入っていて、OBJID_CLIENTに-4が入っていて、
IID_IAccessibleの定義は
Private IID_IAccessible As UUID
Private Structure UUID
Dim Data1 As Integer
Dim Data2 As Short
Dim Data3 As Short
Dim Data4() As Byte
Public Sub Initialize()
ReDim Data4(7)
End Sub
End Structure
でイニシャライズもしていて、


objAccは Dim objAcc As IAccessibleのように定義しています。

APIの宣言は
Private Declare Function AccessibleObjectFromWindow Lib "oleacc" (ByVal hWnd As Integer, ByVal dwObjectID As Integer, ByRef riid As UUID, ByRef ppvObject As IAccessible) As Integer
こうなっています。


どこか悪いところとかありましたら教えて頂きたいです。

186:デフォルトの名無しさん
09/03/05 00:46:06
VB(笑)

187:デフォルトの名無しさん
09/03/05 00:53:22
本題からは逸れるけど、
UUIDなんて構造体作らなくても、System.GUIDを使えばいいし、
hWndの型はIntPtrのほうが適切。

とここまで書いて、UUID構造体の定義がまずいような気がしてきた、Data4のあたり。
System.GUIDにするとどうだ?

188:デフォルトの名無しさん
09/03/05 01:16:42
>>187
レスありがとうございます。
System.GUIDというのは
Dim IID_IAccessible As Guid = Guid.NewGuid()
こうすれば良いでしょうか?

hWnd関係は全部IntPtrに置き換えてみました。
TextBox1.Text = GetSysLVHwnd().ToInt32
で65698という数字が帰ってくるので大丈夫だと思います。

何かダメそうなところが分かりましたら教えていただきたいです



189:デフォルトの名無しさん
09/03/05 01:18:04
>>188
API定義これでどうよ?使ったことないけど。

Private Declare Function AccessibleObjectFromWindow Lib "oleacc" (ByVal Hwnd As Int32, _
     ByVal dwId As Int32, _
     ByRef riid As Guid, _
     <MarshalAs(UnmanagedType.IUnknown)> ByRef ppvObject As Object) As Int32

190:>>188
09/03/05 01:25:00
よく見てみると、その後こう使ってるのか。動くのかな?
著作権とかはしらね

URLリンク(www.pinvoke.net)


   Private Sub Form2_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim varChild As Accessibility.IAccessible
    Dim hWnd As Int32 = GetForegroundWindow()
    Dim ID As Int32 = 0
    Dim IID_IAcce As Guid = New Guid("618736E0-3C3D-11CF-810C-00AA00389B71")
    Dim aaVal As Int32 = AccessibleObjectFromWindow(hWnd, ID, IID_IAcce, varChild)
    End Sub

191:デフォルトの名無しさん
09/03/05 01:48:30
レスありあとうございます。
>>189を試してみましたが
Can not marshal parameter #4: Invalid managed/unmanaged type combination
(Interfaces must be paired with Interface).
というエラーが出てしまい対応できませんでした。

>>190
New Guid("618736E0-3C3D-11CF-810C-00AA00389B71")
を定義すると取得失敗へ行かなくなりました。
varChildに何か入っているようです。
最初のグーグルで最初に出てくるページのサンプルでvarChildを調べる部分でエラーが
出てしまいましたが、また色々やってみたいと思います。
何をやってもNothingのままだったので>>33がやっと解決できましたみたいでありがたいです。
ありがとうございました。

192:デフォルトの名無しさん
09/03/05 10:19:12
>>191
インターラプト入れれば、マーシャルでエラーでない

Imports System.Runtime.InteropServices

Private Declare Function AccessibleObjectFromWindow Lib "oleacc" (ByVal Hwnd As Int32, _
     ByVal dwId As Int32, _
     ByRef riid As Guid, _
     <MarshalAs(UnmanagedType.IUnknown)> ByRef ppvObject As Object) As Int32

193:デフォルトの名無しさん
09/03/05 10:47:34
>>174
そうだ!!
WM_COPYDATAがあったんだ!
ありがとうありがとう

194:デフォルトの名無しさん
09/03/05 18:03:33
ツールバーを消したいんですけど、手順的にはどうすればいいのですか?
サイズを 0,0,0,0 にしたり SW_HIDE とか HWND_BOTTOM を試しても
うまくいかず、「上に」詰めた領域がツールバーに隠れるんですが、、、

195:デフォルトの名無しさん
09/03/05 18:39:06
>>194
ShowControlBar()

196:デフォルトの名無しさん
09/03/05 18:45:54
ごめん間違えた。ShowWindowのSW_HIDEで消えないの?

197:デフォルトの名無しさん
09/03/05 22:18:58
まともなのが共産と国民新党しかないとかどれだけw

198:デフォルトの名無しさん
09/03/05 22:23:58
ひでえ誤爆

199:デフォルトの名無しさん
09/03/05 22:57:10
>>192
Imports System.Runtime.InteropServices
は書いたのですがエラーになってしまいました。

もう一つ教えて頂きたいのですが、
Dim objAcc As IAccessible
という宣言があるのですが、
objAcc を入力したあとにピリオドを入力すると
メンバが出るようにしたいのですが方法がありましたら教えて頂きたいです。


200:デフォルトの名無しさん
09/03/05 22:58:46
おっとそこまでだ
その質問はVB.NETスレでやってくれ

201:デフォルトの名無しさん
09/03/05 22:59:28
>>199
何度もすみません。
現在デスクトップ上のアイコンの名前がリストボックス登録されるところまで出来ました。
(グーグル検索の最初に出てくるサンプルをVB.NETに書き換えて)

202:デフォルトの名無しさん
09/03/05 23:10:53
>>197
どういう話題のスレか分かってしまうw

203:デフォルトの名無しさん
09/03/05 23:44:55
プログラムが立ち上がったときに、エディットコントロールに初期文字が表示されるようにするため、
プログラム内からエディットコントロール内に文字を打ちたいのですが、どのようにすればよいでしょうか?

SendMessageを使って、例えば「7」を入力しようとしましたが、ダメでした。

SendMessage( hEdit, WM_KEYDOWN, '7', 0 );

ご助言、お願いします。

204:デフォルトの名無しさん
09/03/05 23:49:55
>>203
WM_INITDIALOG 内で SetWindowText()

205:203
09/03/06 00:02:49
>>204
ありがとうございました!!

206:デフォルトの名無しさん
09/03/06 09:29:08
>>194
SetMenu(hWnd, NULL);


207:デフォルトの名無しさん
09/03/06 19:31:44
トップレベル・ウィンドウに

BOOL MoveWindow(
  HWND hWnd,
  int X,
  int Y,
  int nWidth,
  int nHeight,
  BOOL bRepaint
);

と、

BOOL SetWindowPos(
  HWND hWnd,
  HWND hWndInsertAfter,
  int X,
  int Y,
  int cx,
  int cy,
  UINT uFlags
);

を、 X、Y、W、H とも同じ値にして実行したときに出来るウィンドウのサイズと座標が
全く異なるんですが、これは一体どういうことなんですか??

208:デフォルトの名無しさん
09/03/06 19:48:15
スクリーン座標とクライアント座標じゃね?
WndPosがクライアントだった希ガス

209:デフォルトの名無しさん
09/03/06 22:34:14
悪い、SWP_NOSIZEとSWP_NOMOVE指定してたわ

210:デフォルトの名無しさん
09/03/07 07:39:56
そーゆーオチかよwww

211:デフォルトの名無しさん
09/03/07 16:41:43
あああああああああああああああああああああああああああああああああああああああ

212:デフォルトの名無しさん
09/03/07 16:43:47
何?何?

213:デフォルトの名無しさん
09/03/07 16:49:03
酒飲んでて屁だと思ったのが下痢だった

214:デフォルトの名無しさん
09/03/08 01:14:34
OS:Windows VISTA SP1
ボタンを押したらOS情報取得するプログラムを以下の様に記述
しました。

GetVersionEx(&osv);
switch (osv.dwPlatformId)
{

case VER_PLATFORM_WIN32s:
MessageBox(NULL, "Win32sです", "Platform", MB_OK);
break;
case VER_PLATFORM_WIN32_WINDOWS:
MessageBox(NULL, "Windows95です", "Platform", MB_OK);
wsprintf(str, str_format, LOWORD(osv.dwBuildNumber));
MessageBox(NULL, str, "OK", MB_OK);
break;
case VER_PLATFORM_WIN32_NT:
MessageBox(NULL, "WindowsNTです", "Platform", MB_OK);
break;
結果、なぜか、VISTA上で動かしてボタンを押すと、
VER_PLATFORM_WIN32_NT:
MessageBox(NULL, "WindowsNTです",
となってしまいます。
VISTAを判別するためのdefineってなんでしょうか?
GetProductInfoで細かく取得するつもりはないんですが・・。



215:デフォルトの名無しさん
09/03/08 01:20:02
VistaはNTだし…

216:デフォルトの名無しさん
09/03/08 01:21:55
dwMajorVersionとdwMajorVersion見ろ

217:デフォルトの名無しさん
09/03/08 01:31:02
ドキュメントぐらい読め
URLリンク(msdn.microsoft.com)(VS.85).aspx

218:デフォルトの名無しさん
09/03/08 01:32:06
>>214
URLリンク(msdn.microsoft.com)(VS.85).aspx

219:デフォルトの名無しさん
09/03/08 01:32:58
かぶったorz

220:デフォルトの名無しさん
09/03/08 01:36:26
NT系列だったんですね 勘違いしてました。
ありがとうございました

221:デフォルトの名無しさん
09/03/08 01:38:07
まさか本気でMeの後継だと…

222:デフォルトの名無しさん
09/03/08 02:26:19
さらに、Windows 7.0はバージョン7.0と思っているに違いない。

223:デフォルトの名無しさん
09/03/08 02:49:04
え??VISTAの完成度の低さはMeの後継だからでしょ?

224:デフォルトの名無しさん
09/03/08 02:52:21
うん そうだね

225:デフォルトの名無しさん
09/03/08 02:56:45
Win32を使っているのならVistaのAPIの完成度の高さはわかるはずだが…

226:デフォルトの名無しさん
09/03/08 03:30:29
>>222
>Windows 7.0
もしかしてそれはWindows 7と言いたいのか?

227:デフォルトの名無しさん
09/03/08 03:31:53
>>223
「Meの後継」と「完成度」には何の関係もないだろ

228:デフォルトの名無しさん
09/03/08 06:03:34
>>226
そのとおり。すまん、つい勢いで書いてしまった。今は反省している。

229:デフォルトの名無しさん
09/03/08 06:35:58
>>227
そのとおり。すまん、つい勢いで書いてしまった。今は反省している。

230:デフォルトの名無しさん
09/03/08 10:37:52
VistaのAPIの完成度の高さ、って……

MS社員乙って言ってほしいのか?

231:デフォルトの名無しさん
09/03/08 12:15:03
後に出たAPIほど洗練されるのはある意味当たり前
VistaのAPIが完成度高いってよりWin32 APIが極端に使いにくいだけ
でも歴史的背景を考えればやむなし

232:デフォルトの名無しさん
09/03/08 13:40:29
はぁ?
VistaのAPIが完成度高い??洗練されてる??

もしかして、VistaのAPI=.NET3.0/WPF=洗練されてる、とか言いたいだけの人なのかね

233:デフォルトの名無しさん
09/03/08 13:45:09
WERやスレッド関連は以前よりはるかに完成度が高いと思うけど

234:デフォルトの名無しさん
09/03/08 13:49:43
>>233
アホは議論に参加しなくていいから。

235:デフォルトの名無しさん
09/03/08 13:54:28
一部流動的なものを対象としている為に、
ライブラリのような「完成度」が求めることが不可能
であるか極度に困難だからこそAPIと呼ばれライブラリ
とは呼ばれない件について
(以上チラ裏)

236:デフォルトの名無しさん
09/03/08 14:06:18
まあ APIの完成度 なんて表現を使う時点で程度の低さが分かっちゃうけどね

237:デフォルトの名無しさん
09/03/08 14:08:39
API=Aplication Programming Interface
だったっけ?
完成度は求められる対象じゃないか?

238:デフォルトの名無しさん
09/03/08 14:11:14
いやVISTAのAPIは完成度高いだろ
だってさ、XP用のソフトも使えるんだぜ?

XP = XP用のソフトしか使えない
VISTA = XP用ソフト、VISTA用ソフトの両方が使える

239:デフォルトの名無しさん
09/03/08 14:18:44
そもそもVistaのAPIつっても大部分がWin16時代からの物なのに「完成度」てw

どうも"API"を理解してない人がいるみたいだね
またいつもの人か?

240:デフォルトの名無しさん
09/03/08 14:20:03
どこぞのVZ厨だろ

241:デフォルトの名無しさん
09/03/08 14:21:46
>>239
そだね。APIってインターフェースだから内部構造は絶対不変で
Win16のコードすら必ず残ってるからね。だからVistaでもXPでも
Windows2.0のプログラムがそのまま動くw。

242:デフォルトの名無しさん
09/03/08 14:30:44
WERやスレッド関連って、VistaからのAPIだろ…

243:デフォルトの名無しさん
09/03/08 14:40:04
MSの互換性絶対主義の賜だね
さすがMS様はわかってらっしゃる

244:デフォルトの名無しさん
09/03/08 15:07:33
>>241
64bit版にはWin16サポート無くなってるんじゃなかったか?
古いInstallShieldのインストーラが起動しないとかどっかで見た気がする

245:デフォルトの名無しさん
09/03/08 15:23:24
まぁさすがにWin16はもういいだろ・・・

246:デフォルトの名無しさん
09/03/08 15:24:42
最近のソフトでも、インストーラーが16bitのがあるのがむかつく。
しかも64bit版でそんなインストーラ使うアホなとこもあるw

247:デフォルトの名無しさん
09/03/08 15:32:33
.NET Frameworkなんか糞だろ
開発する側のメリットしか考えてない使い手無視のAPI
互換性だけでWin32APIを残しているあたりも糞OS

248:デフォルトの名無しさん
09/03/08 15:43:59
PEの出だしって16bitじゃなかったか?

249:デフォルトの名無しさん
09/03/08 15:52:50
Windowsの灰色ってRGBで言うところの(255,255,255)いくつなんでしょうか?
SetTextColor(hdc, RGB(0, 0, 0);
SetBkColor(hdc、RGB(???));

背景はダイアログボックスの灰色です

これでいろいろ試してみたんですけど
なぜか背景色が合わないんです

どうしたらダイアログボックスと文字の背景色を合わせられるでしょうか?

250:デフォルトの名無しさん
09/03/08 15:53:29
PEは32/64bitだろ

因みに16bitはNEと呼ばれてた
LEとかLXとかっていう16/32bitハイブリッドなのもあってこれは9x時代のドライバにも使われてた

251:デフォルトの名無しさん
09/03/08 15:55:43
>>249
hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1);

252:デフォルトの名無しさん
09/03/08 15:59:24
>>250
すまん
言い方が悪かった
OSが16bitだった場合実行される16bit命令が出だしにあったんじゃないかと

253:デフォルトの名無しさん
09/03/08 16:00:45
int型だぁ〜(><;)わからないよ〜

254:デフォルトの名無しさん
09/03/08 16:04:12
>>249
::SetTextColor( hDC, ::GetSysColor( COLOR_BTNTEXT));
::SetBkColor( hDC, ::GetSysColor( COLOR_3DFACE));

255:デフォルトの名無しさん
09/03/08 16:04:58
>>251さん
SetBkColor(hdc、COLORREF )
hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1); を
COLORREF形式にするにはどうすればいいんでしょうか?

256:デフォルトの名無しさん
09/03/08 16:05:56
>>254
ありがとうございます
できましたm(_;)m

257:デフォルトの名無しさん
09/03/08 16:05:58
>>249
設定とかによって変わってくるから決めうちはいかんよ。

258:デフォルトの名無しさん
09/03/08 16:17:53
ほんと決め打ちは勘弁して欲しい
配色を黒基調にしてると文字が見えなくなるとかw

259:デフォルトの名無しさん
09/03/08 16:46:50
     __
     \|/
       |
   ┌─┼─?|─┬─┐
   三  |入    ,>   .└-、
   三  =    <、      ヽ、   ,-‐-、
   三 /.|      ,>   .┌-、 "''-( ( ̄〇
   └─┼──┴─┘ "''''""" ヽ,,,,ソ
     _|_
     ////

260:デフォルトの名無しさん
09/03/08 16:52:59
大抵SetBkMode(TRANSPARENT)するから
SetBkColor()はあんまり使わんかも

261:デフォルトの名無しさん
09/03/08 16:56:45
>>248
出だしつーかファイルの一番先頭は「このプログラムはDOSじゃ動かねーよ」って表示するだけの16bitコードだな。
極限までバイナリサイズ縮める遊びとかでたまに書き直してた。

262:デフォルトの名無しさん
09/03/08 17:00:21
>>261
ちゃんとしたプログラムに差し替えも可能だな。

263:デフォルトの名無しさん
09/03/08 17:31:27
誰ですか、スタブをjxw,exeにした人はw

264:デフォルトの名無しさん
09/03/08 20:49:27
VC++2005 でサウンド入出力プログラムを作っています.
SDK,低レベルAPIを使っています.
入力,出力共にマルチバッファリングを行っているのですが,
入力と再生の間に,バッファ数に従う遅延が生じてしまいます.
体感では,(1バッファに録音する秒数 * 用意したバッファ数)秒
の遅延が生じていると思われます.

リアルタイムに近い動作を実現したいため,
1バッファに録音する秒数(RecSEC)を短くしています.
現在の設定では RecSEC = 0.005 [sec/buffer] です.
バッファ数が少ないと音声がブツブツと途切れてしまいますが,
バッファ数を増やす事で解決しました.

これで遅延量が少ない動作が実現できたと思っていたのですが,
RecSEC = 0.1 として実行してみたところ,約0.1[sec]の遅延を期待していたのですが
約(0.1*バッファ数)[sec] という大きな遅延となってしまいました.

ソースコードをアップしましたので,解決方法をご教授願います.
waveInStart の実行位置を変えてみる等色々とやってみましたが
よくわかりませんでした.

pass: sagehoge
URLリンク(www2.uploda.org)

よろしくお願いします.

265:デフォルトの名無しさん
09/03/08 21:21:12
延滞が気になるASIOを使え

266:デフォルトの名無しさん
09/03/08 21:28:17
whOut[k].dwFlags = WHDR_BEGINLOOP | WHDR_ENDLOOP;
whOut[k].dwLoops = 1;

関係ないと思うけど↑が気になった
両方とも0でよくね?

267:デフォルトの名無しさん
09/03/08 21:44:58
>>264
Vista以降ならCoreAudioで扱えばいい。
他にもDirectSoundでバッファ読みまくりとか。

ソースは見るまでもないが、きっとやり方間違っているよ。
あらゆる方法を試した事のある俺が言うんだから間違いない。

268:264
09/03/08 21:50:58
>>265
ありがとうございます.
ですが,低レベルAPIで書きたいです.

>>266
ループ再生は不要なので,確かに両方とも0ですね.

>>267
XPで書いています.DirectXにも挑戦しようか悩みましたが,
低レベルAPIで片付けてみたいのです.
お暇な時にでもソースを見ていただけたら.

269:デフォルトの名無しさん
09/03/08 21:55:49
APIレベルではどうしようとも遅延が200〜500msあるんだが、それを理解した上でやっているのか?

270:デフォルトの名無しさん
09/03/08 21:56:58
>>264
ここよりサウンドプログラムスレの方が良いアドバイスもらえるんじゃないか


271:264
09/03/08 22:07:46
>>269
数値がどの程度かは知りませんでしたが
それくらいの遅延は覚悟しておりました.
しかし現状ではアルゴリズムの問題で遅延が生じてしまっているため
それを解消したいのです.

>>270
スレ検索が足りなかったようです.
サウンドプログラミングのスレを見つけましたので,
そちらでお聞きする事にします.

皆さん,ありがとうございました.

272:デフォルトの名無しさん
09/03/09 04:20:37
>>231
互換性を切り捨てられるなら君の言うとおりだ。>後の方が洗練

273:デフォルトの名無しさん
09/03/09 05:32:19
互換性が切り捨てられるなら新しいOSが出る毎にコードを書き直さないといけないだろ
そんなのが洗練されてるとか、馬鹿?

274:デフォルトの名無しさん
09/03/09 07:24:18
↑話を分かっていないバカ

275:デフォルトの名無しさん
09/03/09 07:27:49
>>274 お前がな

276:デフォルトの名無しさん
09/03/09 07:34:07
>>274
荒らすなよ。

277:デフォルトの名無しさん
09/03/09 09:56:49
ここは荒らしていいスレじゃなかったっけ

278:デフォルトの名無しさん
09/03/09 10:33:57
落書きだらけの壁に「落書き禁止」の紙が貼ってあるようなもんだ。

279:デフォルトの名無しさん
09/03/09 12:42:44
荒らしていいスレ(笑)

280:デフォルトの名無しさん
09/03/09 18:31:20
>>278
「落書き禁止」なんて貼ってないよ
「自由の板です、どうぞ」の紙が貼られている板



281:デフォルトの名無しさん
09/03/09 21:40:56
以下のコードでnewでメモリ確保すると大丈夫なのにスタックにメモリ確保するとエラーになります。
どこがまずいのでしょうか?なんとなくスタックの概念を根本的に間違っているような気がします。
//----大丈夫----------------------------
#include<windows.h>
#include<gdiplus.h>
#pragma comment(lib,"Gdiplus.lib")
#include<cstdio>
void main()
{
Gdiplus::GdiplusStartupInput gdiplusStartupInput1;
ULONG_PTR gdiToken;
Gdiplus::GdiplusStartup(&gdiToken,&gdiplusStartupInput1,NULL);
Gdiplus::Bitmap*pBitmap1=new Gdiplus::Bitmap(TEXT("C:\\WINDOWS\\winnt.bmp"));
printf("%d\n",pBitmap1->GetWidth());
delete pBitmap1;
Gdiplus::GdiplusShutdown(gdiToken);
}
//----エラー----------------------------
#include<windows.h>
#include<gdiplus.h>
#pragma comment(lib,"Gdiplus.lib")
#include<cstdio>
void main()
{
Gdiplus::GdiplusStartupInput gdiplusStartupInput1;
ULONG_PTR gdiToken;
Gdiplus::GdiplusStartup(&gdiToken,&gdiplusStartupInput1,NULL);
Gdiplus::Bitmap bitmap1(TEXT("C:\\WINDOWS\\winnt.bmp"));
printf("%d\n",bitmap1.GetWidth());
Gdiplus::GdiplusShutdown(gdiToken);
}


282:デフォルトの名無しさん
09/03/09 21:45:43
>>281
使ってるクラスの内容は知らんが、
上だとビットマップ削除後Shutdown呼んでるが
下だとShutdown呼んだ後ビットマップ削除してる
辺りが原因なのでは?

283:デフォルトの名無しさん
09/03/09 21:46:53
スタックうんぬんというより、クラスのインスタンス生成の概念がわかってないんじゃない?


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5493日前に更新/205 KB
担当:undef