■過去ログ置き場に戻る■ 1- 前250 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

Win32API【2】
251 名前:デフォルトの名無しさん :02/01/06 13:13
というわけで変更したかったらサブクラス化すれ。

252 名前:デフォルトの名無しさん :02/01/06 13:24
>>248
Win3.1+MMEの頃からミキサはmmsystem

253 名前:デフォルトの名無しさん :02/01/06 14:26
>>249
WH_CBTでもできるかもしれない。

254 名前:249 :02/01/06 15:41
>>250 >>251 >>253
サブクラス化することによって望みの動作になりました。
ありがとうございました。

255 名前:デフォルトの名無しさん :02/01/06 19:42
環境変数の設定方法を教えてほしいんですが。

256 名前:デフォルトの名無しさん :02/01/06 19:44
それだけじゃ教えようがありません。
もっと解るように質問してよ。

257 名前:255 :02/01/06 19:51
すみません。
Windows95ですが、環境変数をプログラムから設定する
APIを教えてください。

258 名前:デフォルトの名無しさん :02/01/06 20:08
>>248 SDKのAPIじゃないけれどmmsystemも含めてDirectSoundは良いよ

259 名前:デフォルトの名無しさん :02/01/06 20:10
環境変数って、どの?

自分のプロセスのなら SetEnvironmentVariable だけど、
すべてのプロセスのなら RegSetValueEx だな。 (藁

ただしすべてのプロセスの環境変数は、次回再起動時から有効。(当然)

260 名前:255 :02/01/06 20:57
>>259
自分のプロセスのほうです。
ありがとうございました。

261 名前:デフォルトの名無しさん :02/01/07 07:42
>>259
環境がWin95ならautoexec.batに書くんじゃないの?

262 名前: デフォルトの名無しさん :02/01/08 00:11
DOSプロンプト画面からプログラムを起動した場合、
そのプロンプトに文字を出力する方法ってどうするのでしょうか?

AllocConsoleだと別のコンソールウィンドウ作成するし、
何かいい方法はないモノでしょうか

263 名前:デフォルトの名無しさん :02/01/08 07:20
WriteConsoleとGetStdHandleではいけないのか?

264 名前:262 :02/01/08 11:53
>>263
それだけだと、どこにも文字が表示されなかったんですよ。
で、AllocConsoleを使ったら、別のコンソールウィンドウが
作成されてそちらに文字表示されてしまいますし。

起動元のDos画面のstdoutを取得する方法がわかれば
いいんですが・・・

265 名前:デフォルトの名無しさん :02/01/08 12:10
subsystem:consoleで解決する?

subsystem:windowsで、コマンドプロンプトから起動した場合のみ、
そのコマンドプロンプトを利用してWriteConsoleする、ショートカット等
から、起動した場合、コマンドプロンプトは表示も利用もしない、という
事なら、やり方はわからないなー。

266 名前:デフォルトの名無しさん :02/01/08 12:23
isatty(fileno(stdout))は効かんのか?

267 名前:266 :02/01/08 12:38
あ、勘違い。忘れてくれ。

268 名前:262 :02/01/08 18:54
やりたかったのは、コマンドプロンプトから起動した場合、
コマンドプロンプトに文字を出力し、ショートカットなど
から起動した場合はウィンドウを作成して処理をする
方法です。

素直に処理する方法ってなさそうですね。
あきらめてウィンドウで処理するようにするか・・・

269 名前:デフォルトの名無しさん :02/01/09 02:04
メニューに影をつけるにはどうすればいいんでしょうか。

270 名前:デフォルトの名無しさん :02/01/09 02:27
ちょっと部屋の電気を暗くする

271 名前:デフォルトの名無しさん :02/01/09 15:30
MAX_PATH超えるファイル名を扱う時ってどうすりゃいんだろ。
何か長さの目安ってある?

272 名前:デフォルトの名無しさん :02/01/09 17:46
単純にMAX_PATHでぶったぎったらあかんの?
それ以上の長さのファイル名が扱えても意味ないでしょ?

273 名前:271 :02/01/09 17:49
まあ、MAX_PATH超えるといろんなアプリで不都合出るからねえ……。

274 名前:デフォルトの名無しさん :02/01/09 18:19
つーか、越えてるやつはシステムも扱えないんじゃないか?

275 名前:271 :02/01/09 18:49
NTFSでは超えるものもある模様。
ネットワークパスがらみか

276 名前:デフォルトの名無しさん :02/01/09 19:50
>271

漏れも最近やったばっかり。
NTでは各フォルダ毎にMAX_PATH文字使えるから、
フルパスにするとMAX_PATHは軽く超える。
NT系なら、FAT32でも使えるとか言う話も聞いた。
9xでは、フルパスでMAX_PATHまでしかファイルが作れない。
#拡張子分は別みたいで、実際には260文字までOKみたい

CreateFile()で、
ローカルパスなら"\\?\"
ネットワークパスなら"\\?\UNC"
をつけることでMAX_PATH以上のファイルを扱える。
Win9xでは使えないので、OSによって切り替えないとダメ。

277 名前:デフォルトの名無しさん :02/01/09 21:00
>>276
その "\\?\" ていうの、Unicode版のAPIじゃないとダメとか書いてなかった?そんな気がする

278 名前:デフォルトの名無しさん :02/01/10 12:52
MSDNにちゃんと出てるよ。だいたい32000ってのはUNICODE_STRING
の制限と思われ(DDK参照)。
http://msdn.microsoft.com/library/en-us/fileio/filesio_7wmd.asp
> Windows NT/2000/XP: In the ANSI version of this function,
> the name is limited to MAX_PATH characters. To extend this
> limit to nearly 32,000 wide characters, call the Unicode version
> of the function and prepend "\\?\" to the path. For more
> information, see File Name Conventions.

ところでコモンダイアログとかはMAX_PATHを超えるファイル名に
ちゃんと対応してるの?

279 名前:デフォルトの名無しさん :02/01/10 13:36
SDKでコモンダイアログのカスタマイズをするには
どうすればいいですか。
例えばファイル選択のダイアログに文字コードなどの
選択を出来るようにしたいのです。

280 名前:デフォルトの名無しさん :02/01/10 18:34
>>279

例えばGetOpenFileName()なら、
OFN_ENABLETEMPLATEを使えばよいかと。

281 名前:279 :02/01/11 00:16
>>280
ヒントをどうも。
lpTemplateNameで追加するダイアログを指定
してやればいいのですね。

282 名前:デフォルトの名無しさん :02/01/11 01:19
>>281
その言葉だと微妙に違う気もするが、
まぁヘルプ読みつつサンプル漁りつつ色々試しつつやってみれ。

283 名前:デフォルトの名無しさん :02/01/14 14:36
厨な質問でスマムが、
ディスプレイの解像度を低くした後、それを元の解像度に戻すと、
デスクトップのアイコンがタスクバーの下まで突き抜けてしまうんだけど、
これを正しく整列させたい場合はどうすれば良い?

# デスクトップにUpdateWindowをかけたけどうまくイカナカターヨ

284 名前:デフォルトの名無しさん :02/01/14 15:15
>>283
ArrangeIconicWindows(GetDesktopWindow())とか。

285 名前:283 :02/01/14 15:56
thx。やってみる

286 名前:キャット :02/01/15 21:04
VB初心者質問スレ Part5 から飛んできた。
VBじゃなく、SDKなのにVBで質問してしまってたからここで改めて。

よくあるソース

LRESULT CALLBACK WndProc(HWND 省略){

 HDC hDC;
 PAINTSTRUCT ps;
 char *str = "abc";

 switch (msg){
 case WM_PAINT:
  hDC = BeginPaint(hWnd, &ps);
  TextOut(hDC,0,0,str,3);
  EndPaint(hWnd, &ps);
 break;

287 名前:キャット :02/01/15 21:07
↑これは

 HDC hDC;
 PAINTSTRUCT ps;
 char *str = "abc";

が何度も実行されるから無駄がある。

LRESULT CALLBACK WndProc(HWND 省略){

 switch (msg){
 case WM_CREATE:
  HDC hDC;
  PAINTSTRUCT ps;
  char *str = "abc";
 break;
 case WM_PAINT:
  hDC = BeginPaint(hWnd, &ps);
  TextOut(hDC,0,0,"abc",3);
  EndPaint(hWnd, &ps);
 break;

とした方がいいと思ったけど、こういうソースを
見かけないのはどうして?

元ネタは
http://pc.2ch.net/test/read.cgi/tech/1010624646/-100
の87。

288 名前:デフォルトの名無しさん :02/01/15 21:17
「WM_LButtonDown → WM_MouseWheel」にメッセージを置き換えるとき
(つまり、"左ボタン押下"を"ホイール回転"とするとき)

wParam ← MakeWParam(0, ±WHEEL_DELTA)
lParam ← lParam  # 座標は変わらず

で、問題ありますか? マウスホイールのエミュレート的に

289 名前:デフォルトの名無しさん :02/01/15 21:20
>>286-287
> HDC hDC;
> PAINTSTRUCT ps;

これはただ変数を「宣言」するだけであって、何か実行するような文じゃない。そういう無駄は生じない。

> char *str = "abc";

まぁこれについては言いたいことがわからないでもないが、でも普通は最適化で消えて無くなる。

> case WM_CREATE:
>  HDC hDC;
>  PAINTSTRUCT ps;
>  char *str = "abc";
> break;
> case WM_PAINT:
>  hDC = BeginPaint(hWnd, &ps);
>  TextOut(hDC,0,0,"abc",3);
>  EndPaint(hWnd, &ps);
> break;

str には何の意味が?

290 名前:デフォルトの名無しさん :02/01/15 21:27
>>286
その書き方でもウィンドプロシージャが呼ばれるたびに
> HDC hDC;
> PAINTSTRUCT ps;
が実行(というか変数領域がスタックに確保)されると思うが?
なんか根本的に勘違いしてないかな。

291 名前:キャット :02/01/15 21:38
それはつまりウィンドプロシージャが呼ばれるたびに
case WM_CREATE
が実行されるということ?

292 名前:デフォルトの名無しさん :02/01/15 21:55
くそ迂闊、なんか変だとは思ったけど…
>>291
それ以前にそのソースコード、コンパイル通るのかよ!?

switch 内で変数宣言するなら、
switch(n) {
case 0:
 {
  int i;
 }
 break;
}
ってブロック化しないと駄目違うか?
当然この場合、他の case からは見えなくなる。
API以前のレベルなんで、Cの初歩質問スレ逝け。

293 名前:デフォルトの名無しさん :02/01/15 21:58
>>291
なんでやねん!
つーか、どの返答に対する質問なんだ?

294 名前:キャット :02/01/15 21:59
289さんありがとう。
無駄は生じないというのは、1回しか実行されない
ではなく、
case WM_CREATE: が実行されるたびに HDC hDC; とかも
実行されるけど、HDC hDC; は「宣言」するだけだから
何度実行されても処理が重くなることはない
ということですか?
どっちの理由で無駄がないんですか?


最適化で消えて無くなる
とは、BBC32 でのコンパイル時に、

 case WM_CREATE:
  HDC hDC;
  PAINTSTRUCT ps;
  char *str = "abc";
 break;



char *str = "abc";
 case WM_CREATE:
  HDC hDC;
  PAINTSTRUCT ps;

 break;

してくれるってこと?
str は TextOut(hDC,0,0,str,3); でした。
書き間違えてました。

295 名前:292 :02/01/15 22:02
ゴメン事故レス、C++ならコンパイル通るな。
でもAPI以前というのは変わらないと思うんでそれ系のスレ逝くか、
優しい方に教わってください。

296 名前:キャット :02/01/15 22:14
そうそう、俺も試したんだけどコンパイルが通るんだ。

まー、それにしても、

 case WM_CREATE:
  HDC hDC;
  PAINTSTRUCT ps;
  char *str = "abc";
 break;

なソースは見たことないから、

  HDC hDC;
  PAINTSTRUCT ps;

は、よくあるソースのように WinProc( ) の直下に
書いた方がいいみたいだけど、何度も実行されるようで
ちょっと気になるんだよなー。

297 名前:デフォルトの名無しさん :02/01/15 22:20
あのなー。いいか。HDCもPAINTSTRUCTも単純型だろうが。
どこへ持っていこうと、関数突入時に確保される自動変数の
サイズが変わるだけだろうが。

Win32で、 sub esp,10とsub esp,100の違いがあるか、っちゅうねんな。

298 名前:デフォルトの名無しさん :02/01/15 23:28
>>294
> 無駄は生じないというのは・・・

変数宣言に対して「実行する」とか「何回実行する」という考え方を捨てて下さい。宣言は、ただ宣言するだけであって、何も実行しません。
制御がその部分を通過するかどうか、まったく関係ありません。

> 最適化で消えて無くなる

つまり
const char* str = "abc";
TextOut(hDC,0,0,str,3);
これは
TextOut(hDC, 0, 0, "abc", 3);
になるだろう、ということです。まぁこれに関しては最適化の度合いにも依るんで、一概には言えませんが。


んで、ですね。本題(なのか?)に入ると、

> case WM_CREATE:
>  HDC hDC;
>  PAINTSTRUCT ps;
>  char *str = "abc";
> break;
> case WM_PAINT:
>  hDC = BeginPaint(hWnd, &ps);
>  TextOut(hDC,0,0,str,3);
>  EndPaint(hWnd, &ps);
> break;

これですが、ダメです。
str は WM_CREATE を最初に通ったときに "abc" で初期化されますが、関数 WndProc を抜けたときに消え去ります。
次に WndProc に来たときには、str は前の値を覚えていません。
WM_PAINT を受け取ると、switch-caseのジャンプで飛び越されるため str は初期化されずゴミ値になります。

299 名前:デフォルトの名無しさん :02/01/15 23:36
補足。
変数というのはふつう、関数内で使う変数の同時最大使用サイズを計算して、関数に突入するときにそのサイズを一括確保するものです。
理解の助けになれば。

300 名前:キャット :02/01/16 01:52
>>298
>>299
ありがとう。
もう少しで納得できそう。
なぜかコンパイルができなくなってしまった。
ゴミ箱あさってコンパイルが成功した時のソースを
探してみます。

case でローカル変数の初期化がとばされた

301 名前:キャット :02/01/16 02:08
できたー。
納得しました。ありがとう。

302 名前:デフォルトの名無しさん :02/01/16 02:09
おいおい、C++だろうがswitch内で初期化はできないだろ。

303 名前:デフォルトの名無しさん :02/01/16 02:13
すたてぃーく変数使えばいいじゃん。

304 名前:デフォルトの名無しさん :02/01/16 02:21
>>288
スカートめくりたい人ハケーソ。
とりあえずどういう方法で置き換えやろうとしてる?

305 名前:デフォルトの名無しさん :02/01/16 07:10
>>302
C++では初期化を飛ばすことは出来ません(コンストラクタの問題があるゆえ)が、
C では出来たんじゃないっけ? 間違ってたらゴメソ。

306 名前:デフォルトの名無しさん :02/01/16 07:37
C++の、たとえばポインタに、コンストラクタありましたっけ?

307 名前:デフォルトの名無しさん :02/01/16 09:02
そういえば、スコープで囲めばcase内でも初期化できるけど
あれってどういう仕組みなんでしょう?やっぱり行儀悪いのかな…

308 名前:デフォルトの名無しさん :02/01/16 09:35
>>262
XPでしか使えないけどAttachConsoleというのがある。
http://msdn.microsoft.com/library/en-us/dllproc/conchar_9b6t.asp

309 名前:デフォルトの名無しさん :02/01/16 10:38
どんどんスレ内容からズレてきたな

310 名前:デフォルトの名無しさん :02/01/16 15:55
SDKがなくなってることねーか?
.NETが出たから取りあえずSDK無料配布はおしまいとかそんなんだったらやだな

311 名前:デフォルトの名無しさん :02/01/16 17:41
心配な奴は今のうちにGETしておけ
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/

312 名前:デフォルトの名無しさん :02/01/16 17:43
>The Platform SDK Update site is temporarily out of service.
>We apologize for the inconvenience.
>Platform SDK CDs are available from

313 名前:デフォルトの名無しさん :02/01/16 17:48
ん? ちゃんとインストールの画面に進めるぞ?
キャッシュ見てるのか? < 漏れ

314 名前:312 :02/01/16 17:51
すまそ。漏れがキャッシュみてた

315 名前:デフォルトの名無しさん :02/01/16 17:56
そろそろ.NETやらんとまずそうだな

316 名前:デフォルトの名無しさん :02/01/16 18:01
>>306
組み込み型にもコンストラクタはあるけど、明示的に呼ばないと実行されないよ。

typedef void *T;
p = T();

元の話題とは全然関係ないけど。

317 名前:デフォルトの名無しさん :02/01/16 19:50
>>305
> C++では初期化を飛ばすことは出来ません(コンストラクタの問題があるゆえ)が、
> C では出来たんじゃないっけ? 間違ってたらゴメソ。
“初期化”をどう捉えるかで微妙ですが。
C++ではswitch内で宣言する変数が単純型ならコンパイル通ります。
(構築子が定義された型では駄目)
switch (msg){
case WM_CREATE:
 HDC hDC;
 PAINTSTRUCT ps;
 char *str;
 str = "abc";
 break;
case WM_PAINT:
 hDC = BeginPaint(hWnd, &ps);
 TextOut(hDC,0,0,str,3);
 EndPaint(hWnd, &ps);
 break;


Cではだめぽ。
Cでは変数の宣言はブロックの先頭でのみ可能なので。
敢えて書き換えるなら、
switch (msg){
 HDC hDC;
 PAINTSTRUCT ps;
 char *str;
case WM_CREATE:
 str = "abc";
…キモイコード

キャットさんの勘違いを指摘するなら以下の二点。

・WM_CREATEを処理する際にstrへ"abc"を代入しても、
WM_PAINTを処理する際にはstrの値は初期化されない不定値となる。
(どなたかが逝っていたようにstatic変数にすれば別だけど)

・上記コードでWM_PAINTを処理する際にもローカル変数hDC、ps、strの領域確保は行われる。

どちらも初歩的というのも恥ずかしいCの構文の話なので、
APIどうこう以前にCの初歩から復習する方が良いと思われ。

318 名前:キャット :02/01/17 02:48
ありがとうございます。

コンパイルできたのは間違いないけど、それ以降は
コンパイルができていなかった。
そうそう、301で、できましたーって書いた時は
char *str;str = "abc";
としてコンパイルしました。
char *str = "abc";
ではコンパイルできなかったから。
でも、一番最初にコンパイルが成功した時は
char *str = "abc";
と書いていたはずだったけど、気のせいだったのかなー?

319 名前:デフォルトの名無しさん :02/01/17 03:11
エディットボックス内の文字の配色をしていするには
どうしたらいいんですか?
例えば、
SetWindowText(hWndEDIT, "ああ");
これでエディットボックスに文字を送ると
エディトボックスの背景色が灰色でも、
エディットボックス内の文字の色は白になります。
オーナードローとか使わなくて、スマートに色を指定する
方法があれば知りたいです。

320 名前:デフォルトの名無しさん :02/01/17 05:21
フォルダの縮小表示の見せ方をVBのForm上で実現したいと考えています。
Webのイメージを縮小して取り込む目的で考えています。

VBでWebコンテンツを表示させるには「webBrowser」というオブジェクト命令があり
ますが、これをForm上に複数個配置して動作させると、1つ1つのBrowser領域が狭いため、
Webの左上のみ表示され、残りはバーでスライドという形になっちゃいます。
設定で全体が表示させられるようになるのかといろいろ調べましたが、うまく表示さ
せられませんでした。

フォルダはその多くの機能を「リストビュー」というオブジェクトで作られている事
がわかりました。
しかし、リストビューにはどうやら「縮小表示」させる機能はないらしく、これもう
まくいきませんでした。

この「縮小表示」どうすれば実現できるのでしょうか?

321 名前:デフォルトの名無しさん :02/01/17 05:45
<img href="...">的なタグを自動生成して IEコンポーネントにぶち込む感じで。
hta(≠html) ファイルとかその周辺を探ること。

322 名前:デフォルトの名無しさん :02/01/17 06:04
>319
リッチエディットコントロールはつかってる?



323 名前:デフォルトの名無しさん :02/01/17 06:46
エディットボックス内の文字の配色を指定するには?

リッチエディットコントロールっていう言葉は初めて聞きました。
まだまだ初心者です。

324 名前:ほたる :02/01/17 06:53
コンパイルできません。エラー文は↓
グローバルスコープで中カッコ ({) が見つかりましたが、
対応する関数ヘッダーがありません。」


LRESULT StaGrpDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
if ( message == UWM_DRAWFITNESS )
{
DrawState();
}
return CDialog::WindowProc(message, wParam, lParam);
}
BOOL StaGrpDlg::OnInitDialog();
{
CDialog::OnInitDialog();
m_State.GetClientRect( &rectState );
m_OKBtn.GetClientRect( &rectOKBtn );
return TRUE;
}
void StaGrpDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
RECT rc;
if ( cx != 0 )
{ rectState.right = cx - 2;
rectState.bottom = cy - 62;
}
m_State.MoveWindow( &rectState,FALSE );
OrgX = 0; OrgY = 0;
cWidth = rectState.right - rectState.left;
cHeight = rectState.bottom - rectState.top;
int dw = rectOKBtn.right - rectOKBtn.left;
int dh = rectOKBtn.bottom - rectOKBtn.top;
rc.left = rectState.right - dw; rc.top = rectState.bottom + 5;
rc.right = rc.left + dw; rc.bottom = rc.top + dh;
m_OKBtn.MoveWindow( &rc,FALSE );
Invalidate();


325 名前:ほたる :02/01/17 06:56
グローバルスコープ??
関数ヘッダー??
こんなん一週間でできるようになれっていうの・・・。


326 名前:ほたる :02/01/17 06:58
どうやら  BOOL StaGrpDig・・・の下の中括弧に問題がある
らしいです??


327 名前:デフォルトの名無しさん :02/01/17 07:12
>>326
その前の行の最後を見てみ。余計なものがくっついてないかい。

328 名前:ほたる :02/01/17 07:18
ああぁー!!!!!
いらないの→;
気づきませんでしたー(涙)
ほんとにありがとうございます。


329 名前:デフォルトの名無しさん :02/01/17 10:15
MacのAllocContigみたいに、
ディスク上の連続した領域を予約する機能はありますか?

330 名前:デフォルトの名無しさん :02/01/17 10:19
>>328
おいお前!
マルチポスト先にも報告しといてください。
つーかスレ違いなマルチポストするな子ね。

331 名前:デフォルトの名無しさん :02/01/17 11:28
エディットボックス内の文字の背景色を指定するには?

332 名前:デフォルトの名無しさん :02/01/17 12:29
>>331
リッチエディットという言葉の意味が分かってから来い。
さもなくば氏ね

333 名前:デフォルトの名無しさん :02/01/17 13:06
質問する前に最低限Petzolt本読め

334 名前:デフォルトの名無しさん :02/01/17 21:23
>>333
そんなに言うなら>>2に書け!

335 名前:デフォルトの名無しさん :02/01/18 00:01
> ただし、質問する前にまずMSDN読め。


336 名前:デフォルトの名無しさん :02/01/18 01:28
332 :デフォルトの名無しさん :02/01/17 12:29
>>331
リッチエディットという言葉の意味が分かってから来い。
さもなくば氏ね


333 :デフォルトの名無しさん :02/01/17 13:06
質問する前に最低限Petzolt本読め


334 :デフォルトの名無しさん :02/01/17 21:23
>>333
そんなに言うなら>>2に書け!


335 :デフォルトの名無しさん :02/01/18 00:01
> ただし、質問する前にまずMSDN読め。

↑おまえも知らんのか。
分からんなら書くなよ。
お前も俺と同じでエディットボックスの文字に対する背景色は
オーナードローとか使わないと白のままで変色できないなんだろー。
無能な初心者は黙っててね。
リッチエディットでできるならソース書いて見やがれ。
できないから書けないんだろー。
知ったかぶりの初心者にはあきれるよ。
俺もここで、リッチエディットとという言葉を知った。
お前と同じレベルになれたよ。

337 名前:デフォルトの名無しさん :02/01/18 01:33
厨房が逆ギレしてますコワイヨー
(((( ;゚Д゚)))ガクガクブルブル




(゚∀゚)アヒャヒャヒャヒャ

338 名前:(゚∀゚)アヒャ! :02/01/18 01:43
>俺もここで、リッチエディットとという言葉を知った。
正直、すごい。

339 名前:デフォルトの名無しさん :02/01/18 01:44
リッチエディット使う奴はDQN

340 名前:デフォルトの名無しさん :02/01/18 02:49
>>336
DQNを晒し上げ

341 名前:デフォルトの名無しさん :02/01/18 06:05
いつのまにかアホ自慢大会になっとる

342 名前:デフォルトの名無しさん :02/01/18 08:33
ファイルの関連付けで
WindowsMediaPlayerって
 例えば HKEY_CLASSES_ROOT\.wav にないですよね

 で、エクスクローラのファイルタイプタブ関連付で見ると
「拡張子がWAVのファイルはカスタマイズされました」 って出る

これってどうやってるの? 

WAVへの関連付をアプリから弄りたいんだけど なんかM$って勝手スギ!

343 名前:333 :02/01/18 10:30
>339

その言葉の前に「背景色を変更するのみの目的で」と付くのなら同意。
場合によるっしょ。

>336
っていうか早くpetzold本読め。それに答えが書いてあるんだよ。


344 名前:342 :02/01/18 17:28
お願いします。 色々調べたけど判りませんです

345 名前:デフォルトの名無しさん :02/01/18 19:06
ttp://member.nifty.ne.jp/endou/free/man/anterix/readme/e.htm

346 名前:342 :02/01/18 19:29
>>345  ありがとう。

でもそれじゃない方法で関連付けされてるから困ってるんです
たぶん他のプレイヤーインストールされた時に関連付けを
上書きされたくないからこんな事してるんだと思うんだけど

ああ、せめて キーワードだけれでも判ればなんとか探すんだけど

347 名前:デフォルトの名無しさん :02/01/18 19:59
それじゃないほうほう、ってじゃ、.wavには何が書いてあるのさ。

348 名前:342 :02/01/18 21:13
>>347
 今は .wav に WinAMPが入ってる
 なのに、WindowsMediaPlayer7は そいつを無効にして居座ってるわけ
 で、それはどうやってるのかなと

実は右ボタンメニューにチョコッと入れたいだけなんだけど WMPが入ってるとダメなんだ

せめて、WMPが無効にしてるかどうかのフラグだけでも欲しいなと

349 名前:デフォルトの名無しさん :02/01/19 00:47
>348
WMPがコンテキストメニューハンドラを用意しているとか?
環境が違うのでなんとも言えないけど。
.wavのクラス(SoundRecか?) -> shellex-> ContextMenuHandlers
以下に何かあるかも。

350 名前:322 :02/01/19 03:03
>336
>リッチエディットでできるならソース書いて見やがれ。

http://www.edu.ics.saitama-u.ac.jp/~j769jb/c_lang/sdk2/sdk_139.htm

それとも純粋に文字の部分の背景だけの色変えたいのか?


351 名前:デフォルトの名無しさん :02/01/19 04:47
もしかしてタブコントロールのタブ切り替えってDlgItem群を手動で表示/非表示してるんですか?

352 名前:342 :02/01/19 08:32
あれから判った事です
Windows2000では
 エクスクローラのファイルタイプタブに [変更]というボタンがあり
 また、xx.wavをマウス右ボタンで出すプロパティにも アプリケーションxx[変更] と
 いうボタンがあります。
 これを押して アプリケーションを選ぶと
>>342 の状態になり
   HKEY_CLASSES_ROOT\.wav とは関係なく
 関連付け状態になるようです

これって何っていう機構?

 とりあえずレジストリを全部保存して変更前後で比較するしかないか・・

353 名前:デフォルトの名無しさん :02/01/19 10:05
>>351
Spy++で観察してみれ。

354 名前:デフォルトの名無しさん :02/01/19 16:22
すいません
コマンドプロンプト実行型のプロジェクトをデバッグする
方法教えてください


355 名前:デフォルトの名無しさん :02/01/19 17:43
window版のプロジェクトをデバッグするのと同じように
やればいいと思いますよ。

356 名前:デフォルトの名無しさん :02/01/19 18:49
すみません、教えてください、
Win32コンソールアプリケーションのプロジェクトを作って、
WNetGetNetworkInformation()
WNetGetResourceInformation()
とかのネットワークAPIを使おうとするとコンパイルエラー
「C2065: 'WNetGetResourceInformation' : 定義されていない識別子です。」
やら、リンクエラーが出るのですが、なぜでしょう?
「error LNK2001: 外部シンボル "_WNetGetNetworkInformationA@8" は未解決です」

357 名前:デフォルトの名無しさん :02/01/19 19:01
>>356
適切なヘッダをインクルードして適切なライブラリとリンク。

358 名前:デフォルトの名無しさん :02/01/19 19:08
>>355
駄目ですね、引数も指定してるのですが、瞬時に終了しちゃいます。
(一瞬コマンドプロンプトが立ち上がってすぐ閉じる)


359 名前:デフォルトの名無しさん :02/01/19 19:08
WNetGetNetworkInformation()は、mpr.libリンクしてとれました。(お恥し)
WNetGetResourceInformationは、winnetwk.hをインクルードしても駄目、なぜでしょ?

360 名前:デフォルトの名無しさん :02/01/19 19:14
VC++ならステップインでデバッグを開始すればいいと思いますよ

361 名前:デフォルトの名無しさん :02/01/19 19:19
>>360
親切な方だ・・・しかも教え方がやさしい
ありがとうございました。ステップインで解決です


362 名前:デフォルトの名無しさん :02/01/19 19:25
>>359
http://www.google.co.jp/search?q=cache:zNcplg7Z-fUC:mfc.acty-net.ne.jp/ml/mfc/00036560.shtml+WNetGetResourceInformation&hl=ja&lr=lang_ja

363 名前:デフォルトの名無しさん :02/01/19 19:37
359です、レスありがとうございます>>362
がっ!文字が化けて読めないのですが・・・

364 名前:デフォルトの名無しさん :02/01/19 19:41
>>363
ブラウザの使い方から勉強すれ。

365 名前:デフォルトの名無しさん :02/01/20 01:34
CompareStringを使って文字列の検索をしているのですが
あまり早く検索できません。メモ帳などはどのようなやり方で
検索しているんでしょうか。

366 名前:デフォルトの名無しさん :02/01/20 18:33
メモリダンプのアプリを作ってます。
BOOL ReadProcessMemory(
HANDLE hProcess, // プロセスのハンドル
LPCVOID lpBaseAddress, // 読み取り開始アドレス
LPVOID lpBuffer, // データを格納するバッファ
DWORD nSize, // 読み取りたいバイト数
LPDWORD lpNumberOfBytesRead // 読み取ったバイト数
);
このAPIを使うって所までは進めたんですが、第二引数と第四引数の
「読み取り開始アドレス」と「読み取りたいバイト数」を、
プロセスのハンドルあたりから調べるのって、どうやったらいいのでしょうか?

367 名前:デフォルトの名無しさん :02/01/20 20:25
>>366
VirtualQueryEx

368 名前:366 :02/01/20 20:49
>367
ありがとうございます。
MSDNライブラリの解説読んでも、いまいちよくわからないという情けない状態ですが
気合で試行錯誤してみようと思います。ありがとうございました。

369 名前:デフォルトの名無しさん :02/01/22 10:24
質問です。
CreateCompatibleBitmap() で作ったビットマップと
CreateCompatibleDC() で作った(直後の)デバイスコンテクストを
SelectObject() で関連付け?ました。

この SelectObject() の戻り値も保存しておいて、DeleteDC する前に
元に戻してあげなければいけないんでしょうか?
というか、この時の戻り値は何を指してるんでしょう?


370 名前:デフォルトの名無しさん :02/01/22 11:54
>>369
http://www.microsoft.com/japan/developer/library/jpgdipf/_win32_selectobject.htm


371 名前:369 :02/01/22 13:07
>>370
ありがとうございます。でもこの「既定オブジェクト」っていうのが
イマイチなんなのかわからないんです。

CompatibleDC を作った直後に選択されている既定のビットマップとは?
一体何者でしょう?


372 名前:デフォルトの名無しさん :02/01/22 21:17
DeleteDC する場合は、復元しなくても良いです。

373 名前:デフォルトの名無しさん :02/01/22 21:24
>>371
SelectObjectで新しいオブジェクトを選択すると、それまでDCに選択されていたオブジェクトが戻り値として返されます。
元のオブジェクトを復元しなきゃならないのは、

・同じオブジェクトを複数のDCに選択することは出来ない
・DCに選択されているオブジェクトは削除出来ない

という事情で、オブジェクトはDCから選択解除しておかないと後々困るものでして、
しかしSelectObjectでNULLを指定して選択解除することは出来ないので、
自分のオブジェクトを選択解除するために元のオブジェクトを選択するわけです。
・・・わかりにくい日本語だけど、わかり?

374 名前:デフォルトの名無しさん :02/01/22 21:26
CreateCompatibleDC()を実行したときはモノクロ(白黒2色)で1ピクセル×1ピクセルの表示面をもっている。
SelectObject()を実行したときの返り値はこのビットマップハンドル。


375 名前:374 :02/01/22 21:37
>372

復元しなくていい具体的な理由とか、その情報のソース教えてもらえないでしょうか?
372さんの言われるとおりシルト本なんかだとビットマップのハンドルは復元をしてないんですが、前から理由がわからず気になっていたので。




376 名前:デフォルトの名無しさん :02/01/22 22:01
「同じオブジェクトを複数のDCに選択することは出来ない」のはビットマップだけかも。

>>375
んー。MSのサンプルもそうしてるしなぁ。

377 名前:デフォルトの名無しさん :02/01/22 22:13
SelectObjectで戻すコードと
戻さないコードを書いて、ループでまわして、
win95あたりで実行する。リソース・メモリが
漏れているようなら、正しくない、というのはどう?

378 名前:374 :02/01/22 22:14
>372
そうですか・・・
私もMSのサンプルを漁ってみます。
ありがとうございました。


379 名前:376 :02/01/22 22:19
SelectObjectで復元しないとマズイのは、
選択解除しないとDeleteObject出来ないからで、
DeleteDCしたら必然的に選択解除されるわけだから、
わざわざ選択解除しなくて良い・・・と認識してる。
確固たる証拠は無い。

380 名前:デフォルトの名無しさん :02/01/24 01:20
Windows 2000 では、DC の中でまだ選択されている描画オブジェクト
(ペンまたはブラシ) を削除すると、DeleteObject 関数は失敗します。

ttp://www.microsoft.com/JAPAN/developer/windows2000/technologies/ac-platform/ac-objectdeletion.asp

381 名前:デフォルトの名無しさん :02/01/24 03:34
つーか削除不要というの自体が何かの間違いっぽい。
http://www02.so-net.ne.jp/~bkenro/publish/vbapi/errata.html#gen-1

382 名前:デフォルトの名無しさん :02/01/24 08:56
>>379 さんのような考え方をする人は、
プログラマに向いてないと思うよ。


383 名前:376 :02/01/24 20:04
うゅぅ。いくら探しても証拠が見つからない。
偽情報に騙されたのかな・・・。

>>382
プログラマに向いてないですか・・・
騙されたりしないようにもっと修行しますです。。

384 名前:デフォルトの名無しさん :02/01/26 02:44
LANGID を現在のユーザ言語(まぁ普通日本語ですね)で文字列に変換する
APIなんて無いですよね?
0x0411(LANDID) を与えると "日本語" が得られる、みたいな。

385 名前:デフォルトの名無しさん :02/01/26 07:35
>>384
GetLocaleInfo(MAKELCID(langID, SORT_DEFAULT), LOCALE_SLANGUAGE, buf, sizeof(buf));

386 名前:384 :02/01/26 15:16
>385 おぉ。Thanx!

387 名前:デフォルトの名無しさん :02/01/27 12:52
どうやれば HWND からそのウィンドウを作ったモジュール名を取得できるのでしょう?
GetModuleFileName() の HMODULE 項目に代入する値が分からないのですが…

388 名前:デフォルトの名無しさん :02/01/27 13:46
DupricateHandle使えばできるかな?無理だったけ?
俺がそうゆーことするときはたぶんToolhelpAPIを使っていまあるプロセス
全部を調べてGetWindowsThreadProcessIdで得たIdと比較させるっす。

389 名前:デフォルトの名無しさん :02/01/27 14:41
>>387
NT系ならEnumProcessModulesでもってこれる。
9x系はGetModuleFileNameじゃなくてProcess32Firstとか使うんだっけ?
とにかく、かなりめんどくさかったことしか覚えてねーや。
自分のファイル名なら素直にNULL突っ込んどくのが吉。

390 名前:デフォルトの名無しさん :02/01/27 14:50
GetWindowModuleFileName
こんなのあったけどどうだろ?
95だと使えないみたいだけど

391 名前:デフォルトの名無しさん :02/01/27 18:46
>>390
NT系では他プロセスのウィンドウのモジュールハンドルを取れない。
http://www.microsoft.com/japan/support/kb/articles/J048/2/24.asp
MSAAを使えるようにするためにでっち上げただけだと思われ。
http://www.microsoft.com/japan/support/kb/articles/JP241/5/35.asp

392 名前:デフォルトの名無しさん :02/01/27 21:30
>>387
重箱の隅をつつくようだけど、
「ウィンドウを作ったモジュール」なんて、あとから調べることは不可能だよ。
それがたとえ Win9x/ME であったとしても、だ。

せいぜいわかるのは
「ウィンドウを作ったプロセスの(EXE の)モジュール」
だよ。


多分、わかってると思うが念のため...。


393 名前:デフォルトの名無しさん :02/01/28 04:18
WinSockに関して説明したよいサイトはありませんか?

394 名前:デフォルトの名無しさん :02/01/28 15:53
おいっす!しばらくご無沙汰だったが頼むから何もいわずに
見て欲しいぜ。(です)

あーぁ!なんつったらいいのかなぁ、頼む、よろしく。

http://members.tripod.co.jp/navi_/0.jpg
〜1.jpg,,,,,15.jpg

この画像では半分も説明できてないんだけどさぁ、
今ちょっと頭てんぱってっからまたコメントする。
コメントは誰がなんっつっても絶対今度またするからな。よろしく。

金、ねーんだYO。



395 名前:デフォルトの名無しさん :02/01/28 15:55
おっせーなぁ、コメントまだかよ!(ですか?)

396 名前:デフォルトの名無しさん :02/01/28 16:03
んと、ぱっと見、UIが極悪。


397 名前:デフォルトの名無しさん :02/01/28 16:11
UIってなんですか?(わかんねーよぉ)
user interfaceかな、もう少し具体的に。

398 名前:デフォルトの名無しさん :02/01/28 16:17
ユーザーインターフェースって言葉、使い慣れないんですYO!
ボタンの配置とかは、クリックだけで追加削除変更できるように
なってるしなぁ、とにかく、きちんと説明するには今は点パリ
過ぎている。。。

399 名前:デフォルトの名無しさん :02/01/28 16:28
んじゃ、5.jpgのスケルトン作成を例に取ろうか。

要するに、「要らないものが多すぎる」って事さ。
ウインドウクラスなんて、てきとーに自動作成しときゃいいのに、
あんなに設定項目を出されたら、「ウッ」とくるわな。

400 名前:デフォルトの名無しさん :02/01/28 16:32
えっと一応なんだけど、画面一つ一つ機能を一つ説明してて、
えー、
0:色づけ(おまけ)
1:概観
2:検索
3:リソーススクリプト生成
4:生成されてスクリプト、ヘッダつき
5:32ビットスケルトン生成と生成されてソースの一部
(一切手を加えず即コンパイル化)
6:メニューリソーススクリプト(おまけ)
7:表示中ファイルの簡易コンパイル
8:関数一覧(飛べる)
9:クリップボード代わりのキャプチャ
10:コンパイラ設定(初心者には超面倒だから)
11:ドスコマンド(単一行)
12:11の実行例
13:同じく
14:ドスコマンド(マクロっぽい方)
15:実行例。
ほかにもあるしなぁ、複数ファイルは使えるし、
使い勝手も悪くない、ようにつくったつもりだしなぁ

あぁ、まだコメントがたりねー!

401 名前:デフォルトの名無しさん :02/01/28 16:34
>399
確かにね。一応初心者仕様でつくったから、
説明に、「わからないところはそのままでOK」の
ようなことを書くつもり。確かに。うん。
現に、わからなければ全部放っておいて大丈夫なように作ってある。
さんくす。

402 名前:デフォルトの名無しさん :02/01/28 16:38
あとねぇ、ボタンがいっぱい張り付いてるけど、
ジャンプ、挿入、DOS実行、DOS実行拡張版、
その他、が登録できる。それはクリックですぐできるのさ!

403 名前:デフォルトの名無しさん :02/01/28 16:58
モニター2〜3名募集
モニターの人には完成版をただであげます。
モニター版には変なデバッグ板とかついてて少し邪魔
だけど我慢してください。
気合のある人は書きこしてみてください。
初心者には便利(フリーコンパイラ仕様)


404 名前:デフォルトの名無しさん :02/01/28 17:02
言っとっけどかなり大変だったんだからな!
これでこれを作ったしな!一から。
最初はポインタもわかんなかったんだぞ!
だから俺は初心者の見方だ!(です)

405 名前:デフォルトの名無しさん :02/01/28 17:06
ツールバーの占めるべき位置に、
ボタンがベタベタひっついてるのは、
普通のWindowsアプリとはかけ離れてるなぁ。
激しく違和感を感じる。


406 名前:デフォルトの名無しさん :02/01/28 17:11
確かにね。ツールバーにしようかと
思ったんだけど、レバーコントロール覚えたて
だったからレバーにした。これはレバーだよ。。。

407 名前:デフォルトの名無しさん :02/01/28 17:14
あぁ、レス来るとありがたくってさ、
うざくて悪いけど、デフォルトではボタン2つ
(top)へジャンプ、(End)へジャンプ、だけなんだ。
レバーのとこで右クリックすると作れるんだ。
あとコンボボックスにはデフォルトでは
explorer.exeとか、mspaint.exeとかが入ってて選択すると
実行できるんだ。もちろんコンボボックスに書き入れても
えー、なんていえばいいのかな、Dosプロセスを実行できる。
でそれは記録される。(「設定」で削除もできる。)
ということなんだ。

408 名前:デフォルトの名無しさん :02/01/28 18:01
どんどんあげちゃってください。
追加
http://members.tripod.co.jp/navi_16.jpg
17.jpg,..19.jpg

初心者の人は0からみろ!つーか見てちょ
あぁ、、
17:(色ついてるけど)簡易インデント
あぁ、色は全文か、選択範囲があればそこだけ。({}と、””と()と、
/* */と//
18:プロセスも表示する。
19:バイナリビューア

叩いてくれ!是非!

409 名前:デフォルトの名無しさん :02/01/28 18:03
しまった!
http://members.tripod.co.jp/navi_/16.jpg

なにしろ久々なのでがんがんです。

410 名前:デフォルトの名無しさん :02/01/28 18:16
korede kanetorunoka

411 名前:デフォルトの名無しさん :02/01/28 18:19
そりゃもう少しビジュアル面見直して、
金は、取る。
確かになぁ、ボタンいっぱいついてるとちゃちくみえるよなぁ、
どうすっかなぁ、ボタン、あったほうが絶対便利なのは確か
だからさ。どーしたらいい?



412 名前:デフォルトの名無しさん :02/01/28 18:19
っつーかWin32APIと関係ないだろ。
自分でページ立ち上げるか、せめて別スレ立ててやってくれ。

413 名前:デフォルトの名無しさん :02/01/28 18:23
うー!なに言ってんだ!
関係ありありだね!

大体ポインタもわからなかった俺がAPIとC言語込みで
フリーコンパイラからすべてを始めたときの
情報源としてのここは大きかったんだぜ!
俺の書きこいっぱいあるからここは俺にとって
ホームグラウンドなのさ!

うーん、だから、関係あるのさ!(強引)



414 名前:デフォルトの名無しさん :02/01/28 18:26
複数ファイル使用のためのボタンとか右サイドに
レバーコントロールCCS_rightとかで
REBARCLASSNAMEした方がいいかな?

415 名前:デフォルトの名無しさん :02/01/28 18:28
あと行数はwm_paintで直接beginpaintしてるけど
やっぱりスタティックコントロールにしようかな。

売り物にするんだったらそれくらは、やらないとだめかな?
機能は変わらないんだけどな!

416 名前:デフォルトの名無しさん :02/01/28 18:41

http://members.tripod.co.jp/navi_/21.jpg
http://members.tripod.co.jp/navi_/20.jpg

だってこれならまだ金払う気になるべ?
だべ?フォント変えただけだけどさ。
宣伝するときはそーしよぉっと!ナイスサンキュー

もっとくれ、もっとくれ!

417 名前:デフォルトの名無しさん :02/01/28 18:43
datte moji ga chiisai to mega waruku naru kara sa

418 名前:デフォルトの名無しさん :02/01/28 18:48
>>394は名前欄に番号か何か入れてくれ。
どれが394の発言でどれがそれに対する意見なのかさっぱりわからん。

419 名前:デフォルトの名無しさん :02/01/28 18:52
俺はここでは番号入れない主義で通ってきた男だが
今後しばらくそうするよう勤ます。



420 名前:デフォルトの名無しさん :02/01/28 18:53
(↑394)
(即効忘れる俺に乾杯)

421 名前:デフォルトの名無しさん :02/01/28 19:05
このすれで、「俺」と称していた香具師は少ない。
しかも、教えて貰っていた側となると、事実上特定
できるのはないか。

422 名前:デフォルトの名無しさん :02/01/28 19:08
え?特定してくれ!
どーでもいいもんさ。

そう、うん、去年の10月くらいに現れた
ポインタも知らぬ僕チンでした。

まぁ、作品の話がしたいし、もっと人あつまってこねーかなぁ。

423 名前:デフォルトの名無しさん :02/01/28 19:27
394
明らかにテンションが変わっているが、しょうがないだろぉ!
悲しいリリースなんてしたくないからな!
テンション上げていこー!

424 名前:デフォルトの名無しさん :02/01/28 19:27
画像アップしろって言えばするから、俺は俺なのだ!

425 名前:デフォルトの名無しさん :02/01/28 19:32
すべてのスレが停止している。
WM_QUITとかPostThreadMessageしてないんですけど・・・・

426 名前:デフォルトの名無しさん :02/01/28 20:16
優良スレだったのに、たった5時間でここまで腐るとは......

427 名前:デフォルトの名無しさん :02/01/28 20:52
あんまり腐るなよ。。

ヘルプの方も着手してんだ。
どうせ高度な機能しか興味ないんだろ?わかったよ、高度な方も
さっき書いてみたから覗いてみたくなっちゃったら言っちゃってくれ。
(ください)役に立てることがあったら俺もお役にたっちゃうからさ。



428 名前:デフォルトの名無しさん :02/01/28 20:52
ExitProcess(0);

429 名前:デフォルトの名無しさん :02/01/28 20:56
ExitThread(0);

430 名前:デフォルトの名無しさん :02/01/28 21:15
っていうかAPI俺んなかで今旬なのに思えばいい質問が
ぜんぜんねーよな
comだって使える優れものなのにな
フリーコンパイラだけでなんでもできんじゃんか、よかったほっとした、
感動した。

431 名前:デフォルトの名無しさん :02/01/28 22:21
これからWinhelpでヘルプ作るんですけど
やりかたをざっと教えてくれませんか?

432 名前:デフォルトの名無しさん :02/01/28 22:51
悪いことは言わん、HTMLヘルプにしとけ。

433 名前:デフォルトの名無しさん :02/01/29 00:10
あ、さんきゅー。でもさぁ、HTMLヘルプ重いんだよ。
今とりあえずHTMLで作ってるけどさぁ。

とりあえず今はあんまり出回ってなくて入手
しづらかったけど、hcw403.exeはあるんだ。

そこからなんだよねぇ(笑)


434 名前:デフォルトの名無しさん :02/01/29 00:14
>>433
ベクターあたりでエディタ拾ってくる。

435 名前:デフォルトの名無しさん :02/01/29 00:18
なるほど。

436 名前:デフォルトの名無しさん :02/01/29 02:13
>>431
Word で RTF を作って、Help Workshop にかける。MS Press から一冊だけ WinHelp
の解説本が出てたと思う。

リンクとかポップアップで表示される情報なんかは脚注記号使って埋めることが要求
されるんで Word で直接作業してたらはっきり言って「やってられん」よ。昔、俺が仕
事でヘルプを書いたときは、簡単な

 マークアップ言語 -> RTF トランスレータ

を作って作業してたけど。

でも今なら HTML Help にした方が良いと思うけどな。利用者の立場から考えても、
WinHelp はユーザインターフェースがイマイチで使いづらい気がする。重いのは確
かだけど、

 簡単なヘルプはコンテキストヘルプ(ウィンドウ右上の [?] で表示させるヤツね)
 本格的なドキュメントは HTML Help

としとけば、それほど気にならないと思う。

437 名前:デフォルトの名無しさん :02/01/29 07:22
RTFを直接書いてたYO!

438 名前:デフォルトの名無しさん :02/01/29 10:19
WindowsXP/2kではExplorerの操作でファイルに対して
コメント・表題・作成者・カテゴリ・キーワードなどの
情報を付加することができますが
この情報にアクセスするAPIは何ですか?

439 名前:デフォルトの名無しさん :02/01/29 10:52
FlashWindowEx関数でフォームのタイトルバーを点滅させたいと思ってます。
点滅そのものは、

.dwFlags = FLASHW_ALL Or FLASHW_TIMER

でフォームの起動時からずっと点滅させっぱなしにしてるんですが、問題は
その点滅をとめるときです。
フォームをクリックしたときなど、何らかのイベントが発生したときに、

.dwFlags = FLASHW_STOP

で点滅をとめることができるというところまではMSDNで調べました。
問題は、そのフォームがSDIフォームか、MDI子フォームかで動作に差が
出るということなんです。
SDIフォームでは点滅をとめたときにそのフォームがアクティブの状態に
なって点滅がとまるんですが、MDI子フォームでは非アクティブの状態に
なって点滅がとまってしまいます。(プログラム上ではアクティブであることは
確認済み)

これはなぜなんでしょうか?皆様のお知恵を拝借させてください。

開発環境はWindows2000、Visual Basic6.0(SP5)です。

440 名前:デフォルトの名無しさん :02/01/29 11:47
>>438
これかな?
http://msdn.microsoft.com/library/en-us/com/stgrintf_8wq6.asp

441 名前:デフォルトの名無しさん :02/01/29 12:10
COMって素のWin32API(関数+構造体)をすべてラップしてるの?

442 名前:デフォルトの名無しさん :02/01/29 12:15
Windows95 APIバイブルっつー本買おうと思ってるんだけど
これってWin2000やXPでも通用するモノなんですか?

443 名前:デフォルトの名無しさん :02/01/29 12:30
SDK全部落としたぜ!あげ

444 名前:デフォルトの名無しさん :02/01/29 13:21
>>442
それは古本か? 持っていた人間が不要だから手放す物の典型のような...

445 名前:442 :02/01/29 13:27
>>444
いや。新品買おうと思ってた・・・
古本でもいいな・・
んで、Win2000とかXPでもイケルの?
実はTAPIの情報だけが欲しいのだが、それ関係の情報が載ってんの
この本しか見つからなくて・・・
他にいいのあったら教えてクサイ。もち日本で・・・

446 名前:442 :02/01/29 13:34
445>>
×もち日本で・・・
○もち日本語で・・・

447 名前:デフォルトの名無しさん :02/01/29 14:46
ツールバーとかボタンがごちゃごちゃついていると、エディタ部分が小さくなるので絶対不便。

448 名前:デフォルトの名無しさん :02/01/29 15:33
>445
でもAPIって全部基本的に英語じゃんかぁ、
LCCの無料版ヘルプ落としとけば?一応だけど。

2000、XP<<どうかなぁ、APIはだいたい
全部のぷラットフォームで共通してるから、大丈夫
なんじゃないの?OKっしょ。俺も欲しい、それ。
一冊おいて置けばかなり安心だよなぁ。TAPIってなんだっけ、
わすれちった。PSAPIのやつはWin2000専用のAPIとかもあるけどなぁ。
OKおっけー。買っとけよ。



449 名前:デフォルトの名無しさん :02/01/29 15:39
>441
我流の方法で知識を深めているのでラップの意味がわかりません。


450 名前:デフォルトの名無しさん :02/01/29 15:46
>447
まぁねぇ、、プログラムする人の癖にもよるんだよなぁ、
でも俺はいまだに検索ばりばりつかうし、ボタンもばりばりつかうんだよな、
このボタンはさ、ジャンプボタンだから。ちょっとしたとき、
右くりで簡単に位置記憶して、すぐ戻ってこれるためだからなぁ、俺自身
多用するんだよなぁ、でもなぁ、見た人はちょっと考えちゃうよなぁ、
結局絶対使うはずなんだけどなぁ、宣伝するときだけSW_HIDEしようかな。




451 名前:442 :02/01/29 15:50
>>448
さんきゅ。ちょっと安心したよ。
TAPIは照れフォニィAPI。
CTIなアプリを自作しようと思って・・・
でもMSにTAPIをラップしたOCX落っこちてたから
こっち使うかも・・・
ttp://www.microsoft.com/japan/business/ct/act/acthome.asp

452 名前:デフォルトの名無しさん :02/01/29 16:33
「あるプロセスAから別のプロセスBをCreateProcessで起動して
 そのハンドルを取得し、終了までWaitForSingleObjectで待つ」
といった、ありがちなプログラムなのですが、プロセスBからさらに
さらにShellExecute()で別のプロセスCを起動しようとすると、
ロック状態に陥ってしまい、プロセスCが正しく起動されません。

・WaitForSingleObjectで待つ処理を抜けば正常動作します。
・完全にロックかと思いきや、なぜか30秒後ぐらいにプロセスCが
 正常に実行されます。(タイムアウト?)
・プロセスAを経由せずに直接プロセスBから起動すれば問題なし。
・ShellExecuteでなくてCreateProcessを使用すれば問題なし。

このような場合の回避策は存在するのでしょうか?


453 名前:デフォルトの名無しさん :02/01/29 17:27
>>452 今のプログラミング言語って呼び出しが入れ子になりがちだから
起動するプログラムと監視するプログラムは分けたほうが無難じゃないですか?

もっともおんなじ様なプログラムでWin2KでもWin98でも特に問題はないので
変数とかなにかメモリ処理とかあるいはなんか基本的なミスを起こしているように思うのでけど

454 名前:デフォルトの名無しさん :02/01/29 18:00
>452
なにその現象、わかんねー!!!

455 名前:デフォルトの名無しさん :02/01/29 19:09
>>453
>>454
わかりにくくて、すいません(^_^;)
やろうとしていることを整理?しますと、

 1.ボタンを押したらShellExecute()でURLを開くアプリを作成

 2.このアプリを別のアプリからCreateProcessで起動すると
  ShellExecuteの実行に時間がかかる(30秒)

というものです。
WaitForSingleObjectでプロセスの終了を待っている訳ですが、
何故かShellExcuteの実行にまで影響を及ぼしているようです。

456 名前:デフォルトの名無しさん :02/01/29 21:11
>>455
試してみたけど再現不能だった。
何か別の原因があったりしない?

457 名前:デフォルトの名無しさん :02/01/29 21:12
>>455
・すでに標準ブラウザが起動しているかどうかチェックするために
 ShellExecuteがDDEメッセージをブロードキャスト
・WaitForSingleObjectで終了を待っているためメッセージに
 応答できない
・タイムアウトまでロック

という筋書きかと。
 対策としては
1. 終了待ち専用のスレッドを作る。
2. MsgWaitForMultipleObjectsを使う。
お好きなほうをどうぞ。

458 名前:デフォルトの名無しさん :02/01/29 22:46
>>457
ありがとうございます。
ご教授いただいた筋書きが濃厚のようです。

試しに、URL指定でなく、通常の単なるEXEの起動であれば
>>452
の問題は一切発生しません。
(ShellExecuteを単なるプロセスの起動と思い込んでいました・・・)

対策の方、試してみます。

459 名前:デフォルトの名無しさん :02/01/29 22:55
>>458
exeの起動ならDDEは使わないからね。

460 名前:デフォルトの名無しさん :02/01/30 03:29
C言語を始めて半月、やっと基礎を固めることができました
しかし コンソールアプリじゃつまんない!
ということで APIをやりたいとおもったのですが
そもそも書籍自体少ない・・・しかも いいのか悪いのか見抜ける目はもってません
本といわず、APIをはじめるにはいったいなにから手をつけたらいいのでしょうか・・・

461 名前:デフォルトの名無しさん :02/01/30 03:37
とりあえず、猫に手を出しましょう。

462 名前:デフォルトの名無しさん :02/01/30 04:56
HTMLヘルプの利点って何でしょう?
”重たい”って欠点しか見付かりません。


463 名前:デフォルトの名無しさん :02/01/30 06:46
DynamicHTMLで動きのあるヘルプを!(意味不明)

まぁ真面目に考えてみると
「RTFよりHTMLの方が馴染みがあって書きやすい」
「左に常に目次が出てて便利」
ってことくらいかなぁ。自分もあまり好きじゃないですHTMLヘルプ。

464 名前:デフォルトの名無しさん :02/01/30 10:59
画像表示を切っていると画像が出ないのは仕方がないとして、
個別に右クリックして画像表示することもできないのは大きなマイナス。
いちいちインターネットオプションで画像表示を有効にしないといけない。
利点じゃなくてスマソ。

465 名前:デフォルトの名無しさん :02/01/30 13:24
>>457
MsgWaitForMultipleObjects を使用してDDEメッセージを受け取り、
空読みさせることで解決しました。
MSDNな内容だったようで、

 [SDK32] ブロードキャストプロセスでデッドロックが発生
 文書番号: J041073

にも詳細な解説がありました。
どうもありがとうございました。


466 名前:デフォルトの名無しさん :02/01/30 14:49
CreateFontIndirect で LOGFONT から HFONT を生成できますが
逆に HFONT から LOGFONT を取得する API はありますか?

467 名前:デフォルトの名無しさん :02/01/30 15:19
FromHandleしてGetLogFontかなぁ?

468 名前:デフォルトの名無しさん :02/01/30 15:21
API -> GetObject
MFC(CFont) -> GetLogFont

469 名前:デフォルトの名無しさん :02/01/30 16:11
>460
猫でもはとってもいいよね。っていか
始めるにはあれしかないっしょ。

APIはすげーいいと思うよ。あれ、簡単だよ。
C++のクラスとかオブジェクトとかはぜんぜん難しい
っつーか面倒くさいけど、APIは、楽。確かに最初は
なんでも抵抗あるけどさ。でも思えば、ダイアログボックス
出すにしてもなんにしても、最初は面倒だったよなぁ、
だから俺は・・・・エディタを作ったんだぴょん

APIの本は、関数の一覧とか、ライブラリの表とか
が載ってればそれだけでいいと思うよ。
使えるコントロール、つーか、エディットボックスとか
リストボックスとかのことだけど、種類は24?だったし、
あとはやりたいこと次第で関数探せばいいだけだから。
APIやってて結構つまづくところってあるけど、そんな
ことが載った都合のいい本なんてないし、俺もそのうち
つくるけどそーいうのはインターネットの方が遥かに
情報力あるしなぁ。今でもAPI関数表載った本欲しいよ。
買ってくれ。













470 名前:デフォルトの名無しさん :02/01/30 16:20
CreateProcessで、パイプを指定してプロセスを
起動してるんですけど、言ってみればマニュアルどーり
のことやってるんですけど、起動時にフロッピーディスク
のアクセス音とかが鳴るんですけど無駄なんでどうにかしたいんです。

SECURITY_ATTRIBUTESとかもいろいろやってみたんですけど
アクセス音は止まりません。どーにかならないでしょうか。


471 名前:デフォルトの名無しさん :02/01/30 16:25
>>470
%TEMP%があらぬところを指してたりしないか?

472 名前:デフォルトの名無しさん :02/01/30 16:27
あれ、>>439は無視?
こんなことありえないのかな?
それとも、常識すぎるのか…

473 名前:デフォルトの名無しさん :02/01/30 16:46
そこ設定してなかった。
でもこれがNULLなんだけど、
その時はcalling processの環境変数を使うって書いて
ある。し、そういえば、特にパイプ使わないときは
アクセス音かりかりいわないんだよなぁ。

FlashWindowわかんないけどさ、
クリックしたからクリックしたところのWindowが
アクティブになってるとかしか思い浮かばない。すまないねぇ。


474 名前:デフォルトの名無しさん :02/01/30 16:49
470と同様、CreateProcess()なんですが、
現在CreateProcess()でFtp.exeを子プロセスとし、
パイプ処理を行い、ファイルからスクリプトを読み込むようなプログラムを
組んでいるのですが、「open ServerName」と書いたスクリプトファイルを
ReadFile()で読み込みパイプにWriteFile()で書き込むと、
子プロセスからの出力が
”User (server:(none)): Passward:”
と一気にパスワードの入力まで返ってきます。
”Connected to server.
220 ServerName.*.* FTP Server 〜
User (server:(none)): ”
というように本来はユーザー名の入力待ちにして、ユーザー名・パスワードを
スクリプトファイルから順に読み込んでいくようにしたいのですが、
初めからうまく表示できない(”220〜”も表示できてない)
状況が続いてます。

スクリプトファイルに、
「open ServerName
username
passward」
と書いていても結果は同じなんですけど、
原因がわかる方いませんか?

475 名前:デフォルトの名無しさん :02/01/30 17:04
書き込みと読み込みが早すぎるとかは?

476 名前:デフォルトの名無しさん :02/01/30 17:12
>472
本来、アクティブ/非アクティブになることができるのはトップレベルの
ウィンドウだけだから。
MDIの場合は、MDIクライアントウィンドウがアクティブ状態を管理して
あたかも子ウィンドウが個別にアクティブになっているかのように
見せているだけだから、MDIクライアントを通さずに勝手にアクティブに
しようとしても失敗する。
とりあえず WM_MDIACTIVATE を送りなおしてみてはどうか。

477 名前:デフォルトの名無しさん :02/01/30 17:24
>>473
>>476

サンクス。いわれてみたら確かにそのとおりだと思う。
とりあえずいただいたヒントを元にもう一回試してみます。
本当にありがとうございます。

478 名前:デフォルトの名無しさん :02/01/31 14:41
なんでこのスレすぐ下がるかなぁ。

479 名前:デフォルトの名無しさん :02/01/31 15:14
教えて欲しいのですが、ウィンドウメッセージが来たら再開する Sleep みたいなのってありますか?
メッセージが来ていても来ていなくても一定時間毎に処理したい
(ちょっと事情があってタイマーじゃ役不足)ので GetMessage から PeekMessage に変えてみたのですが、
処理時間を食いすぎて余計にレスポンスが悪くなってしまいました。
そこで Sleep を使いたいのですが、これで待つと メッセージまで処理できなくなるので…。
メッセージがきたら再開する Sleep があるとすごく助かるのですが
こういう事ってできないでしょうか?よろしくお願いします。

480 名前:デフォルトの名無しさん :02/01/31 15:25
MsgWaitFor...で、WaitableTimerもいっしょに待つとか。

481 名前:479 :02/01/31 15:42
MsgWaitFor っていうのを初めて聞いたので(WaitableTimerもですが)検索してみたのですが
何故か Pascal のコードばかり出てきます。これってVCLのメソッドですか?

482 名前:デフォルトの名無しさん :02/01/31 16:01
...はどうした。省略されてる事に気づけ。SDKなら普通
MSDNライブラリ/PlatformSDK Documentationで引かないか?
MsgWaitForMultipleObjectsと全部書かねば理解できないか?

483 名前:デフォルトの名無しさん :02/01/31 17:45
つーか別にWaitableTimer待たなくても
MsgWaitForMultipleObjectsにタイムアウト指定できたような。
>タイマーじゃ役不足
タイマーじゃ高精度すぎてもったいない?

484 名前:デフォルトの名無しさん :02/01/31 22:59
RegisterWindowMessage の逆をするAPI はありませんか?

つまりメッセージID(uMsg) から WM_ACTIVATE とか文字列が出る

485 名前:デフォルトの名無しさん :02/02/01 02:02
あった気がするけどRegisterされていないメッセージの文字列は
どのみち出ません。

486 名前:デフォルトの名無しさん :02/02/01 14:06
質問です。
ダイアログボックスをモーダルで立ち上げて、
立ち上げた時、自動的に「OK」ボタンを押すようにするには
どうしたらいいのでしょう?

WM_CREATEの中でSendMessage()を使ってOKを送ると、
ダイアログが表示されてくれません。(シングルスレッドで)

WM_TIMERで無理やりSendMessage()を送るのも考えましたが
正攻法ではないような気がして躊躇してます。

よろしくご教授お願いします。

487 名前:484 :02/02/01 14:10
>>485 ありがと・・・やっぱり自分で検索する関数作るしかないか・・・

>>486 というかそもそも自動的にOK押させるのが正攻法じゃないような気がするんですが

488 名前:486 :02/02/01 14:18
>>487
Webにアクセスする時間がかかる部分でプログレスバーで進行状況を
出してるのですが、ある条件の場合は、無条件でダウンロードを実行したいのです。

普通はOKを押す仕様なのですが、特殊な場合はこの関数を流用したいのですが・・・。

489 名前:デフォルトの名無しさん :02/02/01 15:34
>486
PostMessage

490 名前:デフォルトの名無しさん :02/02/01 16:24
>488
一応聞くけど、それってやばいプログラムなんじゃないの?ありり?

491 名前:486 :02/02/01 17:29
>>489
Postでもダイアログは出ないです。呼び出す順序に問題があるのかな?
>>490
?。いや、んなことはないですけど。

492 名前:デフォルトの名無しさん :02/02/01 17:40
>491
えーと、そのダイアログはOKボタン押すと閉じる仕様デスか?
だとしたら、画面に表示されるやいなや目にも止まらぬ早さで
消え去るのはまったく当然のことと思われ。
一定時間表示されてから消えるようにしたいということだったら
タイマー使うしかないでしょう。

493 名前:デフォルトの名無しさん :02/02/01 18:01
>>492
いや、OKを押すと10秒ぐらいかかるダウンロード処理に入るですが、
下のようにPostを使うと、ダウンロード処理は正常に行われるのですが
ダイアログ(プログレスバーがついている)は表示されないのです。
で、処理が終わってダイアログは一度も出てきません。

LRESULT CALLBACK DownloadProc( HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam )
{
  switch( msg ) {
    case WM_INITDIALOG:
     SendDlgItemMessage(hDlg, IDC_HOGE, CB_INSERTSTRING, 0, (LPARAM)"HOGE");
      ・・・ダイアログの設定など
      PostMessage( hDlg, WM_COMMAND,IDOK,0);
      return TRUE;

    case WM_COMMAND:
      switch ( LOWORD(wParam) ){
        case IDOK:
          ダウンロード処理(プログレスバー書き換えなど)

494 名前:デフォルトの名無しさん :02/02/01 18:19
>493
それはあれだ、ダウンロードの間メッセージを処理してないから。
(a) ダウンロード処理の中でメッセージループを回す
(b) 別スレッドでダウンロードする
お好きな方をどうぞ。「ダイアログで時間のかかる処理をするには」とかで
検索すればサンプルが見つかるでしょう。

495 名前:デフォルトの名無しさん :02/02/01 18:36
>>494
うーん一応、途中でダウンロードの中止ボタンが押せるように
(a)のループはこんな感じで回しているのですが・・・。
  for (i=0;i<100;i++) {  // 1回だけだと再描画やキャンセルが鈍い
    if ( PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) ) {
      TranslateMessage(&msg);
      DispatchMessage(&msg);
    }
  }

もう少し(b)の別スレッド方式も含めて検索してみます。

496 名前:デフォルトの名無しさん :02/02/01 19:46
>>495
素直に while( PeekMessage() ) { ... } で回した方がいいんでないのか?
メッセージが無くなりゃちゃんと帰ってくるし。

497 名前:デフォルトの名無しさん :02/02/01 20:44
>>495
for() でタイミング調整かよ!
BASIC 時代を思い出したよ

498 名前:デフォルトの名無しさん :02/02/02 00:38
>>495
PeekMessage を PM_NOREMOVE にしてメッセージがある場合は
GetMessage, ない場合には指定の処理(関数ポインタとかでうまく処理する)
っていうのはどうでしょう。

499 名前: :02/02/02 06:40
MSDN 以外で API が用途別(コード例なども)に説明してる
ページとか知らない?
Windows 95 API バイブルの Web 版みたいな・・・。

500 名前:デフォルトの名無しさん :02/02/02 06:44
猫にいくよろし。
ttp://www.kumei.ne.jp/c_lang/



■過去ログ置き場に戻る■ 1- 前250 次250 最新50
DAT2HTML 0.33f Converted.