Win32API質問箱 Build ..
[2ch|▼Menu]
331:デフォルトの名無しさん
08/05/23 19:44:23
>>328
志村!足りない!足りない!

332:デフォルトの名無しさん
08/05/23 19:45:32
と思ったら、BitBltのあたりでいきなりはしょってるなw

333:デフォルトの名無しさん
08/05/23 19:46:42
"Programing"の時点で糞確定だけどな

334:デフォルトの名無しさん
08/05/23 19:47:04
>>328
hDCはBeginpaintの戻り値かps.hdc 使う

335:デフォルトの名無しさん
08/05/24 06:15:24
本当の所、BeginPaintを必ず使わなければいけないという決まりはない。
ただ、これ一回の呼び出しで行われる処理内容を考慮すると、使わない理由が無いな。

336:デフォルトの名無しさん
08/05/24 07:17:06
>>330
それよりお勧めサイト書いてくれたほうがうれしい

337:デフォルトの名無しさん
08/05/24 07:52:52
>>336
英語版MSDN

338:デフォルトの名無しさん
08/05/24 10:56:51
調べても分からなかったので質問させてください
CreateMenuでよくアプリケーション上部にあるFile(F)とか表示(V)のようなメニュー作成しています。
メインウィンドウのサイズを変更したとき、Menuのサイズを変更しないようにしたいです。
メニューの横幅固定で。この場合、メニューサイズを固定するAPIか、メニューの構造体に横幅指定することができるとか
方法がありましたら、ご教示ください。よろしくおねがいします。

環境はVC + SDKです。

339:デフォルトの名無しさん
08/05/24 10:58:48
無理

340:デフォルトの名無しさん
08/05/24 11:35:06
ツールバーで代用するとか
苦労の割に見返りがサイズ固定だけって泣けるけど

341:デフォルトの名無しさん
08/05/24 11:44:03
標準と違う動きをするアプリって違和感があるよね。

342:338
08/05/24 11:48:09
単刀直入に言うと、ウィンドウサイズ変更時にメニューのちらつきをなくしたいです。
勉強中なので間違ってるかもしれないですが、CreateMenuで作成してもWNDCLASSEXで
wc.lpszMenuName=MAKEINTRESOURCE( IDR_MENU);登録にしても、
結局はメインウィンドウの再描画に巻き込まれる形になるので、ちらつきます。
Janeとかのメニューはどうやって実現してるのかなぁ。。

343:338
08/05/24 12:54:04
もうちょっと考えて見ます
お騒がせしました。

344:デフォルトの名無しさん
08/05/24 12:57:53
>>341
IEのメニューはツールバーで出来てるが
コマンドバーって呼ばれてる

WTLにCCommandBarCtrlってクラスがあるけどこれはバグが多すぎてあまり使えない

345:デフォルトの名無しさん
08/05/24 14:20:04
>>344
CCommandBarCtrlのバグって例えばどんな?

346:デフォルトの名無しさん
08/05/24 15:09:32
>>345
とりあえず致命的なのを2点ほど

メニューをクリックするとCommandBarにフォーカスを持って行かれる
→フォーカスを元に状態設定を行っていると正常に機能しなくなる

IEのようなReBar上で右クリックメニューを出すようなのを作っていると
メニューが出ているときにメニュー項目上で右クリックすると落ちることがある
→DoTrackPopupMenuに再入してしまうのが原因なので適当にフラグ立てて回避するしかない


Donut系ブラウザはこの辺のバグを回避するためにCCommandBarCtrlを使っていない
俺もこの辺のバグを回避するためにDonutのソースを参考にして自作した

347:デフォルトの名無しさん
08/05/24 15:10:10
>>338
>メインウィンドウのサイズを変更したとき、Menuのサイズを変更しない
??
ウインドウを小さくした時メニューがはみ出してもいいの?
変なアプリーw

348:デフォルトの名無しさん
08/05/24 15:15:16
サイズ固定でシェブロン出すのよくあるけど。

349:デフォルトの名無しさん
08/05/24 15:15:46
右端に >> を付けたいって事だろ
そういうのはコマンドバーって言うんだよっていうのが以後の流れ

350:デフォルトの名無しさん
08/05/24 15:40:07
APIの話では無いのでスレ違いだと思いますが
Windows XPで外部信号に対して±10mS程度以内で
応答を返すことは可能なのでしょうか?

351:デフォルトの名無しさん
08/05/24 15:51:28
エスパーじゃないしマイナスは厳しいんじゃないか。

352:デフォルトの名無しさん
08/05/24 16:26:25
え、-10ms以内で応答を返せないの?
近頃のWindowsは糞だなぁ

353:デフォルトの名無しさん
08/05/24 16:31:12
さすがのWINDOWSでも、時をかけるのは難しいんじゃないか?

354:デフォルトの名無しさん
08/05/24 16:53:26
待ってられない信号がある。

それはさておき、「何らかのインターネット接続が存在するかどうか」を知る方法はありますか?
今は自分のグローバルIPアドレスに対してpingを打っているのですが、激しく間違っている気がします。

355:デフォルトの名無しさん
08/05/24 16:58:33
それはすれ違いじゃないか?
ネットワーク相談室の方がいい気がする。。

356:デフォルトの名無しさん
08/05/24 17:05:24
Network Managementで接続を列挙するとか
wininetでonline/offlineをとるとか

357:デフォルトの名無しさん
08/05/24 17:31:55
wininet.dll が使えるなら(というか使えない環境のほうがレアだろうが)、
InternetGetConnectedStateEx だろう。

358:デフォルトの名無しさん
08/05/24 17:50:12
>>357
インターネット環境が無いと使えない某ソフトが確かそのAPIでチェックしてたような
勿論nopで埋めうわ何をするやmくぁwせdrftgyふじこlp

359:デフォルトの名無しさん
08/05/24 18:02:39
>>358
日本語でそっち関連の情報を提供してるとこある?
中国語とかならわんさかあるんだけど...

360:デフォルトの名無しさん
08/05/24 18:06:37
そんな物自分で勉強しろよ
スレ違いな上にグレーゾーンな事をここで聞くな馬鹿

361:デフォルトの名無しさん
08/05/24 18:09:26
>>359
英語を苦にしないならMSDN。
ていうか、なんで日本語版にはwininet関数が載ってないんだ。

