Win32API 質問箱 Build12

このエントリーをはてなブックマークに追加
1SDK
.NET Framework!? 知らんな!!
そんなヤル気のあるネィティブプログラマ集まれ!
スレ立てるまでもない、Win32APIについての質問はこちらへどうぞ。
やさしい お兄ちゃん 達が答えてくれるかも。
でも、質問する前に検索ぐらい汁!!
過去スレ・参考は>>2 ぐらい...
2SDK:03/06/19 23:41
5Bフレッツァー:03/06/19 23:46
MSDN Online巡回して根こそぎローカルにダウンロードする方法教えて。
貧乏人は大変だな(w
7デフォルトの名無しさん:03/06/20 00:08
うpロダ巡回して根こそぎローカルにダウンロードする方法教えて。
>>7
Win32 APIを使えば出来ます。
がばっりまーーーーす
10デフォルトの名無しさん:03/06/21 12:09
もまいら暑いですが元気ですか!!
おせてくさい。m(__)m
VBとかDelphiのコンボボックスをSpy++で見ると
独自のウィンドウクラスを使用していますが、
コンボのドロップダウンの部分とかはOS実装だと
思うので"ComboBox"を使用しないと実現できないと
僕は思うのですが(また独自実装だとOSがEditとか
ComboBoxとかのコモンクラスを提供する意味がない)
これってどうやっているのでしょう??
>>10
実は俺も知りたい。
コンボボックスのドロップダウンや、ポップアップメニューは、
ポップアップウィンドウなのに、表示されてもオーナーウィンドウのキャプションバーが青いままなんだよなぁ。
自前のウィンドウクラスでやろうとしてもなかなかうまく行かない。
クリックしてもアクティブにならないようにするだけじゃないの?
13デフォルトの名無しさん:03/06/21 13:49
他のウィンドウの遠隔操作をするのに
クラス名を指定してマウスの左クリックを送信したいのですが
WIN32APIはに関しては初心者のためあまりわかりません。
今までは、SetForegroundWindowを送った後にTABキーとエンターキーだけで左クリックの
代わりをしていたのですがそれでは動作が不安定がちになり困っています。
だれか教えていただけないでしょうか?
使用している言語はHSPです
>>13
WIN32APIでボタン押すなら
PostMessage(hwnd,WM_LBUTTONDOWN,0,0)
これでだめならHSPスレで
>10
独自のウィンドウクラスって言ったってクラス名だけだろ。
ドロップダウン部のクラス名は変わってなさそうだからサブクラスされていると思われ。
mciSendString 使って、あるスレッドでオープンした曲を
他のスレッドで操作することはできないのかな?
ちょっとやってみたかんじ、うまくいかないんだけど。
17デフォルトの名無しさん:03/06/21 17:21
>>14
ありがとうございます。
今から試してみたいと思います
以下のコードを音声を再生しながら、
ループさせると音声にノイズが入ります。
原因がまったくわからず、困ってます。
みなさんの、お力を貸してください。

OS:Windows2000pro
SOUND:Creative Sound Blaster Live!
GRAPHIC:Matrox Parhelia 128MB
つづき
-- source --

BITMAPINFO bi;
HBITMAP bitmap, save;
HDC dc,memdc;
LPBYTE bits;
int width=640,height=480;
bits = malloc(width*height*4);
bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
bi.bmiHeader.biWidth = width;
bi.bmiHeader.biHeight = height;
bi.bmiHeader.biPlanes = 1;
bi.bmiHeader.biBitCount = 32;
bi.bmiHeader.biCompression = BI_RGB;
bi.bmiHeader.biSizeImage = width*height*4;
bi.bmiHeader.biXPelsPerMeter = 0;
bi.bmiHeader.biYPelsPerMeter = 0;
bi.bmiHeader.biClrUsed = 0;
bi.bmiHeader.biClrImportant = 0;
bi.bmiColors->rgbBlue = 0;
bi.bmiColors->rgbGreen = 0;
bi.bmiColors->rgbRed = 0;
bi.bmiColors->rgbReserved = 0;
BITMAPINFO bi;
HBITMAP bitmap, save;
HDC dc,memdc;
LPBYTE bits;
int width=640,height=480;
bits = malloc(width*height*4);
bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
bi.bmiHeader.biWidth = width;
bi.bmiHeader.biHeight = height;
bi.bmiHeader.biPlanes = 1;
bi.bmiHeader.biBitCount = 32;
bi.bmiHeader.biCompression = BI_RGB;
bi.bmiHeader.biSizeImage = width*height*4;
bi.bmiHeader.biXPelsPerMeter = 0;
bi.bmiHeader.biYPelsPerMeter = 0;
bi.bmiHeader.biClrUsed = 0;
bi.bmiHeader.biClrImportant = 0;
bi.bmiColors->rgbBlue = 0;
bi.bmiColors->rgbGreen = 0;
bi.bmiColors->rgbRed = 0;
bi.bmiColors->rgbReserved = 0;
dc = GetDC(NULL);
memdc = CreateCompatibleDC(dc);
bitmap = CreateCompatibleBitmap(memdc,width,height);
save = SelectObject(memdc,bitmap);
BitBlt(memdc,0,0,width,height,dc,0,0,SRCCOPY);
SelectObject(memdc,save);
DeleteDC(memdc);
GetDIBits(dc,bitmap,0,height,bits,&bi,DIB_RGB_COLORS);
ReleaseDC(NULL,dc);
DeleteObject( bitmap );
free(bits);

>>19は、間違いました。無視してください。
>>18-21
そのコードがなければ正しく再生されるんだな?
って事はそのコードの負荷が多すぎるってことじゃね?
ループ内の
bits = malloc(width*height*4);
memdc = CreateCompatibleDC(dc);
bitmap = CreateCompatibleBitmap(memdc,width,height);
は外に持ってった方がいいんじゃ無いか?
省電モードでディスプレイの電源がオフになっているかをしらべるには
どのAPIをつかえば良いのですか?
>>22
ありがとうございます。
そうです。このコード以外は問題はありません。
普通に何もないWinMainに、このコードを書いても
ノイズがのるので。ノイズは主に
>BitBlt(memdc,0,0,width,height,dc,0,0,SRCCOPY);

>GetDIBits(dc,bitmap,0,height,bits,&bi,DIB_RGB_COLORS);
でノイズが発生しているっぽいです。
(ここをコメントアウトするとノイズは無くなる)
ノイズは「ブッ」って感じの音でループすると「ブッツブッツ・・・」
という感じになります。

他の環境で、この問題が起こらなければ「自分の環境の問題」と
して、この問題は無かった事にしようと思うのですが・・・。
「自分の環境の問題」でも、もしかしたら「他でも起こる問題」かもしれないので、やっぱり対処しておいた方がいい。
問題が起きたときに、「お前のところ出てるのに(ry」とかいわれると困る。
BitBltで発生してるのに対処のしようがあるの?
質問です。フルパス名と相対パス名で処理を分岐させたいのですが
以下のような判別方法で良いでしょうか?

(判別方法)
・先頭文字が'\'か'/'ならフルパス名。文字列が':'を含むならフルパス名。

(例)
C:\A\B\C\SAMPLE.TXT / \A\B\C\SAMPLE.TXT →フルパス名
B\C\SAMPLE.TXT / SAMPLE.TXT → 相対パス名

もしかして簡単に調べるAPIがあるのでしょうか…?
よろしくお願いします。
2文字目が「:」
2927:03/06/22 15:51
>>28
ご教示ありがとうございます。
なるほど…、ドライブ名は1文字固定でした。

・先頭文字が'\'か'/'。2文字目が':'ならフルパス名。

これでいいのかな…。
ネトワークのパスは?
\\client\SharedDoc
>>27
PathIsRelative()

パス関係は自前でやろうとすると
ttp://www.ipa.go.jp/security/awareness/vendor/programming/b08_01_main.html
とか見て鬱になる。UNCパスもあるし。
3227:03/06/22 16:25
>>30
あ…、ネットワークドライブのことを考えていませんでした。
なかなか一筋縄ではいきませんね。

>>31
URL先読ませていただきました。これは本当に複雑ですね…(絶句)…。
判定するAPIがあるんですね。よかった…。(汗)
このAPIに従いたいと思います。

皆様にご教示いただいて、助かりました。
ありがとうございます。
33デフォルトの名無しさん:03/06/22 16:59
HSPを使っているのですがGetForegroundWindowで
ハンドルを取得してそのハンドルから子ハンドルを
取得取得しようとしているのですがうまくいきません
一応ネットなどで探してみたのですがHSPでの子ハンドル
の取得方法が書いてあるページが無くて困っています
だれかこんな私に力を貸していただけないでしょうか?

↓ソースです
341/2:03/06/22 17:00
#include "llmod.as"


sdim buf,1000;      タイトルバーの文字列を入れる変数
sdim name,100
alloc hwnd_buf,256

screen 0,240,100:gsel 0,2
font "MS ゴシック",12,16

repeat:wait 1

dllproc "GetForegroundWindow",prm,1,D_USER;最前面ウィンドウのハンドル取得
hwnd=dllret;変数dllretにハンドルが返る

getptr ptrm,buf
dim prm,3

prm.0=hwnd
prm.1=ptrm
prm.2=1000
dllproc "GetWindowTextA",prm,3,D_USER;ウィンドウのタイトル取得
hwnd_buf=buf

getptr cls_name,name
prm.0=hwnd
prm.1=cls_name

prm.2=100
dllproc "GetClassNameA",prm,3,D_USER
352/2:03/06/22 17:02
prm.0=hwnd
prm.1=GW_CHILD
dllproc "GetWindow",prm,2,D_USER
child_hwnd=dllret

getptr perm,buf
dim prm,3
prm.0=child_hwnd
prm.1=perm
prm.2=1000
dllproc "GetWindowTextA",prm,3,D_USER;ウィンドウのタイトル取得
child_buf=buf

redraw 0
color 255,255,255
boxf:pos 0,0
color 0,0,0

mes hwnd_buf
mes " HWND:"+hwnd+"
mes " Class:"+name
mes ""
mes " CHILD_HWND:"+child_hwnd
mes " CHILD_buf:"+child_buf
redraw 1
loop
stop
このスレでHSP絡みってあんまり見ないな…
まぁ、HSPでAPIをいじってる人ってごく一部だと思うから…
>>24
waveOut系の処理がウィンドウ任せなら優先順位高めのスレッドに擦り付けてみれ。
HSP読めん
>>33 その取得したフォアグラウンドウィンドウが子ウィンドウを持っていない罠とか
4133:03/06/22 21:57
>>40
そうでもないんですよ・・。
上のソースをexeにしてみたので誰か確認おねがいします。
http://proxy.ymdb.yahoofs.jp/users/76095b11/bc/sample.exe.exe?bcY5gR_ASpwWU7dH

何度もすみません。
42お〜い:03/06/22 21:59
ダウンロードするとき時計みたいのがでるんですけど・・・
なんででしょう?
4333:03/06/22 22:10
>>42
私のことでしょうか?
もしそうでしたら直接リンクをクリックするとYahoo側で拒否されるので
アドレスをブラウザにコピペしてダウンロードしてみてください。
>>33

#define GW_CHILD 5

が必要。
sample.exeってファイル名を見るとウイルスを連想してしまうな(w
>>33
ところで MSDNには
|すべての子ウィンドウを取得する場合、EnumChildWindows 関数を使った方が
|GetWindow 関数をループ処理で呼び出すよりも信頼性の高い結果が得られます。
|GetWindow 関数を呼び出してウィンドウを列挙すると、無限ループに陥ったり、
|すでに破棄されているウィンドウのハンドルを参照する危険性がでてきます。
ってあるけど、いいのかな?
HSPでコールバック関数って使えるの?
配列変数にマシンコードを書いて、配列のアドレスを
関数ポインタとして渡すという暴挙を使います。
ちょい質問。
1.マルチCPUにおいて、CPU負荷を分散させるには、
 A.別スレッドにする
 B.別プロセスにする
2.デュアルCPUにおいて、軽い処理二つと重い処理二つの計4つをほぼ同時に開始した時、
 片方のCPUに重い処理二つが集中するのを防ぐ方法は?

APIとはちと違う質問だと思うが、知ってる奴いたら教えてくれ。
CPUの割り当てを制御するAPIがあったような
えーとSetThreadAffinityMask
51デフォルトの名無しさん:03/06/23 06:25
>>49
>1
別プロセスなら確実かと。スレッドの場合は
共有メモリの関係でキャッシュに気をつけないと
CPUに無駄に負荷がかかりそう。
>2
処理をある程度小さく分割してスレッド数を監視しながら
並列に処理するように工夫するくらいしか思いつかないですが・・。

その手の方面ではインテルが並列処理のためのCコンパイラを
開発していたような。
5214:03/06/23 15:22
>>33
46が言うようにGetWindowはあんまり当てにならないから
EnumChildWindowsかFindWindowExで。
あとAPI使うようになったらCやC++に変えたほうがいいよ。

お節介スマソ
53デフォルトの名無しさん:03/06/23 16:50
駄質問スマソ、

char *buffer;

と宣言したポインタに長い文字列を入れました。

このbufferの10文字目から20文字目までを別の変数に入れたい場合、
どのようにすればよいのでしょうか?
>>53
memcpyでいいのでは...
>>53
まずCの勉強をしろ。
スレてきにはCopyMemoryだな
57デフォルトの名無しさん:03/06/23 16:59
ありがとう!逝っちゃってきます!
lstrcpyn

ここいらのAPIをいまだに使ってるヤシっているのかな?
>>58
何が言いたいのかわからん
Cのライブラリじゃなく、Win APIの文字列操作関数を使っている
ヤシはいるか、という話なんだが、わかりにくかったか?
ちっちゃいプログラムを作るために使うかもしれん。
「いまだに」の意味が。別に流行で使い分けるものでもなかろうに。
フックdll使うときは可能な限りMFCもRTも使わないようにしてるな。
6433:03/06/23 19:18
>>44 >>46
アドバイスありがとうございました。
GW_CHILD 5を定義したらうまく取得できました。

>>52
API初心者なもので、EnumChildWindows関数はちょっと私にはちょっと難しそうです
HSPばかり使っていると将来役に立ちそうではないので、将来的にはC,C++に変えたいと思っています

みなさん本当にありがとうございました。
>>64
将来仕事に使うならともかく、趣味の範囲ならHSPで十分だと思うが…
まぁ、人それぞれだし(HSPが理解不能で逃げてきただめ人間な折れ)
66r:03/06/23 22:24
タイマの使い方がわかんねぇ!誰か教えてくれ!
使ってるのは VC++6.0だ。

俺の作ったプログラムに、こんな記述をしてみたんだ。
void CALLBACK Hoge( UINT timerID, UINT uMsg, DWORD_PTR dwUser, DWORD dwParam1, DWORD dwParam2 ) {
    MessageBox( 0, "(゚д゚)ウマー", "ウマー", MB_OK );
}
で、画面に張ったあるボタンのイベントリスナ(←?)にこんな記述を含めた。
timeSetEvent( 5 * 60 * 1000, 100, Hoge, 0, TIME_ONESHOT );


これをWinXPで試したところ、もうばっちり。
そのボタンを押してきっかり5分後にウマーダイアログが表示された。

が!そのバイナリをWin98(たぶんSE以前)にもってって動かしたら、
なんとボタンを押してから37秒後にウマーダイアログが表示されやがるんだ!
なんでだ!

「コンテクストによって、タイマ値をミリ秒単位で与えたり、0.12ミリ秒単位で与えたり」すんのか?
とも思ったが、VC++の、[F1]で開くドキュメント(MSDN?)で見ても
「timeSetEventの第一引数は、ミリ秒だよ」としか書いてねぇ!
どうすんだ!おい!timerSetEvent!!!
>>66
タイマーの精度によるんじゃない?
TLS を自前で実装しようとしとるんだども、カレントスレッドの識別子を高速に取得する方法がわかんねべ。
技術的にはスタックさの一番奥にでも入れておけばいんはずだがら
きっと簡単に取れるはずだべ?
いい方法はないっぺか?
精度とかいうレベルじゃないような・・
7068:03/06/23 22:44
# Win32 的には,fs レジスタがスレッド固有領域のセレクタです。
あぎゃ、これか?これでええのんか?
で、これをお行儀よく取得するにはどうしたらいいんじゃ?
>>66
5*60*10000%65536 = 37856
というわけで、きっと16ビットに切り捨てられてるよ。
> 66

5 * 60 * 1000
= 300000
= 0x493E0

( 0x493E0 & 0xffff )
= 0x93E0
= 37856
≒ 37 sec

UINT が 16 bits 扱い?
73r:03/06/23 23:18
71-72
そうだったのかあああ!
ありがとう!
二人の永遠の幸せをお祈りします♪
つかなんで16bitなんだろ・・・すげー気になる
よー分からんがtimerSetEventは使うのやめといた方がいい。
じつはWin3.1愛用者だたりとかw
77r:03/06/24 00:32
>>75
しかし、SetTimerはウィンドウハンドルが必要だし、
WaitForSingleObjectとかで待つのは、
本質的に「イベントの擦違い」の危険を孕んでしまうし、
Sleepだと途中でとめるの難しいし....

つーか、

なんでたかだかタイマごときでこんなに苦労するんだ!
>>77
> しかし、SetTimerはウィンドウハンドルが必要だし、

別にウィンドウハンドルは必須じゃないよ
79r/77:03/06/24 01:08
>>78
まじですか?
なんか漏れ、そのへん誤解してるな。
もいっかいドキュメントよんでみます。サンキュ
>>74
Win9xのマルチメディアサブシステムは16ビット側に
実装があるからだと思われ
>>78
ウィンドウハンドルはいらないけど
DispatchMessageは必要という罠が
81デフォルトの名無しさん:03/06/24 21:13
>>80
>>DispatchMessageは必要という罠が

SetTimer()の4つ目の引数を指定するだけじゃだめなの?
82デフォルトの名無しさん:03/06/24 22:06
マルチメディアタイマを複数起動させた場合、
タイマのスケジューリングはどうなってんのか
教えてください。


タイマ1:1ms
タイマ2:10ms
タイマ3:100ms(ところどころでスリープする)

OS=Win2K
83デフォルトの名無しさん:03/06/24 22:19
WinMain関数の場合、
return msg.wParam;
の代わりに
return TRUE;
でもいいんですか?
84_:03/06/24 22:27
>>81
SetTimerの場合たとえコールバック関数を使っても
メッセージポンプを回してないと呼ばれない。詳しくはこちら
http://www.microsoft.com/msj/0397/hood/hood0397.aspx
(timeSetEventの場合はコールバックが別スレッドなので呼ばれる)
>>83
たぶんだめぽ(´・ω・`)
手持ちの本っていうか「プログラミングWindows」によると
PostQuitMessage(0)でWM_QUITを発生させてなんやらかんやらで
return msg.wParamは終了時に0を返してアプリを終了させる
でも、TRUEは0以外って規定してあるから…
そんな感じ
>>86
ありがとう
その本かって見ます
>>86
> return msg.wParamは終了時に0を返してアプリを終了させる

そこはPostQuitMessageに渡した値が入ってるんでは?

んで、結局終了コードを返すわけだから適当な値なら何でもいいってことかな。
正常終了なら0を返しなさいってことだろう。

だから、正常終了の意味でTRUEはダメだが。
>>88
たしかに渡した数がreturnされるけど0以外みたことないっすよ

>>87
この本たかいよ(つд`)
ちなみに、書いてたのはP96だから参考までに
>>89
確かに高いよなー
漏れ上官しか持ってないし
9187:03/06/25 08:36
やっぱり高いのか
書店で見かけてスルー下記憶があるからなー(つд`)
昔は終了コードでバッチ内分岐とかやったけど、今はどうでもいいのかもね。
9382:03/06/25 12:01
TRACE して分かりました。
一晩寝て頭がリフレッシュされました。

失礼しました。
9413:03/06/25 14:50
>>13でWIN32APIで左クリックの送信方法を質問したものですが
ひとつ問題が発生してしまいました。
クリックイベントは送信されているのですが
送信した後に別なウィンドウを開いてしまうと(ファイルを開くなど)
スクリプトが途中で止まってしまい、なかなか次の作業をしてくれません
何が悪いのでしょうか?(ちゃんとWM_LBUTTONDOWNも送信しています。)
95デフォルトの名無しさん:03/06/25 20:01
ネットワークの検索ダイアログを表示したいのですが
次のコードで表示されません。

HMODULE lib;
lib = LoadLibrary("shell32.dll");

typedef BOOL (WINAPI SHFINDCOMPUTER)(LPCITEMIDLIST, LPCITEMIDLIST);
SHFINDCOMPUTER *SHFindComputer;
SHFindComputer = (SHFINDCOMPUTER*)GetProcAddress(lib, (LPCSTR)91);

SHFindComputer(0, 0);

ttp://soramimi-i.com/my2/vb/02/020113.htm
にあるVBコードだと表示されるのですが。

環境は
Windows2000/IE6/VC6
です。
よろしくおねがいします。
96DQN:03/06/25 20:40
switch(msg){
case WM_TIMER:
if(上矢印が押されている)処理1;
break;

(省略)
}

WM_TIMERメッセージが呼び出された時に特定のキーが押されているか
どうかを判定するにはどうすればいいか教えて下さい
>>96
たぶん、

case ボタン押した:
if(右おした)
key=KEYNO_MIGI:
break;

case WM_TIMER:
if(key==KEYNO_MIGI) 処理1;
break;

という感じでは?
最近winプログラムやってないのでうろ覚えだが
最近といっても2年ぐらいだが
9813:03/06/25 20:55
>>94
もう少し簡単に説明しますと

ファイルをを開くボタンをWM_LBUTTONDOWNで送信
               ↓
     ファイルを開くウィンドウが開く
               ↓
     WM_LBUTTONDUPでボタンを戻す
               ↓
しかし、そのままの状態で次の処理に進まない

という現象がおきてしまいます。これはHSPが悪いんでしょうか?
それとも命令の仕方が何か足りないのでしょうか?
>>96
GetKeyState関数の引数に↑の仮想キーコード"VK_UP"を
セットして戻り値を調べる。MSDNでこのあたりのAPIを調べれば
他にもいろいろと調べる方法はあるはず。









ひょっとしてネタなのか?
100デフォルトの名無しさん :03/06/25 21:28
100get's
>>99
なんでもネタというのはだめだよ


ネタか?
102DQN:03/06/25 23:30
>99
上手くいかないです
以下のようにしたのですが、一度押したキーを離しても
if(r!=0)*x=*x+2;が実行されてしまいます


void p_mov(int *x,int *y){
short r;

r=GetKeyState(VK_RIGHT);
if(r!=0)*x=*x+2;
}


(略)

case WM_TIMER:
p_mov(&x,&y);
InvalidateRect(hw,NULL,TRUE);
break;
(略)
103DQN:03/06/25 23:38
>97
それだといちど右矢印キーを押したら
WM_TIMERメッセージが来るたびに処理1をする形になると思うのですが
私がやりたいのは、WM_TIMERメッセージが来た時に
キーが押されていれば処理1をしてキーが押されていなければ
処理1をしないようにしたいのです。
分かりにくくて申し訳ありません。
if (r < 0)
だろ
そんなときはDirectXだ!!
>>102
r!=0って・・・。

戻り値くらいちゃんと調べろよ。
>>102
GetKeyState()はメッセージキューにKeyDownがたまってしまうからね(多分)

if(::GetAsyncKeyState(VK_SHIFT) & 0x8000 )
 //キーが押されている
else
 //キーが押されていない

で。
あ VK_SHIFT じゃなかった。
109DQN:03/06/25 23:53
>104,>106
上手くいきました、ありがとうございます

教科書をみたら(r<0)の形で書いてあったのですが
「最上位ビットが1なら指定されたキーが押されている、0なら押されていない」
という説明が教科書に書いてあったので、
0じゃなければ押されている状態だと思って>102のように書いたのです。
なんかすごい勘違いしてたみたいです。
しかも
× GetKeyState()はメッセージキューにKeyDownがたまってしまう
○ GetKeyState()はメッセージキューにたまったKeyDownを見る

酔ってる漏れ。
111デフォルトの名無しさん:03/06/26 00:16
下のような感じでフォルダを選択するダイアログを
SHBrowseForFolder()で出したいのですが、
C言語で書いていると、
pMalloc->Release();
がコンパイルエラーで通ってくれません。
C++を使わずにCで代用するための方法がありましたらご教授いただけないでしょうか?

LPMALLOC pMalloc = NULL;

SHGetMalloc(&pMalloc);
pidlSelected = SHBrowseForFolder(&bi);
pMalloc->Free(pidlRoot);
pMalloc->Release();
112デフォルトの名無しさん:03/06/26 00:21
■■■かわいそうな「ゲーム君」を2ちゃんの力でトップにしよう!■■■

HSPプログラムコンテスト2003オンライン投票           
http://www.onionsoft.net/hsp/contest2003/entryn1.html
                       
HSPプログラムコンテスト2003に一番乗りで出展したものの          
Windowsに標準でついてくるゲームを手軽に起動できるという(というかただのショートカットつめあわせ)
しょーもないプログラムでたたかれまくっているプログラミング暦3年(!)の高校生の
作品、ゲーム君をみんなの力で一位にしよう。
【【【 投票方法 】】】                                                
http://www.onionsoft.net/hsp/contest2003/entryn1.html の一番下、エントリーNo8の「ゲーム君」
評価を「A」で選んでコメントを記入して「送信」(コメントいれるとなおよし)           
http://www.onionsoft.net/hsp/contest2003/eval/eval.cgi?md=cmt&id=8
でいままで送信されたコメントが見えるよ!(けっこう笑える)                 
pMalloc->lpVtbl->Release(pMalloc);
114111:03/06/26 00:47
>>113
ありがとうございました。
呼び出し方が違うんですね。
http://www.hidecnet.ne.jp/~sinzan/tips/vc/vc_tip05.htm
>>98

dialog ""
mes "この文字がいつ表示されたかを考えましょう"
stop

↑を実行すればわかるかと…
>>113 の隣(?)のページに個人的に凄く不思議なことが書いてあるんだけど

http://www.hidecnet.ne.jp/~sinzan/tips/vc/vc_tip04.htm
> 関数 CoCreateInstance() の第1引数と第4引数は、C言語とC++言語とでは、異なる型を使用しています。

なんでリンクできて動作しちゃうの?
ポインタと参照って内部的には同じ扱いなの?
誰か知ってる人いたら教えてくれます?
>>116
誤) >>113
正) >>114
>>116
同じ
11913:03/06/27 00:27
>>115
こんな感じになりました。
ファイルをを開くボタンをWM_LBUTTONDOWNで送信
               ↓ →「処理OK」
     ファイルを開くウィンドウが開く
               ↓ →「処理OK」
     WM_LBUTTONDUPでボタンを戻す
               ↓ →音沙汰なし。
               ↓  (だけど、クリックして開いたウィンドウを閉じると処理が再開する)

こんな感じです。

120デフォルトの名無しさん:03/06/27 00:34
ちと板違いかもですが、VC.NET買って現在勉強中なんですが
で、自分なりに勉強の仕方考えてるんですが、
WINAPI>STL>MFC
って感じに勉強していったらいいんですかね??
今は「猫でも分かる」でWINAPIで勉強中です
■■■かわいそうな「ゲーム君」を2ちゃんの力でトップにしよう!■■■

HSPプログラムコンテスト2003オンライン投票           
http://www.onionsoft.net/hsp/contest2003/entryn1.html
                       
HSPプログラムコンテスト2003に一番乗りで出展したものの          
Windowsに標準でついてくるゲームを手軽に起動できるという(というかただのショートカットつめあわせ)
しょーもないプログラムでたたかれまくっているプログラミング暦3年(!)の高校生の
作品、ゲーム君をみんなの力で一位にしよう。
【【【 投票方法 】】】                                                
http://www.onionsoft.net/hsp/contest2003/entryn1.html の一番下、エントリーNo8の「ゲーム君」
評価を「A」で選んでコメントを記入して「送信」(コメントいれるとなおよし)           
http://www.onionsoft.net/hsp/contest2003/eval/eval.cgi?md=cmt&id=8
でいままで送信されたコメントが見えるよ!(けっこう笑える)  
現在の CPU の位相と角速度を求める API はありますか?
>>122

そのAPIを実行した途端、「現在」ではなくなりますが。
>>123
アアムジョウ
>>119
115の言いたい事分かってる?
あと
WM_LBUTTONUP
はこの場合特に必要ない
>>120
君が何を将来的にしたいかによる
将来というかプログラマになるのなら、
開発環境がなんであっても対処できるようにならなければ駄目
すみません、ジョイパッドってどうやって処理すればいいのでしょうか?
WM_KEYDOWNでやってみたら上手くいなかったです
WM_KEYDOWNはキーボードのメッセージです
ジョイパッドでうまくいかなかったのは当然です
心配する必要はありません
joyGetDevCaps、joyGetPosで出来まふよ
有難うございます
132デフォルトの名無しさん:03/06/27 17:11
自前でBMP画像を印刷する関数を作りました。
普通にプリンタのDC取得して、SetPixel()で左上からピクセルを
コピーしていくような単純なルーチンです。

Win付属のペイントと比べ、印刷時の時間が格段に遅くイライラしてしまいます。
ビットマップ印刷用のAPIなどが用意されているのでしょうか?
ちなみに環境はWindows2000/VC6/VC7です。
DIBを使ってください
134デフォルトの名無しさん:03/06/27 17:27
DIB?ツカットコトナイヨー!!
それで早くなるならやってみます!!
135デフォルトの名無しさん:03/06/27 17:30
>133
もうちょい情報ください。なかなか検索ひっかからんです。API名とか
無茶苦茶引っかかるんだが、どうやって検索しているんだ?
まずは検索方法を晒せ
137デフォルトの名無しさん:03/06/27 17:44
よくわかんないんだけど、BYTE型とかのRGBの配列をDIBって言うの??
今も内部データはそんな感じなんだけど、そのまんま使えるのかな?
138デフォルトの名無しさん:03/06/27 17:48
>>136
DIBは引っ掛かるけどどのAPI使えばいいか分からん、ということでは
プリンタでDIBは使っちゃだめー
DDBを使いなさい
140デフォルトの名無しさん:03/06/27 17:56
パレットの問題ってこと?
141デフォルトの名無しさん:03/06/27 19:15
>>132
・プリンタのDCを取得
・そのDCを元にDDBを作成(CreateCompatibleBitmap等)
・作成したDDBにピクセルを設定(GetDIBits等)
・プリンタのDCにDDBを描画(Bitblt等)

これでも、不満か?
142ちよ:03/06/27 19:21
143デフォルトの名無しさん:03/06/27 20:38
>>132

BMPからDIBを作成
プリンタのDCにDIBをStretchDIBitsで描画

というやり方でできる気がする。
プリンタは解像度に注意。
DIBは、BITMAPFILEHEADERからピクセルまで、自分で読み込んで
作るのが確実かな(それほど難しくはない)。拡大モードの設定
をしてもStretchDIBitsできれいに拡大できない場合は、自分で
適当な拡大処理をすべし。
144デフォルトの名無しさん:03/06/28 00:07
ダットファイルの2行目をCharNextExA を使用して
取り出す方法教えてください。
ただし、2行目半角ずれてます。
データは char bufbuf[1024]に読み込んであります。
32APIアプリ文字列関数なくて困ってます。
■黄色.dat
佐藤
めぐみ
小池
eof
w2000,BCC5.5
>>144
> 32APIアプリ文字列関数なくて困ってます。
lstrlen, lstrcmp とかあるけど。
というか、普通に strchr とか使うのはダメなのか?
146デフォルトの名無しさん:03/06/28 00:57
予めダットファイル中身は見れませんが
10字100行程度です。
ヒントがつかめたら、CSVやTAB成型列に
朝鮮したいです。
長さと比較でどうやって2列目切り出すのですか?
147_:03/06/28 00:58
148デフォルトの名無しさん:03/06/28 01:14
もしかして、俺が無知なのかも
BCC5.5でWINアプリ(コンソールでない)
作る場合
#include <string.h> がOK牧場ですか。
可能
150デフォルトの名無しさん:03/06/28 01:46
>149 感謝感謝
がんばってDAT読み取り、3つのリストBOXの
アイテムに入れてみます。
 テンプレ提供歓迎です。
リストBOX1、中井、香取、稲垣
リストBOX2、佐藤、めぐみ、小池
リストBOX3、嘉門、はにわ、てつとも

151_:03/06/28 02:09
152_:03/06/28 03:45
153_:03/06/28 05:36
154_:03/06/28 08:30
155_:03/06/28 09:58
(3)タモリの話し方が気に食わない、などが浮上している。

157_:03/06/28 11:05
158デフォルトの名無しさん:03/06/28 11:15

プラットフォームSDKのドキュメントが、構造体の部分が全て未訳で英語なのですが
どこかに日本語訳されてるドキュメントがないでしょうか?
教えてください。
>>158
あきらめましょう。
160デフォルトの名無しさん:03/06/28 11:53

やはりそうなんですか・・・。JAVAなんかではある程度しっかりと訳してくれてるのに〜
本当に、マイクロソフトって殿様商売ですね〜
ドキュメントも手抜きかつ超冗長な階層ディレクトリですし・・・。訳し方も明らかにプログラミングを
した事がない人が、ただ訳してるという文章も一部ありますし・・・
ボーランドやサンを見習ってほしいです。
161デフォルトの名無しさん:03/06/28 11:55
スレ違いで恐縮ですが…
VNCの使い方についてたてられてるスレがあったら
どなたかおしえていただけないでしょうか?
>>160
つ、釣られないぞ!
釣られてみよう

>>160
あの程度の英語も読めないの?
コンピュータ使うの辞めた方がいいよ。
釣られてみよう

>>164
英語が分からなければコンピュータを使うべきではないのですか?
別に英語が読めなくても問題はない
それよりも翻訳ソフトなり翻訳サイトなりを利用するという、その程度の頭も働かないところが問題
>>165
>英語が分からなければコンピュータを使うべきではないのですか?

程度によるな。プログラミングするなら、ifとかwhileとかbreakといった英単語の意味くらいはわかってないとつらいだろうし。日本語版のソフトを使うだけなら、別に英語は不要だけどね。
168160:03/06/28 13:41

あのな〜。一応僕は英検2級なんだよ。
でもプログラミングはずぶの初心者だから、SDKの文に何か専門用語だとかその分野特有の
言い回しとかがあると、変な誤訳する可能性があるからそれが怖くて言ってるの。

失礼だが、自称中級者ほど英文の怖さを分かってないもんだ。その語句の
代表的な意味だけを汲んで「分かった感じ」になる事の危険性ぐらい頭に置いてくれ。

( ´,_ゝ`)プッ
英検2級であの程度の文が読めないっての…?
それは変だろ
中卒か高校一、二年程度の英語だぞ
171160:03/06/28 13:52

今の所は読めるよ。でもこれからもっといろいろ読む様になった時の
誤訳の可能性が怖いんだよ。
言い訳ばっかりだな
翻訳された物が正しい保証など無い
専門用語は数当たるしかないだろうなあ
日本語に訳す必要がない。英語そのまま理解すれば良し。
175160:03/06/28 13:59

素人(自分)よりは信用できるよ。
じゃあドキュメントには、プログラミング分野での特有の意味や言い回しってのは少ないのか。
用語はあるが、文学小説のような無駄に比喩的な言い回しは無い
用語は訳されていてもカタカナになっているだけ
誤訳されてて原文の意味がまったくわからなくなってる時が一番困る。

MS のドキュメントは Basic english だかなんだかっていうルールに従って書かれてるから
馬鹿でも読めるという罠。
意味が正反対になるような表現って無いと思うんだけど。


一般的な英語と違うってのがわかっていながら英検二級を自慢か?
そんなんだから煽られるんだっちゅーの

おまえらも久しぶりに叩きがいのある奴紛れ込んできたからって騒ぎすぎ。
180デフォルトの名無しさん:03/06/28 14:53
それにしても、>>160は見事な釣りだな・・・。
>>179までで10数匹釣り上げた。
もっとも、バカ丸出しの雑魚ばかりだけど。
180=160
>>180
わかったからsageろよ160。
183180:03/06/28 15:02
>>181,182

おいおい、俺は160じゃないぞ。
さらに2匹追加かよ・・・・。
┐(´ー`)┌ どっちでもいいよアフォ
185180:03/06/28 15:05
まあ、
あのな〜。一応僕は英検2級なんだよ。
とりあえず、>>160-186はしょうもない○×ってことで終了!
あとは放置ね。
また英語談義か
189160(英検二級):03/06/28 16:22
そんなにうらやましいのか・・・
190デフォルトの名無しさん:03/06/28 17:39
すみません、この一文っておかしいでしょうか?
猫のC言語のところではこの書き方で書いてあったのですが
bccでコンパイルしようとしたらエラーがでてきて
'void *'型は'HPEN__*'型に変換できないってなるんです

HPEN oldpen,hpen;
(省略)
oldpen=SelectObject(hdc, hpen);
>>190
あなたがC言語を使っていない可能性があります
192デフォルトの名無しさん:03/06/28 17:41
oldpen=(HPEN__ *)SelectObject(hdc, hpen);
こうするとエラーが出なくなるかもしれないわよ
何も基本型の方でキャストしなくても・・・
194デフォルトの名無しさん:03/06/28 17:49
コンパイル通りました、有難うございます
195デフォルトの名無しさん:03/06/28 17:59
俺、一応工業英検2級だけど、MSDNのドキュメントくらい辞書見ながら読んだら理解できると思うぞ。
辞書なんかいらないだろ
思い立って辞書を引くとプログラミング用語と英語では意味が違って混乱することもたまに
用語は日本語訳されてもカタカナに変換されるだけなので、
結局その用語を知らなければ意味は通りません
199名無し@沢村:03/06/28 18:07
おまいらはコンピュータ用語辞典のサイトも知らないのか。
あー、嘆かわしい・・・・
200デフォルトの名無しさん:03/06/28 18:08
>>199
教えてくれ
プログラム言語が読めれば、何してるかはわかるんだから英語だろうが中国語だろうが
特に問題にはならないと思うけど。
要は、コードを見た時に「マシンの気持ち」になって、マシンに共感しながらその処理内容を実感できれば最強のプログラマになれる、ってことなんだよね。
エロいな
つまり女を扱いたかったら、女の気持ちになって、一度男に犯られてみろと?
   | |/ノ二__‐──ァ   ヽニニ二二二ヾ } ,'⌒ヽ
  /⌒!|  =彳o。ト ̄ヽ     '´ !o_シ`ヾ | i/ ヽ
>>205
そんな目で見るな
207デフォルトの名無しさん:03/06/29 09:20
盛りあがっている?
ところすいませんどうしても解決できないことがあります。

コントロールパネルの「マウス」の「速度」の設定値を取得する方法あるのでしょうか?

欲を言えば変更もできるといのですが。
あの速度の設定で加速される量というのは何処かに定義されているのでそうか?

ご存知の方、教えていただけないでしょうか?




208デフォルトの名無しさん:03/06/29 09:28
>>207
レジストリ内をくまなく探せ
REGMONを併用すると楽に見つかる
20995371:03/06/29 09:57
210デフォルトの名無しさん:03/06/29 10:00
64ビット用のWindowsならWIN64APIになるの?
対応コンパイラを使えば
212デフォルトの名無しさん:03/06/29 11:03
「Alquade」というソフトの
ttp://hp.vector.co.jp/authors/VA028199/alquade/help/combinedhelp.html
>Alquade では Windows API で保証されていない手法を一部使用しております。

ってどんな手法かわかりますか?
非公開APIでも使っているんじゃないの?
214デフォルトの名無しさん:03/06/29 12:09
>>208
アリガト、必要な情報を得ることができたよ。
マウスの情報 取得 とかで検索掛けてもまったく見つからなかったけど、
マウスの高速化で検索するといっぱいありました。

調べた情報も還元しておきます。
HKEY_CURRENT_USER→Control Panel→Mouse

MouseSpeed 加速スピードを設定。1で2倍速、2で4倍速、それ以外の数値は加速無しになる。
MouseThreshold1 加速度有効までの距離。2倍速になるまでのドット数を入力。MouseSpeed1か2を設定していないと無効になる。
MouseThreshold2 加速度有効までの距離。4倍速になるまでのドット数を入力。MouseSpeed1か2を設定していないと無効になる。

この部分はスレ違いですが...
DirectIMPUTでデバイスから直接データ取得しても、この部分は加味されていないので
自前で計算が必要なんですね。

某ROでウインドモードでマウスが遅くなるというのは、(この件を検索する段階で多く見かけたので)
この辺を計算していないからな。(現在の対応は知りませんが、このゲーム名前しか知らないので)

215デフォルトの名無しさん:03/06/29 13:16
>>214
これは
SystemParametersInfo
SPI_GETMOUSE, SPI_GETMOUSESPEED
で取得できる情報とは違うの?
216デフォルトの名無しさん:03/06/29 14:53
>>215
そのようですね。
取りあえず、数値の意味が調べられてので
前の件で調べたことは無駄にはなりませんでしたが。
レジストリ取得のデバック開始したとこでした。こちらのほうが楽ですね。

>>215,208さん
どうもありがとう
217デフォルトの名無しさん:03/06/29 19:15

SDKドキュメントを読み始めたのですが、何だか項目を選択するとそのまた下に項目が
出て、それを選択するとそのまた下に項目が出てって感じて延々と続くんですけど、
しかも複数の項目が出るならまだ分かるんですが一つだけの項目の下にまた一つだけって
感じで、何だか箱を空けたらその中にまた箱が入ってたっていう笑い話みたいなんですけど、
もしかしてこれって不良品なんですか?全然説明文にたどり着けません。
誰か教えてください。

とりあえず必要は情報はキーワード検索にかけてみる
あと、MSDN再インスコ
必要は情報->必要な情報
釣られ損ねた。

MSDNに限って言えば日本語訳はかなり怪しいので原文を見たほうが良いと思う。
日本語訳の方は内容古いし、よく情報が欠けてる。
221デフォルトの名無しさん:03/06/29 19:58
SystemParametersInfo
追加情報 これは標準マウスのデータしか返さないようです。
トラックパッド トラックポイントはまた別のようです 鬱だ
222デフォルトの名無しさん:03/06/29 20:58
ダイアログの表示完了を知りたいのですが、どんな方法がありますか?
ダイアログにWMメッセージを送信したいのですが、ダイアログの表示命令を出した直後に、
PostMessageするためダイアログが開ききっておらず無効になっているようなのです。
Sleep関数以外でよい方法があったら教えてください。おねがいします。
223デフォルトの名無しさん:03/06/29 21:13
>>222
文意が今ひとつはっきりしないがWM_INITDIALOGじゃだめなのか?
普通に働いてお金持ちになれるのは全体の1%のみって本当!?
本当にお金持ちになるにはやはり「副収入」が必要!
一日30分 おうちでコピペ、コピペ!
嘘だと思うんならランキング見てみてくださいよ↓↓
(直リン不可)
http://www.adultshoping.com/addclickport.cgi?pid=1053353765(直リン不可)

>>222
ダイアログ プロシージャのcase WM_INITDIALOGで
SendMessage(GetParent(hDlg), WM_COMMAND, 0, (LPARAM)hDlg);
とかは?
226デフォルトの名無しさん:03/06/30 04:27
shellapi.hの最新版はどこでダウンロードできるのですか?
教えてください
228デフォルトの名無しさん:03/06/30 11:14
教えてください。
ウィンドを持たないプログラム(xxx.exe)を
強制終了させたいです。
xxx.exe のプロセスIDに TerminateProcess をすれば良い
というところまでは解ったのですが、
プロセスIDを取得する方法がわかりません。
お願いします
プロセスを列挙するだけ
230デフォルトの名無しさん:03/06/30 15:47
win9xの"C:\Program Files"内で
GetCurrentDirectory、もしくはGetModuleFileName
を利用した所、\Program Filesの部分が化けました。
ただし、Api使用はDelphi6経由です。


p:pchar;
GetModuleFileName(0,255,p);
writeln(string(p));

半角スペース部分を何とかすればよいと思うのですが…
231230:03/06/30 15:55
うっ、自己解決しました。
メモリ割り当てを
new(p)
なんぞしておった。

p:=allocmem(255);
だな。

スレ違いスマン。
232デフォルトの名無しさん:03/06/30 15:55
いきなりスレ違いですいません。ただ今祭り開催中です。
先日、6月27日、埼玉県の大宮で「年上好き男年下好き女神」というオフが開催されました。
このオフは、幹事も参加者もオフ初心者ばかりでした。このオフは一度開催され、
今回は新規メンバーを入れての二回目でした。
これは、オフを勘違いしてるねらーがいて、それが当たり前だと思っている人達を紹介します。
【登場人物紹介】
  モチッコ:このオフの幹事、セクハラばっか、幹事特権行使する
  ヘルシア:自称オフ板常連者、個人プレーが得意、目立ちたがりや
  inagawadonn:不細工セクハラ王、酔ったふりで女を口説く、脱いで受け狙い
  太平洋:メガネヒッキー、会話ができないキモヲタ、ナルシスト、スカシ
  せん:いい年して落ち着きの無い典型的ダメ人間、ノリでセクハラ、馬鹿
  ゆうや:浪人生、テニスラケット持ってくる不思議君を演じる奴、未成年
  キュービック:女にやたら年を聞き、年齢の話題が大好き、悪ノリ
 この男達が参加メンバーです。その日、オフ参加初めての気の弱そうな男性が来ました。
その方はちょっと変わった服装で上着に帯のような物が着いていました。参加者は
それを見て、柔道着だと馬鹿にし、彼が席を立つ度に大爆笑しました。
しまいには本人の前で柔道の話をして女性から笑いをとりました。
自分達こそそんなおしゃれでもないのに彼を馬鹿にし、ある者はこっそり写メールまで
撮りました。みんな初対面なのに、いじめで仲良くなるオフ会、私も、輪からはみ出るのが
怖くて一緒に馬鹿にしてしまった加害者です。彼は勿論気づいていてとても悲しそうな顔で帰りました
後日、オフレポを読もうと思いレスを見ると、みな、柔道の話題が含んでありました。いい大人が
人を馬鹿にしてまだ楽しんでいます。「これから柔道着オフにする?」とちっとも反省していません。
それはおかしいと第三者の意見を言ってあげてください。また7月11日に開催されます。
※もし、ご協力いただけるならば、この文をコピペして他のスレに書き込んでください。できるだけ多くの方に
 考えていただいたいので、面倒ではありますがよろしくお願いします。
http://ex3.2ch.net/test/read.cgi/offreg/1055133705/l50
233デフォルトの名無しさん:03/07/01 20:35
スクリーンセーバーのON/OFFをするAPIとかないですかね?
漏れの中には50秒ごとにMouseMoveとかKeyDownとかの
メッセージ投げるぐらいのことしか
見つからなかった&浮かばなかったもので・・・。
>>233

自アプリがアクティブな時だけの話なら、WM_SYSCOMMAND/SC_SCREENSAVEを
握りつぶす。

んじゃなきゃ、今の通りにやるしか無いだろね。
235デフォルトの名無しさん:03/07/01 20:47
ネットで稼ぐならこれ。完全無料!!
リンクスタッフに登録すれば小遣い稼ぎができます!!

[報酬について]
クリック報酬・・・1クリックされる度に10円の報酬
バナー紹介料・・・リンクスタッフ登録の度に500円の報酬
プレミアム・・・優秀サイトには、報酬に応じてボーナス有り
別に自分のホームページがなくてもできます。(URLを書く欄は適当でいいです)

単純に考えて1日100人クリックしたとすると、100人×10円×30日=30000円(一ヶ月)
そこらへんの掲示板に貼り付けていけば100クリックなんてスグです。
その他、自分の貼り付けた広告から誰かがスタッフになると500円もらえるので
1日5人スタッフを紹介したとして500×5×30=75000円
30000+75000=105000!!しかも間接報酬などもありますので一ヶ月に10万円以上稼げます!!
http://www.hptouroku.com/cgi-bin/affiliates/clickthru.cgi?id=252
超おすすめです!!ぜひ一度のぞいて見てはいかがでしょうか?
236デフォルトの名無しさん:03/07/01 21:10
>>233
SetThreadExecutionState じゃだめか?
スリープ状態に入るのを阻止する API だけど、
ES_DISPLAY_REQUIRED フラグはまだ試したこと無いんだよな。
237デフォルトの名無しさん:03/07/01 21:11
(;´Д`)ハァハァ ボッキしますた
http://homepage3.nifty.com/coco-nut/
238デフォルトの名無しさん:03/07/01 21:16
#define STRICT

ってどういうときに使うんですか?
>>233
SystemParametersInfoのSPI_SETSCREENSAVEACTIVEは?
Tipsサイトとかによく出てると思うんだが……なんか漏れ勘違いしてる???
240238:03/07/01 21:22
>>238
ttp://www7.plala.or.jp/keny01/win32/01-10.html

自己解決しました。
ありがとさん(だれにだよ)
>>240
型チェックが厳密になる。
実際にはHANDLEだったのがHWNDとかHDCとかに再定義されたりするわけだが。

MSDNで「STRICT を使った型チェックの改善」見とくといいよ。

あと、VC6あたりからはデフォルトでプロジェクトにSTRICT定義が入ってるはず。
>>239

「システムの設定を変えるためのプログラム」を作っているんでなければ、
勝手にシステム設定をいじるのは邪道だと思うのは漏れだけかなあ?
システムの設定をいじる必要など無い
存在するスクリーンセーバーのプログラムを手当たり次第に消すようにすればいい
これ王道
244238:03/07/01 22:03
>>241
ありがとう
MessageBox を使って、スクリーンセーバーの設定を切ってくださいとユーザーに頼む
PeekMessageでCPUを使い切るとか
それなら50秒ごとにメッセージ投げたほうがまだマシだな
247239:03/07/01 22:55
>>242
むぅ、確かにその通りだ。軽率なレススマソ。

するとやはり50秒ごとにメッセージ投げるしかないのかなぁ。
ざっとぐぐった感じだと、みんなそういう対処だね。
なんか気に入らないけど、一時的に無効にするような手段が用意されてないなら
それしかないのかな。
>>247
スクリーンセーバーをソフト側で抑止する方法ならあるですよ。

WM_SYSCOMMANDで、wParamがSC_SCREENSAVEの時に
0以外を返すとスクリーンセーバーが起動しなくなります。
SC_MONITORPOWERならモニタオフもしなくなるよ。

Windowsが問い合わせてきてダメならダメと言えば良いらしい。
ゲームとかで割と便利だったり。
249233:03/07/02 00:02
レスくれたしとたち>
 ありがとござました。
 SystemParametersInfoで逝きます。
 てか、それで逝ってって言われた。
 てか、その前に、スクリーンセーバがかかると
 落ちるシステムを何とかしる!・・・いや、もう言うまい
>>248
それは>>234が「自アプリがアクティブな時だけ」と書いているんだが。

>>249
設定変えたまま異常終了されたらいやだな。
>>250
スマソ
ちなみに、メッセージ投げるんでなくて、SetCursorPosするだけで
スクリーンセーバは防げるという話は聞いたことあるぞ。
勝手にカーソル位置変えられるより
見た目無害なメッセージのほうがよさげ
254名無し@沢村:03/07/02 12:16
>>253
ヌヒよ、現在のカーソル位置を取得して、その値でSetCursorPos()すればいいんじゃないのか?
ヌヒよ、現在のカーソル位置を取得して、その値でSetCursorPos()すればいいんじゃないのか?
ヌヒよ、現在のカーソル位置を取得して、その値でSetCursorPos()すればいいんじゃないのか?
いや、カーソル位置は変えないのよ。
GetCursorPosで取ってきた座標にSetCursorPosするだけ。

たしか、同じようにスクリーンセーバで悩んでたやつが
最終的にそういう手法を見つけたんだと思う。
スクリーンセーバ解除用に昔つくった関数(w

//移動量が小さかったり、SetCursorPosを単発で呼んだだけだとスクリーン
//セーバは一度解除されるものの、0.5秒後ぐらいに復帰してしまう
POINT cur;
GetCursorPos(&cur);

for(UINT i=1; i<=5; ++i) {
 if(!::SetCursorPos(cur.x+i, cur.y+i) ) //画面の端で移動に失敗
  ::SetCursorPos(cur.x-i, cur.y-i);
 ::Sleep(5);
}
Sleep(20);
SetCursorPos(cur.x, cur.y);
257デフォルトの名無しさん:03/07/02 21:18
最初ウィンドウサイズを100*100にしておいて、
スペースボタンを押すと100*200になって、
更にスペースを押すと100*100に戻る。
(以降スペースを押すたびに100*100と100*200が入れ替わる)

というウィンドウを作るにはどうすればいいか教えて下さい。
>>256
画面の右上か左下にいたら失敗しそうに見えるが…
>257
どうすればいいって、そのまんまじゃん。
判らない事は1つずつ尋ねるべし!
260デフォルトの名無しさん:03/07/02 21:42
>>259
最初ウィンドウサイズを100*100にしておいて、
261デフォルトの名無しさん:03/07/02 21:51
スタティックテキストのフォントサイズをかえるにはどうすればいいんですか?
262257:03/07/02 22:24
レス有難うございます

CreateWindow関数のパラメータで最初のウィンドウを100*100にする方法は分かります
スペースキーを押す事でWM_KEYDOWNメッセージがアプリケーションに送られて、
(wparam==VK_SPACE)が真か偽かを判定することによって、
押されたキーがスペースである事を判別する方法は知っています

ただ、スペースキーが押された時にどういった関数を呼び出す事によって、
ウィンドウサイズを変更できるかが良く分からないのです
263デフォルトの名無しさん:03/07/02 22:26
>262
どうすればいいって、そのまんまじゃん。
判らない事は1つずつ尋ねるべし!
>>262
あなたの言う「ウインドウサイズ」とは
もしかして「クライアント領域のサイズ」のことか
265257:03/07/02 22:50
>264
そうです
266デフォルトの名無しさん:03/07/02 22:52
>>264
なんだと思ったんだ?(w
エディットボックスにタブを入れようとすると次のコントロールが
アクティブになっちまう。なんかいい方法ないでつか?

あとタブをコピーしてペーストしたらタブが八文字ぶんになっちまう。
これもなんかいい解決法キボン
Windowsではウィンドウサイズとクライアントサイズは別物だぞ
AdjustWindowRect
んでMoveWindow
271デフォルトの名無しさん:03/07/03 02:25
ツールバーやステータスバーなどの上下に張り付くウィンドウを差し引いた
クライアント領域を自動で取得する関数ってつくれまつか?
ステータスバー等の有無も自動で認識してくれるといいんですが。
おながいします。

>>269&270
以前、
http://pc2.2ch.net/test/read.cgi/tech/1055864305/154
こういうのを作ったんだけど、ちゃんと関数あったんだね・・・。
うかつだった。。。
鳥がナクナクこけこっこ〜。はぁ・・・。
273デフォルトの名無しさん:03/07/03 07:21
よくインストーラでタスクバーを消して画面いっぱいに描画している
のを見ますが、あれは
1、タスクバーを消しているのではなくウインドウを最前面に表示して
いるだけのでしょうか?だとしたら、タスクバーの部分まで隠して画面サイズに合わせて
最大化するAPIなんかあるのでしょうか?
教えてください。
yes > 273
275デフォルトの名無しさん:03/07/03 11:31
<274
ありがとうございます!!
あなたはこのような経験をされたことございますか?
もしよろしかったら手順を教えてください。
>275
hWnd = CreateWindow(szAppName, szTitle, WS_OVERLAPPED ,
  0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), ......
>>276
CreateWindowEx(WS_EX_TOPMOST, ...)
でないとタスクバーは隠せないと思うが。
278名無し@沢村:03/07/03 13:19
>>267
> エディットボックスにタブを入れようとすると次のコントロールが
> アクティブになっちまう。なんかいい方法ないでつか?
WM_GETDLGCODEのハンドラが返す値をいろいろいじってみる。

> あとタブをコピーしてペーストしたらタブが八文字ぶんになっちまう。
> これもなんかいい解決法キボン
WM_SETTEXTのハンドラで好きなようにする。
279デフォルトの名無しさん:03/07/03 20:32
<<276
<<277
すばらしいですね!やっぱりデベロッパーはすごいですね。
関心してしまいます。

280276:03/07/03 20:36
>277
そうすか。環境や状況依存かも。一応、自分とこは隠れるのでウソつきじゃないって事で...
281デフォルトの名無しさん:03/07/03 21:36
>>276
私はVBでプログラムしておりますが、フォームを新規に作成してコードで
ボタンなど追加しなくてもいいようにVS.NETで作成したフォームでウインドウ
の最大化だけをAPIに任せるような使い方はできないのでしょうか?

>>281
できます。
>>272
GetSystemMetricsなんてのもあるな
エディットコントロールに文字を約60KB以上表示しようとしたら
表示されなくなってしまいました。
EM_SETLIMITTEXTあたりかなと思いましたが、ダメなようです。
何か良い方法はないでしょうか?
いつまでも9X使ってないで、NT technologyにしなさい。
286デフォルトの名無しさん:03/07/03 22:38
>>284
つりですか?
   おっ、なんか来た。
   ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ,/ヽ
                ,/   ヽ
       ∧_∧  ,/      ヽ
      ( ´∀`),/          ヽ
      (  つつ@            ヽ
  __  | | |                ヽ
 |――| (__)_)                ヽ
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|                ヽ
⌒\/⌒\/⌒\|彡~゚ ゜~ ~。゜ ~ ~ ~ ~~ ~ ~~ ~ ~~
⌒\/⌒\/⌒\彡 〜 〜〜 〜〜 〜〜 〜 〜
                           |
                           |<<286
API を使ってフラッシュムービー(swf ファイル)を再生するような方法を
知ってる方いませんか?
もしくはそれに似た方法でも・・・なにかありませんか?
>>288
ShellExcuteを使ってIEを.swfファイルを引数にして呼べば
うまくいくかもしれない。試してないけど。
>>289
ヒント感謝します。
さっそくShellExcute を検索してみます。
どっかにATL使ってCOM経由でFlash再生するってネタならあったが。
開けました。大感謝です。
ついでに呼び出したウィンドウと同一ウィンドウ内で開く方法とかも・・・
・・・自分で探してみます。
>>291
普通最初にそれを思いつくだろ・・・
294デフォルトの名無しさん:03/07/04 08:48
おしえてください
アイコンの指定はウィンドウクラスでhIconメンバーですが
ファイルに付くアイコンの指定方法がわかりません、
ビルドによってアイコンを変えたいのですが・・
295_:03/07/04 08:55
296デフォルトの名無しさん:03/07/04 09:02
今日はここで(;´Д`)ハァハァ
http://homepage3.nifty.com/coco-nut/
297デフォルトの名無しさん:03/07/04 11:11
リストビューの項目で全ての文字列を表示できない場合はツールチップ表示にはどうすればいいんですか?
>>294
スレ違いだと思うが…
リソースの中で番号がいちばん若いアイコン
299デフォルトの名無しさん:03/07/04 11:47
LVM_SETTOOLTIPS
wParam = 0;
lParam = (LPARAM)(HWND)hwndToolTip;

300297:03/07/04 12:34
>>299
これだけでいいんですか…
ありがとうございます。
>>298
すみません。スレ違いですか APIで命令があると思って・・・
起動する前の状態のファイルからどうやってAPIを使うの?
ファイルがあるだけで発動するウイルスでも作るの?
303デフォルトの名無しさん:03/07/04 15:34
>>282
できるのですか!!!
教えてください。
でもWIN32APIを使ったことがありませんのでこの機能で感動したいと思います。
よろしくお願いします。
304デフォルトの名無しさん:03/07/04 15:54
物理HDD(\\.\PHYSICALDRIVE)と、ドライブレター(C: D:等)との対応付けを知るためのAPIや
方法はありますでしょうか?

DeviceIoControl(IOCTL_DISK_GET_DRIVE_LAYOUT) で、物理HDD内のパーティション情報
は取れたんですが、各パーティションのドライブレターまでは載っていないみたいでした。

それとも、レジストリのどこかに書かれているのかな?
>>266
ふつうウィンドウサイズといったらタイトルバーや枠を含めた大きさのことでしょ
区別するためにわざわざ「クライアント領域」という言葉があるんだし
「MS、Windows 2000 の ShellExecute 関数にあった脆弱性を修正」だってさ

ttp://japan.internet.com/webtech/20030704/12.html
307デフォルトの名無しさん:03/07/04 20:56
OutputDebugStringからのメッセージを受け取るデバッガを作っているのだが
どうにも全てのプロセスからのメッセージを受け取れるようにできない.
WaitForDebugEventだと一つしか受け取れないようだし...
何かよい方法は無いでしょうか?
308デフォルトの名無しさん:03/07/04 21:01
CPUの周波数によって表示を変えたり
メモリーの容量で表示を変えたり
HDDの容量で表示変えたり
OSによって表示変えたり実行できるOS制限したり

できませんか?
できる
310デフォルトの名無しさん:03/07/04 21:07
どうやって?
マルチには教えられません
312じゃー:03/07/04 21:39
ここ一本で


おしえてくれ
>>308
漠然としすぎだよ。

それらのデータを得る方法がわからないの?
それらのデータによって処理を振り分ける方法がわからないの?
表示を変えるって何をどう変えるの?
314デフォルトの名無しさん:03/07/04 21:55
>>313
全部が解らぬ

変えるのはメッセージとか
(´-`).。oO(何で検索しないのこの人…)
316デフォルトの名無しさん:03/07/04 22:02
>>315
してもねぇぇぇぇんだよ
すぐみつかったが何か?
>>316
どんなキーワードで検索したか言ってみな
319デフォルトの名無しさん:03/07/04 22:11
>>317
どう検索したんだYO
全部かよ……


普通に簡単なアプリケーションは作れるの?
まずはそこからのような気がしてきだぞ。

とりあえず周波数とかの代わりに現在時刻なり乱数なりで作ってみろよ。
それから周波数の取得方法探して差し替えればよかろう。
321デフォルトの名無しさん:03/07/04 22:27
>>320
>普通に簡単なアプリケーションは作れるの?
>まずはそこからのような気がしてきだぞ。
時刻取得とか関数とかあるからわかるけど

周波数とかその他に取得の関数。・・・・有ると思うが解らない・・・
CPU 周波数 取得 tips

検索の方法も知らないんですね
323デフォルトの名無しさん:03/07/04 22:42
>>322
ありがたぅ
どんな言葉で検索したのか俺も知りたい
325デフォルトの名無しさん:03/07/04 22:55
>>324
だから検索なんかしていないんだよ
326デフォルトの名無しさん:03/07/04 22:57
>>325
したわバーカ
>>326
じゃぁ言ってみな 検索もせずにマルチしたんだろ?
328デフォルトの名無しさん:03/07/04 23:04
>>327
巫女 ナース 煮込み小茄子
( ゚д゚)ポカーン
330デフォルトの名無しさん:03/07/04 23:06
>>327
セントリーノ (・∀・)イイ! キター
真面に相手しちゃった>>322が馬鹿だったと言う事で。

あれ、322俺だ…ヽ(`Д´)ノ ウワァァァン
>>331
本当に馬鹿ですね(笑)

というと怒るんですよね。
333get
「プログラミングWindows 第5版(上) Charls Petzold著」のp.652,653に、
「WindowsNTでデフォルトプリンタのデバイスコンテキストを取得する方法」として、
下のようなコードがあります。

PRINTER_INFO_4 *pinfo4;
EnumPrinters(PRINTER_ENUM_LOCAL,NULL,4,(PBYTE)pinfo4,dwNeeded,&dwNeeded,&dwReturned);
hdc = CreateDC(NULL,pinfo4->pPrinterName,NULL,NULL);
(省略あり)

この場合、デフォルトプリンタの設定を変えた直後など、
うまくデフォルトプリンタが拾えないないことがあるんですが、
このコードは間違いですか?
「EnumPrinter()で取得した配列の先頭はデフォルトプリンタである」
という仕様は特にないですよね?
335デフォルトの名無しさん:03/07/05 12:51
ふと気になったんですが、一番文字数の長いAPIはなんですか?
…ExExExExExExExExExExExExExExExExExExExExExExExExExExExExExExExExExEx()
CoMarshalInterThreadInterfaceInStream
>>335
自分で調べてみようよ。
俺も以前Javaで一番名前の長い例外クラスってなんだろうと思って調べたことある。

ただJavaの場合rt.jarの中身を見ればいいけど、Win32APIだと大変そうだなw
339デフォルトの名無しさん:03/07/05 15:05
FindClosePrinterChangeNotification
うーん、負けた>>337


SetupRemoveInstallSectionFromDiskSpaceList
なげーよ
鼻毛ーよ
エディットボックスに入力されたテキストの文字数を返す API
ってありますか?

GetDlgItemText で strlen だと効率が悪いです。
それがコンマ1ミリの時間にもならないとしても効率が悪いのか?
たぶん 100000 回くらい使うんだろう。
GetWindowTextLengthでいいんじゃ?
>>344
何文字入力されるか分からないんでとりあえず 10 MB 確保したあと
realloc してたんですよ。まあメモリの掃除になって良かったのかも
しれないけど

>>345
INT_MAX 回繰り返す可能性もあるので、、、

>>346
グッジョブ!!
マジサンクスっす。。。
早速使わせて頂きます
348名無し@沢村:03/07/05 19:59
>>347
> グッジョブ!!
おまいはなんか勘違いしてないか
恐ろしく厨房な予感。放置に限る。
>>307
DbMonのソース見れ
>>348
え??勘違いって何すか?
>350
おう,激しくビンゴのようだ...サンクス
お手軽に mixer* な API でボリュームメーター表示ってできないんでしょうか。
http://www.microsoft.com/japan/support/kb/articles/181/5/50.asp
ってのがあって、試してみたんですが、ミキサーコントロールを取得できずに失敗します。

ってーか上のページのソース
> if (MMSYSERR_NOERROR == rc) {
> // ミキサーをオープンできない
> }
とか書いてる時点でどうかと思うんですがまぁそれはともかく。
アプリの起動と終了の監視をする、
グローバルフックのプログラムを作ってみたんですが、重くて話になりません(T_T
インストールするフックの種類はWH_CALLWNDPROCです。

http://www.kumei.ne.jp/c_lang/sdk2/sdk_163.htm
この辺見ながらやってるんですけど、メッセージ全部受け取っちゃうのが
遅くなる原因みたいです。(タスクマネージャ開いてスクロールバーぐりぐりすると
CPU使用率がはねあがるので)

どうにか早くする方法はないものでしょうか…

355デフォルトの名無しさん:03/07/07 00:55
あるディレクトリー下の階層を含めたファイル群を自動的に
圧縮・任意のディレクトリーに展開するライブラリでオススメって
ありますか?
参考ソースの場所などがあれば教えていただければ助かります。
よろしくお願いします
356デフォルトの名無しさん:03/07/07 01:27
MessageBox関数は、windows.hに定義されているのでしょうか?
(;´Д`)Kanbe Site YO!!
>>357
tyotto gurai iide syo!!
>>334
>「EnumPrinter()で取得した配列の先頭はデフォルトプリンタである」
>という仕様は特にないですよね?

見当たらないね・・・
デフォルトプリンタを取得したいときはGetProfileString使えと
EnumPrintersのドキュメントにも書いてることだし、
素直にそっち使っては?

サンプル
http://www.microsoft.com/japan/developer/winds/Sdk/Samples/SDKSample03.htm
ドキュメント
http://www.microsoft.com/japan/msdn/library/ja/jpgdi/html/_win32_enumprinters.asp
360334:03/07/07 15:52
>>359
サンクス!
>>354
フックDLLからインポートするDLLは最小限にする
関係ないメッセージのときは可及的速やかに抜け出すよう
フックコールバックを見直す
362デフォルトの名無しさん:03/07/07 18:17
CreateStreamOnHGlobalの第二引数がTRUEで実行して、
失敗した場合には、
第一引数のメモリオブジェクトのハンドルは自動的に開放されますか?
363r:03/07/07 18:51
なぜ BOOL GetMessage() APIは、負数、0、正数の3種類の値をとるのでしょう?
つーか、なんで BOOL にしてあるんでしょうか?
>363
昔からBOOLだった。
>>354
どういうことをしたいのか分からないですが、
終了を検知したいプロセスのハンドルを取得して
適当な待機関数で待つのが妥当じゃないでしょうか?
プロセスの起動も自前でするならCreateProcessした後に
WaitForInputIdle(GUIのみ)あたりで入力待ちになるまでなるまで
待ってもいいかもしれない。
とりあえずプロセスのハンドルさえ取得すればいろいろできる。

そうそう、プロセスのハンドルの取得方法くらいは他人に頼らず
自力で調べましょう。

>>354
漏れが思うに、勘違いしてるだけなんじゃねーのかなぁ。

「そのプログラムを動かした状態でぐりぐりやると重いが、
そのプログラムを動かしていない状態でぐりぐりやると軽い」
ならばそのプログラム自体に問題があるという事。

そう言うチェックはしてみた?
367名無し@沢村:03/07/07 22:19
皆々様方〜、教えてくださらんか、皆々様方〜♪
タイトルバーが赤や黄色のwindowをつくるにはどうしたら、いいかな〜?
教えてくださらんか、皆々様方〜♪
普通赤だろ?
369デフォルトの名無しさん:03/07/07 23:16
先輩方。
Win32に疎いもので申し訳ないですが
プログラムAで表示したメッセージボックスのイベントを
プログラムBで拾って、メッセージ内容を取得することって可能でしょうか。
できそうだとは思うのですが、具体的な方法がわかりません。。
ご存知の方がいらっしゃいましたら、ご教授願います。
一応ネットも調べたのですが,,
>>369
もっと沢村風に書け
メッセージボックスのイベント..って、なに?
意味がわかんないよ。
そもそも「メッセージボックス」っていっても、色々な種類があるんだが...。

適当なカタカナ言葉で誤魔化さずに、
もっと具体的かつ正確に条件を定義してください。
372名無し@沢村:03/07/07 23:29
先輩方〜、教えてくださらんか、先輩方〜♪
Win32に疎いもので申し訳ないのだけどよ。
プログラムAで表示したメッセージボックスのイベントを
プログラムBで拾って、メッセージ内容を取得することって可能なのかよ?
できそうだとは思のだが、具体的な方法がわからないよ。
ご存知の方がいたら、ご教授願うよ。
一応ネットも調べたよ。
教えてくださらんか、先輩方〜♪
373デフォルトの名無しさん:03/07/07 23:43
>>370,371

先輩方〜、教えてくださらんか、先輩方〜♪
Win32に疎いもので申し訳ないのだけどよ。
プログラムAのウィンドウ上で情報を入力後、
確認MsgBoxを表示したタイミングでイベントを拾って
別プログラムBでMsgBoxのメッセージ内容(String文字列)を取得することって
可能なのかよ?
できそうだとは思のだが、具体的な方法がわからないよ。
ご存知の方がいたら、ご教授願うよ。
一応ネットも調べたよ。
教えてくださらんか、先輩方〜♪
>Win32に疎いもので申し訳
んじゃ、Win32以外の方法で書いて見せれ!
375デフォルトの名無しさん:03/07/07 23:59
376デフォルトの名無しさん:03/07/08 00:00
>>374

え。。ここ、他の道きわめてないと質問しちゃいけないんすか?
あるいは別の情報を提示しないといけないとか、トレード必要すか?
なら出直します。
>376
そうじゃなくて、他人が読んで理解できるように具体的に書く必要があるかと。
解ってもいない用語を無理に使っているから文章が破綻しているんだよ。
素直に何をしたいのかをまず書きなさいって。
プログラムAと同じフォルダにダミーのuser32.dllをおいて横取り。

http://members.tripod.com/~masapico/doc_ApiSpy.html
>下記サンプルはtest.exeを起動し、このプロセスのMessageBox関数の呼び出しを監視する。
>test.exeがMessageBox関数を呼び出したら、呼び出した際に与えられた引数を表示する。

だそうだ。多分別のことやりたいんだろうけど。
380デフォルトの名無しさん:03/07/08 13:25
自分で書かなきゃいけないフォント列挙のコールバック関数の作り方を教えて下さい

フォントの列挙をしたいのですが、EnumFontFamiliesEx()で呼び出される
コールバック関数は自分で作れとあるのですがどうすればいいのかさっぱり判りませぬ。
・1回EnumFontFamiliesEx()を呼ぶ度にコールバック関数も呼び出される。
・コールバック関数は列挙を続ける時は0以外、終わる時は0を返す。
上記の理屈は判るんですが…

int CALLBACK EnumFontTest00(ENUMLOGFONTEX *lpelfe, NEWTEXTMETRICEX *lpntme,
int FontType, LPARAM lParam )
{
//試しにリストボックスにフォント名を追加
SendMessage((HWND)lParam,LB_ADDSTRING,0,(long)lpelfe->elfFullName);
return 0;
}

#↑実装方法がわからんので今は常に0を返してます。
渡される値はENUMLOGFONTEXとかNEWTEXTMETRICEXのポインタですが、この情報から
どうやって”列挙すべき内容が残っているのか”の判断をすればいいのやら…

ちなみに上記のコードでフォント名を取得しようとすると常に"System"のみが
返ってきて列挙になりません。
厨な質問すまんですが教えて下され。
>>380
> ・コールバック関数は列挙を続ける時は0以外、終わる時は0を返す。
> 上記の理屈は判るんですが…

> ちなみに上記のコードでフォント名を取得しようとすると常に"System"のみが
> 返ってきて列挙になりません。

分かってないじゃんかよヽ(`Д´)ノ
0返したら列挙終了なんだろ? 1個で終わって当前だろう。
382380:03/07/08 14:15
>>381
いや、コールバック関数内で”1を返すときの条件”をどう判断してよいのやら
判らんのれす…
>>382
全部列挙したければ1、何らかの理由で列挙をやめたいなら0
384380:03/07/08 14:24
×”1を返すときの条件”
○”0以外を返す時の条件”

スマンコ
385デフォルトの名無しさん:03/07/08 14:31
(;´Д`)感動した
http://homepage3.nifty.com/coco-nut/
386380:03/07/08 14:32
>>383


マジで理解できん…
”コールバック関数が返す値”をどうやって決めるかってな質問なんだけど的外れなんか?
>>386
コールバック関数は自作だろう?
10個で止めたいならカウンタでも作って10回呼ばれたら0を返すようにif文入れる。
そういうこった。
>>386
n個フォントがインストールされてれば
n回コールバック関数が呼ばれるはずですが?

で、ENUMLOGFONTEXを調べて、条件(例えば等幅フォントとか日本語フォントとか)
に合うフォントを適当なコントロールに追加する処理をすればいいかと。
389380:03/07/08 14:53
>>387
質問の仕方が悪いんだろうな…

列挙する物がある間は0以外を返して、無くなったら0を返したい。
しかし、「まだ列挙する物が存在するという判断」をどうやって実現するのかが
判らんのよ…

>10個で止めたいならカウンタでも作って10回呼ばれたら0を返すようにif文入れる。
>そういうこった。

これは違うだろうと…
なくなったら勝手に終わるって
lParamに構造体かなにかのポインタでも入れてヒントに使えや
392380:03/07/08 15:07
>>388
>n個フォントがインストールされてれば
>n回コールバック関数が呼ばれるはずですが?

ズガーン!!
EnumFontFamiliesEx()一回につき1度しか呼ばれないものだと勘違いしてました。
#EnumDisplaySettings()みたいに何度も自分で呼び出すものとばかり…

コールバック関数で常に0以外を返すようにしたら列挙できました。
アフォな質問に的確な回答マリガトウ御座いました。
393388:03/07/08 15:22
>>392
コールバックとはそういうもんですよ

出前のときの確認電話とかあるでしょ。
こっちから電話するんじゃなくて
必要な分だけ向こうから電話をかけてくるんです。


無言電話で困ってます
>>394
全部DefWindowProcにお任せしよう!
緊急の時だけWM_RESCUEとかw
だ、だれか >>353 に答えてやっては下さらぬか。。。
397名無し@沢村:03/07/08 20:22
皆々様方〜、教えてくださらんか、皆々様方〜♪
タイトルバーが赤や黄色のwindowをつくるにはどうしたら、いいかな〜?
教えてくださらんか、皆々様方〜♪
画面のプロパティーのデザインのところで赤や黄色を指定する
直接レジストリをいじっても良いけど
399初心者だけど:03/07/08 21:12
>>380
ず〜っと前、漏れもEnum系APIでの自前コールバックを引数にして・・・
ってやつで何がどうなってるのかよく分からなくて苦労したことあるなぁ〜。

そういう時はとりあえず、自分で呼ぶ側と呼ばれる側を作って
練習してみるのがいいかも。同じような仕様にして作ってみて動作を
理解するのが一番の早道かもしれませんよ。
400名無し@沢村:03/07/08 21:18
>>398
それだと、全部赤や黄色になってしまうのですが…?
自分でつくったソフトのタイトルバーだけを赤や黄色にしたいのですが…?
後から条件を追加するな
402デフォルトの名無しさん:03/07/08 21:39
LRESULT CALLBACK MainWndProc( HWND hWnd, UINT msg, UINT wParam, LONG lParam )

関数って、
最後のreturn文は何を返すのが一番いいんでしょうかね?
状況によりけり
返す物が固定なら戻り値を返すようになどなっていない
WM_NCPAINT〜♪
405名無し@沢村:03/07/08 23:59
皆々様方〜、自己解決しました〜♪
http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q99/0/46.asp&NoWebContent=1
上のURLを参考にすればいいことが分かりました〜♪

こんな掲示板をあてにせずに、最初から自分で調べた方が良かったみたいですね〜♪
とても勉強になったよ〜、皆々様方ありがとうございました〜♪
406r:03/07/09 00:04
>>405
おめでとう!
407デフォルトの名無しさん:03/07/09 01:18
>>402
普通DefWindowProc()の返り値では。
そういうことじゃない?
>>402
[7]がいいよ![7]!
ぼくならぜったいに7!!!
409デフォルトの名無しさん:03/07/09 19:42
変な質問なのですがお願いします。

IllustratorやPhotoshopには、レイヤー処理をするダイアログがあったと思いますが、
あそこでレイヤー名を表示しているのは、リストボックスやツリービューでしょうか?
それともコモンコントロールは使ってないでしょうか。

自分で調べるべきですが、該当アプリが手元に無くて…。
プログラマで持っている人は少なそうですが、もし御存知でしたら是非…。
>409
独自クラスっぽい、SPI++でみるとPSViewCとか出る。
PhotShop7..0ね。
>>408
7゚ッ
412409:03/07/09 20:38
>>410
うわぁ、ダイアログに独自コントロールですか。
ちらつき防止とか面倒そうですねぇ…。

レスありがとうございました。アレっぽい実装にして欲しいと、
要望を出されていたところでして、本当に助かりました。
>412
別に真似しなくてもいいんじゃないかな?
リストボックスをオナードローにしてもほぼ同じ物が出来ると思うよ。
まぁ面倒なのは変わらないか(w
ホトショは、mac由来のコードとか結構あると思う。
頭痛いです
Windows9x or 2000にて、仮想CDドライブのようなプログラムを作りたいんですが
どう検索して良いか、分からないんですが・・・(デバイス?ハードウェア?)
資料(本)とか購入したいんですが、お勧めのものありますか?
(なるべくC++関係で)
>>416
MSDN
>>416
スレ違い
その程度の事を質問するようでは作るのは無理だから諦めろ
だまってDaemonTools使っとけ
419デフォルトの名無しさん:03/07/10 10:26
wavファイルを再生するAPIを教えてください
API初心者です。よろしくお願いします。
質問なんですが、
別プロセスのハンドルを取得するにはどうすれば良いのでしょうか?
実行しているEXEの名前は解っている状態です。
ShellExecute
プロセスを列挙して、OpenProcess.
>422さん
ありがとうございます。
さっそく使ってみます。
424419:03/07/10 16:46
PlaySound()というそのままのAPIがありました。
情けないです。もう二度とここへは来ません。
425デフォルトの名無しさん:03/07/10 19:45
PeekMessage( &msg, NULL, 0, 0, PM_REMOVE );

の引数は皆さんどうしています?
僕はこんな感じにしているのですが(DirectXゲーム作成時)
>>424
また来いよ
427名無し@沢村:03/07/10 20:49
皆々様方〜、教えてくださらんか、皆々様方〜♪
自分がつくったwindowのタイトルバーを赤や黄色にするにはどうしたら、いいかな〜?
教えてくださらんか、皆々様方〜♪
もったいないので、むしろこれで>>405
430デフォルトの名無しさん:03/07/11 01:25
ここで聞いていいのかわからないのですが、

#define STRICT

は1回だけ宣言すれば全部のファイルで共通に作用するのでしょうか?
頭に#が付くのはプリプロセッサで処理される。

と言えばわかるか?
432デフォルトの名無しさん:03/07/11 01:33
>>431
わかりそうでわからない・・・

例えば、
#define ONE 1

と書いても、これが書いていないファイルではONEと書いてもだめだよね
>>431
君の無駄な試みに乾杯
>>432
ネタ?
#define STRICT

#define ONE 1
にどれほどの違いがあるってんだ?
435デフォルトの名無しさん:03/07/11 01:48
>>434
ということは、すべてのファイルに書けと
>>435
コンパイル時、どのファイルが読み込まれるかを勉強して下さい
437デフォルトの名無しさん:03/07/11 02:05
>>436
全ファイル共通のヘッダーファイルに書けと?
>>437
漏れは困らないから勝手に書けば?
大抵のコンパイラはオプションで定義できるだろうから、それを使えば?
-DSTRICT こんな感じで。
>>438
実際の所どういう動きをするのでしょうか?
>>440
#define が定義された次の行から適用される
後は、#include 等、他のマクロ(プリプロセッサ命令)が
どのように展開されるかを考える
誰もスレ違いだとつっこまないね
>>442
普通に気付かなかった…鬱
444デフォルトの名無しさん:03/07/11 11:01
プログラムの実行中,特定の処理を関数化してその関数をひたすら実行させ
続けたいのですが,どこでよんでやればいいんでしょうか(キー入力があれば
関数で使う変数の値を変えるとか…も入れるもりでつ)?
CPU使用率が100%になってもかまわないので.
LRESULT CALLBACK WndProcのswitchのdefault:のreturn DefWindowProc
の上でいいんですか?
445_:03/07/11 11:12
>>444
ひたすらというのがどの程度の頻度を指すか分からんが、
SetTimerでタイマつくってWM_TIMERの中とか
スレッドつくって、そこで延々実行させるとか

>LRESULT CALLBACK WndProcのswitchのdefault:のreturn DefWindowProc
とかだと何かのメッセージが来なければ、実行されない可能性あるし
447444:03/07/11 12:26
>446
関数を一回実行するのに数十〜数百msかかるのをCPUフル回転で回し
続けるみたいな感じです.スマソ
WM_TIMERかスレッド作って,ですか.
時間が毎回同じでもない(変数によって結構変わる)のでスレッド作ってやってみます.
ありがとうございますた.
448デフォルトの名無しさん:03/07/11 13:35
CPUの温度を調べるような関数はありますでしょうか?
CPUファンの動作状況なども調べることが出来ればなお良いのですが。
449デフォルトの名無しさん:03/07/11 16:25

他のプロセスの値(例:他アプリのフォーム上に書かれているテキスト等)を取得したく、
FindWindowでハンドルを取得した後、
ReadProccesMemoryを用いてメモリを直接読み取ろうと思うのですが、
(プロセスのハンドル、
読み取り開始アドレス、
データ格納バッファ、
読み取りたいバイト数、
読み取ったバイト数)
という引数があり、
2番目の読み取り開始アドレスの取得方法が分かりません。
恐らくプロセスのハンドルを用いて、そのプロセスが使用している開始アドレスを取得するのでしょうが、その方法が解る方いますでしょうか?
よろしければご教授ください。
そのフォームとやらが使ってるのが標準のEDITコントロールなら
普通にWM_GETTEXTで取るのが一番楽だと思うが。
451デフォルトの名無しさん:03/07/11 18:16
猫の83〜85章を見ながらMDIアプリを作っています。

やりたいのはMDIクライアントウィンドウにBitmapをBltしたいのですが、猫のサンプルを
見ると個々のMDIクライアントウィンドウのハンドラはstaticに保持とかしてないように
見えるんですが…
#単純にMDIClientのハンドラからDC取得して、そこにBltしたいのれす。

MDIクライアントウィンドウが複数ある場合、既に出来ているMDIクライアントウィンドウの
ハンドラを取得するにはどうすれば良いのでしょうか?
>>449
450さんの意見に禿同
わざわざデバッグ系APIを使う必要なし
>>451
WM_MDIGETACTIVEとかのメッセージでHWNDを取得できる
454デフォルトの名無しさん:03/07/11 19:16
>>453
有難う御座います。確かにヘルプには
Return Value
The return value is the handle of the active MDI child window.

とあるので間違いないのですが、WM_MDI…メッセージの戻り値ってとこが解りません…(無知)
SendMessageの戻り値でしょうか?
455453:03/07/11 19:48
>>454
>SendMessageの戻り値でしょうか?
その通り
てか、猫の85章にも書いてあるはずだが・・・

それはさておき、
>#単純にMDIClientのハンドラからDC取得して、そこにBltしたいのれす。
だとすると、
MDIクライアントウィンドウのプロシージャのWM_PAINTで描画しないと、
再描画が発生すると、「 マ ズ ー 」になりそうだが・・・
456名無し@沢村:03/07/11 20:10
>>448
CPUに温度センサーをつけて、センサーか送られてくるデータを取得する。
関数だけでは無理。
一応CPUその他の温度やファンの回転数を監視するチップは大抵のPCに
組み込まれてるが。
その辺を自力で叩く根性がないならMBMでも入れてそっから情報貰え。
はいはい
ほいほい
460デフォルトの名無しさん:03/07/11 22:56
CStaticにこちらの希望のフォーマットのビットマップを選択させるにはどうすればいいですか?
たとえば画面のプロパティーでRGB32でもCStaticはRGB8にしたい。など。
RGB8のDIBをそのままBitBltしたいので。

おねがいします。
461デフォルトの名無しさん:03/07/12 02:30
WM_SYSCOMMANDが来た時は、breakで処理を終えないで、
return DefWindowProc();

をするべきなんでしょうか?
もしそうならば、その理由はどういうものなんですか?
462_:03/07/12 02:33
あるサイトで

case WM_DESTROY:
ShowWindow(hWnd, SW_HIDE);
PostQuitMessage(0);
break;

としていて、コメントにMicrosoftが仕様と主張するOSのバグの対策をしていますと書いてあるのですが、
どういうバグへの対策が施されているのでしょうか?
タスクバーに空のボタンが残るってやつだっけ
えっと、フックについて質問です。あるプロセス内でインストールされたフックを
ローカルフック、ライブラリ(DLL)によってインストールされたフックを
グローバルフックという呼び方でいいんですよね?

で、本題ですが、プロセス内でグローバルフックをインストールする方法って
ないんでしょうか?理由としては単に DLL を作るのが面倒なんですが…
466デフォルトの名無しさん:03/07/12 12:02
>>465
微妙に理解が間違ってると思うが、詳細は下を読め。
http://www.kab-studio.com/Programing/Codian/DLL_Hook_SClass/06.html
他プロセスやシステム全体のメッセージをフックしたいならDLLは必須だよ。
467465:03/07/12 12:03
>>466
なるほど。解りました。ありがとう
スレッドフック 単一のスレッドに対するフック
グローバルフック 全てのスレッドに対するフック
ローカルフック そんな名称は存在しない?
システムフック グローバルフックの旧名称

スレッドフックのうち同一プロセスに対するものの場合のみDLLにしなくても良い
469465:03/07/12 12:21
DLLってなんと読むんですか?
どるる
どぅるる
>>464
検索したら、

この引数にSW_HIDEを入れて呼び出せば、そのウィンドウは見事に消え去り、タスクバーにも表示されなくなります。

と書いてありました。
でもこれ書いていない時でもそんな現象にあったことないんだけどなぁ・・・
Win95とか98とかでは、たまに起こってた記憶が。
474デフォルトの名無しさん:03/07/12 16:02

◆◇◆◇ 海外サイトだから安心無修正 ◇◆◇◆
http://upbbs.s2.x-beat.com/linkvp/linkvp.html

 ↑ 
ココは丸見え! 今ならまだ消されてないよ。たぶん・・・
>>470 >>471
アフォ
>>475
ヴァカ
>465 ダイナマイト・ロング・レディー
ディーエルエルって言ってる俺

>>478
激しく同意
どぅーどぅるびー
ドゥードゥルバグ
ダ、ダ、ダ、ダイナミック・リンク・ライヴラリー
でぃーいれぶん
まじレスするとデルだろ
DLLのアイコンは、初心者には「花」に見えるらしい
>>485
俺には触れてはいけないものに見えたが
while( 1 )
{
if( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) ) {
if( msg.message == WM_QUIT ) break;
TranslateMessage( &msg );
DispatchMessage( &msg );
}
else {
メイン処理
}
}

という形をとった場合、メイン処理で処理を終了させたい場合
break;
でwhile文を抜けるのが良いのか、return 0;でプログラムを終わるべきなのかどちらでしょうか?
488デフォルトの名無しさん:03/07/13 11:28
MessageBeepは

&Hffffffff
MB_ICONASTERISK
MB_ICONEXCLAMATION
MB_ICONHAND
MB_OK

↑これ以外の音はならせないんですか?

MailBeepに設定されてる音とかをならしたいんですが
489デフォルトの名無しさん:03/07/13 11:29
実行中の他のプログラムのコマンドライン文字列を取得する方法はありますか。
実行ファイルAが実行ファイルBを起動するのですが、その実行ファイルBに
渡されたコマンドライン文字列をコソーリ見たいのです。
490デフォルトの名無しさん:03/07/13 11:37
>>488
PlaySound()か?
B.exeのフリしてAに立ち上げてもらえ。
その後、改めてBを立ち上げろ。
>>489
BがGUIアプリなら、中に潜り込んでGetCommandLineだろ。
493488:03/07/13 12:30
>>490
PlaySoundですか、

PlaySoundは非同期に再生したときかってに終わってくれるのかな?
ちょっとためしてみます。
494デフォルトの名無しさん:03/07/13 12:42
>>492
ありがとうございます。
しかし、どのようにして潜り込むのでしょうか(@_@)
関数名だけでもヒントをください…m(__)m
>494(489)
VBプログラマ質問スレとのマルチポストの上にさらにヒント請求か。
厚 か ま し い な !
>>494
エッ!? ぶっ、ぶいびぃ・・・ですか。
・・・あなたには多分、無理です。
497デフォルトの名無しさん:03/07/13 17:59
エディットボックスコントロールに、
テキストをドラッグアンドドロップするには、
どうすればいいの?
なぁんか、できないんだよね。
CreatWindowのとこでなんかするの?
498デフォルトの名無しさん:03/07/13 18:30
このスレって参考図書は載ってないですね
参考図書もいくつか載ってると良いですよね
別に
500デフォルトの名無しさん:03/07/13 18:34
このスレって参考図書は載ってないですね
使えないですよね
このスレって使えないですよね。
502デフォルトの名無しさん:03/07/13 18:40
使えない
503デフォルトの名無しさん:03/07/13 19:44
>>496
いいえ、一応C言語でのWin32APIプログラミングは心得ているつもりです。
(プログラミングWindows第5版上巻の内容はすべて理解しています)
それでも無理なのでしょうか(汗)
>>503
>>491で分からないならまず無理。あきらめろ。
505デフォルトの名無しさん:03/07/13 19:51
>>504
実行中のプログラムについて知りたいので、>>491ではだめなのです。
Aは実行中でもBが実行される前なら問題ないだろう
このスレって使えないですよね。
そりゃPlatform SDK Documentation見ればほとんど解決するからね
いやいや喪前には負けますよハゲ
>>503 <<465
> (プログラミングWindows第5版上巻の内容はすべて理解しています)

「すべて」「理解」してるなんてスゲー!
512デフォルトの名無しさん:03/07/13 23:23
結局このスレには489の質問に答えられる香具師はいないってことだな。
もちろん漏れもだが。
513デフォルトの名無しさん:03/07/13 23:31
492の「潜り込む」というのは、システムフック(グローバルフック)のことかと。
とりあえずDLLと共有メモリの作り方を知らないとできない。
514489です:03/07/13 23:34
>>513
ありがとうございます。勉強してみます。
>>489
Win32API 質問箱 Build6
http://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
の740からの書き込みがまぁまぁ参考になるかと。
ほぼそのまんまみたいだし。でもVBだときつそうだな。
↑741からの書き込みだった。。。
つか、素直にAdvanced Windowsでも読んだほうが早いと思うが。
518デフォルトの名無しさん:03/07/13 23:47
あるサンプルソースでCreateThread関数で、

int d;

hThread1=CreateThread(NULL,0,fnThread1,0,0,&d);
hThread2=CreateThread(NULL,0,fnThread2,0,0,&d);

とあったのですが、
最後の引数は、

lpThreadId
1 個の変数へのポインタを指定します。関数から制御が返ると、この変数に、スレッド識別子が格納されます。

とあるんですが、スレッド識別子が格納されるというっことは、別々の変数を関数側に渡したほうが良いん&ですよね?
&d1,&d2のように。
519デフォルトの名無しさん:03/07/13 23:56
>>518
スレッドハンドルだけ使って、スレッドIDは使わないなら、
518のような書き方も構わない。
dは便宜上セットしているというだけ。
スレッド識別子を使わないなら、特に別々にする必要は無いかと。
ちなみに、Cランタイムな関数使うときは_beginthreadが推奨だけど、
その辺はOK?
_beginthread/_beginthreadexはAPIじゃないけどな。
まぁ、普通はこっち使うけど。
522デフォルトの名無しさん:03/07/14 00:10
LPDWORDって、unsigned long*
だったんですか?
int型のポインタ渡そうとしたら起こられましたけど
>>518
戻ってきた値をなにかに使うんじゃなければ、単に空の箱だけ用意し
とけばいいじゃない。
524518:03/07/14 00:20
>>519
>>520
>>521
>>523
情報ありがとうございました。
難関に思えたスレッドというものがこんなに簡単に実現できるとは・・・。
注意点とかありますか?
スレッドあんまり作成しないほうが良いみたいですが
>>522
typedef unsigned long DWORD;
typedef DWORD *LPDWORD;
だな。WTypes.h を参照
>>524
作るのは簡単。
しかし、使いこなして問題が起こらないように維持するのは、
規模が少し大きくなるだけで、絶望的に難しくなる。
527522:03/07/14 01:02
>>525
おお、そうですか
そういうのって、コンパイラのある場所(puroguramフォルダ)にあるんですかね?
>>518
ちなみに、最後の引数、NT系はNULLでも動いちゃう。
それで安心してたら、95系でコケてNULLは使えないと気づく・・・
>>527
WTypes.h より windif.h の方が一般的かもしれない。
場所は開発環境、Win32SDKなんかをインストールした場所によって異なる。
検索しろ。
>>529
windef.hじゃなくて?
>>530
windef.hでした。非常に恥ズイ…
指摘感謝。
532デフォルトの名無しさん:03/07/14 07:00
http://www.sm.rim.or.jp/~shishido/wavbuf.html
ここでビープウェブをドレミファソラシドと鳴らすプログラムがあるのですが、
ぷつぷつと途切れないようにするには、どうすればよいのですか?
リソースでつまずいた・・・
534デフォルトの名無しさん:03/07/14 23:42
LoadImage関数って、NTでは使えないみたいだね
でもXPでは使えるみたいだね
>>534
そうなの?
NTの環境ないから試せないけど、
MSDN読む限りでは、使えそうだけどな・・・
APIの関数の使い方みたいなの乗ってるサイトで便利なとこありますか?
お薦め教えてください。
>>536
>>2よめ
538山崎 渉:03/07/15 09:39

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
539デフォルトの名無しさん:03/07/15 10:23
NT系のマルチモニタ(デュアルディスプレイ)の制御をする
APIを知りませんか?
手がかりもないのでMSDNライブラリの検索にも全然
引っかからなくて。

お願いします。
>>534
4.0以降と書いてあるが。

もしかしてLR_LOADFROMFILEのこと?
日本語版の古いMSDNだとNTではサポートされないようなこと書いてあるけど、
英語版や最新の日本語版ではそんなことどこにも書いてない。

>>539
この辺の階層かな。
ttp://www.microsoft.com/japan/msdn/library/ja/jpgdi/html/_win32_EnumDisplayMonitors.asp
542デフォルトの名無しさん:03/07/15 11:40
>>540
ありがd!!
こいつを手がかりにまた捜してみます。
543山崎 渉:03/07/15 14:02

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
544ケン:03/07/15 14:12
VBAのユーザーフォームのイメージコントロールに貼り付けた画像の、
例えば、上から10ポイント左から20ポイントのドットの色の情報を
取得する方法があれば、教えてほしいのですが・・・
API関数のなかにありますか?
>>544
GetPixel?
546デフォルトの名無しさん:03/07/15 19:37
>>534
日本語版MSDNヘルプが古いだけ(NT 3.5では使えなかったという意味)
NT4以降なら使える
がいしゅつにもほどがある
>>547
だが、4.0以降と書いてあるにも関わらず、サポートしてねぇよ、とも書いてあるので
3.5では使えないけど4.0以降なら使える、という情報は読み取れない。

まぁ、日本語版は信用するなってこった。
英語版見ればNT4以降で使えるのは明らかだがな
もっとも最近英語版の記述も怪しい
Cのisspaceに代わるAPIってありますか?
551デフォルトの名無しさん:03/07/16 12:29
そのフォルダが存在していなくても、フォルダパスであれば真になるようなAPIはあるでしょうか。
PathIsDirectoryはフォルダが存在していないと偽を返してしまいます。
>>551
拡張子のないファイルとフォルダが
両方とも存在しないとして、それをどうやって区別するの?
>>552
その場合はファイルとして判定してくれればいいです。
単純に言うとパスの最後に\があるか否かを判定するAPIがあればいいんですが・・・
やはりパスの先頭からIsDBCSLeadByteを使って走査していき、
最後が\か否かを判定する関数を自作するしかないんでしょうか。
>>553
そんな君専用のようなAPIが存在するわけが無いだろう
Windowsではドライブ以外はフォルダの最後に\はつかないのが普通
>最後が\か否かを判定する関数を自作するしかないんでしょうか。
その部分だけなら作るのに30秒かからないが・・・
というかそんなチェックが本当に必要なのか?
APIに丸投げしてエラーをチェックした方がよっぽどまし。ということもありえるぞ。
557553:03/07/16 13:44
リストビューにファイルパス(フォルダパスではない)を一覧していまして、
 1. リストにファイルパスを与えた場合はそのままファイルパスをリストに追加
 2.リストにフォルダパスを与えた場合はフォルダ内のファイルパスをリストに追加
とし、
 3.ファイルが存在する場合はそのまま表示
 4.ファイルが存在しない場合は追加したファイルパスを赤く表示
としたいのです。
このとき存在しないフォルダパスを与えてしまうと、4.の処理のために
この存在しないフォルダパスがリストに追加されてしまいます。
自分でやるしかないみたいですね・・
CRT使ってよくて MBCSなら、ch='\\'として

BOOL IsLastChar(LPCTSTR str, UINT ch)
{
 BYTE* pLast = _mbsrchr((const BYTE *)str, ch);
 return (pLast && (*_mbsinc(pLast) == '\0'));
}
こういうパターンは想定しないの?
c:\
\\servername\
>>557
>この存在しないフォルダパスがリストに追加されてしまいます。

↓この定義からすると何ら問題ない動作のような気がするんだが。
>>553>その場合はファイルとして判定してくれればいいです。
>>560
ファイルパスなのかフォルダパスなのか区別のしようが無い場合は
ファイルパスとして判定してくれれば良いということです。

(パス末尾に\をつけて)フォルダパスとして与えたつもりなのに
ファイルパスとして判定されるから困るのです。
HDDスリープさせたいんだけど、
Linuxの「hdparm -Y」と同じ働きをする関数ある?
>>561
>(パス末尾に\をつけて)フォルダパスとして与えたつもりなのに

フォルダパスであることがわかってるならわざわざ判定させる必要ないじゃん。
>>563
それをパスだけで判定できないかという話です。
>>563
そんなこと言ってたらPathIsRootやPathIsFileSpecやPathIsDirectoryがいらないなw
>>565
それは「実在するかどうか」という判断をするための物だろ。
「実在しないがフォルダパスである」とわかっているものの何を判定しろというのか。
>>566
C:\hoge\
↑これはフォルダパス?
>>567
C:\hogeというフォルダが実在すればフォルダパス。
C:\hogeというファイルが実在すればファイルパス。
ファイルもフォルダもなかったら自分で決める。
>>568
ではC:\にhogeというファイルを作ってPathFileExists(_T("C:\\hoge\\"))を実行するとTRUEが返ってくるはずだな
やってみりゃイインジャネーノ
漏れのパソコンではFALSEが返ってきますたがバグですか?
569が何を言いたいのかサッパリわからない。
>>568がこっそり最後の\を省いてる罠
>>568
C:\hogeというファイルが実在しててもファイルパスじゃねーじゃん。
>>574
だからどうしたとしか言いようがない。
自分でわかっている(末尾に\を付与する)なら判定させる必要ないじゃん。
>>575
おい、知ったか。嘘を言っておいてそれか。
>>576
何ですかこの粘着は。568は別にPathFileExistsの挙動について述べたわけじゃねえだろ。
>>575
自分では判っているから末尾に\をつけるの!
579553:03/07/16 18:10
あのですね、
void run(char* path)
{
  if(isdir(path))

}
580553:03/07/16 18:14
途中で投稿してしまった・・・
void run(char* path)
{
  if(isdir(path))
    >>557の2の処理 ;
  else
    >>557の1の処理 ;
}
簡単に言うとこんなことをしたくて、isdirに該当するAPIはあるかという質問なんですよ。
んで無いみたいなので自作するしかななという結論にとっくに至りました。

>>575
あなたもういいです。
>>580
GetFileAttribute?
...butes
APIじゃ無いけど、_splitpath でいいんじゃねーかと
>>580
>>557の仕様を実現するのにそういう機能のAPIを要求するお前のセンスに問題がある
ような気がするよ。
そうかなぁ。MakeSureDirectoryPathExistsは\がパスの最後にあればディレクトリだとみなすのでそんなAPIがあってもいいと思ったんだけど
>>581をためせよ
>>584
splitpathがあるんだからWin32APIに求めてもそれほど変でもあるまい。
>>585
MakeSureDirectoryPathExistsは「末尾に\を付与することを要求」しているだけで
「\がパスの最後にあればディレクトリだとみなす」わけじゃないだろ。
\が付いてなければ「不正な引数」と判断してるだけだ。
>>588
違うだろ。
末尾が\じゃ無い場合は、その前の\までのディレクトリしか作らない。
>>586
ログちゃんと読めよ
>>588
MSDN読めよ
頼む。今後のためにも知ったか厨は消えてくれ。
>>590
ほぼisdirそのものだけど
if (!pathというファイルが実在する) {
    if (pathというディレクトリが実在する)
        >>557の2の処理;
    else
        >>557の4の処理;
else
    >>557の1の処理;
>>593
今話してるのは「存在しないフォルダパス」の話だ。
>>595
C:\dir D
C:\dir\ D
C:\file F
C:\file\ -1
C:\notexist -1
C:\notexist\ -1
>>587
いや、>>557にある3つの動作(条件)を実現するのに、最初に「ディレクトリかどうか」を
判断しようとするセンスに問題があるって事だろ。
>>594
それだと4の処理で存在しないフォルダパスが追加されてしまう。
追加するのは「ファイルパス」。
>>596
存在しなくてもDになるようなAPIの話だ、ってログ読めよ!
600594:03/07/16 18:47
>>598
>>553より、4の処理で必ずファイルパスとして追加するようにすればよい。
>>600
渡されるパスに末尾\がついてて「これはフォルダパスだ」と主張してる場合でもか
すでにAPIに無いのはわかっているんだから、藻前らみんなスレ違いですよ。
603594:03/07/16 18:55
>>601
「実在しないフォルダパス」をどうするか仕様として与えられておりませんので(w
>>599
すみませんでした
>>603
リストにはファイルパスを表示する仕様なのでフォルダパスは表示しない。
たとえ存在しないフォルダパスだとしても。
実在しないパス文字列をどうやって生成するのか知らんが、「フォルダパスの末尾には必ず\が
ある」ってのがわかってるなら、フォルダかファイルかの判定は済んでいるも同然だよな?

なら
末尾に\がある→実在すれば557の2、しなければ何もしない
末尾に\がない→実在すれば557の1、しなければ557の4

でいいんじゃねえの?
なんでひとつのAPIで済ませようとするのか不思議だ。
>>606
>>553でマンドクセっていったけど仕方ないので自分でもう作ったといっている
608元質問者:03/07/16 19:06
>>606
そういうAPIがあるなら使いたいというだけで無いなら自作するとかなり前に結論が出てます。
>>608
それにしても
>先頭からIsDBCSLeadByteを使って走査
ってのはやっぱりセンスねえんだなぁ・・・
>>609
CRT無しでもっと良い方法がありますか?
>>610
(末尾のバイト=='\' && !IsDBCSLeadByte(末尾の1個前))
ならフォルダパス。
なお、文字列の長さが不明の時はlstrlen APIで調べる。
おれに言わせりゃノーセンス
>>611
文字列の途中でIsDBCSLeadByteを使っちゃいかんよ
そもそも>557なアプリの仕様に問題があるのだ。
論点がずれてるぞ。
>>611
SJISの場合二バイト目でもIsDBCSLeadByteに引っかかる場合があるぞ。
"C:\最後がそういう文字な名前\" の場合誤診する。
後ろから行きたければIsDBCSLeadByteがFALSEを返すとこまで戻って
戻った字数が偶数か奇数かで判定
今日は知ったかぶりが多いよねえ
>>615
WTLの_IsDBCSTrailByteがまさにそんなコードだったと思う。
MultiByteToWideCharでUnicodeに変換してから末尾の文字を拾えばいいじゃん。
>>618
本末転倒な気が・・・
>>620
そかな。頭から走査するよりはマンドクサクは無いような…
int mbcslen = lstrlen(path);
int widelen = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, path, mbcslen, NULL, 0);
LPWSTR widepath = new WCHAR[widelen];
MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, path, mbcslen, widepath, widelen);
if (widepath[widelen-1] == L'\\') { // pathはフォルダパスである



bool IsLastBackslash(LPCTSTR lpszPath)
{
 bool bTail = false;

#ifndef _UNICODE
 int nChar = lstrlen(lpszPath);
 for(int i=nChar; i>0; i--){
  if(!::IsDBCSLeadByte(lpszPath[i - 1]))
   break;
 }
 bTail = ((nChar > 0) && (((nChar - i) & 1) != 0));
#endif //_UNICODE

 if(bTail)
  return false;
 else
  return (lpszPath[lstrlen(lpszPath) - 1] == _T('\\'));
}
質問する場所ここであってるかどうか分かりませんが。。。

コンパイルの仕方が分かんないです
OSウインドウズXP使ってるんですが
とりあえずBorland C++ Compiler 5.5落としてきて
#include <stdio.h>

maim()
{
printf("TEST");
}
てファイルをメモ帳で書いてtest.cって名前で保存してみたら
一応test Cファイルって出来ました。

コマンドプロンプト
C:\Document ***>bcc32 text.c
て入力してみたんですが
'bcc32' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
とかでます。
あまりにすれ違いだからみんな固まってるよ。
Cスレでちょっと前に同じ話題が出てたから、そっちを見てきなさい
>>623
質問する場所が間違っている。
そのエラーに関する情報はWindows一般の使用法に関するものだ。
スマソ逝ってきます
>>566
PathIsFileSpecは「実在するかどうか」は関係ないわけだが
はー、ファイルパスとかフォルダパスとか…。
そんな単純な要求で、こんなに会議になるとは…。
ここの人達のPG能力がわかるレスだね。(;´Д`)

まさか、それで趣味じゃなくて仕事にしてるの??<PG
…まさかね。( ´∀`)アハハ
とりあえず質問する前にMSDNを見るのは当然のことながら回答する方もMSDNを見るべきだ。
このスレが物凄く情けなく見えた瞬間に立ち会えた
>>580
CreateFile()があるだろう
またログを読まない奴が一人来たか
633631:03/07/17 01:18
_| ̄|○ ログ読んどけばよかった・・・・・つか違う
デスクトップのアイコンを詳細表示にしたいんだけど
どうしてもできません。
ListView_InsertColumnがうまくいかない・・・
誰かヒント教えれ〜 (T T
SubItemはどうしてるんだ?
自分で入れてるのか、それともデスクトプーが勝手に入れてくれるのか
末尾"\"判定のもっともAPIスレらしい答えは
CharPrev(path, path + lstrlen(path))
じゃないの
637デフォルトの名無しさん:03/07/17 16:02
CreateProcess()でアプリを起動し、WaitForSingleObject() で終了待ちしてる
んですが、その起動したアプリで

int WINAPI WinMain( HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine, int nCmdShow )
{
 HWND hFgWnd = ::GetForegroundWindow();
 ::MessageBox( hFgWnd, "キタ━━━(゚∀゚)━━━ !!", NULL, MB_OK);

ってやると、双方が固まってデッドロック状態(?)になります。
MessageBox( NULL, ...) とすると問題なく hFgWnd を調べると CreateProcess
をした側のメインウィンドウ(WaitForSingleObject()で待機中)なんですが、
これってまずいのでしょーか?
まずいね
>>637
つーかそういう場合、待機関数を別スレッドにせずに使うか?

ウィンドウハンドルを指定するとそのウィンドウを保持するプロセスに何らかのアクセスを
するとかじゃないのかな?

なんにしろ、ウィンドウを構築しているスレッドでプロセス終了を待つと
起動中はそのウィンドウが反応しなくなるんだから、別スレッドで待つべきだと思う。
そもそも他プロセスのハンドルをMessageBoxとかに渡していいものなの?
パスがディレクトリかどうか判定

・PathRemoveFileSpec にパスを食わせて、その戻り値をしらべる。

ではダメなのか?

「いまさら何を言っているのかね、君は。」
>>641
戻り値がどうなったらファイルでどうなったらフォルダなのか問い詰めたい。
機器でSRAMカード(ATAじゃなくて、ただのSRAMカード)をメモリとして使ってます。
WindowsでSRAMカードの内容を読みたいのですが、どうすれば良いのでしょうか?

お願いします。
>>644
何で読もうとしてるんだよ。
646ところでSRAMカードってなんだ?:03/07/17 21:19
>>645
愚問だな。
そこにSRAMカードがあるからに決まってる。
>>644
リニアなメモリカードなんか普通は使わんから
ツールがその辺に転がってるわけない罠。
ADTECのCardUTとか専用のツール買え。
648634:03/07/17 23:01
>>635
亀レスすまそ。
そもそもLVCOLUMN構造体の中身をどうして良いのか
わからんです。
SubItemやTextは、windowsが決めてると思うんだけど
どうやってそれを反映させるのかがわからない・・・
自分で適当に列を追加してもうまくいかない〜 (T T
>>648
デスクトップは普通詳細表示しないから
使いもしないSubItemはわざわざ追加してないと思うナリ
っつかまず普通のリストビューで実験してみれ
650デフォルトの名無しさん:03/07/18 02:59
Windows API 版 atexit() みたいなのってないですか?
プロセス終了時に呼ばれるコードをフックしておけるみたいなやつ。
>>640
USERオブジェクトはウィンドウステーションとデスクトップが
同じならプロセス間共有可能であることが保証されてるから問題ない。
それがShatter系のセキュリティホールの原因にもなってるわけだが
652644:03/07/18 08:49
ツールでSRAMカードを読みたいんでなく、
アプリを作りたいんですが、こういう場合にどうしてます?
653デフォルトの名無しさん:03/07/18 09:01
DDKってダウソ出来ないんでしょうか?

VC++なら買ってますが。
654デフォルトの名無しさん:03/07/18 09:08
リッチエディットコントロールで、
右クリックするにはどうすればいいか、おしえてぽ。
655デフォルトの名無しさん:03/07/18 09:12
フェチのためのサイト
http://www.k-514.com/fe/ero.html
656644:03/07/18 09:47
RAMDISK.SYSとかいうのがありますね。

でも、使い方が分からないんですが、何を調べれば分かりますか?
>>654
リッチエディットコントロールからマウスカーソルが外れないように気を
つけながら、マウスの右ボタンを注意深く押す。
RAMDISK.sysは、メインメモリからいくらか割り当てて、
それを仮想ディスクとするものですヨ
659デフォルトの名無しさん:03/07/18 10:03
http://win32lab.com/tips/tips6.html

↑のようなページを見つけたんだけど、掲載されてるソースでIsDBCSLeadByteのif文て必要?
'\\'、 '/'、':' は全部ASCIIとかぶってるからいらなくない?
>659
Shift_JISの2Byte目の範囲を言ってみ。
661660:03/07/18 10:06
ああそうか。CharNextがあるから、2byte目には当たらない、という話か。
たしかに、IsDBCSLeadByteのところは要らないネ
>>660
それはCharNextでスキップできるじゃん
663662:03/07/18 10:07
あ、かぶった
>>659のページはWinamp日本語化キットの作者のページみたいなんだけど、
キット使ってる自分としてはなんか微妙な気持ちになった
それからDBCSネタついでにもう一つ質問。
Str系API(StrStrとか)ってDBCSを考慮してるっぽいんだけど、それが明記されたドキュメントってどっかにある?

StrStr("も", "\\")の結果で考慮してるっぽいって思っただけなんだけど・・・
いまさら感が拭えんけど。

>>643
MSDNより
> PathRemoveFileSpec
> Removes the trailing file name and backslash from a path, if it has them.
で、
> Returns nonzero if something was removed, or zero otherwise.
なので、パスと思われるものを与え、戻り値が FALSE ならば
削除すべきファイル名が入っていなかった。
つまりディレクトリパスとして妥当であるといえるのではないかね。

if( !PathIsFileSpec( path ){
 if( !PathRemoveFileSpec( path ) ){
  パスはディレクトリであるという処理
 }
}

うまくいくかは知らん!
>>666
やってみりゃわかることだが、

   それ以上醜態を晒すのはやめとけ・・・・
近頃、回答者のレベルが著しく下がった気がする
>>652
何にも知らないならまずJEIDAのPCカード規格書でも買うべきだな。

ドライバが必要なので、DDKも必要だ。
またはドライバ/ライブラリだけ調達汁。
95系のWindows用ならフリーで見つけたが、NT系は見たことないな。
>>668
おまえよりはマシだけどな。
>>670
そういうこと書くからレベル低いって言われるんだよヽ(`Д´)ノ ウワァァァン!!!!
DBCS系のAPIって、日本語Windowsでは動作するけれど、英語Windowsでは動作しませんね。
それで、ShiftJIS文字列を扱う時は、いまだに昔ながらのISKANJIを使ってたりします。
でも、もしかするとDBCS系のAPIで処理する文字コードを設定するAPIってあるのかな?
久しぶりに香ばしくて(゚д゚) ウマーでした
>>646
>>645の「何で」はwhyでは無く、「what do you use」だと思う所存。
>>672
> DBCS系のAPIって、日本語Windowsでは動作するけれど、英語Windowsでは動作しませんね。
> それで、ShiftJIS文字列を扱う時は、いまだに昔ながらのISKANJIを使ってたりします。
そういうことをするとヨーロッパ人から余計なことをするなと言われたりする。
欧州に藻前さんのアプリを使う人は誰一人いないのかもしれんが

> でも、もしかするとDBCS系のAPIで処理する文字コードを設定するAPIってあるのかな?
たとえばIsDBCSLeadByteExやCharNextExAはコードページを指定できる。
つーかCharNextEx「A」ってどういうこっちゃ?
サロゲートの範囲はハードコードせいってこと?
>>672
IsDBCSLeadByteは…引数の文字がASCII(&半角カナ)か、
ASCII(&半角カナ)以外かを判断しているだけで、
APIに無ければ、自分で関数作れるような気がするが。
オレの気のせいだったか?
> いまだに昔ながらのISKANJIを使ってたりします。
って言ってるじゃん。で、自作ではコードページに応じて
動作を変えるなんて芸当はできないでしょ。
>>675
Aは機能拡張版です

・・・ということではないのかな
679デフォルトの名無しさん:03/07/19 00:56
CreateWindow関数の最初の引数って、何を渡せばいいのですか?
これは何か使われたりするのですか?
>>679
WINCLASSで登録したクラス名
使われるかどうかは知らん
MSDNで検索したのですが、CWnd::InvalidateRectしか検索できませんでした(voidの戻り値でした)。
InvalidateRectは、戻り値はあるのでしょうか(VC6.0ではintらしいですが)?
ある場合はどういう値が帰ってくるのでしょうか?
>>678
頼むからMSDNくらい読んでください
「Ex」が機能拡張版という意味で
「A」がANSI文字版、「W」がUnicode版という意味です。
つまりこの関数はUnicode版がないということで、
> サロゲートの範囲はハードコードせいってこと?
というレスにつながるわけです。
Windowsで普段ユニコードと呼んでるエンコーディングはサロゲートを含まないんじゃなかったっけ?
>>684
2000以降はUTF-16でサロゲートに対応してる。
>>683
つか、そもそも引数がTCHAR/TSTRじゃないからな。
687654:03/07/19 09:38
>>657
そうゆうネタじゃなくて、まじめに教えてぽ。
ポップアップメニューが出ないのはなぜ?。
>>687
>>654の質問内容がどう考えてもネタだろ
689デフォルトの名無しさん:03/07/19 11:32
WM_MOUSEMOVEのメッセージがきたら
ウィンドウの位置と大きさを取得したい
っつーか、
WM_NCLBUSTTONDWONでnHITTESTがHTMINBUTTONの時に
ウィンドウの位置と大きさを取得したい

そんなAPIはなんですか?
USB機器取り外すときに、いちいちタスクバーにマウスを持っていって
停止操作しなくちゃいけないのが面倒なので、なんとかしたいと考えています。
USB機器を取り外すにはどの辺りのAPI叩けばいいでしょうか?
>>689
GetWindowRectではいけない理由があるなら教えてくれ。
692689:03/07/19 11:55
>>691
アプリケーションが終了した位置をiniに保存するという処理を
しています。
しかし、WM_NCLBUSTTONDWONでnHITTESTがHTMINBUTTONで
最小化し、さらにその状態で終了されたら次回にアプリを
立ち上げたときとんでもない位置にウィンドウが配置される

この問題を回避するためにいろいろ考えてるわけです
GetWindowPlacement
検索すりゃそのためのAPIがすぐ見つかるけどな
695689:03/07/19 12:24
GetWindowPlecementを見たがウィンドウの状態がわかっても
使い方がわからん。確かに最小化の状態から最小化の前の
ウィンドウ位置に戻っているがどうやって使うんだ?

GetMessageを使ったとして小生はVBで使うことを想定して
質問しているからウィンドウプロシージャメッセージで受け取る
タイミングがわからんし

VBのイベントハンドラって限られてるし
すれ違いかどうかわからんが
ヒントくれ
>>695
VBはわからんが、
俺のプログラムでは、WM_CLOSEなどの、ウィンドウが破棄される前にGetWindowPlacementでゲットしたデータをiniに保存しておき、
WM_CREATEで、SetWindowPlacementで復元してる。
最小化の問題があるから、復元する前に WINDOWPLACEMENT.showCmd を適切に修正してる。
697689:03/07/19 12:52
>>696
VCではそうするのか。参考になったよ
WINDOWPLACEMENT構造体の中に最小化であるという情報と
復元の位置が入っていると信じて使ってみるぽ

しかし、GetWindowPlacementでは日本語のくせに
WINDOWPLACEMENTからいきなり英語で解説してるからMSDNは苦手だ、、
VC++6.0付属のMSDNライブラリですら、MFCのほうで引けばWINDOWPLACEMENT
も日本語で説明してあったりするが。

ちなみにGetWindowPlacement/SetWindowPlacementを使うと、タスクバーが上なんか
にあったりすると見事にずれるらしい。
GetWindowPlacementで位置とサイズだけ保存しておいて復元にはSetWindowPosを使ってる漏れ
700デフォルトの名無しさん:03/07/19 13:31
700
701689:03/07/19 13:46
>>697-698
日本語解説もあったしあとは打ち込むだけぽ
感謝汁
702デフォルトの名無しさん:03/07/19 14:48
BCCでリソーススクリプトを使う方法が全然分かりません。

RCファイルをを拾ってきてcppファイルと一緒にメイクしたら
以下のようなエラーが出てきて上手くいきませんでした。

Error: 外部シンボル '_main' が未解決(C:\BORLAND\BCC55\LIB\C0X32.OBJ が参照)

cppファイルは単独でobjファイルにコンパイルできるし、
RCファイルも単独でRESファイルにコンパイルできます。
何がいけないのか良く分からないのです。

>2の猫のC言語のサイトではマイクロソフトのやつを使ってるみたいで、
なんかよく分からないんです。
BCC系の詳しいサイトを教えて下さい。
お願いします。
>感謝汁
おまえがな
耳から感謝汁が垂れてきたという意味だろ
>>702
main 関数はあるのか?
WinMain なら -tW を付けてみる
706690:03/07/19 15:37
USB機器を取り外すAPIに関して情報ありませんかー?
どこそこのスレで聞けとか、実現してるフリーウェアがあるよ、
などでもいいのでプリーズ。
CM_Request_Device_Ejectを発行しませう。
>705
ありがとうございます
なんか設定がおかしかったみたいです
709690:03/07/19 17:50
>>707
ありがとうございます!大変参考になりました!
>>707
おおー、こんなのあったのか。

漏れもいちいちトレイから操作するのが面倒で、
なんとかできんかなーと思ってたところだ。

ハードウェア寄りの面倒なコーディングが必要なら、
そこまでする気にもなれんなーと思ってたんだが。
711654:03/07/19 22:57
>>688
ネタじゃないってば。
やっぱり、エディットコントロールの
ポップアップメニューの出し方はわからないまま。
コピペのメニューを出したいんだけど、出ない。

とりあえず、クリップボードを使って
コピーすることにしましたが。
>>711
処理系をBCBかDelphiかVBにしたら?
>>711
っていうか、リッチエディットコントロールにそんなものないから自分で
実装しないと駄目だよ。聞くまでもない。
714デフォルトの名無しさん:03/07/20 00:27
LoadImage関数の戻り値はなにになるんでしょうか?
MSDNで調べたのですが、LoadBitmap関数しか見つかりませんでした
>>714
いつの時代のMSDN Libraryをお使いですか。

ttp://www.microsoft.com/japan/msdn/library/ja/jpwinui/html/_win32_loadimage.asp
>>714
char です。
>>714
画像ファイルを読み込みたいんなら
戻り値は単にHBITMAPにキャストすればいい
turb C++でCを使ってプログラミングもどきをしているものです。
MIDIや、WAVのファイルが再生できるDLLやヘッダー無いですか?
あちらこちらのサンプルコード使ってみたり、ぐぐってみたりしたけど見つかりません。
教えてください。
本当に探したのかと問いたい。問い詰めたい。小一時間問い詰めたい。
おまえただ「ぐぐってみた」って言いたいだけちゃうんか、と。
7ラタ
コマンドプロンプトから起動されたWinMainで始まるアプリが、
コマンドプロンプトの標準出力に出力する方法ってあります?
>>723
無理だと思われ
CreateWindowの最後の引数は、NULL固定ですよね?
将来的に使われるかもしれないってことですよね
726723:03/07/21 01:16
>>724
そうですか。残念…。
お答えありがとうございました。

>>725
ttp://www.microsoft.com/JAPAN/developer/library/jpuipf/_win32_createwindow.htm
CreateWindowでぐぐると最初にひっかかりますよ
ShowWindowの戻り値について質問なんですが、

ウィンドウが以前から表示されていた場合は、0 以外の値が返ります。

ウィンドウが以前は非表示だった場合は、0 が返ります。

とあるのですが、ウィンドウが以前から表示されていた場合とは、どんな場合なんでしょうか?
ShowWindow(hWnd, SW_SHOW);
ShowWindow(hWnd, SW_HIDE);
WS_VISIBLEスタイル(ry
>>725
WM_CREATEでLPARAMをLPCREATESTRUCTにキャストして->lpCreateParamsで使うユーザ定義の引数
用途はキミ次第
731ケン:03/07/21 12:36
ディスプレイに画像を表示しないで、色の情報を
取得することはできますか?
たとえば、あるbitmapの上から10ポイント、左から30ポイント
の位置の色の情報を取得したいのですが・・・
ディスプレイから取得しない方法を教えていただきたいのですが・・・
Bitmapリソースなら、CompatibleDC使えばいい。
Bitmapファイルなら、自分で解析しろ。
733ケン:03/07/21 18:53
>732

>Bitmapファイルなら、自分で解析しろ。
まんどくそい。
API一発でなんとかならないですか?
>>733
LoadImageで読んでSelectObject→GetPixel、ただし画面の色数に影響されるかも
解析するしかない。
CreateDIBitmap BITMAPINFOHEADER あたりでググれば
わかるかもね。

ひょっとして>>733はフィッシャーマンだった?
736デフォルトの名無しさん:03/07/21 20:40
>>734
LoadImageはリソースしか読めん。
出直してまいれ。
えっと…。

キャラクタベースの文字列とか文字表示APIってどんな名前ですか?
win32 コンソールアプリで使いたいんです。具体的には色表示したり
したいんです。

エスケープシーケンス使えと言われそうですが、NT/2000/XP の
コマンドプロランプとではサポートしていないのです
738737:03/07/21 20:54
× コマンドプロランプとではサポートしていないのです
○ コマンドプロンプトではサポートしていないのです
>>737
2000などでもエスケープシーケンスなら使えるっちゅうに。
まあ、それだけではなんだから、「猫でもわかる」でぐぐりれ。
>>737 MSDNライブラリの目次から[Windows 開発]-[Windows ベース サービス]-[ファイルおよび入出力]-[SDK DQメント]-[ファイル入出力]-[コンソール]を見れ
>>736 LR_LOADFROMFILEは?
742名無し@沢村:03/07/21 21:37
>>736 ( ´_ゝ`)フーン 
>>737
しょうがない、マジレスしてやるか。

printf("<COLOR=0xFF0000>Hello world</COLOR>\n");

で色が変わる。
あ、そうそう、
#include <html.h>
忘れるなよ。
744デフォルトの名無しさん:03/07/21 21:50
>>733

BMPをAPIでDIBSectionなどに読み込むと、デバイスコンテキストの属性の影響を受ける可能性があるから、自分で解析したほうが確実だよ。
横幅が4の倍数ピクセルの24bitBMPなら、そんなに難しくはない。

BITMAPFILEHEADER内(+10バイト)にあるRGBデータの先頭アドレスにx*3+y*横幅*3を加えれば、(x,y)のRGB(バイトイメージではBGR)のデータを得られる。ただし、デフォルトの座標系はGDIとは上下逆だから要注意。
横幅や高さなどはBITMAPINFOHEADER内にあるから、そこを読めばよい。
>>733
その程度の大した作業でないことすら面倒くさいのか?
適正無いから早めに身を引いた方が楽だよ
746デフォルトの名無しさん:03/07/21 23:13
>>745
もしもAPI一発呼び出すだけで色が取れたら?
ビットマップファイルを解析するなんて時間の無駄だよね?

下調べせずに無駄なコードばっかり書いて納期を守れない>>745
邪魔で仕方ない。
はよこの業界から去れや。
747_:03/07/21 23:15
>>745-746
醜いですよ
>>746
素人が業界語るなよ
>>749
プロの無職が業界語るなよ(w
>>ナナハン

ワラタ
>>751=>>745が知能障害を起こして誤魔化そうとしていらっしゃいます。
753751:03/07/21 23:28
しかし、情報隠蔽が『アフォのふりをすること』ってのが
わかってない昨今のバカガキにうんざりってとこは確かにある。
業界なんか語りたがるのはいつだって素人だ
>>746
納期を守れない奴はアホの馬鹿だが邪魔でも迷惑でも無いが、
2chで下調べするようはアホの馬鹿は邪魔で迷惑だから去ってくれよ。

ビットマップファイルの特定座標(ピクセルではなくポイント!!)の色を取得するなんていう応用性のかけらも無いAPIが存在するわけ無いだろ。
>>736
LoadImage(NULL, pathAndName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
>>755
日本語が不自由な人は日本から去って韓国に去ってくれ。
>>757は感感俺俺
>>757
この日本語も怪しいと思いますが
ワラタ
>>753
痛い
>>746
だったら、その一発呼び出すだけで色が取れるというAPIを提示してみせろよ。
それができたらお前が正しいと認めてやるよ(w
但し納期に間に合うように見つけてこいよな
納期は7/22 の正午まで待ってやる
猫でもわかるプログラミング
とやらで勉強しようと始めたんですけど
正直意味不明、これで十分分かり易いのでしょうか?
サンプルも実行できないし…
>>763
ある程度わかってる人がみる所だとおもうが。
765デフォルトの名無しさん:03/07/22 01:08
>>762
よーく読め。

まず、DIBファイルの解析がめんどいというレス。>>733

これに対して、めんどいなら業界を辞めろというレス。>>745

更にそのレスに対して、とにかく調べて無駄な事はしないべきだというレス。>>746


めんどくさがって如何にして簡単に仕上げるかってのもプログラマの適正であって、
簡単だろうが何だろうが車輪の再発明やる奴はダメだという話だよね。
>もしもAPI一発呼び出すだけで色が取れたら?  
と言ってるのは、そんな簡単なの書けよって意見に反対するための例だよね。
”もしも”って書いてるだろ、もしも既にあるのなら作り直すのは無駄だよね、と言ってる。

もしこうなら、って話の趣旨からズレた部分に対してツッコミを入れるというか
ナンクセ付ける>>762に乾杯♪

さぁ、君の論点ずらしも見破られたワケだが。
反省文なら7/22の朝まで待ってやる。
質問しまん。

GetWindowTextで取得した文字列「hogehoge」と

char sv[]="hogehoge";

↑は何が違うんですか?改行されてるんですか?
その辺教えてください。

ちなみにえでぃっとぼっくす↓
hEWnd1 = CreateWindowEx(WS_EX_CLIENTEDGE, "Edit", (LPSTR)NULL,
WS_OVERLAPPED | WS_CHILD | WS_VISIBLE |
ES_LEFT | ES_WANTRETURN | ES_NOHIDESEL,
0, 0, 150, 25, hwnd, (HMENU)Edit1, g_hInstance, NULL);
どっかにテンプレなかったっけ?
ありえない仮定を持ち出す・・・とかいう奴。

しかも
> 下調べせずに無駄なコードばっかり書いて納期を守れない>>745が邪魔で仕方ない。

納期を守れない根拠もないし、無いとわかっているAPIを自分でコーディングするのは無駄でもない。
質問者として回答者を侮辱するのはどうかと思うよ。

しかもむしろ探し回る時間が無駄。
実際、733がこのスレで聞いて無駄に消費した時間があれば自分で書いたほうがましなのは言うまでも無い。
有りもしないAPIを探すより、そんな簡単なモノは自分でさっさと作ってしまった方が早いのだが。
少なくとも相当な馬鹿でない限りは、最初の質問をした時点から今の時間まででの間に、
余裕で目的を達成している。
要するに自分でAPIを探す能力もなければ、目的物を作成する能力もない
それを指摘されて逆ギレ
プログラムどころかどの業界にも向いていない
そんなAPIがあるわけないとわからない人は(プログラムを作るのは)難しい。
771名無し@沢村:03/07/22 01:25
>>769
人工無能にはなれるんじゃないか。
つーか、ファイル読んでDIB構造体をメモリに作るコードは、
Webにいくつでも転がっている。
それをコピペで(w
最も優秀な方法>>772
>>766
誰にも相手にされず少しかわいそうなので答えるが。


   ま っ た く 質 問 の 意 味 が わ か ら な い 。


国選エスパーを雇うか一般人にもわかる言葉で聞いてくれ。
775名無し@沢村:03/07/22 01:58
>>766
おまいはUNICODEビルドで開発してるんだろ。
だからGetWindowsText()で取得した文字列はchar型ではなく
wchar_t型の文字列なんだよ。
エスパー
あんまプログラマの適正がどうだとか(他には英語が読めないだろ、学歴無いだろなど)書かないで欲しいよ。
無駄なやり取り増えるから。
>>775

それにしては、
CreateWindowEx(..., "EDIT"...) が UNICODE になってないようだ。
なぞがなぞを呼ぶ・・・
Cスタイルの文字列を==演算子で比較していたに35カノッサ
780デフォルトの名無しさん:03/07/22 03:12
>>779
なんか問題ある?
>>781
問題しかないが。

781 名前:デフォルトの名無しさん :03/07/22 03:21
>>781
問題しかないが。
夏だなぁ・・・・・
785デフォルトの名無しさん:03/07/22 12:53
質問です。
一度値の入った DDL のグローバル変数、およびグローバルな static 変数は、
どの時点で無効になりますか。
786785:03/07/22 12:56
念のために言っておきますが
DDLとはData Definition Laguageのことです。
Domain Definition Languageや
Dynamic Declaration Languageでは
ありません。
787デフォルトの名無しさん:03/07/22 17:12
教えて頂きたいのですが、>>785はWin32APIと関係があるのでしょうか?
788デフォルトの名無しさん:03/07/22 18:20
/////////////////////////////////////////////////


    「夏厨が大量に沸いています」

したがってこのスレは8月いっぱい休止致します。
皆さんまた9月にお会いしましょう。


                    See you again

/////////////////////////////////////////////////
さようなら、788さん(だけ)…
790デフォルトの名無しさん:03/07/22 18:30
教えて頂きたいのですが、>>787って知障ですか?
こいつら迷惑メール業者です
懲らしめて下さい

[email protected]
[email protected]
[email protected]
[email protected]

785が暴れとる・・・
793デフォルトの名無しさん:03/07/22 18:53
>>790
教えてあげよう。
知障なのはお前だ!
差別用語使うな。ヴォケ
794デフォルトの名無しさん:03/07/22 18:58
本当に 私のお願いを 全部叶えてくれた  先生を紹介します。
こんな 凄い人がいるのに 知らないで 悩んでる人が いると

思うと  いてもたっても いられなくて!!

是非 相談してみて ADは http://ainenjyukai.hp.infoseek.co.jp/ です


すごいでしょーーー!
すげー(゚σ ゚)ホジホジ
すげー(゚σ ゚)ホジホジ


すげー(゚σ ゚)ホジホジ 1


すげー(゚σ ゚)ホジホジ
すげー(゚σ ゚)ホジホジ




すげー(゚σ ゚)ホジホジ


すげー(゚σ ゚)ホジホジ


すげー(゚σ ゚)ホジホジ


すげー(゚σ ゚)ホジホジ
すげー(゚σ ゚)ホジホジ
すげー(゚σ ゚)ホジホジ
すげー(゚σ ゚)ホジホジ






すげー(゚σ ゚)ホジホジ
すげー(゚σ ゚)ホジホジ
すげー(゚σ ゚)ホジホジ
すげー(゚σ ゚)ホジホジ
すげー(゚σ ゚)ホジホジ



802 :03/07/22 19:37
質問です〜。

ShowHtmlDialog(Ex) で frameset 使ったページを表示すると、
A タグの target属性を初めとして、兄弟フレームへのアクセスが
一切できないのは仕様ですか?
>>787
ワラタ
誰も785に回答しようとしないね。意地悪だね。
>>804
マジレスすると、Win32APIの質問じゃないから。
Win32APIとどう関係があるのか教えてくれたら回答してあげる。
>>805
そう思っているのはあなただけみたいですよ?
>>806
DDLってSQLで使う奴って事くらいしか知らないのですが、
Win32API(=Windowsのシステムコール)とどのような関係があるのか
良ければ教えてもらえますか?

あー、煽りじゃなくて、私はDDLを知らないので勉強の為に。
>>788,>>790,>>803がアホってこと?
809785:03/07/22 20:42
すいません DLL の間違いです。
Win32API とはちょっと範疇外れるけど
Windows でのプログラミングということでお聞きしたかったんですが・・・

static やめました☆
釣りの相手はやめましょう。
>>808
釣られた787がアホってこと
>>811
なるほど!
要するに785!=786で、786は釣り師ってことか。
もう何が何やら・・・
815デフォルトの名無しさん:03/07/22 21:01
LoadImage関数で、ビットマップの(100,100)から(200,200)を読み込ませる方法はありますか?
816 :03/07/22 21:01

IPアドレス 218.123.72.69
ホスト名 YahooBB218123072069.bbtec.net
>>815
LoadImageのどこにそんなパラメータがありますか?(ピュア
818デフォルトの名無しさん:03/07/22 21:30
>>817
0,0のやり方しか見たことないから、こういう場合はどうするのかなと思いまして
LoadImageした後に必要な部分を切り出す。
>>793
差別用語使うな。ヴォケ
821デフォルトの名無しさん:03/07/22 22:49
WindowsでCOMを使ったマルチスレッドのプログラミングをしているうちに、

・スレッドとウィンドウ(メッセージキュー)の関係
・ワーカースレッドと、UIスレッド
・モーダルダイアログとスレッド
・メッセージループとスレッド

とかの関係が良く分からなくなってしまいました・・・。

ここら辺のトピックについて、解説しているサイト、書籍などはありませんでしょうか?
>>821
さらに
・COMオブジェクトとスレッド
に重要な関係があったような気がするのでそこも調べてみた方がいいと思う。

・・・詳しいサイトは知らん、ごめんよ。
gethostname()でFQDN形式で取得できるの。
またそれはどこから取得するの?
>>822
アパートの事?

すみません、COMってWin32APIの範疇に(ry
825821:03/07/22 23:39
コメントありがとうございます。 822、824さま

もちろん、アパートも問題なのですが、アパートについて調べるうちに、
そもそも、「自分は、スレッドとウィンドウの関係が分かっていない!」
ということに気づいたのです。

ウィンドウは、特定のスレッドの配下にいるらしいということは分かったのですが、
いかんせん複雑怪奇なWin32故、知識の整理ができません。
それで、ここらへんについて、説明をしているサイトや書籍を探している次第です。
826デフォルトの名無しさん:03/07/23 00:37
>>820
「知的障害者」「知障」が差別用語だとすると、正しくはなんて呼べばいいのでしょうか?
知恵遅れ
>>826
「様」をつけろ
>>829
知的障害様者
831デフォルトの名無しさん:03/07/23 01:16
>>821
>>821,825
>ウィンドウは、特定のスレッドの配下にいるらしいということは分かったのですが、
ここでかなーり勘違いしてるっぽい。
#オレも昔はそんな風に勘違いしてた
きちんと解説しているサイトや書籍は知らないが…

まずはみっちりシングルスレッドの普通のWin32アプリについて勉強すること!
メッセージループってのは要するに「GetMessageしてDispatchMessage」
を延々と繰り返してるだけなんだが、この二つの関数が何をやってるのか
把握しさえすればなんとかなる。分かってしまえば「なーんだ」って感じ。
>>832
「TranslateMessage」は何でふか?
飾りだよ
かざりじゃないのよ涙は…
某サイトのリソーススクリプトを使ってビットマップを表示するサンプルを試したいのですが
画像が表示されません

リソーススクリプトの組み込みって具体的にどうやるんでしょうか?

使ってるのはMicrosoft Visual C++ 6.0です
>>832
どう勘違いなんだ?
ウィンドウは作成したスレッドに属していると思うが。
838821:03/07/23 02:07
特に分からないのが、
同一のスレッドにモーダルウィンドウがあるときの動作です。
モーダルウィンドウを出すと、親ウィンドウのメッセージプロシージャは実行されない?
メッセージボックスでは???
親WindowがDoModal関数を呼んだら、そのモーダルウィンドウが閉じられるまで
制御は戻らないよね?
832 の言う通りか。
スレッド以前にイベントドリブンを勉強したほうが良いな。
>833
>「TranslateMessage」は何でふか?

キーボートからの入力をキーボードの状態に応じて(WM_CHAR用に)変換するだけ。
メッセージを利用してキーボードの入力を処理しなければ関係ない。
PostThreadMessageわ〜?
843デフォルトの名無しさん:03/07/23 12:28
ウインドウの右上にある最大化ボタンを押して最大化したあと
もう1度押すと最大化が解除されますよね?
このときに再描画の処理を行いたいのですが、どんなメッセージが送られて
きているのでしょうか?
WM_PAINTもWM_GETMINMAXINFOも飛んできません。
844843:03/07/23 12:36
失礼しました。OSはWindows2000です。
WM_SIZEじゃねーの?
846843:03/07/23 13:36
>>848
それが来ないんですよ。。。
↓責任重大
>>846
ちゃんとSpy++で確認した?
今OpenJaneで試してみたけど、ちゃんとWM_SIZE飛んできてたよ。
無限ループに陥った
850845:03/07/23 13:50
>>846
VC付属ツールのSPY++使って、
メッセージ拾ってみるとかしてみそ?
>>843
WM_SHOWWINDOWにSW_OTHERUNNZOOMが乗っかってくる。
852デフォルトの名無しさん:03/07/23 21:01
特定のレジストリキーに入ってる値とタイトル?を取得するために
RegEnumValueを使いたいのですが…MSDNを見てもよくわかりません(TT
んで,いろいろやってみたのですがうまくいかないのです…

どなたかデーターの値とタイトルを列挙するサンプルあげてくれませぬか…
おねがいいたします
853デフォルトの名無しさん:03/07/23 21:04
>>852
誰かとかぶるかもしれないが、、
ググりなさい。

http://www.google.com/search?hl=ja&inlang=ja&ie=Shift_JIS&q=RegEnumValue+Declare&lr=lang_ja
>>852
つか、MSDN読んでもワカランのなら適性無いから転職しろ。
855デフォルトの名無しさん:03/07/23 21:36
ビットマップ画像ファイル(またはicoファイル)を読み込んで
アイコンハンドルを取得する関数ってありますか?
または、サンプルソースがある場所を教えていただければ幸いです
よろしくお願いします

856デフォルトの名無しさん:03/07/23 21:38
>>854
ごめんなさい,学生なんです(TT
857直リン:03/07/23 21:38
また適正厨かよ・・・
859デフォルトの名無しさん:03/07/23 22:01
CreateThread で取得したハンドルは CloseHandle で閉じるんだよね?
861デフォルトの名無しさん:03/07/23 23:25
MsgWaitForMultipleObjectsって
WaitForMultipleObjectsと同じように待って、
その間にメッセージがきたら
WndProcを呼んでメッセージを処理してくれる関数なの?
>>855
CreateIcon()
CreateIconIndirect()
CreateIconFromResource()
などを検索。
ビットマップのバイナリデータを扱えないと難しいね。

>>861
メッセージが来た時の対応はPeekMessageと同じ。
IsDialogMessageしてTranslateAcceleratorして
TranslateMessage通してDispatchMessageしてやらなくちゃだめぽ
864832:03/07/24 02:59
>>837-840
う!?ああそうか、そう読むと832の段階では早とちりだった。
「各ウィンドウが個別のスレッドに属している」と>>821氏が
勘違いしていると思ったのだが、やっぱりそうであったか。

VisualC++使ってるなら
DispatchMessageの呼び出しとWindowProcの先頭、
DoModalの呼び出しの直前と直後あたりにブレークポイントを
置いてデバッガ上で動かしてみて、
コールスタック(呼び出し履歴)を見てみると面白いかも。
一つのスレッドに一つ以上のウィンドウが属している、であってますか?
他ウィンドウに対してキー情報を送る場合、
SendMessage(PostMessage)でWM_KEYDOWN、WM_CHARを使う
SendInput(keybd_event)を使う
これ以外の方法はありますか?
外部物理デバイスに、「キーを押せ」と指令を出す
868デフォルトの名無しさん:03/07/24 11:27
>>866
漏れならキーが押されたときに発生するメッセージを直接送信する。

PostMessage(l_hDialog, WM_COMMAND, MAKELONG(GetDlgCtrlID(l_hButton), BN_CLICKED), l_hButton);
869デフォルトの名無しさん:03/07/24 11:29
開店セール見に来てーーーーーーーーーー!DVDを見ようー!GO!
▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
開店セール1枚 500円より→→→http://www.dvd-exp.com 
アダルトDVDが激安販売→→→http://www.dvd-exp.com 
アダルトDVDの価格はなーんと1枚900円→→→http://www.dvd-exp.com 
最短でご注文いただいた翌日にお届け!→→→http://www.dvd-exp.com 
セルビデオ店の人気商品が24時間お買い物が出来ます。
        時間をかけてゆっくり選んでください!
          http://www.dvd-exp.com←へGO!
           DVDエクスプレス
>>866
keybd_event()
>>868
MAKEWPARAM
(LPARAM)
872デフォルトの名無しさん:03/07/24 22:47
助けて!waveInResetがフリーズする!

音声認識処理を組み込んだActiveXコントロールを作ってるけど、
ウェーブフォームオーディオ入力デバイスを閉じようとすると
フリーズしちゃう!

waveInStop→waveInReset→waveInUnPrepareHeader→waveInClose
の順で閉じてるけど、waveInStopは0を返してる。それまでの
Openとかは問題なし。

ぐぐってみたけど、こんな症例はどこにもない。
だれか助けて!お願い!
873832:03/07/25 00:35
>>865
あってる。大抵のプログラムでは全てのウィンドウが
メインスレッドに属してる。
「属する」って言い方もナンだが、そのスレッドのメッセージループの
配下で各ウィンドウのウィンドウプロシージャが動いてる。
874デフォルトの名無しさん:03/07/25 10:31
>>871
添削ありがとう。
そんな小洒落たAPIがあったんだね。
今後はそっちを使わせてもらうよ。
>>874
MAKELPARAM,MAKEWPARAMは単なるマクロです
876デフォルトの名無しさん:03/07/25 11:31
>>875
ありがとう。
ここはソフト開発の本質が学べるね。

まー、細かいことをいうなら>>868のコードは実際にはPascalなので
マクロでもAPIでもなくDelphiの単なるライブラリ関数なわけだが。
877 :03/07/25 11:46
>>873
属するっていう言い方で良いんじゃない?実際に各ウィンドウは、
Create されたスレッドに属していて、

・そのウィンドウに関するメッセージは、そのウィンドウが属するスレッドの
 メッセージキューに加えられる。
・別のスレッドからSendMessage されると、スレッド間通信が行われて、
 WindowProc はウィンドウが属するスレッドで実行される。

てな動作になります。

後者のようなスレッド間通信は、COM コンポーネントがアパートを超えて
メソッド呼び出しされる場合なんかにも使われる仕組みです。

面白いのは、こうしたスレッド間呼び出しで呼び出し元スレッドがブロック
している間にも、他スレッドからの呼び出しには応じられるということ。
STA の COM コンポーネント A, B があって、 A が B->hoge() を呼び出して
一見ブロックしていても、その間に B からの A->hage() なんかにはちゃんと
応じてくれます。

面白くないのは COM のスレッド間通信でタイムアウトを明示する簡単な方法
が無さそうなこと。。。
別スレッドのウインドウに親子関係を持たせると、
不安定になってなかなか楽しい
とくに標準コントロールの部類
879まこと:03/07/25 13:29
プログラム2:10進数の整数の桁数を表示する
>>879
APIとの関係を200字以内で記せ
>>872
CALLBACK をどうやってるかが気になるが。
CALLBACK_FUNCTION で waveInOpen を呼び出していて、
callback 関数の中でデッドロックしてるとかじゃないよね?
882デフォルトの名無しさん:03/07/25 19:54
もしかしたら、C++スレかもしれませんがそうだった場合ごめんなさい

SECURITY_ATTRIBUTES構造体って使っていますか?
もし使っているならば、どういうときに使っていますか?
>>875
関数だけがAPIではない。
マクロだって立派なAPI
>>882
サービスとログオンユーザーでカーネルオブジェクトを共有する必要があるときとか
885デフォルトの名無しさん:03/07/25 21:34
886872:03/07/25 22:51
>881
CALLBACK関数waveInProcではWIM_OPEN,WIM_CLOSE,WIM_DATAの
切り分けをして、OnWimData(もともと単体動作のものを流用)
を呼び出しているだけです。
呼び出しも、グローバルでCOleControlのポインタを持たせて
おいて->OnWimOpenを実行するだけで、デッドロックするよう
な要素が見当たりません。(><)
あー俺 waveInStop って使ったこと無かった。
終了時は waveInReset しか呼んでないよ。
>>882
インストーラから呼び出すDLLで一部のファイルを制限ユーザでも更新させるために、
ファイルのパーミッションを変更したいとか、
レジストリの一部のキーを制限ユーザで更新させたいとか。

とにかく既存のアプリを無理やり XP ロゴに適用させようと悪さする時かな(w
889デフォルトの名無しさん:03/07/27 01:49
質問させていただきます。

エディットボックスを任意に「無効」にしたいのですが、EM_の中にそれらしきものが発見できません
EM_SETREADONLYをとりあえず使っているのですが、
フォーカスをあわせられるのがちょっと困り者です
「無効」にするメッセージはないでしょうか?
EnableWindow
EnableWindow() は目的と違う?
(゚д゚) EM_メッセージを使うという先入観に捕らわれてました

灯台下暗し。ありがとうございました
893デフォルトの名無しさん:03/07/27 11:02
こんにちは。質問があります。

すでに画面上に表示されているフォームがあるのですが、
固定サイズになっていてサイズ変更や最大化が出来ない状態です。
これを可能にするにはどうしたらよいのでしょうか?

ちなみに左上のコントロールボックスの「サイズ変更」と「最大化」は
共にグレーアウトされています。
>>893
開発環境を書こう。
つーか、たぶんそこはかとなくスレ違い。
>>893
hWndを取得して、ウインドウのモードを書き換えてしまえばOKだと思われる
hWndを取得する方法としては、
タイトルバーの文字で一致を探すとか、対象座標で一番上にあるウインドウのhWndをとるとか
色々ある
>>893
開発環境はVCもしくはVBです。
APIで変更できた記憶があったのでこちらで質問しました。
>>895
ハンドルは取得できています。
その後のウィンドウのモードを書き換えるにはどうしたらよいのでしょうか?
>>897
SetWindowLongだな

>いくつかの種類のデータはキャッシュされていて、
>SetWindowLong 関数で変更されたそのデータは SetWindowPos 関数が
>呼び出されるまで反映されません。
>特に、データの変更によってウィンドウフレームのスタイルが変更される場合には、
>SWP_FRAMECHANGED フラグを指定して SetWindowPos 関数を呼び出して、
>キャッシュを更新しなければなりません。
>転載元 ttp://yokohama.cool.ne.jp/chokuto/urawaza/api/SetWindowLong.html

これに注意しる
>>898
レスありがとうございます。
さっそく、教えていただいたサイトを参考に組んでみました。
VBで書いたのですが

 Dim h As Long
 h = FindWindow("foo", vbNullString)
 Call SetWindowLong(h, GWL_STYLE, WS_THICKFRAME)
 Call SetWindowPos(h, 0, 0, 0, 0, 0, SWP_FRAMECHANGED)

以上のようなコードを実行するとウィンドウそのものが消えてしまいました。
タスクバーにはアイコンが残っていますがコンテキストメニューは出ません。
ただ実行はされているようです。
間違っている点があったら指摘していただけますでしょうか。
>>899
> 間違っている点があったら指摘していただけますでしょうか。
嫌だね。
>>900
了解しました。
いろいろ教えてくださってありがとうございました。
>>899
GetしてからちょこっといじってSetせよ
>>899
元のスタイルを考慮しなければそうなるだろ
SetWindowPosのフラグも何個か足りないような
getしたウィンドウスタイルに新たに追加する場合には or 演算子を使いますが
あるスタイルだけ削除したり、あるスタイルが適用されているかどうかを
判断するにはどうしたらよいのでしょうか?
判定:if(style&&WS_FOO)
削除:style&&~WS_FOO
何故&二回・・・
&でescapeする言語なの加奈?
ここからは>>906の使っている言語を当てるスレになりました
>>906
判定 (style and WS_FOO) > 0
削除 style = style not WS_FOO
ということでしょうか?
>style = style not WS_FOO
なんすかそれ。notて二項演算子?
style = style and not WS_FOO
判定後なら xor でもよし
>>911
C++のキーワード一覧みてみ。
914デフォルトの名無しさん:03/07/28 20:49
EXEファイルの最後に別データを埋め込んで取り出す、という
自己解凍書庫のようなことをやりたいのですが
WindowsのEXEファイルのファイルサイズ(EXE部分)を取得するにはどうすれば良いでしょうか?
取得しないとデータの取り出しが出来ないので(汗

DOSであれば
02〜03H 最後のページに入っているバイト数
04〜05H 512バイト単位のファイルの大きさ(ヘッダも含む)。
らしいのですが、Windows上で動く32bitEXEの場合
常に同じ値になってしまいファイルサイズが取得出来ません。

ちなみにWin32コンソールアプリケーションで作成しています。
915名無し@沢村:03/07/28 21:14
おまいらよ、WinAPIでTVウェアをつくってみないか?

http://pc2.2ch.net/test/read.cgi/tech/1059262203/l50
>>914
リソースに突っ込んじまえば?
>>914
検索したらPEファイルのフォーマットが見つかったけど・・・
けっこう面倒っぽいです。
http://msdn.microsoft.com/msdnmag/issues/02/02/PE/http://msdn.microsoft.com/msdnmag/issues/02/02/PE/
918917:03/07/28 21:37
そういうプログラムはウィルスとみなされる昨今。
HSPはウィルスか?
詳しく知らんがアレも似たようなことしてそうだけど
>>914
データ部にヘッダか何かつけて、それで判別ってのはダメ?
922デフォルトの名無しさん:03/07/28 23:29
現在特殊な用紙に印刷をしています(プリンタの設定で新しく定義した用紙)
で、その新しい名称と番号は別々にAPIで取得できるんだけど、その両者を結びつけてコンボなりリストなりから選択できるようにしたいんですが・・・
現在は定義した用紙の登録前後で定義の番号を取得し、その前後で違うのがあれば、それをINIファイルに書き込むようにしています。

登録前 登録後
12   12
22   22
     33
で、調べたあとで33をINIファイに書き込んで使用

さて・・・出来るんだろうか・・・
VB6 & Win2000です


何が聞きたいのかわからん。
924922:03/07/28 23:37
要はAPIで現在登録してある用紙を取得設定できませんか?って事です
説明下手でごめんなさい(__)
925無料動画直リン:03/07/28 23:38
普通にDeviceCapabilitiesで列挙できるけど。
927名無し:03/07/29 00:31
>>920
HSPはデータにヘッダみたいのがついてたからそれで判別してたっぽい。
逆汗して確かめたわけじゃないから断定はできないけど
>>914
http://www.geocities.jp/buin2gou2/delphi/DelphiFAQ.htm
そんなに面倒じゃないよ。
929デフォルトの名無しさん:03/07/29 01:43
C++でnew と delete を繰り返していると、タスクマネージャーで見ると
2Gバイトまで500Mバイト以上空きがあるのに、1Mバイトの塊も取得
できなくなった。
ガーベージコレクタみたいなものってあるの?
ちなみに、Windows2000
>new と delete を繰り返していると、
繰り返してないからメモリが足りなくなるんじゃないの。
GCよりもリークのチェックツールでdeleteし忘れを検出してみたら。
deleteしたからといってOSにメモリを返すとは限らないわけだが。
メモリ空間が断片化しまくって連続した1MBの領域が存在しなくなったんだろ。
>>928
914さんとは別人ですが、そのサンプルって問題ないんですか?
オプションヘッダのサイズを固定値にしてるし、最後のセクションヘッダが
ファイルの末尾のデータを指していると仮定しているし…。

文句つけているわけじゃなくて、ちょうどEXEを編集・作成するようなライブラリでも
作ろーかなーとか何となく思ってPEフォーマット勉強中なのですが、
そういう一般的な約束があるんなら気をつけなきゃな、と思ったので。

あと、>>914は、単純にファイルの末尾に「データ」+「データ長情報」を加えて、
ファイル末尾のデータ長情報を読んでからデータ位置を逆算すれば簡単だと思うのですが…。
>>914
何故リソースを使いませんか?
>>933
それって簡単にできるもんなの?
漏れには想像もつかないんだが。

コンパイル時に全て作成するならリソースでもいいけど、
自己解凍みたいなものは、実行モジュールが予めあって、
それに圧縮したファイルを結合するわけから、
リソースとして格納するとなると、それこそフォーマット解析して
いじくって組み込む……ってことになるような気がするんだけど。
UpdateResource
>>934
解凍するモジュールはコンパイル時に作成されるんだから、結合前に圧縮対象の
モジュールを圧縮して.rc2にでもinclude書いておけばいいんじゃねえの。
解凍モジュール側のプロジェクトに圧縮対象のモジュールへの依存関係張って
カスタムビルドで圧縮、.rc2でinclude。
>>936
それは違うのではないか
938914:03/07/29 14:08
皆さんレスありがとうございました^^

別ファイルを追加する際に実行部分の最後にヘッダをつけて
それ以降をデータ部として、実行時に自身のバイナリからヘッダ部分を
スキャンした後でデータを取り出すということに成功しました。

今はもう少し改良を加えて複数のファイルの追加、及びDLL等のパッキング
が出来ないかどうかを考え中です。
939 :03/07/29 19:35
一番最後に「データを負荷する前のファイルサイズ」を付けとけば、複数追加しても
後ろから芋づる式に取り出せるよ。
940デフォルトの名無しさん:03/07/29 19:37
ユーザ領域内にファイルをインストールする必要のあるツールを開発していて、パスの取得(w2kだとc:\Documents and Settings\hogehoge.network以下みたいな感じ)のためにPlatform SDKのGetUserProfileDirectory()を使おうと思ってます。
が、MSDNのサイトを見てもぐぐっても必要とされるuserenv.lib/hのことについては情報がなく、自分のマシン(w2k+VisualStudio6.0SP3)にも入っていないため困ってます。
米MSDNにはSDKのCD買えやとか書いてあるんですが、それ以外にどこかで落とせないんでしょうか?
今週中には修正しないといけないため、時間がなくてとても取り寄せてる時間もないっす(´Д`)
941デフォルトの名無しさん:03/07/29 20:50
>>940
MSDNサブスクライバダウンロードはつかえないのけ?
それ以前に、SDKって普通にダウンロードできなかったっけ?
>>941
ばかでかいけど普通に落とせる
943デフォルトの名無しさん:03/07/29 21:04
もはや馬鹿でかいとは感じなくなったな。
>>935
NT系のみ
まあMeのサポートが切れたらそれもありかな
945デフォルトの名無しさん:03/07/30 07:03
WinAPIのみでODBCアクセスしたいのですが参考になるサイトありませんでしょうか?
>>940
引数と関数名が分かってるなら、
ヘッダファイルは自作、
ライブラリはDLLを動的に呼び出せばいいと言ってみるてすつ
userenv.h
BOOL WINAPI GetUserProfileDirectoryA(HANDLE hToken, LPSTR lpProfileDir,LPDWORD lpcchSize);
BOOL WINAPI GetUserProfileDirectoryW(HANDLE hToken, LPWSTR lpProfileDir,LPDWORD lpcchSize);

userenv.def
LIBRARY USERENV.dll
EXPORTS
_GetUserProfileDirectoryA@12
_GetUserProfileDirectoryW@12

みたいにdefファイルからlib生成すればいいんでないか?
ピクチャコントロールにラインを描画して、そのラインをマウスクリック
で捕まえて,マウスドラッグで移動させたいんですが、
ラインの描画にはどの関数を使えばよいのでしょうか。
ただラインを描くだけだとアニメーションさせにくいと思うのですが。。。
>>948
MoveTo
LineTo

VB厨か?
950デフォルトの名無しさん:03/07/30 10:07
>>948
そりゃ普通にMoveTo()、LineTo()じゃないのか?
951デフォルトの名無しさん:03/07/30 10:07
イヤンかぶった。
952948:03/07/30 11:12
>>949,950
ありがとうございます。
やってみます。
>>950
次スレよろ
954940:03/07/30 13:58
どうにかSDKのダウソサイトハケーンしますた。
最新版で500Mらしい・・・(´Д`;)
あと、DLLを呼び出すライブラリの作り方は非常に参考になりました。
ありがとうございました。
955デフォルトの名無しさん:03/07/30 16:07
>>953
ゴメン。できない。>953可能ならヨロ。
956953:03/07/30 16:16
建てますた

Win32API質問箱 Build13
http://pc2.2ch.net/test/read.cgi/tech/1059549320/
957デフォルトの名無しさん:03/07/30 18:55
こんなに見えちゃってヤバクない???
抜いても抜いても また勃起しまくり・・・
 ↓ ↓ ↓

☆★☆★ 海外サイトだから安心無修正 ★☆★☆
http://upbbs.s2.x-beat.com/linkvp/linkvp.html
http://upbbs.s2.x-beat.com/linkvp/linkvp.html
☆★☆★ 本気汁丸出しのお○○こが! ★☆★☆
958デフォルトの名無しさん:03/07/30 21:28
>>WinAPIのみでODBCアクセスしたいのですが参考になるサイトありませんでしょうか?
http://homepage1.nifty.com/kojama/works/rdbms/conn.html
ここは、ODBC3
ばば ODBC 検索 は2のコード
>>958
さんきゅーさー
面倒そうなのでMFCのほうを使うことにしました。
参考になりました。
960デフォルトの名無しさん:03/08/01 00:26
非MFCのGUIアプリから、MFC DLLを呼び出す方法ってない?
おしえてください。
MFCなCOMのEXEでも経由すれば?
MFC.DLL の何を呼び出すんだ?
普通にできるよ。
964デフォルトの名無しさん:03/08/01 23:34
標準DLLにして、おまじないを唱えたら大丈夫でした。
ども。
965山崎 渉:03/08/02 02:03
(^^)
ドロップダウンリストで初期状態ではリストの中にない文字列を表示して
おきたいんですけど、それってサブクラス化しないで出来ます?
ユーザからは編集不可のコンボボックスって感じです。
出来る。
どうやればできます?
ドロップダウンリストにしちゃうと、SetWindowTextとかやっても
何も表示してくれないんですけど。
ドロップダウンリストじゃ無理でしょ。
リスト中にないと。
970532:03/08/04 11:30
できました。ありがとうございました。
オーナードローすればいーんじゃないの?無理かな?
972デフォルトの名無しさん:03/08/06 22:26
972
973デフォルトの名無しさん:03/08/07 10:31
埋め
974デフォルトの名無しさん:03/08/07 10:40
975デフォルトの名無しさん:03/08/07 11:53
おじゃまします。宣伝スマソ。

みんなで日ハム−オリックス戦を満員にしよう
8月11日(月)東京ドーム18:00〜
http://off.2ch.net/test/read.cgi/offmatrix/1059573009/
まとめサイト
http://takemetotheballgame.hp.infoseek.co.jp/

おじゃましました。
977デフォルトの名無しさん:03/08/07 13:10
生め
978_:03/08/07 13:14
979デフォルトの名無しさん:03/08/07 13:19
宇目
980デフォルトの名無しさん:03/08/07 13:57
産め
梅図
982デフォルトの名無しさん:03/08/07 14:56
膿め
藻前ら、スレの埋め立てでageるなよ
984age:03/08/07 15:07
age
次スレ誘導うめうめ。

Win32API質問箱 Build13
http://pc2.2ch.net/test/read.cgi/tech/1059549320/
んじゃ 1000までWin32APIで「しりとり」でもしようかのう。

CreateWindowEx →
987デフォルトの名無しさん:03/08/07 16:01
XcvOpenPort() ->
988デフォルトの名無しさん:03/08/07 16:02
TextOut ->
989デフォルトの名無しさん:03/08/07 16:03
tapiGetLocationInfo() ->
XactAttributeEnum
991デフォルトの名無しさん:03/08/07 16:06
>>990
遅い。w
OEMDeviceCapabilities() ->
993990:03/08/07 16:07
すまん。
OpenDesktop→
OpenPeinter
盛大にケコーン
>>993
またしても遅い。w
>>992から
ScrollConsoleScreenBuffer
RpcAsyncInitializeHandle() ->
EnumWindows() ->
SendMessageCallback() ->
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。