トップページ⇒tech
1001コメント283KB

Win32API質問箱 Build19

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG
スレ立てるまでもない、Win32APIについての質問はこちらへどうぞ。
ただし、最新スレくらいは質問する前に検索してくれ。というかしろ。

過去スレなどのリンクはたぶん>>2-5くらい。
0002デフォルトの名無しさんNGNG
- 過去スレ
Build18:http://pc5.2ch.net/test/read.cgi/tech/1081702990/
Build17:http://pc5.2ch.net/test/read.cgi/tech/1077470361/
Build16:http://pc2.2ch.net/test/read.cgi/tech/1073830065/ ★
Build15:http://pc2.2ch.net/test/read.cgi/tech/1069339866/ ★
Build14:http://pc5.2ch.net/tech/kako/1065/10653/1065328397.html
Build13:http://pc5.2ch.net/tech/kako/1059/10595/1059549320.html
Build12:http://pc5.2ch.net/tech/kako/1056/10560/1056033645.html
Build11:http://pc5.2ch.net/tech/kako/1052/10526/1052651750.html
Build10:http://pc5.2ch.net/tech/kako/1047/10478/1047819779.html
Build9:http://pc5.2ch.net/tech/kako/1044/10449/1044929160.html
Build8:http://pc5.2ch.net/tech/kako/1040/10409/1040964626.html
Build7:http://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
Build6:http://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
Build5:http://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
Build4:http://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
Build3:http://pc.2ch.net/tech/kako/1017/10170/1017072275.html
Build2:http://pc.2ch.net/tech/kako/1006/10067/1006783012.html
Build1:http://pc.2ch.net/tech/kako/991/991576947.html
(★は「いやー ごめんなさい。」に巻き込まれた模様)

- MSDN Online
http://www.microsoft.com/japan/msdn/default.asp
- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/index.html
- Platform SDK Update
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
- Google
http://www.google.com
0003デフォルトの名無しさんNGNG
乙
0004デフォルトの名無しさんNGNG
Win32 API入門
http://black.sakura.ne.jp/~third/system/winapi/win.html
WIN32 Programming
http://www7.plala.or.jp/keny01/win32/
Win32 SDK Programming
http://usr_vogel.at.infoseek.co.jp/Win32SDK/index.html
WindowsSDK入門
http://kerochan.no-ip.com/vcsdk/letsprog/letsprog-index.htm
0005デフォルトの名無しさんNGNG
すんません、質問。
今下記のようにしてMCIでwavを開いてるんですが、これだと実行時にwavを読みます。

//hoge.c
static MCI_OPEN_PARMSgst_mop;
gst_mop.dwCallback = (DWORD)g_hWnd;
gst_mop.lpstrDeviceType = (LPCSTR)MCI_DEVTYPE_WAVEFORM_AUDIO;
gst_mop.lpstrElementName = "wav/sentaku.wav";
iErr = mciSendCommand(0 , MCI_OPEN , MCI_OPEN_TYPE |
  MCI_OPEN_TYPE_ID | MCI_OPEN_ELEMENT , (DWORD)&gst_mop);

実行時読みじゃなくてリソースにしたいんですけど、どうやったらいいんでしょう?
試しに下記のようなことをしてみましたがだめでした。

//hoge.rc
WAV_SENTAKU WAVE "wav/sentaku.wav"

//hoge.c
gst_mop.lpstrElementName = "WAV_SENTAKU";
0006デフォルトの名無しさんNGNG
MCIはファイルから読み込む仕様です
0007デフォルトの名無しさんNGNG
>>6
なるほど、どうりでぐぐっても見つからないわけだ。
ありがとうございました。
0008デフォルトの名無しさんNGNG
Win9xでexeのアイコンにファイルを吸わせた場合はちゃんと動作するのに
Win2kだと同じやり方では誤動作してしまうプログラムがあるので、GetCommandLineで
調べたときに9x系と同じ渡し方をする、橋渡し的なプログラムを作ってみたのですが
どうも失敗します。

実際に調べた結果、Windows98ではexeアイコンにファイルを落とすと、

    二重引用符で囲ったexe名+半角スペース+8.3形式表記のファイル名

のようになると判断していますが、この認識ではまずいのでしょうか?
0009デフォルトの名無しさんNGNG
>>8
まずいです。
というか、DnDでの起動しか考慮に入れていない?
他のアプリケーションから起動されることもあるかも知れないし。

で、解決策としては、長いファイル名も短いファイル名も受け取れるようにしておく。
0010デフォルトの名無しさんNGNG
INIファイル内で正式なコメントの書き方ってありますか?
今は
; Ident=Value
とかやるとたまたまIdentで取得できなくなることを利用しているんですが。
0011デフォルトの名無しさんNGNG
>>9
多分有名だと思うので書きますが、そのプログラムはRarUtyです。
win98を使っていたときは「送る」にショートカットを置いていて、ファイルの
右クリックメニューから送るとそのファイルが選択されるのですが、
windows2000、xpだと必ずそのフォルダの最初のファイルが選択されてしまうので、
どうにかして回避しようと思いました。
そこで、SendToに置くショートカットをRarUty本体のものではなく、
今回自作したプログラムのものにして、自作プログラムで整形したコマンドライン
引数を与え、間接的に実行することでこの不具合を避けられると考えたのです。

すいません、説明が長くなりました。
あと、書きながら思いついたのですが、RarUtyの元であるVBに
NT系だとコマンドラインまわりがうまく動作しない、などという仕様があるような
気もしました。
0012デフォルトの名無しさんNGNG
>>10
たまたまじゃなくて、それが正しいコメント記述方法かと

GetPrivateProfileSection()の解説部分にも
「セミコロン(;)で始まるコメント行は〜」なんて書かれてるし
0013デフォルトの名無しさんNGNG
.NET FrameworkクラスライブラリのControlPaint.DrawButtonに相当する
Win32APIってありますか?
0014デフォルトの名無しさんNGNG
DrawFrameControl
0015デフォルトの名無しさんNGNG
質問の仕方になんかジェネレーションギャップを感じたよ・・・
0016デフォルトの名無しさんNGNG
.NETの足音が聞こえてくるよ
0017デフォルトの名無しさんNGNG
longhornが出たらな。
0018デフォルトの名無しさんNGNG
したばったするぅなよぉ
どとねっとが、くぅるぜ
0019デフォルトの名無しさんNGNG
nainai16.NET
0020デフォルトの名無しさんNGNG
OSは、WIN2000で、現在起動している他のプロセスの
読み込んでいるDLLを知る方法はないでしょうか?。
0021デフォルトの名無しさんNGNG
Dependency Walker
0022デフォルトの名無しさんNGNG
>21
ありがとうございます。このプログラムのようなことを実現しようとすると
どんなAPIを使用すればいいのでしょうか?
0023デフォルトの名無しさんNGNG
>>20
ms-help://MS.PSDK.1033/perfmon/base/enumerating_all_modules_for_a_process.htm
0024デフォルトの名無しさんNGNG
メニューのオーナードローに挑戦しています。
通常の項目のオーナードローには成功したのですが、
MF_OWNERDRAWとMF_POPUPを同時に指定した項目だけは、
WM_DRAWITEMが来ないようで描画に失敗します。
MF_POPUPのオーナードローは出来ないのでしょうか?
0025デフォルトの名無しさんNGNG
カレットかスクロールバーを移動させないようにするには
どうしたらいいんでしょうか。

0026デフォルトの名無しさんNGNG
>>24
少なくとも俺のところではできてます。
>>25
?
何をやりたいのやら?
0027デフォルトの名無しさんNGNG
"Default"フォントというフォントがありますが、
WinXPだと、これはどこで設定されるんでしょうか?
APIから読んだり書いたりも出来ますか?
0028デフォルトの名無しさんNGNG
>>27
「"Default"フォント」なんてあるか?
Exploereなどに使われてるフォントと言う意味でなら、何かしら
指定されてるのがあると思うが、そんな名前のフォントは無いと思う。

少なくとも俺のマシンのfontsフォルダには無いな。
0029デフォルトの名無しさんNGNG
>>26
リッチテキストの処理を行ってるんですが、
Rtfコードを適応すると、スクロールもカレット位置も先頭に戻ってしまうので
入力するたびにテキスト内ががくがくになってしまうんです。
それを防ぎたいんですが、何か方法はないかなと。

0030デフォルトの名無しさんNGNG
MSゴシックとかはまず入ってる。
配布可能なフォント使うか元から入ってるの使うしかない。
0031デフォルトの名無しさんNGNG
hwndの参照先であるウィンドウオブジェクトとは何ですか?
ウィンドウの実体とのことですけど、構造体のようなインスタンスでしょうか
WNDCLASS構造体のウィンドウクラスとは全然違うものですよね?
0032デフォルトの名無しさんNGNG
>>31
ウィンドウはWindowsが内部で管理しているが、その管理コードとでも思っておけ。
0033デフォルトの名無しさんNGNG
>>32
レスありがとうございます。
ちなみにウィンドウクラスとは、そのWindowsが内部で管理しているウィンドウに
初期設定の値を与えるための情報を詰め込んだ構造体と考えて間違いはありませんか?
0034デフォルトの名無しさんNGNG
漏れのレベルはコンソール用のちゃっちいプログラムを書ける程度なんだけど、
試しにいろいろなとこに載ってるWin32APIを使ったソースをコンパイルしようとすると
必ずエラーが出る。コンパイラはBCCなんだけど、どうしてだろう?
みんな普通にコンパイルできてるん?
0035デフォルトの名無しさんNGNG
できてるよ!
0036デフォルトの名無しさんNGNG
おおかたコンパイルオプションの -W を忘れているんだろ。
0037デフォルトの名無しさんNGNG
誘導されてきました。

vc++でwindowsプログラミングをちょっとかじってみております。
質問なのですが、EditBoxを貼り付けたDialogBoxを作って、
EditBoxにフォーカスがあるときに打ち込まれたキーを取得したいのですがよくわかりません
DialogBoxのコールバック関数内でWM_COMMANDを拾うと、
LOWORD(wParam)にIDC_EDITBOXとかが入っていて
HIWORD(wParam)にWM_KEYDOWNが入ってるみたいなのですが、
どのキーが押下されたかっていう情報は取得できませんか?
EditBoxのコールバック関数を作ってWM取る、とかでしょうか
0038デフォルトの名無しさんNGNG
>>33
「ちなみに」という言葉の使い方はその場合、間違い。
0039デフォルトの名無しさんNGNG
ん?-Wってウィンドウズアプリのとき(WinMainあるとき)だろ?
>>34はウィンドウズアプリを作りたいのか、
それともwindowsAPIをちょこっと利用してるだけのコンソールアプリを作りたいのか。

つか、そういう使い方ってできるもんなん?やったことないからわからん。
0040デフォルトの名無しさんNGNG
ちゃんとインポートライブラリリンクするなりしてればコンソールアプリでも普通にAPI使える。
つぅか、使えなかったらなにも出来んぞ。
0041デフォルトの名無しさんNGNG
>>40
stdio.h
があればコンソールでも何とかなる。
0042デフォルトの名無しさんNGNG
>>37
>HIWORD(wParam)にWM_KEYDOWNが入ってるみたいなのですが、
HIWORD(wParam)に入ってるのはEN_じゃないか?

>EditBoxのコールバック関数を作ってWM取る、とかでしょうか
これでいいと思うよ。
0043デフォルトの名無しさんNGNG
CreateしたMutexって別にReleaseしなくても良いんでしたっけ。

というのは、何かこまめにReleaseしているおかげか、
WaitForSingleObjectが効いてないみたい。
0044デフォルトの名無しさんNGNG
Mutexってなんか動作分かり難いというかデバッグし難いな。

CRITICAL_SECTION に書き換えた方が読みやすいし誤動作し難い?
0045デフォルトの名無しさんNGNG
Release するかしないかは君のプログラムが決めることだけども、
Release しないと他のスレッドがその mutex を所有することが
できないんだから、Release しなくてもいい状況というのは
普通はない。
0046デフォルトの名無しさんNGNG
consoleアプリでWin32APIを使うには、GetModuleHandleで
WinMain引数のhInstanceに相当するハンドルが得られる。
004737NGNG
>>42
レスサンクスです。調べたらEN_〜みたいですね。

あとリソースエディタで貼り付けたEditBoxのコールバック関数
(ウインドウプロシージャと言うべきか)はどう登録するのでしょう?
そのEditBoxだけCreateWindow/RegisterClassExで貼り付けるんでしょうか?
0048デフォルトの名無しさんNGNG
サンクスでつ>>45

ついでに、MutexとCryticalSectionとどちらか教えて下さい。
0049デフォルトの名無しさんNGNG
Mutexはグローバルなカーネルオブジェクトだからプロセス間での排他に
使えるが遅い
CriticalSectionはそうではないから同一プロセス内のスレッド間排他が
主な役目になるが軽量で高速
0050デフォルトの名無しさんNGNG
CriticalSectionはWin9xを視野に入れてしまうとタイムアウトができないのがつらいな。
プロセス間同期は必要ないことも多いが。
0051デフォルトの名無しさんNGNG
>>47
サブクラス化で検索。
0052デフォルトの名無しさんNGNG
実はMutexの一番良く見る例の一つが多重起動防止だったり
Cランタイム他のスレッド間同期処理に実際に使われてるのは
CriticalSectionのほうですな。
0053デフォルトの名無しさんNGNG
そこで、メータードセクション

セマフォのように使え、プロセス間同期も出来、それでいて高速。
ただしMSDNそのままの実装だと同一スレッドから複数回 Enter できない罠
005437NGNG
>>51
なんとかできそうッス
キーワードもらえて助かりました
0055デフォルトの名無しさんNGNG
>>49 ミューテックスって遅かったんデスカ!

スレッド間の排他制御にずっと名無しのミューテックス
使ってたんだけどやめたほうがいいかなぁ。
0056デフォルトの名無しさんNGNG
俺はWaitFor〜Objectが使いやすくて好きだな。
それと、Set/GetDlgItemFloatって使えないの?
グローバルネームスペースには存在するんだけど、
実態が存在しないらしくエラー出るし、
なんかリンクする必要あるのかと思ってMSDN探してみたけど無いし
ぐぐっても0件だし・・・
0057デフォルトの名無しさんNGNG
Web上に転がっているMutexのサンプルはしばしば間違っていて抜け穴が存在する。
0058デフォルトの名無しさんNGNG
まぁ、ここでも読んで同期オブジェクトに関する知識を深めろ

短時間でできる汎用の同期オブジェクト
http://www.microsoft.com/japan/msdn/library/ja/jpdndllpro/htm/metrsect.asp?frame=true

↑のソースコード(元記事)
http://msdn.microsoft.com/library/en-us/dndllpro/html/msdn_metrsect.asp?frame=true
0059デフォルトの名無しさんNGNG
>>56
確かにInteliSenceで並んでるけど、どこにもないな。

VC6.0のInteliSenceには無い事から考えると…
 実はその内追加される予定があった関数で、
 InteliSenceの部隊が先行して入れてしまった
とかだったりして。

他のサーチエンジンで検索してみると、GetDlgItemTextを
使って自前で実装した例もあったんで、現状では使いたいなら
それしかなさそうだな。
0060デフォルトの名無しさんNGNG
DirectXがインストールされているかどうかを、
コードレベルで調べる方法があれば教えてください。
そういうAPIがあるといいのですが、なければ
どこかのレジストリを調べることになるのでしょうか…。
0061デフォルトの名無しさんNGNG
>>57
2重起動防止のサンプルですな
0062デフォルトの名無しさんNGNG
DirectXSetupGetVersion
0063デフォルトの名無しさんNGNG
>>58
これって自分でアプリに組み込めってこと?
APIで提供されるんじゃないのか。
0064デフォルトの名無しさんNGNG
>>63
は?
006560NGNG
>>62
どうもありがとうございます。試してみます。
0066デフォルトの名無しさんNGNG
>>64
>>58 をぱっとみて、メータード セクションってのがWin32で提供されているのかと思っただけっす。
0067デフォルトの名無しさんNGNG
提供されてるけど?
0068デフォルトの名無しさんNGNG
>>67
マジで?
MSDNをCreateMeteredSectionで検索しても見つからないんだけど。
0069デフォルトの名無しさんNGNG
>>57
どんな抜け穴ですか?
0070デフォルトの名無しさんNGNG
高橋名人なら突破できるということだ
0071デフォルトの名無しさんNGNG
ワロタ
0072デフォルトの名無しさんNGNG
>>67
PlatformSDK探したけど見当たらなかった。
もしあるならどこにあるか教えてくれ
0073デフォルトの名無しさんNGNG
誰も英語版の記事を読んでないの?
そのくらいのことができないのはちょっとな。
0074デフォルトの名無しさんNGNG
>>73
そうじゃなくて、
英語版の MSDN の記事をコピペしてメータードセクションを作るのではなくて、
最初から PSDK に入ってるんじゃないの?
ってことだと思う。

>>67 の「提供されてるけど」は多分「ソースは提供されているけど?」ということじゃないのかな?
それを、>>68 や >>72 は、「Win32APIとして最初から提供されているの」って勘違いしたんじゃないかなあ。
0075デフォルトの名無しさんNGNG
>>69
OpenMutex使ってるヤツはペケ
0076デフォルトの名無しさんNGNG
ぐぐったらたったの二件。片方は↑で引用されてるMSDNの記事だった。
比較を見るといいことずくめなんだが、結局
FileMappingを利用して実装してるんだね、フーン
で終わってしまったYo。
0077デフォルトの名無しさんNGNG
>>75
あれか。OpenされてなければCreateってやつね。
0078デフォルトの名無しさんNGNG
InitializeCriticalSectionしといて、DeleteCriticalSectionしない、
ってのは弊害ありますか?
007978NGNG
実は、クラスの
コンストラクタでInitializeCriticalSection、
デストラクタでDeleteCriticalSectionするようにしたんですが、
これだと、クラスの生成破棄をマルチスレッドでやっちゃうと、
CriticalSectionが途中で無効になっちゃうかな、と思いまして。

で、クラスの中で初期化するのはやめて、
プログラムのはじめでInitializeCriticalSectionして、
あとはほっとこうかなー、と。

どうでしょう?
0080デフォルトの名無しさんNGNG
それはプログラムの作り方の問題じゃねーのか?
008178NGNG
プログラムの作り方を質問させて頂いてまつ。

79に書いたやり方だと、やっぱりCriticalSectionが途中で無効になりますか?
教えてえ○い人。
0082デフォルトの名無しさんNGNG
がいしゅつだったわるいけど、
Win95上でIME を Disableにする方法無い?
クローズじゃなくってDisable.
BOOL WINAPI WINNLSEnableIME(HWND hWnd, BOOL bEnable)
があったんだけけど、これって、NT用だったり。
0083デフォルトの名無しさんNGNG
>>81
クリティカルセクションはそれぞれが独立してるから
何個作ろうが構わない。

そもそも、各スレッドから同時にアクセスされたくないときに
使う物だからプログラムの内容による。

ってことを>>80は言いたかったんだと思う。
0084デフォルトの名無しさんNGNG
>>82
ImmなんとかってAPI群が有るが。
0085デフォルトの名無しさんNGNG
>84
ImmSetOpenStatus
とかでしょ。でも、クローズするのはあるが、
IMEを、ディセーブルにするのなんてあった?
0086デフォルトの名無しさんNGNG
>>85
ImmDisableIMEは98以降か。
スマソ。
0087デフォルトの名無しさんNGNG
アクティブなウインドウが変更された時の
そのウインドウハンドルの取得って出来ますか?
0088デフォルトの名無しさんNGNG
GetActiveWindow()
0089デフォルトの名無しさんNGNG
書き方ちょっと間違えました。
Windows全体での
アクティブウインドウが変更になった瞬間を取得です。
0090デフォルトの名無しさんNGNG
フックでもしこんどけ
009189NGNG
>>90
仕込んでみたんですけど、
0==GetParent(アクティブウインドウ)
なやつを引っ張ったとしても。
画面に出てないウインドウも取ってくるですよ。
spyとかで、調べても見つからないような

フック以外ないですかねー
0092デフォルトの名無しさんNGNG
OpenSoundとかはとっくに廃止されたというかWin32にはそもそも
存在しなかったような気がしますか、これと同じビープ音で演奏する
方法ってないんでしょうか?
ユーザー補助とかでピヨッとか鳴るから何か手段はあるはずなんだが。
0093デフォルトの名無しさんNGNG
MessageBeep()で鳴らない?
0094デフォルトの名無しさんNGNG
あ、演奏したいのだったらBeep()の方だな。MessageBeep()だと一種類しかないけど、
Beep()の方なら周波数と鳴らす時間を指定できるっぽい。
0095デフォルトの名無しさんNGNG
Beep使ったことあるけど、うるさいしへぼいし、なってる間プログラムはとまるし。
別スレッドで…とかやればいいのだろうけど、まだスレッド意識したことないな。
0096デフォルトの名無しさんNGNG
WndProcを呼び出す為にメッセージがあった事にできる
関数があるなら教えてください。

Timerとかあると思うのですが、そんなたいそうなものではなく、
WndProc内でHappenMessage(NULL);みたいにやって
WndProcを抜けた後もう一度WndProcに入るみたいな事がしたいのです。
0097デフォルトの名無しさんNGNG
>>92
宍戸さんの所にあります。だが、めちゃめんどいです。
http://www.sm.rim.or.jp/~shishido/waved.html

後、Beep()は楽だけど、たしか95系だと動かないです。
0098デフォルトの名無しさんNGNG
>>96
適当なメッセージを自身のプロシージャに送れば?
WM_APP+96とか。
0099デフォルトの名無しさんNGNG
>>96
PostMessageでは期待にそえんか?
010096NGNG
>>98>>99
ありがとうございます。やってみます。
010196NGNG
できました。ありがとうございました。
0102デフォルトの名無しさんNGNG
テストプログラムを作って、
EnterCriticalSectionを実行しましたが、
Leaveを待たずにEnter出来てしまいます。
クリティカルセクションって同一スレッドでは排他しないんでしたっけ?
0103デフォルトの名無しさんNGNG
いったんクリティカル セクションの所有権を獲得したスレッドは、 その実行をブロック
することなく、 繰り返しEnterCriticalSectionを呼び出すことができます。これにより、
スレッド自身が、 すでに所有しているクリティカル セクションを待つ間、 デッドロック
状態に陥らないようになります。スレッドの所有権を解除するには、 各EnterCriticalSection
呼び出しに対してLeaveCriticalSection関数を1回ずつ呼び出さなければなりません。

ってことでしょ多分
0104デフォルトの名無しさんNGNG
そういうことですか、納得。>>103
0105デフォルトの名無しさんNGNG
>>102
同一スレッドで排他したらデッドロックするじゃん。
0106デフォルトの名無しさんNGNG
2^32 + 1回連続Enterしても大丈夫なんだろうかね?
0107デフォルトの名無しさんNGNG
>>92
音を鳴らすだけなら、sndPlaySoundで良いんじゃない?
もうちょっと、色々して鳴らすならMCI系で。
それ以上なら、waveOut系を使うしかないかな…。
0108デフォルトの名無しさんNGNG
>>106
たぶんダメポ
0109デフォルトの名無しさんNGNG
>>106
とりあえず、やってみた。
結果は、デッドロックや例外で止まるとかはないが、
CrticalSectionの機能を果たさなくなってる。

まぁ、普通はそんな回数やる前に設計見直せって
話になるだろうから、心配するなw
0110デフォルトの名無しさんNGNG
>>106
そんな事態を招くプログラマの頭のほうが深刻な問題だけどな。
0111デフォルトの名無しさんNGNG
ファイルの関連づけ取得を楽にするAPIってないですかね?
がんばってレジストリ読むしかない?
0112デフォルトの名無しさんNGNG
質問。

Win32APIのExtTextOutW ( ExtTextOutのUnicode版 ) 使ったんだけど、
SetTextAlign( hDC, TA_UPDATECP ) とやっても X と Y が有効になっちゃうんだけど、
これって自分の環境だけなのか、他でもなっているのか教えてください。

他でもなってるなら(APIのバグなら)自分でカレントポジション持ってきて移動させますので。

#ちなみにANSI版はまだ試してないっス

自分の環境は
WinXP
VC++.NET 7.1
.NET FrameWork1.1 (APIだから関係なし?)
です。
0113デフォルトの名無しさんNGNG
>>111
FindExecutable
0114デフォルトの名無しさんNGNG
とりあえず、Wizardで作られたソースに
 MoveToEx(hdc , 100 , 100 , NULL);
 SetTextAlign(hdc, TA_UPDATECP);
 ExtTextOut(hdc, 200, 200, 0, NULL, _T("0000"), 4, NULL);
 ExtTextOut(hdc, 200, 200, 0, NULL, _T("1111"), 4, NULL);
ってな感じで追加して試してみたが、ドキュメントどおりの挙動だったぞ…

