Win32API質問箱 Build70

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
スレ立てるまでもない、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
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
5デフォルトの名無しさん:2008/09/15(月) 11:39:15
6デフォルトの名無しさん:2008/09/15(月) 11:40:01
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としてセットする。
1513: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コントロールの方がまだましな気がする。
2119: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に変更する理由など無い
2826: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で実装しました。
リファレンスが完全英語なので見落としたのかもしれませんが
音量調節のインタフェースはなかった気がします…。
4012: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
8583: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
矢印キー
121119: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
140132:2008/09/21(日) 19:45:54
自己解決。英語版MSDN調べてたらまんまDebugBreakProcessってのがあった。
141138: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
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 BE:417694043-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 BE:628172036-2BP(50)
>>199
どう上手くいかないのかを書いてくれないと・・・
コンパイル通らないならエラー内容を。
211マジレスチュウ ◆MaJi/01g.w :2008/09/25(木) 00:51:12 BE:1675123586-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+で縦横が同じでないアイコンを読み込んだらメモリアクセス違反で落ちてたな
さすがにもう修正されてるとは思うが
221sage: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
坊やエスパー解答は?
238178: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で何にもしてないんじゃない?
243241: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 BE:1570428195-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バイトのポインタもあって、そっちが普通だったんだよ
258255: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)
とまったく同じ挙動にしたいんだけど
どういう処理してるんでしょうか
302301: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系にはローカルポリシー無かったと思うが
319301: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
アフォ?呼び出し規約無視すんなよ
325301: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
お前またフォント選択するの忘れただろ
329301: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
俺だよ俺
400382: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
408406: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で描画以外の事をするな
411409: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だけ呼んで、
無効化領域の有効化だけしておけばいい。
後で描画するつもりなら、その瞬間はグチャグチャのまま放置でも全然問題無いし。
414409: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;
みたいな?
415409:2008/10/03(金) 21:20:50
続けていろいろすまん
CreateCompatibleDCで確保したデバイスコンテキストハンドルは解放するべき?
解放するときってReleaseDC使えばおk?
416デフォルトの名無しさん:2008/10/03(金) 21:21:37
>>415
はい
417409: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読めよ
422409:2008/10/03(金) 22:46:23
ダブルバッファリング実装してみたが画面は真っ白で上手く動かなかったので、今後の研究課題にして
とりあえず>>413の方法を採らせてもらった
>>412 >>413 >>416どもでしたー
423409: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幅だから二つ同時って訳にもいかないから、相対的に遅いだけか。
462459=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()
491489:2008/10/09(木) 18:43:01
>>490
お答えありがとうございます。
上位クラスの実装が WNDPROC での実装のため、
CreateDialog[Indirect][Param] では問題があるのです。
WNDPROC を DLGPROC へ強引にキャストしても
問題ないのでしょうか?
492デフォルトの名無しさん:2008/10/09(木) 19:27:51
ダイアログテンプレートを使ったうえで、DefWndProcを呼ぶウィンドウプロシージャを使いたいってこと?
んー、、、
493489: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割ほどの高速化が可能
496489: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) ウィンドウハンドルからクラスを検索するなりなんなりして、その自分のウィンドウプロシージャから上位クラスの実装とやらを呼ぶ
498489: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って書いたんですけど、わかりにくくてすいません。
526523: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デフォルトの名無しさん
なんだその中途半端な回答はwwラグてww
まぁ>>531で十分だわな。