362:デフォルトの名無しさん
08/05/24 18:22:47
昔はWinAPIの日本語ヘルプが付いてたのに、今やWin95時代から更新止まってる古い情報しか無いのはどうよ
そもそもMSKBですら最近は機械翻訳だらけだし、中国語とかの方が翻訳されてるなんておかしい

もう日本のIT技術者は世界から見捨てられてるという事?

363:デフォルトの名無しさん
08/05/24 18:23:14
>>350
デバイスドライバならともかく、
一介のアプリケーションで100%確実の保証は絶対無理だな。

364:デフォルトの名無しさん
08/05/24 18:24:59
>>362
おかげで、英語を読むことの抵抗感がなくなったから感謝しているw
日本のIT技術者はもっと世界に羽ばたけということだよ。

365:デフォルトの名無しさん
08/05/24 18:26:49
>>362
正解

366:デフォルトの名無しさん
08/05/24 18:32:43
まぁIMEが中国で開発されてるぐらいだから仕方ないか
日本のプログラマはもう用済みなんだろうな

367:デフォルトの名無しさん
08/05/24 18:39:15
英語も中国語もできる俺は勝ち組。



368:デフォルトの名無しさん
08/05/24 18:41:12
>>367
すぐにプログラマから足を洗って商売でも始めるんだ。

369:350
08/05/24 18:41:48
>>351-353
ですな〜
信号を受けて50mS±10mSとかです。

皆さん親切だ。w



370:デフォルトの名無しさん
08/05/24 18:47:08
Windows上であるいじょう、確実な保障はできないが、
そのくらいの精度なら、大抵の環境で余裕だろ。

371:デフォルトの名無しさん
08/05/24 18:47:36
>>369
50±10ms ぐらいなら可能なはず。
Windows のタイマの精度が 16ms ぐらいだから結構ギリだがな。
リアルタイム性を Windows に求めるのは少しつらいかも知れん。

372:デフォルトの名無しさん
08/05/24 18:48:52
そこでRTLinuxですよ、俺は使ったこと無いけど

373:デフォルトの名無しさん
08/05/24 19:16:19
Windowsで精度を求めるなら。
URLリンク(msdn.microsoft.com)(VS.85).aspx

374:デフォルトの名無しさん
08/05/24 19:34:05
ダイアログに関する質問です。
SS_BITMAPを指定してスタティックコントロールを作って画像を表示した場合、画像がウィンドウより大きいとはみ出しますが、StretchBlt()のように固定サイズ内での縮小表示は出来ますか。
事前に何処かで縮小処理を行ったビットマップを読むしかないのでしょうか。

375:デフォルトの名無しさん
08/05/24 19:38:28
>>374
つ SS_REALSIZECONTROL

XP以降でダイアログのビットマップやアイコンが潰れてる元凶

376:350
08/05/24 19:50:25
やはり10mSの精度は無理っぽいですね。
出来たとしても15mSくらいが限界なんでしょうな。

全然分ってないけど、デバイスドライバーにすればタイムスライスの
壁は越えられるのでしょうか。。

377:デフォルトの名無しさん
08/05/24 19:51:39
>>375
手書きでリソースファイルを修正したら出来ました、ありがとうございます。
ResEdit1.4.3のバグでSS_REALSIZECONTROLをtrueにしてもリソースファイルに反映されないのが原因だったようです。

378:デフォルトの名無しさん
08/05/24 20:04:34
CreateWindow関数って使われなくなったのですか?
何故か、自動的にCreateWindowExAと解釈されてしまうのですが……。

ちなみに環境はVC++2008ExpOSはXP使ってます。

379:デフォルトの名無しさん
08/05/24 20:08:38
すみません自己解決しましたorz
マクロのコンパイルエラーだった。

380:デフォルトの名無しさん
08/05/24 20:21:55
>>376
タイムスライスの壁は越えられないこともないが下手な実装だと Windows 全体が不安定になるわな。
デバイス側から割り込みをかけられる機構があるなら手っ取り早い。(割り込みはほぼ最大優先度で処理されるため。)

381:デフォルトの名無しさん
08/05/24 20:51:01
Webダウンローダー等でダウンロードしたファイル名に
?等が入っている場合があるのですが、これは問題ないのですか?

382:デフォルトの名無しさん
08/05/24 20:58:11
>>381
問題あり
ウイルスに感染していると自動的に?等が入る仕組みなので中身を見る前に捨てましょう

383:デフォルトの名無しさん
08/05/24 21:02:10
>>382
例えば
.cgi?name=abcd等では?

384:デフォルトの名無しさん
08/05/24 21:07:51
せめてAPIの質問してくれよ

385:デフォルトの名無しさん
08/05/24 21:12:11
>>384
ファイルの新規作成では?使えないのに
CreateFileが?使えるのは何故ですか?

386:デフォルトの名無しさん
08/05/24 21:14:13
>>376
> Windows XPで外部信号に対して
今実装してる方法では、どうやって信号取得してるの?
もうちょっと話が具体的にならないと、これ以上アドバイスできない。

387:デフォルトの名無しさん
08/05/24 21:14:41
>>385
Explorerのバグだろ
".htaccess"とかも作成できない

388:デフォルトの名無しさん
08/05/24 21:17:57
>>387
バグですか、
?をファイル名に含むファイルをプログラムが生成する事に何か問題はありますか?

389:デフォルトの名無しさん
08/05/24 21:19:35
そんな事知るか
MSに聞け

390:デフォルトの名無しさん
08/05/24 21:20:20
>>389
あなたの予想で構いません

391:デフォルトの名無しさん
08/05/24 21:21:51
>>387
それについてはこういう理由
URLリンク(blogs.msdn.com)

392:デフォルトの名無しさん
08/05/24 21:25:46
>>391
ありがとうございます。

393:デフォルトの名無しさん
08/05/24 21:34:14
>>391
以前その記事を見てバグだと確信した

・拡張子を表示しない設定にしていても".txt"のようなファイル名は拡張子含めて表示すればいい
・拡張子を表示する設定にしていれば".txt"のようなファイルを作成できるようにすればいい
・そもそも拡張子を表示しない設定なんて不要 (セキュリティ的に)

