5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Win32API質問箱 Build70

1 :デフォルトの名無しさん:2008/09/15(月) 11:35:07
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

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

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

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

Win32API質問箱 Build69
http://pc11.2ch.net/test/read.cgi/tech/1217687038/

2 :デフォルトの名無しさん:2008/09/15(月) 11:35:52
- MSDN ホームページ
http://www.microsoft.com/japan/msdn/
- MSDN ライブラリ
http://msdn.microsoft.com/library/
http://msdn.microsoft.com/library/ja/
- MSDN2 ライブラリ
http://msdn2.microsoft.com/en-us/library/
http://msdn2.microsoft.com/ja-jp/library/
- MSDN ライブラリ (ローカル版)
http://www.microsoft.com/downloads/details.aspx?familyid=6FF3BC60-32C8-4C22-8591-A20BF8DFF1A2&displaylang=ja
http://www.microsoft.com/downloads/details.aspx?familyid=B8704100-0127-4D88-9B5D-896B9B388313&displaylang=ja
- Windows SDK & Platform SDK
http://www.microsoft.com/downloads/details.aspx?FamilyID=74dd6e2d-89c6-4e1e-af00-fc7d70f15439&DisplayLang=en
http://www.microsoft.com/downloads/details.aspx?FamilyID=c2b1e300-f358-4523-b479-f53d234cdccf&DisplayLang=en
http://www.microsoft.com/downloads/details.aspx?FamilyID=ff6467e6-5bba-4bf5-b562-9199be864d29&DisplayLang=en
http://www.microsoft.com/downloads/details.aspx?FamilyID=7614FE22-8A64-4DFB-AA0C-DB53035F40A0&displaylang=ja
http://www.microsoft.com/downloads/details.aspx?FamilyId=484269E2-3B89-47E3-8EB7-1F2BE6D7123A
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm

3 :デフォルトの名無しさん:2008/09/15(月) 11:36:38
- Google
http://www.google.com/
- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
- Win32 API入門
http://wisdom.sakura.ne.jp/system/winapi/
- Win32 プログラミング入門
http://www7.plala.or.jp/keny01/

- Advanced Windows (書籍)
http://www.amazon.co.jp/dp/4756138055

4 :デフォルトの名無しさん:2008/09/15(月) 11:37:23
過去ログ
69 ttp://pc11.2ch.net/test/read.cgi/tech/1217687038/
68 ttp://pc11.2ch.net/test/read.cgi/tech/1215348804/
67 ttp://pc11.2ch.net/test/read.cgi/tech/1212931246/
66 ttp://pc11.2ch.net/test/read.cgi/tech/1210775622/
65 ttp://pc11.2ch.net/test/read.cgi/tech/1208847084/
64 ttp://pc11.2ch.net/test/read.cgi/tech/1207099291/
63 ttp://pc11.2ch.net/test/read.cgi/tech/1204600558/
62 ttp://pc11.2ch.net/test/read.cgi/tech/1202060403/
61 ttp://pc11.2ch.net/test/read.cgi/tech/1199514664/
60 ttp://pc11.2ch.net/test/read.cgi/tech/1196874830/
59 ttp://pc11.2ch.net/test/read.cgi/tech/1194701996/
58 ttp://pc11.2ch.net/test/read.cgi/tech/1191781463/
57 ttp://pc11.2ch.net/test/read.cgi/tech/1189255282/
56 ttp://pc11.2ch.net/test/read.cgi/tech/1186989201/
55 ttp://pc11.2ch.net/test/read.cgi/tech/1184853465/
54 ttp://pc11.2ch.net/test/read.cgi/tech/1181645965/
53 ttp://pc11.2ch.net/test/read.cgi/tech/1178882828/
52 ttp://pc11.2ch.net/test/read.cgi/tech/1176828891/
51 ttp://pc11.2ch.net/test/read.cgi/tech/1174416295/

5 :デフォルトの名無しさん:2008/09/15(月) 11:39:15
50 ttp://pc11.2ch.net/test/read.cgi/tech/1171721448/
49 ttp://pc10.2ch.net/test/read.cgi/tech/1168708801/
48 ttp://pc10.2ch.net/test/read.cgi/tech/1166172047/
47 ttp://pc8.2ch.net/test/read.cgi/tech/1163375772/
46 ttp://pc8.2ch.net/test/read.cgi/tech/1159158014/
45 ttp://pc8.2ch.net/test/read.cgi/tech/1156032806/
44 ttp://pc8.2ch.net/test/read.cgi/tech/1151501925/
43 ttp://pc8.2ch.net/test/read.cgi/tech/1148005509/
42 ttp://pc8.2ch.net/test/read.cgi/tech/1144962549/
41 ttp://pc8.2ch.net/test/read.cgi/tech/1141392216/
40 ttp://pc8.2ch.net/test/read.cgi/tech/1138893959/
39 ttp://pc8.2ch.net/test/read.cgi/tech/1136673250/
38 ttp://pc8.2ch.net/test/read.cgi/tech/1133798345/
37 ttp://pc8.2ch.net/test/read.cgi/tech/1131884991/
36 ttp://pc8.2ch.net/test/read.cgi/tech/1128951330/
35 ttp://pc8.2ch.net/test/read.cgi/tech/1125850096/
34 ttp://pc8.2ch.net/test/read.cgi/tech/1122723009/
33 ttp://pc8.2ch.net/test/read.cgi/tech/1120153520/
32 ttp://pc8.2ch.net/test/read.cgi/tech/1117271829/
31 ttp://pc8.2ch.net/test/read.cgi/tech/1114762194/
30 ttp://pc8.2ch.net/test/read.cgi/tech/1112345886/
29 ttp://pc8.2ch.net/test/read.cgi/tech/1110281860/
28 ttp://pc5.2ch.net/test/read.cgi/tech/1108199304/
27 ttp://pc5.2ch.net/test/read.cgi/tech/1106103119/
26 ttp://pc5.2ch.net/test/read.cgi/tech/1104109858/

6 :デフォルトの名無しさん:2008/09/15(月) 11:40:01
25 ttp://pc5.2ch.net/test/read.cgi/tech/1101393155/
24 ttp://pc5.2ch.net/test/read.cgi/tech/1098967135/
23 ttp://pc5.2ch.net/test/read.cgi/tech/1095534704/
22 ttp://pc5.2ch.net/test/read.cgi/tech/1092524669/
21 ttp://pc5.2ch.net/test/read.cgi/tech/1090422324/
20 ttp://pc5.2ch.net/test/read.cgi/tech/1088140233/
19 ttp://pc5.2ch.net/test/read.cgi/tech/1084697545/
18 ttp://pc5.2ch.net/test/read.cgi/tech/1081702990/
17 ttp://pc5.2ch.net/test/read.cgi/tech/1077470361/
16 ttp://pc2.2ch.net/test/read.cgi/tech/1073830065/★
15 ttp://pc2.2ch.net/test/read.cgi/tech/1069339866/★
14 ttp://pc5.2ch.net/tech/kako/1065/10653/1065328397.html
13 ttp://pc5.2ch.net/tech/kako/1059/10595/1059549320.html
12 ttp://pc5.2ch.net/tech/kako/1056/10560/1056033645.html
11 ttp://pc5.2ch.net/tech/kako/1052/10526/1052651750.html
10 ttp://pc5.2ch.net/tech/kako/1047/10478/1047819779.html
9 ttp://pc5.2ch.net/tech/kako/1044/10449/1044929160.html
8 ttp://pc5.2ch.net/tech/kako/1040/10409/1040964626.html
7 ttp://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
6 ttp://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
5 ttp://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
4 ttp://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
3 ttp://pc.2ch.net/tech/kako/1017/10170/1017072275.html
2 ttp://pc.2ch.net/tech/kako/1006/10067/1006783012.html
1 ttp://pc.2ch.net/tech/kako/991/991576947.html

7 :デフォルトの名無しさん:2008/09/15(月) 12:41:41
>>1

8 :デフォルトの名無しさん:2008/09/15(月) 13:09:20
>>1
超乙

