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


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

Win32API質問箱 Build20
251 名前:デフォルトの名無しさん :04/07/03 17:58
>>248
ひまわりは使える。TTSはしらん。

252 名前:デフォルトの名無しさん :04/07/03 18:06
>>249
再現できれば画面さらしてもいいんだが
「"・テキスト"が作成できません。指定されたファイルが見つかりません」とエラーになる。
要は、FATと認識しているにもかかわらず、8.3形式無視した名前付けようとして
勝手にエラーを吐くっぽい

ネットワークドライブ割り当てまでがお仕事で、後は好きに使ってねっつーアプリなんで
こっちとしてはFATだどうだは気にしたくもないわけですが
↑みたいに勘違いしたエラー吐きやがるので
このままではお話になりませんよ、と


253 名前:デフォルトの名無しさん :04/07/03 18:16
すいません。分かる方、ご教授願います。

●フォーカスがないダイアログ側で、現在のキーの状態が得られません

当方でやりたいことは、任意のキーが押されたらキャンセルしたい
そこで、タイマーをセットしておいて、

::GetKeyboardState(g_kbState); // キーの状態を取得する。
for(mm=0, bCancel=FALSE ; mm<256 && !bCancel ; mm++){
 if( mm==243 ) continue;
 bCancel = (g_kbState[mm] & 0x80)!=0 ;
}
で、bCancelがTrueか否かをみていますが、常にFALSEです
フォーカスがあれば、大丈夫なんですが・・・

254 名前:デフォルトの名無しさん :04/07/03 18:39
>>253
MSDN嫁
>The key status returned from this function changes as a thread reads key messages from its message queue.
>The status does not reflect the interrupt-level state associated with the hardware.
>Use the GetAsyncKeyState function to retrieve that information.


255 名前:デフォルトの名無しさん :04/07/03 19:08
>>252
「FATと誤認」してると判断した根拠って何?
なんか妙な勘違いしてるような予感がするんだけど・・・。

256 名前:デフォルトの名無しさん :04/07/03 19:18
>>255
この状況のとき、該当ドライブを右クリックしてプロパティ出すと
 ファイルシステム:FAT
になってる。
実際、Office系のファイルを新規作成すると、新規作成ファイルの命名規則が8.3になる
あたりから判断

実際、共有フォルダ内のファイルは開けるので、ドライブの接続が切れてるとかではないっぽいし

257 名前:デフォルトの名無しさん :04/07/03 19:31
FATでもロングファイル名使えるだろ
つかネットワーク経由でFATとか関係あんのかよ

258 名前:デフォルトの名無しさん :04/07/03 20:11
>>256
つか、話がさっぱり要を得ないんで勝手にまとめなおすけど、

(1)2003Serverで共有フォルダを出している。ローカルディスクはNTFS。
(2)9x上でWNetAddConnection2()使ってその共有をネットワークドライブに割り当てた。
(3)そのネットワークドライブ上でファイルを作成すると
 「"・テキスト"が作成できません。指定されたファイルが見つかりません」
 なエラーが出てファイルが作成できない。
(4)既存のファイルは読める。
(5)Officeでファイル作成すると、名前が8.3形式になっている。

でいいのかな?

ちなみに、ドライブのプロパティに出るファイルシステムは当てにならんと思うよ。
2000からsambaサーバの共有をネットワークドライブに割り当ててるけどNTFSって出るし。
(ちなみにsambaサーバのローカルディスクはsoftupdate付きのFFS)
9xは(V)FATしか知らない(NTFSなんて知らない)から、表示上そう見てるだけでは。

勘だけど、2003Serverの共有か、ドメインorワークグループの設定ミスってる気がする。


259 名前:デフォルトの名無しさん :04/07/03 20:38
>>257
関係ないと思ってたんだが…
動作見る限りFAT(それもFAT32とかじゃなくて素のFAT)ドライブでの動作まんまだし

>>258
要領悪くてすんません、そんな感じです
ただ、
>9xは(V)FATしか知らない(NTFSなんて知らない)から、表示上そう見て
の部分だけど、正しく拾えるときはNTFSとちゃんと出る
実際
クライアント再起動かけたりサーバ側セッション削除して再接続かましたりで
復帰した(後者はほぼ五分五分でうまく行くのと行かないのがあった)から
ネットワーク環境っぽいのはぽいんだが…
再現率が恐ろしく低いんで(つまり普段は正常に動作している)
設定周りよりも負荷とかタイミング依存な感じ?


260 名前:デフォルトの名無しさん :04/07/03 21:28
プログラムを使ってなくて持つところが暗くなってるときに
キーボードのボタンを押したことがわかるにはどうやればいいですか?

261 名前:デフォルトの名無しさん :04/07/03 21:42
何を言っているのか分かりません

262 名前:デフォルトの名無しさん :04/07/03 21:48
俺は分かったけど答えは知らん

263 名前:デフォルトの名無しさん :04/07/03 21:50
俺もわからんので答えも知らん

264 名前:デフォルトの名無しさん :04/07/03 21:51
俺もまじわからん。光学マウスじゃないよな。

265 名前:デフォルトの名無しさん :04/07/03 21:53
俺の推理だと、SetWindowsHookEx(WH_KEYBOARD)

266 名前:デフォルトの名無しさん :04/07/03 21:54
>>260は、ウィンドウ(プログラム)非アクティブ時に押したキーを横取りしたいんだろう。
平たく言うとキーロガーを作って{好き|嫌い}な{アノ子|あの糞野郎}に仕込んでやりたいと。

267 名前:デフォルトの名無しさん :04/07/03 21:56
持つ所ってタイトルバーか…orz
物理的に持って暗くなるのもを探したよ

268 名前:デフォルトの名無しさん :04/07/03 21:57
エスパーが多いスレで質問してよかったな。

269 名前:デフォルトの名無しさん :04/07/03 21:58
>>266
なるほど。あんたスゲーや。


270 名前:デフォルトの名無しさん :04/07/03 22:02
少々violateな推測をするに、>>260はこいつなんじゃないかと。
http://pc5.2ch.net/test/read.cgi/tech/1087929711/962

271 名前:デフォルトの名無しさん :04/07/03 22:04
>>270
うん。俺も思った。

272 名前:デフォルトの名無しさん :04/07/03 22:04
962って962の前に何かレスしてるの?

273 名前:デフォルトの名無しさん :04/07/03 22:07
>>272
少なくともその質問関連のレスはないね

274 名前:デフォルトの名無しさん :04/07/03 22:08
>>272
軽く検索したけど、当該スレ内にそれらしき書き込みは一切無し。
その奇妙さと日本語の不自由さを含めて962と260が同一人物との
推測に至りました。