選択肢は色々あるし、.htaccessなんて比較的PCに詳しくない人間でも作る時代なのに
Win95以来から今に至るまで放置状態なんて開発者の傲慢だろ
自分でシェル拡張作れとか、もうアホかと

394:デフォルトの名無しさん
08/05/24 21:39:21
・そもそも拡張子でのファイル識別がアホ

395:350
08/05/24 21:39:23
>>386
未だ具体的な実装レベルの話にはなっていません。
Windowsで10mS応答は無理(?)なのでリアルタイム処理が必要な
部分は機器側で実装しないと無理〜・・・のような話をしている段階です。

396:デフォルトの名無しさん
08/05/24 21:41:23
>>394
Macみたいにファイルの先頭にゴミ付けて識別するのもどうかと思う

397:デフォルトの名無しさん
08/05/24 21:41:52
この流れの中で質問するのは恐縮なのですが、「Wininet」を使用したFTP通信で困った状態になっています。

APサーバからファイルサーバ上の複数のFTPサイトに対して、ファイルをFTP PUTするサービスがあるのですが、
特定のFTPサイトだけ「550 access denied」になってしまいます。

ファイルサーバ上のFTPサイトは「書き込み:可」になっていますし、フォルダの権限も同様です。
新規ファイルのPUTなので上書きに失敗している訳でもありません。
使用しているユーザーは共通のものを使っているので、他のFTPサイトにPUTできることから、
権限は足りていると判断しています。でも、アクセス拒否エラーが発生してしまいます。
ファイルサーバを再起動しても改善しません。

このような場合、他にどの点を疑って調査すれば良いでしょうか?

398:デフォルトの名無しさん
08/05/24 21:41:52
いい加減ファイルシステムにファイルタイプ情報持たせろよ

399:デフォルトの名無しさん
08/05/24 21:42:41
>>396
いつの話?

400:デフォルトの名無しさん
08/05/24 21:44:26
いまどき拡張子でタイプ判別なんてうんこプログラム書いてる奴はいないだろ…


401:デフォルトの名無しさん
08/05/24 21:45:27
>>400
つExplorer

402:デフォルトの名無しさん
08/05/24 21:47:09
>>398
Vistaで間に合わなかったアレか

403:デフォルトの名無しさん
08/05/24 21:49:16
>>393
いやちょっとまて、一体どこを読んだらそういう解釈になるんだよ。
そりゃまあ、世の中には.htaccessぐらい余裕で書ける婆ちゃんがいるかもしれんさ。
でもな、世の中はそーじゃねーんだよ。
だから一番バカに合わせておくんだ。

404:デフォルトの名無しさん
08/05/24 21:49:44
間に合わなかったっつーか、Windowsの機能として入れる計画は無くなった。

405:デフォルトの名無しさん
08/05/24 21:54:14
>>401
いやMS以外で

406:デフォルトの名無しさん
08/05/24 21:54:27
>>403
バカはPCを使わなくていい
バカに合わせると使いづらくなるだけ
バカは紙と鉛筆で十分

407:デフォルトの名無しさん
08/05/24 21:55:39
バカにはTablet PCでも与えてとけばおk

408:デフォルトの名無しさん
08/05/24 21:56:41
カプセルPCでおk

409:デフォルトの名無しさん
08/05/24 22:03:45
>>405
Windowsのファイルシステム系APIを使うほぼ全てのアプリがそうじゃない?
バイナリフォーマットを扱うアプリであれば、最初に拡張子で選別して、次に中身を見るだろうけど。
(適切かつ安全に見ることができないアプリも多いが)

410:デフォルトの名無しさん
08/05/24 22:09:35
あ〜もういいや

411:デフォルトの名無しさん
08/05/24 22:16:11
やいいうも〜あ

412:デフォルトの名無しさん
08/05/24 22:18:00
あぃいおまぁ

413:デフォルトの名無しさん
08/05/24 22:21:45
>>398
NTFSなら副次ストリームとか使えるけど、
古いファイルシステムも捨てられない。
Windowsは互換性をけっこう気にするからな。

414:デフォルトの名無しさん
08/05/24 22:27:31
古いファイルシステムってFATの事を言いたいのか?
USBメモリやSD/CFカードではまだまだ現役バリバリだろ

415:デフォルトの名無しさん
08/05/24 22:30:02
>>378
CreateWindowとCreateWindowExだったら、
どっちでもいいときは好きなほうを使えばいい。

仮に、CreateWindowが実在したとしても、どうせ中でCreateWindowExを呼ぶだけ。
それだったらCreateWindowはヘッダでCreateWindowExに展開する今の方式なら、
システムDLLがCreateWindowの実装を省ける分サイズ削減できる。

416:デフォルトの名無しさん
08/05/24 23:24:53
>>415
大抵内部で〜Exを呼んでる (LoadLibraryとか)
むしろマクロで済ませてるCreateWindowが特殊

417:デフォルトの名無しさん
08/05/24 23:50:21
>>395
10mS精度ぐらいならおおむねできるけど、ほかの処理で数百ミリ遅れることは多々ある。だからリアルタイムを現実的に無理。デバイスドライバでも同じ。
でもHALでリアルタイム実行させたり、windowsを仮想化させてリアルタイム実行させるるソフトがあるから、リアルタイムHALやRTXでググってみれれ


418:デフォルトの名無しさん
08/05/25 09:35:17
>>397
ほかのFTPソフトを使うとそのサイトにはうpできるんんか?

419:デフォルトの名無しさん
08/05/25 09:53:00
んんか?

420:デフォルトの名無しさん
08/05/25 10:01:00
できるんんか の検索結果 約 1,850,000 件
w

421:デフォルトの名無しさん
08/05/25 10:02:13
よく見たら一つ上のレスを真似しただけかな

実行させるるソフト
ググってみれれ

今時カナ打ちかよw

422:デフォルトの名無しさん
08/05/25 10:41:50
かな入力の方が日本語のタイピングは速い。

423:デフォルトの名無しさん
08/05/25 10:45:00
というのは間違い。

424:デフォルトの名無しさん
08/05/25 10:47:13
キーをタイプする回数が減るから事実。

425:デフォルトの名無しさん
08/05/25 10:51:25
かな入力じゃ10分間で5000タッチできる気がしない

426:デフォルトの名無しさん
08/05/25 10:56:24
それは慣れていないだけ。

