■過去ログ置き場に戻る■
1-
前250
次250
最新50
[memo]
"9999999999_00.html#R20"
という感じで、URLの最後に "#R
レスNo
" を追加すると幸せになれます。
Win32API質問箱 Build39
501
名前:
デフォルトの名無しさん
:2006/01/18(水) 15:59:08
>>500
どうみてもWin32API関係ありません
どうみてもそれじゃダメです
本当にありがとうございました
502
名前:
500
:2006/01/18(水) 16:00:18
確かにAPI関係なかったです…スレ違いすいません
ついでながらどうしてダメなのが教えてもらえませんか?
503
名前:
デフォルトの名無しさん
:2006/01/18(水) 16:01:12
b1=FALSE, b2=false
の時の事、考えてあげて下さい
504
名前:
500
:2006/01/18(水) 16:09:46
うっ…分かりません、本当に馬鹿なのかも知れません
b1=0で抜けるんじゃないんですか?
それともFALSEの定義の問題でしょうか…?
505
名前:
デフォルトの名無しさん
:2006/01/18(水) 16:15:23
どちらも真の場合の判定と書いてるけど、
どちらも偽でも、通るように書かれてる
とあるサイトとやらが勘違いしてるのか、
藻前さんが何か勘違いしてるのかは知らないけど
>if ( (b1 && b2) || ! (b1 || b2) )
と
>if( b1 && b2 )
は別物だよってこと
506
名前:
505 スレ違い申し訳ない
:2006/01/18(水) 16:23:21
>if ( (b1 && b2) || ! (b1 || b2) )
>if( b1 && b2 )
このふたつの違いは分かるんです、でも「どちらも真の場合の判定」ですので、
>>505
さんがおっしゃったように
>if ( (b1 && b2) || ! (b1 || b2) )
ではダメなんじゃないかな?と思った次第です…
507
名前:
506
:2006/01/18(水) 16:24:21
名前欄505→500でした!
508
名前:
デフォルトの名無しさん
:2006/01/18(水) 16:27:58
>>499
ありがとうございます。
509
名前:
デフォルトの名無しさん
:2006/01/18(水) 16:50:49
>>506
本当に「双方真の場合の判定」と書いてあるのか?
だとするなら、それじゃダメだと思ったおまいが正しい
510
名前:
デフォルトの名無しさん
:2006/01/18(水) 16:50:53
>>500
そのサイト晒してみ
511
名前:
500
:2006/01/18(水) 16:57:45
ttp://www.aerith.net/cpp/typical_bug-j.html#bool-BOOL
のサイトなのですが・・・
BOOL型とbool型を==を使って判定してはならない、という事までは分かります
ですが最後の対処法が前レスで挙げた形になっているのです
もし私のとんでもない勘違いなら謹んで反省します
512
名前:
デフォルトの名無しさん
:2006/01/18(水) 16:59:29
>>500
「オレはドモルガンの法則知ってるぜ」って自慢したくて
そんな風に書いたんじゃないの
まぁ間違ってるんだけど
513
名前:
デフォルトの名無しさん
:2006/01/18(水) 17:01:32
>>511
文章の流れが不味いのは間違いないんだけど、
「安全な一致判定は、下記の通りに」って書いてあるじゃん。
「どちらも真」のコードだとは書いてない。
514
名前:
デフォルトの名無しさん
:2006/01/18(水) 17:02:13
>>511
そのサイトでは一致判定の方法を書いてるんであって
両方とも真の判定を行ってるわけじゃない
よって、お前が悪い
515
名前:
500
:2006/01/18(水) 17:04:17
あちゃー、やはり私の読み違いですか。反省します…
ということは先のコードで一致判定ができるということですね?むむむ…むずかしい
スレ違いすみませんでした
516
名前:
デフォルトの名無しさん
:2006/01/18(水) 17:04:58
BOOL b1 = func1();
bool b2 = func2();
としたとき、同じ結果である場合の判定は
if (b1 == b2) {
// 処理
}
は誤りで
if ( (b1 && b2) || ! (b1 || b2) ) {
// 処理
}
が正しい。
サイトの記述通り。もう一度熟読すべし。
517
名前:
デフォルトの名無しさん
:2006/01/18(水) 17:14:41
どこにAPI使ってるんだ?
518
名前:
デフォルトの名無しさん
:2006/01/18(水) 17:29:55
xmlでurlを指定するとblogshot.netのようなスクリーンショットの
画像を返すようなプログラムをwindowsで作りたいのだが、
どこから調べればよいですか?
ちなみにlinuxでcは書いたことはあるが、
windowsでのプログラムはほとんど経験なし。
よろしく。
519
名前:
デフォルトの名無しさん
:2006/01/18(水) 17:37:57
>>518
まあ頑張ってくれ
APIで何か疑問があったらまた鯉
520
名前:
デフォルトの名無しさん
:2006/01/18(水) 17:56:28
GetMessege()が-1を返したときはどうすればいいですか?
521
名前:
デフォルトの名無しさん
:2006/01/18(水) 18:02:24
エラー処理をすればいいと思うよ
522
名前:
デフォルトの名無しさん
:2006/01/18(水) 18:40:53
Windowsって、ファイル名の大文字と小文字、区別しないんだな。
初めて知ったよ。
ていうかさ、ちょっとしたバックアップツール(差分コピー付)を
作ってたのよ。
バックアップ先に同名ファイルがあったら、退避するようにして。
で、まあ、当然日本語ファイル名は考慮するから、
コピー先に同名のファイルが存在しているかは、_mbsicmp()とかにするよな。
最初はこれ(_mbsicmp)が全角の"A"と"a"を同一視すると困ると思って試してみたけど
どうやらちゃんと区別してるっぽい(bcc55)。
で、動作確認のために、
"A.txt" を "a.txt" が存在するディレクトリにコピーしようとすると、
CopyFile()が失敗。
まさかと思ってエクスプローラでも確認したら
ちゃんと上書き確認が出やがる。
もしかして、Unicode版のAPIと_wcscmp()を使えば大丈夫か、と思って
_wcscmpの動作を調べたら、
"A"と"a"は区別するくせに、"a"と"a"を同一視しやがる。
使えねー。
結局、自分で「同一ファイル名か確認する」コードを書くのが良いのかね?
部分比較(strncmp)もしたいし
オリジナルのファイル名は尊重したいから、全部小文字に直すのは嫌だし。
比較のときだけ小文字に直す手もあるけれど。
523
名前:
デフォルトの名無しさん
:2006/01/18(水) 19:00:36
api使えよ
524
名前:
デフォルトの名無しさん
:2006/01/18(水) 19:19:56
FindFirstFileでいけないかね
525
名前:
522
:2006/01/18(水) 19:22:40
んー、適当なAPIあるかな?
Pathxxxとかざっと見渡しても、良さそうなのが見つからないんだけど。
やりたいことは、バックアップと同期。そのために、
・ターゲット側に同一ファイル名となるファイルが存在するかを確認
ファイルが存在する場合
そのままそのファイルに追記
ファイル名を生かしたまま、別ディレクトリに移動
・コピー元側に存在しないファイルがターゲット側に存在するか確認
存在したら、別ディレクトリに移動
という感じ。
同名とみなせるファイルがターゲット側に存在するかどうかを確認するだけなら
(実際にファイルシステムにアクセスするAPIを使えば)簡単なんだけど、
コピー元側のファイル1つ毎にOSを呼び出した上、
ターゲット側のファイルについても、
それぞれ毎回OS(ファイルシステム)にアクセスする必要があるよね?
FindFirstFile()で一覧を取って、サイズやタイムスタンプで
コピーする必要が無いときは何もしないようにしたいから
出来ればファイル毎に呼び出す形にはしたく無いんだけど。
さすがに毎回ディスクアクセスはしないとは思うけどさ。
で、FindFirstFileで取った"A.txt"と"a.txt"という名前を、
「同じファイル名である」と判定したいのですよ。
526
名前:
デフォルトの名無しさん
:2006/01/18(水) 19:36:53
PathFileExists?
527
名前:
デフォルトの名無しさん
:2006/01/18(水) 20:20:23
lstrcmp(茶ろわぁ("A.txt"),茶ろわぁ("a.txt"))
528
名前:
デフォルトの名無しさん
:2006/01/18(水) 20:27:09
>>525
::CompareString()をNORM_IGNOREKANATYPEとNORM_IGNOREWIDTHで
使うとか。
529
名前:
528
:2006/01/18(水) 20:28:09
この場合NORM_IGNORECASEか…
530
名前:
デフォルトの名無しさん
:2006/01/18(水) 20:30:20
"A.txt" と "a.txt" って、Win9xでは区別される。
Win2Kからは区別されなくなったんだよな。NT4はどうだったかな?
531
名前:
522
:2006/01/18(水) 20:57:02
おー、ありがとう。
>>528-529
の方法(LOCALE_SYSTEM_DEFAULT, NORM_IGNORECASE)で出来るっぽい。
と思ったら、
>>530
ですか。。。
532
名前:
522
:2006/01/18(水) 21:01:38
区別する、しないはOSかな?それともFSかな?
もしOSだとしたら、9xで"A.txt"と"a.txt"の両方を(FATに)作って
そのディスクを2Kで読んだらどうなるんだろう?
とりあえず、適当にFATの領域を作って、
「2K+FAT」の環境での動作から確認してみよう。
533
名前:
デフォルトの名無しさん
:2006/01/18(水) 21:06:08
XP上からFAT32に"A.txt"と"a.txt"はむりですた。
534
名前:
デフォルトの名無しさん
:2006/01/18(水) 21:18:52
>>530
これ、初めて知った。(2K/XPでも全角a/Aは区別されると思ってた。)
で、実験君。
98で"A.txt" と "a.txt"をFAT32に作成し、このHDDをXPに接続。
DIRすると"A.txt" と "a.txt"の両方が見えるが、エディタで"a.txt"を開こうと
すると実際に開かれるのは"A.txt"。
"A.txt"を削除すると、"a.txt"が開けるようになる。
既に納品済みのもので、これでトラブりそうなのがある・・・・・
535
名前:
522
:2006/01/18(水) 21:31:35
おー、みんな実験ありがとう。
区別する/しないはOSの動作で、
FAT上に両方あると、NT系では一覧では見えるけど開けないってことか。
っていうか、やっぱ知らなかった人、俺だけじゃないよね。
俺も別扱いするものだとばかり思っていたから。
>>530
の、9xでは区別しなかったって聞いて、
そう思い込んでいた理由も納得した。
536
名前:
デフォルトの名無しさん
:2006/01/18(水) 22:14:26
コンピュータが(Win2kだとCtrl+Alt+Deleteとかで)ロックされているのを
検出する方法ってありますか?
ロックする方法はわかったんですが、状態を検出する方法がわかりません…。
537
名前:
デフォルトの名無しさん
:2006/01/18(水) 23:30:58
"A.txt"と、"A.txt"は区別されるようだな。
538
名前:
520
:2006/01/19(木) 00:09:16
>>521
どのような処理をすればいいか分かりません。
539
名前:
デフォルトの名無しさん
:2006/01/19(木) 00:10:46
解放するもん処理して終了すればいいじゃない
540
名前:
デフォルトの名無しさん
:2006/01/19(木) 00:21:38
>>538
好きに汁
541
名前:
デフォルトの名無しさん
:2006/01/19(木) 00:36:35
DLLをLoadLibrary()して、
DLL内部の関数をGetProcAddress()で取得後、そのDLL内関数を実行しました。
処理終了後、FreeLibrary()でLoadLibrary()の戻り値を渡したんですが、
その際に、関数内で宣言しておいた260バイトのchar配列の先頭エリア4バイトの
内容が破壊されていまいます。
なにか使い方が間違っているんでしょうか?
心当たりのある方いらっしゃいますか?
XPpro SP2、VisualStudio.NET2003です。
542
名前:
デフォルトの名無しさん
:2006/01/19(木) 00:42:25
おーい、誰かエスパー呼んでこい!
>>541
がエスパーをご所望だ
543
名前:
デフォルトの名無しさん
:2006/01/19(木) 00:51:12
>>541
_stdcall とか _cdeclがらみ、と透視。
544
名前:
デフォルトの名無しさん
:2006/01/19(木) 01:04:12
「DLL内の関数」が static char hoge[260] を return していると妄想
545
名前:
デフォルトの名無しさん
:2006/01/19(木) 01:08:33
こんな感じです
int AAAA(char *pszSrcPath, char *pszLzhFilePath)
{
HINSTANCE hXXXX;
PFUNC pcsFunc;
int iResult;
char *pszHomeDir;
char szHomeDir[MAX_PATH];
char *pszLastSep;
// カレントディレクトリ取得
pszHomeDir = getcwd(szHomeDir, MAX_PATH);
strcpy(szParentDir, "D:\\TEMP");
// 対象データが存在するディレクトリに移動する
chdir(szParentDir);
iResult = -1;
// DLL読込
hXXXX = LoadLibrary("XXXXX.dll");
if (hXXXX != NULL) {
// Unlha()APIの呼び出し
pcsFunc = (PFUNC)GetProcAddress(hUnlha, "YYY");
if (pcsFunc != NULL) {
iResult = (*(pcsFunc)(FALSE);
}
// DLL解放
// →ここまではszHomeDirは正しい
FreeLibrary(hXXXX);
// →ここにくると、szHomeDirの先頭4バイトが別な値に書き換えられる。
}
chdir(szHomeDir);
return(iResult);
}
546
名前:
デフォルトの名無しさん
:2006/01/19(木) 01:24:09
warota
547
名前:
デフォルトの名無しさん
:2006/01/19(木) 01:27:50
せっかく伏字にしたのに「Unlha()APIの呼び出し」って・・・。
548
名前:
デフォルトの名無しさん
:2006/01/19(木) 01:34:34
スプレッドシートを扱いたいのですが、どのような方法があるのでしょうか?
549
名前:
デフォルトの名無しさん
:2006/01/19(木) 01:40:15
Excelを買えばいいよ
550
名前:
デフォルトの名無しさん
:2006/01/19(木) 02:16:47
>>545
PFUNCの定義は
551
名前:
デフォルトの名無しさん
:2006/01/19(木) 02:34:07
>>545
szParentDirって?
552
名前:
デフォルトの名無しさん
:2006/01/19(木) 04:28:51
>>522
CopyFileの第3引数をTRUEにしたら?
それなら実際に同名ファイルが存在する場合以外は余分なAPI呼び出しは発生しない
553
名前:
デフォルトの名無しさん
:2006/01/19(木) 09:01:09
>>545
> iResult = (*(pcsFunc)(FALSE);
カッコの対応も合ってないじゃん。
せめてコンパイルくらいは通して欲しいものだな。
# 出来れば、問題が再現する最低限のコードを、
# 再発する事も確認して載せて欲しいね。
554
名前:
デフォルトの名無しさん
:2006/01/19(木) 10:42:16
>>545
pszHomeDirを参照するところやszParentDirをセットしてるところでメ
モリ破壊を起こしてるかもしれない。pcsFuncの呼び出しでメモリ破壊
してるかもしれない。
・変に省略するな
・unlha.dllを使うことを隠す必要なんてない
555
名前:
デフォルトの名無しさん
:2006/01/19(木) 10:47:36
>>545
すでに
>>543
で正しい答えが書かれてると思うよ。
556
名前:
541
:2006/01/19(木) 11:22:56
543さんの透視の通りでした。
おさわがせしました。
557
名前:
デフォルトの名無しさん
:2006/01/19(木) 13:39:17
HRESULTとかLSESULTって何でしょうか・
558
名前:
デフォルトの名無しさん
:2006/01/19(木) 13:43:30
LSESULTに該当するページが見つかりませんでした。
検索のヒント
キーワードに誤字・脱字がないか確かめてください。
違うキーワードを使ってみてください。
より一般的な言葉を使ってみてください。
559
名前:
デフォルトの名無しさん
:2006/01/19(木) 13:59:05
>>557
LRESULTはともかくHRESULTはここをよーく読んどけ。
ttp://msdn.microsoft.com/library/en-us/com/html/15f3ae3e-1794-4948-a7aa-6309a703364b.asp
560
名前:
498
:2006/01/19(木) 15:02:07
>>498
です。
9x系のバグのようです。
ttp://hp.vector.co.jp/authors/VA020994/Tips/sub3-2-013.htm
親を閉じる時、自動で一緒に子が閉じられたり、
オーナーを閉じる時、自動で一緒に非オーナーが閉じられますが、
それも手動の時と同じようにダメなようです。
もちろん、ボタンとかは大丈夫なので、
タイトルがあるウィンドウだとダメとかなんですかね。
いろいろメッセージの順序を工夫して実験しましたが、
親やオーナーのWM_CLOSEに誘発して
子や非オーナーを閉じる事自体がダメなようです。
子や非オーナーを閉じないと、親やオーナーは閉じられない、
親やオーナーを閉じようとした時、まず子や非オーナーが閉じられ、
もう一度親やオーナーを閉じようとすると、閉じる事が出来る、
みたいにしないといけないようです。
561
名前:
デフォルトの名無しさん
:2006/01/19(木) 16:23:30
>>498
ウィンドウBでPostQuitMessage()を呼んでいたりしないよな?
後、WM_QUITは送るな。
って言うか、ウィンドウAのWM_CLOSEを受信に、
ウィンドウBにWM_CLOSEを送信するだけでいけない?
562
名前:
520
:2006/01/19(木) 17:05:59
>>539-540
分かりました。そうします。
563
名前:
デフォルトの名無しさん
:2006/01/19(木) 17:11:51
>>498
A の WM_DESTROY ハンドラで B に WM_CLOSE を PostMessage すればOK。
だと思うけど。
564
名前:
498
:2006/01/19(木) 18:35:03
>>561
子や非オーナーの場合は、PostQuitMessageが
無くても大丈夫という意味ですか?
Bの方は、単体でも起動できるプログラムなので、
普通にPostQuitMessageをしていました。
実験してみます。
>>563
それをやっていますが、うまくいきません。
PostとSendを変えたり、Sleepでまってみたりしたんですが、
それではダメなようです。
565
名前:
デフォルトの名無しさん
:2006/01/19(木) 19:17:43
>>564
> Bの方は、単体でも起動できるプログラムなので、
ウィンドウAとBは別のプロセスなのか?
状況があまりにも見えなさすぎ。
566
名前:
498
:2006/01/19(木) 19:24:54
http://www.sm.rim.or.jp/~shishido/mdialog.html
ここの様な感じです。
そこでは、EnableWindow(hwMain,FALSE);をしているので、
Bを閉じずにAを閉じる事が出来ないので問題ありません。
作りたいのが、ビットマップビューアーみたいなソフトなので、
A、Bどっちにも常にさわれるようにしたいので、
EnableWindow(hwMain,FALSE)がない状態です。
567
名前:
498
:2006/01/19(木) 19:31:50
>>564
実験した結果はダメでした。
ただ、子、非オーナーなどBのウィンドウには
PostQuitMessageが必要ない事が分かり、勉強になりました。
PostQuitMessageの引数にhWndがないという事で、
hWndを終了というよりかは、hInstanceを終了する感じなんですかね。
568
名前:
デフォルトの名無しさん
:2006/01/19(木) 19:33:09
>>566
モーダルとモードレスでは仕組みが違う。
そのサイトのやり方では藻前のやりたい事は出来ない。
基礎から勉強し直した方がいいよ。
569
名前:
デフォルトの名無しさん
:2006/01/19(木) 19:34:26
>>566
ただのバグでしょう。
モーダルダイアログでDialog側のディスパッチループが走っている最中に
外側のディスパッチループを終了しようとしていたり、
シングルスレッドなのに「Sleepで待つ」とか書かれていたり、
ちょっと正常な設計とは思えません。
モードレスダイアログに変更してください。
570
名前:
デフォルトの名無しさん
:2006/01/19(木) 19:36:33
というか、GetMessageのループを脱出するためのモノだな。
PostQuitMessageは。
571
名前:
498
:2006/01/19(木) 19:42:54
ありがとうございます。
>>568
>>569
キーワードをいただきました。
別ウィンドウの出し方は、それぐらいしか知らなかったので。
>>570
理解しました。
572
名前:
デフォルトの名無しさん
:2006/01/19(木) 21:06:21
GetLastErrorとFormatMessage
使うときバッファの長さはいくらあれば足りますか
573
名前:
デフォルトの名無しさん
:2006/01/19(木) 21:10:34
>>572
FORMAT_MESSAGE_ALLOCATE_BUFFERを指定すれば向こうでメモリ確保してくれる。
このときが(俺にとっては)LocalFreeを使う唯一の機会になっている。
574
名前:
デフォルトの名無しさん
:2006/01/19(木) 21:13:52
なるほど
575
名前:
デフォルトの名無しさん
:2006/01/19(木) 21:32:22
>>572
MSDNにサンプルまで載ってるのに…
576
名前:
デフォルトの名無しさん
:2006/01/19(木) 22:20:35
>>575
俺なんかあのサンプルをまんまコピーして使ってるよ
577
名前:
デフォルトの名無しさん
:2006/01/19(木) 23:02:52
DIBとして確保したメモリって、連続していることが保証されてましたっけ。
それとも必ず pointer[x + y * width] みたいにアクセスする
必要がある(==最後にゴミがつく可能性がある)のでしたっけ。
578
名前:
デフォルトの名無しさん
:2006/01/19(木) 23:47:35
DIBが4byte境界に揃えられない状況ってあったっけ?
579
名前:
デフォルトの名無しさん
:2006/01/19(木) 23:50:40
おまいら心がすさんでるな。
丁寧におしえてやろうって言う心が無いな。
たとえスレ違いでもわかるなら答えてやるって心意気がほしいな。
おれは答えないけどな。
580
名前:
デフォルトの名無しさん
:2006/01/19(木) 23:50:43
ピザでも食ってろDIB
581
名前:
デフォルトの名無しさん
:2006/01/19(木) 23:54:44
>>580
ピザウマスwww
582
名前:
577
:2006/01/20(金) 00:08:36
>>578
DirectDrawでのバッファなんかだとゴミが付くんですよね。
で、DIBはどうだったかなぁと。
583
名前:
デフォルトの名無しさん
:2006/01/20(金) 01:05:20
タブコントロールを使いたいのですがいまいちわかりません。
2種類、CreateWindowで指定して作る方法とリソースファイルから作る方法がありますが
どっちでやってもタブコントロールの上にボタンとかをおきたいのですが
どっかいいサンプルなどおいてある場所教えていただけませんか?
584
名前:
デフォルトの名無しさん
:2006/01/20(金) 01:16:10
>>583
こんなところでどうか
ttp://home.a03.itscom.net/tsuzu/programing/tips28.htm
585
名前:
デフォルトの名無しさん
:2006/01/20(金) 02:56:01
swith (uint)
case ...
以外でボタンが押されたことをあらわすやつってある?
質問の意味がわからない人は言ってください。
多分これでわかると思いますけど。わからなかったらスマソ
586
名前:
デフォルトの名無しさん
:2006/01/20(金) 03:06:05
>>584
わたしも参考になりました。
ありがとうございます。
ちなみに
>>583
とは別人です。
あと質問させてもらいます。
エディットボックスで変換確定してエンターボタンを押すと
もうひとつのウインドウに表示させたいのですが、
エディットボックスで変換修正確定してエンターボタンを押すと
実質そのエンターボタンがIDC_BUTTONを押したときのような操作をするapiはあるのでしょうか?
質問の文がわかりにくいのはわかりますが・・同表現したらいいのかわかりません。
よろしくお願いします。
587
名前:
デフォルトの名無しさん
:2006/01/20(金) 03:22:24
>>586
EN_CHANGE使うんじゃ駄目?
588
名前:
デフォルトの名無しさん
:2006/01/20(金) 03:44:29
VC6にて、ActiveXでWebページ内で動くプログラムを作ってます。
リソースエディタでFORMVIEWのダイアログを作り、ClassWizard にて CFormView派生のクラスを作成。
CSampleCtl (プロジェクトをSampleとして作った場合のActiveX Controlのクラス) にて、
OnCreate で フォームビューのクラスを Create しているのですが、失敗してしまいます。(Create で 0 が返る)
失敗するのは、コントロールウィザードから TreeView(Microsoft TreeView Control) などをフォームに貼り付けた場合で、
スタティックテキストやエディットボックスのみのフォームでは失敗せず、ブラウザでの表示も確認しています。
TreeViewやListViewを使いたいのですが、どうすればいいのでしょうか。
プロジェクトは、プロジェクトウィザードのMFCActiveXコントロールから作成しています。
589
名前:
デフォルトの名無しさん
:2006/01/20(金) 04:46:52
CreateThreadを勉強のために使っています。
CreateThreadに複数の引数を渡すには
構造体をつかうということがわかりました。
他のやり方がありますか?
590
名前:
デフォルトの名無しさん
:2006/01/20(金) 07:10:14
乱数を取得するWINAPIって無いですか?
C++で自作DLLを作ってるんですがプログラムサイズを縮小化したいので
乱数取得にMSVCRT.DLLのrand関数を使いたくないんですが
591
名前:
デフォルトの名無しさん
:2006/01/20(金) 08:40:22
自分で作ればいいよ
http://cwoweb2.bai.ne.jp/~jgb11101/files/random/mersenne_applet.html
http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/VERSIONS/C-LANG/TANDO/MTC/readme.html
http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/mt.html
592
名前:
デフォルトの名無しさん
:2006/01/20(金) 08:46:31
っつーかMTレベルが欲しいならアレだが
MSVCRTと同じアルゴリズムのrandで十分なら
線形合同式一行書くだけだろ
593
名前:
デフォルトの名無しさん
:2006/01/20(金) 08:47:38
ちょっと、毛色は違うけど
CryptGenRandomとかはどーだwww
594
名前:
デフォルトの名無しさん
:2006/01/20(金) 08:49:45
CryptGenRandom呼ぶよりは線形合同法を自分で書くほうが小さくなる希ガス。
595
名前:
デフォルトの名無しさん
:2006/01/20(金) 08:51:09
http://www001.upp.so-net.ne.jp/isaku/rand.html
/*UNIX*/
static long x=1;
void srand(unsigned s) { x=s; }
long rand() { x=x*1103515245+12345; return x&2147483647; }
/*DOS-Windows*/
static long x=S;
int rand() { x=x*A+C; return(int)(x
>>16
)&32767; }
void srand(unsigned s) { x=s; if (F) rand(); }
/usr/5bin/cc A=1103515245, C=12345, F=0, S=1
TurboC 1.5 A=22695477, C=1, F=0, S=1
Visual C++: A=214013, C=2531011, F=0, S=1
Borland C++: A=22695477, C=1, F=1, S=22695478
X[n]=A*X[n-1]+C (mod 4294967296)
596
名前:
デフォルトの名無しさん
:2006/01/20(金) 08:54:24
>>585
ちょwwwわかんねぇwww
597
名前:
デフォルトの名無しさん
:2006/01/20(金) 08:55:51
乱数ってこんな単純な仕組みだったんですか?
598
名前:
デフォルトの名無しさん
:2006/01/20(金) 08:59:20
うん
599
名前:
デフォルトの名無しさん
:2006/01/20(金) 09:15:35
MTはもっと面倒だけどね。
600
名前:
デフォルトの名無しさん
:2006/01/20(金) 09:22:35
標準Cのrandよりいいのか・・・
601
名前:
デフォルトの名無しさん
:2006/01/20(金) 10:57:32
>>577
1lineがlong境界で揃うのは32bitDIBだけじゃないんですか?
8bitで横が4の倍数もか。
602
名前:
デフォルトの名無しさん
:2006/01/20(金) 11:10:22
>>601
だけじゃない
幅、bppに関わらず常に4の倍数バイト
圧縮したときはシランがw
603
名前:
デフォルトの名無しさん
:2006/01/20(金) 11:44:17
>>566
あの記事のコードでSendMessage{WM_COMMAND, IDOK}で終了することはできません。
メッセージループはGetMessageで待ったままになるからです。
DialogBoxの詳しい解説はJeffrey Richter:"Windows95:A Developer's Guide"
(新古書入手可能です)
あなたの要求を満たす方法は、単にCreateWindow/DestroyWindow
だけで良いと思います(メッセージループ不用)。
604
名前:
デフォルトの名無しさん
:2006/01/20(金) 17:55:35
VC++超初心者会議室
はどこに行っちゃったんでしょうか?
605
名前:
デフォルトの名無しさん
:2006/01/20(金) 18:53:52
複数のJpegファイルから動画ファイルを作成するソフトを作ろうと思って
Windows Media Encoderを触っていたのですが、実現の方法がわかりませんでした。
そもそも、Media Encoderで連続したJpegからWMVって作れるのでしょうか???
606
名前:
デフォルトの名無しさん
:2006/01/20(金) 19:03:13
604
ttp://m--takahashi.com/bbs.htm
旧ドメインは失効したと書いてある。
607
名前:
デフォルトの名無しさん
:2006/01/20(金) 19:26:08
605
Windows Media エンコーダ SDKを使ったことないけど
エンコードはDirect Showではないだろか。
608
名前:
デフォルトの名無しさん
:2006/01/20(金) 20:56:20
>>606
90日経ってから取り戻すつもりなのか?
絶対に業者に取られるな
609
名前:
デフォルトの名無しさん
:2006/01/20(金) 21:18:27
すいません、ちょっとお尋ねします。
EnumWindows(EnumWindowsProc LPARAM)で、EnumWindowsProcを呼び出す時、
EnumWindowsProcにクラスや構造体のポインタを渡すいい方法って
ありますでしょうか。
610
名前:
デフォルトの名無しさん
:2006/01/20(金) 21:21:40
つ LPARAM
611
名前:
609
:2006/01/20(金) 21:39:54
早速のレス、ありがとうございます。う〜む、やはり渡すとしたら
LPARAMで渡すんですよね・・・前に試した時は、KOUZOU* pSt;
EnumWindows( EnumProc (LPARAM)pSt);と言う形で投げて、
EnumProc( hwnd, lp);でうけて、lp->member;と使おうとしたら、
「->の右にこれるのは、クラスのポインタだけじゃ!」
と怒られちゃったんですが、なんか私、勘違いしていますか?
重ね重ねの質問ですいませんが、よろしくお願いします。
612
名前:
デフォルトの名無しさん
:2006/01/20(金) 21:53:58
KOUZOU* pSt = (KOUZOU*)lp;
pSt->member;
とか
((KOUZOU*)lp)->member;
とかして元の型に戻さないと。
613
名前:
デフォルトの名無しさん
:2006/01/20(金) 22:03:22
C++ならreinterpret_cast<KOUZOU*>(lp)->member推奨。
614
名前:
609
:2006/01/20(金) 22:07:16
>>612
,613
そ、そうか・・・戻し損ねていたのか・・・orz
ご指摘、ご教授どうもありがとうございます。感謝、感謝です。m(--)m
615
名前:
498
:2006/01/20(金) 22:51:25
>>603
こういう感じでOKですか?(コーディングスタイルがきもいので注意)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1514.txt
一応、残骸が残るバグはなくなりました。
ただ、他に問題がありましたら教えてください。
この方法でOKなら、リソースや可変長配列を
使う必要がないので、こちらの方が楽な気がします。
616
名前:
デフォルトの名無しさん
:2006/01/20(金) 22:55:56
winmainからウィンドウ作らずにダイアログを作ったんですがこの状態で
きーが押されてるとかとれますか?
617
名前:
デフォルトの名無しさん
:2006/01/20(金) 22:57:26
教えてくんで悪いけど、良書があったら紹介して欲しい
618
名前:
デフォルトの名無しさん
:2006/01/20(金) 23:06:07
>>616
WM_GETDLGCODE
619
名前:
デフォルトの名無しさん
:2006/01/20(金) 23:34:45
>>617
Matt Pietrek:"Windows Internals"
Windows3.1の解析本。たぶん新古書入手可能。
620
名前:
デフォルトの名無しさん
:2006/01/20(金) 23:37:31
Thanks
621
名前:
デフォルトの名無しさん
:2006/01/20(金) 23:57:56
初歩的なこと聞きますが、
DrawTextで文字列をウィンドウに出力させるプログラムつくったんですが、
ウインドウに収まらず、縦スクロールつけたんですが、スクロールさせると
消えてしまいます。なんかいい方法あったらご教授ください。
622
名前:
デフォルトの名無しさん
:2006/01/21(土) 00:16:15
>>621
つ裏画面
623
名前:
デフォルトの名無しさん
:2006/01/21(土) 00:31:50
InvalidateRect()
624
名前:
デフォルトの名無しさん
:2006/01/21(土) 00:32:47
塚WM_PAINTで描いてねんでねか?
625
名前:
621
:2006/01/21(土) 00:37:06
WM_PAINTで書いてますよ。
626
名前:
デフォルトの名無しさん
:2006/01/21(土) 00:55:08
ならWM_VSCROLL/WM_HSCROLL受けて
よしなに描き直せば
627
名前:
デフォルトの名無しさん
:2006/01/21(土) 01:59:48
>>591-600
遅くなりましたがthxです うまく組み込めました!
628
名前:
デフォルトの名無しさん
:2006/01/21(土) 02:39:23
今色々本見比べてるんだけどエントリポイント?が
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
int PASCAL WinMain(HINSTANCE hInst,HINSTANCE hPrev,char *CmdLine,int CmdShow);
ってあるんだ。
WINAPIとPASCALってどう違うんでしょうか?
629
名前:
デフォルトの名無しさん
:2006/01/21(土) 02:49:38
WTypes.h
#define FAR _far
#define PASCAL _pascal
#define WINAPI FAR PASCAL
ついでに言うとWin32では_far、_nearは意味を持たない。
630
名前:
デフォルトの名無しさん
:2006/01/21(土) 07:00:02
>>628
スタックに積んだ引数を呼び出し側でpopするか、呼ばれた側でpopするかの違い。
631
名前:
デフォルトの名無しさん
:2006/01/21(土) 07:45:42
>>629
それからWin32ではWINAPIは__stdcallだな(__pascalとはスタックに積む順番が違う)
>>630
それは__cdeclとの違い
632
名前:
デフォルトの名無しさん
:2006/01/21(土) 09:06:10
>>628
Win16ではPASCALだったがWin32でWINAPIになった。
互換性のためWin32のヘッダでは#define PASCAL __stacallと定義されている。
蛇足だが本当にpascal形式が使いたければ__pascalと書けば使える。
633
名前:
628
:2006/01/21(土) 09:33:45
皆さんレスありがとうございます
つまり今はWINAPIを使うのが普通って事ですか。
スタックに積んだ引数ってのが想像しにくい(スタックて後入れ先出しだっけ・・・
とりあえずおいて置きます
634
名前:
デフォルトの名無しさん
:2006/01/21(土) 09:57:09
今はWINAPIを使うのが普通
635
名前:
デフォルトの名無しさん
:2006/01/21(土) 10:01:02
>スタックて後入れ先出しだっけ
参照されるときは結局
[ebp+NN]とかアドレッシングしてアクセスされるから
後入れ先出しとは言えないですね。
呼ぶ側がパラメータをスタックにPUSHしてからCALLするだけだから
後入れ先出しの順はパラメータが左からか右からかの違いに相当します。
636
名前:
デフォルトの名無しさん
:2006/01/21(土) 10:19:15
SetClassLong関数を用いて背景色を設定する場合
SetClassLong(hWnd, GCL_HBRBACKGROUND, (LONG)CreateSolidBrush(RGB(0,0,0)));
などとすれば出来ますよね。
そこでCreateSolidBrush作成したオブジェクトについてなんですが、こいつは遅かれ早かれ
開発者がDeleteObject削除しなければなりませんよね?
今勉強しているサイトにはどこにも説明が無いので聞く所存なのですが、
HBRUSH hBr = CreateSolidBrush(RGB(255,0,0);
SetClassLong(hWnd,GCL_HBRBACKGROUND,hBr);
DeleteObject(hBr);
の様に、SetClassLongで現在設定されているブラシは削除するのはまずいのでしょうか?
637
名前:
デフォルトの名無しさん
:2006/01/21(土) 11:02:16
まずい
WM_DESTROYWINDOW
あたりを受け取ってから
DeleteObject
638
名前:
デフォルトの名無しさん
:2006/01/21(土) 14:01:49
皆さん、
一番かっこいい名前のWin32APIって何だと思いますか?
639
名前:
デフォルトの名無しさん
:2006/01/21(土) 14:15:27
IReconcilableObject::GetProgressFeedbackMaxEstimate
640
名前:
デフォルトの名無しさん
:2006/01/21(土) 14:39:38
やっとこのスレに書き込まれていることが大体理解できるようになった
完全に理解するにはあと3ヶ月だな
641
名前:
デフォルトの名無しさん
:2006/01/21(土) 14:40:58
>>636
MSDNのWNDCLASSEXの項にはUnregiserClassExを呼んだ時に背景のブラシは削除されると書いてある。
あと、SetClassLongPtrを使いなさい。
642
名前:
デフォルトの名無しさん
:2006/01/21(土) 14:46:07
リストボックスのテキストを全部または特定の行だけ消す方法がわかりません。
タブコントールにリストボックスをくっつけて特定のタブが選択された時に
そのタブにのっかってるリストボックスにテキスト表示はできたんですが、
WM_PAINTのときに書いてたらタブを一度他のところに切り替えてもう一度タブ
を戻したら表示させたテキストが複数になちゃいました。
そうならない方法どなたか教えて頂ければうれしいです。
643
名前:
デフォルトの名無しさん
:2006/01/21(土) 16:05:54
>>638
SetLayeredWindowAttributes
644
名前:
デフォルトの名無しさん
:2006/01/21(土) 17:24:33
>>640
3ヶ月後にはこのスレに書き込まれていることが釣りに思えてくる
645
名前:
デフォルトの名無しさん
:2006/01/21(土) 18:41:24
実際釣りなんだがな
646
名前:
デフォルトの名無しさん
:2006/01/21(土) 19:09:00
>>645
そうわかるまでにはもう三ヶ月かかる
647
名前:
デフォルトの名無しさん
:2006/01/21(土) 20:54:07
スクリーンセーバーが起動したりスタンバイしないようにソフトウェア側で制御するには
どうしたらいいでしょうか?
ウィンドウズメディアプレイアーを再生しているときみたいに、
自分のアプリケーションが起動している間はスクリーンセーバーが
起動したりスタンバイ状態になってほしくないのです。
Winsockで通信中にスタンバイ状態になると挙動がおかしくなるので困っています。
648
名前:
デフォルトの名無しさん
:2006/01/21(土) 21:02:26
>>647
SystemParametersInfo()でSPI_SETSCREENSAVEACTIVEを使って
スクリーンセーバーが動いてることにしちゃったり、
WM_POWERBROADCASTを処理してBROADCAST_QUERY_DENYを
返したり。
649
名前:
647
:2006/01/21(土) 21:27:24
>>648
ありがとうございます。
やってみます!
650
名前:
デフォルトの名無しさん
:2006/01/21(土) 22:34:25
>>588
なんですがわかりませんか?
651
名前:
デフォルトの名無しさん
:2006/01/21(土) 23:42:53
>>647
SystemParametersInfo()は推奨できない。
自分のアプリケーションがアクティブなときだけ拒否したい場合は
WM_SYSCOMMANDメッセージのSC_MONITORPOWERと
SC_SCREENSAVEにFALSEを返せば防げばいい。
WinSockで問題があるなら、スクリーンセーバーはどうでもいいと
思うので、WM_POWERBROADCASTのPBT_APMQUERYSUSPENDを
処理すればいいかと。
あるいは、スタンバイ状態に移行するときと復帰したときの処理を
ちゃんと書いて、スタンバイ状態になっても問題ないようにするとか。
652
名前:
デフォルトの名無しさん
:2006/01/22(日) 03:05:42
>>650
スレタイを100回ぐらい読むといいよ
当然、大声でやると効果的
653
名前:
デフォルトの名無しさん
:2006/01/22(日) 12:03:28
>>652
何言ってるんですか?
TreeViewもListViewもWin32APIで作れるじゃないですか。
654
名前:
デフォルトの名無しさん
:2006/01/22(日) 12:28:20
プロジェクトは、プロジェクトウィザードのMFCActiveXコントロールから作成しています。
655
名前:
デフォルトの名無しさん
:2006/01/22(日) 12:46:29
100回じゃ足りない奴もいるってことか、勉強になるスレだ
656
名前:
デフォルトの名無しさん
:2006/01/22(日) 13:04:08
死ねばいいってことでFA?
657
名前:
デフォルトの名無しさん
:2006/01/22(日) 13:40:52
650≠653なんて言っても興味ないと思うけど、つまりMFC相談所にいけと。
ActiveX関係がなかったんでWin32でここに書いたんだけど、誘導ってことでMFC相談室行ってきます。
658
名前:
デフォルトの名無しさん
:2006/01/22(日) 15:35:53
>>657
【OLE】オートメーション総合スレ【ActiveX】
http://pc8.2ch.net/test/read.cgi/tech/1137771139/
659
名前:
デフォルトの名無しさん
:2006/01/22(日) 17:44:37
Win32APIって全部スレッドセーフなんですか?
660
名前:
デフォルトの名無しさん
:2006/01/22(日) 17:58:31
>>659
俺は全部がスレッドセーフかどうか知らないけど、中にはこんなのも存在する。
そもそも作成したスレッドからしか触れないからスレッド安全かどうか気にする必要のないというものもある。
ヒープ関係の関数はスレッドセーフにしない代わりに高速化するという指定を与えられる。
661
名前:
デフォルトの名無しさん
:2006/01/23(月) 02:15:47
計算結果をウィンドウを開いて描画しようと思ってます。
printf,scanfなどの関数を併用することはできますか?
描画はできるんですけどこういう関数は全部無視されちゃいます。
ちなみにborland c++ compiler5.5使ってます
662
名前:
デフォルトの名無しさん
:2006/01/23(月) 02:23:44
printf()とかscanf()はコマンドプロンプトとかにしか使えない
WinAPIには文字出力とかの概念は存在しないからTextOut()で文字を描画する
663
名前:
661
:2006/01/23(月) 02:42:28
ありがとうございます。
じゃあ、ファイルポインタ使ってデータファイル読み込み→
計算→描画 的なことはできないんですかね?
664
名前:
デフォルトの名無しさん
:2006/01/23(月) 02:48:41
は? TextOut使えって言ってるじゃん?
665
名前:
661
:2006/01/23(月) 03:00:36
説明が悪かったです。すいません。
データファイル読み込み→計算→計算結果を図で描画
ということをしようと思ってます。
666
名前:
デフォルトの名無しさん
:2006/01/23(月) 03:02:19
>>661
,663
計算結果をテキストで出力したいだけなら、
コンソールアプリケーションにする。
GUIを使いながらprintf等も使いたいなら
AllocConsole()を使ってコンソールを割り当てると楽。
667
名前:
661
:2006/01/23(月) 03:20:18
>>666
ありがとうございます。AllocConsoleでscanfも使えますか?
scanfでデータファイル名指定、データファイルを読み込んで計算
ということもやりたいんですけど。
668
名前:
デフォルトの名無しさん
:2006/01/23(月) 03:25:15
やってみれ
669
名前:
661
:2006/01/23(月) 03:27:16
>>668
やってみます
こんな時間に付き合っていただいて本当にありがとうございました。
おやすみなさい
670
名前:
デフォルトの名無しさん
:2006/01/23(月) 05:08:45
テンプレにある猫でも〜〜 1章〜15章あたりで勉強すると良いよ
671
名前:
デフォルトの名無しさん
:2006/01/23(月) 05:34:17
>>667
出力なら
>>296
入力はCONIN$に変えればいいかも。
672
名前:
デフォルトの名無しさん
:2006/01/23(月) 09:03:17
>>661-671
sprintf()やsscanf()に一言も触れないのか?
潜在的なセキュリティリスクに関する議論も再燃するはずだったのだが。
673
名前:
デフォルトの名無しさん
:2006/01/23(月) 09:11:42
独りでやってろ
674
名前:
デフォルトの名無しさん
:2006/01/23(月) 09:12:36
再燃再燃再燃再燃セキュリティリスク
再燃再燃再燃再燃セキュリティリスク
再燃再燃再燃再燃セキュリティリスク
再燃再燃再燃再燃セキュリティリスク
再燃再燃再燃再燃セキュリティリスク
再燃再燃再燃再燃セキュリティリスク
再燃再燃再燃再燃セキュリティリスク
再燃再燃再燃再燃セキュリティリスク
675
名前:
デフォルトの名無しさん
:2006/01/23(月) 13:46:16
sprintf()やsscanf()というAPI
676
名前:
デフォルトの名無しさん
:2006/01/23(月) 13:56:40
sscanf()はまだしも、何でsprintf()が出てくるのだろう。
677
名前:
デフォルトの名無しさん
:2006/01/23(月) 14:32:24
彼は最近ようやく知った情報を、語りたくてしかたなかったのだよ
678
名前:
デフォルトの名無しさん
:2006/01/23(月) 15:48:08
自プロセスが動かされているユーザを他のユーザに切り替える事は可能ですか?
CreateProcessAsUserで別プロセスとして起動させるしかないんでしょうか?
679
名前:
デフォルトの名無しさん
:2006/01/23(月) 16:20:30
通常のウィンドウ内で日本語入力した時に出る文字達の位置を
エディタの様に変えることは出来ないでしょうか?
680
名前:
デフォルトの名無しさん
:2006/01/23(月) 17:38:25
>>679
できるはず。できるからこそエディタはそうなっているんだ。
俺もやりかたは知らないけれどとりあえず。
681
名前:
デフォルトの名無しさん
:2006/01/23(月) 17:42:30
WM_IMESTARTCOMPOSITIONでImmSetCompositionWindow
682
名前:
デフォルトの名無しさん
:2006/01/23(月) 20:59:22
>>676
前スレで脆弱性になる/ならないで論争やったからじゃね?
683
名前:
デフォルトの名無しさん
:2006/01/23(月) 21:16:28
諸々のハンドルの多くは実行ユーザに対してのみアクセス権限が割り当てられている。
プロセス実行中にユーザを切り替えることが可能になったら、
他のユーザに切り替えたあと、あらゆるハンドルが扱えなくなるので、メンテナンスが面倒だと思う。
ハンドルを子プロセスで継承可能&ユーザアクセス権限を設定して、
ハンドル値を子プロセス実行文字列の引数や共有メモリで渡すことでハンドルをそのまま使える。
684
名前:
デフォルトの名無しさん
:2006/01/23(月) 23:13:58
どうせアクセス権を設定しなきゃならないなら
その後子プロセスを作っても作らなくても面倒さに変わりはないんじゃね?
685
名前:
デフォルトの名無しさん
:2006/01/23(月) 23:18:20
新たに設定するユーザの権限外のアクセスが(既存ハンドルを通じて)行えると、
セキュリティホールの原因になるんじゃない?
686
名前:
デフォルトの名無しさん
:2006/01/23(月) 23:41:25
>>684-685
チャットじゃないので疑問形で同意を求める風を装う甘えた文章はやめろ。
断言できないのなら回答するな。
687
名前:
デフォルトの名無しさん
:2006/01/23(月) 23:43:05
>>686
しきってんじゃねーよカス
688
名前:
デフォルトの名無しさん
:2006/01/23(月) 23:46:07
今日も機嫌が悪いなw
689
名前:
デフォルトの名無しさん
:2006/01/23(月) 23:46:39
ここは質問スレ。質問するなら質問しろ。回答するなら回答しろ。
断定を避けつつ他人の同意を求める文章は荒らしも同然。
690
名前:
デフォルトの名無しさん
:2006/01/23(月) 23:47:20
まあ、689みたいな書き込みも一種の荒らしなんだけどな。
691
名前:
デフォルトの名無しさん
:2006/01/23(月) 23:51:40
>>690
他の荒らしを黙らせるための書き込みは構わないと思う。
>>684-685
ピントがずれてる。
結論からいうと、必要性が判らないうちは回答するなということだ。
末尾を?にすれば許してもらえるなどと思わないほうがいい。
692
名前:
デフォルトの名無しさん
:2006/01/23(月) 23:58:06
>>691
黙れ
693
名前:
デフォルトの名無しさん
:2006/01/24(火) 00:02:47
?
694
名前:
デフォルトの名無しさん
:2006/01/24(火) 00:04:08
>>692
の1行書き込みの方が
>>684-685
よりはるかに好感がもてる。
断言できない読書感想文的な無駄なオナニー書き込みより罵倒の方がはるかにマシ。
695
名前:
デフォルトの名無しさん
:2006/01/24(火) 00:04:52
!
696
名前:
デフォルトの名無しさん
:2006/01/24(火) 00:05:18
自演乙w
697
名前:
デフォルトの名無しさん
:2006/01/24(火) 00:15:27
たかが語尾ひとつでそこまでキモく粘着できるのが信じられんが
そんなに断言してほしけりゃしてやる
どうせアクセス権を設定しなきゃならないなら
その後子プロセスを作っても作らなくても面倒さに変わりはない。
新たに設定するユーザの権限外のアクセスが(既存ハンドルを通じて)行えると、
セキュリティホールの原因になる。
正直何が違うのかさっぱりだね
698
名前:
678
:2006/01/24(火) 00:53:28
変なこと聞いてすいませんでした。
699
名前:
デフォルトの名無しさん
:2006/01/24(火) 02:05:51
なんだこの流れ
700
名前:
デフォルトの名無しさん
:2006/01/24(火) 02:15:49
なんだこのスレもLDショックかよ。
だからあれほど素人は(ry
701
名前:
デフォルトの名無しさん
:2006/01/24(火) 07:42:02
アクティブじゃなくてもキーボード操作に反応するようにしたいのですが
どうやればいいですか?
702
名前:
デフォルトの名無しさん
:2006/01/24(火) 07:44:53
GetAsyncKeyStateをタイマでも使ってポーリングしとけば。
703
名前:
デフォルトの名無しさん
:2006/01/24(火) 07:46:58
効率ワルwww
704
名前:
デフォルトの名無しさん
:2006/01/24(火) 08:42:26
効率のいい方法とやらを教えてくれないか
705
名前:
デフォルトの名無しさん
:2006/01/24(火) 08:50:49
タイマだったらどうしてもラグがあるから
グローバルフックの方がいいかと
706
名前:
デフォルトの名無しさん
:2006/01/24(火) 09:12:06
質問させてください。
win2k,VC6で開発をしています。
ユーザーアカウントに独自の追加情報を加える必要があり色々と
調べてみた結果。windowsのアカウント設定ツールからは使われて
いない(NetUserSetInfoで実際に設定してみて、設定ツール上の
どこにも反映されていないことで確認しました)USER_INFO_*構造体の
usri*_usr_commentの部分に追加できないかと考えています。
ですが、実際に使用するにあたって本当にユーザーが勝手に使ってよい
領域なのかどうかいまいち確証がもてずに困っています。
usri*_usr_commentの使用についてのドキュメント等をご存知の方が
居られましたらお教えいただけると助かります。
よろしくお願いします。
707
名前:
デフォルトの名無しさん
:2006/01/24(火) 11:20:53
自分で自身を解放するクラスをつくりたいんですけど、
void test ()
{
CTestClass *t = new CTestClass() ;
}
test()で、CTestClassが確保されて起動、その後CTestClass内で処理が必要なくなったら自身を消して解放みたいな。
やっぱりマネージャクラスのようなものが必要なんでしょうか?
708
名前:
デフォルトの名無しさん
:2006/01/24(火) 11:32:43
delete this;
709
名前:
デフォルトの名無しさん
:2006/01/24(火) 11:33:12
>>707
つ[delete this;]
710
名前:
デフォルトの名無しさん
:2006/01/24(火) 11:39:13
つ 「200%スレ違い」
711
名前:
707
:2006/01/24(火) 11:57:52
レスどうもです。
>delete this;
ほんとだ、消えた!。
自分は消せないと思ってた、勉強不足でした。
712
名前:
679
:2006/01/24(火) 12:42:57
ありがとうございました。
無事解決しました。
713
名前:
デフォルトの名無しさん
:2006/01/24(火) 14:41:42
deleteの動作を理解してれば自分を消せないなどと思わなかったろうに
714
名前:
デフォルトの名無しさん
:2006/01/24(火) 15:05:42
CBindStatusCallbackを使ったサンプルコードどっかにないですか?
googleしまくってんだけど、なかなか参考になるコードが無くて、よろしくお願いします。
715
名前:
デフォルトの名無しさん
:2006/01/24(火) 15:08:56
スレ違いATLスレにでもいてら
716
名前:
デフォルトの名無しさん
:2006/01/24(火) 15:48:05
サウンドカードからのデジタル出力を停止させるAPIって存在するの
でしょうか?アナログからの出力はできてもかまわないのですが、デジタル
出力だけ停止させたいのですが。
717
名前:
デフォルトの名無しさん
:2006/01/24(火) 16:07:49
c:\hoge\fuga\moge\unko.txt っていうファイルを作成したい。
hogeもfugaもmogeも存在しないとき、一気にディレクトリつくるAPIなかったっけ?
718
名前:
デフォルトの名無しさん
:2006/01/24(火) 16:13:17
SHCreateDirectoryExかね
719
名前:
デフォルトの名無しさん
:2006/01/24(火) 16:19:14
MakeSureDirectoryPathExists()
720
名前:
デフォルトの名無しさん
:2006/01/24(火) 16:22:30
ちょっとライブラリ使おうとして
プラットフォームSDKをダウンロードしようと思ったら、
MSNになくなったようです。
SDKに変わるものって何になるのでしょうか?
環境はwin2kとXPです。
馬鹿にも解るように優しく教えて下され
721
名前:
デフォルトの名無しさん
:2006/01/24(火) 16:28:53
MSNにあったらビックリだな。
722
名前:
717
:2006/01/24(火) 16:40:48
>>718-719
OoOooOoooOhhh thx!!!
どっちにしようかな〜
723
名前:
デフォルトの名無しさん
:2006/01/24(火) 17:07:16
うちの古いMSDNライブラリにないと思ったら、
SHCreateDirectoryExってWinMeや2000以降なのね。
724
名前:
デフォルトの名無しさん
:2006/01/24(火) 17:11:02
うむ、挙げてから気づいてちょっと使いづらいかなと思った。
725
名前:
デフォルトの名無しさん
:2006/01/24(火) 17:38:47
制限ユーザの為に、レジストリーに書き込めないんですけど、回避方法ありませんか?
726
名前:
デフォルトの名無しさん
:2006/01/24(火) 17:39:58
ini
727
名前:
725
:2006/01/24(火) 17:51:58
COMコンポーネントの登録の必要があるんですが、iniファイルで代用できるって事ですか?
728
名前:
デフォルトの名無しさん
:2006/01/24(火) 17:57:00
最初からそういえコラ
729
名前:
デフォルトの名無しさん
:2006/01/24(火) 19:11:59
>>727
Windows XP なら manifest で出来る。
730
名前:
デフォルトの名無しさん
:2006/01/24(火) 19:17:33
>>701
普通にグローバルキーフック
猫でもSDK編161章
731
名前:
デフォルトの名無しさん
:2006/01/24(火) 19:20:37
>>725
>>727
HKEY_CLASSES_ROOT以下は制限ユーザーでも書き込めると思うが。
732
名前:
720
:2006/01/25(水) 01:07:07
D抜けてるし_| ̄|○
意味は通じてるんだから
教えてくれても良いのに(´・ω・`)
733
名前:
デフォルトの名無しさん
:2006/01/25(水) 01:12:22
俺は素でMSNだと思ってた
つかMSNってまだやってるのかね
734
名前:
デフォルトの名無しさん
:2006/01/25(水) 02:00:38
IEのデフォルトスタートページがMSNですよ。
735
名前:
デフォルトの名無しさん
:2006/01/25(水) 02:50:40
LRESULTってなにを返せばいいの?
736
名前:
デフォルトの名無しさん
:2006/01/25(水) 03:13:35
>>732
MSDNのDLサイトから消えたのは2003のSDKに一本化されたからじゃないの?
737
名前:
デフォルトの名無しさん
:2006/01/25(水) 08:28:08
>>735
LRESULTの数値を返せばいいの
738
名前:
デフォルトの名無しさん
:2006/01/25(水) 08:30:43
>>735
特に必要が無ければ0を返せば良い。
これ位訊かなくても本に書いてあるだろ。
739
名前:
デフォルトの名無しさん
:2006/01/25(水) 12:52:23
>>706
情報タダ取りか?
ちゃんと結果を報告しろよ、クズ!!
740
名前:
デフォルトの名無しさん
:2006/01/25(水) 13:11:19
デスクトップ上のウィンドウをWnumWindows関数で列挙して
それを全部半透明にするとデスクトップが暗くなります。
最初はデスクトップまで半透明になっているから暗くなってるのかと思ったのですが、
デスクトップのハンドルを除いて、後を全部半透明にしても暗くなります。
(というかデスクトップのハンドルは列挙されていないっぽい)
デスクトップをそのままにして、他を全部半透明にするにはどうしたらいいでしょうか?
741
名前:
デフォルトの名無しさん
:2006/01/25(水) 13:15:52
暗くなるってどんなのよ?
単に暗い色の壁紙が透けて見えるようになったから、とかじゃないだろうな?
742
名前:
デフォルトの名無しさん
:2006/01/25(水) 13:17:38
spy++で壁紙部分のウィンドウが何かみてみろ。
743
名前:
デフォルトの名無しさん
:2006/01/25(水) 13:26:05
"Program Manager"というウインドがそれっぽい。
744
名前:
デフォルトの名無しさん
:2006/01/25(水) 13:31:09
borland c++を使って勉強中の者です。
不器用なので、フリーのリソースエディタを上手に使えなくて
DialogBoxIndirectでダイアログを作成する事にしたんですが
DialogProcのWM_INITDIALOGで、自前のクラスをnewしたら
deleteする時に止まっちゃいました。
ためしに、DialogProc内にstaticで持つのを止めグローバルにして
DialogBoxIndirectから処理が返ってきた後、deleteしたんですが
それでもダメでした。
DialogBoxIndirectで作成したダイアログに貼り付けた
子ウインドウを、無事に削除する方法を教えてください。
よろしくお願いします。
745
名前:
デフォルトの名無しさん
:2006/01/25(水) 13:32:14
{
static CListView *listview = NULL;
switch(uMsg){
case WM_INITDIALOG:
if((listview = new CListView(hwndDlg)) == NULL){
ERROR;
}
return TRUE;
case WM_COMMAND:
switch(LOWORD(wParam)){
case IDOK:
ここで止まる→delete listview;
EndDialog(hwndDlg, IDOK);
return TRUE;
}
break;
}
return FALSE;
}
746
名前:
デフォルトの名無しさん
:2006/01/25(水) 13:36:10
GetDesktopWindow();
747
名前:
デフォルトの名無しさん
:2006/01/25(水) 13:48:22
>>744
borland c++はよく知らないけど
ダイアログがでてる間に消しちゃダメだろ
748
名前:
デフォルトの名無しさん
:2006/01/25(水) 14:06:07
自前のクラスにバグがあるのでは?
749
名前:
デフォルトの名無しさん
:2006/01/25(水) 14:19:34
ウインドウ作ったらDestroyWindowで破棄する。
子ウインドウの場合は親がやってくれるから自分で破棄する必要はない。
だからdeleteするとすればダイアログが閉じた後で
750
名前:
デフォルトの名無しさん
:2006/01/25(水) 14:21:38
>>744
貼りつけた子ウィンドウはどこでどうやってcreateしたのですか?
■過去ログ置き場に戻る■
1-
前250
次250
最新50
DAT2HTML
0.33f Converted.