■過去ログ置き場に戻る■ 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.