427:デフォルトの名無しさん
08/05/25 11:07:29
まあどうせ俺なんか入力速度に脳が追いつかないからどうでもいいんだけどね

428:デフォルトの名無しさん
08/05/25 11:09:03
しかし日本語は読みから漢字に変換しなければならないので、
いくら読みがなを早く入力できたからといって、それほど早くはならない気がする。
完璧に変換してくれるIMEは存在しないし。

429:デフォルトの名無しさん
08/05/25 11:28:27
そこでT-Code

430:デフォルトの名無しさん
08/05/25 12:54:12
ライターじゃあるまいし日本語のタイピング速度なんてどうでもいいだろ
それともひまわりでプログラミングしてるのか?

431:デフォルトの名無しさん
08/05/25 12:57:08
日本語のレスに対する突っ込みだったから。

432:デフォルトの名無しさん
08/05/25 13:04:24
>>417=>>422=>>431って事でいいの?
とりあえず君がカナ入力マンセーなのは分かったからもういいよ

433:431 = 424 = 422;
08/05/25 13:07:11
>>432
違う。俺はローマ字入力。事実を伝えただけ。スレ違いなので終わる。

434:デフォルトの名無しさん
08/05/25 13:08:42
なんで怪しい日本語になるダヨ

435:デフォルトの名無しさん
08/05/25 13:14:17

/* ここまで雑談 */


436:デフォルトの名無しさん
08/05/25 13:15:51
>>433
431 = 424 = 422;
          ↑
こうやって反射的にセミコロンを付けてしまう事ってよくあるよねw

437:433
08/05/25 13:19:53
>>436
板を考慮して付けた。

438:デフォルトの名無しさん
08/05/25 13:23:08
もういいから

439:デフォルトの名無しさん
08/05/25 13:31:24
こういう空気読めない奴ってホントどこにでもいるな
リアルでも空気読めなくて周囲からウザく思われてるんだろうな

440:デフォルトの名無しさん
08/05/25 13:34:53
>>439
いい加減ウザイよ君

441:デフォルトの名無しさん
08/05/25 15:33:05
質問がないと暇を持て余すんだろう
質問来ても、その調子なら邪魔以外の何者でもないが・・・

442:デフォルトの名無しさん
08/05/25 16:37:35
int 21Hとか割り込み命令って今でも使える?
Win32API使わないとだめ?

443:デフォルトの名無しさん
08/05/25 17:05:30
試せば分かるだろ

444:デフォルトの名無しさん
08/05/25 18:55:52
>>442
DOSアプリからなら使えるよ。32ビットアプリだとクラッシュ。
9x系だと確か一部のものはクラッシュしなかったような?
動かないだろうけど

445:デフォルトの名無しさん
08/05/25 19:09:09
>>444
後半二行の不確かな情報は要りません

446:デフォルトの名無しさん
08/05/25 20:43:34
>>444
DOSアプリのみということは、
Win32 コンソールアプリではだめなのか
なるほど

447:デフォルトの名無しさん
08/05/25 20:46:32
Invalid icon format ってエラーが出るんですけど、アイコンの絵そのものが
問題あるってことですよね?XPのペイントで書いてみたのが問題ですか?



448:デフォルトの名無しさん
08/05/25 20:48:03
アイコンって、大きさ正方形だったかサイズ固定だったか
決まりがあったような気がする。

449:デフォルトの名無しさん
08/05/25 20:50:56
>>447
icon≠windows bitmap
そもそもフォーマットが違います
アイコンエディタを使いましょう

450:デフォルトの名無しさん
08/05/25 20:57:13
>>448
それはgoogle検索で出てきたので、32×32にしてます。
>>449
そうなんですか、分かりました。

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

451:デフォルトの名無しさん
08/05/25 21:23:51
そういえばVistaのPNG形式アイコンがあるとRC.EXEがエラー吐いたりしたけど
最近のバージョンのRC.EXEでは直ってるの?

452:デフォルトの名無しさん
08/05/25 21:48:19
>>444
9xで、32ビットアプリケーションからファンクションコールをするとしたら、
DeviceIoControlを呼ぶのが正式な手段。全部使えるわけではないけど、
ディスクを直接読み書きするときとかに使った。

453:デフォルトの名無しさん
08/05/25 22:00:33
9xの話を今頃されてもオッサン乙で終わるのだが

454:デフォルトの名無しさん
08/05/26 00:19:42
ウィンドウプロシージャを差し替えたいんだけど、
なんかできないんだよね。

SetClassLong(hWnd, GCL_WNDPROC, (LONG)AnotherMyWindowProc);
この関数を用いる上でなんか注意点ある?
マウスやアプリのアイコン変更も反映されないんだけど。

455:デフォルトの名無しさん
08/05/26 00:33:58
注意点 msdnをよく読む事

456:デフォルトの名無しさん
08/05/26 00:43:49
>>453
そのオッサンのやりとりにお前が絡む必要はないのに、何が乙なんだ

457:デフォルトの名無しさん
08/05/26 00:45:43
俺の家の玄関に「硫化水素発生中」って貼った奴、氏ねよ

458:デフォルトの名無しさん
08/05/26 01:04:43
そのネタはもう旬を過ぎてるよ

459:デフォルトの名無しさん
08/05/26 01:06:41
まじでか

460:デフォルトの名無しさん
08/05/26 01:09:56
>>454
わろた

461:デフォルトの名無しさん
08/05/26 01:17:49
わらっつぁらめぇー

462:454
08/05/26 01:24:30
URLリンク(homepage1.nifty.com)
ここみてる限り間違ってないと思うんだがナー

463:デフォルトの名無しさん
08/05/26 01:33:14
>>462
それは良かったですね

464:デフォルトの名無しさん
08/05/26 01:37:50
とってもよかったでーす^^^;


465:デフォルトの名無しさん
08/05/26 01:53:01
>>462
赤字で書いてるとこと違う事をしてるのは、分かっててやってるの?
変更したクラスから新しくウィンドウを作るってんなら、それでいいんだけど。

466:デフォルトの名無しさん
08/05/26 11:46:16
どこをどう見ると間違ってないんだよw

SetWindowLong、SetWindowLongPtr、SetWindowSubclass使えよ

467:デフォルトの名無しさん
08/05/26 11:53:56
間違い探しかよw
ぱっと見てスルーしてたけど、SetClassLong使ってたのか