9 :デフォルトの名無しさん:2008/09/15(月) 13:32:31
(・ω・`)乙

10 :デフォルトの名無しさん:2008/09/15(月) 13:37:53
やっと立ったか

11 :デフォルトの名無しさん:2008/09/15(月) 16:31:01
もうちょっと頭を冷やす時間を取った方がスレを大事にする気持ちが出て
来るかも知れないね。

12 :デフォルトの名無しさん:2008/09/15(月) 17:27:48
CreateDIBSectionで作成したビットマップを
メモリDCにSelectObjectして描画しています。

このあとにこのビットマップをクリップボードに入れたいのですが、
CF_BITMAPではなくCF_DIBを使わないといけないようで、
そうなると渡すのはHBITMAPではなくなるようです。

その情報はHBITMAPからどうやって作成すればよいのでしょうか。

13 :デフォルトの名無しさん:2008/09/15(月) 17:34:10
GDIPlusの質問もここでよろしいのでしょうか?

GDI+で描画した画像を保存したいのですが、
上手く保存できません。

Bitmap.Save で 'image/png'を指定したGUIDを渡して、
ファイルにPNGで保存しようとするのですが、
Statusが Invalid Parameter が帰ってきて保存ができないです。

ファイルから読み込んだものをそのまま保存することはできるのですが、
編集したら保存できないようです。
どのようにしたら編集したものを保存できるのでしょうか?

14 :デフォルトの名無しさん:2008/09/15(月) 17:44:28
>>12
CreateDIBSectionしたときに、ビットマップへのポインタってもらえるだろ。
それとCreateDIBSectionにBITMAPINFO渡しただろ(無くしていたらGetObjectが使える)。
その2つの中身を新しくGlobalAllocで確保した移動可能なメモリにコピーする。
そして、そのメモリハンドルをSetClipboardDataでCF_DIBとしてセットする。

15 :13:2008/09/15(月) 18:33:26
自己解決しました。

GDI+のBitmap生成時に、他の画像のWidthとHeightを指定していたのですが、
どうやら、Width,HeightがUnsigned Integerのために、
overload されている別のBitmapの生成子を呼んでいました。
PixelFormat32bppARGBなどを全部引数を指定したら、
無事に他のエラーがなくなり、保存することができました。

しっかり、Bitmap.Save以前の生成時のエラーも見ておくべきだった・・・

エスパーでないとわからない質問でスマソ

16 :デフォルトの名無しさん:2008/09/15(月) 18:40:49
GetCharWidthABC関数はどのような時に使うのですか?

17 :デフォルトの名無しさん:2008/09/15(月) 21:05:33
LR_ とか CS_ みたいなで始まる定数が何の略なのかが載ってるサイトありませんかね?

18 :デフォルトの名無しさん:2008/09/15(月) 21:23:46
MSDN

19 :デフォルトの名無しさん:2008/09/15(月) 21:27:24
ちょっとお尋ねしたいのですが、DelphiとかwxWidgetsとかが、richeditを使わない独自のテキストコントロールを実装していたりするのは、richeditにいろいろ問題点があるからなんでしょうか??
もしそうだとすれば、どういうところが問題点なのでしょう??
詳しい方いらっしゃいましたら教えて頂けると幸いです。

20 :デフォルトの名無しさん:2008/09/15(月) 23:38:20
バージョンがいろいろあって、
しかも新しいのは古いWindowsで使えないし、古いのは新しいWindowsで使えず、
しかも互換性もろくにないことかな。

WebBrowserコントロールの方がまだましな気がする。

21 :19:2008/09/16(火) 03:00:04
なるほど・・ありがとうございますm(_ _)m

22 :デフォルトの名無しさん:2008/09/16(火) 03:04:51
どういたしまして。

23 :デフォルトの名無しさん:2008/09/16(火) 12:47:05
>>13
Win95以降(だと思うけど)なら、CF_BITMAPでHBITMAPを渡せばシステム側でCF_DIBに変換して
一緒にクリップボードに入れてくれる。
逆もしかりで、CF_DIBでDIB入りHGLOBALを渡せば、CF_BITMAPも作って入れてくれる。
色変換とかにシビアにならないならその程度の使い方で困ることは基本的にない

24 :デフォルトの名無しさん:2008/09/16(火) 12:47:52
>>13じゃなくて>>12だった

25 :デフォルトの名無しさん:2008/09/16(火) 15:00:02
>>23
クリップボードに入れるときに変換するのではなくて、
貼り付けるアプリ側から要求が来たときに変換するんじゃないの?

26 :デフォルトの名無しさん:2008/09/16(火) 15:05:11
質問させてください。
Windowsプログラミングの知識があまりないため、
これまで自作のアプリでfopen→fgetsでファイルの内容を読み込み内部処理ということをやっていました。
これをCreateFile→ReadFileに変更したいのですが、
ReadFileしたバッファから一行ずつ読み出すようなAPIはありませんでしょうか?


27 :デフォルトの名無しさん:2008/09/16(火) 15:54:56
fopen/fgetsでいいだろ
わざわざCreateFileに変更する理由など無い

28 :26:2008/09/16(火) 16:06:48
>>27
もともとの動機は、ファイル名をソース上で記述しているため、
違うファイルを開くために毎回コンパイルしていたので、
コモンダイアログボックスで指定できるようにしたかったのです。
他にいい方法がありますでしょうか?

29 :デフォルトの名無しさん:2008/09/16(火) 16:37:08
>>28
コモンダイアログとCreateFileは関係ないと思うが。
GetOpenFileNameで得られるファイル名はLPTSTRだから、
Unicodeビルドの場合は注意が必要。

30 :デフォルトの名無しさん:2008/09/16(火) 17:43:01
>>25
実際のデータ変換をいつするかはプログラマでもあまり考えなくていいかと
少なくとも形式列挙すれば両方入ってるわけだし

31 :デフォルトの名無しさん:2008/09/16(火) 17:51:40
つかXP以降は特にファイルオープン関連はunicodeAPIでないと普通に開けない
ファイル等(ショートネームがない上にshiftjis範囲外の文字を利用したフォルダなど)が出てくるんで
unicode関数使いたいってのはわからんでもない話だがな
まぁそれにしても_wfopenか_wfopen_sを使えば良い話ではあるが

リードラインする普通のWin32APIってのは存在しない
まぁ車輪の再発明になるだろうがこれを気に自分でテキスト読み込みストリーム関数作ってみるのもいいんじゃない?
実際そんなに難しいものじゃないし


32 :デフォルトの名無しさん:2008/09/16(火) 18:08:11
streambuf作ってiostreamに渡せばええんちゃう?

33 :デフォルトの名無しさん:2008/09/16(火) 18:12:07
>>30
お前がプログラマとしてド素人だということはよく分かった

34 :デフォルトの名無しさん:2008/09/16(火) 18:50:08
>>33が何にご立腹なのかわからんが、>>12の答えとしては
「気にしないでCF_BITMAPでHBITMAPを放り込め」

35 :デフォルトの名無しさん:2008/09/16(火) 18:56:40
あの程度でご立腹てw
2ちゃん初心者かよ

36 :デフォルトの名無しさん:2008/09/16(火) 20:28:23
自作の動画プレイヤーにボリュームコントロールを付けたいと考えています。

auxSetVolumeを使えばWAVEやCDプレーヤーの出力音量は調整できると思いますが
この自作プレイヤー独自の音量を変更したいです。

アプリケーション独自の音量を調節するような方法はありませんでしょうか。

37 :デフォルトの名無しさん:2008/09/16(火) 20:44:50
どうやって動画再生を実装しているか知らないけど、
音量調整用のインターフェース位付いていると思うのだが。
完全自前でやったとしても、DirectSoundやCoreAudioで音量調整できるし。

38 :デフォルトの名無しさん:2008/09/16(火) 20:49:16
waveストリームを渡す時に、音量を下げてサンプリングして渡す

39 :デフォルトの名無しさん:2008/09/16(火) 21:04:38
Windows Media Format SDK 11で実装しました。
リファレンスが完全英語なので見落としたのかもしれませんが
音量調節のインタフェースはなかった気がします…。

40 :12:2008/09/16(火) 21:53:01
>>14
テキストをクリップボードにセットするときと同じように
必要なメモリを自分でGlobalAllocしないといけないということなのですね。

CreateDIBSectionはHBITMAPが返ってくるのに、
HBITMAPを引数に取るSetClipboardDataには渡せないというのも
なんか込み入っててややこしいです。

>>34
ttp://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200509/05090003.txt
CreateDIBSectionのHBITMAPをSetClipboardDataに渡しても
正しくクリップボードに渡らず、上記を読む限り、
DIBSectionとはそういうものなのかなと解釈していたのですが、
実は渡せるものなのでしょうか?

41 :デフォルトの名無しさん:2008/09/16(火) 23:29:58
>>40
MSのサンプルを見たら、CF_BITMAP/CF_DIBの両方をSetClipboardDataしていた。
で、CF_BITMAPではわざわざDIBSectionをDDBに変換していた。

多分クリップボードAPIの設計が古いとかで、DIBSectionには対応してないんじゃないの?
同じHBITMAP型でも内部的には違う物だし、Win16時代には無かったし。

42 :デフォルトの名無しさん:2008/09/17(水) 00:56:12
c++のtry〜catchでapiのエラーもキャッチできるんでしょうか?

43 :デフォルトの名無しさん:2008/09/17(水) 00:59:16
tryがどんな原理で動いてるのか考えれば容易にわかること

44 :デフォルトの名無しさん:2008/09/17(水) 01:32:42
tryがどんな原理で動いてるのか考えてもわかりません

45 :デフォルトの名無しさん:2008/09/17(水) 01:34:39
おしえて

46 :デフォルトの名無しさん:2008/09/17(水) 01:40:18
できないよ

47 :デフォルトの名無しさん:2008/09/17(水) 01:41:18
知らないならレスしないでくださいうざいです

48 :デフォルトの名無しさん:2008/09/17(水) 01:44:19
だったらしても構わないよね


49 :デフォルトの名無しさん:2008/09/17(水) 02:25:11
>>48
知らないならレスしないでくださいうざいです

50 :デフォルトの名無しさん:2008/09/17(水) 03:08:00
だったらしても構わないよね

51 :デフォルトの名無しさん:2008/09/17(水) 08:10:43
知ってるならレスしないでくださいうざいです

52 :デフォルトの名無しさん:2008/09/17(水) 08:34:08
たまに例外をスローするやつがあったような

53 :デフォルトの名無しさん:2008/09/17(水) 08:46:13
APIのエラーは戻り値見りゃいいだろ

54 :デフォルトの名無しさん:2008/09/17(水) 09:37:23
>>52
構造化例外処理の実務はコンパイラ依存なんじゃねーの?
ポインタ渡し系 API で不正アクセスが発生 → そいつをトラップできた というだけの話のような・・・

55 :デフォルトの名無しさん:2008/09/17(水) 09:44:04
>>54
つ HeapAlloc
つ InitializeCriticalSection

56 :デフォルトの名無しさん:2008/09/17(水) 12:46:51
>>55
Win32例外とC++の構造化例外は別物です

57 :デフォルトの名無しさん:2008/09/17(水) 12:58:39
>>56
HeapAllocが出す例外 = 構造化例外
C++標準の例外 = 実装依存、VC++では構造化例外を使用


58 :デフォルトの名無しさん:2008/09/17(水) 13:03:07
advanced windows には VC++ だと C++の構造化例外を実装するのに
(Win32)SEH も利用してるっぽいことが書かれているな (改定4版 p.818)

59 :デフォルトの名無しさん:2008/09/17(水) 13:30:00
大抵SEH使ってるだろ
throw付近でRaiseExceptionが呼ばれる

60 :デフォルトの名無しさん:2008/09/17(水) 16:43:52
CreateProcessでコンソールアプリを起動しているのですが
そのアプリが出力した標準出力の文字列を取得するには
どうすればよいでしょうか?

61 :デフォルトの名無しさん:2008/09/17(水) 16:45:04
CreatePipe

62 :デフォルトの名無しさん:2008/09/17(水) 16:53:05
CreatePipeでも取得できない事があるのですがその場合はどうすればいいのでしょうか?

63 :デフォルトの名無しさん:2008/09/17(水) 16:56:48
1.標準エラー出力のほうだった
2.直接コンソールAPIで出力していた

64 :デフォルトの名無しさん:2008/09/17(水) 17:14:53
ここでお約束のAPIフック

65 :デフォルトの名無しさん:2008/09/17(水) 17:39:32
フック・・・ワクワクしちゃう・・・

66 :デフォルトの名無しさん:2008/09/17(水) 17:56:12
CreatePipeで取得しようとするとコンソールアプリが終了してしまいます。
リアルタイムに1% 2%・・・と画面が書き換わるアプリだからでしょうか?
この場合はどうすればいいのでしょうか?

67 :デフォルトの名無しさん:2008/09/17(水) 18:07:01
そんな書き方しかできないならエスパースレにでも行った方がいい。

68 :デフォルトの名無しさん:2008/09/17(水) 20:08:00
AttachConsole
ReadConsoleOutputCharacter

69 :デフォルトの名無しさん:2008/09/18(木) 08:35:45
質問です。
Findwindowで取得できるハンドルを、EXEの実行ファイル名から取得はできませんでしょうか?
Findwindowは使わないやり方が知りたいのですが、ありましたらご教授おねがい致します。
とりあえず
EXEのファイル名からプロセスIDの取得
はできます。どうかお力をおねがいします。


70 : :2008/09/18(木) 09:00:56
Win32APIって64ビットWindowsでも使えるの?

71 :デフォルトの名無しさん:2008/09/18(木) 09:43:04
>>69
CreateToolhelp32Snapshot -> EnumThreadWindows

72 :デフォルトの名無しさん:2008/09/18(木) 10:02:48
レスありがとうございます。
いま外出中なので、帰宅次第やってみようと思います。
またお世話になるかもしれませんが・・・
では失礼致します。

@携帯




73 ::2008/09/18(木) 12:06:31
質問です。Daemonを任意のタイミングで起動したりできるでしょうか?もし、できるとして起動するためのAPIはありますでしょうか?

74 :デフォルトの名無しさん:2008/09/18(木) 12:14:30
実行はCreateProcess

75 :デフォルトの名無しさん:2008/09/18(木) 12:52:20
ATとかcronみたいな機能を期待しているのかよくわからんな

76 :デフォルトの名無しさん:2008/09/18(木) 12:56:45
timeGetTime + timeBeginPeriod/timeEndPeriod の使い方なんですが、
timeGetTimeを呼び出すごとに、timeBeginPeriod/timeEndPeriodではさむのか、
アプリケーションの開始と終了時にそれぞれ呼べばいいのか、どちらなのでしょうか。

77 :デフォルトの名無しさん:2008/09/18(木) 13:59:51
どっちかといえば後者

78 :デフォルトの名無しさん:2008/09/18(木) 14:30:18
ありがとうございます。できるだけ範囲を絞った上で、大域的にtimeBeginPeriod/Endするという感じでやってみたいと思います

79 :デフォルトの名無しさん:2008/09/18(木) 14:44:23
>>71

使い方がさっぱりですが、

CreateToolhelp32Snapshot(TH32CS_SNAPHEAPLIST,PID);
をやって、HANDLEが返ってきますが、
function EnumThreadWindows(dwThreadId: DWORD;
lpfn: TFNWndEnumProc;
lParam: LPARAM): BOOL; stdcall;
がさっぱりで・・・。


80 :デフォルトの名無しさん:2008/09/18(木) 15:09:15
>>79
せめてMSDNでAPIの説明ぐらい読め

81 :デフォルトの名無しさん:2008/09/18(木) 15:09:55
まさかヒープリストを取得するとは

82 :デフォルトの名無しさん:2008/09/18(木) 15:12:41
>>80
>>81

TH32CS_SNAPTHREAD

こっちかな?

83 :デフォルトの名無しさん:2008/09/19(金) 13:39:11
指定したフォルダ内のファイル情報について取得するAPIはありますか?
ファイル数やそのファイル名を取得したいのですが。

84 :デフォルトの名無しさん:2008/09/19(金) 13:43:15
FindFirstFile,FindNextFile

85 :83:2008/09/19(金) 14:06:42
>>84
ありがとうございます!
とても助かりました。

86 :デフォルトの名無しさん:2008/09/19(金) 15:17:11
いま、指定したフォルダの全サブフォルダにあるファイルを求める関数を
作っているところ暇だったら待っててくれ


87 :デフォルトの名無しさん:2008/09/19(金) 15:18:26
待つ

88 :デフォルトの名無しさん:2008/09/19(金) 16:47:35
>>86
dir /s

89 :デフォルトの名無しさん:2008/09/19(金) 16:53:59
C/C++で順にファイル名を受け取れるやつってこと

90 :デフォルトの名無しさん:2008/09/19(金) 16:55:22
boost::filesystem::directory_iterator

91 :デフォルトの名無しさん:2008/09/19(金) 17:58:54
長さやコードの違いで動くか判らないで自分でつくるよ

92 :デフォルトの名無しさん:2008/09/19(金) 19:33:05
>>91
日本語でおk

93 :デフォルトの名無しさん:2008/09/19(金) 19:35:39
他人の作った糞コードなんか信用できないから、全一ハカーの俺が全部自作してやんよ


94 :名無し募集中。。。:2008/09/19(金) 19:48:26
全一君?

95 :デフォルトの名無しさん:2008/09/19(金) 20:06:15
最近自分の作ったコードの方が信用できなくなってきた

96 :デフォルトの名無しさん:2008/09/19(金) 23:59:09
クラスのインスタンスってどこで宣言するのが適切なの?

97 :デフォルトの名無しさん:2008/09/20(土) 00:08:14
このスレと無関係な話を振るその間抜けな脳味噌を何とかする方が先決

98 :デフォルトの名無しさん:2008/09/20(土) 00:10:11
>>96
スレチじゃね?


99 :デフォルトの名無しさん:2008/09/20(土) 00:22:07
べつにmallocでもいいよね?

100 :デフォルトの名無しさん:2008/09/20(土) 01:20:39
特定のレジストリエントリの値が変更されたことを検出したいのですが、
どなたか良い方法をご存じないでしょうか?

もっとも単純?なのは
定期的にそのレジストリを参照して値が変更されているか確認するという方法だと思いますが、
そうではなくて、メッセージなどで変更が通知されたら良いなと思って調べています。

RegOpenKeyEx()の引数にKEY_NOTIFYを設定すると、
「変更の通知(キーに変更が加えられたときに、そのことを通知するよう要求)を許可します。」
という記載があったのですが、どう使用してよいかわかりません。

どなたかご存知の方はいませんか?


101 :デフォルトの名無しさん:2008/09/20(土) 01:23:31
イベントハンドルでも渡しておけばsigunaruされるんじゃないの

102 :デフォルトの名無しさん:2008/09/20(土) 01:30:05
RegNotifyChangeKeyValue

103 :デフォルトの名無しさん:2008/09/20(土) 03:29:22
>>101
sigunaruって何ですか?

104 :デフォルトの名無しさん:2008/09/20(土) 05:47:27
ごめん、typoだorz...
sigunal です。


105 :デフォルトの名無しさん:2008/09/20(土) 07:01:55
sigunal(笑)

typoじゃなくて英単語知らないだけだろバーカ

106 :デフォルトの名無しさん:2008/09/20(土) 07:04:36
知らないならレスしないでくださいうざいです

107 :デフォルトの名無しさん:2008/09/20(土) 14:19:52
GetTextExtentPoint32関数を使わずに文字列幅を求めたいのですが
そのような場合はどの関数を使えばいいですか?

108 :デフォルトの名無しさん:2008/09/20(土) 14:30:27
実際に書いて色の違いで取得とかだめ?

109 :デフォルトの名無しさん:2008/09/20(土) 14:36:42
なんでGetTextExtentPoint32を使いたくないんだ?

110 :デフォルトの名無しさん:2008/09/20(土) 14:43:31
>>109
使いたくない、という訳ではありません。
ただ他の方法も知っておきたいと思って質問しました。

111 :デフォルトの名無しさん:2008/09/20(土) 14:45:54
ではGetTextExtentPoint32使ってください。

112 :デフォルトの名無しさん:2008/09/20(土) 14:51:02
GetCharABCWidthsでそれぞれの文字の幅を取って、自前で足すとか?

「走行中の車の向きを変えたいんですが、ハンドル操作以外に方法ありますか?」みたいな質問するなよ。

113 :デフォルトの名無しさん:2008/09/20(土) 14:51:08
>>111
他の方法は無いのですか?

114 :デフォルトの名無しさん:2008/09/20(土) 15:31:19
あとわからないなら黙っててください

115 :デフォルトの名無しさん:2008/09/20(土) 16:02:44
MeasureText

116 :デフォルトの名無しさん:2008/09/20(土) 16:14:56
Character Widths
http://msdn.microsoft.com/en-us/library/ms534206(VS.85).aspx
String Widths and Heights
http://msdn.microsoft.com/en-us/library/ms534015(VS.85).aspx

117 :デフォルトの名無しさん:2008/09/20(土) 18:01:18
Uniscribeにもそういう機能無かったっけ?

118 :デフォルトの名無しさん:2008/09/20(土) 22:08:34
>>112
サロゲートペアとか右から左に書く言語とかどうすんだよ
無知は黙ってろ

119 :デフォルトの名無しさん:2008/09/21(日) 04:48:08
リストビューのレポートで選択された行を上下に移動する方法はありますか?

120 :デフォルトの名無しさん:2008/09/21(日) 04:49:27
矢印キー

121 :119:2008/09/21(日) 04:56:58
>>120
選択された行の内容ごと移動させたい

122 :デフォルトの名無しさん:2008/09/21(日) 05:16:54
削除して挿入

123 :デフォルトの名無しさん:2008/09/21(日) 05:26:26
>>122
やっぱりその方法しかないですか?
どもでした

124 :デフォルトの名無しさん:2008/09/21(日) 07:12:30
GetImageConfigInformation()が必ず失敗する
でもエラーコードは0
誰か成功経験ある?

125 :デフォルトの名無しさん:2008/09/21(日) 07:17:37
>>124
こんなもん数行のコードで同等のことが出来るだろ

126 :デフォルトの名無しさん:2008/09/21(日) 07:21:12
くわしく

127 :デフォルトの名無しさん:2008/09/21(日) 09:08:41
PEヘッダの仕様書でも読め

128 :デフォルトの名無しさん:2008/09/21(日) 11:48:59
知らないならレスしないでください

129 :デフォルトの名無しさん:2008/09/21(日) 14:34:31
いつもの事がだが、凄く意味の無いスレだよな。。。

教えろ→自分でやれ→終了 の流れ

130 :デフォルトの名無しさん:2008/09/21(日) 17:29:26
>>129
「自分でしろ」という事を教えてるんだろうが
コード書いてるのは質問している当人なのだから、結局は自分でする事になるだろ

「〜するプログラム(ソース)を書いてくれ」と言うならそもそもスレ違い

131 :デフォルトの名無しさん:2008/09/21(日) 17:42:32
教えたいなら教えてください
知らないならレスしないでください

132 :デフォルトの名無しさん:2008/09/21(日) 18:41:12
デバッガ作りたいんだけど、
デバッグ実行中のプロセスの一時停止を一発でできるapiってある?
プロセスの全スレッド列挙してSuspendThreadするか、
Get/SetThreadContextで適当なスレッドにトラップを設定するしかない?
DebugBreakをプロセスIDかハンドル指定で呼べる感じのやつってない?

133 :デフォルトの名無しさん:2008/09/21(日) 18:46:17
HFONT hPrev;
hPrev = SelectObject();
SelectObjectしたら元のオブジェクトを保存して使い終わったら戻すべきであるという決まりがあるようですが、
そのような決まりがある理由を教えて下さい

134 :デフォルトの名無しさん:2008/09/21(日) 18:48:12
自分でしろって言う奴は単に自分も知らないだけw

135 :デフォルトの名無しさん:2008/09/21(日) 18:55:14
ということにしたいのですね。

136 :デフォルトの名無しさん:2008/09/21(日) 18:59:49
知らないならレスしないでください

137 :デフォルトの名無しさん:2008/09/21(日) 19:28:51
もうだめだこのスレ

138 :デフォルトの名無しさん:2008/09/21(日) 19:30:40
すみません。別スレから誘導されてきました。
C言語の文法書2冊とWinAPIの本を2冊読みました。そこで
以前から私が作りたかった、ショートカット作成プログラムをぜひとも作りたいのです。

でも、やり方とかMSDNを調べてもわかりません。具体的に手順を書かせていただきますと。

1.コンソールアプリから2つフォルダのフルパスを入力する。
2.WindowsAPIで書いたショートカット作成関数を呼び出してお互いのフォルダにお互いのフォルダの
ショートカットを作成する。

そこで、ショートカット作成のWindows32APIのMSDNの調べ方もしくは
関数そのものを教えて欲しいのです。すみませんが、教えてください。よろしくお願いします。

139 :デフォルトの名無しさん:2008/09/21(日) 19:44:29
デスクトップ上にショートカットを作成する方法
http://www7a.biglobe.ne.jp/~tsuneoka/win32tech/1.html

ショートカットを作成するには
http://www.runan.net/program/tips/sdk_03_CreateShortCut.shtml

140 :132:2008/09/21(日) 19:45:54
自己解決。英語版MSDN調べてたらまんまDebugBreakProcessってのがあった。


141 :138:2008/09/21(日) 19:47:57
>>139
どうもありがとうございます。知りたい情報が載っているみたいです。
なんとか解読してがんばってみます。本当にありがとうございました。

142 :デフォルトの名無しさん:2008/09/21(日) 20:01:41
こんなんググりゃ即効で出てくんだろうが
どんだけゆとりなんだよ

143 :デフォルトの名無しさん:2008/09/21(日) 20:03:07
>>140
XP以降はそんなのあるんだな。

BoundsCheckerの中の人がWin2kのときに書いた本では、
デバッガのスレッド優先度を最大にしてから被デバッグプロセスの
全スレッドをSuspendThreadしてブレークポイントを挿入するという
まどろっこしいことをしていた。

144 :デフォルトの名無しさん:2008/09/21(日) 20:08:38
ホントゆとりしか居ないのなw

145 :デフォルトの名無しさん:2008/09/21(日) 20:33:04
荒れるからおっさんは黙ってろw

146 :デフォルトの名無しさん:2008/09/21(日) 21:26:55
ID出ないので、ここで荒らして遊んでます。許して下さい。

147 :デフォルトの名無しさん:2008/09/21(日) 21:35:13
許します。

148 :デフォルトの名無しさん:2008/09/21(日) 23:33:56
>>133
>>133
>>133
>>133
>>133

149 :デフォルトの名無しさん:2008/09/22(月) 00:35:04
> 〜という決まりがあるようですが、
> そのような決まりがある理由を教えて下さい

ゆとり丸出しな質問だな

150 :デフォルトの名無しさん:2008/09/22(月) 01:08:47
わからないならレスしないで下さい

151 :デフォルトの名無しさん:2008/09/22(月) 01:33:46
Windowsを作った人たちがそうしなければならないように作ったからです。
理由はここにいるような下っ端な人には知らされていませんから、
レッドモンドにお問い合わせください。

152 :デフォルトの名無しさん:2008/09/22(月) 01:50:53
戻せばDeleteObjectするかしないか気にしないでいいだろ
最終的にはストックオブジェクトになるから消さなくてすむ

153 :デフォルトの名無しさん:2008/09/22(月) 02:30:47
決まりごとに理由を問うてるのがそもそも馬鹿
そういう馬鹿ほどいちいち余計なことを気にするからいつまでも馬鹿のまま

154 :デフォルトの名無しさん:2008/09/22(月) 02:38:24
>>70
使える
ポインタのサイズ以外はほぼ互換

155 :デフォルトの名無しさん:2008/09/22(月) 02:43:27
>>153
それは違うだろ、馬鹿なのはお前だよ

156 :デフォルトの名無しさん:2008/09/22(月) 02:43:50
うるせーばかどっかいけ

157 :デフォルトの名無しさん:2008/09/22(月) 02:53:36
わかったどっかいってくる

158 :デフォルトの名無しさん:2008/09/22(月) 04:50:55
樹海に行ってくる

159 :デフォルトの名無しさん:2008/09/22(月) 05:03:14
祝ってやる

160 :デフォルトの名無しさん:2008/09/22(月) 05:28:47
お前ら一生うらやんでやるからな

161 :デフォルトの名無しさん:2008/09/22(月) 07:20:15
>>156=>>157=>>158=>>159=>>160
深夜にご苦労様

162 :デフォルトの名無しさん:2008/09/22(月) 09:43:30 ?2BP(0)
>>153
衆愚の鑑のような人だ。

163 :デフォルトの名無しさん:2008/09/22(月) 14:47:50
>>161
はずれだ馬鹿め

164 :デフォルトの名無しさん:2008/09/22(月) 14:47:50
> "衆愚の鑑" に一致する日本語のページ 3 件中 1 - 3 件目
新しい流行語でも作りたいのか?

165 :デフォルトの名無しさん:2008/09/22(月) 14:56:39
WindowsAPIでVBみたいにテキストを入力できるタイプのメッセージボックスってないんですか?

166 :デフォルトの名無しさん:2008/09/22(月) 14:59:10
>>164
何でまとめて検索するんだ?
「衆愚」は衆愚政治とかで使うし、「〜の鏡」って表現も普通にあると思うんだが
ちなみに>>162ではない

167 :デフォルトの名無しさん:2008/09/22(月) 15:00:46
ゆとりは語彙が少ないからしょうがない

168 :デフォルトの名無しさん:2008/09/22(月) 15:08:55
>>165
ない。
APIを組み合わせれば可能

169 :デフォルトの名無しさん:2008/09/22(月) 15:14:22
本来の用途ではないが GetOpenFileName

170 :デフォルトの名無しさん:2008/09/22(月) 19:34:21
>>166
まとめて検索して出ないような表現は無いのと一緒
例えば「蝿の鑑」なんて言葉無いだろ

171 :デフォルトの名無しさん:2008/09/22(月) 19:34:53
↑馬鹿

172 :デフォルトの名無しさん:2008/09/22(月) 19:46:47
これは酷い社会不適合者ですね。>>170

173 :デフォルトの名無しさん:2008/09/22(月) 19:50:08
↑馬鹿

174 :デフォルトの名無しさん:2008/09/22(月) 20:07:50
>>173
ん?悔しかったの?w

175 :デフォルトの名無しさん:2008/09/22(月) 20:17:56
アニメーションしてるウィンドウの上に別のウィンドウを重ねて
重ねたほうのウィンドウを透明にしてその上に絵を描きたい
NULLブラシを使ったところアニメーションが反映されません
レイヤードウィンドウを使うことによって解決できましたが
レイヤードウィンドウを使わない通常の描画処理で同じことをできないでしょうか?



176 :デフォルトの名無しさん:2008/09/22(月) 21:04:31
>>174
とても悔しかった。

177 :デフォルトの名無しさん:2008/09/23(火) 01:16:43
>>175
2000やXPではできません。
というかできないからレイヤードウィンドウのAPIが追加されたのです。
VistaではAero有効ならできたような

178 :デフォルトの名無しさん:2008/09/23(火) 10:21:16
別のスレッドで(メインスレッドとは関係ない)メモリDCに対してHALFTONEモードでStretchDIBitsするとメインスレッドの描画処理が遅くなってしまう。
スレッドの優先度下げてもメインスレッドに影響するからもしかしてGDI系の関数って競合を防ぐために内部的にクリティカルセクション使ってたりするのかな。
自前で補間拡大実装しますかね。

179 :デフォルトの名無しさん:2008/09/23(火) 10:34:16
つDirect3D

180 :デフォルトの名無しさん:2008/09/23(火) 11:42:08
>>179
今度1から書き直すからそのときはD3Dも検討してみるよ。

181 :デフォルトの名無しさん:2008/09/23(火) 11:49:16
今のPCならGDI+でも割と余裕かも。
結局DIBに直接描画するだけだから、競合とかは関係無い筈。

182 :デフォルトの名無しさん:2008/09/23(火) 14:35:52
>>178
お前の勘違い

183 :デフォルトの名無しさん:2008/09/23(火) 20:18:43
>>182
お前が勘違い

184 :デフォルトの名無しさん:2008/09/23(火) 20:49:26
>>182
お前も勘違い

185 :デフォルトの名無しさん:2008/09/23(火) 21:23:44
>>182
お前と勘違い

186 :デフォルトの名無しさん:2008/09/23(火) 21:26:19
ああっ、そこっ、かんじちゃうの
だめっ、ああっ、かんじちゃう〜〜〜

ボケェ平仮名や言うとるやろが!

187 :デフォルトの名無しさん:2008/09/24(水) 00:14:21
文字幅テーブルを使う事にはどんな利点がありますか?

188 :デフォルトの名無しさん:2008/09/24(水) 01:00:32
なんで自分で調べないの?ゆとり?

189 :デフォルトの名無しさん:2008/09/24(水) 01:24:00
>>187
欠点しか思い浮かばない

・サロゲートペアは?
・カーニングは?

190 :デフォルトの名無しさん:2008/09/24(水) 02:12:39
>>189
サロゲートペアの時のみGetTextExtentPoint32()を使うのはどうでしょうか?

191 :デフォルトの名無しさん:2008/09/24(水) 07:45:43
>>189
サロゲートペアっつーか合成文字?

192 :デフォルトの名無しさん:2008/09/24(水) 11:46:17
文脈によって字形が変わる場合もあるんだから無理だろ。

193 :デフォルトの名無しさん:2008/09/24(水) 12:37:46
例えばアラビア文字のyは語末と語頭に来た時(正確な言い方ではないが勘弁)で
幅が全く違ってくるな。

単独
ي

語頭
يط

語尾
طي

語中
طيط

194 :デフォルトの名無しさん:2008/09/24(水) 15:30:53
じゃぁどうやったら確実に文字幅を計る事が出来るのでしょうか

195 :デフォルトの名無しさん:2008/09/24(水) 15:37:23
どうやってもできない

196 :デフォルトの名無しさん:2008/09/24(水) 15:51:53
>>195
そう…ですか。ありがとうございます。

197 :デフォルトの名無しさん:2008/09/24(水) 16:29:45
半透明ブラシを作るには?
COLORREFでα値設定できたらなあ

198 :デフォルトの名無しさん:2008/09/24(水) 16:32:26
つ GDI+

199 :デフォルトの名無しさん:2008/09/24(水) 20:25:19
WM_PAINTの処理が増えてきたので
別のソースファイルにpaint用の関数を書いて
hdcを渡したのですがうまくいきません
なぜでしょうか?
↓のようにしたいのですが・・・

hdc = BeginPaint(hWnd, &ps);
PaintFunc(hdc);
EndPaint(hWnd, &ps);


200 :デフォルトの名無しさん:2008/09/24(水) 20:26:55
>>199
うまくいってないのは WM_PAINT で再描画する領域外だったりしないか?

201 :デフォルトの名無しさん:2008/09/24(水) 21:18:45
問題ない部分だけみせてなぜと聞かれても

202 :デフォルトの名無しさん:2008/09/24(水) 22:31:07
wchar_t buf[2];

buf[0] = 0xD844;
buf[1] = 0xDE3D;
TextOutW(hdc,0,0,buf,2);
■■こんな感じに表示されてしまうのですが、正しく表示させるにはどうすればよいでしょうか

203 :デフォルトの名無しさん:2008/09/24(水) 22:37:51
WM_PAINT内にそのコードを書いたときは、大丈夫ってことだよな

204 :デフォルトの名無しさん:2008/09/24(水) 22:59:52
エスパーさん出番ですよ

205 :デフォルトの名無しさん:2008/09/24(水) 23:02:30
>>202
それはL"TEST"とかだと問題ないって前提なんだよな?
それなら選択されているフォントに対応する文字がないだけじゃね?

206 :デフォルトの名無しさん:2008/09/24(水) 23:34:55
VistaでGetStockObject(DEFAULT_GUI_FONT)で得たフォントを
選択して描画してみたらきちんと表示されたぞ。>>205の言うとおりだとおも。
適当にやって表示されなかったのは、サロゲート文字だからだろうな。

207 :デフォルトの名無しさん:2008/09/25(木) 00:04:06
WM_POWERBROADCASTのメッセージでスタンバイ移行時の
PBT_APMSUSPENDのところの処理がvistaだとうまくいかないんだが、
どうすりゃいいでしょうか?

208 :デフォルトの名無しさん:2008/09/25(木) 00:12:47
Win32のGUIアプリケーションの標準出力を、そのアプリが立ち上げたcmd.exeの標準出力へ出す方法って
どなたかご存じないでしょうか?

OpenProcess等で別プロセスを立ち上げて、その標準出力の結果を本アプリへ戻す、
という方法はパイプを使って紹介されているのですが、
今回のような逆のパターンって見かけないですね。


209 :デフォルトの名無しさん:2008/09/25(木) 00:16:20
同じだろ

210 :マジレスチュウ ◆MaJi/01g.w :2008/09/25(木) 00:46:24 ?2BP(50)
>>199
どう上手くいかないのかを書いてくれないと・・・
コンパイル通らないならエラー内容を。

211 :マジレスチュウ ◆MaJi/01g.w :2008/09/25(木) 00:51:12 ?2BP(50)
>>208
http://tamachann.blog20.fc2.com/
これはどうよ。

212 :デフォルトの名無しさん:2008/09/25(木) 00:56:17
>>206
XPじゃ表示されませんか?

213 :デフォルトの名無しさん:2008/09/25(木) 01:29:30
Vistaのコンパネの[ネットワークと共有]で
ネットワーク探索が有効かどうか知る方法ってあるんかな?

レジストリを探るしかないんだろうか。

214 :デフォルトの名無しさん:2008/09/25(木) 02:11:03
>>208
AllocConsoleとかAttachConsoleでは駄目?
っていうか、ちょっとググっただけで、いっぱい例が出てきたが。

215 :デフォルトの名無しさん:2008/09/25(木) 02:49:11
AttachConsole
GetStdHandle


216 :デフォルトの名無しさん:2008/09/25(木) 04:25:41
CreateCompatibleBitmapとか、Win95/98だとビットマップのサイズは16MBを超えられないと書いてありますが、
DDBのサイズってどういう計算になるんでしょうか。
デバイス依存なので、デバイスによって異なるから、ピクセル数からサイズを求めることは不可能だったりしますか。

217 :デフォルトの名無しさん:2008/09/25(木) 06:54:22
>>216
色数は32bitが最大だから横×縦×8だと思う

218 :デフォルトの名無しさん:2008/09/25(木) 06:59:41
世の中には、
power of 2でなければならないとか、
縦横が同じでなければならないだとか、
貧弱なのもあるらしいぜ。

219 :デフォルトの名無しさん:2008/09/25(木) 07:10:12
DDBでそこまでパフォーマンス優先な実装は流石にないだろ。
あっても、水平方向のアラインが16bytesとかそれ位じゃね?

220 :デフォルトの名無しさん:2008/09/25(木) 07:46:57
そういえば前にGDI+で縦横が同じでないアイコンを読み込んだらメモリアクセス違反で落ちてたな
さすがにもう修正されてるとは思うが

221 :sage:2008/09/25(木) 08:23:05
ありがとうございます。

>>211
これも起動した相手プロセスの標準出力を起動要求した側へ戻すためのパイプ例ですよね。

>>214
こちらの方法も試したのですが、コンソールウィンドウを×で閉じると、
GUIのウィンドウの方も強制的に終了されてしまうので、見送っています。
ハンドラを設定して、CTRL_CLOSE_EVENT が送られてきたときに、TRUEを返却するようにしたのですが、
OSから、このプログラムを強制終了するか否かのダイアログが出てしまうので、見送ったのです。
(なにも言わず無視するようならば良かったのですが)


今テスト中ですがやりたいのは、
・メインのアプリAから cmd.exe を別プロセス実行
・そのcmd.exeに割り当てられた標準出力にAの標準出力を表示。
 乗っ取ると言うよりは、寄生みたいな感じで。2つのプログラムの標準出力結果がミックスされるような。

相手がcmd.exeである点だけがくせ者だったりします。
もし自前プログラムだったら、割り当てられている標準出力のハンドルを呼び出し元に通知したり、
それこそパイプでつないで、自分の標準出力に改めて出すようなコードを書くのですが。

>>214
>>215
XPからはAttachConsoleというものもあるんですね。
こちらちょっと調べてみようと思います。



222 :デフォルトの名無しさん:2008/09/25(木) 08:27:56
>>217
横×縦×4だろ

223 :デフォルトの名無しさん:2008/09/25(木) 08:48:03
lWidth * lHeight * sizeof(RGBQUAD)

224 :デフォルトの名無しさん:2008/09/25(木) 09:46:10
昔はプレーン4枚のVRAMとかあったしなあ

225 :デフォルトの名無しさん:2008/09/25(木) 10:09:06
だから?

226 :デフォルトの名無しさん:2008/09/25(木) 10:21:52
>>225
長くなるから、年寄りの話に相槌打つときは「ふーん」だけにしときなさい。

227 :デフォルトの名無しさん:2008/09/25(木) 10:53:06
>>225
単純に>>223のようにはいかないという話がわからないバカ

228 :デフォルトの名無しさん:2008/09/25(木) 10:55:13
>>225
わからないなら、「教えてくださいお願いします」だろ

229 :デフォルトの名無しさん:2008/09/25(木) 10:57:27
WinMain内でMutexを使って2重起動防止するようにしたら
WndProc内のcase WM_SETFOCUS:が機能しなくなりました。
カーソルでウィンドウの大きさを変えてcase WM_PAINT:を機能させた後なら
機能するようになります。
一体何が問題だと考えられますか?

230 :デフォルトの名無しさん:2008/09/25(木) 12:34:32
>>227-228
年寄り乙

231 :デフォルトの名無しさん:2008/09/25(木) 15:20:47
>>229
どこかのcaseにbreak書き忘れたとか、そういうショボいミスだろう。
Mutexは関係ないかと。

232 :デフォルトの名無しさん:2008/09/25(木) 15:57:14
>>231
いえ、Mutex以外書き換えてない状態で起きるんですよ…

233 :デフォルトの名無しさん:2008/09/25(木) 17:41:31
>>229
>一体何が問題だと考えられますか?

>WinMain内でMutexを使って

234 :デフォルトの名無しさん:2008/09/25(木) 17:48:16
そのMutexの部分だけコメントアウトしたらその症状は出なくなるの?

235 :デフォルトの名無しさん:2008/09/25(木) 18:48:28
>>229
>一体何が問題だと考えられますか?
君の書いたコード。

236 :デフォルトの名無しさん:2008/09/25(木) 18:49:56
DESUYONE-

237 :デフォルトの名無しさん:2008/09/25(木) 19:10:58
>>235
坊やエスパー解答は?

238 :178:2008/09/25(木) 19:35:55
自前で画像を拡大するルーチンを書いて使ってみたところ、全くメインスレッドに影響が出なかった。
やっぱGDI関数はマルチスレッド非対応か。
でも拡大にStretchDIBitsの2倍時間が掛かるという…

239 :デフォルトの名無しさん:2008/09/25(木) 20:41:27
>221
teeみたいな感じのプロセスを挟んで、
そいつには別口のパイプでデータをやりとりするとか。

240 :デフォルトの名無しさん:2008/09/25(木) 22:35:31

>>211
改めて確認してみました。
こちらは、cmd.exeを起動し、それに対してパイプを作っているようです。
そして、この標準出力からの結果を、TCPで接続してきたクライアントに返すもののようでした。

これを利用して、ログ出力みたいなことを実現するのは可能、だと思いました。
この方法で済ませてしまうのもありと思います。

>>214
>>215
AllocConsoleやAttachConsoleも調べてみました。
やはり別プロセスでcmdを作り、それをAttachしてみても変化はなく、
そのコンソールを閉じると、本体までもが終了してしまいました。

一応、ハンドラを次のように設定してみて、即終了は無くなるのですが、
OSから警告を言われてしまいます。これを封じることが出来ればよいのですが。

BOOL WINAPI handler( DWORD ctrlChar ) // ハンドラ例
{
  if( CTRL_CLOSE_EVENT == ctrlChar )
  { // X押された
    return TRUE; // 次のハンドラへ処理渡さない
  }
  return FALSE;
}

241 :デフォルトの名無しさん:2008/09/26(金) 03:39:16
スクロールバーを持つプログラムを作ったのですが、
バーをクリックしたまま移動させてもSCROLLINFOの値が変化しません。

case WM_LBUTTONDOWN:
   PostMessage(hwnd, WM_VSCROLL, wp, lp);
   return 0;

これではだめでした。
どうすれば良いのでしょうか。

242 :デフォルトの名無しさん:2008/09/26(金) 06:08:04
>>241
メッセージ送らなくても、バー操作したらWM_VSCROLLにメッセージ飛んでる
WM_VSCROLLで何にもしてないんじゃない?

243 :241:2008/09/26(金) 15:36:03
今日見直すと
SB_THUMBPOSITION と SB_THUMBTRACK を勘違いしていました。
ごめんなさい。

244 :デフォルトの名無しさん:2008/09/27(土) 15:45:06
質問です。
親ウィンドウの真ん中に子供ウィンドウを作っています。
親ウィンドウに描画しようとすると、何故か描画できない部分がありました。
おかしいなと思い、PatBltで親ウィンドウのサイズを黒色で塗りつぶそうとすると、
http://www.dotup.org/uploda/www.dotup.org4944.jpg
この画像のようになりました。
赤で囲っている部分だけが子ウィンドウの領域のはずなのですが、何故こうなるのでしょうか?
親ウィンドウのウィンドウスタイルにはWS_CLIPCHILDRENを入れていません。

245 :デフォルトの名無しさん:2008/09/27(土) 16:04:39
1.Spy++で、本当に子ウィンドウがその範囲か確認
2.塗りつぶす時の範囲がクライアント領域全体になっているか確認

246 :デフォルトの名無しさん:2008/09/27(土) 16:20:36
>>245
どちらも原因ではありませんでした。
どうデバッグしていいかが分からない;

247 :デフォルトの名無しさん:2008/09/27(土) 16:23:19
実はchildウィンドウじゃなくてownedウィンドウになってるとか

248 :デフォルトの名無しさん:2008/09/27(土) 16:32:34
すみません・・・。原因はしょうもないミスでした。
バックバッファを作る関数の中身に子ウィンドウのサイズの定数を使っていました。
考えてくれた方ごめんなさい。

249 :デフォルトの名無しさん:2008/09/27(土) 16:43:20
やはり俺の予想通りだったな

250 :デフォルトの名無しさん:2008/09/28(日) 02:45:35
むしろ>>246の判断をどうやってしたのか気になる。
鼻くそほじりながら「そんなわけねーだろ」とかいいながらレスしたのか

251 :デフォルトの名無しさん:2008/09/28(日) 03:08:40
鼻くそ占いでどちらも原因ではないと出たのでそう判断しました。

252 :デフォルトの名無しさん:2008/09/28(日) 08:34:03
自分で書いたプログラムなら占いに頼らずちゃんとデバッグしろ

253 :デフォルトの名無しさん:2008/09/28(日) 09:43:50
でも実行するときはどこぞの神様にお祈りしちゃうんだよな

254 :マジレスチュウ ◆MaJi/01g.w :2008/09/28(日) 11:45:17 ?2BP(100)
hbrBackgroundをBLACK_BRUSHにしちゃえばいいんじゃないかと思う俺は
きっといつまでたってもデバッグ出来ないダメな子に育つんだろうな

255 :デフォルトの名無しさん:2008/09/28(日) 18:22:01
LPSTRって「Stringへのロングポインタ」って聞いたんだけど、
ロングポインタって何?ポインタは普通4バイトだけど8バイトあるとか、そういうこと?

256 :デフォルトの名無しさん:2008/09/28(日) 18:30:52
16bit時代のshort pointerに対応する用語。いまどきの人はポインタは全部ロングと考えておk。

257 :デフォルトの名無しさん:2008/09/28(日) 18:34:08
大昔は2バイトのポインタもあって、そっちが普通だったんだよ

258 :255:2008/09/28(日) 18:38:42
>>256-257
おお!どうもありがとうございました。それなら合点がいきますね。

胸のつっかえがとれた。。本当にありがとう。

259 :デフォルトの名無しさん:2008/09/28(日) 19:35:41
今からnearとfarとhugeでおっさんトークしようと思ったら話題が終わってた

260 :デフォルトの名無しさん:2008/09/28(日) 20:13:17
全然知らんゆとりだけど、
LPTSTR lp;
PTSTR p;
lp = p; // OK
p = lp; // Error
なの?

int i;
&i; <- これはnear/far/hugeどれになるの?

FARPROCのFARって、もしかしてこのfarなの?

261 :デフォルトの名無しさん:2008/09/28(日) 20:49:59
32ビット環境にはnear/far/hugeの区別はないよ
FARPROCのFARの由来はそのfarだけど今となっては意味なし

262 :デフォルトの名無しさん:2008/09/28(日) 20:56:06
LPCTSTR
のLPはLong Pointer
STRはSTRing
でTは一体何の略なの?


263 :デフォルトの名無しさん:2008/09/28(日) 20:57:05
>>262
TCHAR

264 :デフォルトの名無しさん:2008/09/28(日) 21:28:07
Tantanmen

265 :デフォルトの名無しさん:2008/09/28(日) 21:28:49
とらんすなんとか

266 :デフォルトの名無しさん:2008/09/28(日) 23:36:05
OFN_NONETWORKBUTTONが全然意味なさないんだけどなんで?

267 :デフォルトの名無しさん:2008/09/29(月) 01:58:51
昔あったネットワークボタンを消すだけなんじゃないかな

268 :デフォルトの名無しさん:2008/09/29(月) 11:11:39
64bitだと
LLPSTR
になるのか?

269 :デフォルトの名無しさん:2008/09/29(月) 13:00:15
A long time ago,so long ago that memories did not exist.
Love was not wide spread among the people and
it was magic or might that ruled the lands.
There were men that set out on precarions adventures
in order to test their strength and courage.
People called these men........__int64.

270 :デフォルトの名無しさん:2008/09/29(月) 13:02:20
そもそもLがあったのは16ビットと32ビットのアドレスが混在していたから。
現在のプログラムは32ビットと64ビットのアドレスが混在出来ないから、
そんな表記の必要性は無い。

271 :デフォルトの名無しさん:2008/09/29(月) 17:13:30
RECTLとSMALL_RECTも16ビットの時の名残?

272 :デフォルトの名無しさん:2008/09/29(月) 17:21:37
ReleaseDC()した後のDCハンドル使ってGetTextExtentPoint32()とか呼び出したらまずい?

273 :デフォルトの名無しさん:2008/09/29(月) 17:30:39
うん

274 :デフォルトの名無しさん:2008/09/29(月) 17:53:14
マリガトウ
くそ。何でいちいち解放せにゃならんのだ

275 :デフォルトの名無しさん:2008/09/29(月) 18:03:05
わけもわからずやってるのか。

276 :デフォルトの名無しさん:2008/09/29(月) 18:17:40
なぜってメモリが有限だからだろう
解放せずに確保ばっかりしていては、そのうち使い切ってしまう

277 :デフォルトの名無しさん:2008/09/29(月) 18:31:23
「使ってないのはGCしてくれるのが当然」
そう思っていた時期(ry

278 :デフォルトの名無しさん:2008/09/29(月) 19:04:29
いや、プログラムの最初でGetDC()しといて描画にはそのHDC使って最後にReleaseDC()に何故しなかった
と言いたいんだ。

279 :デフォルトの名無しさん:2008/09/29(月) 19:20:24
ウィンドウが1枚きりならそれでもいいけど、
たくさんのウィンドウがあって、それぞれに専用のDCを常時確保しておくというやり方は、
今ならともかく、16ビット時代のWindowsには厳しかったんだ

280 :デフォルトの名無しさん:2008/09/29(月) 20:17:26
現在でも描画リソースの制限は結構厳しいから、節約しようね

281 :デフォルトの名無しさん:2008/09/29(月) 20:42:33
>>279-280(;´Д`)ハァハァ