275 名前:デフォルトの名無しさん :04/07/03 22:10
>>273-274
((;゚Д゚) …ゴクリ

276 名前:デフォルトの名無しさん :04/07/03 22:38
とりあえず、質問の文面からしてプログラマの素養無しなので、さっさと
あきらめることをお勧めするな、漏れは。

まあ他の職業も無理だろうけど。

277 名前:デフォルトの名無しさん :04/07/03 23:02
アインシュタインなどの天才は260のような文章を書くと聞いた覚えがある

278 名前:デフォルトの名無しさん :04/07/03 23:03
そうか。
じゃあプログラマじゃなくアインシュタインになれ。

279 名前:デフォルトの名無しさん :04/07/03 23:04
池沼に見える天才が居るのは事実だが、全ての池沼が天才であるわけではない。

280 名前:デフォルトの名無しさん :04/07/03 23:05
アインシュタインはボーナスでないよ

281 名前:デフォルトの名無しさん :04/07/03 23:35
天才は、思考が飛躍するので凡人がついていけない。
>260のようなのは、思考が飛躍するのではなく支離滅裂なので凡人がついていけない。

282 名前:デフォルトの名無しさん :04/07/03 23:40
天才へのねたみを恥ずかしげもなく表出するスレはここですか?

283 名前:デフォルトの名無しさん :04/07/03 23:53
プ

284 名前:デフォルトの名無しさん :04/07/03 23:54


285 名前:デフォルトの名無しさん :04/07/03 23:55


286 名前:デフォルトの名無しさん :04/07/03 23:57


287 名前:デフォルトの名無しさん :04/07/04 00:00


288 名前:デフォルトの名無しさん :04/07/04 00:04


289 名前:デフォルトの名無しさん :04/07/04 00:06


290 名前:デフォルトの名無しさん :04/07/04 00:09


291 名前:デフォルトの名無しさん :04/07/04 00:21


292 名前:デフォルトの名無しさん :04/07/04 00:22


293 名前:デフォルトの名無しさん :04/07/04 00:22


294 名前:デフォルトの名無しさん :04/07/04 00:24


295 名前:デフォルトの名無しさん :04/07/04 00:26


296 名前:デフォルトの名無しさん :04/07/04 00:29


297 名前:デフォルトの名無しさん :04/07/04 00:29
ドゥアフォ

298 名前:デフォルトの名無しさん :04/07/04 00:32
甲子園

299 名前:デフォルトの名無しさん :04/07/04 00:44


300 名前:デフォルトの名無しさん :04/07/04 00:44
つまり

プ ロ市警が「超法政大学逮捕」乙彼。
ドゥアフォ甲子園

っていうわけだな。

301 名前:デフォルトの名無しさん :04/07/04 01:28
よぉ〜わからんが、なんかわらける。


302 名前:デフォルトの名無しさん :04/07/04 01:39
>なんかわらける。

303 名前:デフォルトの名無しさん :04/07/04 01:39
なんかばけらった

304 名前:デフォルトの名無しさん :04/07/04 01:58
スパイ(をつくろうとすること)がばれて切れてる感じだろ

305 名前:デフォルトの名無しさん :04/07/04 08:23
凡人の発想はそんなものなんだね

306 名前:デフォルトの名無しさん :04/07/04 13:17
真の天才は2chで情報収集などしないものです。

307 名前:デフォルトの名無しさん :04/07/04 19:57
BOOL PathIsDirectory(LPCTSTR)
のディレクトリだった場合の戻り値が 0x10 なのですが
なんでしょうか?これは
MSDNには Returns TRUE if the file exists, or FALSE otherwise.となっています。
if(PathIsDirectory(...)) でやっておけば問題なしですか?
#define TRUE 0x16 じゃないですよね

308 名前:デフォルトの名無しさん :04/07/04 19:58
↑ちなみにwin2000 IE最新です。

309 名前:デフォルトの名無しさん :04/07/04 20:03
ヘッダ調べたところTRUEは1に、FALSEは0にdefineされてる。しかしBOOL型の関数であって
元々値をintで比較するように設計されてないだろうから!=FALSE(つまり>>307と同じ)でいいんじゃないかな。
サンプルコード書いて試したわけじゃないけど。

310 名前:デフォルトの名無しさん :04/07/04 20:07
まぁ普通はTRUE==!0 FALSE==0だから。。。
確かに紛らわしいけどそこは柔軟に対応してあげて下さい。

311 名前:307 :04/07/04 20:15
MSDNの引用を間違っていました。正しくは
Returns TRUE if the path is a valid directory, or FALSE otherwise.
まあ同じですが。
>>309,310
なるほど。MSDNの言っているTRUEがVCで定義されているTRUEということではないということですか
気にせず前進といきます どうもです

312 名前:デフォルトの名無しさん :04/07/04 20:18
まぁBOOLって云ってるのにTRUE/FALSE/-1の3つが返ってくるGetMessageに比べたら

313 名前:デフォルトの名無しさん :04/07/04 21:46
CreateProcess関数は第1引数か第2引数に実行ファイル名を代入すればOKという認識でいいのでしょうか?
でも、そうだとすると二つある必要がないですよね

314 名前:デフォルトの名無しさん :04/07/04 21:47
コンソールから実行する感覚でやる時には第二引数に放り込んだほうが楽なんだわ。

315 名前:デフォルトの名無しさん :04/07/04 22:54
GetCommandLineで取れるものが変わってくる。
POSIXサブシステムのためにそーゆー仕様になってるらしい

316 名前:デフォルトの名無しさん :04/07/04 23:15
コントロールに、TTM_ADDTOOLでチップヘルプをつけているのですが、
コントールに、XPスタイルを適用(manifestファイル使用)すると、
チップヘルプがうまく表示されなくなってしまい困っています。

具体的な症状としては、
・アプリケーション起動直後は、正常に表示されます
・コントロールをクリックすると、そのコントロールのチップヘルプが表示されなくなります
・XPスタイルを適用しない場合は、コントロールをクリックした後でも正常に表示されます

解決策・原因等をどなたかご存じないでしょうか。

・開発環境
WindowsXP pro + SP1
Visual C++6.0 pro + SP6 + PlatformSDK


317 名前:デフォルトの名無しさん :04/07/04 23:18
>>315
ああ・・・なる

318 名前:デフォルトの名無しさん :04/07/04 23:50
>>316
それだけでわかるかよ。
どうやってコントロール作っているのかも書いてないし、TTM_ADDTOOLを送るときの
LPTOOLINFOも書いてないし。manifestファイル中身だってわかんね。

聞くのはいいけど、何がどうなっているのかくらい書いてからにしてくれよ。

319 名前:デフォルトの名無しさん :04/07/04 23:55
回答者にはエスパーの資格を有することが必須条件です。

320 名前:デフォルトの名無しさん :04/07/04 23:56
幸い、ここにはエスパーが多いから。

321 名前:デフォルトの名無しさん :04/07/05 00:12
ウィンドウプロシージャで新しいメッセージを作ろうと思うんですが、
メッセージ番号がWindowsが定義したものとかぶらないか心配です。
例えば自分で作るときは5000番台にするとか、そういう決まりごとは
無いんでしょうか。あったら教えてください。

322 名前:デフォルトの名無しさん :04/07/05 00:16
>>321
msdnかどっかに書いてあったと思う
WM_USER+hoge
にすれば確かかぶらない

323 名前:デフォルトの名無しさん :04/07/05 00:19
RegisterWindowMessageとか。

324 名前:デフォルトの名無しさん :04/07/05 00:29
>>322
その範囲は、コントロールが使用することがある。
現在は、WM_APP+nが推奨される。

325 名前:デフォルトの名無しさん :04/07/05 00:29
>>321
ここ嫁
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/Windowing/MessagesandMessageQueues/MessagesandMessageQueuesReference/MessagesandMessageQueuesMessages/WM_USER.asp

326 名前:デフォルトの名無しさん :04/07/05 00:30
>>322
残念、正解はWM_APP+hoge

327 名前:デフォルトの名無しさん :04/07/05 00:30
今までずっとWM_USER使ってたけど・・・

328 名前:デフォルトの名無しさん :04/07/05 00:31
WM_USER through 0x7FFF Integer messages for use by private window classes.
WM_APP through 0xBFFF Messages available for use by applications.

なるほどね。WM_USERはウィンドウクラス用、WM_APPはアプリ用ってことか。

329 名前:デフォルトの名無しさん :04/07/05 00:37
>>324
>>326
回答がかぶるのを防止するには何番から使い始めるのがいいでしょうか

330 名前:321 :04/07/05 00:39
みなさまありがとうございます・・・。夜中だというのに
スレの回転が速い・・・。

331 名前:デフォルトの名無しさん :04/07/05 01:17
他のプロセスのウインドーのアクティブを変えるにはどうやればどうやればできますか?

332 名前:デフォルトの名無しさん :04/07/05 02:41
ttp://www.wisecart.ne.jp/fs/Item/item_zoom.asp?mart_id=guest&item_num=14

333 名前:デフォルトの名無しさん :04/07/05 03:24
ファイルオープンダイアログを自作する必要が出たのですが、
ファイルオープンダイアログの中で表示しているディレクトリの中身を
リアルタイムに更新するにはどうすれば良いでしょうか。

標準のダイアログを見てると、何かメッセージを受け取っているようですが
それを受け取れるようにするにはどうすれば良いのかわかりません…

334 名前:デフォルトの名無しさん :04/07/05 03:32
FindFirstChangeNotification

335 名前:デフォルトの名無しさん :04/07/05 04:34
Win2k以降でよければファイル名まで知らせてくれるAPIあったよな。名前忘れたけど。

336 名前:デフォルトの名無しさん :04/07/05 04:40
ぐぐったら見つかった。
NT3.51 SP3 以降
ReadDirectoryChangesW()
2K 以降
SHChangeNotifyRegister()

337 名前:デフォルトの名無しさん :04/07/05 11:31
>>333
むしろファイルオープンダイアログをいじるほうが楽だったりして…

338 名前:デフォルトの名無しさん :04/07/05 15:12
hEdit = CreateWindow("EDIT",〜
で作成し画面に貼り付けたエディットウインドウを
一時的に非表示にしたいんですけど簡単にできますか?


339 名前:デフォルトの名無しさん :04/07/05 15:13
ShowWindow()

340 名前:338 :04/07/05 15:25
>>339
いけました,サンクス.

341 名前:デフォルトの名無しさん :04/07/05 15:32
たまにHideWindowで探して鬱になる漏れ・・orz

342 名前:デフォルトの名無しさん :04/07/05 20:39
>>333
まず、その必要を無くせ。

343 名前:デフォルトの名無しさん :04/07/05 20:46
>>333の欲しい答えはOPENFILENAMEのlpfnHookの事のような気がする。

344 名前:デフォルトの名無しさん :04/07/05 22:49
VB6.0の質問です
IntegerをByte配列に変換したいのですがAPIのCopyMemoryを使って
Dim data(1) As Byte
Dim a As Integer

a=3000
CopyMemory(data(0),a,2)

とやると明らかに化けた数値がdata()に入ってしまいます
この状態を解消するやりかたをどなたか教えてください

345 名前:デフォルトの名無しさん :04/07/05 22:52
VBのことは知らんが、Integerは4バイトとか言うオチではないよね?

346 名前:デフォルトの名無しさん :04/07/05 22:56
CByte

347 名前:デフォルトの名無しさん :04/07/05 23:41
>>344
意図がわからん。手元でやってみた限りではdata(0)は184、data(1)は11で、
(11*256)+184=3000。これは別段おかしな動作ではないと思うが?

>>345
VB6のIntegerは2バイトだね。

関係ないけど、VBだとDATAってステートメントじゃなくなってるんだな。
dataって変数名でドキドキしてしまった(笑

348 名前:デフォルトの名無しさん :04/07/06 07:00
>>333
すでにいろいろヒントが出てますが、漏れも勝手な類推に基づき、キーワードを提供。
stc32


349 名前:デフォルトの名無しさん :04/07/06 09:52
こんなことやってるの俺だけかな?

namespace std {
#ifdef UNICODE
typedef wstring TSTRING;
typedef wstringstream TSTRINGSTREAM;
#else
typedef string TSTRING;
typedef stringstream TSTRINGSTREAM;
#endif
}



350 名前:デフォルトの名無しさん :04/07/06 10:07
>>349
この方がシンプルじゃないかい?

namespace std {
typedef basic_string<TCHAR> TSTRING;
typedef basic_stringstream<TCHAR> TSTRINGSTREAM;
}

351 名前:デフォルトの名無しさん :04/07/06 10:24
動けばどっちもおなじだろ

352 名前:デフォルトの名無しさん :04/07/06 10:27
>>351
んなこたぁない

353 名前:349 :04/07/06 11:19
>>350
おお。全然気づかんかった。
サンクス


354 名前:デフォルトの名無しさん :04/07/06 14:37
>>131
>129に絡んで、リストビューの中のチェックボックスをオン、オフしたときに
>反応を得るにはどうすればよいのでしょうか?

前に LVN_ITEMCHANGED と書いた者だが。

俺のプログラムでは必ず1つはチェックされている事が必要なので,
LVN_ITEMCHANGING で最後の1つのチェックが外されようとしているか判定していて,
うまく動作している。

お前は LVN_ITEMCHANGED 自体を受信できていないとか書いていたが,
LVN_KEYDOWN とかも受信できていないのか?






355 名前:デフォルトの名無しさん :04/07/06 16:24
WM_NOTIFY 知らないとか。

356 名前:344 :04/07/06 22:42
>>347
解決できました
Single aをInt(a)でCopyMemoryに放り込んでいたため
おかしな数値になっていました。
ちゃんとinteger変数に代入してやればうまくいきました
変な質問ですいませんでした

357 名前:デフォルトの名無しさん :04/07/07 02:47
すいません。おしえてください。
ウインドウプロシージャとデータの送受信をするにはどうすればいいのでしょうか?
グローバル変数を使えば楽なんでしょうけど、プロの人はそんなことはしないのかなと
思って。

358 名前:デフォルトの名無しさん :04/07/07 03:17
>>357
送受信する相手による。

359 名前:デフォルトの名無しさん :04/07/07 10:07
#include <windows.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int)
{
::Sleep(5000);
return 0;
}

と、コンパイルして実行するとカーソルが砂時計に変わりますが、
カーソルを変化させないようにするにはどうしたらいいのでしょうか?

360 名前:357 :04/07/07 11:32
>>358
たとえばウインドウから子ウインドウを作って、それぞれのプロシージャ間でやりとり
したいデータがある場合はどうすればよいのでしょうか?

361 名前:357 :04/07/07 11:51
普通は関数間でやりとりしたいのなら引数で渡すとか、関数の返り値を使うとか
すると思うのですが、プロシージャは引数が決まっているからそういうことは
できないですよね?

362 名前:デフォルトの名無しさん :04/07/07 12:07
SendMessage(hwnd_dst, WM_APP+α, (WPARAM) length, (LPARAM) pointer)
で大抵のデータは送れるわけだが。

俺なら同一スレッド内ならウィンドウプロシージャ無視して直接対象ウィンドウを管理してるオブジェクトのメンバ関数呼び出すが。

363 名前:デフォルトの名無しさん :04/07/07 12:34
>>359
未確認ですが。。
呼び出し側のCreateProcessのSTARTUPINFOで
STARTF_FORCEOFFFEEDBACKを指定。

364 名前:デフォルトの名無しさん :04/07/07 13:31
>>361
CreateWindow()/CreateWindowEx() の最後のパラメータも使ってあげてね♪
やり取りしたいデータのポインタか、その構造体のポインタを渡せば幸せになれるかも。

365 名前:デフォルトの名無しさん :04/07/07 13:44
プリンタのプロパティから設定できる「印刷後ドキュメントを残す」を、プログラム側から設定したいのです。
GetPrinterを使って、PRINTER_ATTRIBUTE_KEEPPRINTEDJOBSの値を調べるところまではできたのですが、
値を設定するにはどうしたらよいでしょうか?
お知恵をお貸しください。

366 名前:デフォルトの名無しさん :04/07/07 13:54
>>361
基本的には>>362でいいと思うけど、
WndPrco間の通信はマルチスレッド処理になるから、処理順とか資源管理には気をつけてね。
デッドロックとか分かりにくいバグ引き起こしたりするから。


367 名前:デフォルトの名無しさん :04/07/07 14:23
>>363
dクス!

368 名前:デフォルトの名無しさん :04/07/07 14:24
グローバル変数使えばいいじゃん
そんなことこだわるほうが馬鹿のすること

369 名前:357 :04/07/07 14:40
>>362
>SendMessage(hwnd_dst, WM_APP+α, (WPARAM) length, (LPARAM) pointer)
>で大抵のデータは送れるわけだが。
なるほど。
ありがとうございます。

>俺なら同一スレッド内ならウィンドウプロシージャ無視して直接対象ウィンドウを管理してるオブジェクトのメンバ関数呼び出すが。
すいません。
素人なんでもう少し詳しく教えていただけないでしょうか?


>>368
>グローバル変数使えばいいじゃん
>そんなことこだわるほうが馬鹿のすること
そうなんですか?
自分は所詮素人なんでグローバル変数をがんがん使えばいいのかなという気もしますが・・
プロの人もそうなんでしょうか?

370 名前:デフォルトの名無しさん :04/07/07 15:02
慣れてくるまで、簡単な方(理解しやすい方)を使った方がいいぞ
そうして、動くものを完成させるのが、最も重要なことだよ
そんなところで悩んでいたら、いつまで経っても完成しないよ

そのうち、いろいろな方法を覚えてきて、改良を加えればいい話。

371 名前:デフォルトの名無しさん :04/07/07 17:20
質問です。
CreateWindowでウィンドウつくってその親ハンドルをもとにコードでボタン等を配置するのではなくて、
VBみたいに、ウィンドウ(フォーム)にボタンなどはりつけたウィンドウを、はじめからよべませんか?
リソースでつくってよぶのかと思ったんですが、リソースではダイアログしかつくれないし、
ダイアログだとアイコンが使えないので意図とちがうので。


372 名前:デフォルトの名無しさん :04/07/07 17:25
>>369
グローバル変数はアクセスそれ自体は簡単だけど、
データ更新の通知とか内容の有効性とかアクセス排他とか、
外堀をきちんと埋めておかないと意外なところで逆襲食らいがちなので、
一番使い方の難しい手法だったりする。分かっててやる分には勝手だけどね。

専用の仕組みがあるのなら、一見難しいようでもそれを使うのが一番簡単ってのはよくある話。
というのは、必要性があるからこそそういう仕組みが作られてるからで。

単純に++してるだけだと安心してたら、マルチプロセッサにもってった途端に破綻したことあったな。ハハハ

373 名前:デフォルトの名無しさん :04/07/07 17:28
>>371
無理。
どうしてもやりたかったらVBからCで作ったDLLを呼び出すとかそういうことを考えてみたら?

374 名前:デフォルトの名無しさん :04/07/07 17:33
>>373
そうなんですか。
じゃあ地味にコードかいてコンパイルして表示しては配置を直さないといけないんですね。

375 名前:デフォルトの名無しさん :04/07/07 17:48
>>371
アイコンって、CTRL+ALTしたときとかに出てくるアレのことなら、
WM_INITDIALOGあたりでWM_SETICON投げればダイアログにも付けられるけど?

376 名前:デフォルトの名無しさん :04/07/07 17:49
>>375
ALT+TABだった。冷房入れてくる。

377 名前:デフォルトの名無しさん :04/07/07 18:04
>374
ダイアログつったって結局表示さすときの制御の違いなんだから、ダイアログリソースをCreateWindowして
ちょこっと設定してやれば普通のオーバーラップウィンドウとして使えると思うぞ。


378 名前:デフォルトの名無しさん :04/07/07 18:24
>>374
お手軽にやるなら、VC++ で MFC 使って CFormView とかでも出来るけど、
見かけだけの問題なら、>>375 のいうようにダイアログで処理するのが簡単。

379 名前:デフォルトの名無しさん :04/07/07 18:24
>>377
>ダイアログリソースをCreateWindowして
まさにそれが知りたいのです。どうやるんですか?

380 名前:デフォルトの名無しさん :04/07/07 20:08
WTL入れてダイアログベースでプロジェクトを開始すればOK


381 名前:デフォルトの名無しさん :04/07/07 20:59
>369
社長、Windowのクラス化というのをご存じでしょうか?

詳しく話を聞かせるのは面倒なので、自分で調べて。

382 名前:デフォルトの名無しさん :04/07/07 21:48
RegisterClass()で登録するウインドウのクラスのことでしょうか?
それぐらいの知識しかありません。

383 名前:デフォルトの名無しさん :04/07/07 22:10
C++で書いてるとはひとことも出てきていないのだが。

384 名前:デフォルトの名無しさん :04/07/07 22:30
>382
ちゃうちゃう。そのウィンドウクラスじゃなくて、C++のclass。

ウインドウプロシージャをクラス内で定義することによって、
メンバを色々出来るようにすること。

>383
>〜メンバ関数呼び出すが。
に反応しているからC++だと決めつけていた。
もしCなら、staticとグローバル関数で妥協なんてのもいかが?

385 名前:デフォルトの名無しさん :04/07/07 22:43
>>384
構造体だろがC++のクラスだろうがHWNDとの対応関係が必要というのがここまでのお話なんだが

386 名前:デフォルトの名無しさん :04/07/07 23:38
>>379
CreateWindowのウィンドウクラス指定のとこにMAKEINTRESOURCE(IDD_DLG)してやりゃいいかと思ってたが、そう甘くなかった。
CreateDialogでできたウィンドウをSetClassLongをつかって背景色やスタイルとかプロシージャを書き換えるといい。

( っ・ω・)っ話
⊂(・ω・⊂ )

漏れもWinMain側で作ったデータをウィンドウプロシージャに使わせようと思って、
調べてるうちにSetProp/GetPropつーAPIを見つけたんだが、これってそういう用途に使っていいものなのか?
このAPIの用途知ってるやつ、教えてください。_|\●__

387 名前:デフォルトの名無しさん :04/07/08 00:07
>>369
他には WM_COPYDATA 使え

388 名前:デフォルトの名無しさん :04/07/08 00:27
>>386
うほ、SetClassLongなんてAPIあったのか・・・。

Set/GetProp系はHWNDに対して、キーに対応する値を複数セット対応づけられるものらしい。
GWL_USERDATAみたいに単一の値である必要がないので、
VBのプロパティを独自に追加できるような感じで、便利っぽい。

>>387
WM_COPYDATAはプロセス間のメッセージ送信に使う奴だあkら、
プロセス内で使うにはちーとオーバー気味な気がする。
(確か内部的にファイルマッピングオブジェクト使うはず)

389 名前:デフォルトの名無しさん :04/07/08 01:20
>>388
サンクスコ。*Propの使い方がわかったよ。英語版MSDNだとどうも感じがつかめなくて、
VBみたいなIDEのプロパティリストをつくるための、特殊なタイプのAPIかと思ってたよ。


390 名前:デフォルトの名無しさん :04/07/08 01:35
>>384
C++じゃなくてCオンリーでやっています。
でも、>>385の話だとC++にすれば解決するって問題でもないってことですかね?

391 名前:デフォルトの名無しさん :04/07/08 02:38
サブクラス化ってのはC++とはまた別なんだけど、
その辺と混乱してる人いない?

そもそも質問者がどういうレベルなのかで
回答者達の間で解釈が幾つかに分かれてる気がする。


392 名前:デフォルトの名無しさん :04/07/08 08:42
>>386
WinMainはウィンドウを生成するルーチンだけにしたほうがいい。
いろんな初期化とかはWM_CREATEをキャッチしたときにやるべき。
複数のウィンドウにまたがる処理ならデータを渡す方法になやむよりも、
グローバル変数にした方がスマートと思う。

393 名前:デフォルトの名無しさん :04/07/08 09:29
>>392
そのウィンドウが専ら関係するデータならWM_CREATEでやるほうがいいけど、
ウィンドウ間にまたがって使用されるような共通性の高いデータであるならWinMainでやるほうが適切。
case by case。

それにグローバル変数には>>372のような問題もあるので、何がいいかは実装次第。

ところで、この話まだ続けるならこっちでやらない?
http://pc5.2ch.net/test/read.cgi/tech/1049790146/

394 名前:392 :04/07/08 09:58
>>393

>>392
「複数のウィンドウにまたがる処理ならデータを渡す方法になやむよりも、
グローバル変数にした方がスマートと思う。」
の「データ」というのは「WinMainで作ったデータ」の意です。
言葉足らずでスマソ。
つまり完全に>>383氏に同意ってことです。
それと誘導thx。

395 名前:デフォルトの名無しさん :04/07/08 10:54
>>391
>319-320 ですよ。

396 名前:デフォルトの名無しさん :04/07/08 11:05
BMPを表示させる時に、リソーススクリプトを使えば表示出来るのですが、
LoadBitmap()で直接ファイル名を指定すると画像読み込みに失敗してしまいます。

リソーススクリプトを使わずにファイル名で表示させる方法はありませんか?

397 名前:デフォルトの名無しさん :04/07/08 11:23
>>396
LoadImage

398 名前:デフォルトの名無しさん :04/07/08 11:30
>>397
サンクスです

399 名前:デフォルトの名無しさん :04/07/08 14:06
>>386
使ってもいいよ

そのAPIを使っているかはしらないけど、
OLE DnDのドロップターゲットになると
自動で付けられるね。

400 名前:デフォルトの名無しさん :04/07/08 17:03
MSNMessengerの通知ウインドウみたいに
タスクトレイの辺りで小さく表示されるウインドウを
簡単に作るライブラリとか無いですかね?
CreateWindowとかで毎回小さなウインドウを作ればいいのかな?


401 名前:デフォルトの名無しさん :04/07/08 17:44
毎回作らんでも不要なときはShowWindow(,SW_HIDE)しとけばいいんじゃないか?

402 名前:デフォルトの名無しさん :04/07/08 19:30
>>392,399
またレスキターヽ( ´ー`)ノ
ほんとありがとうございます_|\○_

403 名前:デフォルトの名無しさん :04/07/08 23:47
内田こねりで抜きまくり

404 名前:403 :04/07/09 00:05
こんな恥ずかしい誤爆初めて

405 名前:デフォルトの名無しさん :04/07/09 00:08
403以前の君のレス番を書いていてくれたらもっと面白かったんだけどな:D

406 名前:デフォルトの名無しさん :04/07/09 00:35
晒しage

407 名前:デフォルトの名無しさん :04/07/09 02:16
普段はリファレンス検索も面倒がる俺が
内田こねりを無意識にgoogle (・∀・)ホホウ ナカナカ

408 名前:デフォルトの名無しさん :04/07/09 07:15
どなたかインスタンスハンドルからメインウィンドウのウィンドウハンドルを取得する方法知っている方いらっしゃいますか?
ShellExecute の戻り値を使いたいのです。


409 名前:デフォルトの名無しさん :04/07/09 07:52
>>408
ShellExecuteの戻り値って、16bit Windowsじゃなきゃ意味ないよ。

って、16bit Windows使ってたらスマソ

410 名前:デフォルトの名無しさん :04/07/09 10:12
>>409
レスありがとうございます。
本当ですね。MSDNをちゃんと読んだら書いてありました(汗
一応32ビットでやってるのでShellExecuteの戻り値はエラーチェックにしか使えないわけですね・・・。
戻り値の型だけ見て早合点してしまいました。
不注意ですみません。

初めはCreateProcessで同様のことをやってみようと思ったのですが、取得できるのがPROCESS_INFORMATION構造体でプロセスとスレッドのハンドルとIDってとこでしょうか。
ここからメインウィンドウのハンドルを取得する方法がやっぱりわかりません。
果たしてそんなことは可能なのでしょうか?


411 名前:デフォルトの名無しさん :04/07/09 10:15
>>408
ShellExecuteEx()を使ってプロセスハンドルを取得。
後はGetProcessId()、EnumWindows()、GetWindowThreadProcessId()の組み合わせ。

412 名前:デフォルトの名無しさん :04/07/09 10:17
スレとは関係なくて申し訳ないんですが
アプリケーションエンジニア試験とネットワークのテクニカルエンジニア試験って
どっちのほうを先にやるのが一般的なんですか?
っていうかどっちのほうが簡単ですか?
あほな質問でごめんなさい

413 名前:デフォルトの名無しさん :04/07/09 10:49
スレと関係ないとわかってなぜこのスレに書く?
お前は吉野家コピペか。

414 名前:デフォルトの名無しさん :04/07/09 10:51
>>412
どっちでもいい。
君がとりたい方をとりたまえ。

415 名前:デフォルトの名無しさん :04/07/09 10:52
>>413
まぁまぁ。
妥当なスレを見つけられなかったんだろ。
そういきりたつなよ。

416 名前:デフォルトの名無しさん :04/07/09 10:53
>411
便乗質問なんだけど、
GetProcessId()って見つからないのだが、ハンドルからIDを求める方法ってあるの?

>410
CreateProcess()もありなら
>411に追加で、探索範囲が狭くなるけど、EnumThreadWindows()なんてのもある。

417 名前:デフォルトの名無しさん :04/07/09 11:22
GetProcessId は XPSP1,Server2003 or later
汎用的な方法はHWNDに対してグローバルフックしてGetCurrentProcessIdかな

418 名前:417 :04/07/09 11:34
根本的に間違っていた
2000Pro以降ならNtQueryInformationProcessかな


419 名前:デフォルトの名無しさん :04/07/09 13:12
Win32って、例えばウィンドウを分割した場合、
2つのViewにそれぞれメッセージループを実装することってできますか?

420 名前:デフォルトの名無しさん :04/07/09 13:34
他のプロセスのウインドーをしらべるのに
ウインドーに書いてある文字以外を使って
プログラムがわかる方法おしえてください

421 名前:デフォルトの名無しさん :04/07/09 13:43
>>420
なにから何を導き出したいのか曖昧だぞ。

422 名前:デフォルトの名無しさん :04/07/09 13:56
>>419
チャイルドウィンドウが独自のメッセージポンプ(UIスレッド)を持つことは可能ですよ。
でも「Viewにそれぞれメッセージループを実装する」っていう感じではなくて、
別スレッドを作成してそちらでチャイルドウィンドウを作り、そのウィンドウのメッセージを
処理するって形になります。

423 名前:デフォルトの名無しさん :04/07/09 14:28
>>422
ありがとうございます。
結構面倒そうですね。

424 名前:デフォルトの名無しさん :04/07/09 14:30
通常、intはfprintf(fp,"%d",xxxx);と、charはfprintf(fp,"%s",xxx);
というようにファイルに書き込んでいますが、COLORREFはどうやってやられてますか?
あと、COLORREF=RGB(赤,緑,青);としますが、COLORREFから赤だけとか、青だけとかの値を
抽出することってできますか?

425 名前:デフォルトの名無しさん :04/07/09 14:38
>charはfprintf(fp,"%s",xxx);
そんなやつぁいねえ。
>ファイルに書き込んでいますが、COLORREF
%08x
つか、Win32APIじゃねえな、この質問は。
>COLORREFから赤だけ
Get[RGB]Value

426 名前:424 :04/07/09 14:50
有難うございます。
>>charはfprintf(fp,"%s",xxx);
>そんなやつぁいねえ。
では、どうしますか?
cout << COLORREF << endl;とか?


427 名前:デフォルトの名無しさん :04/07/09 15:00
COLORREFの定義がどうなってるかも知らなさそうな勢いだな・・

428 名前:デフォルトの名無しさん :04/07/09 15:26
>>424=>>426
>>>charはfprintf(fp,"%s",xxx);
>>そんなやつぁいねえ。
>では、どうしますか?
アナタ C シッテマスカ?
fprintf(fp, "%c", xxx);

429 名前:424 :04/07/09 15:28
>>428
有難うございます。
つうかcharは
char xxx[10+1];

のつもりで書きました。

スレ汚しすみません。有難うございました。

430 名前:デフォルトの名無しさん :04/07/09 15:40
lstrcpyやlstrlenの先頭にある 'l' って何かの略なんでしょうか?
知人は「L"text" の 'L' じゃね〜の?」って言ってました。
ご存知の方、教ぇてけろ。

431 名前:デフォルトの名無しさん :04/07/09 16:27
DirectXでプログラミングをするときは、
やはりWin32を使ったほうがいいのでしょうか?
再生したり、フレームからビットマップを取り出してウィンドウに貼ったり、
そいつをポップアップメニューでいろいろ処理したり、といったことをしたいのですが。

432 名前:デフォルトの名無しさん :04/07/09 16:37
いいです。

433 名前:デフォルトの名無しさん :04/07/09 16:49
>>431
用途と、実装者の能力による。
今時DirectXくらいどの言語でも扱えるから、自分の得意なのでやってみればいい。


434 名前:デフォルトの名無しさん :04/07/09 16:53
よくこんな質問に答えられるなあ

435 名前:デフォルトの名無しさん :04/07/09 17:11
それがお前との差

436 名前:デフォルトの名無しさん :04/07/09 17:21
>>430
LPTSTR lstrcpy(
LPTSTR lpString1, // address of buffer
LPCTSTR lpString2 // address of string to copy
);

Lは "long"
16ビットWindowsは、ポインタサイズを"near" "long"で区別していた。
32ビットWindowsは区別しない。

437 名前:デフォルトの名無しさん :04/07/09 17:31
>>435
頓珍漢な質問にもっと頓珍漢な答えが出来るヤシとそうでないヤシとの差だな。
>>436
nearとの対比ならfarだと思う。


438 名前:デフォルトの名無しさん :04/07/09 17:48
どこかで WINAPI の
メッセージやマクロや関数を大量に載せてたHPを
見かけたんですが、改めて探すと発見できません。
どこかいいサイト知りませんか?


439 名前:デフォルトの名無しさん :04/07/09 17:51
MSDN

440 名前:430 :04/07/09 18:03
>>436
ロングポインタの L だったんですね、サンクスです。

441 名前:デフォルトの名無しさん :04/07/09 18:26
>>436

Large の L じゃないのか(笑)

442 名前:438 :04/07/09 18:30
>>439
dクス。
いいところを教えてもらいました。


443 名前:デフォルトの名無しさん :04/07/09 18:57
far はー……DOSか。

444 名前:デフォルトの名無しさん :04/07/09 19:13
LはLoveのL♪

445 名前:デフォルトの名無しさん :04/07/09 19:29
>>441
でもさ、LP〜って型はこういう具合に山ほどあるよ
typedef int INT, NEAR *PINT, FAR *LPINT;
(NEAR/FARはWin32では#defineで消される)

446 名前:デフォルトの名無しさん :04/07/09 20:48
Farは元々はDOS時代の用語で、8086のリアルモードでセグメント境界を越えるポインタのこと。
セグメント:オフセットで表記する、1Mバイト空間を指す物理アドレス。

Nearは16bitのポインタで、Win16(16bitプロテクトモード)の普通のポインタ。
なお物理アドレスは「セグメントセレクタ(16bit):オフセット(16bit)」の32bitで表現するので、
リアルモードとの連想でこれをFarポインタと呼んだ。

Longは32bitのポインタで、Win32(32bitプロテクトモード)の普通のポインタ。
Nearを16bit→32bitに拡張したもので、オフセットだけでWin16のFarポインタと同様の
32bit空間を表現できるようになった。「これがNearとFarの区別がなくなった」という言葉の意味。

Win32でも「セグメントセレクタ(16bit):オフセット(32bit)」をFarポインタと呼ぶかもしれないけど、
これは16bitプロテクトモードと違って物理アドレスを意味しないし、用語としても一般的ではない。かも。

447 名前:デフォルトの名無しさん :04/07/09 21:13
lpszはlong pointer string terminated by zeroの略

448 名前:デフォルトの名無しさん :04/07/09 21:14
long pointer to a string terminated by zeroだ

449 名前:デフォルトの名無しさん :04/07/09 21:20
>>447
こう言う略語の元ネタが分かるサイトってどっかないかなぁ?
MSDNじゃ分からなかったよ(´・ω・`)

450 名前:デフォルトの名無しさん :04/07/09 21:26
どうでもいいけど、lpszについてはASCII string terminated by zeroのASCIZなんかを知ってると理解しやすいのかな。
略語の元ネタをまとめたサイトは・・・知らないけど命名規則としてハンガリアン記法を使ってるからこの辺が多少参考になるかも。
http://masafumi-t.cool.ne.jp/ready3.htm

# つーか俺の場合intのプリフィックスにはnを使ってるけどなぁ・・・

451 名前:デフォルトの名無しさん :04/07/09 21:28
(・∀・)ウソツキー ASCIZハ ASCII with Zeroノリャクダヨー

452 名前:450 :04/07/09 21:31
orz

453 名前:デフォルトの名無しさん :04/07/09 21:39
ところでMSは相当いい加減なハンガリアン記法なんとかしてほしい。

454 名前:デフォルトの名無しさん :04/07/09 21:42
>>453
.NETでは止めたんだけどな。過去の資産には手が回らんらしい。

つか今更弄ったら混乱するだけだと思うぞ。



455 名前:デフォルトの名無しさん :04/07/09 22:02
>>418
Microsoftはサポート対象にしてないが
NT系ならもっと前からNtQueryInformationProcessは使えるけどね

456 名前:デフォルトの名無しさん :04/07/09 22:36
exeヘッダのMZは?

457 名前:デフォルトの名無しさん :04/07/09 22:39
MZ80K?



458 名前:デフォルトの名無しさん :04/07/09 22:52
Mark Zbikowsky

459 名前:デフォルトの名無しさん :04/07/09 22:54
Mark Zbikowski

460 名前:デフォルトの名無しさん :04/07/09 22:55
MS-DOZ

461 名前:デフォルトの名無しさん :04/07/09 23:10
さいた まんぞう

462 名前:デフォルトの名無しさん :04/07/09 23:55
祝一平


463 名前:デフォルトの名無しさん :04/07/10 00:53
>>459
何の冗談かとおもったら、それほんとなのか・・・勉強になった。まとめてみる。

・MZ
DOS用EXEのヘッダ。DOS2.0開発責任者の一人、Mark Zbikowski氏のイニシャルに由来。
・NE
Win16用EXEのヘッダ。New Executableの略。
・LE
仮想デバイスドライバ(VxD)のヘッダ。Linear Executableの略。
・PE
Win32用EXEのヘッダ。Portable Executableの略。
・LX
OS/2用EXEのヘッダ。Linear eXecutableの略?


464 名前:デフォルトの名無しさん :04/07/10 01:39
Win32API とは全く関係ない話題だが、
えらい勉強になったゾ

465 名前:デフォルトの名無しさん :04/07/10 02:02
今のexeでもMZから始まってるんだよな。
WinFXでもMZだったりするのかな。

466 名前:デフォルトの名無しさん :04/07/10 02:07
WinFXの雛形であろう.NETのコンパイラが吐くバイナリもMZ→PEだからな。一応後方互換性のためとなってるけど
実際のところは単にthis program can't be run in dos modeって出すだけだ罠

467 名前:デフォルトの名無しさん :04/07/10 02:22
すでに、スタブを実行させるのすら面倒がいる罠。

468 名前:デフォルトの名無しさん :04/07/10 05:05
補足トリビア。
昔のDOSではMZではなくZMでもOKだった。

469 名前:デフォルトの名無しさん :04/07/10 11:29
タスクバーに表示されるWindow(Alt+Tab時に表示されるWindow)を列挙したいんだけど
EnumWindowでやると余計な者まで一杯出てしまいます。
なんでGetWindowLongでStyleをとってWS_CAPTIONとかで選り抜いてみたんだけど
それでも多いんですよ。これやってる人たくさんいると思うんだけど
やり方を上手くググれませんでした。

たしかCreateWindowしたときにタスクバーに入るかどうかはStyleで
決まってたと思ったけど上のやり方では無いんでしょうか

470 名前:デフォルトの名無しさん :04/07/10 11:35
>>469
(親がデスクトップ || NULL) && WS_EX_TOOLWINDOWでない && HIDEされてない

471 名前:デフォルトの名無しさん :04/07/10 12:02
>>470 感謝!

472 名前:デフォルトの名無しさん :04/07/10 13:02
TVINSERTSTRUCT構造体のANSIバージョンからUNICODEバージョンへ
若しくはその逆の変換をしたいと思っています。
しかし、メンバの中にunionが存在するので
普通にコピーしていくだけじゃ駄目な気がします。
この場合はどのようにすればいいのでしょうか。

473 名前:デフォルトの名無しさん :04/07/10 13:52
マウスカーソルの現在位置を知るときにGetCursorPosだと
スクリーン全体のx,y座標になってしまいます・・
ウインドウでのx,y座標を知るにはどうすればいいですか?

474 名前:デフォルトの名無しさん :04/07/10 14:00
XPのタスクバーでグループにまとめられるかどうかは
どういう基準で判断してるんでしょうか
>>473
ScreenToClient

475 名前:デフォルトの名無しさん :04/07/10 14:04
>>474
ありがとです

476 名前:デフォルトの名無しさん :04/07/10 14:08
同一プロセス、同一クラス

477 名前:デフォルトの名無しさん :04/07/10 15:03
>>472
IE4未満を指定すればunionはでてこないし、あっても普通にコピーしていい。
当たり前だけどその後item(or itemex)のpszTextを変換しろよ。

478 名前:デフォルトの名無しさん :04/07/10 15:05
Windowsプログラムで使われるデータ型(HWNDやHDCなど)を
VC++6でデフォルト青文字にて表示させるためのファイルが
あったと思うのですが、配布場所をご存じないでしょうか

確かUser.datとかそんな感じのファイル名だったと思うのですが

479 名前:デフォルトの名無しさん :04/07/10 15:12
ツールバーでボタンを右詰にするにはどうすればいいのでしょうか?


480 名前:教えてください :04/07/10 15:51
とあるサンプルコードのウィンドウプロシージャに
case WM_LBUTTONUP:
PlaySound(TEXT("laugh.wav"), NULL, SND_ASYNC | SND_FILENAME);
return 0;
こんなのをつけてみたのですが
外部参照1が未解決です、とエラーがでてしまいます。
laugh.wavをプロジェクトフォルダの中にいれてみたり、デバッグフォルダに
いれてみたり試してみたのですが、うまくいきません。
ウィンドウプロシージャに上みたいなコードを付け加えてlaugh.wavをフォルダに
いれるだけでは、だめなんでしょうか??
VC6.0PROを使っています

481 名前:デフォルトの名無しさん :04/07/10 15:52
winmm.lib

482 名前:デフォルトの名無しさん :04/07/10 16:02
>>478
UserType.dat

483 名前:デフォルトの名無しさん :04/07/10 16:05
>>480
少なくともlaugh.wavは無関係。

484 名前:デフォルトの名無しさん :04/07/10 16:11
>>482
レスありがとうございます、無事編集済みのを見つけることができました

ひとつ貼っておきますね、ここの人にも感謝しつつ
ttp://www.beginthread.com/Article/dev.null/UserType.Dat/

485 名前:デフォルトの名無しさん :04/07/10 16:39
裏描画域を作るCreateCompatibleDCやCreateCompatibleBitmapは、
GetDC、BeginPaint、どちらのHDCから作っても同じのが出来るのでしょうか。

486 名前:デフォルトの名無しさん :04/07/10 16:42
>>485
できるけどBeginPaintだとEndPaintまでしか使えないよ
WM_PAINTから抜けたら終わりだよ

487 名前:485 :04/07/10 16:47
>>486
ゲーム開始時に作って終了時に消す裏描画域を作りたいのです。
表示する内容を常に保持しておいて、
WM_PAINT、それ以外、兼用として使いたくて。

488 名前:デフォルトの名無しさん :04/07/10 16:52
>>487
GetDCで無問題

489 名前:485 :04/07/10 16:55
>>488
分かりました。ありがとうございました。

490 名前:デフォルトの名無しさん :04/07/10 17:25
つーかGetDC(NULL)。

491 名前:デフォルトの名無しさん :04/07/10 18:56
WinMainで使っていた変数をCreateThread関数で作ったスレッドに渡すにはどうすればいいですか?


492 名前:472 :04/07/10 18:57
>>477
サンクスです。
よく考えたら構造体のサイズはAもWも同じなので
memcpyしてpszTextだけ挿げ替えて使用するようにしました。

493 名前:デフォルトの名無しさん :04/07/10 19:05
>491
第四引数LPVOID lpParameterを用いる。

494 名前:491 :04/07/10 21:07
>>493
変数が一つだとそれでいけるんですけど、3つくらい渡したい変数があってどうすればいいか悩んでるんです

495 名前:デフォルトの名無しさん :04/07/10 21:08
>>494
構造体

496 名前:デフォルトの名無しさん :04/07/11 00:31
>>476
IEを別プロセスにしていてタスクマネージャ上でも明らかに別プロセスなのに
タスクバー上では同じグループになっているから違うと思います。

497 名前:名無しさん@そうだ選挙に行こう :04/07/11 11:25
マルチスレッドで作れるスレッド数に上限ってありますか?


498 名前:名無しさん@そうだ選挙に行こう :04/07/11 11:42
>>497
http://www.microsoft.com/japan/msdn/library/ja/jpdllpro/html/_win32_createthread.asp?frame=true
> 解説
> 1 つのプロセスが作成できるスレッドの数は、利用可能な仮想メモリによって制限されます。
> 既定では、各スレッドに 1MB のスタック空間が割り当てられています。
> そのため、最大 2,028 個のスレッドを作成できます。
> また、既定のスタックサイズを減らすことにより、さらに多くのスレッドを作成することもできます。


499 名前:名無しさん@そうだ選挙に行こう :04/07/11 11:50
スタックを使わないプログラムを書けばメモリーしようしないでいくらでもつくれるの?

500 名前:名無しさん@そうだ選挙に行こう :04/07/11 11:56
今だ!500ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
        ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ


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