ちなみに、AでもWでも一緒。
0115111NGNG
>>113
サンクス
0116112NGNG
>>114
ありがとう。
じゃぁなんか自分のコードにバグあるっぽいね。
早速探してみるよ。
0117デフォルトの名無しさんNGNG
関連づけられていないファイルをダブルクリックした場合、
開く方法を選択するダイアログが出てくるけど、
これを開くAPIってある?
ShellExecuteでは出てこないんだけど・・・
0118デフォルトの名無しさんNGNG
KBにあったけど番号忘れた。
0119デフォルトの名無しさんNGNG
>>117
rundll32 shell32,OpenAs_RunDLL %1
0120デフォルトの名無しさんNGNG
「ファイルを保存するダイアログ」を外部からパスを与えて操作したいんだけど
どうしたらいい?
メモ帳とかでCtrl+Sで出てくるようなやつで表示されているパスを変更したいっ
てことなんだけどどうでしょう.
0121デフォルトの名無しさんNGNG
>>120
すでに開いているのを操作するのか?
そのパスで開きたいのか?
さあ、DOTCH?
0122デフォルトの名無しさんNGNG
SetCurrentDirectory
0123デフォルトの名無しさんNGNG
>>121
前者です.
>>122
これだと「そのパスで開く」ということになるんですよね?
0124デフォルトの名無しさんNGNG
フックするしかないかな。
0125デフォルトの名無しさんNGNG
あれってダイアログの種類二、三ない?
全部同じ操作でいけるのかな?
てか>>123は何がしたいんだ?
0126123NGNG
>>125
親が仕事でPCを使っていて, いくつかの保存先を行ったり来たりするんだけどそ
れを省力化あるいは自動化できたらいいなと.
0127デフォルトの名無しさんNGNG
>>126
Placebarをカスタマイズ汁。}
0128デフォルトの名無しさんNGNG
>>126
えらいな、自分で作るっていう考えが。
0129123NGNG
>>127
それだとあらかじめ登録しておいたフォルダに保存するて感じで, 希望としては
もちっと柔軟性が欲しいところなんです.
というか, ある既存のアプリが作ったフォルダの名前を取得して, 別の既存のア
プリで何かのデータをそのフォルダに保存するということがやりたいというわけ
です.
0130デフォルトの名無しさんNGNG
.bmpファイルを開いてBMPINFOを得る方法を教えてください。
0131デフォルトの名無しさんNGNG
>>130
ヘッダを読む
0132デフォルトの名無しさんNGNG
>>131
いろいろ調べておっしゃるバイナリを調べる方法や、
キャストしたりオフセットを使ったりする方法はあったのですが、
GetBitmapInfo(bmpFileName, &bmpInfo);
こういう感じで簡単に得られるのはないでしょうか。
0133デフォルトの名無しさんNGNG
無い
0134デフォルトの名無しさんNGNG
>>132
キャストしないでも、
#pragma pack(1)とかされてるはずだから、
 1 ビットマップをオープン
 2 BITMAPFILEHEADERを読む
 3 bfOffBitsをみてBITMAPINFOのサイズを決定
 4 BITMAPINFOを読む
とすれば問題なく読める。
別に要素ごとに一つ一つ読む必要は無い。
0135130NGNG
>>133
なら、LoadImage→SelectObject→SetDIBitsで得られますか。
0136130NGNG
>>134
調べてみます。

>>135
分かりにくいですね。
以下のはDDBですよね?このような感じでDIBを得たいのです。

PAINTSTRUCT ps;
HDC hDC = NULL, hDCBitmap = NULL;
HBITMAP hBitmap = NULL;
hDC = BeginPaint(hWnd, &ps);
hDCBitmap = CreateCompatibleDC(hDC);
hBitmap = (HBITMAP)LoadImage(NULL, BMP_FILE, IMAGE_BITMAP,
16, 16, LR_LOADFROMFILE|LR_CREATEDIBSECTION);
SelectObject(hDCBitmap, hBitmap);
BitBlt(hDC, 0, 0, 16, 16, hDCBitmap, 0, 0, SRCCOPY);
DeleteDC(hDCBitmap);
DeleteObject(hBitmap);
EndPaint(hWnd, &ps);
0137デフォルトの名無しさんNGNG
>>136
GetObject
0138130NGNG
>>137
GetObject(hBitmap, sizeof(BITMAPINFO), &bmpInfo);
ですか?
0139デフォルトの名無しさんNGNG
>>136
LR_CREATEDIBSECTIONつけてんだからDIBだろうが。
0140130NGNG
>>139
そうだと思うのですが、どこにパレットとピクセル配列があるのか
分からないのです。bitmap.bmBitsだと思うのですが。
SetPixelVで表示したいのでそこにアクセスする方法を探していました。
0141130NGNG
まだ自分のLVでは無理なようなのでもう少し勉強してからにします。
お答えいただきありがとうございました。
0142デフォルトの名無しさんNGNG
システムクラス(BUTTONとか)のWM_NCCREATEをうけとりたいのですが
SetWindowsHookEx以外の方法ってありますか
0143デフォルトの名無しさんNGNG
>>142
スーパークラス化
0144142NGNG
ありがとうございます
0145117NGNG
>>118-119
できました。
ありがとうございました。
0146デフォルトの名無しさんNGNG
モードレスダイアログのエディットコントロールに最初に表示されるように。
SetDlgItemTextで文字を表示さしてるんですけれど、
ダイアログが呼び出されたときに何故か最初に表示されてる文字の一つが反転
(マウスでクリックして選択された状態)になってるんです。
これってどうゆう原因なんでしょうか。.netで開発してるんですけど、プロパティにはそれらしい
項目はないみたいだったんですけど。お願いします。
0147デフォルトの名無しさんNGNG
ドラッグドロップでマイコンピュータなどの特殊フォルダはどうやって受け取れば良いんでしょうか?
IDataObject::GetDataに渡すFORMATETC::cfFormatに設定する値を変えればいいと思うのですが、
どの定数を設定すればいいのかわかりません。
よろしくお願いいたします。
0148デフォルトの名無しさんNGNG
>>147
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/programmersguide/shell_basics/shell_basics_programming/transferring/clipboard.asp
0149147NGNG
>>148
ありがとうございました。
0150デフォルトの名無しさんNGNG
CreateWindowEx で、作ったツールバーの背景色を変えるにはどうしたらいいですか?
もしくは、ツールバーのビットマップのうち、透過色を指定する方法でもかまいません。

Win9x と XP で、デフォルトの背景色が違うので、なんとかしたいのです。
0151146NGNG
モードレスダイアログのエディットコントールのプロパティの
TabstopがTrueになってたのが原因だったみたいです。
Falseにしたら治りました。
0152デフォルトの名無しさんNGNG
質問があります
Win32Apiだけではないですが教えてください

インターネットをIEで複数開いて、それぞれのWindowに最新F5信号絶え間なくを送りたい
のですが可能でしょうか?

一つ一つのWindowを順番にアクティブにして最新信号を送る方法と
アクティブ、非アクティブのWindowに信号を送るのとが考えられますが
非アクティブのWindowに最新信号(F5)は遅れるのでしょうか?

あと、今のサーバーは最新信号だけでは落ちないようになっていると聞きますが
このプログラムで大量の数のWindowを起動し最新信号(F5)を送っても
効果はあまりなのでしょうか?

どうか教えてください、お願いします m(_;)m
0153デフォルトの名無しさんNGNG
>>152
韓国人かよ
0154デフォルトの名無しさんNGNG
一台からやってもDOS攻撃は意味がない。
0155152NGNG
>>154
ありがとうございます
そういえばそのようなこと聞いたことがあったような気がします
では、作っても意味がないのでしょうか?
OS上の限界なのでしょうかね?

window一つでもwindow複数でもサーバーの負担は変わらないのかな

分かりました、別の方法を考えてみます
0156デフォルトの名無しさんNGNG
DDoS推奨。てかなんのスレだここは
0157152NGNG
>>156
DDosと言う方法があるんですね
さっそく調べてみます
0158デフォルトの名無しさんNGNG
最近の朝鮮人は2ch派生の顔文字使うらしいよ。NAVERでフレームやってた奴らが広めたらしい。
0159デフォルトの名無しさんNGNG
スレが違う方向に逝ってしまう予感・・・
0160デフォルトの名無しさんNGNG
REM ---DDOS.BAT---
:A
CURL http://www.2ch.net/ > NUL
GOTO A
REM ---EOF---
0161デフォルトの名無しさんNGNG
msdn に、

Requirements
Routine Required header Compatibility
malloc <stdlib.h> and <malloc.h> ANSI, Win 98, Win Me, Win NT, Win 2000, Win XP

と書いてあるのですが、malloc は win95 で使えないんですか?
0162デフォルトの名無しさんNGNG
んなーこたぁない。
0163デフォルトの名無しさんNGNG
VC++7.1とかだとそもそもWin95が対象外。
0164デフォルトの名無しさんNGNG
HWND button = CreateWindow("BUTTON","Hello",WS_VISIBLE | BS_PUSHBUTTON, ... )
として第8引数にもNULLを指定し、あとでSetParentとSetWindowLongPtr
で親のHWNDとWS_CHILDを追加しているのですがうまくいきません

DWORD button_style = GetWindowLongPtr(button,GWL_STYLE);
button_style |= WS_CHILD;
button_style ^= WS_POPUP;
SetWindowLongPtr(button,GWL_STYLE,button_style);
SetParent(button,window);

ボタンに指定したのと同じ位置,サイズ,キャプションでウィンドウが表示され、その中に
ボタンが表示されてしまいます
ボタンの親をあとから指定することは不可能なのでしょうか?
0165デフォルトの名無しさんNGNG
俺もSetParentしてえ
0166デフォルトの名無しさんNGNG
>>165
イ�`
0167デフォルトの名無しさんNGNG
SetParent(俺, 隣のおねいさん);
0168デフォルトの名無しさんNGNG
>>167
まずハンドルを取得汁
0169デフォルトの名無しさんNGNG
>>167
養子縁組を申し込めばOK
0170デフォルトの名無しさんNGNG
養子縁組に必要な書類==ハンドル
0171デフォルトの名無しさんNGNG
養子縁組に必要な条件
(>>167).年齢() < (>>167).隣のおねいさん.年齢()
0172デフォルトの名無しさんNGNG
メッセージ等を使わずに
SHIFTキーが押されているかどうかをチェックするにはどうすればいいですか?
0173デフォルトの名無しさんNGNG
GetKeyboardStateとか
0174デフォルトの名無しさんNGNG
GetKeyState
0175デフォルトの名無しさんNGNG
GetShiftKeyState
0176デフォルトの名無しさんNGNG
GetAsyncKeyState
0177デフォルトの名無しさんNGNG
LoadBitmap で読み込んだビットマップのピクセルに直接アクセスするには、
どうしたらいいですか?
背景色を GetSysColor(COLOR_BTNFACE) に置き換えたいのです。
0178デフォルトの名無しさんNGNG
GetPixelVとかSetPixelVとかで出来るのでない?
0179デフォルトの名無しさんNGNG
Get/SetBitmapBits()
つーかここで〜するAPIはなんですか?とか言ってるヤツでVC使いなら
インテリセンスでそれらしいの探せ
0180デフォルトの名無しさんNGNG
FolderのContext Menu Handlersに自作アプリを追加したのですが、
エクスプローラの左フォルダーツリーから呼び出された場合と
右のファイルリストから呼び出された場合で追加可能アイテム数がかなり違います。
(左約3万、右約140)
この差はどこから来るのでしょうか?
また右の場合の項目数を増やす事は出来ませんでしょうか?
0181デフォルトの名無しさんNGNG
>>179
msdnの目次のほうがいいとおもいます
0182デフォルトの名無しさんNGNG
>>179
今は、SetDIBits()では?
0183デフォルトの名無しさんNGNG
MultibyteToWideCharのコードページ、
CP_ACPとCP_OEMCPを使っている例が多いのですが、
どっちを使うべきなんでしょうか?差がわかりません。
0184デフォルトの名無しさんNGNG
日本語環境ならCP_ACPでおげ
0185デフォルトの名無しさんNGNG
thx!
0186デフォルトの名無しさんNGNG
明示的にSJISから変換したいなら932が正解な気がするが。
0187デフォルトの名無しさんNGNG
Find*Fileのファイル名から変換するのに使用してるんです
932決め打ちだと日本語環境以外で(使うかはともかく)不具合出ませんか?
0188デフォルトの名無しさんNGNG
>>187
システムのコードページを得て変換するのが正解のような。
0189デフォルトの名無しさんNGNG
それなら、CP_ACP で正解。
0190デフォルトの名無しさんNGNG
OEM変換する必要がある環境って触ったこと無い人多そう。
0191デフォルトの名無しさんNGNG
GetDlgItemIntってint型しか使えないんだけど、int型の範囲超えちゃうような
数値とかの場合はどうしてるの?
0192デフォルトの名無しさんNGNG
>>191
文字列で取って、自分で扱ってる多倍長整数とかその他の形式に、自分で変換すればいいだけでは?
0193デフォルトの名無しさんNGNG
WM_MOUSEWHEELはwin98でも使えるのにWHEEL_DELTAとかは
_WIN32_WINNT>=0x400でないと定義されないのはなぜじゃ!
0194デフォルトの名無しさんNGNG
もじれつ
0195デフォルトの名無しさんNGNG
もりぜつ
0196デフォルトの名無しさんNGNG
>>192
文字列をdouble型に変換するのってどうするんでしたっけ?
0197196NGNG
atof関数だったかも
0198デフォルトの名無しさんNGNG
atofはfloatだべ
strtodだ
どっちにしろAPIではないがな
0199デフォルトの名無しさんNGNG
VCではdoubleだが > atof
0200デフォルトの名無しさんNGNG
atoi64 は、VC独自仕様?
0201デフォルトの名無しさんNGNG
コマンドの標準入出力をゲットしてなにかしらこねくり回そうかなーと思っているんですが、
CreatePipeとか使って標準入出力を他のHANDLEにパイプすることには成功したんですが、
どうもリダイレクトとかパイプとか使用してると、挙動がかわるコマンドってあるじゃないですか?(lsとか)

この挙動がパイプつなげる前と変わらないようにしたいんですが、なんか方法ってありますかね?
正確にはわかりませんが、自分の憶測だと、そういうコマンドって、
内部で、出力先を調べて、結果を変えてると思うんですが、
その調べるときの出力先をダマして教えてしまうような方法がないかなーと思うんですが…
0202デフォルトの名無しさんNGNG
atof()はひょーじゅんでdoubleだろ

ていうかANSI以前では引数だの戻り値だのにfloatだのcharだのといった
型は使えなかったんじゃないか確か
なんでもint, long, double, ポインタ
0203デフォルトの名無しさんNGNG
>>201
むり。
0204デフォルトの名無しさんNGNG
>>201
Unixなら、psuedo ttyを使ってそういう類の仕事をやることがある
はず
tclでかかれたexpectとかはそーゆー目的のツール
のはず
0205デフォルトの名無しさんNGNG
>>202
引数は、
float → double
char,short → int
というルールだけど、
戻り値はなんでもアリだった気が。
0206デフォルトの名無しさんNGNG
>>205
原理的にはできるとおもう
プロトタイプなんてモンも無かったし引数はとりあえずスタックに
プッシュするだけだから、ああなってただけだと思うから

でも、実際にfloatやchar戻してる例なんてみたことないよ
0207デフォルトの名無しさんNGNG
>>201
リダイレクトさせるんじゃなくて、
フッカ潜り込ませて、そのプロセスのコンソール入出力をぶん取る方が確実と思うが。
0208201NGNG
>>207
フッカというとHookerのことですか?
フックというとSetWindowsHookExぐらいしかしらないんですが
どんな感じでやるんでしょう?
0209デフォルトの名無しさんNGNG
部分的なITEMIDLIST(IEnumIDList::Next()で列挙した奴)と
そのITEMIDLISTの親のIShellFolderから完全なITEMIDLISTを得る方法はないでしょうか?
0210デフォルトの名無しさんNGNG
子ウィンドウにDestroyWindowすると親ウィンドウも破棄されてしまうのですが
子ウィンドウだけを破棄する方法はありますか?
子ウィンドウはWS_EX_NOPARENTNOTIFYを指定してます.子ウィンドウを破棄する前に
SetParent(hChild,HWND_DESKTOP)として親を変えてもだめでした
0211デフォルトの名無しさんNGNG
破棄されないよ
0212210NGNG
すいませんあほでした
子ウィンドウのWndProcのWM_DESTROYの中でも
PostQuitMessage(0)していました。。。。。。
0213デフォルトの名無しさんNGNG
>>209
自力で結合させる以外の方法はなかったはず
これの下の方
ttp://www.kab-studio.biz/Programing/Codian/ShellExtension/06.html
0214デフォルトの名無しさんNGNG
とある拡張子に関連付けられたアイコンがあるファイル名と
インデックスを取得するだけのAPIってないでしょうか?

シェル拡張でIExtractIconを利用してるんですが、そこで上書きする
アイコンのロードに失敗した時に、元の奴を表示したいのです。
ExtractAssociatedIconだと、その中でさらにIExtractIconのメンバ関数を
呼び出してStackOverFlowになってしまうみたいで、Explorerが落ちちゃいます。

やっぱり、レジストリを検索するしかないのでしょうか?
0215デフォルトの名無しさんNGNG
>>214
そうですね。
シェルエクステンションを使うということは、しごく当然ですが、シェルからの取得も
そのエクステンションを使用するわけなので、、、

もっとも、アイコンのロードに失敗するという状況自体がおかしいという考えもありますが。
0216デフォルトの名無しさんNGNG
>>214
漏れと同じ事をしようとしている希ガス・・・
0217デフォルトの名無しさんNGNG
>>215
レスありがとうございます。

> アイコンのロードに失敗するという(略
上書きするアイコンは、外部ファイルを利用してアイコンをロードするって
ことをやってるので、一応失敗する可能性もあるかな〜と思いまして。

前の書き込み後、色々調べてSHGetFileInfo()でSHGFI_ICONLOCATIONを
指定する方法も試してみたんですが、バグなのか呼び出し方に問題が
あるのか、どうやっても取得できませんでした。

他に方法もなさそうなので、レジストリ検索にしときます…(´・ω・`)
0218デフォルトの名無しさんNGNG
ファイルがショートカットかどうか判別するAPIはありますか?
拡張子がLnkやUrlで判別するしかない?
0219デフォルトの名無しさんNGNG
>>218
IShellLink Interfaceを使う
0220デフォルトの名無しさんNGNG
C言語なら俺に聞けのスレでおなじ質問をしたんですがスレ違いとのことでこのスレを紹介されてきました

C言語でWindowsを再起動させるプログラムを作りたいんですけどどうすればいいですか?
0221デフォルトの名無しさんNGNG
とあるウィンドウのハンドルを取得できたとして、
そのプロセスのコールバック関数から
ウィンドウの一番下にメモかリストボックスを追加して
その上にリサイズ用のバー(スプリッター)を追加したいのですが、
そのようなことは可能でしょうか。
また、それを行う場合どういった方法でやればいいのでしょうか。
0222デフォルトの名無しさんNGNG
>>220
ExitWindowsEx
0223デフォルトの名無しさんNGNG
>>221
よくわからんのだが、既存のウィンドウの下部に外部のプログラムからそういうウィンドウをつけたい、ということかな。
0224デフォルトの名無しさんNGNG
>>223
>既存のウィンドウの下部にそういうウィンドウをつけたい
これはその通りです。

>外部のプログラムから
プラグインのようなものから、ということです。
プロセス・スレッド的にはウィンドウのメッセージループと(たぶん)同一です。
0225デフォルトの名無しさんNGNG
不特定多数のエディット
(数が状況によって変化するようなコントロール)
を作成するプロシージャがある場合に
また別のウィンドウのプロシージャで
任意のエディットに入力された文字列を受け取るには
どうしたらいいでしょうか?
外部のHWND型配列にそのエディットのハンドルを格納しておいて
そのハンドルを使ってGetWindowTextで呼び出すという
安っぽい方法なら思いつくのですが・・外部変数使ってるし・・
外部変数に頼らないまたは一般的な方法ありましたら教えてください
おねがいします。
0226デフォルトの名無しさんNGNG
>>225
俺なら共用データクラスを作るが。MFCならCDocumentにつっこむ。
HWNDではなく、文字列そのものを。
てか、スレ違い。
0227デフォルトの名無しさんNGNG
即レスどもです

共有データクラスってなんですか?
ググッってみたのですがヒットしませんでした
ちなみにMFCもまだ
使えませんT T
Win32APIもCも猫やら本やらで勉強中の身で。

てかスレ違いですか!
このような問題に対処する方法は
Win32APIに限られたものじゃないから ってことですか?
0228デフォルトの名無しさんNGNG
>>225
文字列を受け取りたいエディットコントロールのIDがわかるなら
GetDlgItemText()を使えばHWNDの配列なんて必要ないよ。
0229225NGNG
>>228さん ありがとうございます
なんだか前よりずっと綺麗にまとまりそうです