282 :デフォルトの名無しさん:2008/09/29(月) 22:27:12
GetTextMetrics()出失敗してたからGetLastError()したら返り値が183(既にあるファイルを作れません)だった。
どうすりゃいいんだ・・・orz

283 :デフォルトの名無しさん:2008/09/29(月) 23:09:47
既にあるファイルを作るのをやめるんだ

284 :デフォルトの名無しさん:2008/09/29(月) 23:19:56
ファイルは作ってないんです(´Д⊂

285 :デフォルトの名無しさん:2008/09/29(月) 23:58:23
パラメータは?直前にSetLastErrorで0を設定したら?

286 :デフォルトの名無しさん:2008/09/30(火) 02:53:30
エディットを持ったダイアログを作ったときに、すぐそのエディットにフォーカスを持たせたいです。
エディットコントロールスタイルにそれらしいものが見つからなかったので、

case WM_INITDIALOG:
   SendDlgItemMessage(hdlg, IDC_EDIT1, EN_SETFOCUS, wp, lp);

こうしてみたのですが、上手くいきませんでした。
どうすれば良いのでしょうか?

287 :デフォルトの名無しさん:2008/09/30(火) 03:10:36
SetFocus(GetDlgItem(hdlg, IDC_EDIT1));

288 :デフォルトの名無しさん:2008/09/30(火) 03:30:28
return FALSE;

289 :デフォルトの名無しさん:2008/09/30(火) 03:43:09
>>287-288
すごい
上手くいきました
ありがとうございました

290 :デフォルトの名無しさん:2008/09/30(火) 09:37:13
EN_SETFOCUSのENってEdit Notifyだぞ

291 :デフォルトの名無しさん:2008/09/30(火) 10:11:45
どうでもいい

292 :デフォルトの名無しさん:2008/09/30(火) 10:57:43
どうでもいいことあるか。
そういうメッセージをエディットコントロールに送るということがおかしいということに気づけ。

293 :デフォルトの名無しさん:2008/09/30(火) 10:59:22
>>291はそういった自分で考えることができないかわいそうな人なんだからほっとけ。

294 :デフォルトの名無しさん:2008/09/30(火) 22:00:37
GetLastError()したら「パラメータが間違っています」
どのパラメータがどう間違ってるのか教えてくれ。。

295 :デフォルトの名無しさん:2008/09/30(火) 22:17:31
その前に何したのか

296 :デフォルトの名無しさん:2008/09/30(火) 22:49:28
レジストリのキーの名前を変更したいのですが、
それにはRegReplaceKeyとかを組み合わせてやるんでしょうかね?

どなたかご教授願います

297 :デフォルトの名無しさん:2008/09/30(火) 23:40:30
直接にはできないみたい。元のサブキーから新しいサブキーに必要に応じてコピーして、元のサブキーを
削除する、という方法しかないようです。

298 :デフォルトの名無しさん:2008/10/01(水) 00:00:06
>>294
87か? それ以上はわからんよ。

299 :デフォルトの名無しさん:2008/10/01(水) 00:55:36
TabbedTextOut関数で出力した文字列の水平スクロール量はどう求めればいいですか?
タブ幅は64、8文字分で、
今はsi.nPage=文字列幅/(TEXTMETRIC tm.tmAveCharWidthの)一文字の平均幅
にしているのですが

300 :デフォルトの名無しさん:2008/10/01(水) 01:57:17
>>299
ごめんなさい
描画に問題がある事がわかり、解決しました。

301 :デフォルトの名無しさん:2008/10/01(水) 02:09:09
教えてください
スクロールバーをCreateWindowから作ってるんだけど
nMax, nMin, nPageとかの処理を既定のスクロールバー(WM_VSCROLL)
とまったく同じ挙動にしたいんだけど
どういう処理してるんでしょうか

302 :301:2008/10/01(水) 02:15:42
変なこと言ってました
既定のスクロールバーっていうのは
リストボックスとかのLBS_VERTで付くスクロールバー等のことです

303 :デフォルトの名無しさん:2008/10/01(水) 09:18:14
>>302
はぁ何言ってんだお前頭大丈夫か?

304 :デフォルトの名無しさん:2008/10/01(水) 09:32:44
>>303
大丈夫じゃないだろ
LBS_VERTなんて存在しないフラグを指定してるぐらいだからな

305 :デフォルトの名無しさん:2008/10/01(水) 09:43:29
インターフェースを列挙して同じ動作をするようにすればいいではないか。

306 :デフォルトの名無しさん:2008/10/01(水) 11:03:01
GetClientRectとかって、RECTのポインタを引数に取っていますが、
RECTを戻り値として直接返すようになっていないのは
なにか理由があるのでしょうか?
構造体やクラスを返す関数はあまりよろしくないのでしょうか?

307 :デフォルトの名無しさん:2008/10/01(水) 11:10:36
結果の成否を返す必要があったとか
昔のマシンだとRECT程度のコピーでも馬鹿にならなかったとか
他言語との兼ね合いとか
そんなとこじゃないの

308 :デフォルトの名無しさん:2008/10/01(水) 11:34:04
APIのGetClientRectはBOOLを返してました。失礼しました。
エラーなどの情報まで返す必要がなければ、わざわざポインタを経由しなくても、
自作の構造体やクラスを直接返して特に問題無いですよね。
推奨されていないような情報があれば指摘してもらえると嬉しいです。

309 :デフォルトの名無しさん:2008/10/01(水) 11:39:33
Windows1.0の頃、構造体を返せるCコンパイラなんて無かった。

310 :デフォルトの名無しさん:2008/10/01(水) 11:45:14
というか、K&R第一版Cの仕様

311 :デフォルトの名無しさん:2008/10/01(水) 11:55:35
__stdcallじゃ32bitの値しか返せないんじゃないの?

312 :デフォルトの名無しさん:2008/10/01(水) 13:07:53
そもそもGetClientRectがRECTを返す仕様だと第一引数のHWNDが無効だった場合にエラーを示せない

313 :デフォルトの名無しさん:2008/10/01(水) 13:12:55
知らないならレスしないでください

314 :デフォルトの名無しさん:2008/10/01(水) 13:58:22
ログイン中のユーザーが制限付きユーザーじゃないか確かめるAPIってありませんかね?
Windows XPです。

315 :デフォルトの名無しさん:2008/10/01(水) 15:38:04
使いたい権限を有効しようと試みて、失敗したら、それはお前の言う制限のあるユーザじゃね?

316 :デフォルトの名無しさん:2008/10/01(水) 15:51:59
インストーラでも作ってるんじゃね?
そういう用途ならIsUserAnAdminで事足りるけど。

317 :デフォルトの名無しさん:2008/10/01(水) 16:10:44
だいたい権限なんてローカルポリシーでどうとでも変えられるし

318 :デフォルトの名無しさん:2008/10/01(水) 17:03:30
Home系にはローカルポリシー無かったと思うが

319 :301:2008/10/01(水) 18:06:25
>>305
LBS_VERTとか変なことを・・・WS_VSCROLLの間違いです

標準スクロールバー付きリストボックスのとなりにおいて比べてみたけど
サム?(つまみ)の大きさが違うんですよ
リストボックスの場合、nPage = (nMax+1)/リストボックス表示可能行数
かなと思ったんだけど間違ってますかね?

320 :デフォルトの名無しさん:2008/10/01(水) 18:07:51
>>308
マシン語がどうなるか知れば答えがわかるよ

321 :デフォルトの名無しさん:2008/10/01(水) 18:32:33
いまどきマシン語なんてありえないです><

322 :デフォルトの名無しさん:2008/10/01(水) 22:27:24
>>319
その計算式だとページサイズじゃなくてページ数が出てこないか?
あと、最後までスクロールしきった時に
最終行は一番上にくるべきだ派と一番下だよ派があるが君はどっちだ?
それによって最大値の計算が変わる。

323 :デフォルトの名無しさん:2008/10/01(水) 22:44:59
>>320
マシン語というか、アセンブリで書くならxmmレジスタ1個でRECTが返せる

324 :デフォルトの名無しさん:2008/10/01(水) 22:47:29
>>323
アフォ?呼び出し規約無視すんなよ

325 :301:2008/10/01(水) 23:19:37
>>322
ありがとうございます!
一番下だよ派です!標準スクロールバーも下にくるので
よければ正しい計算式を教えてくださいませ

326 :デフォルトの名無しさん:2008/10/01(水) 23:50:06
>>324
アフォはお前

327 :デフォルトの名無しさん:2008/10/02(木) 00:32:58
GetTextExtentPoint32の誤差はどうすれば無くなるんだああああああああああああああああああ!!!1

328 :デフォルトの名無しさん:2008/10/02(木) 00:47:31
>>325
nPage=表示可能行数でnMax=全行数-nPage
>>327
お前またフォント選択するの忘れただろ

329 :301:2008/10/02(木) 00:58:07
>>328
どうもです、ほんとにありがとう
比べてみたら標準のと同じ挙動になりました

330 :デフォルトの名無しさん:2008/10/02(木) 02:47:37
>>327
wineのソース読むといいかも

331 :デフォルトの名無しさん:2008/10/02(木) 02:56:27
>>330
よくないです

332 :デフォルトの名無しさん:2008/10/02(木) 03:44:06
あやうくGPL感染するところだった
あぶなかったよ

333 :デフォルトの名無しさん:2008/10/02(木) 03:48:19
現時点で治療が不可能に近い難病だからな

334 :デフォルトの名無しさん:2008/10/02(木) 04:21:14
そういや転職前の会社で見たり書いたりした場合はどうなるんだ。
権利は前の会社のものだよな。

335 :デフォルトの名無しさん:2008/10/02(木) 06:56:54
ソースコードは著作物だが、アルゴリズムや考え方・発想は著作物でないからGPLに感染することはない。

336 :デフォルトの名無しさん:2008/10/02(木) 07:10:50
>>335
著作権とライセンスの話がごっちゃになってないか?

337 :デフォルトの名無しさん:2008/10/02(木) 07:46:15
ライセンスは法には勝てないからな。
いかにGPLとて、たとえば合衆国内では、フェアユーズの範囲内で自由に使えるわけだ。
あるいはソフトウェアには権利を認めていない法律の国では役に立たん。

338 :デフォルトの名無しさん:2008/10/02(木) 09:59:20
だがそんな言い訳は通用しないのがGPL信者だ

339 :デフォルトの名無しさん:2008/10/02(木) 13:33:37
DWORD dwProcessId = ...;
HANDLE hProcess = OpenProcess( PROCESS_ALL_ACCESS, TRUE, dwProcessId );
でプロセスのハンドルを得ようとするのですが、
エラーコード6: アクセスが拒否されました
とでるんですが何が原因でしょうか?


340 :デフォルトの名無しさん:2008/10/02(木) 13:34:18
エラーコード5ですね すいません

341 :デフォルトの名無しさん:2008/10/02(木) 14:03:07
PROCESS_ALL_ACCESS

342 :デフォルトの名無しさん:2008/10/02(木) 14:15:07
VistaのKnownDLLsのリストどっかにない?

343 :デフォルトの名無しさん:2008/10/02(木) 14:27:35
PROCESS_TERMINATEのフラグにしても同じくエラーコード5なんですよ

344 :デフォルトの名無しさん:2008/10/02(木) 14:31:58
どのプロセスでもそうなのか、特定のやつだけなのかは?

345 :デフォルトの名無しさん:2008/10/02(木) 14:50:08
iexplore.exeってやつが自動で勝手に起動するんで
自動でプロセスを殺すやつを作っているんですよ
GoogleUpdate.exeは殺せたんですけど
iexplore.exeってやつだけはハンドルが取得できないんですよ


346 :デフォルトの名無しさん:2008/10/02(木) 14:51:13
・・・

347 :デフォルトの名無しさん:2008/10/02(木) 15:03:54
色々調べてみましたが 実行ユーザー名が自分のプロセスは殺せますが
勝手に起動するユーザー名がSYSTEMだと殺せませんね

348 :デフォルトの名無しさん:2008/10/02(木) 15:10:29
そいつあ特権が必要だ

349 :デフォルトの名無しさん:2008/10/02(木) 15:14:54
タスクマネージャから手動では殺せるんですけどね
どうやったら特権で取得できるんですかね?
パソコン一人しか使っていないもんで特に不都合はないのです

350 :デフォルトの名無しさん:2008/10/02(木) 15:19:08
>>349
OpenProcessToken()
LookupPrivilegeValue()
AdjustTokenPrivileges()
この辺で。時刻かえるときなんかも使う。

351 :デフォルトの名無しさん:2008/10/02(木) 15:25:35
日本語のMSDNにはのっていないようですね
ありがたやありがたや


352 :デフォルトの名無しさん:2008/10/02(木) 15:54:03
てかiexplore.exeってIEの実行ファイルじゃん
SYSTEMユーザーで勝手に起動するって、ウイルスとかに感染してないか?

353 :デフォルトの名無しさん:2008/10/02(木) 16:07:18
そうですね、Spybotでスキャンしたのですがだめでして、
プロセスが勝手に動くだけのようでして、自動で閉じるツールを
つくろうかなと思った次第ですよ
ファイルが消えたりとかはないみたいなんですよ


354 :デフォルトの名無しさん:2008/10/02(木) 16:23:20
お前はプログラミングを学ぶよりまともなコンピュータリテラシーをつけるべきだと思うが。
Windows板にでも行けよ。

と言いたいところだが、ここはム板なので、それに準じた回答でもしてやるか。
WindowsプログラマならSysinternalsのツールぐらい知っておくべき。
ttp://technet.microsoft.com/en-us/sysinternals/bb963902.aspx

355 :デフォルトの名無しさん:2008/10/02(木) 16:42:16
iexplore.exeを自作プログラムに書き換えて挙動を調べろよ

356 :デフォルトの名無しさん:2008/10/02(木) 17:07:02
>>353
そもそもiexplore.exeでググればウイルスに関連した情報も見つかるだろ
お前が呑気にプログラム書いたり2ちゃんに投稿してる間にもウイルスが人様のPCに迷惑かけてるかも知れんのだ

357 :デフォルトの名無しさん:2008/10/02(木) 19:01:35
辛口なのは分かりましたが
な〜んの役にもたちませんね
>>355 >>356
消えてください

そもそも他人に迷惑をかけているとか
勝手に捏造しないでください

しね

358 :デフォルトの名無しさん:2008/10/02(木) 19:17:17
こういう奴のPCがゾンビPCになってMSのサーバや政府機関にアタックかけてるんだな…
まったくもう…

359 :デフォルトの名無しさん:2008/10/02(木) 19:26:37
だから 何か確かな根拠でもあるんですか

速やかに死んでください

360 :デフォルトの名無しさん:2008/10/02(木) 19:30:34
まったくもうw

361 :デフォルトの名無しさん:2008/10/02(木) 19:35:08
なぜ1個人のパソコン程度でMSのサーバーが落ちるんですか?
なぜ1個人が政府機関などにアタックかけるんですか?
ゾンビPCとは何ですか?

マスコミの影響受けすぎじゃないんですか?
精神病院行った方がいいですよ?

362 :デフォルトの名無しさん:2008/10/02(木) 19:39:44
終了

363 :デフォルトの名無しさん:2008/10/02(木) 19:41:03
PC使うに値しないリテラシーの低さだな

ttp://e-words.jp/w/E382BEE383B3E38393PC.html

364 :デフォルトの名無しさん:2008/10/02(木) 19:44:33
>>361
まったく同感だ
病院で診てもらったほうがいい

365 :デフォルトの名無しさん:2008/10/02(木) 19:45:19
いや終了

366 :デフォルトの名無しさん:2008/10/02(木) 19:47:08
知ってはいたがあえて聞いたのだよ
まぁそれもわからないのでしょう

リンクを貼ることからしてまぁ、現場で突然質問されても
な〜んにも答えられないのでしょうね
そのようなあなたからレッテルを貼られたくありませんね

ちゃんちゃん

367 :デフォルトの名無しさん:2008/10/02(木) 19:49:41
駄目だこいつ

368 :デフォルトの名無しさん:2008/10/02(木) 19:55:45
最近、質問した人を装ってスレが荒れるような発言する奴が粘着してるようだし
質問する人はトリップ付けた方がいいぞ

369 :デフォルトの名無しさん:2008/10/02(木) 20:03:54
伸びてると思ったら何なのこれ。

370 :デフォルトの名無しさん:2008/10/02(木) 20:12:15
あんまりね
政府とかのね
サーバーにね
攻撃とかをね
しているとね
マイクげふげふ
('∀`)<あなたを、犯人ですとかね
勝手にシャうぉっほん
まぁね
あんまりよい子はね
マネしちゃね
ダメだね

え?私の方が精神病院に行った方がいい?
まぁ、どうなんでしょうかね
よく分かりません

371 :デフォルトの名無しさん:2008/10/02(木) 20:13:17
いや、つまんないから。

372 :デフォルトの名無しさん:2008/10/02(木) 20:13:29
てゆーかね
そのくらいのね
技術がね
あればね
こんなところでね
質問してねーぞバカヤローってことですよ

373 :デフォルトの名無しさん:2008/10/02(木) 20:14:40
いや、つまんないから。

374 :デフォルトの名無しさん:2008/10/03(金) 02:13:31
ウインドウズの OSは アルタボックスからきているらしい アルタボックスは
軍事用に開発されたらしいので 開発費がたくさんかかったらしい。
plaoaluta
begin
alutabocx
code2 end_roop_END_roop\roop_pasemode2_pasemode2_pasemode_pasemode_2_pasemode2
if then else####KINOKO?NOKIA####endrollPLUUBACKtome####TOME
digital####digital####endrollws
cant_pupupuuupupuuupupuuupupuuupupuuupupuuupupuuupupuuupupuuupupuuu
wao


375 :デフォルトの名無しさん:2008/10/03(金) 07:56:26
ある通信コントローラを、ノートPC(WindowsXP SP3)のUSBポートに接続して
使用しているのですが、
自作アプリケーションから、それがUSBに接続された、抜き取られたという
判断をしたいのですが、そのようなことを実現するAPIはありますでしょうか?

376 :デフォルトの名無しさん:2008/10/03(金) 08:06:14
>>375
WM_DEVICECHANGE とか飛んでこない?

377 :デフォルトの名無しさん:2008/10/03(金) 08:10:43
RegisterDeviceNotificationで通知は受け取れる。
ただ、渡すパラメータ等はWindowsDriverKitを参照しないと判らないかも。

378 :デフォルトの名無しさん:2008/10/03(金) 08:39:10
質問です。
ゲームに未既読をスキップという機能がなかったので、ツール作って自動化させようと思っているのですが、
そういう場合はウィンドウ見つけてSendMessageでボタンを押すでよろしいのでしょうか?
一応コードさらします。ちなみにうまくいきません。@Delphi

var
hcal :HWND;
h5 :HWND;
begin
hcal :=FindWindow(nil, 'Aster Version 1.05');
if hcal =0 then
begin
ShowMessage('Error');
exit;
end;
SetForegroundWindow(hcal);
h5 := 984180;
if h5 <>0 then
begin
SendMessage(h5, WM_LBUTTONDOWN, 0, 0);
Sleep(100);
SendMessage(h5, WM_LBUTTONUP, 0, 0);
end
else
begin
ShowMessage('Error');
exit;
end;
end;

379 :デフォルトの名無しさん:2008/10/03(金) 08:42:06
SendInput

380 :デフォルトの名無しさん:2008/10/03(金) 08:49:45
うん、いいよ

381 :デフォルトの名無しさん:2008/10/03(金) 09:04:48
そのゲームがどうやっているかによるし
送り先があっているかとかあるが
まず、そのメッセージのwparamやlparamはだめだろう
SendInputでいいと思うけどね

382 :デフォルトの名無しさん:2008/10/03(金) 09:32:02
レスありがとうございます。
さっそく帰宅次第やってみようと思います。SendInputというのをはじめて聞いた私は勉強不足なんでしょうね。

携帯から失礼しました。


383 :デフォルトの名無しさん:2008/10/03(金) 12:09:47
携帯からそんなに打ち込むワキャねーだろボキャ!






















と思ったのは俺だけですか?

384 :デフォルトの名無しさん:2008/10/03(金) 12:18:57
いまやAtom搭載でWindows Vistaの動く携帯だってあるんだぜ。
QWERTY配列のUSBキーボードを利用していないと、どうして断定できようか。

385 :デフォルトの名無しさん:2008/10/03(金) 12:25:53
いやー、だとしてもDelphiのソース手打ちはねーべww

386 :デフォルトの名無しさん:2008/10/03(金) 12:43:59
便利な世の中ね

387 :デフォルトの名無しさん:2008/10/03(金) 12:50:06
GetTextExtentPoint32でテキストの表示サイズを測る場合、対象のHDCを
CreateCompatibleDCで互換のある複製をとってこいつに元のHDCのフォントを設定しても
同じ値は取れますか

388 :デフォルトの名無しさん:2008/10/03(金) 13:14:15
やってみりゃいいじゃない
MM_TEXTならどれも変わらんのでは

389 :デフォルトの名無しさん:2008/10/03(金) 15:11:43
勘違いさせる文章ですいません、ソース載ってるレスはPCで、ありがとうと言ったのは携帯からです・・・まだ帰宅できず試せませんが・・・。

390 :デフォルトの名無しさん:2008/10/03(金) 15:41:07
>>389は偽者です。現代人ならこれぐらいのソースは携帯で打てますよ。

391 :デフォルトの名無しさん:2008/10/03(金) 15:51:56
別にどっちでもいいが

392 :デフォルトの名無しさん:2008/10/03(金) 16:07:51
>>392は偽物です。

393 :デフォルトの名無しさん:2008/10/03(金) 16:09:44
>>392
正直でよろしい

394 :デフォルトの名無しさん:2008/10/03(金) 16:10:44
>>394は本物です。

395 :デフォルトの名無しさん:2008/10/03(金) 16:15:35
>>392>>394は、どちらが嘘つきです

396 :デフォルトの名無しさん:2008/10/03(金) 16:24:24
そういうのいいから

397 :デフォルトの名無しさん:2008/10/03(金) 16:30:00
さあいったい誰が嘘を付いているでしょう

398 :デフォルトの名無しさん:2008/10/03(金) 16:35:46
俺俺。

399 :デフォルトの名無しさん:2008/10/03(金) 17:20:24
俺だよ俺

400 :382:2008/10/03(金) 19:01:39

帰宅して見てみましたが、
ttp://orangeknowledge.jpn.org/tips/sdk002.html
を見る限り、SendInputで押せるみたいですがどこのウィンドウで押すのかが指定できないので無理ではないのでしょうか?
SendMessageは実現不可なのでしょうか?

401 :デフォルトの名無しさん:2008/10/03(金) 19:07:55
そのゲームが、ウィンドウメッセージでなくDirectInputでマウス拾ってたら、
いくらメッセージ送っても無駄だし・・・

402 :デフォルトの名無しさん:2008/10/03(金) 19:11:34
やってみてはどうだ。
まあどのゲームかわかったから、体験版で試してもいいが・・・

403 :デフォルトの名無しさん:2008/10/03(金) 19:20:42
>>401
そういうのってどうやって調べるんでしょう?
ネットゲームとかはそんな感じですが、私のやろうとしているものは・・・。


>>402

大きいおにいちゃん向けのゲームです・・・

ttp://www.rusk.tv/aster_index.htm

18歳未満はいっちゃだめです><


404 :デフォルトの名無しさん:2008/10/03(金) 19:28:27
まあそれは
FindWindow(nil, 'Aster Version 1.05');
でググってわかったんだけどなw

405 :デフォルトの名無しさん:2008/10/03(金) 19:34:35
吹いた

406 :デフォルトの名無しさん:2008/10/03(金) 19:50:56
LPCSTRって何の略?LP=ロングポインター STR=Stringだと思うんだけど
Cって?

407 :デフォルトの名無しさん:2008/10/03(金) 19:52:30
const

408 :406:2008/10/03(金) 20:00:42
constっすか。どうもありがとうございます(;^_^
前からずっと疑問だったんで。。

多謝っす。

409 :デフォルトの名無しさん:2008/10/03(金) 20:29:29
ウィンドウにWM_PAINT着てない状態でGDIつかって何かしら描く
とそのウィンドウにWM_PAINTって発行される?

WM_PAINTのときに描くと重くなってウィンドウの別の処理できないから、
WM_PAINTきたら、SetEventしてとりあえず描画は別スレッドでまわしてたら、
CPUほぼ独占状態になって結局重いんだが・・・

今はとりあえずsleep入れて落ち着かせてるorz


410 :デフォルトの名無しさん:2008/10/03(金) 20:31:42
WM_PAINTで描画以外の事をするな

411 :409:2008/10/03(金) 20:36:18
>>410
WM_PAINT以外で描画のことじゃなくてWM_PAINTで描画以外のこと?

412 :デフォルトの名無しさん:2008/10/03(金) 20:39:26
ダブルバッファリングすればよいかもしれない

413 :デフォルトの名無しさん:2008/10/03(金) 20:44:22
そういう時はBeginPaint/EndPaintだけ呼んで、
無効化領域の有効化だけしておけばいい。
後で描画するつもりなら、その瞬間はグチャグチャのまま放置でも全然問題無いし。

414 :409:2008/10/03(金) 20:55:43
とりあえずダブルバッファリングでググっていってみる

>>413 BeginPaintとEndPaintをWM_PAITで呼び出すでおk?
case WM_PAINT:
 hdc = BeginPaint(hWnd, &ps);
 SetEvent(hoge);
 EndPaint(hWnd, &ps);
 break;
みたいな?

415 :409:2008/10/03(金) 21:20:50
続けていろいろすまん
CreateCompatibleDCで確保したデバイスコンテキストハンドルは解放するべき?
解放するときってReleaseDC使えばおk?

416 :デフォルトの名無しさん:2008/10/03(金) 21:21:37
>>415
はい

417 :409:2008/10/03(金) 21:22:08
>>416dクス

418 :デフォルトの名無しさん:2008/10/03(金) 21:25:05
CreateにはDelete、GetにはRerease

419 :デフォルトの名無しさん:2008/10/03(金) 21:36:51
>>407
ずっとCharだと思ってた。サンクス。

>>418
あぶねえw416見て今まで書いたソース全部書き直そうかと一瞬思ったw

420 :デフォルトの名無しさん:2008/10/03(金) 21:38:19
>Rerease
り、りれぇぁす(巻き舌で)

421 :デフォルトの名無しさん:2008/10/03(金) 22:22:13
ていうかMSDN読めよ

422 :409:2008/10/03(金) 22:46:23
ダブルバッファリング実装してみたが画面は真っ白で上手く動かなかったので、今後の研究課題にして
とりあえず>>413の方法を採らせてもらった
>>412 >>413 >>416どもでしたー

423 :409:2008/10/03(金) 22:52:35
VS付属のMSDNしか見なかったけどCreateCompatibleDCで検索しても
CDC::CreateCompatibleDCしかなかったからとりあえずこっちで聞きました

424 :デフォルトの名無しさん:2008/10/03(金) 23:54:22
結構バカ多いね、ここ。

425 :デフォルトの名無しさん:2008/10/03(金) 23:57:17
うん、お前がその筆頭。

426 :デフォルトの名無しさん:2008/10/04(土) 06:23:30
WM_PAINTでSetEventとか馬鹿だろ

427 :デフォルトの名無しさん:2008/10/04(土) 15:34:56
メニューバーが表示されないんですが
menu.res作って
winc.lpszMenuName = "menu";
って書くだけじゃ駄目なんですか?



428 :デフォルトの名無しさん:2008/10/04(土) 15:45:54
VCならWin32プロジェクト作ったときに
メニュー付きのウィンドウが作られるからそのソース参考にするといい

伝わるか分からんが一応書いとく

#define IDC_MENU 100

wc.lpszMenuName = MAKEINTRESOURCE(IDC_MENU);

429 :デフォルトの名無しさん:2008/10/04(土) 18:49:46
>>428
そのソースってw アホかww

430 :デフォルトの名無しさん:2008/10/04(土) 19:20:14
結構アホ多いね、ここ。

431 :デフォルトの名無しさん:2008/10/04(土) 21:02:55
うん、お前がその筆頭。

432 :デフォルトの名無しさん:2008/10/04(土) 22:55:47
結構ソース多いね、ここ。

433 :デフォルトの名無しさん:2008/10/04(土) 23:08:29
うん、そーす。

434 :デフォルトの名無しさん:2008/10/04(土) 23:41:37
            ___
          ,,r''"´    `"''-,,
        / ノ   ヽ、    \
         / ( ● )   ( ● ) ヽ  ヽ
        i゛ :::⌒(__人__)⌒:::  ヽ  ゛i
      l     |r┬-|       l  ノ    そーなんすかwww
        !     | |  |      レ'
      l   l  | |  |   l  , l
      |   l   `ー'´    |  l l
        !   l        ,!  | l
      l   ゛i       /  l i゛
      ゛i   ヽ     /   / /
       ヽ,__,,,ゝ    く  ノ /
        ヽ       ゛" /     __
       _  )      、(二"'''ー'"ー'__゛゛ヽ
     r'   ̄           ̄ヽ,)‐-,,_ ´┴'ノ
     ヽ__,,-──-、__,ノ  


435 :デフォルトの名無しさん:2008/10/04(土) 23:45:18
ムwwwカwwwツwwwクwwww

436 :デフォルトの名無しさん:2008/10/05(日) 11:01:44
そのリソースに文字列で名前をつけたなら>>427でいいし
数字で指定したのなら>>428
リソースファイルで""でくくってあれば文字列。

437 :デフォルトの名無しさん:2008/10/05(日) 11:10:18
>>427 です。
>>428>>436
ありがとうございます。

438 :デフォルトの名無しさん:2008/10/05(日) 15:48:53
学校では当たり前のごとく、これでゲーム作らそうとしてくるけどさ
ライブラリ何も使わずに、Win32APIだけで本格的なゲーム作った事ある人っている?

本格的の定義は、3万ステップ以上で、ちゃんと遊べるようなゲームとしとく。

439 :デフォルトの名無しさん:2008/10/05(日) 15:52:37
ゲームならDirectX使うだろjk

440 :デフォルトの名無しさん:2008/10/05(日) 16:06:48
マインスイーパは本格的だしちゃんと遊べると思う

441 :デフォルトの名無しさん:2008/10/05(日) 16:08:17
>>438
学校では本格的なゲームを作らしてる訳ではないと思うので
聞くだけ不毛じゃないかと

442 :デフォルトの名無しさん:2008/10/05(日) 16:55:17
>>440
あれはミニゲームだと思う

>>441
学校じゃなく、趣味でも本格的なの作る人は、いないのかなーって

443 :デフォルトの名無しさん:2008/10/05(日) 17:12:08
ゲームとミニゲームは何が違うんだよ

444 :デフォルトの名無しさん:2008/10/05(日) 17:12:07
↑ステップ数で規模を語る馬鹿

445 :デフォルトの名無しさん:2008/10/05(日) 17:39:12
>>443
ゲームの最中に気晴らしにやるのがミニゲームだ

446 :デフォルトの名無しさん:2008/10/05(日) 18:10:40
ちょっと納得してしまったので困る

447 :デフォルトの名無しさん:2008/10/05(日) 23:16:50
>>445じゃあ爆裂カブトムシはそれだけで一日潰れるからミニゲームじゃないな・・・・

448 :デフォルトの名無しさん:2008/10/05(日) 23:20:17
燃えるねえ。あれ。

449 :デフォルトの名無しさん:2008/10/06(月) 00:27:12
マリオは最高

450 :デフォルトの名無しさん:2008/10/06(月) 00:30:47
おまえらマインスイーパが気晴らしとかマジかよ・・・あれだけで3ヶ月は遊べるだろ

451 :デフォルトの名無しさん:2008/10/06(月) 00:36:46
それはない

452 :デフォルトの名無しさん:2008/10/06(月) 00:58:34
上級二分以内目指して毎日やってるよ

453 :デフォルトの名無しさん:2008/10/06(月) 10:22:22
昔は100秒切ったんだけどねえ。
今は200切るのもやっとだ。寝ながらトラックボールじゃ限界かな。

454 :デフォルトの名無しさん:2008/10/07(火) 13:32:58
マウスの左右同時押し+EscってXPのマインスイーパでは出来ないのか

455 :デフォルトの名無しさん:2008/10/07(火) 17:13:46
WinAPIでタイピングゲーム作ってたけど、今時のPCでも処理速度に不満があるからDirectXに移行する予定。
今は画像処理にAPI使わずにアセンブラ+MMXで高速化してしのいでる。

456 :デフォルトの名無しさん:2008/10/07(火) 17:17:56
PentiumVは今時のPCじゃないよ?

457 :デフォルトの名無しさん:2008/10/07(火) 17:20:00
>>455
アルファブレンディング多用してるの?

458 :デフォルトの名無しさん:2008/10/07(火) 17:29:31
今時のPCならSSE4まで使えよ

459 :デフォルトの名無しさん:2008/10/07(火) 18:53:21
今時のCPUは、MMXの実行速度が意外と遅かったりする罠。
使うならSSE以降にしておいた方が良い。

460 :デフォルトの名無しさん:2008/10/07(火) 20:06:45
3DNow!でおk

461 :デフォルトの名無しさん:2008/10/07(火) 20:16:06
と思ってたけど、ドキュメント読んでたらそうでもなかったかもw
単に128bit幅のXMMレジスタが効率的に処理されるってだけで、
64bit幅だから二つ同時って訳にもいかないから、相対的に遅いだけか。

462 :459=461:2008/10/07(火) 20:30:25
>>460
それはないw
やっぱりSSE使った方が速いんだろうしなあ。

463 :デフォルトの名無しさん:2008/10/07(火) 21:42:34
>>461
それがねぇ、CPUによっては分割して実行してんじゃねーのかってぐらいSSEが遅いってことがあるらしいんだよね。
まあスレ違いだ。

464 :デフォルトの名無しさん:2008/10/07(火) 22:24:14
ダンゴさんのレスが望まれるところだな。

465 :デフォルトの名無しさん:2008/10/08(水) 04:31:42
>>463
インテルならCoraMA、AMDならphenomになるまではSSEは分割。
Pen4以外だとMMXがSSE2より速かったりもした。
API使う場合対応してる最新の拡張が使われるだろうけどあんま気にする必要はないかな。

466 :デフォルトの名無しさん:2008/10/08(水) 09:49:38
OpenClipboardって引数にウィンドウハンドルを渡すようですが、
これはどのような目的で関連付ける必要があるのでしょうか。

MSDNには「NULLを指定すると現在のタスクがクリップボードを開きます」
と書かれているのですが、明示的にウィンドウハンドルを渡すのとNULLを渡すので
なにか挙動が変わってくるものなのでしょうか。

467 :デフォルトの名無しさん:2008/10/08(水) 09:57:43
クリップボードは排他的だから、閉じ忘れても後始末できるように、じゃないかなあ。

468 :デフォルトの名無しさん:2008/10/08(水) 11:08:23
WM_RENDERFORMATの送り先では?

469 :デフォルトの名無しさん:2008/10/08(水) 14:54:46
スタンバイや休止に入る事を検出する方法はあるでしょうか。


470 :デフォルトの名無しさん:2008/10/08(水) 14:58:07
自己解決しました。

471 :デフォルトの名無しさん:2008/10/08(水) 16:06:10
自己解決しません。

472 :デフォルトの名無しさん:2008/10/08(水) 16:07:07
自己解決しそうです。

473 :デフォルトの名無しさん:2008/10/08(水) 16:12:38
またこれか

474 :デフォルトの名無しさん:2008/10/08(水) 17:11:37
知らないならレスしないでください。

475 :デフォルトの名無しさん:2008/10/08(水) 17:13:19
知っていてもレスしないでください。

476 :デフォルトの名無しさん:2008/10/08(水) 18:16:51
わかりました

477 :デフォルトの名無しさん:2008/10/08(水) 21:10:05
Ctrl+CapsLock でカナ入力とアルファベット入力を切り替えることができますが、
現在、カナ入力かアルファベット入力かを調べるにはどうすれば良いですか?


478 :デフォルトの名無しさん:2008/10/08(水) 21:18:43
なんだそれ

479 :デフォルトの名無しさん:2008/10/08(水) 21:21:36
ImmGetConversionStatus ?

480 :デフォルトの名無しさん:2008/10/08(水) 21:31:32
任意のアプリケーションの任意のメニュー項目のテキストを取得するには?

481 :デフォルトの名無しさん:2008/10/08(水) 21:37:45
アプリの実装次第

482 :デフォルトの名無しさん:2008/10/09(木) 07:12:13
シミュレーションゲームの移動処理についてです
キャラのBMPをドラックアンドドロップさせて移動させてみたいんですが
検索してもファイルを開く処理しかヒットしません
どうやればいいんでしょうか

483 :デフォルトの名無しさん:2008/10/09(木) 07:33:34
何がやりたくてどこまではできるの?
マウスの処理とか画像の表示とか

484 :デフォルトの名無しさん:2008/10/09(木) 13:32:14
よその会社で作ったDLLをソフトを使って解析したら
呼び出し形式と戻り値を得ることが出来ました。
これからどうすればこのDLLを使えるでしょうか?
ちなみにその会社はもう潰れて解散しています。

485 :デフォルトの名無しさん:2008/10/09(木) 13:45:52
LoadLibrary()とGetProcAddress()使って呼び出すか、
インポートライブラリ作ってリンクする。
インポートライブラリは環境によってやり方が違う。

486 :デフォルトの名無しさん:2008/10/09(木) 14:49:24
>>484
そんな得体の知れないAPIなんて使うなというのが正解だと思う。
引き数にワケワカメな構造体とか使われたり、
複数のAPIに呼び出し手順とかあったらまずまともに使えないだろw

487 :デフォルトの名無しさん:2008/10/09(木) 14:55:44
ソースコードもあるんならまだ解析できるが、DLLしか無いんならそんなものは捨ててしまえ
ブラックボックスじゃ品質保証出来ないぜ

488 :デフォルトの名無しさん:2008/10/09(木) 15:10:11
そもそもライセンスとか著作権的にどうなんだ?

489 :デフォルトの名無しさん:2008/10/09(木) 18:18:58
質問です。

リソーススクリプトで定義してあるダイアログを
CreateWindow[Ex]で作成したいのですが、可能なのでしょうか?

よろしくお願いします。

490 :デフォルトの名無しさん:2008/10/09(木) 18:33:18
つCreateDialogIndirect()

491 :489:2008/10/09(木) 18:43:01
>>490
お答えありがとうございます。
上位クラスの実装が WNDPROC での実装のため、
CreateDialog[Indirect][Param] では問題があるのです。
WNDPROC を DLGPROC へ強引にキャストしても
問題ないのでしょうか?

492 :デフォルトの名無しさん:2008/10/09(木) 19:27:51
ダイアログテンプレートを使ったうえで、DefWndProcを呼ぶウィンドウプロシージャを使いたいってこと?
んー、、、

493 :489:2008/10/09(木) 19:33:34
>>492
static LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wp, LPARAM lp );
というメソッドが上位クラスにあるのですが、
それをプロシージャとして使いたいのです。
ただ、すべてのコントロールを CreateWindow() で作るのは
望ましくないため、リソースエディタでコントロールを配置し、
それを使用したいのです。

494 :デフォルトの名無しさん:2008/10/09(木) 20:08:15
そのダイアログリソースにウィンドウクラス名を書いておけばいいんじゃないかな

495 :デフォルトの名無しさん:2008/10/09(木) 20:09:59
>>462
組むものによもるが3DNow!で十分だと思う
αブレンディング多用するようなコードはクリティカルな部分がメモリ転送になりがちで
一例になるがP3 1GHzでrep movsdで8msec程かかる800x600x24bitの単純転送が
MMX&SSEの場合(プリフェッチ命令だけ使用、この場合3DNow!と命令セットの互換性がある、使用可不可のチェックだけ別)
5.4msec程になる、うまくすれば全連続メモリ転送について大体3割程の高速化が可能
さらにP4とかだとプリフェッチをきちんと使うと確かに倍速にはなるんだが
元々FSB400で2.7msecだったのが1.4msecになっても効果のほどは?
遅い機種のためのチューニングにはそれなりの意味があるんだがなぁ

一番意味がないのはP4のSSE2、一度にSSEの倍のデータを扱える代わりに2倍の時間がかかる

ちなみに最近のcoreduoとかだと巨大な2次キャッシュに入りきってしまう場合はrep movsdの方が連続処理において速いが
キャッシュに入らないようだとプリフェッチ命令を使う方がP3世代と同じように大体30〜40%程速くなる
例えばキャッシュに入らないと仮定された800x600x24bit転送がcore2duo FSB1333で0.7msecが0.5msecになる
αブレンドの多用はFSBにかなり支配的になるのでエロゲとかがFSBに支配されてるのとおなじだな
この場合3DNow!以降で実装されたプリフェッチ命令を使用してメモリ転送部分を書くだけで3割ほどの高速化が可能

496 :489:2008/10/09(木) 20:29:59
>>494
リソーススクリプトのダイアログの記述部に
以下の一行を加えてみました。
CLASS "IDD_FILES"

その後、上記の文字列を
WNDCLASSEX::lpszClassName に設定したり、
CreateWindow[Ex]() の (LPSTR)ATOM の変わりに
設定したりしてみましたが変化がないようです。
そもそも VC2003 のリソースエディタ上の
ダイアログプロパティ内 ClassName には
反映されていないようです。

やり方が間違えているのでしょうか?

497 :デフォルトの名無しさん:2008/10/09(木) 20:46:17
>>496
1) 自分のウィンドウプロシージャを適当なウィンドウクラス名で登録する
2) そのウィンドウクラス名をダイアログリソースにも書いておく
3) CreateDialogなんちゃらでダイアログを作成すると、リソースで指定したウィンドウクラスが使われる
4) 結果、その名前で登録しておいた自分のウィンドウプロシージャが呼ばれる
5) ウィンドウハンドルからクラスを検索するなりなんなりして、その自分のウィンドウプロシージャから上位クラスの実装とやらを呼ぶ

498 :489:2008/10/09(木) 21:30:35
>>497
指定のプロシージャが呼ばれるようになりました。
ありがとうございました。

499 :デフォルトの名無しさん:2008/10/10(金) 00:34:50
C++言語で、GDI+を使って画像に文字列を書き込んで保存したいのですが、
どうすればいいですか?

Bitmapで読み込んで、Graphics->DrawString で画像の上に文字列は出せますが
bitmap->Save しても画像自体にはかかれてないので。



500 :デフォルトの名無しさん:2008/10/10(金) 00:39:40
API仕様 ってどういう意味ですか?

501 :デフォルトの名無しさん:2008/10/10(金) 01:06:52
>>499
GraphicsとBitmapオブジェクトを生成してる部分のコード書いてみ

>>500
漠然としてるな
APIの利用方法、性能諸元

502 :デフォルトの名無しさん:2008/10/10(金) 02:11:32
GetMenuってもしかして別プロセスのメニューハンドルは取得できない?

503 :デフォルトの名無しさん:2008/10/10(金) 02:37:37
はなくそがうまい。

504 :デフォルトの名無しさん:2008/10/10(金) 04:25:44
本を買ってC++&VC++の勉強とWIN32APIの勉強をするとしたらどっちが先でどっちが大事ですか?

505 :デフォルトの名無しさん:2008/10/10(金) 05:31:22
C++ → VC++とWIN32API

506 :デフォルトの名無しさん:2008/10/10(金) 12:17:20
タブ弄ってるとswitch (((NMHDR *)lp)->code) でエラーがでてしまいます。
中の処理のせいかと思って
switch (((NMHDR *)lp)->code) {
  case TCN_SELCHANGE:
     int TabNumber=TabCtrl_GetCurSel(hTab);
  }
 return TRUE;
だけにしてもやっぱりエラーでてしまう。なんで?

507 :デフォルトの名無しさん:2008/10/10(金) 12:20:32
エラーの内容まで詳しく書いてくれないとエスパーしか出来ないぜ

508 :デフォルトの名無しさん:2008/10/10(金) 12:23:36
((NMHDR *)lp)->code 自体がアクセス違反かなにかになってるのなら、
そこへ分岐する条件を疑うべきじゃないか

509 :デフォルトの名無しさん:2008/10/10(金) 12:52:42
>>507
エラーの内容まで詳しく書ける人は、こんなショボい質問しないけどなw
デバッガ使えば一発で分かりそうなもんだが。

510 :デフォルトの名無しさん:2008/10/10(金) 15:29:41
同じWndProc内に

switch (LOWORD(wp)){
 メニューバー関係
switch (LOWORD(wp)){
 ボタン関係

と書いたら問題あります?

511 :デフォルトの名無しさん:2008/10/10(金) 16:03:42
ないよ

512 :デフォルトの名無しさん:2008/10/10(金) 16:06:35
CRITICAL_SECTIONオブジェクトを複数初期化して、それぞれに対してEnterCriticalSectionを呼び出した場合、互いにブロックしないでしょうか。

513 :デフォルトの名無しさん:2008/10/10(金) 16:18:00
そんな仕様だったらクリティカルセクションの意味ねーだろ

514 :デフォルトの名無しさん:2008/10/10(金) 16:43:55
スレッドがA,B,Cとあって、AとB、BとCで使う変数ab、bcがあったとして、
Aでabを参照するときに、スレッドCまで処理を中断するのは無駄だと思うんですが

515 :デフォルトの名無しさん:2008/10/10(金) 16:48:59
オブジェクト違うんだったらブロックするわけねーじゃん

バカ?

516 :デフォルトの名無しさん:2008/10/10(金) 16:55:13
^^

517 :デフォルトの名無しさん:2008/10/10(金) 16:59:58
お前らは何でそう短気なんだよwww

518 :デフォルトの名無しさん:2008/10/10(金) 17:02:23
>>513>>515
ありがとうございます。これで安心して使えます。

519 :デフォルトの名無しさん:2008/10/10(金) 17:46:56
>>514
それは注意して実装しないとデッドロックを引き起こすから、
Cまでブロックした方が安全ではある。

520 :デフォルトの名無しさん:2008/10/10(金) 18:13:38
>>519
↑話を理解してない馬鹿

521 :デフォルトの名無しさん:2008/10/10(金) 21:19:19
>>520
ん、俺も同様の意見なんだけどな。
abはAとBでだけ、bcはBとCでだけ同期処理を行ってるってことだろ?
だったらAでbにアクセス中にCからもbにアクセスしたらデッドロックが起きても文句言えん。
A動作中にCを中断するだけでなく、C動作中にAを中断することも行うべき。

522 :デフォルトの名無しさん:2008/10/10(金) 21:36:48
>>515>>520 プギャーm9(^д^)

523 :デフォルトの名無しさん:2008/10/10(金) 21:55:28
すみません。WindowsAPIを使って間もないんですが、次のことがわかりません。
CreateWindow関数でウィンドウを最初に作るときに、7番目の引数に親ウィンドウのハンドル
を書くと書いてありますが、たとえば、子ウィンドウの汎用クラスというかオブジェクトを作成して、
それを色々なプログラムの親ウィンドウから使用するということはできるんですか?
要するにこの7番目の引数さえ変えれば、色々なプロジェクトから子ウィンドウを共有できますか?

よろしくお願いします。

524 :デフォルトの名無しさん:2008/10/10(金) 22:12:29
共有の意味がよくわからんが、、ウィンドウクラスとかRegisterClass()調べてみ。

525 :デフォルトの名無しさん:2008/10/10(金) 22:18:48
>>521
514ですが変数はab、bcの二つという意味でした。
AとBで共有だからabって書いたんですけど、わかりにくくてすいません。

526 :523:2008/10/10(金) 22:20:04
>>524
どうもありがとうございます。調べてみます。私の言っている共有とは
いくつも起動している自作プログラムから子ウィンドウを共有するという意味ではなく
いくつもプロジェクトを作成するとして、そのソースをそのまま親のハンドルを変えれば
そのソースが使えるかという意味で各プロジェクトで共有という言葉をつかったんですが、
よくかんがえれば、使えるに決まってた。。

お世話になりました。使えないわけがない。。どうにかしてました。ありがとうございました。

527 :デフォルトの名無しさん:2008/10/10(金) 23:38:35
Windowsエクスプローラの右クリックメニューで出て来る「新規作成」の機能を
シミュレートしようと思っています。

その場合、可能であればですが、エクスプローラが使っているDLLか何かの
ファイルを横から使うことでも実現できるものでしょうか?その場合、DLL内の
APIを使うために必要な知識としてはどんなものがあるでしょうか?

また、もし自分で全部作るとすると レジストリーから行うことになりそうですが、
例えばXpだと、

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Discardable\PostSetup\ShellNew

という、途中の Discardable なるやっかいな代物を扱う必要がありそうでした。

このキーはときどき何かの事情で削除されてしまう場合があるもののようで、
無いときは自分で作成しなければならないようでした!この場合、そうしたこと
を実際にしないといけないでしょうか?もし何かうまい別法があるようでしたら
教えて戴けないでしょうか、よろしくお願いします!

528 :デフォルトの名無しさん:2008/10/11(土) 01:14:25
アプリケーションを終了させた後に削除が出来なくなることがあるのですが
原因はどういったことがあるでしょうか?
ハンドル等のクローズ失敗とか
タスクマネージャーのプロセスには残ってません

529 :デフォルトの名無しさん:2008/10/11(土) 03:19:05
何を削除ができないの?ゆとり君
まず質問の仕方を勉強しなさい。

530 :デフォルトの名無しさん:2008/10/11(土) 03:21:38
すみません、実行ファイルそのものが削除できなくなります

531 :デフォルトの名無しさん:2008/10/11(土) 03:29:19
そのファイルを開いているプログラムが存在しているから。
難しく考えないことだ。そしてそのファイルを開くプロセスがどんなものがあるか考えれば答えは見つかるだろう。

532 :デフォルトの名無しさん:2008/10/11(土) 08:26:57
529,531全然答えになってねぇなお前 ストレス発散ならよそでやれ


その実行ファイルを使っているプロセスがどこかで走ってるんだよ
見に覚えがないならOSの内部のほうか
完全に終了までに少しラグがあるのかもしれない

場合によってはアレの可能性があるから
ちょっとネットワーク遮断してから削除試してみ・・・

533 :デフォルトの名無しさん:2008/10/11(土) 08:33:07
なんだその中途半端な回答はwwラグてww
まぁ>>531で十分だわな。

534 :デフォルトの名無しさん:2008/10/11(土) 09:28:21
Unlockerで見てみるとか

535 :デフォルトの名無しさん:2008/10/11(土) 09:37:15
>>510 です。
>>511 ありがとうございました。

536 :デフォルトの名無しさん:2008/10/11(土) 11:17:36
クスプローラが悪さしてるに3億ジンバブエドル

537 :デフォルトの名無しさん:2008/10/11(土) 13:03:25
>>2
のリンク先で.chm形式のMSDN Libraryってありますか?
最新の形式だとエディタから参照できないのであれば教えてください。

538 :デフォルトの名無しさん:2008/10/11(土) 13:07:24
…MENU{
 POPUP "A"{
  MENUITEM "B",IDM_b
 …
と書いてメニューバー作りました。
"A"にカーソル持ってきてもクリックするまで開きませんが
開いて出てくる"B"にカーソル持ってくるとすぐ動作してしまいます。Bも
クリックするまで動作しないようにするにはどうすればいいでしょうか?

539 :デフォルトの名無しさん:2008/10/11(土) 14:04:54
ウィンドウプロシージャのソースも

540 :デフォルトの名無しさん:2008/10/11(土) 14:26:10
>>537
ダウンロードの詳細 : MSDN Library for Visual Studio 2008 SP1
http://www.microsoft.com/downloads/details.aspx?FamilyId=7BBE5EDA-5062-4EBB-83C7-D3C5FF92A373&displaylang=ja

541 :デフォルトの名無しさん:2008/10/11(土) 14:31:29
>>534
Unlocker入れてみた所ロックしてるハンドルは見つかりませんと出るのですが
削除はできませんでした

最近ノートン2009いれたのでもしかしてと思いアンインストールしてみた所
削除できるようになりました、色々お騒がせしました


542 :デフォルトの名無しさん:2008/10/11(土) 14:38:09
>>538
です。
case IDM_b:
 MessageBox(…

試しにこうしています。そしたらカーソル持ってきたらすぐメッセージボックスが…

543 :デフォルトの名無しさん:2008/10/11(土) 14:40:46
>>542
そのcase文のswitchは、case WM_COMMAND内?
そしてswitch文はLOWORD(wParam)をチェックしてる?

その辺がわかるところ全部書けよ。

544 :デフォルトの名無しさん:2008/10/11(土) 14:48:50
LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wp,LPARAM lp){
 switch (msg){
  case WM_MENUSELECT:
   switch (LOWORD(wp)){
    case IDM_b:
     MessageBox(…
です。

545 :デフォルトの名無しさん:2008/10/11(土) 14:53:29
WM_MENUSELECTは、例えばそこが選択されたときにステータスバーに説明を表示したりするときにつかう。
クリックやリターンで確定したらWM_COMMANDがくるよ。

546 :デフォルトの名無しさん:2008/10/11(土) 14:58:41
>>545
ああそうなんですか。すみません、単純なことに気づいていなくて。
ありがとうございました。

547 :デフォルトの名無しさん:2008/10/11(土) 15:11:36
質問です。

ウィンドウハンドルを元に、ウィンドウの描画領域の
(タイトルバーとかフチを除いた)サイズを求めたいと思っています。

だいたい AdjustWindowRect 関数の逆みたいな感じになると思うのですが、
こういうWin32関数はありますでしょうか?

548 :デフォルトの名無しさん:2008/10/11(土) 15:16:08
おまいはさがしてみたのか?

549 :デフォルトの名無しさん:2008/10/11(土) 15:22:26
クライアント領域のサイズ取るだけじゃん

550 :デフォルトの名無しさん:2008/10/11(土) 15:27:11
GetClientRect()のことか?

551 :デフォルトの名無しさん:2008/10/11(土) 17:57:22
LOWARD とか HIWORDとかなんなん?

wParamはUINT型なのに2つも引数が入ってるのかな?配列じゃないのに。

552 :デフォルトの名無しさん:2008/10/11(土) 18:00:31
そう
上位ワードと下位ワードで意味の異なる値が入ってる

553 :デフォルトの名無しさん:2008/10/11(土) 18:03:46
例えばマウスのメッセージには、x座標、y座標、ボタンの状態、等のパラメータがあるが、
それをWPARAMとLPARAMの2つに押し込めなきゃならんので、あまり美しくはないけれど、やむをえない

554 :デフォルトの名無しさん:2008/10/11(土) 18:05:00
上位ワードって具体的にUINT(unsignedを0〜4294967295とすると)
の半分の数の大体の21000000000までは下位ワードでそれから4294967295までが上位ワードってことなのか
4バイトを半分に分けて最初の2バイトを下位ワードにして、あとの2バイトを上位ワードにするとか
どっちなんだろうね。

555 :デフォルトの名無しさん:2008/10/11(土) 18:08:13
2バイトずつ

556 :551:2008/10/11(土) 18:09:44
どうもありがとう!よ〜くわかったよ!

>>552-553 >>555のカキコはみな同じ人かな?

疑問が全部解けました。本当にありがとう!

557 :デフォルトの名無しさん:2008/10/11(土) 20:52:10
>>551-556
※ すべて同じ人です

558 :デフォルトの名無しさん:2008/10/11(土) 21:39:26
LoとHiを10進数で考える人を初めて見た。
ま、理解出来たみたいなんで別にいいけど。

ガンバレ〜

559 :デフォルトの名無しさん:2008/10/11(土) 21:40:25
マジかよ

560 :デフォルトの名無しさん:2008/10/11(土) 22:26:51
USBデバイス通信してて、USB機器が取り外された時に
CloseHandleする前にCancelIoするとフリーズするんだけど、
いきなりCloseHandleしていいのだろうか。

561 :560:2008/10/11(土) 22:32:39
ありゃ
転送エラー⇒MessageBoxでエラー表示⇒CancelIO⇒CloseHandle
の順だとフリーズするのに、
転送エラー⇒CancelIO⇒MessageBoxでエラー表示⇒CancelIO⇒CloseHandle
だとフリーズせずにクローズできるようだ

562 :デフォルトの名無しさん:2008/10/11(土) 22:35:00
メッセージポンプ?

563 :デフォルトの名無しさん:2008/10/11(土) 22:48:19
CancelIOって二度呼ぶ必要があるのか?

564 :デフォルトの名無しさん:2008/10/11(土) 23:23:35
USB機器が取り外されているなら、
CancelIO呼ぶまでもなくキャンセルされると思うのは素人考え?

CancelIOと言えば、下のページの内容が参考に……はならないかなあ。
http://msdn.microsoft.com/ja-jp/library/aa480216.aspx

565 :463:2008/10/11(土) 23:37:15
cbClsExtraのclsって何?

566 :デフォルトの名無しさん:2008/10/11(土) 23:43:04
class

567 :デフォルトの名無しさん:2008/10/11(土) 23:45:56
同ウィンドウクラスを持つウィンドウで共有するメモリを作れる

SetClassLongのGCL_CBCLSEXTRA参考

568 :565:2008/10/11(土) 23:54:16
>>566-567
ありがとうございます。Classの略なんですね。
>>567さんの教えてくれた、SetClassLongもこれからググってみます。
どうもありがとう。WindowsAPIは省略が多くて困る(><)

569 :デフォルトの名無しさん:2008/10/12(日) 00:49:16
>>508
ありがとう。switch (((NMHDR *)lp)->code)の前でwParam調べて分けてなくて
WM_NOTIFYにきたの全部処理してたからだった

570 :デフォルトの名無しさん:2008/10/12(日) 03:10:01
>>569
WM_NOTIFYのlParamに渡す構造体は必ずNMHDRを継承しているから
wParamなんて見なくても((NMHDR *)lp)->codeで落ちるはず無いと思うが・・・

571 :デフォルトの名無しさん:2008/10/12(日) 03:33:36
カスタムドローってコモンコントロールだけの代物?

572 :560:2008/10/12(日) 08:12:40
>>563
デバイスを閉じる自作関数の中でCancelIo→CloseHandleという動作をしているので後の方のCancelIoはは外せない。

>>564
明確な資料がないから念のためCancelIoするようにしてるんだが…
あと、後出しになって申し訳ないんだけど非同期重複IOを使ったときはエラー後すぐにCancelIoしないとフリーズするけど、非同期かつ単発のIOならMassageBox後のCancelIoでフリーズしなかった。

573 :デフォルトの名無しさん:2008/10/12(日) 11:39:41
CancelIOとCloseHandleの処理がドライバ内でぶつかってるのかなあ?
GetOverlappedResult等でCancelIOの処理が終わった事を確認した後で
CloseHandleを呼び出す、とか?

574 :デフォルトの名無しさん:2008/10/12(日) 12:44:36
てか、そのUSB機器って「デバイスの取り外し」をしないでいきなり引っこ抜いてるのか?

575 :560:2008/10/12(日) 20:19:59
>>574
「デバイスの取り外し」アイコンが出るのはマスストレージデバイスくらいじゃね?
俺の中では、転送中だったIOは自動的にキャンセルされて、転送開始待ちのIOの分は転送開始待ちのままだから自分でキャンセルしないといけないんじゃないかと思ってる。
でもそのキャンセルがMessageBox後だとうまくいかないのはよくわからない。
転送失敗したら遅延無くCancelIOしないといけないという条件が書いてあるわけでもないし。

そもそもCancelIOって非同期なのかな?フリーズする時はCancelIOから制御が戻って来ないんだが。

576 :デフォルトの名無しさん:2008/10/12(日) 20:29:37
MessageBoxの代わりにメッセージポンプを回した場合は?

577 :デフォルトの名無しさん:2008/10/12(日) 23:15:37
>>575
一体何のUSB機器でCancelIOを使ってるの?

578 :デフォルトの名無しさん:2008/10/13(月) 01:37:07
VC++2008 EEを使ってるのですが

win32→win32プロジェクト→Windowsアプリケーション+空のプロジェクト
で猫でもわかるというサイトで紹介されていた
Windowを表示させるだけのプログラムが
ttp://homepage2.nifty.com/c_lang/sdk/sdk_00.htm
コンパイルできません。

'HGDIOBJ' から 'HBRUSH' に変換できません。
'char [25]' から 'LPCWSTR' に変換できません。
CreateWindowExW' : 2 番目の引数を 'char [25]' から 'LPCWSTR' に変換できません。
などとエラーが出ます。

579 :デフォルトの名無しさん:2008/10/13(月) 01:46:28
>>578
上のやつはHBRUSHにキャストしていい。
下のほうは、
メニューの表示 -> プロパティページ -> 全般 の "文字セット"の項目で
Unicode 文字セットを使用する から、マルチ バイト文字セットを使用する に変更。
多分これが一番楽。

580 :578:2008/10/13(月) 01:57:34
できました。ありがとうございました。

581 :デフォルトの名無しさん:2008/10/13(月) 02:08:08
TCHARの使い方を覚えた方が(ry

582 :デフォルトの名無しさん:2008/10/13(月) 02:27:23
また猫か。
いい加減あのサイト閉鎖しないかな。
初心者の道を誤らせるだけだ。
この2008年にマルチバイトとかアホかと。

583 :デフォルトの名無しさん:2008/10/13(月) 02:45:24
まあAPIをあれだけ網羅したのはかなり賞賛できると思うよ
かなり参考になるし
書いてるコードはほんとどうしようもないほど糞だけど

584 :デフォルトの名無しさん:2008/10/13(月) 03:21:36
猫の本はこれからWinAPI始めてみるって時は理解しやすくて良かったけど、それ以後は
サイトの方はわかりづらいから毎回ググって他のサイト見た方が分かりやすい

585 :デフォルトの名無しさん:2008/10/13(月) 10:31:16
猫の写真が好きだったのに途中から字ばっかで読みにくいよね

586 :デフォルトの名無しさん:2008/10/13(月) 10:41:27
>>580
"文字列”をL"文字列"にすべき

587 :デフォルトの名無しさん:2008/10/13(月) 13:32:23
CreateProcessで実行したコンソールアプリケーションの出力を取りたいのですが、
PeekNamedPipeとReadFileで出力を取得すると
普通にDOSで実行した場合と比べて何故か改行が一行に一つ余計に取得してしまいます。

こういう現象に遭遇して解決された方がいらっしゃれば解決方法を教えていただけないでしょうか?
単純に改行を取り除くだけでいいのかどうかも不安で……

↓DOSで実行した場合の出力がこれの場合
AAA
BBB
CCC

↓こうなります
AAA

BBB

CCC


588 :デフォルトの名無しさん:2008/10/13(月) 13:38:59
>>587
よくわからんけど
・コンソールアプリケーションのソースコードでは\n
・出力時に\nが\r\nに変換されて、それをパイプ経由で取得
・取得した\r\nをコンソール出力したら再度変換が発生して\r\r\nになった
とかじゃないの?

あとWindows用語ではDOS窓とコマンドプロンプトは別物なので
「DOSで実行した」という表現には気をつけた方がいい。


589 :デフォルトの名無しさん:2008/10/13(月) 13:55:01
\r\r\n
だとそうはならん。

ほげ\r\nはげ\r\n

ほげ\r
\nはげ\r
\n
に区切って
ほげ
\nはげ
\n
と行出力してるんじゃねーの?


590 :デフォルトの名無しさん:2008/10/13(月) 14:00:01
オープンモードの確認と16進コードで出力して確かめることかな

591 :デフォルトの名無しさん:2008/10/13(月) 14:00:31
出力されたデータをテキストエディタで見てると
\r\r\nでも混乱するケースがあり得るかも

592 :デフォルトの名無しさん:2008/10/13(月) 14:19:52
改行とキャリッジリターンとニューラインの区別を調べることかな

593 :デフォルトの名無しさん:2008/10/13(月) 14:32:23
パイプ経由で取得時点で\r\r\nになってました。

おっしゃるとおり出力時に\nが\r\nに変換されているのだと思います。

その為\r\nの場合も\nだけに反応して\r\r\nになるようです。

プロンプトで再度表示する分には見た目上改行は増えないのですが、
MessageBoxで表示すると行が開きます。

必ず\nが\r\nに変換されるなら処理前に\r\nを\nに置換するだけでいい気がしてきました。
ありがとうございます。


594 :デフォルトの名無しさん:2008/10/13(月) 14:51:42
>>593
>必ず\nが\r\nに変換されるなら処理前に\r\nを\nに置換するだけでいい気がしてきました。

思いつきで対処するのもいいけどそのコードを引き継ぐ人が困るから正攻法も調べてね。
古典的で有名な話だし。

「テキストモード バイナリモード」でぐぐる。

595 :デフォルトの名無しさん:2008/10/13(月) 15:08:35
C標準ファイル入出力でいう、"rt"と"rb"のことですよね。

CreateProcessでバイナリモードが指定できるという意味でしょうか?
調べてみます……


596 :デフォルトの名無しさん:2008/10/13(月) 16:07:55
WinAPI(ラッパを使わず)で書くと疲れないか?


597 :デフォルトの名無しさん:2008/10/13(月) 16:31:32
じゃあラッパを使いたまえ

598 :デフォルトの名無しさん:2008/10/13(月) 16:33:23
ラッパ程度で書きやすくなるもんだろうか

599 :デフォルトの名無しさん:2008/10/13(月) 17:54:58
最近は極端に小さいプログラムでもなければ、ATL/WTLと併用するなあ。
一からGUI付きのアプリも書けなくは無いけど、いい加減飽きた。

600 :デフォルトの名無しさん:2008/10/13(月) 18:08:33
このスレには居るものの、最近はC#かC++/CLIしか使わんようになったから
直書きする機会はとんと無くなったな。

601 :デフォルトの名無しさん:2008/10/13(月) 18:18:16
デスクトップの色数とか解像度を弄って再起動せずに適用するにはどうすればいいの?

ハードウェア アクセラレータのレベルも

602 :デフォルトの名無しさん:2008/10/13(月) 18:18:46
レジストリで

603 :デフォルトの名無しさん:2008/10/13(月) 18:19:18
jpegとgifとpngを表示したいんですけどbmpに変換しないと無理ですか?
また、変換ライブラリはどこで入手できますか?

604 :デフォルトの名無しさん:2008/10/13(月) 18:23:01
ツリービューを見やすくする為に
アイテム毎に背景色を変えるにはどうすればいいですか?
TVM_SETBKCOLORだと丸ごと変わってマズーなんですが。

605 :デフォルトの名無しさん:2008/10/13(月) 18:25:46
>>601
ログオフ&ログオン

606 :デフォルトの名無しさん:2008/10/13(月) 18:42:29
>>603
解凍しないといけないという意味で、ある意味BMPへの変換が必要(構造的にはDIB≒BMPだし)。
何でするかは好きにしてくれ。
GDI+、IE、Susieプラグイン、自前処理、etc……。

607 :デフォルトの名無しさん:2008/10/13(月) 18:47:54
>>606
早速ありがとう。
その辺り調べてみます。

608 :デフォルトの名無しさん:2008/10/13(月) 19:25:27
>>604
カスタムドローで少し手を加えればいい。
CDDS_PREPAINTでCDRF_NOTIFYITEMDRAW返して、
CDDS_ITEMPREPAINTでNMTVCUSTOMDRAW.clrTextBkに背景色を設定して、
CDRF_DODEFAULTを返せば完了。
選択状態とかは考慮しないといけないが、そう難しくは無い。

609 :デフォルトの名無しさん:2008/10/13(月) 20:52:50
>>608
情報ありがとです。
WM_NOTIFY捕まえてCDDS_PREPAINTとCDDS_ITEMPREPAINT捕まえるまでは行ったんですが
CDRF_NOTIFYITEMDRAWとCDRF_DODEFAULTを返すってのが良く分かりません。
返す相手はドコですか?
後だしで申し訳ないんですが、HSPからAPI弄ってるんでクラスが使えないんです。

HSPのリストビューのサンプルを見つけたんですが
そのまま移植しても反応ないんです。

610 :デフォルトの名無しさん:2008/10/13(月) 21:00:57
俺は608じゃないけど

return CDRF_DODEFAULT;

するだけでそ

611 :デフォルトの名無しさん:2008/10/13(月) 21:08:31
>>610
出来ました。
ありがとうございます。

関係ないですが、この場合のreturn先はドコなんでしょう?

612 :デフォルトの名無しさん:2008/10/13(月) 21:14:20
質問です。
ウィンドウを最前面に表示して、かつ、
マウスなどの入力を無視して、
下のウィンドウを操作できるようにしたいのですが(システム情報などを表示する類)、
そのようなAPIはあるのでしょうか?

検索したら、Ghost-It ttp://www.google.co.jp/search?&q=Ghost-It
というツールソフトがあったので、何か方法があると思うのですがwかりませんでした。
よろしくおねがいしまう。

613 :610:2008/10/13(月) 21:15:38
そりゃTreeViewのWndProcでしょう

WM_NOTIFY投げてきてるの誰よ
コントロールに決まってるだろ?

614 :デフォルトの名無しさん:2008/10/13(月) 21:18:11
>>613
おぉ!なるほど。言われてみればその通りっすね。
スッキリしました。ありがとう。

615 :デフォルトの名無しさん:2008/10/13(月) 21:18:24
>>612
最前面属性を持たせて半透明にしてるだけ
そのまんまだよ

試しに最前面に出てくるようなアプリを起動してフォーカス外してみ
その状態で最前面に出てるウィンドウが半透明になれば目的は達成されると思わないか?

616 :デフォルトの名無しさん:2008/10/13(月) 21:18:43
>>612
メッセージでスルーできた希ガス

617 :デフォルトの名無しさん:2008/10/13(月) 21:21:08
>>615
それだとマウスでクリックしたらフォーカス奪っちまうだろ?
入力も握りつぶさないと駄目だ罠。

618 :612:2008/10/13(月) 21:31:55
>>615
最前面属性は、 SetWindowPos HWND_TOPMOST でOKなのですが、
半透明(<100%)にしても入力を受け付けてしまいます(完全透過(透過率100%)だと入力を透過するけど、何もみえない)
LayeredWindow でも同じく、透過率100%以外は、反応してしまいます。

>>617
Hook で せき止めることはできても、下のWindowを操作できるようにする方法がわかりませんでした

>>616
>>メッセージでスルー
これかな?
参考ページなどがあれば、教えてください。

619 :デフォルトの名無しさん:2008/10/13(月) 21:45:58
WS_EX_LAYEREDとWS_EX_TRANSPARENTの両方のついたウィンドウは全てのマウスメッセージを透過する。

620 :612:2008/10/13(月) 21:57:08
>>619
WS_EX_LAYERED or WS_EX_TRANSPARENT で、できました!
SetWindowLong(FormMain.Handle, GWL_EXSTYLE, GetWindowLong(FormMain.Handle, GWL_EXSTYLE) or WS_EX_LAYERED or WS_EX_TRANSPARENT);
ttp://web.archive.org/web/20061222092243rn_1/www.microsoft.com/japan/msdn/windows/windows2000/layerwin.aspx
ありがとうございました。

621 :デフォルトの名無しさん:2008/10/13(月) 23:14:50
Internet Archive 使わなくても存在してた
ttp://www.microsoft.com/japan/msdn/windows/windows2000/layerwin.aspx

622 :デフォルトの名無しさん:2008/10/14(火) 00:09:33
Advanced Windows 第5版(上)
http://www.amazon.co.jp/dp/4891005920/

623 :デフォルトの名無しさん:2008/10/14(火) 00:58:25
遅かれ早かれ買うだけだけど
Windows Internals 5th よりも先に発売になってしまったな


624 :デフォルトの名無しさん:2008/10/14(火) 01:09:02
Advancedって売り切れたりしない?4版のときはどうだった?

625 :デフォルトの名無しさん:2008/10/14(火) 01:14:50
そんなに売れる本じゃねーと思うけど、その分数刷らないだろうからなんとも。
まあ、売り切れても定期的に増刷かかるとは思うが

626 :デフォルトの名無しさん:2008/10/14(火) 01:27:13
古い版をPDFで無料配布とかしないんかな

627 :デフォルトの名無しさん:2008/10/14(火) 12:00:49
ついにでたか
まずはジュンク堂で5時間椅子に座って読んでみよう

628 :デフォルトの名無しさん:2008/10/14(火) 14:32:50
第4版が2000までしか対応していなかったから、
xpとvista対応の第5版の存在は大きそうだ。
テンプレのリンクも第5版に変えておく必要があるな。

629 :デフォルトの名無しさん:2008/10/14(火) 16:03:43
早く読みたいのお

3版上下と4版上もってるけどそろそろ処分しとくべきかね

630 :デフォルトの名無しさん:2008/10/14(火) 16:11:40
>>629
インサイドWindowsと勘違いしてないか?w

631 :デフォルトの名無しさん:2008/10/14(火) 16:15:07
ちょっと興味あるんだけどAdvanced Windowsの訳ってまともなの?

632 :デフォルトの名無しさん:2008/10/14(火) 16:17:49
Shell_NotifyIconでアイコンを登録して
それを右クリックしてメニューを表示したら
タスクトレイ自身のメニューも出るのはどうにかならないの?

633 :デフォルトの名無しさん:2008/10/14(火) 16:19:29
>>632
他のプログラムはうまくやってるんじゃない?
SetForegroundWindow呼べば出なくなるかもよ。

634 :デフォルトの名無しさん:2008/10/14(火) 16:48:28
NIM_SETFOCUS

635 :デフォルトの名無しさん:2008/10/14(火) 17:52:22
>>632
NOTIFY_TRAYICONに対して
WM_RBUTTONDOWNじゃなくてWM_RBUTTONUPに反応するようにコードを書けばよい
古いプログラムはDOWNで処理してるものが多く両方のメニューが表示される理由はまずコレ
実際タスクトレイを右クリックしてみればわかるけど
押した瞬間にメニューが出るのではなく離した瞬間にメニューが出る
だからDOWNに反応するコードを書くとそのあとUPが流れてプログラム上で処理されず
マウス入力がタスクトレイへ流れてしまい
DOWN→プログラムのメニュー、UP→タスクトレイのメニューと両方が表示されてしまう
TrackPopupMenuの第一引数にTPM_RIGHTBUTTONが必須なのと直後のお約束PostMessage(WM_NULL);もお忘れなく


636 :デフォルトの名無しさん:2008/10/14(火) 18:29:48
できましたー

637 :デフォルトの名無しさん:2008/10/14(火) 20:34:08
あるあるw

638 :デフォルトの名無しさん:2008/10/14(火) 20:40:20
質問です。
MFCを用いずにリストコントロールを作成しています。
現在の階層のフォルダとかファイルをリストアップしてるのですが、
どのようにすればアイコンが表示できるようになりますか?

SHGetFileInfoでアイコン情報を取得したりはしてるのですが、
そこで渡すパスも実際のファイルかディレクトリパスなのか分からず。
ImageListをattachするタイミングが悪いのか、
CreateExの段階のフラグが間違っているのか、
一向に表示される気配がありません。
多くのサイトを調べたのですが、上手くいかなかったもので
質問させていただきました。

よろしくお願いします。


639 :デフォルトの名無しさん:2008/10/14(火) 20:52:22
イメージリストを作って関連付ける

640 :デフォルトの名無しさん:2008/10/14(火) 22:32:16
下記のような感じで最前面ウィンドウを非表示にさせています。

HWND top_hWnd

top_hWnd = GetForegroundWindow();
ShowWindow(top_hWnd, SW_HIDE);

このとき、ウィンドウはどんな種類のものでも隠れるのですが、タスクバーには残るものと残らないものがあります。
例) FireFox はタスクバーの表示も消えるが、Jane Doe Style はタスクバーだけ残ってしまう

どうしてこのような違いが出るのでしょうか?
やりたいことはどんな種類のウィンドウでも、ウィンドウを隠すと同時にタスクバーからも消したいのですが、どうすればできるのでしょうか?


641 :デフォルトの名無しさん:2008/10/14(火) 22:48:35
WS_EX_APPWINDOW WS_EX_TOOLWINDOW

642 :デフォルトの名無しさん:2008/10/14(火) 23:03:46
Delphiアプリはちょっと実装が違う
ttp://www.asahi-net.or.jp/~HA3T-NKMR/tips003.htm

643 :デフォルトの名無しさん:2008/10/14(火) 23:27:50
>641,642

ウィンドウのスタイルが違うとタスクバーから消えないことがあるのかな?
もしかすると、見えていない親(または子?)ウィンドウがいるかもしれないのかな?

ヒントをいただいたので、明日からまたしばらく楽しく試行錯誤ができそうです。
ありがとうございました。

644 :デフォルトの名無しさん:2008/10/14(火) 23:30:48
タスクバーの操作は、ITaskBarList が楽ちんですよ

645 :デフォルトの名無しさん:2008/10/14(火) 23:32:03
他所のプロセスからのメッセージのWPARAMで送られてきた
文字列へのポインタの中に何が書いてあるか分かりますか?

646 :デフォルトの名無しさん:2008/10/14(火) 23:32:57
↑WPARAMとかLPARAMから

647 :デフォルトの名無しさん:2008/10/14(火) 23:33:41
>>645
wParam? lParam じゃなくて?

WM_COPYDATA とかなら、普通にとれるでしょ。

648 :デフォルトの名無しさん:2008/10/14(火) 23:41:06
すみません。ダイアログプロシージャについて質問があります。
WM_COMMANDで捕らえたメッセージがある場合はTRUEを返します。それ以外はFALSE
を返すみたいなんですが、普通のWindowのプロシージャみたいにDefWindowProcで処理しなくていいみたいなんですが、
これはなぜなんですか?DialogBoxの場合、自分以外のメッセージは自動的にDefWindowProcに流れるようになっているんですか?そのコードを書かなくても。

もう一点質問があります。これはCの文法に関することなんですが、Cのスレが1000まで行ってしまって新スレがたっていないので・・
int WINAPI WinMain(HINSTANCE hinstCurrent, HINSTANCE, LPSTR, int)
とWinMainが僕の本に書かれています。第2,3,4引数が型しかかかれていなく
変数名が書かれていないんですが、関数内で使用しないときはこの様な書き方もCの文法的にOKなんですか?
コンパイル・実行はうまくいったので、OKだということだとおもうんですが。

よろしくお願いします。

649 :デフォルトの名無しさん:2008/10/14(火) 23:42:56
>>648
ダイアログプロシージャは、ウィンドウプロシージャではないから
ダイアログボックスのウィンドウプロシージャは別にあって、そいつがちゃんと処理してる

Cの文法的には良くないが、C++の文法的にはok
たぶんC++モードでコンパイルされている

650 :デフォルトの名無しさん:2008/10/14(火) 23:44:20
>>648
ヘルプみれ

|| ダイアログボックスプロシージャはウィンドウプロシージャに似ていますが、
|| ダイアログボックスプロシージャは不要なメッセージを処理させるために
|| DefWindowProc 関数を呼び出してはなりません。

後者は OK

651 :648:2008/10/14(火) 23:58:28
>>649
どうもありがとうございます。ダイアログプロシージャはウィンドウプロシージャとは
異なるものなんですね。で、別のウィンドウプロシージャが処理してくれていると。よくわかりました。
ありがとうございました。あと、C++の文法的にOKなんですね。これもはっきり良く分かりました。
本当にどうもありがとうございました。胸のつかえがとれました。

>>650
ヘルプにあるんですね。。すみませんでした。見てませんでした。
MSDNにちょっと抵抗もある段階というか難しく感じてます。
引用していただきありがとうございました。よく分かりました。

どうも本当にありがとうございました。

652 :デフォルトの名無しさん:2008/10/15(水) 01:02:56
ttp://support.microsoft.com/kb/246772/ja

ここのサンプルで

lResult = SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0L,
(LPARAM)(LPCTSTR)"windows", SMTO_NORMAL, 1000, NULL);

こんな事してるけど、(LPARAM)(LPCTSTR)"windows"
これって他のプロセス空間から読めるの?

653 :デフォルトの名無しさん:2008/10/15(水) 01:09:33
むり

654 :デフォルトの名無しさん:2008/10/15(水) 01:29:32
>>653
知らないならレスするなクズ

655 :デフォルトの名無しさん:2008/10/15(水) 01:41:24
http://msdn.microsoft.com/en-us/library/ms644950(VS.85).aspx
>The system only does marshalling for system messages (those in the range 0 to (WM_USER-1)).
>To send other messages (those >= WM_USER) to another process, you must do custom marshalling.

WM_SETTINGCHANGE は WM_USER-1 以下だから、いけるんじゃね?

656 :デフォルトの名無しさん:2008/10/15(水) 01:46:24
>>652
一部のシステムメッセージ(>>655)は、NULL終端の文字列を別プロセスのウインドウに送ることがあることをOSが知っているので、
OSが面倒を見てくれる。
そのため、別プロセスでも問題ない。

657 :デフォルトの名無しさん:2008/10/15(水) 02:09:22
今、勉強をするにあたって悩んでいるのだが、Win32の勉強って価値あるの?
つまり、MFCとかそういうのがある中、OSの原理を理解するにはいいかも
知れないけど、アプリを作るという目的において、Win32はどうなのかと。
といいつつ、猫でもわかるWindowsプログラミング読み始めているけど…

658 :デフォルトの名無しさん:2008/10/15(水) 02:28:17
車を運転するのにエンジンの仕組みは、、、と聞いてるようなもんだな
人それぞれ

659 :デフォルトの名無しさん:2008/10/15(水) 02:29:06
>>657
C言語の標準ライブラリの多くはposix由来のものなわけだが。
むしろWin32だってライブラリのひとつじゃないかと見ることもできるわけだが。

あと、猫本は今すぐ窓から投げ捨てろ。


660 :デフォルトの名無しさん:2008/10/15(水) 02:38:41
>C言語の標準ライブラリの多くはposix由来のものなわけだが。
ほう、そうなんですか、初耳です

661 :デフォルトの名無しさん:2008/10/15(水) 02:42:02
Win32APIはそこまでローレベルじゃないと思うんだがなw
MFCやWTLを使う場合でも、当たり前のように必要な知識だし。
C#やVB.NETしか使う気がないならスルーでもいいが。

662 :657:2008/10/15(水) 03:10:53
レスどうもです。何となくWin32勉強してみようと思いました。
しかし猫はだめですか。じゃあいきなりAdvanced Windowsみたいなのを
読み始めても大丈夫なのかな。

663 :デフォルトの名無しさん:2008/10/15(水) 06:03:24
Advanced Windowsは普通のWindowsアプリケーションを組むには
必要のないくらいローレベルな内容の本だぞw
OSの内部動作がどうなっているのかを解説しているような本。

学習目的なら「プログラミングWindows」あたりだが、これも内容が
もう古いかねぇ。

664 :デフォルトの名無しさん:2008/10/15(水) 06:51:52
>>663
あの程度をローレベルとは言わん。Windows Internalsに対して使う言葉だ。
まあ、スレッドも同期オブジェクトもヒープもウインドウメッセージもetcetcも使わないというのなら読まなくてもいいだろうが。


665 :デフォルトの名無しさん:2008/10/15(水) 10:28:38
ペゾルドの改訂版て出る気配あるの?

666 :デフォルトの名無しさん:2008/10/15(水) 11:56:13
プログラミングWindowsが古いとなると、最新のWindowsAPIを学習する
最適な本が皆無ということになるのか。
これでいいのかMicrosoft!!

667 :デフォルトの名無しさん:2008/10/15(水) 11:58:40
http://www.charlespetzold.com/faq.html
>There are no plans at this time for a 6th edition of Programming Windows.

668 :デフォルトの名無しさん:2008/10/15(水) 12:29:43
あの範囲で改版すべき内容はないと思う

669 :デフォルトの名無しさん:2008/10/15(水) 12:34:12
じゃあペゾルド5版は十分現役でいけると?

670 :デフォルトの名無しさん:2008/10/15(水) 12:47:07
というかペゾルド5版(上)ってもう売ってないね。

671 :デフォルトの名無しさん:2008/10/15(水) 12:51:17
>>669
たぶん
個人的には第5版でいい

672 :デフォルトの名無しさん:2008/10/15(水) 21:34:00
複数あるHorizotal Scroll Bar を識別するにはどうすれば
いいですか?
Hscroll0=GetDlgItem(hDlg,IDC_SCROLLBAR0); の様にID?を取得
するところはわかるんですが、
case SB_LINELEFT: がきたときにどう処理すればいいんでしょうか?


673 :デフォルトの名無しさん:2008/10/15(水) 21:42:08
>>672
lParam

674 :デフォルトの名無しさん:2008/10/15(水) 21:50:22
>>657
僕もずっとJavaやってて、今VCやってるけど、JavaよりWinAPIのほうが面白いよ。
やってよかったと思ってる。OSとかの仕組みも学べるし・・なんていうか根源的な面白さはあるよね。
もっと高次元言語ならC#できるし。

やっぱ個人的にはSunよりもMicroSoftのほうが言語とかの設計がしっかりしてるよ。

WinAPI、MFC最高だよ。就職とかの面では価値が無いかもしれないけど
プログラマとしては勉強する価値有だよ。

ちなみに7年前に買って冬眠してたVC++6でやってるよ。ブックオフとかオークションで105円で
本買えるし。VC6ならStandard版が安くオークションで変えるんじゃないかな?

675 :674:2008/10/15(水) 21:52:54
個人的には老人やもっと初心者用のOSやはがき作成ソフトをつくるのが目標なんだ。
はがき作成ソフトはだいぶ振興してるよ。OSはとりあえず、OS自作入門やWindowsのOSの設計の本を読んで勉強したいとおもってる。

コンパイラやエディタもつくりたい。あと80歳まで50年あるから・・

676 :デフォルトの名無しさん:2008/10/15(水) 22:03:34
作りたいものや覚えたい技術考えてると、人生足りねえって気付くよな

677 :デフォルトの名無しさん:2008/10/15(水) 22:05:10
(実は頭が足りない)

678 :デフォルトの名無しさん:2008/10/15(水) 22:13:28
>>673
ありがとうございました。
無事解決できました。

679 :デフォルトの名無しさん:2008/10/15(水) 23:01:43
>>675
>>676
俺も向上心を忘れないようにしたい。

680 :デフォルトの名無しさん:2008/10/16(木) 00:11:54
VisualStudio 20008 expressを使っています。


コンソールで使っていたプログラムをAPIに流用させたいと考えています。(printf()とかで表示していた)

WINAPIでウィンドウを作ったりするソースを書いて今までのint main()から始まるプログラムを動かせますか?

いままでprintfでコンソールで出力していた結果をGUIでだしたり、ファイルの読み込みをクリックで行えたりするようにしたいだけなんですが・・・

うまく説明できなくてすいません

681 :デフォルトの名無しさん:2008/10/16(木) 00:15:06
mainから始まるプログラム上でWINAPIを呼ぶことが出来るが、
GUIを表示するのは単純なprintfに比べて大幅な変更が必要かと・・・

682 :デフォルトの名無しさん:2008/10/16(木) 00:16:42
不覚にも20008で噴いた

683 :デフォルトの名無しさん:2008/10/16(木) 00:20:52
>>681
mainの方でprintfしてる文字列をbuffにいれて、WinMainの方に渡せばいいんですかね?

684 :デフォルトの名無しさん:2008/10/16(木) 00:24:10
>>682
普通に間違えましたw

685 :デフォルトの名無しさん:2008/10/16(木) 01:34:54
>>680
>>3のリンクで勉強するヨロシ

686 :デフォルトの名無しさん:2008/10/16(木) 06:31:04
他人様が作られたソフトのプラグイン(DLL形式)を作成しようとしているのですが、
ソフト本体のウィンドウとは別に、プラグイン内でウィンドウを生成したら、
プラグインウィンドウのメッセージループで止まり、本体ウィンドウが出ませんでした(当然ですが)。

この解決策としては、
新しいスレッドを作ってその中でウィンドウ生成した後、本体からプラグインに渡されたデータをウィンドウ用スレッドに渡す
という方向性でいいのでしょうか?
つっこみ所や一般的な解決策などありましたら、よろしくお願いします。

687 :デフォルトの名無しさん:2008/10/16(木) 06:35:17
他人様に聞いてみなさい

688 :デフォルトの名無しさん:2008/10/16(木) 07:19:15
>>674
なんか元気がでてきたよ。ありがとう。

689 :デフォルトの名無しさん:2008/10/16(木) 10:43:31
VC++ 2008express使っているのだが、やっぱリソースエディタ無いと
つらいよな?手書きでリソース書いてる人いる?

690 :デフォルトの名無しさん:2008/10/16(木) 10:59:24
>>686
プラグイン内で独自のメッセージループを動かす必要はないかと
本体側のメッセージループでプラグイン内のウィンドウも動くと思う
上手くいかなかったら別スレッドで回すしかないけど

691 :デフォルトの名無しさん:2008/10/16(木) 11:12:36
>>689
フリーであるじゃん

692 :デフォルトの名無しさん:2008/10/16(木) 11:34:07
おすすめ教えてください

693 :デフォルトの名無しさん:2008/10/16(木) 11:46:42
>>692
XNResourceEditor

694 :デフォルトの名無しさん:2008/10/16(木) 12:06:43
ResEdit http://www.resedit.net/

695 :デフォルトの名無しさん:2008/10/16(木) 12:09:51
ResEditに一票

696 :デフォルトの名無しさん:2008/10/16(木) 15:37:17
さんくす、いろいろあるんだねぇ

697 :デフォルトの名無しさん:2008/10/16(木) 17:46:51
>>694
ResEDitって最終的には何吐き出すの?
リソーススクリプト(〜.rc)? それともリソースそのもの?

あ、自分でやってみればいいんだね^^ さんきゅー

698 :デフォルトの名無しさん:2008/10/16(木) 18:11:27
>>697
Cソースかリソーススクリプト

699 :697:2008/10/16(木) 18:27:36
>>698
Cソースってのは、CreateWindow でリソース作ってる部分ってことですか?

700 :デフォルトの名無しさん:2008/10/16(木) 18:33:29
ちょっと今やってみたけど、RegisterClassExとかCreateFontとかCreateWindowExが
書かれたソースが出てきた。

701 :デフォルトの名無しさん:2008/10/16(木) 18:41:49
ResEditの窓の杜紹介文
http://www.forest.impress.co.jp/article/2008/03/12/resedit.html
>なお本ソフトで“Win32API”のシンボリック定数を含むRCファイルを
>開く際には、“Win32API”のC言語ヘッダーファイルが必要。
>このヘッダーファイルは一部のWindows向けC/C++コンパイラーに
>付属しているほか、「Windows Server 2003 SP1 Platform SDK」
>「Windows SDK for Windows Vista」などのSDKをインストールする
>ことで入手できる。

これによると、すんなりrcファイル使えるわけじゃないのかな。




702 :デフォルトの名無しさん:2008/10/16(木) 18:46:06
>>701
昔からWindowsのリソースエディタはそんなもんだったよ。
rcに書く定数がwindows.hに書いてあったりするからね。

703 :ののし:2008/10/16(木) 21:25:47
唐突ですが。
このポインタについて、少し不安なのですが、これって良い使い方ですか?
WIN APIですが、VC++(NO MFC) ↓
----一部関数----------------
void bit2(HWND hWnd)////裏画面から表画面
{
HDC hdc;HDC *hd;////ポインタ
hdc=GetDC(hWnd);
hd=&hdc;
BitBlt(*hd,0,0,599,479,bhDC,0,0,SRCCOPY);
ReleaseDC(hWnd,hdc);
}
別スレで特に叩かれていなかったのでこっちきました。
ポインタ使う理由は、少しでも早くなるのかな?と、
MFCや入門本だとポインタ使うよね。

704 :デフォルトの名無しさん:2008/10/16(木) 21:31:19
意味分からない。
だってBitBlt(hdc,0,0,599,479,bhDC,0,0,SRCCOPY);と書けば変数hdは要らないじゃないか。

705 :デフォルトの名無しさん:2008/10/16(木) 21:34:11
OutputDebugStringみたいに
VCのデバッガに出力されるやつで
printfみたいにフォーマットされる代物は無いの?

706 :デフォルトの名無しさん:2008/10/16(木) 21:39:03
ない。

707 :デフォルトの名無しさん:2008/10/16(木) 21:42:43
>>705
こんな感じで自分で作ったらどうよ

void OutputDebugStringF(const char *format, ...) {
char buffer[1000];
va_list ap;
va_start(ap, format);
vsprintf(buffer, format, ap);
va_end(ap);
OutputDebugStringA(buffer);
}

708 :デフォルトの名無しさん:2008/10/16(木) 22:08:17
バッファが固定

709 :デフォルトの名無しさん:2008/10/16(木) 22:24:29
その辺はいい感じに改良してくれ

710 :デフォルトの名無しさん:2008/10/16(木) 22:35:03
HeapAllocの第一引数は初期化とかするんですか?
Run-Time Check Failure #3 - The variable 'm_hHeap' is being used without being initialized.
とエラーが出ます。どうやって初期化すればいいでしょうか

HANDLE m_hHeap;
LPBYTE m_pFormat;
m_pFormat = (LPBYTE)HeapAlloc(m_hHeap,HEAP_ZERO_MEMORY, 16);

711 :デフォルトの名無しさん:2008/10/16(木) 22:38:14
http://msdn.microsoft.com/en-us/library/aa366597(VS.85).aspx
>hHeap [in]
>A handle to the heap from which the memory will be allocated.
>This handle is returned by the HeapCreate or GetProcessHeap function.

712 :デフォルトの名無しさん:2008/10/16(木) 22:55:53
勉強するのに何の本を買ったらいいのかわかんない

713 :デフォルトの名無しさん:2008/10/16(木) 22:59:56
ありがとうございます。HeapCreateはなんとなく理解できますが、GetProcessHeapはプロセスは作られた時から決められたメモリ領域を自分の為に確保しているんでしょうか?
全然解釈が違いますか?

714 :デフォルトの名無しさん:2008/10/16(木) 23:18:50
ドライブがローカルHDDかどうかどうやったら判断したら良いですか?
GetDriveType() だと USB経由で接続したような取り外し可能なHDDも Fixed として返ってきてしまいます。


715 :デフォルトの名無しさん:2008/10/16(木) 23:20:53
USBもローカルHDDなんだが、頭は大丈夫か?

716 :デフォルトの名無しさん:2008/10/16(木) 23:23:20
>>713
Windows自体がプロセスごとに1個CreateHeapしてある。
GetProcessHeap()すると、そのヒープハンドルをユーザが入手できるという考え方でどうだろう。

717 :デフォルトの名無しさん:2008/10/16(木) 23:38:20
ありがとうございます。つかめてきました。
プロセス内で使う変数はこのプロセスで最初に作られた拡張可能ヒープ領域を使っていて、
変数を増やし続けると肥大化してしまうので、大量のデータを格納する場合は、HeapFreeできないプロセス用ヒープではなくて、HeapCreateを使った方が
メモリ管理がうまくいくということですね


718 :デフォルトの名無しさん:2008/10/16(木) 23:41:28
そこ、HeapFreeじゃなくてHeapDestroyな。
プロセスヒープでもHeapFreeはできるし、malloc/freeみたいに必須。

719 :デフォルトの名無しさん:2008/10/16(木) 23:49:09
>>707

どーも

720 :デフォルトの名無しさん:2008/10/17(金) 01:16:38
>>718
ありがとうございます。流れがわかってきました。メモリ関連徹底的に勉強してきます。

721 :デフォルトの名無しさん:2008/10/17(金) 01:18:43
shell namespace extensionのリソース管理について質問です。

たとえばIMAPフォルダを作るとして、接続は1つだけに制限したい、
でもフォルダ階層は深くなる場合なんですが。

http://www.codeproject.com/KB/shell/namespcextguide1.aspx

この記事を読むと、IPersistFolder::Initializeを実装すれば初期化ができる
というようなことが書かれているのですが、では、初期化時に接続したコネクションを、
不要になった(フォルダを閉じた)時に閉じるには、何を実装すればいいのでしょうか。

722 :デフォルトの名無しさん:2008/10/17(金) 20:16:41
PropertyGrid コントロールを
非MFC環境で使用したいのですが、
解説のあるサイトをご存知の方はいらっしゃいませんか?

723 :デフォルトの名無しさん:2008/10/17(金) 21:19:14
Windowsプログラムの上が絶版って上の方にかいてあったから、
一応昨日、急いで町の中心部の書店にいって買ってきたよ。

VisualStudio2008とWindowsVistaBuisinessだけど、使えるのかな(;´д`)

724 :723:2008/10/17(金) 21:25:29
667 :デフォルトの名無しさん:2008/10/15(水) 11:58:40
http://www.charlespetzold.com/faq.html
>There are no plans at this time for a 6th edition of Programming Windows.

668 :デフォルトの名無しさん:2008/10/15(水) 12:29:43
あの範囲で改版すべき内容はないと思う

669 :デフォルトの名無しさん:2008/10/15(水) 12:34:12
じゃあペゾルド5版は十分現役でいけると?

670 :デフォルトの名無しさん:2008/10/15(水) 12:47:07
というかペゾルド5版(上)ってもう売ってないね。

俺が昨日買ってきたやつ、第4版って帯にでかでかと書いてあるよ。


725 :デフォルトの名無しさん:2008/10/17(金) 22:04:19
やっぱりプログラミングWindowsは必須かね?
それなりの値段するから買おうかどうか迷ってるんだが…

726 :デフォルトの名無しさん:2008/10/17(金) 22:20:02
あれ、基本的に入門書だからある程度素のAPI使ったプログラム書けるなら別に持ってる必要はないぞ。


727 :デフォルトの名無しさん:2008/10/17(金) 22:58:33
俺もそう思う。
正直いらん

728 :デフォルトの名無しさん:2008/10/17(金) 23:09:30
必須ゆーならむしろAdvanced Windowsだろうな。

729 :デフォルトの名無しさん:2008/10/18(土) 00:00:19
自作ツールから某ソフトを起動した所、起動後の某ソフトの挙動が違うんですが
CreateProcessAで起動する時とダブルクリックで起動する時って何か違いはありますか?

730 :デフォルトの名無しさん:2008/10/18(土) 00:07:08
パッと思いつくのは関連付けで引数設定してるとか

731 :デフォルトの名無しさん:2008/10/18(土) 00:11:17
カレントディレクトリ

732 :デフォルトの名無しさん:2008/10/18(土) 00:11:47
あ〜

733 :デフォルトの名無しさん:2008/10/18(土) 00:17:01
>>730
何も関連付けされてないんです。

>>731
それはまぁ…

>>732
い〜

某ソフトを晒せって言われそうなんで、もう少し色々変えてみます。
ありがとうございました。

734 :デフォルトの名無しさん:2008/10/18(土) 00:23:18
えーっと…すみません!!

>>731さんが正解でした。
スレ汚し、本当にすみませんでした。

735 :デフォルトの名無しさん:2008/10/18(土) 07:07:22
LVS_EX_UNDERLINEHOTを知らぬがために、オーナードローを学んでしまった

736 :デフォルトの名無しさん:2008/10/18(土) 11:06:18
(´◕ฺω◕ฺ`)

737 :デフォルトの名無しさん:2008/10/18(土) 13:22:01
MSがWindowsと決別してmidoriなるOSの研究・開発に着手したそうだが
こんなOSができたら、Win32APIは不必要になるのか?

738 :デフォルトの名無しさん:2008/10/18(土) 13:48:43
>>737
過去の資産の絡みで移行できない人が多いから
互換モードを用意するに100ジンバブエドル

739 :デフォルトの名無しさん:2008/10/18(土) 14:02:29
せこい

740 :デフォルトの名無しさん:2008/10/18(土) 14:03:31
それでも20年後とか30年後だよなぁ。
Windows7なるものも決まったし。

741 :デフォルトの名無しさん:2008/10/18(土) 16:07:03
どうすれば既に作られたメニューに対してプログラムからアクセラレータキーを設定できますか?


742 :デフォルトの名無しさん:2008/10/18(土) 16:11:05
>>741
SetMenuItemInfo で、アクセラレータキーつきのキャプションを設定すればいいんでね?

743 :デフォルトの名無しさん:2008/10/18(土) 17:41:14
>>737
midori自体はそうかもね。
過去の資産関係は、VirtualPCで対応かな?

744 :デフォルトの名無しさん:2008/10/18(土) 17:58:37
>>742あれ?できましたっけ?Ctrl+Sの場合はどんなテキストくっつければできます?

745 :デフォルトの名無しさん:2008/10/18(土) 18:11:59
>>744
あ。ごめん。ニーモニック文字と勘違いしてたみたい。

Keyboard Accelerators を見てみたんだけど、ウィンドウプロシージャ側の
処理も必要みたいなんで、すでに作られたメニューに対してやるのは無理っぽいね。

746 :デフォルトの名無しさん:2008/10/18(土) 18:18:18
そこで殺人フックが炸裂ですよ

747 :デフォルトの名無しさん:2008/10/18(土) 18:53:04
>>743
いやいや今のDOS VMやWineみたいに直接動かせるようになると思うよ。

748 :デフォルトの名無しさん:2008/10/18(土) 19:03:15
普通に考えて互換レイヤに転送じゃね

749 :デフォルトの名無しさん:2008/10/18(土) 19:18:29
16ビットアプリみたいにVDMで対応するんだろ
で、結局VMwareやVirtualPC上のXP/Vistaで動かした方が軽いってオチ

750 :デフォルトの名無しさん:2008/10/18(土) 21:35:50
中身はWindowsと全く同じというオチに100ゲイツ

751 :デフォルトの名無しさん:2008/10/18(土) 21:39:01
>>745d

752 :デフォルトの名無しさん:2008/10/18(土) 22:06:15
>>741
ActiveAccessibilityは?
どっかにAccExplorerのソース無いかな・・

753 :デフォルトの名無しさん:2008/10/18(土) 23:11:29
741ですがCreateAcceleratorTableでいけそうです。

754 :デフォルトの名無しさん:2008/10/19(日) 18:16:23
なんでデバイスコンテキストハンドルはリリースしなければいけないのですか?

755 :デフォルトの名無しさん:2008/10/19(日) 18:27:09
馬鹿だから

756 :デフォルトの名無しさん:2008/10/19(日) 18:28:03
誰が?

757 :デフォルトの名無しさん:2008/10/19(日) 18:35:52
>754
そういうようにWindowsが作られているから。

758 :デフォルトの名無しさん:2008/10/19(日) 18:45:14
では一度DCを取得してから、プログラムが終了するまで、解放・再取得せずに
事足りるなんてこと、可能なのか?

759 :デフォルトの名無しさん:2008/10/19(日) 18:53:49
コントロールに付き一個固有のデバイスコンテキストを関連付けたいなら、CS_OWNDCスタイルを設定すればいいじゃない。
でも、ReleaseDCをサボりたいためだけにCS_OWNDCはちょっと高価な気もするぞ。

760 :デフォルトの名無しさん:2008/10/19(日) 18:59:40
そもそもDCは画面とは限らないからな
プリンタなんかだとそのアプリを終了するまで他のアプリが印刷できないと困るから、とかじゃないの?

761 :デフォルトの名無しさん:2008/10/19(日) 20:23:02
>>756
間違っています。
以上。
↓次の方どうぞ

762 :デフォルトの名無しさん:2008/10/19(日) 20:31:14
何が?

763 :デフォルトの名無しさん:2008/10/19(日) 21:09:19
誰が?

764 :デフォルトの名無しさん:2008/10/19(日) 21:27:12
windows関連の関数で、bool型ではなくてBOOL型を返す理由は何でしょうか。
INTなどはintの別名として定義されていますが、BOOL≠boolなんで気になります。

765 :デフォルトの名無しさん:2008/10/19(日) 21:29:05
>>764
当時は bool がなかったから。

766 :デフォルトの名無しさん:2008/10/19(日) 21:29:25
boolなんてC言語に入ったのは最近なのじゃ

767 :デフォルトの名無しさん:2008/10/19(日) 21:31:50
ありがとうございます。速いですね(笑)

768 :デフォルトの名無しさん:2008/10/19(日) 21:52:18
C での型名は bool でなく _Bool 。
stdbool.h を include すると bool も定義されるようになってる。
C++ では bool はプリミティブな型。
C と C++ で非互換なところのひとつなので覚えておくように。 テストに出るぞー。

769 :デフォルトの名無しさん:2008/10/19(日) 21:57:32
そして、VCはC99に対応しておらず、_Boolは使えないのでした。

770 :デフォルトの名無しさん:2008/10/19(日) 22:10:42
どうせ使うのはBOOL一択なんだし・・・
Cでboolって使いたいとも思わなくね?

771 :デフォルトの名無しさん:2008/10/19(日) 22:37:18
はあ?

772 :デフォルトの名無しさん:2008/10/19(日) 22:43:14
ひい

773 :デフォルトの名無しさん:2008/10/19(日) 22:48:45
ラマーズ法?

774 :デフォルトの名無しさん:2008/10/20(月) 00:30:14
bool使いたけりゃ拡張子をcppにしてコンパイルすればいいし

775 :デフォルトの名無しさん:2008/10/20(月) 02:31:12
typedef使うわ

776 :デフォルトの名無しさん:2008/10/20(月) 02:54:15
初歩的な質問で申し訳ないのですが

#include <windows.h>
#include <mmsystem.h>
#include <stdio.h>
char buf[256];
int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine, int cmdShow){
int s, r;
s = waveOutGetNumDevs();/*再生デバイスの数*/
r = waveInGetNumDevs(); /*録音デバイスの数*/
sprintf(buf,"録音ポート=%d 再生ポート=%d",r,s);
MessageBox(NULL, buf, "サウンド機能", MB_OK);
return 0;
}

をコンパイルすると
Main.obj : error LNK2019: 未解決の外部シンボル __imp__waveInGetNumDevs@0 が関数 _WinMain@16 で参照されました。
1>Main.obj : error LNK2019: 未解決の外部シンボル __imp__waveOutGetNumDevs@0 が関数 _WinMain@16 で参照されました。
1>MSVCRTD.lib(crtexe.obj) : error LNK2019: 未解決の外部シンボル _main が関数 ___tmainCRTStartup で参照されました。
1>C:\Documents and Settings\・・\My Documents\Visual Studio 2008\Projects\Win32\Debug\Win32.exe : fatal error LNK1120: 外部参照 3 が未解決です。

とエラーが出てコンパイルが通りません。
何か設定などを変えないとダメなのでしょうか?


777 :デフォルトの名無しさん:2008/10/20(月) 03:06:41
シンボルを解決する方法を調べろ。
つーか、C/C++の基礎だ。

778 :デフォルトの名無しさん:2008/10/20(月) 05:08:07
調べろ、じゃなくて答えを教えてやれよ
知らないならレスしなくていい

779 :デフォルトの名無しさん:2008/10/20(月) 05:15:45
知ってるふりして上から目線で喋りたい年頃なんだよ

780 :デフォルトの名無しさん:2008/10/20(月) 06:49:16
今時waveIn/Outを使うのは正直マゾプレイだから、
素直にDirectSoundを使っとけ。
あと、インポートライブラリの件はともかく、
何でコンソールアプリでWinMainやねん、と突っ込んでおく。

781 :デフォルトの名無しさん:2008/10/20(月) 06:49:47
なんで778や779は教えないの? 答えは一瞬で出てるよね

782 :デフォルトの名無しさん:2008/10/20(月) 07:18:51
>>780
stdio.hをincludeしたらコンソールアプリだと思ってる馬鹿ですか?

783 :デフォルトの名無しさん:2008/10/20(月) 07:23:30
>>782
>1>MSVCRTD.lib(crtexe.obj) : error LNK2019: 未解決の外部シンボル _main が関数 ___tmainCRTStartup で参照されました。

784 :デフォルトの名無しさん:2008/10/20(月) 07:26:29
>>783
デバッグビルドでCランタイムをリンクしなければコンソールアプリでなくても出る

785 :デフォルトの名無しさん:2008/10/20(月) 07:26:57
>>783
おいw

786 :デフォルトの名無しさん:2008/10/20(月) 07:32:25
int PASCAL WinMain ???

と思ったらまた猫か
次はchar*からLPWSTRに変換できませんとか質問してきそうだなw

787 :デフォルトの名無しさん:2008/10/20(月) 09:07:27
猫ではないです。
あと、その変換は調べましたので大丈夫やです。
低レベルな質問で申し訳ありませんでした。
もう少し調べてみます

788 :デフォルトの名無しさん:2008/10/20(月) 09:56:57
「猫」ってそんないヤバイ?
おれ結構マジであれで勉強してるんだけど。。

789 :デフォルトの名無しさん:2008/10/20(月) 09:58:12
ほい
ttp://msdn.microsoft.com/ja-jp/library/cc428817.aspx
インポートライブラリ:winmm.lib を使用

winmm.libのリンク。この手のはソースに#pragma comment(lib, "winmm.lib")入れるのが楽。

790 :デフォルトの名無しさん:2008/10/20(月) 10:01:21
時代にあってないのが一番問題なんだと思うぜ

791 :デフォルトの名無しさん:2008/10/20(月) 10:08:41
あるウィンドウのボタンのハンドルを取得する方法を教えてください。
ちなみにあるウィンドウのキャプションとクラス名はわかっているので
そのウィンドウのハンドルはとれます。

792 :デフォルトの名無しさん:2008/10/20(月) 10:12:43
FindWindowExか?
直接の子で無いと駄目だが

793 :デフォルトの名無しさん:2008/10/20(月) 10:13:05
そのボタンを特定する情報は?
まあID以外ならEnumChildWindowsで列挙して調べることになるかな。

794 :デフォルトの名無しさん:2008/10/20(月) 11:32:00
ハンドルが無いボタンだったりして
IEとか

795 :デフォルトの名無しさん:2008/10/20(月) 11:32:56
>>792-793
レスどうもです。
ボタンを特定する情報はボタンのキャプションになります。
EnumChildWindowsでハンドルをあれしてキャプションで比較すればおkでしょうか?

796 :デフォルトの名無しさん:2008/10/20(月) 11:37:19
多分ね
794が言ってるようにハンドルがないのもあるから万能ではないけど

797 :デフォルトの名無しさん:2008/10/20(月) 12:11:11
WPFもコントロールのハンドルが無くなってるな

798 :デフォルトの名無しさん:2008/10/20(月) 12:49:38
>>797
WPFってなに? って訊かずにググってみました。
.NET Framework3.0っすね。ああ、また新しい概念がぁぁぁぁ!!

799 :722:2008/10/20(月) 13:58:20
.NET Frameworkはどこのサイトを見ても
VBやC#でのサンプルしかないのですが、
C++からは使えないのでしょうか?

また、VC++2003のリソースエディタ上の
ツール項目にPropertyGridを追加したのですが、
選択不可能になっており、配置することができません。
何か設定があるのでしょうか?

800 :デフォルトの名無しさん:2008/10/20(月) 14:00:27
スレ違いだからC++マネージ拡張かC++/CLIでググれ

801 :799:2008/10/20(月) 14:13:33
>800
すれ違いでしたか・・・すみません。
アドバイスありがとうございました。

802 :791:2008/10/20(月) 14:22:56
とりあえずキャプションの列挙ができました!
ありがとうございます。

ところでもう1つ質問なのですが
この列挙した子ウィンドウのハンドルから
これがボタンとかラベルとかを識別するAPIを教えてください><

803 :デフォルトの名無しさん:2008/10/20(月) 14:27:03
GetClassName

804 :791:2008/10/20(月) 14:27:35
あ、GetWindowLongでGWL_STYLEでいけそうですねすみません。
ところでこれの定数ってあるんですかね?


805 :791:2008/10/20(月) 14:30:18
>>803
GetClassNameでできました〜
ありがとうですー

806 :デフォルトの名無しさん:2008/10/20(月) 15:46:57
Advanced Windowsは、Win32APIを一から勉強するのには向いていないのでしょうか。

807 :デフォルトの名無しさん:2008/10/20(月) 15:51:10
>>806
目的が違います。
そう言う目的には正直向いていません。

808 :デフォルトの名無しさん:2008/10/20(月) 15:58:05
>>806
Advanced WindowsはWin32APIを一通り使えるようになった人が読む本。
入門書ではない。

809 :デフォルトの名無しさん:2008/10/20(月) 16:48:04
>>806
目的が違いますし向いてないし入門書でもないです。

810 :デフォルトの名無しさん:2008/10/20(月) 17:39:01
>>809
>>807>>808で答え出てるのに何故わざわざ同じ事を言うの?
馬鹿?

811 :デフォルトの名無しさん:2008/10/20(月) 17:44:51
重要な事だから3回言ったんでしょ
いちいち噛み付くなって

812 :デフォルトの名無しさん:2008/10/20(月) 17:50:37
つーか、わざわざ抜き出して組み合わせたんだろw

813 :809:2008/10/20(月) 18:56:28
重要な事だからわざわざ抜き出して組み合わせました。
いちいち噛み付かなくていいです。

814 :デフォルトの名無しさん:2008/10/20(月) 20:40:14
猫でもはint Pascal WinMain表記じゃないよ。int WINAPI WinMain表記だよ。

登大遊くんの7年前くらいの本はint Pascal WinMain表記だけど。
あの頃の本、中古でたくさんかって本棚に入れてある。

815 :デフォルトの名無しさん:2008/10/20(月) 20:51:41
Win16とソースレベルで互換性持たせるならPASCALにすべきだろうけど
7年前だと別にWin32前提で良かったと思うけどねぇ

まあそれ以前に、今ならWinMainじゃなくて_tWinMainにすべきか

> WinMain に一致する日本語のページ 約 42,400 件
> _tWinMain に一致する日本語のページ 約 1,880 件
> wWinMain に一致する日本語のページ 約 952 件

……

816 :デフォルトの名無しさん:2008/10/20(月) 21:00:25
エントリポイントを変更するのですら面倒になる位、利点が無いからなあ。
Unicodeのコマンドライン渡された所で、嬉しくもなんとも無い。
まあ__argcと__targvを無理やり引っ張り出すなら、多少利点はあるけど。

817 :デフォルトの名無しさん:2008/10/20(月) 21:13:36
こうやってエントリポイントを自分で作っちゃえばいいんだよ
WinMainは第2引数と第3引数が役に立たんのが気に食わん

#pragma comment(linker, "/entry:EntryPoint")
extern int Main(HINSTANCE, int, LPCTSTR const*, int);
void __cdecl EntryPoint()
{
  STARTUPINFOA si = {0};
  _startupinfo startinfo = {0};
  int argc, ret;
  TCHAR **argv, **envp;
  GetStartupInfoA(&si);
#ifdef _UNICODE
  __wgetmainargs(&argc, &argv, &envp, 0, &startinfo);
#else
  __getmainargs(&argc, &argv, &envp, 0, &startinfo);
#endif
  ret = Main(GetModuleHandleA(NULL), argc, argv,
    si.dwFlags & STARTF_USESHOWWINDOW ? si.wShowWindow : SW_SHOWDEFAULT);
  exit(ret);
}

818 :デフォルトの名無しさん:2008/10/20(月) 21:43:04
>>817
それやるくらいならmain系でいいじゃない。

インスタンスハンドルはGetModuleHandle、
nCmdShowはShowWindowの仕様に任せて手当てしないということで。

819 :デフォルトの名無しさん:2008/10/20(月) 21:53:18
ぶっちゃけunicodeなんてどうでもいい。
_tWinMainとか_Tとか面倒すぎ。

820 :デフォルトの名無しさん:2008/10/20(月) 22:11:11
Advanced Windowsの話題の直後にunicodeがどうでもいいとはちょっと驚いた

821 :デフォルトの名無しさん:2008/10/20(月) 22:13:51
だって普及してないもの

822 :デフォルトの名無しさん:2008/10/20(月) 22:18:15
おいおいマジでいってんのか

823 :デフォルトの名無しさん:2008/10/20(月) 22:22:27
>>819
逆にwWinMainでW版オンリーで作ればいいよ。

824 :デフォルトの名無しさん:2008/10/20(月) 22:22:57
1byte1文字のほうがわかりやすいだろ

825 :デフォルトの名無しさん:2008/10/20(月) 22:26:49
日本語使っている時点でそんな幻想は崩れ去っている。

826 :デフォルトの名無しさん:2008/10/20(月) 22:30:40
逆にアルファベット1文字が2byteってほうに違和感がある

827 :デフォルトの名無しさん:2008/10/20(月) 22:41:04
次のWindowsはUCS-4を使うようにするべき

828 :デフォルトの名無しさん:2008/10/20(月) 22:54:03
>>825
日本語使わなければおk

829 :デフォルトの名無しさん:2008/10/20(月) 23:15:43
みなさんは何を作ってるのか知りませんが、そのソースコードは
Unicode対応、非対応とを、1つのソースコードで管理できるように
していますか?つまりTEXTやらTCHARをふんだんに使って。
何か面倒ですよね。
日本人向けソフトなら別にUnicode対応じゃなくてもいい気がす。

830 :デフォルトの名無しさん:2008/10/20(月) 23:17:53
>>829
日本人ならSJISしか使わんとでも思ってんの?
このインターネット時代に

831 :デフォルトの名無しさん:2008/10/20(月) 23:18:37
>>829
お前の小規模なオナニーコードにあわせてやる必要はない
後のことを考えれば面倒でもなんでもない

832 :デフォルトの名無しさん:2008/10/20(月) 23:29:43
世界的ですもんね。乗るしかない(以下略

言ってみたかっただけ

833 :デフォルトの名無しさん:2008/10/20(月) 23:35:51
>>829
いまどきわざわざWin9x対応する必要がなければUnicodeオンリーのほうが楽だろ

834 :デフォルトの名無しさん:2008/10/20(月) 23:42:05
テキストファイルを処理するなら、まだ断然SJISファイルが主流だよね。

835 :デフォルトの名無しさん:2008/10/21(火) 00:03:37
Unicodeにマトモに対応するぐらいなら.NETに移行すればいいじゃん

Win32なんてUCS-2=Unicodeだった時代の物なんだから
本格的に対応するのは大変だしその労力に見合わない

836 :デフォルトの名無しさん:2008/10/21(火) 00:03:45
いまどきメモ帳だってUTF-8/16使えるぞ。

837 :デフォルトの名無しさん:2008/10/21(火) 00:07:18
>>836
今時って・・・NT4ぐらいから使えただろ

838 :デフォルトの名無しさん:2008/10/21(火) 00:17:18
BOM付き必須だけどなー

839 :デフォルトの名無しさん:2008/10/21(火) 00:52:40
BOM無いと読めないなんて使えるとは言わない

840 :デフォルトの名無しさん:2008/10/21(火) 01:00:52
つーかもう9x対応とかいいだろ
APIはW版決めうちでいいよ

テキスト処理でサロゲートだの正規化だのにマジメに対応するかどうかは
また別の問題

841 :デフォルトの名無しさん:2008/10/21(火) 01:05:32
MSLUでなんとかなるしな

842 :デフォルトの名無しさん:2008/10/21(火) 01:23:22
> テキスト処理でサロゲートだの正規化だのにマジメに対応するかどうかは
> また別の問題

だったらANSIでいいだろ
無駄にUnicode化しても文字列でメモリ2倍食うだけだぞ?

843 :デフォルトの名無しさん:2008/10/21(火) 01:27:23
変な記号とか余計な漢字(BMP内)が使えるだけでも十分魅力的。

844 :デフォルトの名無しさん:2008/10/21(火) 01:28:57
記号なんかGDI関数使って自分で描けよ

845 :デフォルトの名無しさん:2008/10/21(火) 01:31:35
ExtTextOutWですね、分かります。

846 :デフォルトの名無しさん:2008/10/21(火) 01:40:30
いずれwchar_tって4バイトになるんか?

847 :デフォルトの名無しさん:2008/10/21(火) 01:42:54
>>842
何だそれ……
2000年問題レベルの発想だな

メモリケチって仕様劣化か
CP932外の文字が入ってるとファイルすら開けない糞アプリの出来上がりね


848 :デフォルトの名無しさん:2008/10/21(火) 02:06:52
>>847
お前が韓国人か中国人かは知らんが、CP932外の文字なんて日本人ならそう使わない

849 :デフォルトの名無しさん:2008/10/21(火) 02:16:51
>>848
このネット時代に何言ってんだよ
それに、iTunesあたりでCDリップすると普通にUnicodeなファイル名が
使われるぞ

850 :デフォルトの名無しさん:2008/10/21(火) 02:21:06
つまりこういうこと:

韓国人「Unicodeに対応するニダ!」


ハングル文字は結構な領域占めてるからな・・・

851 :デフォルトの名無しさん:2008/10/21(火) 02:22:27
アホか。ウムラウトだのアクサンだのすら使えねえんだよCP932じゃ。
脳内が20年ぐらい前で止まってんじゃねえのか?

852 :デフォルトの名無しさん:2008/10/21(火) 02:24:13
>>851
なんだ、やっぱ韓国人だったのかw
図星突かれてそんなの持ち出さなくていいから。

853 :デフォルトの名無しさん:2008/10/21(火) 02:24:56
ウムラウトやアクサンの意味も知らんらしいな

854 :デフォルトの名無しさん:2008/10/21(火) 02:27:15
>>853
韓国から話題を逸らすためにわざわざググってきたんですね、分かります

855 :デフォルトの名無しさん:2008/10/21(火) 02:28:12
韓国ネタで煽れば自分の馬鹿を隠せるとでも思ってるらしいな
まあ頑張れ

856 :デフォルトの名無しさん:2008/10/21(火) 02:31:43
これからもCP932で頑張りますよ
日本人ですから。

857 :デフォルトの名無しさん:2008/10/21(火) 02:32:46
日本語の文字集合も拡張されているんだが……
記号もあるしな

858 :デフォルトの名無しさん:2008/10/21(火) 02:43:01
日本人って偉いよなぁ・・・
海の向こうじゃUnicodeどころかASCII以外の文字が混ざってるだけでバグるソフトがまだまだあるのにな

859 :デフォルトの名無しさん:2008/10/21(火) 02:46:33
というか日本人のプログラマのくせにCP932でいいと思ってる奴が
まだいることに驚きだ
SJISの糞な仕様のおかげで散々痛い目見てきただろうに

860 :デフォルトの名無しさん:2008/10/21(火) 02:48:46
そこでEUCですよ

861 :デフォルトの名無しさん:2008/10/21(火) 02:49:53
技術無知だけに人種批判しか出来ないんだね
>>848>>850>>852>>854もう少し勉強して心を豊かにしようよ

862 :デフォルトの名無しさん:2008/10/21(火) 02:52:01
勉強しても知識が豊かになるだけで心は豊かになりません

863 :デフォルトの名無しさん:2008/10/21(火) 02:57:49
>>860
EUCもleadbyteとtailbyteの区別がつかないからダメ

864 :デフォルトの名無しさん:2008/10/21(火) 03:03:27
数年後には UCS-2 vs UCS-4 で荒れるのかな……

865 :デフォルトの名無しさん:2008/10/21(火) 03:13:24
Unicodeは日本の文字に関しては、上位互換を保ち続けて欲しいね。
ハングル大移動みたいなのは勘弁な。

866 :デフォルトの名無しさん:2008/10/21(火) 03:16:24
>>850
問題はそのいきさつにある
奴らは割り当てられた分を超えて勝手にハングルを追加して
しかも委員会が後付でそれを承認しちまったのさ
そんなわけでUnicodeには法則発動
あぼーん

867 :デフォルトの名無しさん:2008/10/21(火) 05:01:58
邦楽だとダイアクリティカルマークは少ないが、ハートマークが曲者だ…

868 :デフォルトの名無しさん:2008/10/21(火) 07:22:20
このスレ読んで、.NET Frameworkへ乗り換える決心した人は多いと聞く。

869 :デフォルトの名無しさん:2008/10/21(火) 10:23:33
俺のことか

870 :デフォルトの名無しさん:2008/10/21(火) 10:52:24
C++/CLIっていいらしいね。

871 :デフォルトの名無しさん:2008/10/21(火) 12:15:05
つうかおまいら.NETやらずにあえてWin32APIをやる意義を、どこへ位置づけているんだ?


872 :デフォルトの名無しさん:2008/10/21(火) 12:29:35
つうかおまいら.NETやらずにあえてWin32APIをやる意義を、どこへ位置づけているんだ?


873 :デフォルトの名無しさん:2008/10/21(火) 12:30:36
マイクロソフトへの抵抗

874 :デフォルトの名無しさん:2008/10/21(火) 12:48:57
何で俺は2度言ったんだ?

875 :デフォルトの名無しさん:2008/10/21(火) 12:53:12
宇宙の法則の乱れ

876 :デフォルトの名無しさん:2008/10/21(火) 13:47:43
大事なことなので。

877 :デフォルトの名無しさん:2008/10/21(火) 13:49:46
たまたま別の人が同じ疑問を持ったんだろう

878 :デフォルトの名無しさん:2008/10/21(火) 14:01:20
たまたま別の人が同じ疑問を持ったんだろう

879 :デフォルトの名無しさん:2008/10/21(火) 14:03:58
コピーロボットかよ

880 :デフォルトの名無しさん:2008/10/21(火) 14:09:20
パーマン2号

881 :デフォルトの名無しさん:2008/10/21(火) 15:27:29
ウィンドウハンドルからウィンドウが表示状態か非表示状態かを知るAPIを教えてくださいよ

882 :デフォルトの名無しさん:2008/10/21(火) 15:28:14
IsWindowVisibleううううううううううううううううううううううううううううう

883 :デフォルトの名無しさん:2008/10/21(火) 16:40:51
WinMainの引数のインスタンスハンドルって、プログラムごとに
ユニークなんだよね?じゃあいくつも同じプログラムを起動しても
インスタンスハンドルは同一になるの?

884 :デフォルトの名無しさん:2008/10/21(火) 16:52:31
>>883
ユニークだったのは16bitの頃の話。
32bitになってからは、hInstanceはどのプロセスでも同じ値。

なぜ同じ値なのか、hInstanceの正体は何なのか知りたくなったら
Advanced Windowsでも嫁。

885 :デフォルトの名無しさん:2008/10/21(火) 17:25:35
普通に作れば同じ値になるだけでどのプロセスでも必ず同じ値というわけではない


886 :デフォルトの名無しさん:2008/10/21(火) 18:16:05
普通に作ったら同じ値になるだけなんだよ。どのプロセスでも一緒とは限らないよ

887 :デフォルトの名無しさん:2008/10/21(火) 18:32:08
最近言い換えが流行ってるのかw

888 :デフォルトの名無しさん:2008/10/21(火) 19:13:56
最近普通に作ったら言い換えが同じになるだけで流行ってるプロセスもwとは限らない

889 :デフォルトの名無しさん:2008/10/21(火) 19:43:15
>>884
つまり、メモ帳のプロセスとペイントのプロセスが同じ値を持っているということ?

890 :デフォルトの名無しさん:2008/10/21(火) 19:56:33
>>889
dumpbin /headers %systemroot%\system32\notepad.exe | findstr /c:"image base"
dumpbin /headers %systemroot%\system32\mspaint.exe | findstr /c:"image base"

891 :デフォルトの名無しさん:2008/10/21(火) 20:05:23
> 32bitになってからは、hInstanceはどのプロセスでも同じ値。
Advanced Windowsを読むとこんな間違った知識が身につくの?

892 :デフォルトの名無しさん:2008/10/21(火) 20:07:44
概ねベースアドレスの値になるだけで確定じゃないだろ
競合したら再配置されるし

893 :デフォルトの名無しさん:2008/10/21(火) 20:15:28
ASLR

894 :デフォルトの名無しさん:2008/10/21(火) 20:19:23
dumpbinなんてコマンド通らないど

895 :デフォルトの名無しさん:2008/10/21(火) 20:20:03
AdvancedWindowsというか、The Old New Thingの話題だな。>HINSTANCE.
http://blogs.msdn.com/oldnewthing/archive/2004/06/15/156022.aspx

896 :デフォルトの名無しさん:2008/10/21(火) 20:22:12
>>894
VisualStudioに付いてるだろ

897 :884:2008/10/21(火) 20:25:01
>>885-896
知らないならレスしないでください

898 :デフォルトの名無しさん:2008/10/21(火) 20:29:42
cl t.c /link /base:0x12340000

#include <stdio.h>
#include <windows.h>

int main()
{
printf("%p\n", (void*)GetModuleHandle(0));
}

899 :デフォルトの名無しさん:2008/10/21(火) 20:34:23
>>898
mainに返値が無い
void*へのキャストは不要

900 :デフォルトの名無しさん:2008/10/21(火) 20:37:56
>mainに返値が無い
これはC++プログラムだ!という弁解がくるに100ゲイツ

901 :デフォルトの名無しさん:2008/10/21(火) 20:41:14
いや1行目のコマンドラインを見れば分かるようにCだ。すまん、ついC++ののりでやっちまった。

902 :デフォルトの名無しさん:2008/10/21(火) 20:44:14
現在のウインドウの幅の座標とか取得する方法ありますか?

903 :デフォルトの名無しさん:2008/10/21(火) 20:44:59
dumpbinで見られるような情報の意味を知るにはやはり
Advanced Windows読むの?

904 :デフォルトの名無しさん:2008/10/21(火) 20:45:36
>>902
GetWindowRectでいい?

905 :デフォルトの名無しさん:2008/10/21(火) 20:52:24
>>904
ありがとうございました。

906 :デフォルトの名無しさん:2008/10/21(火) 21:28:20
>>892
EXEだと普通は再配置不可になるからそれはない。
http://msdn.microsoft.com/ja-jp/library/w368ysh2.aspx

907 :デフォルトの名無しさん:2008/10/21(火) 22:01:21
>>897
知らないのにレスしないでください

908 :デフォルトの名無しさん:2008/10/21(火) 22:28:21
>>906
それはVCの話だろ
Delphi製EXEなんかだと再配置可能になってるぞ

909 :デフォルトの名無しさん:2008/10/21(火) 22:35:50
exeでも/baseで任意に変更できるじゃん。変更する意味があるかどうかは別だが。

てゆーかAdvanced WindowsにもhInstanceが固定なんて一言も書かれてない。
hPrevInstanceと勘違いしてねーか?

910 :デフォルトの名無しさん:2008/10/21(火) 23:12:15
ローカルPCのネットワークトラフィック量と回線速度をプログラムで取得する方法を探しています(開発言語はCを予定しています)
とりあえず、トラフィック量のほうはnetstat -eで取得できそうなことはわかりましたが、プログラムで利用するAPIをどう探せばよいのかわからず悩んでいます
また、回線速度のほうは取得するコマンドすらわかりません
上記の解決方法についてアドバイスいただけないでしょうか?
また、Win32APIの検索のコツなども教えていただければ助かります

当方プログラム経験はそれなりですがWin32API初体験のものです

よろしくお願いいたします

911 :デフォルトの名無しさん:2008/10/21(火) 23:15:18
ローカルPCなのにネットワークとはこれいかに?

912 :デフォルトの名無しさん:2008/10/21(火) 23:19:58
パフォーマンスモニタ
http://msdn.microsoft.com/ja-jp/library/cc429248.aspx

NICを通ったパケット数ならPSAPIのGetIfEntryとかで見れる気がする

913 :デフォルトの名無しさん:2008/10/21(火) 23:24:53
PSAPIじゃねーや
IPHLPだった
しかもGetIfTableじゃ駄目だな

914 :デフォルトの名無しさん:2008/10/21(火) 23:28:56
あれ使えばいいんじゃね
なんだっけ
PCap?

915 :デフォルトの名無しさん:2008/10/21(火) 23:44:24
GetIfEntryかGetIfTableでMIB_IFROW見ればだいたい必要な情報得られると思うが。
回線速度に関してはダイヤルアップとかだとそもそもWindowsがまともな値認識してなかったりするがそれはそれ。

916 :デフォルトの名無しさん:2008/10/21(火) 23:50:59
今時ダイヤルアップてw

917 :デフォルトの名無しさん:2008/10/21(火) 23:55:12
Win32APIアプリの開発をVS2008とかのIDE上でするメリットってなんですか?

918 :デフォルトの名無しさん:2008/10/21(火) 23:58:04
Win32APIだから特別にということは別にないけど。
別にただのコンソールアプリでもIDE使うし。

919 :デフォルトの名無しさん:2008/10/21(火) 23:58:19
いきなりデバッグできる

920 :917:2008/10/22(水) 00:06:31
>>918-919
ありがとうございました。
実はIDE(アカデミック)買おうかどうか迷ってるんですけど、たとえば、
Win32APIって、デファインで定義された定数がいっぱいありますけど、
ああいうのってインテリセンスとかで候補から選べたりできますか?
それだとすごくありがたいんですが。

921 :デフォルトの名無しさん:2008/10/22(水) 00:11:33
出るけど多すぎて便利には感じられないなあ
EEでも試せるからやってみては

922 :デフォルトの名無しさん:2008/10/22(水) 00:31:06
全角英字キモイ

923 :917:2008/10/22(水) 00:33:47
>>921-922
ありがとうございました。
EEってタダのやつですね。ちょっと試してみます。

924 :デフォルトの名無しさん:2008/10/22(水) 00:36:31
全角と半角が混ざってるのがキモイ。

925 :デフォルトの名無しさん:2008/10/22(水) 00:39:39
とりあえずデフォルトだと何も入れない状態でもCtrl+Jで出るが、一度コンパイルは必要

926 :デフォルトの名無しさん:2008/10/22(水) 00:50:58
>>920
学生でVS欲しいだけなら、DreamSparkのほうが安いぞ。

927 :デフォルトの名無しさん:2008/10/22(水) 07:42:30
そういやDreamSparkって先進国の中でも日本は提供が遅かったよな
少し昔まではMSの技術情報なんて英語と日本語ぐらいだったのに今や日本語は機械翻訳だらけだし
もう日本なんてMSの眼中に無いのかな・・・

928 :デフォルトの名無しさん:2008/10/22(水) 07:55:59
機械翻訳だらけって、そもそも以前は殆ど英語版しかなかったじゃないか。

929 :デフォルトの名無しさん:2008/10/22(水) 08:04:17
日本語版もあっただろ
SDKヘルプとか

930 :デフォルトの名無しさん:2008/10/22(水) 08:59:30
日本が遅れたのは学生証の問題だし
たいした差もなかったのに何言ってんだか

931 :デフォルトの名無しさん:2008/10/22(水) 10:32:32
何言ってんだか

932 :デフォルトの名無しさん:2008/10/22(水) 10:56:24
新手のスパムみたいだな

933 :デフォルトの名無しさん:2008/10/22(水) 13:18:29
俺も学生のとき無理して高いVC++買ったけど、ぜってぇ学生時分なんて
Express Editionで事足りるんだよなw
どうせすぐに新しいバージョンのVC++出るし。

934 :デフォルトの名無しさん:2008/10/22(水) 13:23:35
俺が学生だった当時、無料版はなかった・・・
今の世の中は幸せなことだ

935 :デフォルトの名無しさん:2008/10/22(水) 14:07:31
PlgBltで描画する画像を透過したいんですが
引数に指定するマスクのHBITMAPの作り方はどうやるんですか?

936 :デフォルトの名無しさん:2008/10/22(水) 14:12:23
ペイントで描いた絵をLoadImageすれば?

937 :デフォルトの名無しさん:2008/10/22(水) 14:16:15
マスクは手作業で作るか、特定の色を定義して元のビットマップから作る方法とある

938 :デフォルトの名無しさん:2008/10/22(水) 14:48:38
HBITMAPの変数で
CreateBitmapの戻り値を、受け取ればそれでもう作れてるんでしょうか?
いろいろ関数があって全然わからないんです

なるべく手作業で作りたいです。透過色の設定が楽そうなので

939 :デフォルトの名無しさん:2008/10/22(水) 15:34:43
フォントサイズの計算についての質問です。
高さと幅が一緒で数字2桁までしか入力できないようにした、
EDITコントロールがあります。

そのEDITコントロールの幅を変更した時、
一緒に、フォントサイズも自動で、
数字2桁を表示できる最大のものに設定されるようにしたいと思っています。

調べてみた限り、似たようなものが見付からなかったので質問させていただきました。

940 :デフォルトの名無しさん:2008/10/22(水) 15:38:00
計算すればいい

941 :デフォルトの名無しさん:2008/10/22(水) 15:39:17
>>938
手作業つーのはペイントツールで作るってことだよ。
自動でやるなら、BitBltのラスターオペレーションと前景色や背景色の設定で
数回コピーしてつくるんだけど、長くなるからググったりしてくれ。

942 :デフォルトの名無しさん:2008/10/22(水) 15:48:51
確認なんですが、、
HBITMAPを作って、指定したら、
そのあとは
PlgBlt関数に当てはめるだけで透過はできるんですよね?
それともPlgBltのあとにさらにBltBltやったりしますか?

943 :デフォルトの名無しさん:2008/10/22(水) 15:50:11
手作業をちょっと勘違いしました
ソースを書くほうかと。

944 :939:2008/10/22(水) 16:00:27
>>940
計算しようと思って、幅に対するフォントサイズを取ってみた結果、
それでも計算式が思いつかなかったので質問してみたのです。

945 :デフォルトの名無しさん:2008/10/22(水) 16:21:43
プロポーショナルフォントでない事を前提とすれば

フォントを作る

デバイスコンテキストに渡す

GetTextExtentPoint32で幅を取る

エディットボックスの幅(実際に描画される幅に調整しておく)と比較

とか?

946 :939:2008/10/22(水) 16:47:37
>>945
関数の説明を見てきたら使えそうだと思いました。
さっそく試してみようと思います。
ほんとうにありがとうございます。

947 :デフォルトの名無しさん:2008/10/22(水) 17:07:38
これから質問するのですが知らない人はレスしないで下さいね

948 :デフォルトの名無しさん:2008/10/22(水) 17:13:51
>>947
ありません!

949 :947:2008/10/22(水) 17:40:22
自己解決しました。
ありがとうございます。

950 :947:2008/10/22(水) 17:45:20
まだ解決してません
これから質問するのですが知らない人はレスしないで下さいね

951 :947:2008/10/22(水) 17:46:59
知ってる人もレスしないで下さいね

952 :947:2008/10/22(水) 18:02:56
偽者いっぱいwwww

953 :デフォルトの名無しさん:2008/10/22(水) 20:40:36
右クリック 左クリックが クリックされたときに
おくられてくるメッセージってなんだっけ?


954 :デフォルトの名無しさん:2008/10/22(水) 20:42:35
>>953
これだけ引っ張って質問はこれですか?

955 :デフォルトの名無しさん:2008/10/22(水) 20:47:11
WM_LBUTTONDOWN
この辺検索したらわかるだろ・・・。

956 :デフォルトの名無しさん:2008/10/22(水) 20:48:09
WM_LBUTTONCLICKED
WM_RBUTTONCLICKED

957 :デフォルトの名無しさん:2008/10/22(水) 23:25:59
試しに WM_BUTTONDOWN でググってみたら、グーグル先生に
「もしかして: WM_LBUTTONDOWN」
て言われた。

958 :デフォルトの名無しさん:2008/10/22(水) 23:31:03
クリック判定はBUTTONUPのほうだろ常識として。

959 :デフォルトの名無しさん:2008/10/22(水) 23:39:39
両方見ろ

960 :デフォルトの名無しさん:2008/10/23(木) 00:14:52
WM_CLICKだけでいいよ

961 :デフォルトの名無しさん:2008/10/23(木) 00:44:01
UpdateWindow関数って、ペゾルドによれば、WM_PAINTメッセージを発生
させて、クライアント領域を描画するとあるけど、この関数を呼ばずに
ShowWindow関数だけでやっても、ちゃんとクライアント領域に意図した
描画がなされるのだが、UpdateWindow関数って何の意味があるの?

962 :デフォルトの名無しさん:2008/10/23(木) 00:47:21
WM_PAINTって優先順位低いから他のメッセージがあると後回しにされる
UpdateWindowするとその場でWM_PAINT送ってくれる。

963 :デフォルトの名無しさん:2008/10/23(木) 00:50:17
じゃあCreateWindow後に、UpdateWindow無しに自動でWM_PAINTが発行される
仕様なの?

964 :デフォルトの名無しさん:2008/10/23(木) 00:52:19
>>963
WM_PAINT自体は必要とあらば生成されるものなので、まあそんな感じ。
CreateWindowではなく、ShowWindowが引き金だろうけど。

965 :デフォルトの名無しさん:2008/10/23(木) 00:53:26
WM_PAINTそのものは無効領域ができれば発生するよ。
CreateWindow直後は全体が無効領域になってるから当然WM_PAINTは送られる。
InvalidateRect呼んだり、ウィンドウリサイズしたり、他のウインドウで隠した後、上に持ってきても発生するし。

966 :デフォルトの名無しさん:2008/10/23(木) 01:45:04
そうですか、どうもです。
UpdateWindowの意味は薄いけど、念のためという感じみたいですね。

967 :デフォルトの名無しさん:2008/10/23(木) 01:59:45
WM_PAINTは何もしなくても2秒に1回発行される・・・じゃなかったっけ
うるおぼえだが

968 :デフォルトの名無しさん:2008/10/23(木) 02:38:10
うろおぼえな

969 :デフォルトの名無しさん:2008/10/23(木) 02:50:30
うろおぼえほどの真剣さすらないのだよ
そんなうるおぼえ

970 :デフォルトの名無しさん:2008/10/23(木) 03:10:06
うるおぼえワロチwwww

971 :942:2008/10/23(木) 03:49:48
誰か回答おねがいします



972 :942:2008/10/23(木) 03:58:31
自己解決しました

973 :デフォルトの名無しさん:2008/10/23(木) 04:07:41
偽物であるに200うるおぼえ

974 :デフォルトの名無しさん:2008/10/23(木) 05:04:21
やばい まじやばい なんかうるおぼえてきた

975 :942:2008/10/23(木) 05:48:06
質問に答えられない人はレスしないで

976 :デフォルトの名無しさん:2008/10/23(木) 06:43:22
>>942
やってみろよ
大きく間違ってたら指摘してるよ

つーかアクセス規制うぜえ・・・

977 :942 ◆FjOpeTE2Ts :2008/10/23(木) 06:58:01
ここで行き詰ってます
BackDCは裏バッファです

PlgBltにmBmpを指定しなければ、透過なしで描画されるのですが
PlgBltにmBmpを指定すると何も表示されません

なので、PlgBltのあとに、何かやらなきゃいけない? とか思ったのですが、、
それともマスクの作り方が間違っているのでしょうか?
ご教示お願いします

///マスク作成
HDC mDC;
HBITMAP mBmp = CreateBitmap( 150, 150, 1, 1, NULL );
SelectObject( mDC, mBmp );

///描画
POINT point[3] = { { 0 , 0 } , { 150 , 0 } , { 0 , 150 } };
PlgBlt( BackDC , point , g , 0 ,0 , 150, 150 , mBmp , 0 , 0);

978 :デフォルトの名無しさん:2008/10/23(木) 07:08:19
何だ、ただのマルチか。
http://oshiete1.goo.ne.jp/qa4420865.html

979 :デフォルトの名無しさん:2008/10/23(木) 07:43:10
マスクについては話にならないレベルだからググれ
携帯じゃこれが精一杯

980 :942 ◆FjOpeTE2Ts :2008/10/23(木) 08:34:25
わかりました。あとはぐぐってみます

最後にこれだけ教えてください
PlgBltの後ろに処理はいらないんですよね?

981 :デフォルトの名無しさん:2008/10/23(木) 09:31:40
いらん、マスクされてる部分以外を転送するからな。

982 :デフォルトの名無しさん:2008/10/23(木) 09:54:27
◆FjOpeTE2Ts に一致する日本語のページ 約 20,900 件

何こいつ・・・

983 :デフォルトの名無しさん:2008/10/23(木) 10:17:39
>>981
ありがとうございます。
あとはぐぐってみます。

984 :デフォルトの名無しさん:2008/10/23(木) 13:33:21
すみません。OLEとかCOMっていうのをやってみたいんですが、
本が出版されていません(とくにOLE)。お勧めの本を教えてください。

985 :デフォルトの名無しさん:2008/10/23(木) 13:49:17
今ならActiveXで探さないとみつからないかもな

986 :デフォルトの名無しさん:2008/10/23(木) 13:50:01
出版されてないものを勧めろとな

987 :デフォルトの名無しさん:2008/10/23(木) 14:25:05
hWnd = CreateWindowEx(0,szWindowClass, szTitle, WS_POPUP|WS_VISIBLE, 0, 0, 1600, 1200, NULL, NULL, hInstance, NULL);
でフルスクリーンのPOPUPウィンドウを作成します。
このとき言語バーが消えてしまいます。
言語バーを消さない方法を知っている人教えて
ちなみにWidthを1600から1599に変更すると消えません。
OSは、XPです。


988 :デフォルトの名無しさん:2008/10/23(木) 14:48:55
>>987
>ちなみにWidthを1600から1599に変更すると消えません。
じゃあそれでいいじゃん。

989 :デフォルトの名無しさん:2008/10/23(木) 14:57:00
>>988
だめだから質問している。
そんなもんアプリケーションとしておかしいだろ





990 :デフォルトの名無しさん:2008/10/23(木) 15:01:21
>>987>>989
こんなソースじゃ1920×1200のモニタだったりマルチモニタだったりするとフルスクリーンにならないだろ
おかしいのはお前だ馬鹿

991 :デフォルトの名無しさん:2008/10/23(木) 15:02:03
おれもそう思うw

992 :デフォルトの名無しさん:2008/10/23(木) 15:07:39
能書きはいいからさっさと教えろ。
役に立たない連中だな

993 :デフォルトの名無しさん:2008/10/23(木) 15:13:30
>>990
1600×1200は、問題を単純化のためで
実際は、DirectDrawMultiMonitorInfoでスクリーンサイズを計算している。


994 :デフォルトの名無しさん:2008/10/23(木) 15:14:26
ShowWindowで最大化しないのは何か理由があるの?

995 :デフォルトの名無しさん:2008/10/23(木) 15:26:11
ShowWindowで最大化の意味がわかりません。
WS_MAXIMIZEは、使っていません。
SPY++で調べると、言語バーにShowWindowのSW_HIDEが発生しています。

996 :デフォルトの名無しさん:2008/10/23(木) 15:28:56
>>995
使わない理由は何?
マルチモニタだから?

997 :デフォルトの名無しさん:2008/10/23(木) 15:38:01
WS_MAXIMIZEでは、タスクバーを覆い隠すことが出来ないからです。
タスクバーは隠して、言語バーだけ表示したいのです。


998 :デフォルトの名無しさん:2008/10/23(木) 15:49:27
言語バーが隠れるってこと?自分で持ってきちゃいかんかね。

999 :デフォルトの名無しさん:2008/10/23(木) 15:59:28
Win32API質問箱 Build71
http://pc11.2ch.net/test/read.cgi/tech/1224745158/

1000 :デフォルトの名無しさん:2008/10/23(木) 16:03:05
1000

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

199 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)