468:デフォルトの名無しさん
08/05/26 12:56:47
>>451
VS2005なら、Windows SDK6.0だか6.1入れてCLやRCをそちら付属品を
使うようにすればVista圧縮形式に対応できる。
VS2008はRCでもMSDEVリソースエディタでも標準サポート

469:デフォルトの名無しさん
08/05/26 15:43:24
>>452
9xだと本当にDOSが動いてるからね。
NTだと単なるエミュだし

470:デフォルトの名無しさん
08/05/26 15:52:02
>>468
さんくす
RC.EXEだけでも入れ替えておけばビルド後のイベントでゴニョゴニョする必要は無さそうだw
IDEのリソースエディタでアイコンなんて作らないからそっちはまぁいいや

471:デフォルトの名無しさん
08/05/26 16:26:48
>>470
VS2005だと、圧縮形式アイコンが含まれる.rcファイルがMSDEVで開けないんで注意

472:デフォルトの名無しさん
08/05/26 16:35:26
VC2005はmsdevじゃなくてdevenvだったと思うが。
そんな俺はVC6ユーザー

473:デフォルトの名無しさん
08/05/26 17:01:52
URLリンク(imepita.jp)
このような四角いボタンってどうやって作るんですか?

474:デフォルトの名無しさん
08/05/26 17:03:04
言い忘れました。×ボタンです。

475:デフォルトの名無しさん
08/05/26 17:09:14
クローズボタンのことが聞きたいのかオーナードローのボタンのことが聞きたいのか

476:デフォルトの名無しさん
08/05/26 17:25:53
1. Toolbar を作る
2. ImageList を作る
3. [×] のビットマップを作る
4. 3. のビットマップを 2. の ImageList に追加する
5. ImageList を Toolbar にセットする
6. Toolbar に 3. のビットマップを持つボタンを追加する

477:デフォルトの名無しさん
08/05/26 18:08:23
指定したiniファイルのキーを削除するapiを教えてください

478:デフォルトの名無しさん
08/05/26 18:08:57
やだ

479:デフォルトの名無しさん
08/05/26 18:55:43
WritePrivateProfileStringで
lpAppNameにセクション名
lpKeyNameにキー名
lpStringにNULL
lpFileNameにiniファイルのパスを指定すると
指定したセクション内のキーが消える

480:デフォルトの名無しさん
08/05/26 19:04:01
>>479
まじっすか^^
WritePrivateProfileStringで値をNULLにすると消えるんですね
これは知らなかった。ありがとうございます!

481:479
08/05/26 19:04:52
ってかMSDN読めよ

482:デフォルトの名無しさん
08/05/26 19:05:09
MSDNも読まずにWin32APIを使おうとする奴の気が知れない

483:デフォルトの名無しさん
08/05/26 19:05:36
つーか引数どうやって知ったのかw
そこに説明もあると思うんだがなあ

484:デフォルトの名無しさん
08/05/26 19:33:34
MSDNなんて読まなくていい
ここで質問するだけで丁寧な解説が日本語で得られる
お人好しな人間ほどうまく扱えば便利なものは無い


というのが俺の妄想

一応言っとくが俺はちゃんとMSDNで調べる派だからな

485:デフォルトの名無しさん
08/05/26 19:36:57
俺みたいに嘘を教える奴も居るから気をつけないと

486:デフォルトの名無しさん
08/05/26 19:40:39
俺みたいにかく乱する奴もいるからry

487:デフォルトの名無しさん
08/05/26 19:45:04
お前ら必死でワロタ

488:デフォルトの名無しさん
08/05/26 20:31:16
VC.net2003 + SDKで、ImageList使える?
ビルドは通るが、CreateWindowExでウィンドウ作成した時点で、'hoge, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' から
型 '_IMAGELIST' を読み込めません。って出て落ちるんだけど・・・

489:デフォルトの名無しさん
08/05/26 20:37:28
DiskcopyコマンドってどういうAPI使ってフロッピーに出力してるの?
このコマンドに限らずブート領域を書き込めるのって同じやり方だと思うんだけぢ
少なくともfoutやCopyFileではなさそう。

490:デフォルトの名無しさん
08/05/26 20:39:08
> 思うんだけぢ
どこの方言でぢか?

491:デフォルトの名無しさん
08/05/26 20:43:52
アマゾン地方の方言が出てしまいました

492:デフォルトの名無しさん
08/05/26 20:47:15
DeviceIoControlとかじゃないの
知らんけど

493:デフォルトの名無しさん
08/05/26 20:55:32
>>489
DDKを見ましょうね。

494:デフォルトの名無しさん
08/05/26 21:04:43
やだ

495:デフォルトの名無しさん
08/05/26 23:06:57
>>489
NTならCreateFileで"\\\\.\\A:"のようにすると生のドライブを開ける。SDKにも書いてある。
9xなら>>452。KB125712やKB174569など。

496:デフォルトの名無しさん
08/05/26 23:10:48
あした試してみよう

497:デフォルトの名無しさん
08/05/26 23:27:50
もうすぐ明日だろ

498:デフォルトの名無しさん
08/05/26 23:56:37
関数を動的に作ってウィンドウプロシージャとして渡す事ってできないんですか?

クラスのメンバ関数をウィンドウプロシージャにできないのが、
理屈ではよくわかるんですけど、なんか納得できなくてw
static使って場合分けするのもなんか反則的というか、やりたいことと違う気がして…
クラスのコンストラクタで関数を動的に作ってコントロールのプロシージャとして使い、
デストラクタでコントロールは期すると共に関数も破棄できないかなぁと。


…ゴメンナサイ、なんかもう投げやりです。

499:デフォルトの名無しさん
08/05/27 00:06:12
グローバル関数でのプロシージャで
各クラス内の自作プロシージャにそれぞれ処理を割り振ったりすれば良いんじゃない?

500:デフォルトの名無しさん
08/05/27 00:09:06
つーか自分でラッパー書けばいいだけじゃね

501:デフォルトの名無しさん
08/05/27 00:10:07
僕ハッカー!!!

502:489
08/05/27 00:11:11
CreateFile
DeviceIoControl
WriteFile
でなんかフロッピーに出してるのは判った
しかしこの方法でフロッピーの中にファイルを作る方法がわからなう