そこでまたまた初心者質問で申し訳ないのですが
親ウィンドウのWM_COMMAND以外にmenuIDが参照されるタイミングを
知らないので思ったのですが
兄弟ウィンドウの中でかぶらなければ
menuIDはどんな値にしてしまってもいいんでしょうか
多くのコントロールを必要とするプログラムの場合
その値を普通はどうやって決めるのでしょうか
0230デフォルトの名無しさんNGNG
兄弟ウィンドウでかぶらなければ適当に決めてよい
0231225NGNG
そうですか!
ありがとうございました
0232デフォルトの名無しさんNGNG
Win32API 直でPG組んでる人って、まだ多いん?
0233デフォルトの名無しさんNGNG
もうとかまだとかいう話じゃねーと思うんだが。
0234デフォルトの名無しさんNGNG
あながち多いん?
0235デフォルトの名無しさんNGNG
ぞんがい多いよ
0236デフォルトの名無しさんNGNG
オブジェクト思考とか、イベント駆動型についていけない人達と思っていいか?
0237デフォルトの名無しさんNGNG
Win32APIの窓プログラミングを非イベント駆動で組む方法を教えてください。
0238デフォルトの名無しさんNGNG
そうやって優越感に浸っているのがいいよ。
0239デフォルトの名無しさんNGNG
オブジェクト指向と何の関係が...
自分は進んでいると思っているキチガイの中の人か?
0240デフォルトの名無しさんNGNG
イベント駆動ってメッセージ処理そのものなんじゃ…
0241デフォルトの名無しさんNGNG
236は無知でド低脳な人だと思っていいか?
0242デフォルトの名無しさんNGNG
直の方がプログラムの流れが一目瞭然で良いが、
MFCを覚えてからは、こっちの方が楽で良いな。
でも旧来のやり方が好きな人もいるでしょうし、人それぞれで。
Win32API直PGを経験してる方が、MFCなどに移ってもなにかと有利だと思う。
0243236NGNG
大量(プゲラ
0244デフォルトの名無しさんNGNG
大漁ね
0245236NGNG
また釣れた(プゲラッチョ
0246デフォルトの名無しさんNGNG
釣りって事にしないとやってられないよな
0247デフォルトの名無しさんNGNG
無能な奴にかぎって変なプライド持ってたりするからな。
ウチの会社にも居るんだけど何とかして欲しい…
0248デフォルトの名無しさんNGNG
こういう馬鹿話はマ板でやってくれんか
0249デフォルトの名無しさんNGNG
>>247
どうにもなりません。
無能なヤツは自分が無能であることに気づく能力も
自分の無能さを認める能力もありませんので。
0250デフォルトの名無しさんNGNG
質問させてください。

任意のタイミングで、フォーカスされているコントロールの HWND を
取得したいのですが、これは可能でしょうか?

既存のプログラム(ソース無し)を外部から操作したいと考えているため、
フォーカスイベント発生時にそのコントロールの HWND をグローバル変数に
保存しておくという方法が使えません。

素人ながら調べているのですが解決策へたどりつけていません。
可能か/不可能か、可能ならば参考情報へのポインタを教えていただけ
ませんでしょうか。宜しくお願いいたします。
0251デフォルトの名無しさんNGNG
GetFocus・・・。
0252デフォルトの名無しさんNGNG
まちがい・・・。
0253デフォルトの名無しさんNGNG
>>250
GetForegroundWindow()って違うかな?
今MSDNで調べて知ったばっかりだから自信ない。
0254デフォルトの名無しさんNGNG
>>251-252
いろいろ試したのですが、GetFocus だと「トップウィンドウ」レベルの
HWND しか取得することができませんでした。
なにか妙案がありますでしょうか?

もう少し書くと ListView/TreeView コントロールが複数あり、その中のどの
ListView/TreeView コントロールがフォーカスされているか、もしくは
いずれもフォーカスされていないかを調べたいと試行錯誤しています。
0255デフォルトの名無しさんNGNG
>>254
EnumChildWindowsで列挙してGetFocusと比較する。
ただし君の言っている仕様が曖昧なので、これだけでは満たしていない可能性もあるが...。

0256デフォルトの名無しさんNGNG
>>254
GetWindowThreadProccessIDでスレッドID取得して、
AttachThreadInput すれば、子WNDまで調べられる。
0257デフォルトの名無しさんNGNG
>>251-253 >>255
GetFocus と解をいただいたので、再度試行錯誤したところ、
GetFocus で目的の HWND を取得することができました。

今まで失敗していたのは、フォーカスのある HWND を調べようと
している手続きの中で、自分でフォーカスのある HWND を変更して
しまっていたためでした。。

こんな単純なことにお手を煩わせてしまい申し訳ございませんでした。
0258251=252NGNG
なんだ、あってたのか
0259デフォルトの名無しさんNGNG
SetWindowsHookExで他プロセスにフックかけたいんですけど、
特定のアプリひとつ(電卓一個限定とか)に対するフックでもdll要りますか?
0260デフォルトの名無しさんNGNG
要る
0261デフォルトの名無しさんNGNG
WM_GETTEXTを SendMessage してやるとテキストが取れるのに、
GetWindowText だと取れないことがあるのは仕様ですか?
0262デフォルトの名無しさんNGNG
どんな時に取れないんだ?具体例を出してくれ。
0263デフォルトの名無しさんNGNG
msdnを参照しないのも仕様ですか?
0264デフォルトの名無しさんNGNG
仕様です、あきらめてください。
0265デフォルトの名無しさんNGNG
>>261
同じプロセスで?
0266デフォルトの名無しさんNGNG
>>261
もし違うプロセスなら、>>256調べてみ。
0267261NGNG
違うプロセスが開いたダイアログのEditControlの文字列を取ろうとしたんですが、
EnumChildWindows、WindowFromPoint、spy++のプロパティのどれで取得したhWndでも
WM_GETTEXTだと取得できて、GetWindowTextだと取れませんでした。
ダイアログのEditコントロールで再現性が高いです。
0268デフォルトの名無しさんNGNG
Platform SDK - GetWindowText Fucntion

>The GetWindowText function copies the text of the specified window's title bar (if it has one) into a buffer.
>If the specified window is a control, the text of the control is copied.

>However, GetWindowText cannot retrieve the text of a control in another application.

0269デフォルトの名無しさんNGNG
ついでに、
Remarks

>To retrieve the text of a control in another process,
>send a WM_GETTEXT message directly instead of calling GetWindowText.

0270デフォルトの名無しさんNGNG
というか、なぜリファレンスを当たらないのか理解に苦しむ。
0271216NGNG
あ、あれ…?

Remarks
This function causes a WM_GETTEXT message to be sent to the specified window or control.

漏れのはここまでしか書いてない…
素直にmsdn最新版入れてきます…スマソ
0272デフォルトの名無しさんNGNG
>>270
> というか、なぜリファレンスを当たらないのか理解に苦しむ。
∵仕様だから
0273デフォルトの名無しさんNGNG
C++相談室から移動してきました。

VC++をコンパイラに使って、簡単な実験プログラムをMFC使用せずに
ネットのソースや猫でもわかるを見て試行錯誤してるのですが。
現在作ろうとしてるのが初めてDialogをメインでCreateWindowなどを使わない方法なのですが、
どうもDialogリソースにクラス名を入れると起動後すぐに終了したり、
WM_KEYUPなどのウィンドウメッセージが反応しないなどの壁にぶつかってます。
特に後者はどのようにしたら解決出来るでしょうか?WM_COMMANDなどは正常に反応します。

Window生成したソースだとちゃんとWM_KEYUPなど動いてくれます。
いまいち生成されたWindowとリソースエディタで作ったDialogの違いが分かってないようです。
Dialogを、この生成されたWindowのようには扱えないのでしょうか。
どうかご教授よろしくお願いします。
0274デフォルトの名無しさんNGNG
WM_INITDIALOG
0275デフォルトの名無しさんNGNG
ダイアログ自体がWM_KEYxxを処理してどうしようと。
フォーカス持たないのに。
0276デフォルトの名無しさんNGNG
「Windowsゲームプログラミング」
http://www.amazon.co.jp/exec/obidos/ASIN/4797325453/

“ゲームプログラミング”と銘打っているが、実はれっきとした
Win32 API入門書。著者は↓の作者。
http://black.sakura.ne.jp/~third/system/winapi/win.html
0277デフォルトの名無しさんNGNG
ウィンドウの最大化ボタンや×ボタンを動的に付けたり消したりする事はできますか?
0278デフォルトの名無しさんNGNG
>>277
できる。
0279277NGNG
よかったらそのAPIを教えてくれませんか?
0280デフォルトの名無しさんNGNG
>>279
SetWindowLong
0281273NGNG
試行錯誤してて遅れました。。
確かに一旦Dialogから他のコントロールにフォーカスの移動(?)したらWM_KEYxxは働きませんでした。
>>276 にある「ダイアログウィンドウ」という項目の通りにウィンドウのようなクラス登録をしたら、
WM_KEYxxは初期状態では働きましたが、どれかのコントロールをクリックしてフォーカス移動(?)したら働きませんでした。

具体的には、ショートカットキーやEscで終了、、などをしたいんですが・・・。
0282デフォルトの名無しさんNGNG
1.普通にコントロールをサブクラス化する。
2.メッセージループでコントロールのメッセージを横取り
0283273NGNG
サブクラス化を調べて、実際にやってみたところ、
WM_CREATEのところで、OLEの登録の後にサブクラス化をやったのですが、
どうも GetDlgItem 関数でのハンドルの取得が上手く行かないようです。(NULLが返って来る)

どのコントロールを指摘してもダメだったのですが、ダイアログウィンドウにすると、
別の関数でやるか、あるいは最初から一つずつCreateWindowでコントロールの生成しなければならないんでしょうか?
ダイアログウィンドウではなく、そのままにして WM_INITDIALOGのところでサブクラス化したら上手く行きました。
これで、コントロール一つずつサブクラス化すれば WM_KEYxx は拾えそうですが、結構長くなってしまいそうです。
0284273NGNG
追記。
resource.h を見て、for文で一つずつサブクラス化してみたりしたのですが、
どうもリストボックス以外をサブクラス化したり、その順序によっては、
それぞれのコントロールが消えたり無効状態になってしまいます。。。
例えばリストボックス→その他のコントロールにすると、リストボックスが灰色になります。
ただし、クリックしてWM_KEYxxメッセージはちゃんと受け取るようです。
0285デフォルトの名無しさんNGNG
お客様の中に、無駄に親切な超能力者の方はいらっしゃいませんか?
0286デフォルトの名無しさんNGNG
>>285
はいっ! 曲げたスプーンを元に戻すことが出来ます。
0287デフォルトの名無しさんNGNG
>>273
何か根本的なコーディングミスを犯している気がする。
0288デフォルトの名無しさんNGNG
2重投稿がここだけ無い…
すげー さすがWin32APIスレ…
0289デフォルトの名無しさんNGNG
VC++アプリからVBアプリが起動しているかどうかをFindWindowで探す方法はありますか?
VBアプリだとみんな同じクラス名になってしまうようですが。
ちなみにVBはV6です。
0290デフォルトの名無しさんNGNG
VBアプリが起動している事を検出するだけなんだから、
みんなおなじクラスでも問題ないと思いますが?
0291デフォルトの名無しさんNGNG
与えられたパスがフォルダかファイルかを知るには
どうしたらいいんですか?
おすぃえてー
0292デフォルトの名無しさんNGNG
>>291
オープンできたらファイル
0293デフォルトの名無しさんNGNG
>>291
APIでやるなら、GetFileInformationByHandleだろうな
Cランタイムも入れると_statあたりが楽かと
0294デフォルトの名無しさんNGNG
>>292
それダウト。
使う関数にもよるけど、CreateFileはディレクトリでもオープン可能。
0295デフォルトの名無しさんNGNG
GetFileAttributesでいいじょん
0296デフォルトの名無しさんNGNG
GetFileAttributesは?
0297293NGNG
>>295-296
む、すっかり忘れてた。
なんで、面倒な>>293のしか出て来なかったんだろう…(´д`;)
同等のCランタイム関数まで出てるのに orz
0298デフォルトの名無しさんNGNG
>>292-297
みんなみんなサンキュー
0299デフォルトの名無しさんNGNG
デスクトップやスタートメニューのパスを取得するにはどうすればいいですか?
0300デフォルトの名無しさんNGNG
SHGetSpecialFolderLocation
CSIDL_DESKTOPDIRECTORY
CSIDL_STARTMENU
0301デフォルトの名無しさんNGNG
>>293
賢い俺ならPathIsDirectory()けどな
0302デフォルトの名無しさんNGNG
>>299
SHGetSpecialFolderPath()
0303デフォルトの名無しさんNGNG
Path系のファンクションって
あまり知られていないのな
0304デフォルトの名無しさんNGNG
shlwapi。。。普及面からいえば、ほぼ間違いなく使えるはずだけど、
使えないかもしれないとかいろいろ考える。
0305デフォルトの名無しさんNGNG
>>303
IE4とかが必要だから、敬遠しててそれっきりだな。
0306デフォルトの名無しさんNGNG
95とかNT4以下を切り捨てればいい
0307デフォルトの名無しさんNGNG
もうとっくに切り捨ててはいるけど、なんか使いたいと思わないんだよな。
0308デフォルトの名無しさんNGNG
IE依存というのが、気分的にイヤ
0309デフォルトの名無しさんNGNG
気分でオナニー出来る奴はいいなぁ
0310デフォルトの名無しさんNGNG
Path系ファンクションっつーと、どしてもBegiPathとかそっちの方面を思い出す漏れ。
0311デフォルトの名無しさんNGNG
MAX_PATH 縛りがあるから却下<path系
0312デフォルトの名無しさんNGNG
Path系APIってlocale考慮してくれるの?
0313デフォルトの名無しさんNGNG
>>312
システムロケール固定だけど。
0314デフォルトの名無しさんNGNG
fopenしてNULLが帰ってきたらディレクトリ。
0315314NGNG
スマソ。リロードしてなかったよ・・・
0316デフォルトの名無しさんNGNG
ちゅうか一応 API スレだし…
0317デフォルトの名無しさんNGNG
こんばんは、質問よろしいでしょうか。
画像を何十個と表示したい場合、初期化関数などを別に作って、WndProcの中
のWM_CREATEなどでは、初期化関数を呼び出すだけにしたいのですが、
初期化関数で作ったビットマップハンドルを、自作描画関数で使おうと思うと
するとうまくいきません。
みなさんはどうしてるのでしょうか?
やはりグローバル変数を使用するしかないのでしょうか。
いろいろなハンドルがごちゃごちゃになって、手に負えません。。。
C言語で質問に上がろうと思いましたが、一応ウインドウの話題だと思い
こちらに質問させていただきました。
0318デフォルトの名無しさんNGNG
>うまくいきません。
うまくいかないとは、いったいどのような結果になり、
それがどのように問題なのかという、、
一番重要な部分を書かずに質問するのは何故ですか?
0319デフォルトの名無しさんNGNG
>>318
初心者だから。

知らない人間は何が悪いかさえわからないので
質問するときは、自分で判断せずにあらゆる情報を書き込むべきだと思う。
0320デフォルトの名無しさんNGNG
まずは住所氏名年齢電話番号好きな歌手好きな言語嫌いな言語好きな板嫌いな板ぐらいは書くべきだよな。
0321デフォルトの名無しさんNGNG
いま好きな人がいるかどうか、が抜けてるぞ、おい。
0322デフォルトの名無しさんNGNG
>>317
WndProcの中で同じ種類のハンドルだけを集めて配列または構造体として定義して、
各関数へはその配列または構造体へのポインタを渡すようにすればいいのでは?
この場合、ビットマップハンドルってことだから…
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
 static HBITMAP hBitmap[N_BITMAPS];
 …
 switch (uMsg) {
 case WM_CREATE:
  InitMyBitmaps(hBitmap);
  …
 }
 …
}
ってな具合。
質問の意図とは的外れの答えだったらスマソ。
0323デフォルトの名無しさんNGNG
オーナードローとかで描画する際、
ウィンドウ内の全部のコントロールの描画が終わったことって
どうやったらわかりますか?
wm_createの時点だとまだ形が無くて、
wm_drawitemだと一つ一つかいてる状態で・・・
終わったときにおくられるメッセージとかあったら
教えてください
0324デフォルトの名無しさんNGNG
>>321
いや名前も要る
0325デフォルトの名無しさんNGNG
バカジャネーノ( ´,_ゝ`)
0326デフォルトの名無しさんNGNG
>>323
描画の終わりって何よ?
0327デフォルトの名無しさんNGNG
今あるコントロールを全部一度描画したよ、みたいなことを
言ってるつもりなんですが
そういうのはメッセージで来ませんか?
0328デフォルトの名無しさんNGNG
来ません
0329デフォルトの名無しさんNGNG
んじゃ、ウィンドウ全体の画像を自動で保存したいときには
どのタイミングで取り込めばいいんですか?
0330デフォルトの名無しさんNGNG
cpu君の手が空いたとき
0331デフォルトの名無しさんNGNG
起動して1時間経過後のタイミングでお願いします。
たぶん描画が終わってます。
0332デフォルトの名無しさんNGNG
一時間だと暇だったので、別のウインドウを開いていたら、それが取り込まれました。
残念な結果です。
0333デフォルトの名無しさんNGNG
1時間経過後、スクリーンセーバーが立ちあがっていた罠
0334デフォルトの名無しさんNGNG
掃除のおばさんがコンセントを抜いてた。
0335デフォルトの名無しさんNGNG
>>329
自前でビットマップに描画してやればいいんじゃね?

自動でないのなら、キーボードの入力などをトリガーにすればいいと思うけど。
0336デフォルトの名無しさんNGNG
自前でビットマップにボタンとか描画ってのは
オーナードローで描画するってことですか?
それとも、createwindowでつくったやつらを
自前でビットマップに描画することとかできるんですか?
0337デフォルトの名無しさんNGNG
ツリービューでトップレベルのアイテムが表示される際に、
テキスト(またはアイコン)の左側にちょこっとスペースを空けることって
簡単にできないでしょうか?
何にもしないと、ツリービューの左端にくっついた感じになるんですが。
0338デフォルトの名無しさんNGNG
WM_NCCALCSIZEだっけな。
こいつで左端をずらしてやればいい。
0339デフォルトの名無しさんNGNG
OnIdle
0340デフォルトの名無しさんNGNG
ListViewでLVS_EX_CHECKBOXESのスタイルを設定すればチェックボックス
付きの行ができますが、このチェックボックスをオン・オフしたときに
なんらかの反応をさせたい(コールバックなど)場合はどうすれば
よろしいでしょうか?

ご教授お願いします

0341デフォルトの名無しさんNGNG
LVN_ITEMCHANGED
0342デフォルトの名無しさんNGNG
適当にどんな順番でコントロールに対して
WM_DRAWITEMが発行されてるのか見てみたら
createwindowしたのとは逆順だったんですが、
(最初にcreatewindowしたやつが最後にwm_drawitemメッセージ出されてた)
これって絶対そうなんですか?
それともたまたま?
0343デフォルトの名無しさんNGNG
>>342
たまたま
0344デフォルトの名無しさんNGNG
>>342
きんたま
0345デフォルトの名無しさんNGNG
ω
0346デフォルトの名無しさんNGNG
(´・ω・`)
0347デフォルトの名無しさんNGNG
WININETでWebページの読み込みを行っています。
ユーザが「読み込み中止」ボタンを押したら、読み込み処理を中断する方法はあるでしょうか?
0348347NGNG
あ、InternetOpenUrlやInternetReadFileがいつまでたっても戻ってこないような状況を
想定しています。
0349340NGNG
>>341
ヒントありがとうございます
そのまわりを調べてテスト実装してみたのですが、
そもそもチェックボックスのオン、オフ操作でNotifyメッセージにも飛んでいないようです。
何か最初に設定しておくべきフラグとかあるのでしょうか?

0350デフォルトの名無しさんNGNG
GetDeviceCapsをつかって、Bitbltが使えるかどうかを調べたんですが
XPでは返値が0で98seだと260になりました。
これってどういうことですか?
0351デフォルトの名無しさんNGNG
すみません、使い方間違ってました。。。
orz
0352デフォルトの名無しさんNGNG
矢印やファンクションキー等、2バイト文字のWM_...を教えてください。
1バイトはWM_CHARで、wParamに文字が入っているのでできるのですが。
0353デフォルトの名無しさんNGNG
wParamはいつから1バイトになったんだ?
0354352NGNG
>>353
そう意味ではないです。wParamはたぶん4バイトだと思います。
1バイト文字を押した時、WM_CHARメッセージが発行され、
wParamに文字が入りますが、
2バイト文字を押してもWM_CHARは発行されず、
当然wParamを調べる意味はありません。
WM_WIDECHARみたいなメッセージを探しても無いですし。
0355デフォルトの名無しさんNGNG
imechar
0356353NGNG
WM_KEYDOWN
0357352NGNG
>>355
WM_IME_CHARは文字列?のですかね。
調べたのですが、難しくて分かりませんでした。
ただ、調べているとき、WM_KEYDOWN + VK_... で出来ることが分かりました。

お二方どうもありがとうございました。
0358352NGNG
>>356
すいません。リロードされていなくて。
まさしくそれでできました。ありがとうございました。
0359347NGNG
>>347ですが、非同期アクセス時のINTERNET_STATUS_CALLBACKの解説で、

INTERNET_STATUS_HANDLE_CREATED
Used by InternetConnect to indicate it has created the new handle.
This lets the application call InternetCloseHandle from another thread,
if the connect is taking too long. The lpvStatusInformation parameter
contains the address of an INTERNET_ASYNC_RESULT structure.

という記述があり、ハンドルを別スレッドからクローズしてしまえばいけるんじゃないかと予想。
ので、そこらへんを試してみます。でわ。
0360デフォルトの名無しさんNGNG
ふと思ったのですが、
メッセージキューってスレッドセーフなのでしょうか?
複数のスレッドから特定のウィンドウにPostMessageするプログラムを書いてて思いました。
0361デフォルトの名無しさんNGNG
スレッドセーフだよ。
だからキューが一杯だと PostMessage は失敗する。
送る方はね。

受ける方はスレッド単位にキュー持ってるので、
そもそも他のスレッドのキューは見れない。
0362デフォルトの名無しさんNGNG
>>361
レスありがとうございます。
PostMessageの戻り値だけ意識すればよいので、楽でよかったです。
0363デフォルトの名無しさんNGNG
windows.hで定義されているTCHARは
UNICODEが定義されていればWCHARで、
そうでなければcharでtypedefされていますが

ソースファイル上、windows.hより上には大抵何も記述していないし
何もインクルードしていないはずですが
コンパイル時にプリプロセス処理される時
このUNICODEというマクロはどこで定義されているんでしょうか?
0364デフォルトの名無しさんNGNG
コンパイラオプションじゃねーかー
0365362NGNG
レスさんくす。

ぐぐったら自己解決しました
コンパイラの事前定義マクロだったんすね
0366デフォルトの名無しさんNGNG
事前定義マクロっていうと、__FILE__とか__LINE__とかみたいで紛らわしいからヤメレ。
0367デフォルトの名無しさんNGNG
>>341
ヒントありがとうございます
そのまわりを調べてテスト実装してみたのですが、
そもそもチェックボックスのオン、オフ操作でNotifyメッセージにも飛んでいないようです。
何か最初に設定しておくべきフラグとかあるのでしょうか?
0368デフォルトの名無しさんNGNG

あるスレッド( たとえば、GetCurrentThread で取得したスレッドハンドル が指しているスレッド)が、プライマリスレッドかどうかを知るにはどの API を利用すればいいでしょう?
0369デフォルトの名無しさんNGNG
Windows2000で、ユーザー補助のシリアルキーデバイスの設定情報を取得したり、
設定したりするにはどうすればいいのでしょうか?

SystemParametersInfo関数の、SPI_GETSERIALKEYSや、SPI_SETSERIALKEYSは、
WindowsNT/2000では未サポートとMSDNに書いてあったのですが、コントロールパネル
からシリアルキーデバイスの設定を行う事は可能なので、、何か別の手段があると思うん
ですが…
0370デフォルトの名無しさんNGNG
>>368
そのスレッドに結び付けられたWindowハンドルを取得してみれば判断できると思うが。
0371370NGNG
GUIアプリに限るか。
プロセスのスレッド一覧を調べて、1番最初のだったら、でも判断できるかな。
0372368NGNG
>>370 に言われたとおり、
CreateToolhelp32Snapshot で、スレッドの一覧を取得し、
現在のプロセスで検索してみました。
確かに、先頭にプライマリスレッドがきます。
ありがとうございます。

ところで、実験していて気がついたのですが、
::GetCurrentThread() でスレッドのハンドルを取得すると、常に -2 が
帰ってきているようなのですが、これはなぜなのでしょう?
0373デフォルトの名無しさんNGNG
>>372
MSDN嫁ばわかるが、定数が返るそうだ。
0374デフォルトの名無しさんNGNG
>>369
あの文面を見ると、おそらくAPIとしては無くなってるんじゃない?
直接レジストリ操作しか無い気がする。
0375デフォルトの名無しさんNGNG
LoadImageとかCreateDIBSectionとかした後に
GetLastErrorをすると、8が返ってきて
で、8の意味が記憶領域が足りないってことみたいなのに
ちゃんと画像はうつるのは何で?
このエラーはどういうことなの?
0376デフォルトの名無しさんNGNG
>>374
なにー

コントロールパネルの[ユーザー補助]-[全般]-[シリアルキーデバイス]の
設定をちまちま弄って[適用]ボタンを押しても再起動を要求されないから
レジストリじゃないと思ったんだけどな(´・ω・`)

レジストリを比較してみるよ…(´・ω・`)
0377368NGNG
>>373
確かに書いてありますね。見落としていました。
擬似ハンドルを API に渡すと、ハンドルとして理解されるという部分は面白いですね。

ということは、プライマリスレッドで取得した擬似ハンドルをグローバル変数に保存しておいて、
ワーカースレッドからそれを参照すれば、その擬似ハンドルはワーカースレッドとして解釈されるわけか。
知らないとエライ目にあいそうだ。
0378デフォルトの名無しさんNGNG
>>375
MSDN引けば分かるが、"全てのAPIが成功時にSetLastError(0)を呼ぶわけではない"から。
基本的にAPIが失敗したときに情報を伝えるためなのがSetLastError/GetLastError。
0379デフォルトの名無しさんNGNG
>>378
じゃあ、あまり神経質に気にすることでもないってことですね
0380デフォルトの名無しさんNGNG
エラーが出てないのにGetLastErrorをするなということだ
0381デフォルトの名無しさんNGNG
なんだったか、返り値でエラーになってるんでGetLastErrorしたら分けわからんコードが出て、
不審に思ってAPI呼び出し直前にSetLastError(0)を入れたら案の定エラーコードが0になって
結局そのAPIがエラーコードセットしてないだけじゃねぇか、ってのはあった気がするな。

あとまぁ、Win9xで16bit側に実体があるAPIはそもそもエラーコードをセットしないとか。
0382デフォルトの名無しさんNGNG
こんにちは、C++初心者です。
私はC言語を少しかじった程度で、Win32APIでダイヤログベースのアプリを勉強中です。

ダイヤログのテキストBOX(?)に、例えば、LANカードのデバイスマネージャーのリソースの
一つであるI/Oポートアドレスを表示させたいと思っています。
しかし、レジストリエディタで探してもI/Oポートアドレスが何処にあるのか分かりません。

RegOpenKeyEx等で取得出来るものでしょうか?
何かの本に、Win95・98系はiniファイルに格納され、NT・2000・XPはレジストリに
格納されるとか書いてあったような気がしますが自信がありません。

どなたか初心者の私でも分かるように、アドバイスをお願いします。
0383デフォルトの名無しさんNGNG
VBで、APIを使ってFTPからダウンロードするソフトを作ってるんだけど、
FTPに何個ファイルがあって、フォルダ構造もどうなっているか分からない
状態で、1ファイルずつすべてのファイルをダウンロードしていくことって
できますか?
0384デフォルトの名無しさんNGNG
>>383
そのようにプログラミングすればできます。
0385 NGNG
>>384
383じゃないが糞レスするくらいなら書き込むな。
0386デフォルトの名無しさんNGNG
>>385
384じゃないが可能か不可能かを聞いてるんだろ?
0387デフォルトの名無しさんNGNG
384じゃないが、脳味噌の代わりに糞が詰まってる385は氏ね
0388デフォルトの名無しさんNGNG
ローカルのディスク上のファイルをFindFirstFile()から列挙する方法を知っていれば、
FtpFindFirstFile()とかまんまな名前のAPIがあるんでそれでいける。
0389デフォルトの名無しさんNGNG
>>383
とりあえずFTPについて勉強し直せ。
0390デフォルトの名無しさんNGNG
これって WIN32API の話か?
0391デフォルトの名無しさんNGNG
APIを使って出来るか、という質問だからオケだろ。
ちなみに388の方法でも必ず出来るとは限らないわけだが、
出来ない場合にはどうやっても出来ないのでしょうがない。
0392デフォルトの名無しさんNGNG
http://www.kumei.ne.jp/c_lang/index.html
ここいろんなところで紹介されてるけど、なんかすごく読みにくいな。
プログラムソースを全部示して、そこにコメント文を挿入すればいいのに
余計な親切で、プログラムをぶちぎっていろいろ書き込んでるからプログラムの
全体構成とかつながりがわかりづらい。
0393デフォルトの名無しさんNGNG
そんな感想文を書くスレじゃないんだよここは。
0394デフォルトの名無しさんNGNG
ここは私の日記帳。
0395デフォルトの名無しさんNGNG
>>392
こっちにすれば?
http://black.sakura.ne.jp/~third/system/winapi/win.html
0396デフォルトの名無しさんNGNG
タスクトレイに常駐するアプリで、何か知らせたいことがあるときに
黄色いポップアップヘルプ?(htmlでいうimg alt="hogehoge"のような)
を出すものがあるんですが、こういうの出すにはどうすればいいんでしょうか?
WinHelp()を使うよーなそうでもないようなことをちらほら見るのですがいまいちわからず…。
0397デフォルトの名無しさんNGNG
NIN_BALLOONSHOW
0398デフォルトの名無しさんNGNG
GetMessage()は、メッセージキューにメッセージが無い場合
・メッセージを取得するまで内部でループ(待機)しつづけるのか
・メッセージが無ければ、終了してリターンするのか
どちらで実装されているんでしょうか?
0399デフォルトの名無しさんNGNG
スレッドサスペンドしてメッセージがくるまで寝てる
0400デフォルトの名無しさんNGNG
レスさんくす。
要するに上のレスなら前者が近いということですね
0401デフォルトの名無しさんNGNG
>要するに上のレスなら前者が近いということですね

寝てるのとループでアイドルしてるのとは大違い
0402デフォルトの名無しさんNGNG
誰か367の問いにも答えてやれyo
困り果てているじゃないか
0403デフォルトの名無しさんNGNG
367=402
0404デフォルトの名無しさんNGNG
システムフックでキー入力の特定の"文字列"だけを奪い取る事ってできますか?

たとえば"ABCDE"という文字列の場合は奪ってしまい、それ以外の文字列は
本来のソフトに素直に渡すという動作です。
#1文字だけでの判断は問題ありませんが、前後数文字の組み合わせで
#比較しなければならない状況のことです

USBに付けた装置が、不定期に数種類のパターンをキー入力扱いで送ってくるので、
これを調べて上記動作をさせたかったのです。キーフックだと1文字ずつの処理に
なるため、'E'を受け取るまで"ABCD"の処理を遅延したいと考えましたが、
次に'E'が来ない場合は速やかに"ABCD"を本来のアプリに送らなければなりません。

WH_KEYBOARD意外に適切な方法がありますか?
かなりはまってます。どなたか指針だけでも示してもらえると大変助かります。

0405デフォルトの名無しさんNGNG
>>367
もれだったらさー,いろいろ文献漁るの面倒臭いんで
メッセージループの部分で
 while (GetMessage(&msg) > 0) {
  catch_message(&msg); // これな
  DispatchMessage(&msg);
 }
みてーな関数挟むんだよ。
この catch_message() の中では WM_MOUSEMOVE とか WM_NCHITTEST とか
眠てーメッセージは全部無視して,あんま見かけないメッセージだけを
リストアップするわけよ。
結構いいヒントが出てきたり,そうでなくてもマジ勉強になったりするからよー。

つーかもれもListViewの事あんまよく分かってねーです。スマソ。
0406デフォルトの名無しさんNGNG
何故Spy++使わないのだ…。
0407デフォルトの名無しさんNGNG
>>404
その「USBに付けた装置が送ってくるキー」の間隔の最大時間を計って、
キーが入力されなかった時間が、その最大時間を超えた場合、タイムアウトとして
今まで横取りした文字を本来のアプリに送れば良いんじゃないの?
0408404NGNG
>>407
その方法だとアプリ起動中は、他のアプリへのキー入力も
微妙なタイムラグが生じるようになりますよね?

でも、装置からの受信はせいぜい1秒程度だと思う(未計測)ので
一応その方針で実装してみます。

# キー入力時にどのキーボードから入力されたかを知る方法って
# ないんですかね。。。もしあれば一発なんですが。

レスありがとうございました。
0409デフォルトの名無しさんNGNG
spyでWM_NOTIFYの情報展開してくれるとうれしいんだけどなー。
ただでさえコモンコントロールって多機能なんだし。
0410デフォルトの名無しさんNGNG
>>407の手順だと、途中の文字のHook時点では、基本的に
CallNextHookExしないでreturn TRUEすることになるよな

ということは、他にKeyboardHookしているソフトが存在した場合
そのソフトへのHookを殺すことにならないか?
0411デフォルトの名無しさんNGNG
>>409
もまいSPY++の作者知ってて言ってるのか?
0412デフォルトの名無しさんNGNG
Spy++ copyleft Microsoft Corp. 1995
0413デフォルトの名無しさんNGNG
Control Spyというのが昔あった気がするが。
0414デフォルトの名無しさんNGNG
DirectDrawを使用せず
オフスクリーンサーフェイスのアドレスを取得し直接描画をしたいのですが
どのようにすればいいのでしょうか
0415デフォルトの名無しさんNGNG
>>408
特定の USB デバイスからのキー入力の処理だったら、
「Raw Input」の関数群を使えば出来そうな気がするが…

使ったこと無いけど、なんとなくそれっぽい関数があるよ。

GetRawInputDeviceInfo
GetRawInputDeviceList
GetRegisteredRawInputDevices
RegisterRawInputDevices

ただ…面倒くさそうだw
0416デフォルトの名無しさんNGNG
>>413
MSJにあったやつだな。あれはかなり参考になった。
0417デフォルトの名無しさんNGNG
ダイアログボックス(hWnd)のコンボボックス(COMBO)に"+","−","×","÷"と入れたくて
SendDlgItemMessage(hWnd,IDC_COMBO,CB_ADDSTRING,0,(LPARAM)"+");
SendDlgItemMessage(hWnd,IDC_COMBO,CB_ADDSTRING,0,(LPARAM)"−");
SendDlgItemMessage(hWnd,IDC_COMBO,CB_ADDSTRING,0,(LPARAM)"×");
SendDlgItemMessage(hWnd,IDC_COMBO,CB_ADDSTRING,0,(LPARAM)"÷");
SendDlgItemMessage(hWnd,IDC_COMBO,CB_SETCURSEL,0,0);
という風に書いたんですが、うまく入りませんでした。

どうすればいいんでしょうか?
0418デフォルトの名無しさんNGNG
文字列とは何かを考える
0419デフォルトの名無しさんNGNG
自称エスパーの父が「WM_INITDIALOGに書け」と申しております。
0420デフォルトの名無しさんNGNG
>>414
CreateDIBSection() のことかい?
0421デフォルトの名無しさんNGNG
>>417
>>418, >>419とは別の視点でいくと…
コンボボックスの高さのサイズを、小さく設定しすぎてる。
昔、これではまったことがある。
0422デフォルトの名無しさんNGNG
つーか、よくそんな長ったらしい行を4回も書く気になるなぁ。
0423デフォルトの名無しさんNGNG
>>420
ありがとうございます
調べて使ってみます
0424デフォルトの名無しさんNGNG
>>414
WinG を使ってみるとか。
0425デフォルトの名無しさんNGNG
>>424
ググってもよく分かりませんでした
DIBSectionと同じものと考えてよいのでしょうか
0426デフォルトの名無しさんNGNG
GetUserName()で取得できるユーザー名ですが、
WindowsXPでコントロールパネルから「ユーザー名の変更」を行っても、
変更前の名前が出てきます。
ログオン時に入力する名前や、スタートメニューに表示される名前は
変更後のものになっています。
しかし、環境変数 USERNAME も変更前の名前でした。

「ユーザー名の変更」に対応した名前を取得するにはどうすればいいんでしょうか?
0427デフォルトの名無しさんNGNG
>>426
アカウント名、フルネームって知ってるか?
GetUserName()で取得できるのは、アカウント名だろ。
ログオン時に入力する名前や、スタートメニューはフルネームを表示しているだけ。
0428デフォルトの名無しさんNGNG
>>426
GetUserNameExの方を使え
0429405NGNG
>>406 spy++でもいいけどさーって書き込もうとしたら
なんか書き込めないままバイトの時間になちゃてよー。

つーわけで >>367 へ。spy++でもいいけどさー。。。
0430405NGNG
いやちょと待てよ。SendMessage()されたメッセージは
メッセージキューには溜まんねーんだよな?
じゃあ,405の方法はまったく中途半端じゃねーか。
spy++の方が*断然*いいなー。。。
0431デフォルトの名無しさんNGNG
Spy++知ってたら>>405見たいなレスしないだろ…
0432405NGNG
orz...
0433デフォルトの名無しさんNGNG
そう、気を落とすな。

0434405NGNG
>>431
言い訳させて言い訳。
もれの spy++ がなぜか起動しなくなちゃたわけよ。
再インスコしても,アタシ全然だめーみたいな。
だからもれいつも405みたいにやってたり
WndProcの中であんなことやこんなことしたりしてる。うへへ。
spy++の事はぜんぜん頭に無くなったね。
0435デフォルトの名無しさんNGNG
>>434
いっぺんレジストリ覗いてspi++関係の設定削除してみろ
0436426NGNG
>>427,428
ありがとうございます。早速試してみました。
とりあえず、自分のマシン(Windows2000)で、
EXTENDED_NAME_FORMAT に列挙されている値全てに対して
GetUserNameEx()を呼び出し、結果を画面に出してみました。
すると、
 SamCompatible - 'マシン名\ユーザー名'
 DnsDomain - Error 87
 あと全部 - Error 1332
となりました。
Error 1332 は ERROR_NONE_MAPPED らしいです。

問題のマシンでもテストするつもりですが、
ほとんどエラーになってしまったのが心配です。
テストしたソースを貼らせてもらいますんで、突っ込みあればお願いします。
0437426NGNG
#include <stdio.h>
#define _WIN32_WINNT 0x0500
#include <windows.h>
#include <Security.h>
struct named_format { EXTENDED_NAME_FORMAT id; char const* name; };
#define NAMED_FORMAT( Symbol ) { Name##Symbol , #Symbol }
struct named_format const formats[] = {
  NAMED_FORMAT( Unknown ),NAMED_FORMAT( FullyQualifiedDN ),
  NAMED_FORMAT( SamCompatible ),NAMED_FORMAT( Display ),
  NAMED_FORMAT( UniqueId ),NAMED_FORMAT( Canonical ),
  NAMED_FORMAT( UserPrincipal ),NAMED_FORMAT( CanonicalEx ),
  NAMED_FORMAT( ServicePrincipal ),NAMED_FORMAT( DnsDomain ),
};
#define NUM_FORMATS ( sizeof( formats ) / sizeof( formats[0] ) )
#define NAME_BUFFER_SIZE 1024
int main()
{
  int i;
  for( i = 0 ; i < NUM_FORMATS ; ++i )
  {
    struct named_format const* const format = &formats[ i ];
    TCHAR username[ NAME_BUFFER_SIZE ];
    ULONG buffer_size = NAME_BUFFER_SIZE;
    if( GetUserNameEx( format->id , username , &buffer_size ) )
      printf( "%s - '%s'\n" , format->name , username );
    else
      printf( "%s - Error %d\n" , format->name , GetLastError() );
  }
  return 0;
}
0438デフォルトの名無しさんNGNG
インターネットの接続時間(継続時間)を取得したいんですが
どうやれば出来ますでしょうか?
レジストリとかから取得するんですかね?
0439デフォルトの名無しさんNGNG
まず、「インターネットの接続時間」とやらを定義してみろ。
0440438NGNG
>>439
え〜と、ネットに繋いでいる時にタスクトレイのアイコンから
状態確認した時に「継続時間」と表示されているものが自分で取得したいんです。
取得できるAPI関数とかありますか?
0441デフォルトの名無しさんNGNG
>>438
てか、>>439の質問の答えがわかれば、どうすりゃいいか分かるんじゃねーか?
0442438NGNG
>>441
さっぱりです。。。
一体どういう事なんでしょう?
0443デフォルトの名無しさんNGNG
>>438
Win32_NetworkAdapterで検索してみな
0444デフォルトの名無しさんNGNG
2つのレジストリハンドルが同じキーを参照しているかどうかを
チェック判断する方法を探しています。

とりあえず、ハンドルからキーのフルパスを取得して文字列を比較すれば
いいかなと思い RegXXX 系の API を調べてみたのですが、完全キー名を
取得できる API は見つかりませんでした。

何か良い方法は無いでしょうか?
0445デフォルトの名無しさんNGNG
RegQueryInfoKeyで得られるすべての情報を比較するとか、
ハンドルを比較するという設計を見直すとか。
0446デフォルトの名無しさんNGNG
int WINAPI WinMain(ry
{
  //LoadLibrary("user32.dll");
  ATOM atom = GlobalAddAtom("null po");
  if (atom != 0) GlobalDeleteAtom(atom);
  return nAtom;
}

user32.dllをロードしないとGlobalAddAtomが成功しないのは仕様なのでしょうか?
0447446NGNG
×return nAtom;
○return atom;
0448デフォルトの名無しさんNGNG
え?
0449デフォルトの名無しさんNGNG
>>446の環境では、user32.dllをロードすると、
そのコードでも行けるん??
0450デフォルトの名無しさんNGNG
>>436
亀レス、スマソ。
NetUserGetInfo()を使えばおけ。USER_INFO_10のusri10_full_nameあたり。
GetUserNameEx()だとドメイン認証していないとだめだったね。
0451デフォルトの名無しさんNGNG
今、半透明ウィンドウのコードを書いているんですが
一旦、半透明スタイルを設定していまうと
スタイルをもとに戻しても、重いままになってしまいます。
実際タスクマネージャーで見ると、設定前のCPU使用率より上がってしまったままになってます…
何か解決策はないでしょうか?

以下がコードです。

//半透明設定
SetWindowLong(hWnd, GWL_EXSTYLE, GetWindowLong(hWnd, GWL_EXSTYLE) | WS_EX_LAYERED);
SetLayeredWindowAttributes(hWnd, 0, 128, 2);

//半透明解除
SetLayeredWindowAttributes(hWnd, 0, 255, 2);
SetWindowLong(hWnd, GWL_EXSTYLE, GetWindowLong(hWnd, GWL_EXSTYLE) & ~WS_EX_LAYERED);
0452デフォルトの名無しさんNGNG
>>451
MSDNの例示では、解除の時にRedrawWindowを呼んでるけど、
それでもダメ?
0453デフォルトの名無しさんNGNG
スタイルを変更した後はSetWindowLong等を遣うべき
0454デフォルトの名無しさんNGNG
っていうかAPIでそれ以外に何か方法あるの?
CWnd::ModifyStyleとかでなくて?
0455デフォルトの名無しさんNGNG
XPて標準でZIP圧縮できますが、これを自分のソフトでDLL無しでやる方法を教えてください
0456デフォルトの名無しさんNGNG
>>455
zip圧縮のロジックを実装するだけ。
どこかからパチってきてもいいけど。
0457デフォルトの名無しさんNGNG
>>455
http://www.icsharpcode.net/OpenSource/SharpZipLib/
0458デフォルトの名無しさんNGNG
>>455
zlibにzip圧縮・伸張のサンプルが付いてる
0459デフォルトの名無しさんNGNG
というか、そのままzlibを使えばいいんじゃ・・・
0460デフォルトの名無しさんNGNG
あの辺のライブラリって日本語ファイル名とか大丈夫だったか?
0461デフォルトの名無しさんNGNG
>>460
ライブラリ側でパスの分割とかするわけじゃないから問題ないんでないの?
とりあえず、トラブッたことないなあ。

心配なら「表」とかの\を含むファイル名でテストしてみればいい。
0462458NGNG
>>459
だからzlibの使い方のサンプルがあると言ってるんだが
0463デフォルトの名無しさんNGNG
>>455がzip圧縮をしたいのか、単に圧縮をしたいのかは微妙。
0464451NGNG
>>452
原因が分かりました。
裏DCバックバッファを使ってウィンドウにビットマップを描画してたのが原因らしいです。
どうやら、一旦裏DCに描画した後、表DCに転送する処理をして尚且つ、
半透明ウィンドウ設定をすると、いっきにCPU使用率が上がってしまうみたいです…
半透明設定をした場合でも、いきなり表DCに描画した場合は殆どCPU使用率は上がりませんでした。

裏画面使用時 :13〜16%
裏画面不使用時:0〜2%

みたいな感じになってました。
でも、処理の関係上どうしても裏DCを使って描画しないと
ちらついてしまうので、いきなり表には描画出来ないんですよね…
0465デフォルトの名無しさんNGNG
ものにもよるが子ウィンドウとか張ってないならUpdateLayerdWindowで
裏DC(DibSection)から転送かければいいと思うが。
まぁ、メインメモリの転送速度とかでいろいろ負荷はあるが。
0466デフォルトの名無しさんNGNG
スレッドの切り替えについて聞きたいんですが
現在のスレッドから、別のプロセスのスレッドに切り替わるのは
内部的にはプロセスの切り替えが行われているんですよね?
0467デフォルトの名無しさんNGNG
>>466
なんでそんなこと聞くんだろうと思ったけど、
もしかして「プロセスは切り替わるけどスレッドは切り替わらない」可
能性を考えてる?
0468デフォルトの名無しさんNGNG
>>467
いや、単純に
同一プロセス内のスレッドの切り替え⇒スレッドの切り替え(オーバーヘッド低い)
別プロセス間のスレッドの切り替え⇒プロセスの切り替え(オーバヘッド高い)

これで当ってますでしょうか?
0469デフォルトの名無しさんNGNG
>>468
同一プロセスかどうかにかかわりなく、オーバーヘッドは同じ。
0470デフォルトの名無しさんNGNG
>>469
マジっすか?
論理メモリ空間が変われば
いろいろとコンテキストに関わるデータを
レジスタに退避させたりして、忙しそうですが?
0471デフォルトの名無しさんNGNG
>>470
スレッドが切り替わる場合、スケジューラ(スレッド管理する人)というプロセスに
切り替わるわけだから、

スレッドA→スレッドB ではなく、
スレッドA→スケジューラ→スレッドB だから、
スレッドが切り替わる時にはプロセスの切り替えが常に2回発生している。
スレッドAとBのプロセスが同じかどうかなんて関係なしに、手間は一緒。
0472デフォルトの名無しさんNGNG
>>471
参考になりました。ありがとう
0473デフォルトの名無しさんNGNG
うむ、Windows みたいな 1:1 スレッドだとスレッド切り替えもプロセ
ス切り替えも差はないかもね。

NetBSD や Solaris の N:M スレッドだと、同一プロセス間のスレッド
切り替えのほうが異プロセス間の切り替えより一般的に速くなります。

0474デフォルトの名無しさんNGNG
ダイアログボックスのエディトボックスとコンボボックスから値を取得したいんですけどうまくいかないんです。
ソースは以下のような感じです。

long no1,no2;
int com;
省略
GetDlgItemText(hWnd,IDC_EDIT1,(char*)no1,sizeof((char*)no1));
GetDlgItemText(hWnd,IDC_EDIT2,(char*)no2,sizeof((char*)no2));
com = SendDlgItemMessage(hWnd,IDC_COMBO,CB_GETCURSEL,0,0);

一応グーグルトかで調べてみたんですけど、大体のところはこれと同じような書き方でした。
どこがおかしいんでしょうか?
0475デフォルトの名無しさんNGNG
>>474
ようソースとMSDN見ろ。
0476デフォルトの名無しさんNGNG
long を char* にキャストした時点で変だと思わんか?
0477デフォルトの名無しさんNGNG
>>474
値を取得したいなら、GetDlgItemIntを使え

まぁ、それ以前の問題という説もありそうだが・・・
0478デフォルトの名無しさんNGNG
CreateProcessやShellExecuteで作成したプロセスを終了させるにはどうすればいいのでしょうか?
0479デフォルトの名無しさんNGNG
プライマリスレッドを殺そう
0480デフォルトの名無しさんNGNG
CPUは逐次スレッドを読み込むだけだから
異なるアプリの論理空間のコードを読み込むには
OSがいろいろ動いて、実行環境をスイッチするわけなんですよね?

このOSが実行環境を整えるのに掛かるオーバーヘッドは、
同プロセスのスレッド切り替えと比較しても無視できるほどそんなに小さいものなんでしょうか?
>>469>>471のレスを読んでると、そう読み取れたんですが
0481デフォルトの名無しさんNGNG
グーグルト
0482デフォルトの名無しさんNGNG
>>478
まずプロセスにどうにかして終了してもらうようにお願いする。
(例えばGUIアプリならWM_ENDSESSIONとか)
それでもだめならTerminateProcess(素人にはオススメできない)
0483デフォルトの名無しさんNGNG
>>478
TerminateProcess()で思いっきり終了させて下さい
0484デフォルトの名無しさんNGNG
>>478
起動したプロセスのウィンドウハンドルを
つかまえてWM_CLOSE投げるとか。
0485446NGNG
>>449 遅くなってすみません。
動的、静的を問わず user32.dllがロードされていれば成功します。
2K SP4 と XP SP1 で試してみました。

それはさて置き

dll内で、グローバルオブジェクトのコンストラクタ中に
自身のリソースにアクセスしたいんですけど
そのdll名が変化する場合、GetModuleHandleでは無理ですよね。
VirtualQueryで取得したアドレスとかは保証されてないだろうし…
他に何か方法は無いでしょうか。
0486デフォルトの名無しさんNGNG
>>480
何を知りたいのか、何を心配してるのかようわからんが、
そもそもスレッドの切り替えに要する時間そのものが無視できるほど微々たるもの。
スレッドの切り替えを大げさに考えすぎじゃないか?
基本的には数十個のCPUレジスタのロード,ストアだけで実行環境は切り替わる。
0487デフォルトの名無しさんNGNG
それでも単純にスレッド切り替えをしているとGDIパフォーマンスが足りなかったので
NTではカーネルモードの高速スレッドスイッチングを実装してたような
0488デフォルトの名無しさんNGNG
GDIがユーザモードからカーネルモードに移動した時には、
いろいろ問題あったなぁ。
0489デフォルトの名無しさんNGNG
>>485
MFC環境か?なら↓だと思ふ。

http://www.microsoft.com/japan/msdn/library/ja/vccore/html/_core_exported_dll_function_entry_points.asp?frame=true
0490478NGNG
TerminateProcessはうまくいきました。
# ShellExecuteのハンドルでは駄目でしたが…

もうひとつの方はこんな流れでいいのでしょうか。
1. CreateProcessでプロセスを生成(hProcessを取得)
2. hProcessの持つウィンドウを検索(hWndを取得)
3. hWndに対してSendMessage(WM_ENDSESSION or WM_CLOSE)する
4. WaitForSingleObject(hProcess)で終了待ち。

それで2.はどうすればいいのでしょうか。
ウィンドウのキャプションで検索するのは不確実ですよね。
0491デフォルトの名無しさんNGNG
タイムスライスの10msに比べれば、微々たるものだが、
頻繁にスレッド切り替えが発生するような設計なら無視できなくなるかも。
というか、その設計自体に問題がありそうだが。
0492デフォルトの名無しさんNGNG
>>490
ShellExecuteではなくShellExecuteExを使う
0493デフォルトの名無しさんNGNG
>>490
EnumWindows()とGetWindowThreadProcessId()の組み合わせでどうじゃろ
0494デフォルトの名無しさんNGNG
スレッドやプロセスの切り替えオーバヘッドが気になるようなら、
Fiber を使いませう。

0495446NGNG
>>489
すいません、レス頂いて恐縮ですけど

MFC嫌いなんで使ってません。
0496480NGNG
みなさんレスありがとうございます。オーバーヘッド云々は
どうも、マルチプロセス環境のプロセス切り替えと
マルチスレッド環境のプロセス切り替えとを混同してたっぽい
0497デフォルトの名無しさんNGNG
>>446
お前がどうやって成功しないと判断したのかかけ
0498デフォルトの名無しさんNGNG
>>485
とりあえずGetLastErrorしてみたら?
0499デフォルトの名無しさんNGNG
>>495
DLLのリソース取得するのに自分自身のHMODULEが必要だってんなら
DllMainの引数にあるやつどっかにとっとけば?
0500446 & 485NGNG
>>497
GlobalAddAtomとGetLastErrorの戻り値を MessageBoxで表示したときと
OutputDebugStringで表示したときと違ったから。
確かに user32.dllと決めつるのはマズイですね。

>>499
グローバルなオブジェクトのコンストラクタは
DllMainより前に呼ばれるんですよ。
0501デフォルトの名無しさんNGNG
>>500
んじゃ素直に初期化をDllMainでやれ。
0502478NGNG
無事成功しました。皆さんありがとうございます。
せっかくなのでソースを貼っておきます。

CreateProcessやShellExecuteで作成したプロセスを終了させるサンプル
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1086258254&res=2
0503デフォルトの名無しさんNGNG
動画ファイルからBMP形式で特定のフレームを取り出したいのですが、
AVI以外の形式の場合の取り出し方がわかりません。
OSにインストールされているコーデックを利用出来れば
取り出せるようになると思うのですが、
自作アプリからそれらのコーデックはどうやったら呼び出せるのでしょうか?
0504デフォルトの名無しさんNGNG
>>502
ざっと見て気になったところ
・WM_CLOSEでメインウィンドウが閉じられたからといってプロセスが終了するとは限らない。
 WM_QUERYENDSESSION/WM_ENDSESSION(Windows終了/ログオフ時のメッセージ)
 のほうがより確実だと思う。
・対象プロセスが死んでると道連れになるからWaitForでINFINITE待機はやめれ
0505デフォルトの名無しさんNGNG
>>503
DirectShowでできるんでない?
0506デフォルトの名無しさんNGNG
>>500
>グローバルなオブジェクトのコンストラクタは
>DllMainより前に呼ばれるんですよ。

その DllMain は偽者ですよ。
リンカの設定で本物が指定してあるはずなんで、
それを書き換えるなりしてください。
0507デフォルトの名無しさんNGNG
>>446が言ってるのって、これかな
ttp://www.tech-archive.net/Archive/Development/microsoft.public.win32.programmer.kernel/2004-03/0851.html
0508デフォルトの名無しさんNGNG
>>502
ThreadのHANDLEもCloseしておけよ。
0509503NGNG
>>505
レスありがとうございます。
DirectShowで検索してDXSDKのGrabBitmapsにたどり着きました。
これがやりたい事そのものみたいです。

しかしこのサンプルを実行してみると、
hr = pGraph->Connect( pSourcePin, pGrabPin );
の行で必ずVFW_S_PARTIAL_RENDERが戻ってきており、
またcallbackも呼ばれません。
どなたかこのエラーの回避法をご存じ有りませんでしょうか?
0510EarthquakeNGNG
はじめまして。Earthquakeと申します。
Windows2000サーバのActiveDirectoryを使用している環境でのフォルダリダイレクトの設定を出力したいのですが、Win32APIでそんな関数ないですか?
0511デフォルトの名無しさんNGNG
#include <windows.h>
#include <wincrypt.h>
#include <stdio.h>

/*----------------------------------------------------------------------------*/
namespace hoge
{
AnsiString LonToStr(unsigned long x)
{
int r;
AnsiString tmp;

r = x % 16;
x = x / 16;
if (x > 0) {
tmp = tmp + uLongToStr(x);
}
switch (r){
case 0: tmp = tmp + "0"; break;
case 1: tmp = tmp + "1"; break;
case 2: tmp = tmp + "2"; break;
case 3: tmp = tmp + "3"; break;
case 4: tmp = tmp + "4"; break;
case 5: tmp = tmp + "5"; break;
case 6: tmp = tmp + "6"; break;
case 7: tmp = tmp + "7"; break;
case 8: tmp = tmp + "8"; break;
case 9: tmp = tmp + "9"; break;
case 10: tmp = tmp + "a"; break;
case 11: tmp = tmp + "b"; break;
0512デフォルトの名無しさんNGNG
case 12: tmp = tmp + "c"; break;
case 13: tmp = tmp + "d"; break;
case 14: tmp = tmp + "e"; break;
case 15: tmp = tmp + "f"; break;
}
return tmp;
}
}


int main()
{
HCRYPTPROV hProv;
HCRYPTHASH hHash;
HCRYPTKEY hKey;
BOOL bResult;
BYTE Buf[] = "今日は良い天気です";
BYTE Signature[100];
DWORD SignLen;

/* デフォルト鍵コンテナの取得 */
CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, 0);

/* ハッシュ値の生成 */
CryptCreateHash(hProv, CALG_MD5, 0, 0, &hHash);
CryptHashData(hHash, Buf, lstrlen(Buf)+1, 0);

printf("%s\n", hoge::LonToStr(hHash));
0513デフォルトの名無しさんNGNG
/* 後処理 */
CryptDestroyKey(hKey);
CryptDestroyHash(hHash);
CryptReleaseContext(hProv, 0);
}

これをコンパイルすると
C:\cpp>bcc32 hash.cpp
Borland C++ 5.6 for Win32 Copyright (c) 1993, 2002 Borland
hash.cpp:
エラー E2141 hash.cpp 8: 宣言の構文エラー
エラー E2190 hash.cpp 38: 不要な }
エラー E2316 hash.cpp 58: 'LonToStr' は 'TET_YAS' のメンバーではない(関数 main()
)
*** 3 errors in Compile ***
となっちゃうんですけど、原因がよくわかりません。教えてください。
0514デフォルトの名無しさんNGNG
bcc32でつか・・・

単にAnsiStringが定義されていないだけでは・・・?
よくわからないけど
#include <vcl.h>
とかそれっぽいのをincludeすればいいんじゃない?
0515451NGNG
>>465
どうも、レス遅くなってすみません!
言われましたとうりに、UpdateLayeredWindow()を使う事で
描画効率が格段に良くなりました!!

どうやら、自分で色々調べてみた結果
更新頻度の多いアプリでは、SetLayeredWindowAttributes()より
UpdateLayeredWindow()を使う方が推奨されているようですね。

本当にありがとうございました!!
0516デフォルトの名無しさんNGNG
以下のように独自の構造化例外ハンドラをセットして、
その中から C++ 例外を創出するような以下のコードは危険でしょうか?

// カスタム例外ハンドラ
void _OnW32SEH( UINT code, _EXCEPTION_POINTERS * ep )
{
 _EXCEPTION_RECORD * er = ep->ExceptionRecord;
 throw MyCppException( code, er->ExceptionInformation );
}

// カスタム例外ハンドラを有効にする
void EnableSEtoCPPException()
{
 _set_se_translator( OnW32SEH );
}
0517516NGNG
すいません。
MSDNみたら、OKって書いてありました。
0518デフォルトの名無しさんNGNG
ユーザ名とドメイン名とパスワードを渡して正規のユーザかどうかをチェックするにはどうしたらいいのでしょう?

MSDNまで漁ったけど漠然とし過ぎてるのか見付けられない…orz
0519デフォルトの名無しさんNGNG
適当なプログラムをrunasで呼ばせて成功すれば認証OKってのはだめ?
0520518NGNG
>>519
いや、もっとスマートなやり方がきっとある筈なので…orz
0521デフォルトの名無しさんNGNG
ActiveDirectory なら、LDAP使うとか。
0522デフォルトの名無しさんNGNG
IHTMLDocument2のwriteを使ってIEコンポにHTMLを表示しました。
しかし、2度目writeすると現在の表示されているものに追加されて表示されてしまいます。
そこで一旦HTMLを全消去したいのですが方法が分かりません。
clear()とかやってみましたが駄目でした。
0523デフォルトの名無しさんNGNG
about:blank開け!
0524デフォルトの名無しさんNGNG
>>523
IHTMLDocumentは使ったこと無い者だが、それ面白いな。

まさか、それがMS推奨の手順ではないよな??
0525デフォルトの名無しさんNGNG
>>522
とりあえず、MSDNのIHTMLDocument2::clearの項目を読め
全てはそこにある
0526デフォルトの名無しさんNGNG
リストビューをカスタムドローして文字色を変更させているのですが、
特定の色:RGB(0,0,255)を指定した場合のみ変更されず困っています。
RGB(0,0,254)やRGB(0,1,255)の場合は問題ありません。
背景色の場合は問題ないようです。

どなたか原因または対処法をご存知ないでしょうか。
Win2000 VC6.0です。
0527デフォルトの名無しさんNGNG
>>526
見た目気づかないから(0,1,255)でいいんじゃね?
0528526NGNG
どうも環境依存のようです。
実行環境のみ他のPCへ移してテストしたところ
WinXP NT4では問題ありませんでしたが、
他のWin2000では再現しました。

>>527
最終的に解決しない場合はそうします。

0529デフォルトの名無しさんNGNG
>>528
ウチじゃ問題ないよ。
0530デフォルトの名無しさんNGNG
ディスプレイの色数とかじゃないのか?
0531デフォルトの名無しさんNGNG
>>>527
>最終的に解決しない場合はそうします。

仕事でこの手の問題にぶつかったときに
あまり悩まずに >>527のような処置で
済ませてしまうオレはダメダメでしょうか・・・。
0532デフォルトの名無しさんNGNG
>>530
R/G/Bの原色が出ないカラーディスプレイは
たぶん存在しないだろう。
0533デフォルトの名無しさんNGNG
>>531=kuzu
0534デフォルトの名無しさんNGNG
IEのツールメニューに独自のメニューを追加するにはどうすればいいですか?
0535デフォルトの名無しさんNGNG
>>531
damedame
0536531NGNG
辞表出してきます
0537デフォルトの名無しさんNGNG
おうよ。後は俺が就職してやるから安心してくれ。
0538デフォルトの名無しさんNGNG
>>534
ttp://www.codeproject.com/atl/popupblocker2.asp
このページをCToolsMenuで検索。
でももっと簡単な方法があるような気がしないでもないが。
0539デフォルトの名無しさんNGNG
SDKで数値データを出力する方法を教えて下さい。
具体的にはreadfile関数などで読み込んだ文字列を
16進数で表示したいのです。
0540デフォルトの名無しさんNGNG
出力ってどういう意味?
0541デフォルトの名無しさんNGNG
wsprintf
0542デフォルトの名無しさんNGNG
>>541
それはここに書き込む前に使ってみたんですが
デバック画面出て強制終了してしまいます。他に方法ないですか?
0543デフォルトの名無しさんNGNG
ぬるぽしないようにちゃんとメモリ確保したか?
0544デフォルトの名無しさんNGNG
>>542
お前のプログラムがへたれなだけ。
0545デフォルトの名無しさんNGNG
>>543
どうやらそれっぽいのでもっかいやってみます
0546デフォルトの名無しさんNGNG
>>545
ちゃんとガッしとけ
0547デフォルトの名無しさんNGNG
>>543
とりあえず ガッ
0548デフォルトの名無しさんNGNG
ヒントをやって叩かれるとは世知辛い世の中じゃ
0549545NGNG
強制落ちしないで起動しますた。なんとかできそうです。どうもですた
0550デフォルトの名無しさんNGNG
これ(>>539-548)で解決したのか orz
0551デフォルトの名無しさんNGNG
>>518
Net系のAPI使え
0552デフォルトの名無しさんNGNG
オフスクリーンのピクセルデータをDIBにコピーするにはどうしたらいいでしょうか
BitBltじゃ遅くて...
0553デフォルトの名無しさんNGNG
GetDIBits
0554デフォルトの名無しさんNGNG
>>504
WM_CLOSEなら終了するけど
WM_*ENDSESSIONは無視する奴も結構あるぞ
0555デフォルトの名無しさんNGNG
>>553
ありがとうございます
やってみたところあまり変わりませんでした
逆に少し遅くなってしまいました
0556デフォルトの名無しさんNGNG
DIBは遅いもの、それはしょうがない気が。
αブレンドとかしたいのなら標準関数でDDBのままやるのがいいと思う
0557デフォルトの名無しさんNGNG
ttp://www.sun-inet.or.jp/~yaneurao/intensive/diw1.html

まー、一応参考になるか?
0558デフォルトの名無しさんNGNG
>>556
その通りでαブレンドがしたいのですが
DDBだとどうやってピクセルデータを弄るのかが分かりません

>>557
ありがとうございます
参考にさせていただきます
0559デフォルトの名無しさんNGNG
AlphaBlend
0560デフォルトの名無しさんNGNG
>>559
ありがとうございます
こんなAPIがあったとは!
αブレンドはこれで解決出来たと思います
0561デフォルトの名無しさんNGNG
サブクラス化をして欲しい機能を実現したいのだけど、
ウインドウプロシージャを取り替えた後、そのウインドウが
終了するときは元のプロシージャに戻す必要があるのでしょうか?
また、戻すタイミングはいつがいいのでしょうか?
WM_DESTROYに返事をするときかな

WM_CHARとかWM_KEYDOWNとかでちょっと横取りして
あとはオリジナルにまかせっぱなしをしてるくらいだから
別に元に戻さなくてもいいような…
0562デフォルトの名無しさんNGNG
hProcess->pid変換ってどうやるの。
0563デフォルトの名無しさんNGNG
逆だった。hProcess<-pidね。
0564デフォルトの名無しさんNGNG
>>563
OpenProcess
0565デフォルトの名無しさんNGNG
タスクマネージャに出てくるプロセスの優先度を変更したいのですが、
どうすればいいのかさっぱり分かりません。
プライマリスレッドの優先度を低くしても、タスクマネージャの表示は標準のままなのですが・・・
0566デフォルトの名無しさんNGNG
プロセスの優先度とスレッドの優先度は違うぞ。
どういう計算になるのか知らんけど。
0567デフォルトの名無しさんNGNG
SetPriorityClass
0568562NGNG
>>564
それを使ってみたけどうまくいかないです。
タスクマネージャで表示されているプロセス(winhlp32.exe pid:3308)を指定して以下のコードを実行するとみると
for(;;){ printf("%d\n", OpenProcess(PROCESS_ALL_ACCESS, FALSE, 3308)); Sleep(1000); }
2024
2036
2012
2008
2004
2000
1996
...

こんな結果が返ってきてしまいます。使い方はこれしかないですよね。
でも、毎回結果が違うってありえないonz...
0569デフォルトの名無しさんNGNG
>>568
藻前の脳味噌のほうがありえない
ハンドルってどういうものだか分かってるのか
0570デフォルトの名無しさんNGNG
>>568
・・・とんでもないな。
OpenしたものはちゃんとCloseしろとかいう以前の問題。
0571デフォルトの名無しさんNGNG
>>568
やりとりのふいんきが昨日の>>539と似てるんだが
OpenProcessの返値を出力するために>>539の
質問をしたわけじゃないよな?

ちょっとお茶目すぎ
0572デフォルトの名無しさんNGNG
下らないことかもしれませんが。
Sleep(INFINITE)を実行したスレッドを復帰させるにはどうすればいいですか?
0573デフォルトの名無しさんNGNG
>>572
イベントなりセマフォと WaitForSingleObject を使え。
0574デフォルトの名無しさんNGNG
>>572
はは、ほんとくだらないねーw
やったことないけど、ResumeThread じゃ起きないかな?
0575デフォルトの名無しさんNGNG
無理
0576デフォルトの名無しさんNGNG
DebugBreakProcess
0577デフォルトの名無しさんNGNG
ジョイパッドはDirectXを使わないと使えませんか?
0578デフォルトの名無しさんNGNG
joy
0579デフォルトの名無しさんNGNG
>>578
ありがとう、出来ました
0580デフォルトの名無しさんNGNG
リストボックスに何も文字入れていない状態なのに、一番上が点線で選択できるようになっているんですけど、
どうやった回避できますか?
一応プロパティあたりは見たつもりなんですが、無かったようですし、、、。
0581デフォルトの名無しさんNGNG
>>580
何も無いときは真っ白なウィンドウを被せるとか
0582デフォルトの名無しさんNGNG
hackyカコイイ
0583デフォルトの名無しさんNGNG
CreateWindowに"MDICLIENT"を指定して作ったクライアントウィンドウ上で
右クリックメニューを出すにはどうしたらいいですか?
0584デフォルトの名無しさんNGNG
>>583
あいにくと俺は超能力者ではないので喪前さんが言ってることが良く分からんのだが
ttp://black.sakura.ne.jp/~third/system/winapi/win78.html
ここに書いてあることで分かりそうかい?
ハズしてたらもうちょっと分かりやすく質問してくれ。
0585デフォルトの名無しさんNGNG
>>584
すいません、分かりにくいですよね。

一応、通常の右クリックメニューの出し方は分かるんですが、
MDIアプリケーションにしようとして、
クライアントウィンドウを作ると右クリックメニューが出なくなってしまうので、
どうしたらいいでしょうか? という質問です。

口下手で申し訳ない…_| ̄|○
0586デフォルトの名無しさんNGNG
口が下手なら、下の口で満足させてくれればOK
0587デフォルトの名無しさんNGNG
やらにゃいか
0588デフォルトの名無しさんNGNG
バラライカ
0589デフォルトの名無しさんNGNG
>>585
MDICLIENTのウィンドウをサブクラス化したらできたような気がする。
0590デフォルトの名無しさんNGNG
バナナ烏賊
0591デフォルトの名無しさんNGNG
臭そうだ

KSASO

OSASK
0592デフォルトの名無しさんNGNG
   ト、 , ---- 、
   H /::(/、^^, :゙i
(( (ヨb |::l,,・  ・,,{:K〉 ))
   \`l:ト、(フ_ノ:」/   < ぉまぇら 全員 学習ルーム来いヤ!☆
    ゙、 ヾ〃 /
     〉 ネヴァダ|
0593585NGNG
>>589
ありがとうございます。出来ました。
ttp://black.sakura.ne.jp/~third/system/winapi/win64.html
で、ウィンドウプロシージャの切り替えが出来ることが分かったので、
"MDICLIENT"を指定したCreateWindowでhClientWindowを作った直後に、
SetWindowLong(hClientWindow, GWL_WNDPROC, (LONG)ClientWindowProc);
として、ウィンドウプロシージャを切り替えることでできました。

サンプルが必要な方は、アプロダ指定してくれれば、うpします。
それでは、本当にありがとうございました。
0594デフォルトの名無しさんNGNG
>>592
不謹慎!(@�u@ .:;)ノシ
0595デフォルトの名無しさんNGNG
データの移行ツールを作ってます。
Win2K+SP4で使ってたOutlook2000のデータ(メールデータ,振り分け,アカウント,他)を
別PCのWinXPでOutlook2002に移行したいんですが、どーやれば良いんでしょう?

Outlookのメニューからエクスポート/インポートを実行すれば大体は移行できるんですが...
コレをプログラム上で行いたいんです。
市販の移行ツールではこの様なコトが可能になっているので
何らかの手段はあると思うのですが自分にはさっぱり判りません。

移行する方法を知っていたらご教授をお願いします。

追加。
 Outlook相談室とそこで紹介されたトコにも投げてしまったんで、
 マルチになってしまいました。<(_ _)>
0596デフォルトの名無しさんNGNG
>>594
なによその顔文字は。ふざけてるの?
0597デフォルトの名無しさんNGNG
>>595
調べてもわかんねえやつがそういうツール作るなよ。
0598デフォルトの名無しさんNGNG
>>595
COMのインターフェース調べてそういった機能があれば使う。
なければOutlookのバイナリ解析して自力でやる。
あるいはMSと契約してコンバートツールを作らせてもらう。
0599デフォルトの名無しさんNGNG
>>597
調べて判ったんなら、ココで聞かずに作ってますよ。
ヒントぐらい...くれ
0600デフォルトの名無しさんNGNG
む。ヒントが...
0601デフォルトの名無しさんNGNG
ここで具体的な情報が出てくるわけないだろ
0602デフォルトの名無しさんNGNG
pstファイルをコピペすれば?
移行するだけなら、それで良くね?
0603デフォルトの名無しさんNGNG
>>595
俺はOutlook使った事はないが Documents and Settings からファイル探して、
コピーすれば出来ると思うぞ。
0604デフォルトの名無しさんNGNG
CreateProcessと同じようにして自プロセス内の新規スレッドとして他プロセスを起動する事の出来るAPIはありますか?
あれば教えてください
0605デフォルトの名無しさんNGNG
ないだろ。情報やり取りしたいなら
普通にCreateProcessしてプロセス間通信するなりデバッグ系API使うなりするしかない。
0606デフォルトの名無しさんNGNG
pstファイルだけ上書きするとメール本文(一覧?)は移行できても
そのあとの動作がなんかおかしくなるねん。
Outlook2000 → 2002だからかもしれんが

もちっと四苦八苦してみるか..._| ̄|○
0607デフォルトの名無しさんNGNG
>>606
>Win2K+SP4で使ってたOutlook2000のデータ(メールデータ,振り分け,アカウント,他)を
>別PCのWinXPでOutlook2002に移行したいんですが、どーやれば良いんでしょう?
>Outlookのメニューからエクスポート/インポートを実行すれば大体は移行できるんですが...

「大体」ってのがどの程度なのか分からないのであれだが、

大体でいいのであれば、インポートとエクスポートのマクロ書けば
いいんじゃないの? これが一番楽な気がするけど。

移行ツールなんだから、どちらのPCにもOutlookが入ってる訳でしょ?
0608デフォルトの名無しさんNGNG
>>605
ありがとうございます。他の方法でがんばってみます。
0609デフォルトの名無しさんNGNG
>>595
プロファイルはMAPIで読み書きしてみるとか
0610デフォルトの名無しさんNGNG
親Windowの上に子Windowが何個かついたものを作りました。
子Windowの配置をGetDialogBaseUnit()でおこなっています。

親Windowのフォントの大きさを変える事ってできるのでしょうか?

子WindowにはSendMessage(chWnd,WM_SETFONT,(WPARAM)hFont,MAKELPARAM(TRUE,0));
でできるのですが、親にSendMessage(hWnd,WM_SETFONT,(WPARAM)hFont,MAKELPARAM(TRUE,0));
しても変わりません。何かよい方法があるのでしょうか?
宜しくお願いします。
0611デフォルトの名無しさんNGNG
>>610
何を期待してるのか知らないけど、親Windowのフォントの大きさを変えても
GetDialogBaseUnitの返す値は変わらないよ。「画面のプロパティー」で
設定されるシステムフォントのサイズを変えない限り
0612610NGNG
>>611
うう・・有難うございます。
期待していたのは、Borlandのリソースエディタで、親Dialogのフォント
の大きさを変えると、子コントロールの大きさや位置がそれなりに変わって
くれるから、同じことをやりたかったんです。

ああ・・・
0613デフォルトの名無しさんNGNG
>>610
親ウィンドウをダイアログで作るか、座標モードをキャラクタ単位にするとかどうよ。
0614デフォルトの名無しさんNGNG
MapDialogRectは使えんのだっけ?
0615デフォルトの名無しさんNGNG
CreateFileMappingで作ったマッピングファイルを複数のプロセスが共有していまして、
このマッピングファイルに変更があれば感知したいのです。
WaitForSingleObjectみたいな感じで、イベントを取るためには何を使えばいいのでしょうか?
0616デフォルトの名無しさんNGNG
>>615
別途イベントかなんかで通知するのが良いと思う。
0617610NGNG
>>613
なりがとうございます。
とりあえず、関数作りました。みてください。

void MoveChildWnd2(HWND handle,HFONT font,int x,int y,int w,int h)
{
 HDC hdc  =  GetDC(handle);
 
 ::SelectObject(hdc,font);

 int font_height;
 int font_width;

 TEXTMETRIC tm;
 GetTextMetrics(hdc,&tm);

 font_height = tm.tmHeight;
 font_width = tm.tmAveCharWidth;
0618610NGNG

 DeleteDC(handle,hdc);

 ::SendMessage(handle,WM_SETFONT,(WPARAM)font,MAKELPARAM(TRUE,0));

 RECT r;
 r.left = MulDiv(x,font_width,4);
 r.top = MulDiv(y,font_height,8);
 r.right = MulDiv(w,font_width,4);
 r.bottom = MulDiv(h,font_height,8);

 window_x  = r.left; //ウィンドウのX位置
 window_y  = r.top; //ウィンドウのY位置
 window_width = r.right - r.left; //ウィンドウの幅
 window_height = r.bottom - r.top; //ウィンドウの高さ

 ::MoveWindow(handle,r.left,r.top,r.right,r.bottom,TRUE);

}
0619デフォルトの名無しさんNGNG
>>610
えーと。フォントのサイズでモニョモニョするっていうんじゃないんだ。
ダイアログは普通のウィンドウと違って、そのサイズはフォント文字のサイズを元に決められてるんだ。
試したことないからうまくいくか知らんけど、SetMapModeとかでウィンドウのサイズ単位を買えてやればいいんじゃないかと思ったのよ。
0620610NGNG

>>619
そうです。これだと解像度がかわっても子Windowの位置関係は保持されそうでしょ?

case WM_CREATE:
   HWND hEdit1  = CreateWindow("EDIT",・・略
   HWND hEdit2  = CreateWindow("EDIT",・・略
   HWND hButton = CreateWindow("BUTTON",・・略

   HFONT font = CreateFont(・・・略
  
   MoveChildWnd2(hEdit1,font,10,20,60,30);
   MoveChildWnd2(hEdit2,font,10,60,60,30);
   MoveChildWnd2(hButton,font,10,100,60,30);
   break;
0621デフォルトの名無しさんNGNG
>>620
うまくいきそうだけど、もし親ウィンドウのサイズも変えるのなら、
単純にそれにあわせて拡大・縮小すれば良いような気もしないでもない。
あとドロップダウンコンボボックスで不都合が出るので、もしあるなら対応すべし。
0622デフォルトの名無しさんNGNG
はやく615の質問も答えてやれよ
みんなわからないのかい?
0623デフォルトの名無しさんNGNG
うん。わからない。
じゃあね。
0624デフォルトの名無しさんNGNG
>>622
>>616 が答えてるだろ。
マップするファイルで Notify オブジェクトが作れるなら
WaitFor〜 で待てるかも知らんが、君やってみてくれる?
0625デフォルトの名無しさんNGNG
そんなもんがあったらものすごいオーバーヘッドだろうな
0626デフォルトの名無しさんNGNG
翼くん並のものすごいオーバーヘッドだな。
0627デフォルトの名無しさんNGNG
Cでの非MFCウィンドウズアプリ製作で、
一つのウィンドウにWndProcを複数作る事は出来るのでしょうか。
ゲームを作っていて、今のやり方は

LRESULT CALLBACK WndProc(...)
{
static int gameRoutine = Title;
if(gameRoutine == Title) HandleTitle();
else if(gameRoutine == InputName) HandleInputName();
}

みたいにやっているのですが、

LRESULT CALLBACK HandleTitle(...)
LRESULT CALLBACK HandleInputName(...)

と複数作って、タイトルの処理をしている時は、
WinMainのGetMessage()でイベントを受けたときHandleTitle()に行くようにして、
名前入力のときはHandleInputName()に行くようにしたいのです。
0628デフォルトの名無しさんNGNG
元のメッセージループの直前で分岐すればいいんじゃないの。
そのゲーム用のWndProcで取りこぼしたメッセージを元のWndProcで処理する必要もあるだろうし。
0629デフォルトの名無しさんNGNG
>>627
無理。一つのWinProcとして登録できるのは一個だけ。
二種類扱いたいならWinProcを設定しなおすしかないが、
結局は今やってるのとあまり変わらんように思う。

if文を無くしたいだけなら関数テーブルを使ってみたら?
0630627NGNG
コンソールプログラムでは、タイトルの処理の時は、他のゲームルーチンを
まったく触らずに処理できますが、そういう感じにしたいのです。

int HandleTitle()
{
while(1)
{if(oo) {afterRoutine = InputName;break;}}
}

HandleInputName()
{
while(1){}
}

>>628
PeekMessageInputという事ですか?
これはCPU率とかありますし、スレッドも難しくて分かりません。
取りこぼしについては、個々のゲームルーチンで全部書くようにします。

>>629
無理ですか。ChangeWndProc(hWnd, HandleInputName);
とかは考えてみたのですが。関数テーブルは調べて見ます。
0631627NGNG
>>630
>HandleTitle()
afterRoutineを返します。

>PeekMessageInput
PeekMessageに修正します。
0632627NGNG
>>629
あっ、関数ポインタですか。それでやってみます。

御二方、どうもありがとうございました。
0633デフォルトの名無しさんNGNG
>>630
WndProc変えるならSetWindowLongで
0634627NGNG
>>633
ありがとうございました。やってみます。
0635デフォルトの名無しさんNGNG
マウスの移動に関する情報として
マウスポインタの位置ではなく(コントロールパネルの
マウスから設定できるポインタ速度に左右されず)
マウス自体の移動量を得る方法はないでしょうか?
APIでは無理なのでしょうか?
0636デフォルトの名無しさんNGNG
設定速度をかけられてるから、レジストリからその値を取得して割る
0637635NGNG
>>636
なるほど
レジストリの値は
同じ速度ならどのマウスデバイスも同じ値なのでしょうか?
またレジストリキーも名前はいっしょなのでしょうか?
0638デフォルトの名無しさんNGNG
名前は同じはず。以前調べたけど忘れた
マウスの設定アプレットをRegmonで監視すれば簡単に分かるはず

速度とマウス移動量の関係っつーのは一概に言えないね
経験上だけど普通のボール式PS2マウス・光学式PS2マウス・タブレットに付属してる電磁誘導マウス
同じくらい動かしても全部全く違う操作感だから。つまり、移動量を得られたところで環境に依存するから
あまり意味が無いんじゃないかと
0639デフォルトの名無しさんNGNG
HKCU\Control Panel\Mouse\MouseSensitivityかな
0640635NGNG
>>638
ありがとうございマウス(´・ω・`)ショボ-ン
0641デフォルトの名無しさんNGNG
>>635
GetMouseMovePointsEx で GMMP_USE_HIGH_RESOLUTION_POINTS 指定するのって、
マウスだと意味無いんだっけ?
0642デフォルトの名無しさんNGNG
意味無い
0643デフォルトの名無しさんNGNG
モーダルダイアログが別のメッセージループから再帰的に呼ばれて
2つ出現してしまうことがありますが、皆さんどうやって対策していますか?
0644デフォルトの名無しさんNGNG
そんな状態にならないようにする。
0645デフォルトの名無しさんNGNG
それは設計が悪いよ。
0646643NGNG
>>644 >>645
他のアプリから呼ばれるDLLなんでつ。。。
0647デフォルトの名無しさんNGNG
if (まだでてなかったら) {
ダイアログを表示する
}
とかやれば?
0648デフォルトの名無しさんNGNG
システム全体に対してフックするようなものだったら恐らく>>647のやり方でもダイアログ表示している間に更に他のプロセスから
呼ばれて二重呼び出しされるんじゃないかねー。こういう時はどうするもんなんだろ。
0649デフォルトの名無しさんNGNG
看湯兎手楠
0650デフォルトの名無しさんNGNG
>>648
その場合は
まだ表示されてなかったら
の内容が単なるフラグチェックや何かではすまないだけ
で、別に同じでしょ
>>649
のようにmutex使うとかすればいいのであって
0651デフォルトの名無しさんNGNG
フォルダの新規作成を検知することは可能ですか?
コピー/移動/削除/名前の変更はICopyHookで実装済みです。
FindFirstChangeNotificationで通知前と後の比較を考えたんですが、
これだとコピー/移動との区別ができません。
何か良い方法はないでしょうか。
0652デフォルトの名無しさんNGNG
>>651
ものすごく基本的なことだが
ディレクトリは作成と削除しかできない、んじゃないか?
そういうはなしではない?
0653651NGNG
>>652
言葉足らずですみません。
現在シェル拡張DLLを作成しているんですが、ある特定のフォルダをエクスプローラで
コピー/移動/削除/名前の変更の操作を行った後にそれぞれ異なる処理を行っています。
上記4つはICopyHookのコールバック関数内で区別することができます。
さらに、新規にフォルダを作成した後にまた異なる処理を行いたいのです。
そのため、新規作成を検知する必要があるのです。
(フォルダの操作はエクスプローラで行われることが前提です)
0654デフォルトの名無しさんNGNG
いつの話だよMS-DOSじゃあるまいし
移動できるよ
0655デフォルトの名無しさんNGNG
こんばんわ

OPENFILENAME ofn;
と宣言したのですが、
「OPENFILENAMEは定義されていません。」とエラーが出ます。

何かincludeするヘッダがあるのでしょうか?
0656デフォルトの名無しさんNGNG
MSDN引いた?
思いっきり載ってますが何か?
0657デフォルトの名無しさんNGNG
includeするだけで済む環境がうらやましい(´・ω・`)
0658デフォルトの名無しさんNGNG
MSDNって何ですか?
0659デフォルトの名無しさんNGNG
たのむ少しはググッってくれ
0660デフォルトの名無しさんNGNG
ググッってって何ですか? 隠語を使わないでください。
0661デフォルトの名無しさんNGNG
('A`)
0662デフォルトの名無しさんNGNG
>>660
おお、新しい反撃パターンだ。
これでは、伝家の宝刀の「ググれ!!」が使えないでないか...。






まあ、君にはインターネットは向いてないから、早めに回線切って引きこもった方がいいよ。
0663デフォルトの名無しさんNGNG
引き篭もりですがいつもGoogleで検索してますがなにか?
0664デフォルトの名無しさんNGNG
おっさん、おばさんの間でも一部には通じるぞ、「ググる」
0665デフォルトの名無しさんNGNG
ヲタに通じてもね┐(´д`)┌
0666デフォルトの名無しさんNGNG
うちの母親はぐぐってGIMPをマスターしたぞ
0667デフォルトの名無しさんNGNG
>>654
いや「OSレベルでは」というか「ファイルシステムレベルでは」
ディレクトリは作成と削除しかないでしょ
フォルダ単位の移動やコピーを「アプリケーションレベルで」(shellapiも
ふくむ)実装はできるけど、OSレベルではフォルダごとの移動は
ディレクトリの作成→そこにファイル群を移動→元ディレクトリの削除
という形になるでしょ

>>653
という理由によってディレクトリだけ見ても「区別できない」んじゃないかと
思ったのだけど、見当違い?
0668デフォルトの名無しさんNGNG
コンボボックス内の項目がどれでもいいので選択されているか、選択されていないのかを
判定したい場合どうすればいいでしょうか。お願いします。
0669デフォルトの名無しさんNGNG
MoveFileExにディレクトリを指定するときの制限を見る限り、667のいうような形では無いと思われ。
ただ単にディレクトリエントリの書き換えだけだろ。
0670デフォルトの名無しさんNGNG
***_GETCURSEL 系のメッセージ使えば大丈夫
0671デフォルトの名無しさんNGNG
>>669
ごめんわたしがばかでした
逝ってくるよママン
0672デフォルトの名無しさんNGNG
Win32APIのオフィシャルな情報ってのは、一体どこに?
0673デフォルトの名無しさんNGNG
MSDN
0674デフォルトの名無しさんNGNG
>>655
知っているが「こんばんわ」が気に入らないので教えない
0675デフォルトの名無しさんNGNG
現在のスレッドのHANDLEを取得するにはどうすればいいですか?
0676デフォルトの名無しさんNGNG
getcurrentthread
0677デフォルトの名無しさんNGNG
現在のスレッドのIDを取得するにはどうすればいいですか?
0678デフォルトの名無しさんNGNG
getcurrentthreadid
0679デフォルトの名無しさんNGNG
つーかMSDN引け ぐぐれ ヴォケ
0680デフォルトの名無しさんNGNG
>>677
この板ではどのスレッドもIDは表示されない。
0681デフォルトの名無しさんNGNG
>>667
>OSレベルではフォルダごとの移動は
>ディレクトリの作成→そこにファイル群を移動→元ディレクトリの削除
>という形になるでしょ

それはドライブが異なる場合だけだろ。普通は親ディレクトリのinodeの
書き換えだけ。
0682デフォルトの名無しさんNGNG
>>680
上手いな。ネタで>>677書いたのは俺だが
まさかそう返されるとは思わなかったぞ。
0683デフォルトの名無しさんNGNG
こうして、徐々に簡単な質問はスルーされていくようになるのだった
0684デフォルトの名無しさんNGNG
>>681
inode(に対応するWindowsでの概念)を書き換える必要あるの? 名前だけでしょ?
0685デフォルトの名無しさんNGNG
スクリーンセーバーが発動するまでの時間や
モニタの電源を切るまでの時間を、それぞれ
取得したり再設定したりするにはどうするのでしょうか?
0686デフォルトの名無しさんNGNG
>>685
画面のプロパティを開いて読んだり書き換えたりすればOK
0687685NGNG
>>686
Win32APIの質問でした。
言葉足らずでごめんなさい。
該当するAPIはなんでしょうか?
0688デフォルトの名無しさんNGNG
>>687

>>686は、わかってて言ってるんだと思うぞ。
要は君に遠回しに 「 ぐ ぐ れ っ ! 」 と言いたいのではないかと。












もしググる気になったら、「スクリーンセーバー SystemParametersInfo」あたりで
ググってみると幸せになれるんじゃないかな。
0689685NGNG
検索しました
少し幸せになりました
ありがとうございました

このAPIについてもっと調べてもっと幸せになります
0690デフォルトの名無しさんNGNG
やさしいな
0691デフォルトの名無しさんNGNG
>>687-688
Win32APIのスレだしなぁ。ここ。
0692デフォルトの名無しさんNGNG
png画像を読み込んで1pixelの色を取り出したいんだけどGetPixelでおけ?
0693デフォルトの名無しさんNGNG
画像を読み込んだだけでGetPixel出来る時代になったのか。有難や。
0694デフォルトの名無しさんNGNG
waveOutGetPositionという命令がありますが、
これは現在位置を取得するものですが、
逆に現在位置を変更するようなものは無いのでしょうか?

簡単に言えばwaveOut系で途中から再生をしたいのですが
解説しているサイトやヒント等ありましたら、おしえてください。
0695デフォルトの名無しさんNGNG
>>692
pngを読み込んで展開して、
デバイスコンテキストに描画したら、
GetPixelで色を取り出せるよ
0696デフォルトの名無しさんNGNG
>デバイスコンテキストに描画したら
0697デフォルトの名無しさんNGNG
つか、ググれしか言えない厨房はレスするな、ウザイし邪魔
0698デフォルトの名無しさんNGNG
同意。あとマニュアル読め厨も。
0699デフォルトの名無しさんNGNG
俺は最適な解を回答すべきだと思っている。
それが検索しろであったりマニュアル嫁であったりするのは、それが最適だと思っているからだ。
0700デフォルトの名無しさんNGNG
697は来るな。ウザイし邪魔
0701デフォルトの名無しさんNGNG
697=698=厨だろ
0702デフォルトの名無しさんNGNG
>>694
ありません。自分で制御する必要があります。
0703デフォルトの名無しさんNGNG
waveOut系はリングバッファ作ってwriteで垂れ流したことしかないから
偉そうなことは言えんが、ぱっとググってみた感じ、waveOutGetPositionも
結構色々と問題があるような感じなんで位置情報は自分でタイミング取って
見た方がよいのかも。
0704デフォルトの名無しさんNGNG
waveOutGetPosition で常に0を返す論外なドライバとか…
0705デフォルトの名無しさんNGNG
>>702-704
返答ありがとうございます。自前でやるしかないみたいですね。
そうなると、無圧縮なPCMであれば位置判定は簡単だと思いますが
圧縮されたデータ(MP3等)の場合、難しいですね。
一旦、無圧縮なPCMに展開する必要があるという事でしょうか?
0706初心者ですNGNG
InstallShieldにてインストーラを作っているのですが、ラジオボタンの表示/非表示
(visible? hide?)を切り替えることってできますか?
0707デフォルトの名無しさんNGNG
ライセンスを下までスクロールしないとライセンス同意ボタンを押せないようにしたいのかな
0708デフォルトの名無しさんNGNG
ちゅーかスレ違いだしなー
0709デフォルトの名無しさんNGNG
>>705
圧縮データ?

そうか、waveOut は 圧縮形式の WAVEFORMATEX ヘッダも
処理できたか。使ったこと無いから PCM 以外でどうなるか分
からないけど、少なくとも mp3 の場合は自分でヘッダ作らない
と(WAVE MP3)処理できないだろう。

俺は WAVE ファイルの場合はあらかじめ ACM の API
で無圧縮 PCM に変換してから waveOut API に渡してたからな。

mp3 は独自にデコーダ用意する必要がある。(APIは無い)

なんか、あなたの場合は DirectShow を
使った方が良いんじゃないかな?
手っ取り早くやりたいなら、そっちの方が早いよ。
0710692NGNG
>>695
ありがとう
描画しなきゃだめっすか…何百枚の画像を処理しなくちゃならんのだけど…
何かアドバイス頂けると嬉しいです。
0711デフォルトの名無しさんNGNG
自前で解析した方が早いんじゃないか?
0712デフォルトの名無しさんNGNG
>>692
libpngとかImageMagickでも使ってロードして、後は適当に解析汁。
0713名無し@沢村NGNG
ちっ、ここはザコが立てたスレか?
Windowsプログラムとは可愛いやっちゃ♪
こっちはメインウィンドウ完成間近だというのによ…♪もうすぐメインウィンドウできるよ〜♪
といってもCとかアセンブラとかでメインウィンドウ組むんじゃないぞ。それじゃまるでザコだ。
こっちは、メインウィンドウがつくれるプログラムつくってるのよ〜♪つまりVisual E++だ。
そうです、みなさんもうすぐVisual E++はメインウィンドウがつくれる本格的なプログラミングソフトに進化します♪
いまやっとVisual E++に補助的にバイナリエディタつかってメインウィンドウつくるのに成功したところ。
補助的にバイナリエディタつかわないで、Visual E++のみでメインウィンドウつくれるよになるには、あと修正個所が1、2個所…
みなさんもうすぐでっせ〜♪
0714名無し@沢村NGNG
ちっ、ここはザコが立てたスレか?
Windowsプログラムとは可愛いやっちゃ♪
こっちはメインウィンドウ完成間近だというのによ…♪もうすぐメインウィンドウできるよ〜♪
といってもCとかアセンブラとかでメインウィンドウ組むんじゃないぞ。それじゃまるでザコだ。
こっちは、メインウィンドウがつくれるプログラムつくってるのよ〜♪つまりVisual E++だ。
そうです、みなさんもうすぐVisual E++はメインウィンドウがつくれる本格的なプログラミングソフトに進化します♪
いまやっとVisual E++に補助的にバイナリエディタつかってメインウィンドウつくるのに成功したところ。
補助的にバイナリエディタつかわないで、Visual E++のみでメインウィンドウつくれるよになるには、あと修正個所が1、2個所…
みなさんもうすぐでっせ〜♪
0715デフォルトの名無しさんNGNG
>>713-714
スレ違い。
http://pc5.2ch.net/test/read.cgi/tech/1085915001/
こっちでどうぞ。
0716デフォルトの名無しさんNGNG
沢村こんなとこにもくるのか。

ところで、IEのお気に入りの中から一定期間アクセスがなかったら削除するツール作ろうと思ったんだけど、
最終アクセス日(ファイルアクセスにあらず)ってAPIがらみで取得できませんかねえ。
調べたところ「履歴」フォルダにしか残っていないので履歴削除したら無理ぽなんだよねえ。
0717デフォルトの名無しさんNGNG
>>709
返答ありがとうございます。
圧縮データとは、MP3(not *.mp3ファイル)とか
ADPCM等です。(*.wavファイル)

何も考えずに、waveOutOpen -> waveOutPrepareHeader
-> waveOutWriteで再生できるので、今はそのままですが
求めている事は

・メモリにあるデータから再生
・ボリュームコントロール
・シーク可能
・Win98(無印)の何も入れてない状態で動く

…という事なのです。DirectShowでの機能は
Win98(無印)に標準で入っているのでしょうか?

>ACM の API
とりあえず、この方向で展開して自前でシークしたいと
思います。ありがとうございました。
0718デフォルトの名無しさんNGNG
>>717
> ・メモリにあるデータから再生
あー DirectShow でメモリからだと自前でソースフィルター
かかないかんね。サンプルもあるけど、
この場合はフィルター書いてまでも DirectShow を
使う意味は無いね。

>>ACM の API
>とりあえず、この方向で展開して自前でシークしたいと
まあ、もっともオーソドックスな手法だけど、長年使われていた
手法でもあるし、頑張ってみるしか。
0719デフォルトの名無しさんNGNG
初心者質問でスマソ

SetMapMode(hdc,MM_LOMETRIC);

rect.left=100;
rect.top=-300;
rect.right=500;
rect.bottom=-100;

DrawText(hdc,Text1,-1,&rect,DT_CALCRECT | DT_WORDBREAK);
DrawText(hdc,Text1,-1,&rect,DT_WORDBREAK);
DrawText(hdc,Text1,-1,&rect,DT_CALCRECT | DT_WORDBREAK);
DrawText(hdc,Text1,-1,&rect,DT_WORDBREAK);

としてプリンタで印刷したところ
一回目のText1と2回目のText1が続けて縦一列に印刷されたのですが
なぜなのでしょうか
ステップしてもrectの内容が変わる事はなかったので
同じ場所に二重に印刷される物だと思ってたのですが
DT_CALCRECTをちゃんと理解しないで使ってる気がするので
やはりこれのせいなのでしょうか
分かる方おねがいします
0720デフォルトの名無しさんNGNG
>>692
GDI+のBitmapクラス使ってPNG画像を読み込んで、GetPixcelメソッドを呼ぶ。
0721デフォルトの名無しさんNGNG
FindWindowを使ってクラスやタイトルが部分一致するウィンドウを探すのは無理
ですか?
クラスとタイトルはそれぞれ必ず完全に一致する必要があるのでしょうか.
0722デフォルトの名無しさんNGNG
EnumWindows()使え
0723デフォルトの名無しさんNGNG
>>722
了解
0724デフォルトの名無しさんNGNG
こんばんわ
RebarのIE式メニューを作ろうとしてるんですが
うまくいきません

ソースコードをUPしますので
http://www.geocities.co.jp/SiliconValley-Oakland/3559/rebar.txt
どこが間違ってるのか見ていただけるとありがたいです
よろしくお願いいたします

InitCommonControlsExは処理してあります

呼び出し順番は

hRebar=_createRebar(hWnd,hInst);
_createIEMenu(hRebarIEMenu,hRebar,tbIEMenu);
_sendTextToIEMenu(hRebarIEMenu,"File_desu",tbIEMenu,0);
_sendTextToIEMenu(hRebarIEMenu,"Edit_desu",tbIEMenu,1);
_sendButtonToIEMenu(hRebarIEMenu,2,tbIEMenu);
_attachIEMenuToRebar(hRebarIEMenu,hRebar);
0725デフォルトの名無しさんNGNG
自前のメニューバーに動的に項目を追加したいんですが
すでに、追加したい項目のIDが追加されているかどうか
ってどうやって調べられますか?
AppendMenuつかうと、無節操に追加されるし
EnableMenuItemだと、見えなくならないし、で微妙なので、
助けてください。
0726デフォルトの名無しさんNGNG
GetMenuItemInfo
0727デフォルトの名無しさんNGNG
>>724
10万くらいくれたらデバッグしてやらんでもない
0728デフォルトの名無しさんNGNG
GetMenuItemCount
GetMenuItemID
GetMenuPosFromID

この辺使えば自在だ。
0729デフォルトの名無しさんNGNG
メニューの中に「送る」のように外部のフォルダの中身によって表示される項目がコロコロ変わるサブメニューを作っています。
何を表示すればよいかは簡単に取得できたのですが、これをいつメニューに反映させればよいのかが分かりません。
最初は WM_INITMENU か WM_INITMENUPOPUP で更新すればよいと考えていたのですが
このサブメニューの名前や位置が変化するので、親メニューと位置だけでは、
どのサブメニューが表示されようとしているのかが分かりません。
こういったメニューのアイテムを最新の状態に維持するにはどうすればよいのでしょうか?
あるいは、メニューバーの特定のサブメニューが表示されようとしていることを知る方法はあるでしょうか。
どうかよろしくお願いします。
0730725NGNG
>>726,728
サンクス
0731デフォルトの名無しさんNGNG
>>729
メニューの位置が動的に変更しないようにする。

というのはアレなので、ちょうど>>728が書いてるAPIで位置から特定してやればいいんじゃないかと。
0732デフォルトの名無しさんNGNG
それで、>>726のAPIを使用してメニューの情報を得ればいい。
0733デフォルトの名無しさんNGNG
>>731-732
ありがとうございます。
ただ、相手がサブメニューなので ID が無いのですが
そのような場合はどうすればよいのでしょう?
0734デフォルトの名無しさんNGNG
>>733
ポップアップにもIDはつけられる。
0735デフォルトの名無しさんNGNG
>>734
ありがとうございます。
今まで知りませんでした。
これで解決できそうです。
どうもありがとうございました。
0736デフォルトの名無しさんNGNG
つか、ググれしか言えない厨房はレスするな、ウザイし邪魔
0737デフォルトの名無しさんNGNG
つか、もう終わった話題に亀レスする奴、ウザイし邪魔
0738デフォルトの名無しさんNGNG
ククれ
0739デフォルトの名無しさんNGNG
王子さま
0740デフォルトの名無しさんNGNG
あの〜、質問よろしいでしょうか?
0741デフォルトの名無しさんNGNG
>>740
バーモント
0742デフォルトの名無しさんNGNG
高木ブー





はウクレレか
0743デフォルトの名無しさんNGNG
ハヤシもあるでよ
0744デフォルトの名無しさんNGNG
>740
質問していいかくらい、自分でググって調べろ。
0745デフォルトの名無しさんNGNG
ttp://www.google.co.jp/search?q=%E8%B3%AA%E5%95%8F%E3%81%97%E3%81%A6%E3%81%84%E3%81%84%E3%81%8B&ie=UTF-8&hl=ja&btnG=Google+%E6%A4%9C%E7%B4%A2
0746デフォルトの名無しさんNGNG
>>734
>ポップアップにもIDはつけられる。
どうやればできるのでしょう。
方法を探したのですが見つかりませんでした。
0747デフォルトの名無しさんNGNG
ホントにできるのか?
0748デフォルトの名無しさんNGNG
>>746
嘘を嘘と見抜けないようだと・・・
メニューアイテム関連のAPIは、コマンドIDじゃなくてインデックスでも使えるから、
インデックスを覚えておくのが良いと思う。
0749デフォルトの名無しさんNGNG
あるいはポップアップのHMENUをそのまま覚えておくか。
0750デフォルトの名無しさんNGNG
ぐぐれはともかく、分かってないならレスしないでくれ
ってのは、たまにあるな。
0751デフォルトの名無しさんNGNG
>>746
MENUEX
0752デフォルトの名無しさんNGNG
> ID が無い
> サブメニューの名前や位置が変化する
無理だ...
0753デフォルトの名無しさんNGNG
エクスプローラの左にあるフォルダツリーと同じものを作りたいんですが
あれって全部自前でアイコンとかを取得したりしてるのでしょうか?
0754デフォルトの名無しさんNGNG

Windows上のC++(またはC言語)で、pdfファイルをいじる方法ってありますか?
帳票の代わりにpdfファイルを作るとかしてみたいのですが・・・。
宜しくお願いします。
0755デフォルトの名無しさんNGNG
スマートにやりたきゃまずはpdfの仕様を調べて好きにしろ
面倒だったらWordをOLEで制御するなりunix系ツールで変換するなり
0756デフォルトの名無しさんNGNG
>>754
PrimoPDFとか入れて、印刷しろよ。
0757デフォルトの名無しさんNGNG
>>746
試してないがこれではムリか?
MENUITEMINFO mii = { sizeof(MENUITEMINFO), MIIM_SUBMENU | MIIM_TYPE | MIIM_ID,
MFT_STRING, 0, idCmd++, hSubMenu, 0, 0, 0, szMenuText };
InsertMenuItem(hMenu, indexMenu, TRUE, &mii);
0758デフォルトの名無しさんNGNG
メニューの項目が長すぎる場合、
シェブロンにカーソルを持って行ったら
自動的にスクロールするようにするには
どういう設定をすればいい?
0759デフォルトの名無しさんNGNG
>>754
PDFを操作するライブラリがいくつかあるぞ。
ClibPDFなんて使いやすい。
http://www.fastio.com/
0760デフォルトの名無しさんNGNG
USBデバイスの電源が入っているかどうかを知るAPIってありますでしょうか。
探したのですが見つかりません。
0761デフォルトの名無しさんNGNG
電源が入っていない=認識されて無いだから無理だと思うが…。
逆に探してみて、目的の物が無いかどうかで確認するしかないんじゃないか?

それとも、俺が知らないだけで「電源が入って無くても、認識されている」
デバイスがあったりするか?
0762デフォルトの名無しさんNGNG
>>761
バスパワーで、回路だけ動いてれば
「電源が入って無くても、認識されている」
って状況は可能なんじゃないのか?
あるかどうかは、知らないけど。
0763デフォルトの名無しさんNGNG
バスパワーってことは、「常に電源が入っている」ってことでしょう?
バスパワーでかつ電源スイッチがあるようなデバイスでも、電源スイッ
チを切ると認識されなくなるんじゃないかい。

0764760NGNG
レスありがとうございます。
たとえば単純に、現在使用可能なデバイスのリストを返してくるようなAPIを探しているんですが。
=電源が切れて認識されなくなったらリストからデバイス名が消える
みたいなことをAPIに期待しています。
0765デフォルトの名無しさんNGNG
>>764
多分DDK方面?
0766デフォルトの名無しさんNGNG
>>764
DDKにusbviewというサンプルがあるから見れ
0767デフォルトの名無しさんNGNG
>>764
昔レジストリで確認してたことある
一覧で探してあったらGetDeviceDiscriptor投げ
この辺の操作もDDKサンプルみれば乗ってたはず
0768760NGNG
DDK持ってない(T_T)有料なんですね今は
レジストリの線で探ってみます。ありがとうございました。
0769デフォルトの名無しさんNGNG
プロセスメモリエディタを作成したい(目標はExSTAND)のですが、
サブヒープの情報はどのように取得すればいいのでしょうか?


各ヒープエントリ情報は、

1.CreateToolhelp32Snapshotでプロセスのスナップショット取得
2.Process32First、Process32NextでPROCESSENTRY32取得
3.CreateToolhelp32Snapshotでヒープのスナップショット取得
4.Heap32ListFirst、Heap32ListNextでHEAPLIST32取得
5.HEAPLISTでHEAPENTRY32取得

という流れで取得できたのですが、サブヒープ情報は取得できません。
どのようにすればサブヒープの情報を取得できるのでしょうか?
よろしくお願いします
0770769NGNG
>>769
5.Heap32Firstの間違いですm(__)m
0771デフォルトの名無しさんNGNG
定期的にキーボード入力を生成するツールを作りたいのですが、
どうもうまくいきません。

PostMessage(WM_KEYDOWN,...), keybd_event, SendInput を使用したものは、
通常のアプリケーション(メモ帳とか)には正常に動作するのですが、
DirectInputを使ったゲームには作用しないようなのです。
(当然といえば当然かもしれませんが(><))

何かよい方法があったらご教授下さい。宜しくお願いします。
0772デフォルトの名無しさんNGNG
>>769-771
ネトゲサロンへお帰りください( ゚,_ゝ゚)
0773デフォルトの名無しさんNGNG
ある文字が指定したフォントで表示できるかどうか調べる、というAPIはありませんか?
TextOutで文字を書いたところ他のフォントに置き換わってしまい困っています。
0774デフォルトの名無しさんNGNG
>>773
結構しらべたけどない...orz
JAVAにはcanDisplay()という関数があるみたいだから何らかの
方法で実現はできるみたいだけど。。。
0775デフォルトの名無しさんNGNG
>>773
GetGlyphIndices かな
0776名無し@沢村NGNG
おみゃ〜らよ、メニューについていいことを教えてやろう。
それはリソースエディタでメニューをつくるとき、「ファイル(&F)」のように書くだろ?
すると「F」という字にショートカットキーが割り当てられるわけだ。
おみゃ〜らよ、おみゃ〜らは、いままでショートカットキーを割り当てるときの書式は、「ファイル(&F)」というふうでなくてはならないと思っていたはずだ。
どうだ?
だがおみゃ〜らよ、実は「&」の後の文字なら何でもショートカットキーが割り当てられるのよ。
「(&F)」のように「()」で囲む必要もない。
つまり「&ファイル」とすれば「フ」の字にショートカットキーが割り当てられるし、「フ&ァイル」とすれば「ァ」の字にショートカットキーが割り当てられるのよ。
これはおみゃ〜らが、いままで知らなかったことだ。
覚えておくといいぞ。おみゃ〜らよ♪
0777デフォルトの名無しさんNGNG
>>776
それぐらい知っとるわ。
「E&xit」とか良く見るし。
0778デフォルトの名無しさんNGNG
>>776
元々、「&File」だったのが、日本語で「&ファイル」すると
ショートカットが「フ」になるから「ファイル(&F)」にしてんだろ。
そんくらい、誰でも知ってるぞ。

「自分が知らなかった=まわりも知らない」
この図式自体が間違ってる事に気付け>沢村
0779デフォルトの名無しさんNGNG
>>777
>>778

マジレス ハゲカッッコワルイ
0780デフォルトの名無しさんNGNG
沢村くんの文章ではなぜ全角カナと半角カナが混在しているのだろうか。
前前から疑問に思っていたんだよね。
0781デフォルトの名無しさんNGNG
ファイル(\036F\037フ)
0782773NGNG
>>775
うまく動作させることに成功しました。
ありがとうございましたm(_ _)m
0783デフォルトの名無しさんNGNG
Win2KPro & VC++6.0でGINAの開発を行なっています。

WlxLoggedOutSAS()のログオン認証まではMsGina.Dllに処理をスルーして、
WlxActivateUserShell()の呼び出し時にさらにある条件で認証を行い
認証できれば、MsGina.DllのWlxActivateUserShell()に処理を渡し、
認証できなければ、FALSEを返してログオンを打ち切るプログラムを
作ろうと思っています。
そこで、WlxActivateUserShell()上でWlxLoggedOutSAS()で認証された
User名を取得したいのですが、方法が分かりませんご存知の方が居られ
ましたらご教授いただきたくお願いいたします。

恐らく引数lpWlxContextに、その辺の情報が入っている構造体のポインタが
渡されているのではないかと思っているのですが、MsGina.Dllでこの部分が
何に使われているのかが調べきれませんでした。

つたない質問で申し訳ありませんが、よろしくお願いいたします。
0784771NGNG
>>772
解決しました、ありがと〜
0785デフォルトの名無しさんNGNG

TrackPopupMenuで表示させたポップアップメニューを閉じたタイミングを
検出したい場合、どうすればよいのでしょうか?
ご教授よろしくおねがいします

0786デフォルトの名無しさんNGNG
WM_EXITMENULOOPではダメかしら
0787デフォルトの名無しさんNGNG
ところでご教授って人の名前?
0788デフォルトの名無しさんNGNG
>>787
ところで藻前、とてつもないバカ?
0789デフォルトの名無しさんNGNG
うん。教授と教示の違いが分からない奴よりはバカじゃないと思うけどね:-P
0790デフォルトの名無しさんNGNG
質問に答えるやつはちゃんと教授法を学べよ。
0791デフォルトの名無しさんNGNG
(:-P)_| ̄|_
0792デフォルトの名無しさんNGNG
きょうじゅ けう― 【教授】
(名)スル
(1) (ア)児童・生徒に知識・技能を与え、そこからさらに知識への興味を呼び起こすこと。
  (イ)専門的な学問・技芸を教えること。
(2) 大学などの高等教育機関において、専門の学問・技能を教え、また自らは研究に従事する人の職名。助教授・講師の上位。

人の名前?て聞くのはヴァカじゃね?
0793デフォルトの名無しさんNGNG
>>789
ああ、本当にバカだ。底なし。
0794デフォルトの名無しさんNGNG
>>787
ところで難しい質問が来るとしばらくスレが止まって、上げ足レスが付くっていうのは厨の十八番なのか?
判らなければスルーすればよいだけだと思うのだが
0795デフォルトの名無しさんNGNG
>>794
(゚Д゚)ハァ?、もしかして>>783の教えてクンのこと?
そんなの低レベル過ぎて答える気がしないだけだよ、あんなのがお前には難し過ぎる質問だったのかw
あんまり自分のレベルで判断するなよ、今回みたいに大恥かくよw
0796デフォルトの名無しさんNGNG
誰か構ってやれよ
0797デフォルトの名無しさんNGNG
エディットコントロールで文字フォントの大きさを変更したいのですが、
検索してSendMessageと、WM_SETFONTを使うべきと分かったのでやってみました。

SendMessage(hwndEdit, WM_SETFONT, (WPARAM)hFont, MAKELPARAM(TRUE, 0));

上のコードを親ウィンドウのプロシージャに埋め込んだのですが、フォント自体は変化せず。
文字高さを以前より大きくすると、カーソルが大きくなるだけです。
以前より小さくすると、フォント下部が欠けた状態で表示されるようになりました。
代わりにスタティックコントロールで試すと、この問題は生じません。

どこが間違っているのでしょう?、教えていただけないでしょうか。
環境は VC++.NET です。
0798デフォルトの名無しさんNGNG
一番間違ってるのはこんな状態のこのスレで聞くことだな
0799デフォルトの名無しさんNGNG
>>787==>>789 必死だな (激藁
0800デフォルトの名無しさんNGNG
>>796=783
まあ今回は許してやるから、勉強して今度はもうちょっとマシな質問しろやw
それと問題が解決したら情報をレスしろよ。それが礼儀だからな
0801デフォルトの名無しさんNGNG
>>800
全然面白くない。このスレから消えろ
0802デフォルトの名無しさんNGNG
>>801
そういうことは、住人が呆れるような低レベルな質問を、平気でする香具師に言うべきでは?
0803デフォルトの名無しさんNGNG
プ
0804デフォルトの名無しさんNGNG
>>795
…そう捨て台詞を吐いて、結局>>783の解決方法を言わないのか。
もし、>>794に対して文句言いたいなら>>783の答えを示して
「低レベルすぎて回答する気もならなかった」と言えば
>>794は何も言えないと思うのだが…。
0805デフォルトの名無しさんNGNG
>>804
>>795にとって、>>783は低レベルだが
>>794は高レベルな書き込みだったのだろう。
何故なら、レスしてるから。(w
0806デフォルトの名無しさんNGNG
つーかAPIの話しないなら出てけお前ら
0807デフォルトの名無しさんNGNG
   ∩___∩      
   | ノ      ヽ/⌒) あばばばばばば
  /⌒) (゚)   (゚) | .|  
 / /   ( _●_)  ミ/   ∩―−、
.(  ヽ  |∪|  /    / (゚) 、_ `ヽ
 \    ヽノ /      /  ( ●  (゚) |つ
  /      /      | /(入__ノ   ミ   あばばっあびゃばびゃばば
 |       /       、 (_/    ノ  
 |  /\ \       \___ ノ゙ ─ー
 | /    )  )       \       _     
 ∪    (  \        \     \
       \_)
0808デフォルトの名無しさんNGNG
>>797
エディットコントロールってフォント変えられるんだっけ?
MSDNで調べてみたら?
もしフォント変えられないっぽいならリッチエディットにする。
0809デフォルトの名無しさんNGNG
>>808
WM_SETFONTで変えろ
0810デフォルトの名無しさんNGNG
>>809 ( ゚д゚)ポカーン
0811デフォルトの名無しさんNGNG
>>797
WM_SETFONTでフォントを適用したあと、HFONTをDeleteObjectしてないか?
WM_SETFONTで適用したフォントはそのフォントを使わなくなるまで
(コントロールを削除など)保持しとかないとダメだぞ。

もしそうならスタティックで成功してるってのも、再描画すると元に戻ってると思うんだが…。
0812デフォルトの名無しさんNGNG
811 さん、、おっしゃる通りです。
直後にフォントを破棄していました。
エディットコントロールが既に存在しないフォントにアクセスしたんでしょうね。
スタティックは再描画後もOKでした、フォントをコピーして保持してるのでしょうか?
しくみが違うようです。

どうもありがとうございました。
0813デフォルトの名無しさんNGNG
↑↑↑
失礼、ミスリードしました。
スタティックも再描画したら問題発生しました。

ではでは。w
0814デフォルトの名無しさんNGNG
w
0815デフォルトの名無しさんNGNG
以下のようにしてファイルロックの様な物を実装しようとしてるのですが
時々処理がWaitForSingleObjectで固まってしまい困ってます。
何が悪いのでしょうか。
func()はマルチスレッドで山ほど同時に呼ばれます。

void func()
{
HANDLE hMutex = ::CreateMutex(NULL, FALSE, strMutex);
if (::WaitForSingleObject(hMutex, 2000) == WAIT_TIMEOUT)
 TRACE("WAIT_TIMEOUT\n");
// ここで保護したい処理
::ReleaseMutex(hMutex);
::CloseHandle(hMutex);
}
0816デフォルトの名無しさんNGNG
なんでそんなに作りまくるのか
0817デフォルトの名無しさんNGNG
実際とは違うけどIriaとかの同時ダウンロードみたいな感じで使用されます。
0818デフォルトの名無しさんNGNG
> 実際とは違う

どう違うのかかけ。
特に、毎回Createしてるのかどうか。
0819デフォルトの名無しさんNGNG
実際はIriaのようにファイルのダウンロードではなく
サーバにパケット送信したり受信したりしてます。
>毎回Create
Createとは何をCreateしてると言うことですか?
スレッドなら同時に何十も起動できるようにしてますが。
0820デフォルトの名無しさんNGNG
mutex
0821デフォルトの名無しさんNGNG
>>815
なー、実際に何を保護すんの〜?
0822デフォルトの名無しさんNGNG
func() のどこかで ::Sleep(5); を入れてみたらうまくいくかも。
違ってたらごめんなさい。
0823デフォルトの名無しさんNGNG
>>820
ミューテックスなら上に書いたようにスレッドが作成されそのスレッドから
毎回関数が呼ばれた際に作成して関数が終わるときに破棄するようにしています。

>>821
ファイル相手じゃないですがデータを読み込みそれを変更してデータを格納してます。
要はカウンタと同じです。

>>822
駄目でした。
0824デフォルトの名無しさんNGNG
>>823

main()
{
mutex を1つ作成
...
mutex を破棄
}

func()
{
mutex ウエイト

mutex リリース
}

じゃいかんのかえ?
0825デフォルトの名無しさんNGNG
つーかプロセス内でしか使用しないMutexに名前付けるな
0826デフォルトの名無しさんNGNG
>>825
そういやMutexってそのままグローバルに名前が見えちゃうんだっけ?
0827デフォルトの名無しさんNGNG
>>824
なるほど、大元で作成してそれを使いまわすみたいな感じですか。
ただ、このプログラムの場合、効率を上げるため幾つかmutexを作成してて
その辺変更するの時間かかりそうなのまた明日にでもやってみようと思います。

>>825
上にも書きましたが効率を上げる為です。
もう少し詳しく書くと以下のようにしてます。
void func(LPCSTR lpName)
{
CString strMutex;
strMutex.Format("ACCESS_%s", lpName);
HANDLE hMutex = ::CreateMutex(NULL, FALSE, strMutex);
...


lpNameはデータ名でこれは幾つか有ります。
AAAと言う名前のファイルにデータを書きこむ際は
BBBと言う名前のファイルは保護する必要は無いので。
0828デフォルトの名無しさんNGNG
>>827
これ以上アホな質問する前にマルチスレッドと同期について書いてある"まともな本"を読んで来い。
0829デフォルトの名無しさんNGNG
>>828
どの辺がアホなのか指摘していただけると凄く助かります。
0830デフォルトの名無しさんNGNG
>>827
ていうか情報を小出しにするな。前提条件は最初に書かなきゃ、
>>824や>>825がレスした事が無駄になっちまう可能性もある訳で。

0831デフォルトの名無しさんNGNG
>>827
それなら保護したいリソースにアクセスするクラスを構築するたびに
Mutexを生成する

struct FILEIO {
 FILEIO { むーってっくす生成 }
 ~FILEIO { むーってっくす棄て }

 HANDLE hmutex;
}

func(FILEIO& aaaaaaaa)
{
aaaaaaaa.hmutexをうえいと

aaaaaaaa.hmutexをりりーす
}
0832デフォルトの名無しさんNGNG
>>830
最初に全ての情報を書くと膨大なので必要だと思われるところだけを書いたつもりですが
いかせんアホなのでその辺の取捨選択が間違えてたようで、スミマセン。
0833デフォルトの名無しさんNGNG
>>828
答えを書いておきながら、ちょと同意してしまった。
0834デフォルトの名無しさんNGNG
>>828
まーその意見には同意するがこのスレでそんな身も蓋も無い事言うもんじゃない。
0835デフォルトの名無しさんNGNG
>>831
その方法を使わせていただきます。
有難うございました。
0836デフォルトの名無しさんNGNG
>>835
まー、頑張って。
Win32以前に同期のお勉強をしてね。もっといい方法が分かると思うよ。
0837デフォルトの名無しさんNGNG
近所のおねえさんとWin32APIでむっくすしたいので方法を教えてください
0838デフォルトの名無しさんNGNG
>>837
だまってメーラースレにお戻りください。
0839837NGNG
は?
0840デフォルトの名無しさんNGNG
>>837 のような書き込みするおまいの頭の方が「は?」だ。
0841デフォルトの名無しさんNGNG
それで、近所のおねえさんとむっくすする方法は…
0842デフォルトの名無しさんNGNG
>>841
speed&power
0843デフォルトの名無しさんNGNG
>>841
looks&money
0844デフォルトの名無しさんNGNG
pokotin&korman
0845デフォルトの名無しさんNGNG
同一プロセス内でしか使わないなら、クリティカルセクションでいいんじゃないの?
処理の重さは、Mutex>クリティカルセクションだよね?
0846デフォルトの名無しさんNGNG
>>845
非NTだとクリティカルセクションはタイムアウトできない
0847783NGNG
自己解決しました
なんか荒れる原因つくってしまったみたいで申し訳ありませんでした
0848デフォルトの名無しさんNGNG
コンボボックスについて質問です。
テキストが右揃えなスタイルのコンボボックスを作成すると、ドロップダウンのボタンが左側に配置されてしてしまうのですが
普通のコンボボックスのようにボタンを右側に残したままテキストを右揃えにするにはどうすればよいのでしょうか?
ご存じの方どうか宜しくお願いします。
0849デフォルトの名無しさんNGNG
自己解決しました
0850デフォルトの名無しさんNGNG
849 != 848 です。
この流れだと勘違いされそうなので...
0851デフォルトの名無しさんNGNG
>>848
そのスタイルは、右から左へ文章を表示する言語のためのもの。
自分で描画汁。
0852デフォルトの名無しさんNGNG
>>847
>>849
ヲイヲイ、「解決しまつた」だけじゃ何の意味もないだろうが
きちんとどうやって解決したのか報告しろ
そうじゃないと質問に答えてくれた人に失礼だろうが、お子様
じゃないんだから、それくらいの事は言われなくても分かって
くれよ…
0853デフォルトの名無しさんNGNG
自己解決しました
0854デフォルトの名無しさんNGNG
>>852
ねたにまj
0855デフォルトの名無しさんNGNG
2ちゃんでマナー語る香具師も珍しいな
0856デフォルトの名無しさんNGNG
852じゃないが2ch云々の問題じゃない。
スレの流れも悪くなるし、簡単でいいから内容を
書くべきだ。というか何も書かない椰子よりは
いいが。。。
0857デフォルトの名無しさんNGNG
2chとひと括りにするの自体が間違ってる。厨板・技術板・雑談板それぞれに特色があって
それぞれに異なった住人層(と表現しとく)があるんだから。なんかその辺を分かってない奴が最近あちこちの
板に激増してる気がする。空気が読めてないというか何と言うか。
0858デフォルトの名無しさんNGNG
自己完結しました。
0859デフォルトの名無しさんNGNG
セルフセックスですか
0860デフォルトの名無しさんNGNG
気になりますな。
遅そうとはいえ、>>815 で機能上は問題はないように見えるし。
0861デフォルトの名無しさんNGNG
>>851
そのようにさせていただきます。
既製の方法はありませんでしたか。
旧版が番号スタイルのエディットボックス(自動的に右揃え)を使っていたので
見た目を揃えたかっただけなのですが。
0862デフォルトの名無しさんNGNG
>>856
まあ、283=247は厨に絡まれまくっただけで技術的な支援はまったく
なかったしねえ、とてもレポート書く気にはならないと思われ
0863デフォルトの名無しさんNGNG
↑847=783ね
0864デフォルトの名無しさんNGNG
CHOOSEFONTでフォントダイアログを出した後、フォントサイズのところに任意の数字
を入れるにはどうすればいいのですか?
例えば、初めにフォントサイズ40を設定しておいて次回開いたときに40が入っている
って事がしたいのです。
0865デフォルトの名無しさんNGNG
こんばんは!一つ質問させてください。
320×240のウインドウを表示したいのですが、タイトルバーが含まれてしまうので
うまく作れないのですが、どうすれば良いのでしょうか?
(320×240の画像を表示したいのです)
よろしくお願いします!
0866デフォルトの名無しさんNGNG
>>865
WM_NCCALCSIZE を拾うでつ
0867デフォルトの名無しさんNGNG
>>865
1 適当なサイズでウインドウを作る
2 320-クライアントの幅 を現在のウインドウ幅に足してリサイズ
3 240-クライアントの高 を現在のウインドウ高に足してリサイズ

の2ステップが必要。
ウインドウメニューが無い場合は、AdjustWindowRect(Ex)を使っても良い。
0868デフォルトの名無しさんNGNG
質問です。
MacのDockをマネたのがWinにもあるけど、
あんな感じでアルファチャンネルを持った
画像を表示したいんです。

画像のアルファチャンネルでウィンドウを
透明にする方法を教えて下さい。

レイヤードウィンドウみたいに全体が
同じアルファ値じゃなくて、ピクセル
単位でアルファ値を変える方法が
しりたいです。

よろしくお願いします。
0869デフォルトの名無しさんNGNG
UpdateLayeredWindow()
0870デフォルトの名無しさんNGNG
>>869
MSDN読み直したら、「ピクセル単位のアルファ情報を含むこともできます」
と書いてありました。恐縮です。
ありがとうございました。m( _ _ )m
0871デフォルトの名無しさんNGNG
>>846
NTだとできるの?
0872デフォルトの名無しさんNGNG
エクスプローラで指定のフォルダが既に開いていないか取得する方法って無いですかね?
とりあえずエクスプローラのウィンドウはFindWindowでクラス名をCabinetWClassにすれば
取れるんですけどキャプションは設定によって変わりますからそこで判断は出来ませんし。
どこかからかそのフォルダのCLSIDでも取得出来るなら良いんですが。
0873デフォルトの名無しさんNGNG
堅実で確実な方法としては、シェル拡張で潜り込むしかないかな。
0874デフォルトの名無しさんNGNG
>>872
http://lamoo.s53.xrea.com/diary/diary2004a.html#t20040521a
0875872NGNG
>>874
おお、コリャ良い。
サンクスコ。

ってか、CLSIDじゃ無くてITEMIDLISTだったな。オオボケでした。
0876デフォルトの名無しさんNGNG
……この情報がどこから出てきたかは秘密です。

流出ソースだろ、ヤバくないか?
0877365NGNG
>>366
>>367
できました、有難うございました〜
0878デフォルトの名無しさんNGNG
>>876
これAvesta作者だよね・・・。なんかやばそう。
0879デフォルトの名無しさんNGNG
自作のダイアログを半透明にしようとして、WM_INITDIALOGに以下の様に
処理を書いてみたのですが、ダイアログが完全に透明になってしまいます。

いったいどこがおかしいのでしょうか?

BLENDFUNCTION bl;
BOOL bb;

SetWindowLong(hDlgWnd, GWL_EXSTYLE, GetWindowLong(hDlgWnd, GWL_EXSTYLE) | WS_EX_LAYERED);

bl.BlendOp = AC_SRC_OVER;
bl.BlendFlags = 0;
bl.AlphaFormat = 0;
bl.SourceConstantAlpha = 200;

bb = UpdateLayeredWindow(hDlgWnd, NULL, NULL, NULL, NULL, NULL, NULL, &bl, ULW_ALPHA);
0880デフォルトの名無しさんNGNG
SetLayeredWindowAttributes使え
0881デフォルトの名無しさんNGNG
カーソルをリソースからではなく
(メモリダイアログテンプレートのように)
コードで組み立てる(orコードに埋め込む)
にはどうすればよいのでしょう。
よろしくお願いします。
0882デフォルトの名無しさんNGNG
>881 CreateCursor
0883デフォルトの名無しさんNGNG
40バイトあるファイルをReadFileで10バイトずつ違う変数に代入したい
場合はどうすればいいのでしょうか。お願い申しage
0884デフォルトの名無しさんNGNG
10バイトずつ読む
0885デフォルトの名無しさんNGNG
リードしたバッファのアドレスをポインタで保持するだけでいいじゃん

0886デフォルトの名無しさんNGNG
>>885
こんな感じですか?
static char String[40];
char *p;

ReadFile(hFile,String, 40, &Read, NULL);
p = String;
w = atoi(p+0);
x= atoi(p+10);
y= atoi(p+20)
z atoi(p+30)
0887デフォルトの名無しさんNGNG
(・∀・)・・・?
0888デフォルトの名無しさんNGNG
変数に代入、という時点で気付くべきだったな。
0889デフォルトの名無しさんNGNG
構造体に読み込みなさい
0890デフォルトの名無しさんNGNG
ここはAPIスレだからそれでもいいけど
一般にはストリームから直接構造体に読み込むのは
移植性無さ過ぎるぞ
0891デフォルトの名無しさんNGNG
構造体に読む込むってのは、どうやって
かるく例を書いてもらえるとありがたいんですが
0892デフォルトの名無しさんNGNG
BITMAPFILEHEADER f;
fread(&f, sizeof f, 1, fp);

みたいなことだろ
0893デフォルトの名無しさんNGNG
pretty hackey wayですね(hackyだっけ)
0894デフォルトの名無しさんNGNG
Google先生にお伺いを立ててみたところ
hackyジャネーノ? と言われますた
http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&oe=UTF-8&q=hackey
0895デフォルトの名無しさんNGNG
別スレで質問したのですが、そのスレが終わってしまったのでこちらで質問します。

マイコンピューターの、ドライブ名の一覧を取得するにはどうすればよいのでしょう。
デジカメなどのマスストレージなども含めて取得したいです。
OSで開いた場合の「マイコンピュータ」フォルダと同じ内容が得られれば目的を果たせるのですが。
OSはXP、言語はDelphiです。
0896デフォルトの名無しさんNGNG
>>895
IShellFolder::EnumObjects
0897デフォルトの名無しさんNGNG
フォントダイアログの「文字飾り-色」だけを非表示にするAPIってありますか?
文字飾りグループを全部消せるのは知っています。
0898デフォルトの名無しさんNGNG
CFHookProcでフォントダイアログにフックを引っ掛けて
その中で目的のコントロールを非表示でよいんじゃないのか?
0899デフォルトの名無しさんNGNG
>>897
ShowWindow
0900デフォルトの名無しさんNGNG
>>896
できますたありがとうございます
0901デフォルトの名無しさんNGNG
CreateProcessを使って立ち上げたexeの標準出力&エラーを
元で取得するにはどうしたらよいでしょうか。
よろしくお願いします。
0902デフォルトの名無しさんNGNG
>>901
パイプ
0903デフォルトの名無しさんNGNG
windows pipeの覚書
ttp://nhiro4.ld.infoseek.co.jp/program/windows/pipe.html
0904デフォルトの名無しさんNGNG
パイプ(名無し)は WaitFor ができないのが難点。
0905デフォルトの名無しさんNGNG
>>904
CreateProcessするんだからプロセスハンドルじゃだめか?
0906904NGNG
>>905
プロセス終了後にまとめて読むんだったらそれでよいけど、
子プロの吐く内容をリアルタイムで取得したい場合もあるから。
たとえば対話式コマンドとか。
0907デフォルトの名無しさんNGNG
それはスレッド使うのが定石。
0908904NGNG
スレッド使ったところで、ReadとWaitのループで待つわけだから、
パフォーマンスとレスポンスのトレードオフになる。
てか、名前憑きは使えないんだっけ?
0909デフォルトの名無しさんNGNG
>>908
>ReadとWaitのループで待つわけだから、
ReadFile自体がブロックするからWaitは不要。
レスポンスも悪くないよ。

>>901
>190351 - HOWTO: Spawn Console Processes with Redirected Standard Handles
http://support.microsoft.com/?id=190351
0910デフォルトの名無しさんNGNG
ユーザー名から、そのユーザーのユーザーグループ(アドミニとかパワーユーザー)を
知りたいんですがそんなAPIありませんでしょうか?
0911デフォルトの名無しさんNGNG
WM_INITDIALOGの中でSetTimer(hDlg, NULL, 1000, NULL)すると
何かダイアログを操作するまでWM_TIMERがこないんですが、何故でしょうか?
設定したダイアログに対して何か操作をすると
それからは設定した時間ごとにWM_TIMERが飛んでくるんですが・・・
0912デフォルトの名無しさんNGNG
タイマIDって0よかったっけ?
0913デフォルトの名無しさんNGNG
>>910
NetUserGetLocalGroups
0914911NGNG
>>912
MSDNにはダメとは書いてないですし、SetTimer()の戻り値も正常なので大丈夫かと。
一応適当な数値でやってみましたが、症状変わらずです・・・
0915デフォルトの名無しさんNGNG
>>911
モーダルとモードレスがわかっていない阿寒
0916911NGNG
あー単純なモーダルダイアログでやってみたらきちんと来ました。
何かミスってるぽいですね。

>>915
解決法をご存知でしたら教えていただきたいんですが、
モードレスダイアログの場合CreateWindow()で作ったWindowのように
PeekMessage()した後にIsDialogMessage()を呼ぶのではダメなんでしょうか?
0917デフォルトの名無しさんNGNG
>>916
どんなメッセージループを書いたのか、書いてみ?
0918911NGNG
>>917
/* ダイアログ作ったり */

while( hDlg || hMainWnd )
{
  while ( ::PeekMessage( &msg, NULL, 0, 0, PM_REMOVE) )
  {
    if ( hDlg && ::IsDialogMessage( hDlg, &msg ) )
      continue;
    ::TranslateMessage(&msg);
    ::DispatchMessage(&msg);
  }
  /* 毎回呼びたい関数とか */
}

こんな感じです。よろしくお願いします
0919911NGNG
よく分かりませんが、主要部分は全部クラス化してたので
GUIの部分だけ書き直したら正常に動作しました。
正直意味不明です。コード内容ほとんど変わってないのに・・・orz
お騒がせしました。
0920デフォルトの名無しさんNGNG
RGBで色を指定するときボタンの色とかのWindowsのシステムカラーを指定するのってどうすればいいんですか?
0921デフォルトの名無しさんNGNG
GetSysColor
0922デフォルトの名無しさんNGNG
>>921
R:00 G:00 B:01ならボタンの色とかRGB値で直接指定できたりはしないの?
0923デフォルトの名無しさんNGNG
>>922
できません。それだと RGB=(0,0,1) の色が使えなくなっちゃうじゃん。
ブラシ (HBRUSH) を取る関数なら、 (HBRUSH) (COLOR_BACKGROUND+1) とかで
いけるんだけどね。
0924デフォルトの名無しさんNGNG
何いってんの?256カラーモードで使えば?
0925デフォルトの名無しさんNGNG
>>923
それは本来GetSysColorBrush(COLOR_BACKGROUND)とするべきではないのか。
0926デフォルトの名無しさんNGNG
>>923
補足で蛇足。先方が OCX コントロールだったりして、OLE_COLOR 型で色指定する場合には、
OleTranslateColor の説明に出てくるいろんな方法 (0x80000000 | COLOR_BACKGROUND とか)が使えます。
0927デフォルトの名無しさんNGNG
>>901
パイプで解決しました。
ありがとうございます。
0928デフォルトの名無しさんNGNG
自分以外のウインドウのサイズ変更を制限することは可能でしょうか?
自分のウインドウのサイズを制限する場合はウインドウプロシージャで
WM_GETMINMAXINFOメッセージを処理すれば出来るらしいので、
DLL作ってフックプロシージャで制限したいウインドウのメッセージを
処理しようとしているのですがうまくいきません。

LRESULT CALLBACK MsgProc( int nCode, WPARAM wParam, LPARAM lParam )
{
 CWPSTRUCT *pCWP;
 MINMAXINFO *lpmmi;
 if( nCode == HC_ACTION ) {
  pCWP = (CWPSTRUCT *)lParam;
  if( pCWP->hwnd == hWnd ) { //hWndはサイズ変更を制限したいウインドウのハンドル
   switch( pCWP->message ) {
   case WM_GETMINMAXINFO:
    lpmmi = (MINMAXINFO *) pCWP->lParam;
    lpmmi->ptMinTrackSize.x = 600;
    lpmmi->ptMinTrackSize.y = 480;
    lpmmi->ptMaxTrackSize.x = 1024;
    lpmmi->ptMaxTrackSize.y = 768;
    return 0;
   }
  }
 }
 return CallNextHookEx( Msg, nCode, wParam, lParam );
}

lpmmi = (MINMAXINFO *) pCWP->lParam;
のところを
lpmmi = (MINMAXINFO *) lParam;
に変えてみても出来ませんでした。
ご存知の方いらっしゃいましたらご教授下さい。
0929デフォルトの名無しさんNGNG
>>928
>return 0;
これじゃあ、ターゲットのウインドウまでWM_GETMINMAXINFOが届かない。
メッセージをいじった場合でも、メッセージをブロックする場合以外は
Call〜()を呼ぶ。
0930デフォルトの名無しさんNGNG
あ、ごめん。
この場合これでいいのか。929は忘れてくれ。
0931デフォルトの名無しさんNGNG
単純にグローバルフックになってないとか。
0932デフォルトの名無しさんNGNG
>>931
WM_GETMINMAXINFO以外にもメッセージをフックしていますが、
そちらは正常に動いていますのでグローバルフックにはなっていると思います。
念のためreturn 0;の前にメッセージボックスを入れて確認しましたが、
サイズを変更しようとするときちんと表示されています。
それなのに600*480よりも小さくなってしまうんです…。
0933デフォルトの名無しさんNGNG
MSDNより
> CallWndProc フックプロシージャはメッセージを調べることはできますが、
> 変更することはできません。
0934デフォルトの名無しさんNGNG
>>933
そういうことでしたか…
勉強不足でした。ありがとうございました。
0935デフォルトの名無しさんNGNG
>>934
フックで先方のプロセスに入り込んだ後でサブクラス化(Window Proc の付け替え)すればOKだと思うよ。
0936デフォルトの名無しさんNGNG
>>935
結構雑事が多いから整合取るの大変だけどね
0937デフォルトの名無しさんNGNG
複数のファイルのドロップソースになりたいのですが、
フルパスのITEMIDLISTから、デスクトップのIShellFolderを使い
GetUIObjectOfをすればいいんですか?
それとも、やっぱりIDataObjectを実装しないとならないのでしょうか?
0938デフォルトの名無しさんNGNG
>>928
サブクラス化により無事制限出来ました。
どうもありがとうございました。
0939デフォルトの名無しさんNGNG
>>919
???
0940デフォルトの名無しさんNGNG
>>937
GetUIObjectOfでIID_IDataObjectを指定すればIDataObjectを得られるので、
自分で実装しなくてもいいです
0941デフォルトの名無しさんNGNG
>>940
c:\foo\text
d:\bar\text
...
のように、別々なフォルダにあるファイルを複数まとめたIDataObjectが欲しいんです。
IEnumIDListで得られるITEMIDLISTからIDataObjectを取得する場合、
複数フォルダにまたがったファイルからの取得は無理ですよね?
0942デフォルトの名無しさんNGNG
程度の低い質問かもしれません&長文ですが御容赦下さい。DefWindowProcの振舞についてです。

ShowBitmap()なる自作関数があります。これはビットマップをメモリデバイスコンテキストにロードして
BitBltでウィンドウ送るだけのものです。これをWM_PAINTな時に実行させると、正しく表示されます。

次に、ボタンやメニューによるメッセージを使ってビットマップを表示させようと考えました。
プロシージャ内でメッセージはswitchで仕分けていますが、
case WM_PAINT:
break;
なる何もせぬコードの有無で振舞が違うのです(ある時にのみ表示されました。) この理由がわかりません。

原因として考えたのが、以下に示すswitch文最後の入門書通りの処理です。
return (DefWindowProc(hWnd, msg, wParam, lParam));
上記「何もしないコード」が無い時は、WM_PAINT時コレが呼び出されるのですが、その際に
何かビットマップが表示されない様な処理が施されるのでしょうか?
そうだとすると「何もしないコード」の挿入で、ビットマップが表示される様になる事は合点がゆきます。
しかし一方で、ShowBitmap()の代わりにメモリデバイスコンテキストでない、文字や線を描くコードを
入れると、「何もしないコード」がなくても描画できるのです。

この事は、一体どの様に理解したらよろしいのでしょうか?先生方、お知恵を拝借できませんでしょうか?
0943デフォルトの名無しさんNGNG
自己解決しました。
0944942NGNG
>>943
騙り氏ね。

>>942お願いします。もう時間が無いんです。
0945デフォルトの名無しさんNGNG
そんな書き込みで誰かが面倒見てくれると思ってんのカ
0946デフォルトの名無しさんNGNG
まさかとは思うがWM_PAINT以外でもBeginPaintしてるとかいうトンチキなオチはないよな?
0947デフォルトの名無しさんNGNG
ShowBitmapもださねーで長文をダラダラと。
0948デフォルトの名無しさんNGNG
事後承諾しました。
0949デフォルトの名無しさんNGNG
今までDLLからウインドウを作ろうなんて考えもしなかったんだけど、
DLLからCreateWindowをするとき、HINSTANCEにはDLLのインスタンスハンドルを指定するのですか?
それともWinMainのHINSTANCEを指定すればいいのですか?
NT系だと無視されるようなので、どちらが正しいかってのがちょっと分からないのですが。
0950940NGNG
>>941
ちょっと試してみたのですが、別ディレクトリのファイルでGetUIObjectOfして
エクスプローラにドロップしてみましたが、なぜかショートカットの作成しかできなくて
コピーなどができないのが謎です。
自前でIDataObjectを処理しないと無理なのか???
0951デフォルトの名無しさんNGNG
だれか942の質問答えてやれよ?
ここまで低姿勢なんだからさ!
0952デフォルトの名無しさんNGNG
> BitBltでウィンドウ送るだけのものです。これをWM_PAINTな時に実行させると、正しく表示されます。

> case WM_PAINT: break; なる何もせぬコードの有無で振舞が違うのです

WM_PAINTな時に実行してないじゃん。
0953942NGNG
すみません、つまらない勘違いでした。
どうもお騒がせしました。二度と来ないので勘弁してください。
0954デフォルトの名無しさんNGNG
まぁ、case WM_PAINT: break;って何もしないコードとは言い切れないよな。
0955デフォルトの名無しさんNGNG
>>942
漏れはDefWindowProcよりも、switch後の振舞の方が気になる。
0956デフォルトの名無しさんNGNG
だったらお前が答えてやれよ?
そこまで高圧的なんだからさ!
0957デフォルトの名無しさんNGNG
case WM_PAINT: break;
これだと無効領域が有効にならないから
延々とWM_PAINTが飛び続けるんじゃないかな
0958942 ◆ltc18hDOM. NGNG
皆様、お騒がせして申し訳ない&お返事感謝です。>>943, >>944, >>953 は騙りです。お恥ずかしいのですが
やはり該当コードを晒すことにします。hW、hIはグローバルなウィンドウ及びインスタンスハンドルです。
「何もしないコード」の有無でビットマップの振舞が変化します。文字表示に変化はありません。
以下プロシージャです。
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam){
switch (msg) {
case WM_DESTROY:
PostQuitMessage(0); break;
//case WM_PAINT: // 「何もしないコード」
//break;
case WM_COMMAND:
switch (LOWORD(wParam)) {
case ID_SHOWBITMAP:
ShowBitmap(); ShowText(); break;
default:
break;
}
default:
return(DefWindowProc(hWnd, msg, wParam, lParam));
}
return (0L);
}
0959942 ◆ltc18hDOM. NGNG
描画コードです

void ShowText(){
HDC hdc;char* str = "hello";
hdc = GetDC(hW);
TextOut(hdc, 10, 10, str, lstrlen(str));
ReleaseDC(hW, hdc);
return;
}

void ShowBitmap(){
HDC hmdc, hdc; HBITMAP hBitmap; PAINTSTRUCT ps;

hdc = BeginPaint(hW, &ps);
hBitmap = LoadBitmap(hI, MAKEINTRESOURCE(IDB_BITMAP1));
hmdc = CreateCompatibleDC(hdc);
SelectObject(hmdc, hBitmap);
BitBlt(hdc, 0, 0, 200, 200, hmdc, 0, 0, SRCCOPY);
DeleteDC(hmdc);
DeleteObject(hBitmap);
EndPaint(hW, &ps);
return;
}
0960946NGNG
いぇい、ビンゴ
0961デフォルトの名無しさんNGNG
>>946 が勝者でした。
ここで質問する前に、猫でも読んでおけ。
読み終わるまでは戻ってくるな。
0962デフォルトの名無しさんNGNG
もう解決してるんですが…荒らしはやめてください>>958,959。
0963942NGNG
ソースを良く見直したら、自分がどれほどバカだったか痛いほど思い知りました。
みなさんどうもありがとうございました。涅槃で待ちます。
0964デフォルトの名無しさんNGNG
スレを使い切る直前には何故か一揉めするな。
0965942NGNG
テヘッ
0966デフォルトの名無しさんNGNG
CreateCompatibleDCで作ったDCで最初に選択されてるビットマップって
DeleteObjectしなくていいの?
0967デフォルトの名無しさんNGNG
>>959
デバイスコンテキストを扱うときはWM_PAINT時とそれ以外で分けたほうがいいです。
具体的には

void DrawSomething(HDC hdc=NULL)
{
  bool flag=false;
  if(hdc==NULL){
    hdc = ::GetDC(hWnd);
    flag = true;
  }

  //いろいろ描画

  if(flag){
    ::ReleaseDC(hdc);
  }
  return;
}

ってな感じ。DrawSomethingをWM_PAINT時に呼ぶなら
BeginPaintでデバイスコンテキストを取得してから引数に指定します。
それ以外はNULLを指定して内部でGetDC/ReleaseDCを呼び出すようにする。

理由はうまく説明できそうにないのでエロイ人にでも聞いてください。
0968デフォルトの名無しさんNGNG
>>967
そんなことするぐらいならDCは常に呼び出し側が用意、でいいだろ
0969942NGNG
うるせー馬鹿
さっさと寝ろ
0970デフォルトの名無しさんNGNG
>>966を教えてよ。
本当の幸せ教えてよ。
0971デフォルトの名無しさんNGNG
貴様にレインボーだごるぁ
0972デフォルトの名無しさんNGNG
>>966
どうしても気になるなら削除すればいいよ。
ただ、DCに選択されてるオブジェクトはDeleteObjectできないから、
別のビットマップを身代りとして選択しとかなくちゃいけない。
そいつは削除できずに残るけど、まあ目的のためには些細なことだ。
0973デフォルトの名無しさんNGNG
>>972
削除しなければいけないのかどうかを知りたいのですが。
ストックオブジェクトとはわけが違いますよね?違わないの?
0974デフォルトの名無しさんNGNG
今簡単な送受信ソフトを作っているのですが、送受信の進行状況をプログレスバーで表すことができません。
送受信したファイルサイズなど表す方法があったら教えてください。
自分なりに調べてみたのですが、適当な物が見つかりません。
宜しくお願いします。
0975942 ◆ltc18hDOM. NGNG
>>942 に関わった皆様
荒らしてしまって申し訳ないです。BeginPaintをMSDNで見ると、確かに
WM_PAINT時以外使うなとありますね。すみませんでした。今後 >>967-968 さんの様にします。
>>963 は騙りですが、現在この通りの事を思っております。出直してきます。

ありがとうございました
0976デフォルトの名無しさんNGNG
>>975
まあ、がんがれ。変なのが多かったのは来たタイミングが悪かっただけさ。
0977デフォルトの名無しさんNGNG
(´・ω・`)ノシ変なのの一人でーす
0978デフォルトの名無しさんNGNG
自分が答えられない質問されると何故かキレる奴が居るからな。
どのスレでも言える事だが。
0979デフォルトの名無しさんNGNG
プ
0980デフォルトの名無しさんNGNG
ttp://www5.wisnet.ne.jp/~mercury/supertag/index.html
のSuper Tag Editorのように、リストビューにツリーを表示するには
どうしたらいいんでしょうか?
フックとオーナードローをするしかないのかな。
0981デフォルトの名無しさんNGNG
そこまでキーワードが分かってりゃ検索すれば一発でサンプルが見つかると思うんだが。
0982デフォルトの名無しさんNGNG
>>981
>フックとオーナードローをするしかないのかな。
から>>980をプロファイリングすると、恐らく内心では

「フックとオーナードロー('A`)マンドクセ もっとバカチョンな方法教えろゴルァ」

と思っている。間違いない。
0983デフォルトの名無しさんNGNG
で?って言う。
0984デフォルトの名無しさんNGNG
サンプルどころか、ソース公開なわけだが。
まあGPLだから取扱注意だけど。
0985デフォルトの名無しさんNGNG
GPLなコードを見て内容を理解し、そっくりな内容のソースを焼き直ししてもGPL感染は無いので安心したもれ。
0986デフォルトの名無しさんNGNG
あ、だからソースそのまんま使っちゃう場合の話ね。
厨な質問するヤシは厨な解決手段をとりがちだから
0987デフォルトの名無しさんNGNG
>>982
いや、まあ図星なわけですけど。
フックていうか、サブクラス化ですね。

>>985
マジ・・・なのかな。
0988デフォルトの名無しさんNGNG
>>987
コードはGPLに縛られてもアルゴリズムは縛られないからね
0989デフォルトの名無しさんNGNG
ダメに決まってるじゃん
0990デフォルトの名無しさんNGNG
素人のGPL談義ほど不正確なものはない
0991デフォルトの名無しさんNGNG
↓次スレ
0992 ◆Manna2uCLg NGNG
ちょっくら立ててくるぜ。
0993 ◆Manna2uCLg NGNG
…すまん。立てられなかった…
plalaだめぽ…
0994デフォルトの名無しさんNGNG
コードなんて盗んでなんぼのもん
0995デフォルトの名無しさんNGNG
Win32API質問箱 Build20
http://pc5.2ch.net/test/read.cgi/tech/1088140233/
0996デフォルトの名無しさんNGNG
996
0997デフォルトの名無しさんNGNG
997
0998デフォルトの名無しさんNGNG
998
0999デフォルトの名無しさんNGNG
Win32API質問箱 Build20
http://pc5.2ch.net/test/read.cgi/tech/1088140233/
1000⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡NGNG
Win32API質問箱 Build20
http://pc5.2ch.net/test/read.cgi/tech/1088140233/
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。