503:デフォルトの名無しさん
08/05/27 00:13:47
FAT32の仕組みでも覚えろ

504:デフォルトの名無しさん
08/05/27 00:14:44
>>498
URLリンク(web.archive.org)
ようするに、静的メンバ関数の中から
何らかの方法でウィンドウに対応するオブジェクトを得て、
そのオブジェクトの非静的メンバ関数に処理を渡せばいい。

ウィンドウクラスの場合、次のようなものを使って
オブジェクトへのポインタを保存する例が多い。
Get/SetProp
Get/SetWindowLongPtrとウィンドウクラスごとの追加データ
Get/SetWindowLongPtrとGWLP_USERDATA

ちなみに、ATLは本当に動的に関数を作って対処している。
URLリンク(hp.vector.co.jp)



505:デフォルトの名無しさん
08/05/27 00:16:02
>>502
逆に、ファイルがある状態のフロッピーディスクを
吸い出して中身を眺める、もちろんFATの構造の解説と一緒に。

506:デフォルトの名無しさん
08/05/27 02:10:13
アプリケーションへのアイコン設定は、
検索で調べると必ず .rc への記述方法が紹介されてますが、
.rc を経由せずに .cpp のプログラムのみで設定って出来るんでしょうか?
よろしくお願い致します。

507:デフォルトの名無しさん
08/05/27 03:17:45
>>502
何がしたいのかよくわからんが
フロッピーの中にファイルを作るのならばCreateFileでいいと思うが。
diskcopyだったらセクタを全部コピーすればいい

508:デフォルトの名無しさん
08/05/27 07:09:57
あるウィンドウがHWND_TOPMOSTで最善面になっているかどうかを判断するにはどうすればいいのでしょうか?

509:デフォルトの名無しさん
08/05/27 07:58:26
GetWindowLong(hwnd, GWL_EXSTYLE) & WS_EX_TOPMOST

510:デフォルトの名無しさん
08/05/27 08:25:20
>>504
atlthunk.cppが凄い
てかこんなのMSの中の人でないと書けないだろw

511:デフォルトの名無しさん
08/05/27 08:45:38
書ける奴はいくらでもいるだろうが、実際に、書こう思う奴は、それほどいない。
MFCはHWNDとベースクラスへのポインタを、
いわば、std::map< HWND, Hoge >的なもので管理していて、メッセージが来るたびに検索してると聞いたが。

512:デフォルトの名無しさん
08/05/27 09:33:10
>>511
実際に中身を見てから言って欲しいね

513:デフォルトの名無しさん
08/05/27 09:46:49
コード生成はWindowsより前なら常套手段だから昔の人なら楽勝

514:デフォルトの名無しさん
08/05/27 09:52:23
そんな話はしていない
いいから当該ソースを見ろ

515:デフォルトの名無しさん
08/05/27 10:24:54
WinMainからDialogBoxでモーダルダイアログを作成しております。
DialogProc内から例外をthrow(あるいはRaiseException)したところ、
WinMainで正常にcatch出来ました。

ところがDialogProcからさらに孫ダイアログを作成し、
孫ダイアログのDialogProc内から例外をthrowしたところ、
子ダイアログのDialogProcでcatch出来たのですが、
return後にAccess violationで落ちてしまいました。

どうすればreturn後に処理を続行できるのでしょうか?

516:デフォルトの名無しさん
08/05/27 10:27:53
長くて恐縮ですがソースを貼らせて頂きます。
INT_PTR CALLBACK proc2(HWND wnd, UINT msg, WPARAM w, LPARAM) {
 switch (msg) {
  case WM_INITDIALOG: return TRUE;
  case WM_COMMAND:
   switch (LOWORD(w)) {
    case IDOK:
     EndDialog(wnd, LOWORD(w));
     throw std::exception("HOGE!"); // 例外をthrow
    case IDCANCEL: EndDialog(wnd, LOWORD(w)); return TRUE;
   } break; } return FALSE;
}
INT_PTR CALLBACK proc1(HWND wnd, UINT msg, WPARAM w, LPARAM) {
 switch (msg) {
  case WM_INITDIALOG: return TRUE;
  case WM_COMMAND:
   switch (LOWORD(w)) {
    case IDOK:
     try {
      DialogBox(GetModuleHandle(0), MAKEINTRESOURCE(IDD_2), wnd, proc2);
     } catch (const std::exception&) {}
     return TRUE; // return後にAccess violation
    case IDCANCEL: EndDialog(wnd, LOWORD(w)); return TRUE;
   } break; } return FALSE;
}
int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
 try {
  DialogBox(GetModuleHandle(0), MAKEINTRESOURCE(IDD_1), 0, proc1);
 } catch (const std::exception&) {
 } catch (...) {} return 0;
}

517:デフォルトの名無しさん
08/05/27 10:44:00
>>515
C++以外のスタックフレームを飛び越えるthrow〜catchって
頭の悪いlongjmpと同じだと思うがどうか

518:デフォルトの名無しさん
08/05/27 11:01:23
文字列の"123.45"をfloatに変換するAPIを教えてくだせえ

519:デフォルトの名無しさん
08/05/27 11:07:35
なんでわざわざAPI使うん?

520:デフォルトの名無しさん
08/05/27 11:11:36
wsprinf があるんだから wsscanf もあるにちがいないw

521:デフォルトの名無しさん
08/05/27 11:13:22
atofの返値がfloatじゃなくてdoubleだからって言いそうな気がする。

522:デフォルトの名無しさん
08/05/27 11:17:36
いやdoubleでもいいからさっさと教えろよ
どうせ知らないだろーけど


523:デフォルトの名無しさん
08/05/27 11:36:08
VarR4FromStr
VarR8FromStr

524:デフォルトの名無しさん
08/05/27 12:23:01
>>520
wsscanfならMSのFTP鯖にソースが置いてある
Win16時代の物みたいだから今でも使えるかどうかは知らん

525:デフォルトの名無しさん
08/05/27 12:30:58
crtdll.dllからscanfをインポートして使う・・・ってのはAPIの範疇というと苦しいか?

526:デフォルトの名無しさん
08/05/27 12:52:43
msvcrt.dllならいいんじゃね

527:デフォルトの名無しさん
08/05/27 13:07:36
crtdllとかmsvcrtにあるprintfとかscanfって_stdcallじゃなくて_cdeclでいいんだよね?

528:デフォルトの名無しさん
08/05/27 14:28:31
wsprintfもcdeclだろ
可変長なのにどうやって呼び出し先でスタックポインタを戻せるんだよ

529:デフォルトの名無しさん
08/05/27 15:10:26
うるせークズ

530:デフォルトの名無しさん
08/05/27 15:13:58
>>528
キモいよ

531:デフォルトの名無しさん
08/05/27 15:14:00
可変長のはともかく、strcpyとかもCDECLでいいんだろうか?

532:デフォルトの名無しさん
08/05/27 15:16:09
試せばいいだろハゲ

533:デフォルトの名無しさん
08/05/27 15:23:22
そんなの関係ねーだろクズが

534:デフォルトの名無しさん
08/05/27 15:31:18
関係ねー事聞くなカス

535:デフォルトの名無しさん
08/05/27 15:35:03

            ノ
           (゚Д゚)
           ( (7
           < ヽ

536:デフォルトの名無しさん
08/05/27 15:38:25
>>531みたいなのは実際試した場合間違っていても動いちゃうから困りもの

537:デフォルトの名無しさん
08/05/27 15:44:25
>>535
なんだその態度は!!

538:デフォルトの名無しさん
08/05/27 16:42:51
>>536
デバッグビルドなら呼び出し後にchkstkでESPがチェックされるから大抵気付く

539:デフォルトの名無しさん
08/05/27 18:25:05
FindWindow関数によってハンドルを調べたウィンドウを強制的に移動させるにはどうしたらよいでしょうか。
SendMessage関数でWM_MOVEを送っても移動しないことがあります。

540:デフォルトの名無しさん
08/05/27 18:26:36
WM_MOVEは動いた後に送られてくるメッセージなのに
それで動くウインドウがあるのか?

541:デフォルトの名無しさん
08/05/27 18:28:35
正しくはどのメッセージを送ればよいのでしょうか?


542:デフォルトの名無しさん
08/05/27 18:29:27
>>541
MoveWindow 関数で

543:デフォルトの名無しさん
08/05/27 18:30:30
ありがとうございます。

544:デフォルトの名無しさん
08/05/27 18:32:30
SetWindowPosとかもあるし、好きなので。

545:デフォルトの名無しさん
08/05/27 19:17:01
>>540
WM_SIZEを送ると動くウィンドウならあるよ

546:デフォルトの名無しさん
08/05/27 19:29:00
動かないウィンドウもあるってことですね。

547:デフォルトの名無しさん
08/05/27 19:49:39
>>517
遅レスすいません。
プロシージャ内で気軽にSTLなどを使いたかったのですが、邪道だったでしょうか・・・。
とりあえずプロシージャをreturnする前に全てcatchする方向で再考してみます。

548:デフォルトの名無しさん
08/05/27 19:50:20
STLが○| ̄|_にみえたのは俺だけですか?

549:デフォルトの名無しさん
08/05/27 19:53:30
>>548
面白くないよ

550:デフォルトの名無しさん
08/05/27 20:02:12
確かDispatchMessageを例外捕捉しとくとウィンドウ内部の例外が捕まえられたような

551:デフォルトの名無しさん
08/05/27 20:07:35
>>549は大爆笑して悔しかったんだろうなぁ

552:デフォルトの名無しさん
08/05/27 20:09:17
そもそもAPIから呼ばれるコールバック関数内で例外を投げるなんてアホとしか思えない

553:デフォルトの名無しさん
08/05/27 20:09:49
>>548=>>551
はいはいわろす

554:デフォルトの名無しさん
08/05/27 20:11:58
>>535,537
ワロタw

555:デフォルトの名無しさん
08/05/27 20:41:01
>>550
VC++ではC++例外を構造化例外で実装してるようだから捕まえられるかもしれないけど
C++言語的には未定義動作だからやめた方がいい

556:デフォルトの名無しさん
08/05/27 20:56:03
未定義とか不定とかどうでもいい
今時VC++以外でWin32開発してる奴の方が悪い

557:デフォルトの名無しさん
08/05/27 20:57:48
VCなんてもう終わってるだろうがw

558:デフォルトの名無しさん
08/05/27 21:27:35
終わってません
というか終わりません

559:デフォルトの名無しさん
08/05/27 22:08:58
MSではVBについで売れてる言語製品だしな

560:デフォルトの名無しさん
08/05/27 22:13:15
でも、そのVB6も来月で...

561:デフォルトの名無しさん
08/05/27 22:13:38
何その時代錯誤

562:デフォルトの名無しさん
08/05/27 22:39:04
俺も516みたいにWinMainにcatch書くことはあるけど、
その場合はエラーログ書いたりメッセージ出したりして、
とっととExitProcessするだけだな。

563:デフォルトの名無しさん
08/05/28 11:16:09
VBwwwwwwwwwwwwwwwwwwwwww

564:デフォルトの名無しさん
08/05/28 18:11:40
Visual Baka

565:デフォルトの名無しさん
08/05/28 18:21:52
violence bokan

566:デフォルトの名無しさん
08/05/28 19:41:40
>>564
C、C++に挫折した馬鹿しか使わない言語という事ですね?

567:デフォルトの名無しさん
08/05/28 20:34:14
int wmain()
{
HMODULE hModule;
HBITMAP hBitmap;
int count = 0;
std::wcout.imbue(std::locale("japanese"));
while (1)
{
hModule = LoadLibrary(L"hoge.exe"); //単一で数MBのBMPリソースのあるファイル
hBitmap = LoadBitmap((HINSTANCE)hModule, L"#200"); //そのリソース番号
if (!hBitmap)
{
FreeLibrary(hModule);
std::wcout << L"画像読み込み失敗" << std::endl;
return 1;
}
FreeLibrary(hModule);
count++;
std::cout << count << std::endl;
}
return 0;
}

大した回数(自分の環境では45回)も行かない内に画像リソースの読み込みに失敗します。
原因は何でしょうか。
環境はWinXP Home SP3、VC++2008EEです。
上記はあくまで耐久テスト用ですが、実際のソフトも仕様上ファイルのロード→アンロード回数は予測出来ません。

568:デフォルトの名無しさん
08/05/28 20:43:12
>>567
MSDNライブラリでLoadBitmap引いたらちゃんと注意書きがあるから嫁。

569:デフォルトの名無しさん
08/05/28 20:43:21
>>567
DeleteObject(hBitmap)してないからでは?

570:デフォルトの名無しさん
08/05/28 21:05:12
NT系ならDeleteObjectしなくても約10000回Loadできるはずだが

571:デフォルトの名無しさん
08/05/28 21:24:59
なんでできるの?画像がたとえば4MBだとして、500も読めば
アプリの仮想アドレス空間が枯渇するぜ?

572:デフォルトの名無しさん
08/05/28 21:27:54
外からウィンドウ内にカーソルを持って来ると、大きさ変更するときの ←→ の
形のままで普通のカーソルの形に戻りません。
CreateWindowEx、WS_OVERLAPPEDWINDOW 以外に何かいるんですか?

573:デフォルトの名無しさん
08/05/28 21:29:04
GetWindowLong, SetWindowPos 等で失敗すると 0 が返る関数は
製作者が引数に渡す値をしくじった時に失敗するのは当然ですが
絶対に動作するはずの引数で、OSが何かしらの問題で失敗する事ってありますか?
他人が書かれているコードを見ても、成功する事が前提で書かれているものばかりで問題ないのか疑問です
このような関数が失敗する時は、OSが動いているのも不思議なくらいの状態で いつOSが止まってもおかしくない状況なので
アプリケーションで取得できなかった値を使用して不具合が出るよりOSの方が重症なのでエラーチェックを行っていないという事なのでしょうか?
誰か詳しい方 教えてください

574:567
08/05/28 21:33:00
回答ありがとうございます。
耐久テストのコードではその方法で解決しました。

実際のコードはhBitmapをウィンドウプロシージャのスタティックなローカル変数として宣言し、メッセージ処理先(LBN_SELCHANGE)で画像リソースを呼び出しています。
これを止めてメッセージの処理先で
static HBITMAP hBitmap;
と宣言したら以下のコンパイルエラーが出てしまい、どうにも出来ません。

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

575:デフォルトの名無しさん
08/05/28 21:35:28
>>572
WNDCLASS の hCursor にカーソルを設定する
あるいは WM_SETCURSOR メッセージで SetCursor を呼びカーソルを設定する

576:デフォルトの名無しさん
08/05/28 21:42:58
>>575
ありがとうございました。

577:デフォルトの名無しさん
08/05/28 21:43:16
>>574
Win32API以前の問題だ。
自分でなんとかしろ。

578:デフォルトの名無しさん
08/05/28 22:04:56
>>577
ダイアログに画像を表示したらDeleteObject()しても良かったんですね…。
VB.NETで同じようなコードをBitmapオブジェクトで行ったらエラーが出たのでWin32APIでもそうだと勘違いしていました。
C++でGUIアプリを作り始めてまだ1週間ですが、少し背伸びし過ぎました。

579:デフォルトの名無しさん
08/05/28 22:05:28
C言語すら禄に理解してない癖に何が耐久テストだよ

580:デフォルトの名無しさん
08/05/28 22:07:06
なんだVisual Bakaプログラマだったのかw

581:デフォルトの名無しさん
08/05/28 22:37:55
>>579,580
罵るしか能の無い奴は消えろ


582:デフォルトの名無しさん
08/05/28 22:45:51
いやです

583:デフォルトの名無しさん
08/05/28 22:47:12
それぐらいしか楽しみがないんだろうから許してやってもいいんじゃ

584:デフォルトの名無しさん
08/05/28 22:50:05
つうか罵られるのが嫌なら2ちゃんで質問しなければいいのでは

585:デフォルトの名無しさん
08/05/28 23:01:23
当事者以外にも罵り文を見て不快に思う人がいるだろう

586:デフォルトの名無しさん
08/05/28 23:02:54
不快に思うのが嫌なら2ちゃんに来なければいいのでは

587:デフォルトの名無しさん
08/05/28 23:03:23
次にお前は「そんな奴が2ちゃん見るなよ」と言う。

って書こうと思ったのに

588:デフォルトの名無しさん
08/05/28 23:09:08
MSDNすら読まずに質問する奴なんて叩かれて当然

589:デフォルトの名無しさん
08/05/28 23:09:13
○○が嫌なら××しなければいいだろう

この言葉だけでは解決できない事がどれだけ溢れてると思ってるんだ

590:デフォルトの名無しさん
08/05/28 23:10:09
>>588
なら「MSDN読め」でいい、独り言を言うように罵り煽る奴はいらん

591:デフォルトの名無しさん
08/05/28 23:13:03
>>590
MSDN読め

592:デフォルトの名無しさん
08/05/28 23:21:30
それくらい察して欲しかったって言うのが本音。

593:デフォルトの名無しさん
08/05/28 23:25:43
話を理解してない馬鹿は知らないならそれぐらい察してレスしないでMSDN読んでほしかったってのが本音

594:デフォルトの名無しさん
08/05/29 03:55:50
VBwwwwwwwwwwwwwwwwwwwwww

595:デフォルトの名無しさん
08/05/29 08:10:11
複数スレッドから参照されるキューへの出入力で排他処理を行いたいのですが、
カウンタ1の無名セマフォとクリティカルセクションではどちらの使用が適切なのでしょうか?

596:デフォルトの名無しさん
08/05/29 08:30:48
クリティカルセクション

597:デフォルトの名無しさん
08/05/29 08:48:08
このスレの住人ってVBプログラマいないの?
まあVBだとネイティブなAPI使わない事が
多いだろうから少ないかもね

598:デフォルトの名無しさん
08/05/29 09:51:07
ドットロネットロに移行してるだろうし

599:デフォルトの名無しさん
08/05/29 10:14:39
>>596
ありがとうございます。

600:デフォルトの名無しさん
08/05/29 12:47:24
Virtual Batouスレですね

601:498
08/05/29 13:22:09
>>504
質問しといて、亀でゴメンナサイ…
やはりキーとなるデータ使ってマップみたいなことするのが一般的なんですね…

…動的に関数作れるのならちょっと試してみます
ありがとうございました。

602:デフォルトの名無しさん
08/05/29 14:34:11
マップつっても二分探索なら大して負荷にならんだろ


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

5110日前に更新/190 KB
担当:undef