Win32API質問箱 Build66at TECH
Win32API質問箱 Build66 - 暇つぶし2ch454:デフォルトの名無しさん
08/05/26 00:19:42
ウィンドウプロシージャを差し替えたいんだけど、
なんかできないんだよね。

SetClassLong(hWnd, GCL_WNDPROC, (LONG)AnotherMyWindowProc);
この関数を用いる上でなんか注意点ある?
マウスやアプリのアイコン変更も反映されないんだけど。

455:デフォルトの名無しさん
08/05/26 00:33:58
注意点 msdnをよく読む事

456:デフォルトの名無しさん
08/05/26 00:43:49
>>453
そのオッサンのやりとりにお前が絡む必要はないのに、何が乙なんだ

457:デフォルトの名無しさん
08/05/26 00:45:43
俺の家の玄関に「硫化水素発生中」って貼った奴、氏ねよ

458:デフォルトの名無しさん
08/05/26 01:04:43
そのネタはもう旬を過ぎてるよ

459:デフォルトの名無しさん
08/05/26 01:06:41
まじでか

460:デフォルトの名無しさん
08/05/26 01:09:56
>>454
わろた

461:デフォルトの名無しさん
08/05/26 01:17:49
わらっつぁらめぇー

462:454
08/05/26 01:24:30
URLリンク(homepage1.nifty.com)
ここみてる限り間違ってないと思うんだがナー

463:デフォルトの名無しさん
08/05/26 01:33:14
>>462
それは良かったですね

464:デフォルトの名無しさん
08/05/26 01:37:50
とってもよかったでーす^^^;


465:デフォルトの名無しさん
08/05/26 01:53:01
>>462
赤字で書いてるとこと違う事をしてるのは、分かっててやってるの?
変更したクラスから新しくウィンドウを作るってんなら、それでいいんだけど。

466:デフォルトの名無しさん
08/05/26 11:46:16
どこをどう見ると間違ってないんだよw

SetWindowLong、SetWindowLongPtr、SetWindowSubclass使えよ

467:デフォルトの名無しさん
08/05/26 11:53:56
間違い探しかよw
ぱっと見てスルーしてたけど、SetClassLong使ってたのか

468:デフォルトの名無しさん
08/05/26 12:56:47
>>451
VS2005なら、Windows SDK6.0だか6.1入れてCLやRCをそちら付属品を
使うようにすればVista圧縮形式に対応できる。
VS2008はRCでもMSDEVリソースエディタでも標準サポート

469:デフォルトの名無しさん
08/05/26 15:43:24
>>452
9xだと本当にDOSが動いてるからね。
NTだと単なるエミュだし

470:デフォルトの名無しさん
08/05/26 15:52:02
>>468
さんくす
RC.EXEだけでも入れ替えておけばビルド後のイベントでゴニョゴニョする必要は無さそうだw
IDEのリソースエディタでアイコンなんて作らないからそっちはまぁいいや

471:デフォルトの名無しさん
08/05/26 16:26:48
>>470
VS2005だと、圧縮形式アイコンが含まれる.rcファイルがMSDEVで開けないんで注意

472:デフォルトの名無しさん
08/05/26 16:35:26
VC2005はmsdevじゃなくてdevenvだったと思うが。
そんな俺はVC6ユーザー

473:デフォルトの名無しさん
08/05/26 17:01:52
URLリンク(imepita.jp)
このような四角いボタンってどうやって作るんですか?

474:デフォルトの名無しさん
08/05/26 17:03:04
言い忘れました。×ボタンです。

475:デフォルトの名無しさん
08/05/26 17:09:14
クローズボタンのことが聞きたいのかオーナードローのボタンのことが聞きたいのか

476:デフォルトの名無しさん
08/05/26 17:25:53
1. Toolbar を作る
2. ImageList を作る
3. [×] のビットマップを作る
4. 3. のビットマップを 2. の ImageList に追加する
5. ImageList を Toolbar にセットする
6. Toolbar に 3. のビットマップを持つボタンを追加する

477:デフォルトの名無しさん
08/05/26 18:08:23
指定したiniファイルのキーを削除するapiを教えてください

478:デフォルトの名無しさん
08/05/26 18:08:57
やだ

479:デフォルトの名無しさん
08/05/26 18:55:43
WritePrivateProfileStringで
lpAppNameにセクション名
lpKeyNameにキー名
lpStringにNULL
lpFileNameにiniファイルのパスを指定すると
指定したセクション内のキーが消える

480:デフォルトの名無しさん
08/05/26 19:04:01
>>479
まじっすか^^
WritePrivateProfileStringで値をNULLにすると消えるんですね
これは知らなかった。ありがとうございます!

481:479
08/05/26 19:04:52
ってかMSDN読めよ

482:デフォルトの名無しさん
08/05/26 19:05:09
MSDNも読まずにWin32APIを使おうとする奴の気が知れない

483:デフォルトの名無しさん
08/05/26 19:05:36
つーか引数どうやって知ったのかw
そこに説明もあると思うんだがなあ

484:デフォルトの名無しさん
08/05/26 19:33:34
MSDNなんて読まなくていい
ここで質問するだけで丁寧な解説が日本語で得られる
お人好しな人間ほどうまく扱えば便利なものは無い


というのが俺の妄想

一応言っとくが俺はちゃんとMSDNで調べる派だからな

485:デフォルトの名無しさん
08/05/26 19:36:57
俺みたいに嘘を教える奴も居るから気をつけないと

486:デフォルトの名無しさん
08/05/26 19:40:39
俺みたいにかく乱する奴もいるからry

487:デフォルトの名無しさん
08/05/26 19:45:04
お前ら必死でワロタ

488:デフォルトの名無しさん
08/05/26 20:31:16
VC.net2003 + SDKで、ImageList使える?
ビルドは通るが、CreateWindowExでウィンドウ作成した時点で、'hoge, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' から
型 '_IMAGELIST' を読み込めません。って出て落ちるんだけど・・・

489:デフォルトの名無しさん
08/05/26 20:37:28
DiskcopyコマンドってどういうAPI使ってフロッピーに出力してるの?
このコマンドに限らずブート領域を書き込めるのって同じやり方だと思うんだけぢ
少なくともfoutやCopyFileではなさそう。

490:デフォルトの名無しさん
08/05/26 20:39:08
> 思うんだけぢ
どこの方言でぢか?

491:デフォルトの名無しさん
08/05/26 20:43:52
アマゾン地方の方言が出てしまいました

492:デフォルトの名無しさん
08/05/26 20:47:15
DeviceIoControlとかじゃないの
知らんけど

493:デフォルトの名無しさん
08/05/26 20:55:32
>>489
DDKを見ましょうね。

494:デフォルトの名無しさん
08/05/26 21:04:43
やだ

495:デフォルトの名無しさん
08/05/26 23:06:57
>>489
NTならCreateFileで"\\\\.\\A:"のようにすると生のドライブを開ける。SDKにも書いてある。
9xなら>>452。KB125712やKB174569など。

496:デフォルトの名無しさん
08/05/26 23:10:48
あした試してみよう

497:デフォルトの名無しさん
08/05/26 23:27:50
もうすぐ明日だろ

498:デフォルトの名無しさん
08/05/26 23:56:37
関数を動的に作ってウィンドウプロシージャとして渡す事ってできないんですか?

クラスのメンバ関数をウィンドウプロシージャにできないのが、
理屈ではよくわかるんですけど、なんか納得できなくてw
static使って場合分けするのもなんか反則的というか、やりたいことと違う気がして…
クラスのコンストラクタで関数を動的に作ってコントロールのプロシージャとして使い、
デストラクタでコントロールは期すると共に関数も破棄できないかなぁと。


…ゴメンナサイ、なんかもう投げやりです。

499:デフォルトの名無しさん
08/05/27 00:06:12
グローバル関数でのプロシージャで
各クラス内の自作プロシージャにそれぞれ処理を割り振ったりすれば良いんじゃない?

500:デフォルトの名無しさん
08/05/27 00:09:06
つーか自分でラッパー書けばいいだけじゃね

501:デフォルトの名無しさん
08/05/27 00:10:07
僕ハッカー!!!

502:489
08/05/27 00:11:11
CreateFile
DeviceIoControl
WriteFile
でなんかフロッピーに出してるのは判った
しかしこの方法でフロッピーの中にファイルを作る方法がわからなう

503:デフォルトの名無しさん
08/05/27 00:13:47
FAT32の仕組みでも覚えろ

504:デフォルトの名無しさん
08/05/27 00:14:44
>>498
URLリンク(web.archive.org)
ようするに、静的メンバ関数の中から
何らかの方法でウィンドウに対応するオブジェクトを得て、
そのオブジェクトの非静的メンバ関数に処理を渡せばいい。

ウィンドウクラスの場合、次のようなものを使って
オブジェクトへのポインタを保存する例が多い。
Get/SetProp
Get/SetWindowLongPtrとウィンドウクラスごとの追加データ
Get/SetWindowLongPtrとGWLP_USERDATA

ちなみに、ATLは本当に動的に関数を作って対処している。
URLリンク(hp.vector.co.jp)



505:デフォルトの名無しさん
08/05/27 00:16:02
>>502
逆に、ファイルがある状態のフロッピーディスクを
吸い出して中身を眺める、もちろんFATの構造の解説と一緒に。

506:デフォルトの名無しさん
08/05/27 02:10:13
アプリケーションへのアイコン設定は、
検索で調べると必ず .rc への記述方法が紹介されてますが、
.rc を経由せずに .cpp のプログラムのみで設定って出来るんでしょうか?
よろしくお願い致します。

507:デフォルトの名無しさん
08/05/27 03:17:45
>>502
何がしたいのかよくわからんが
フロッピーの中にファイルを作るのならばCreateFileでいいと思うが。
diskcopyだったらセクタを全部コピーすればいい

508:デフォルトの名無しさん
08/05/27 07:09:57
あるウィンドウがHWND_TOPMOSTで最善面になっているかどうかを判断するにはどうすればいいのでしょうか?

509:デフォルトの名無しさん
08/05/27 07:58:26
GetWindowLong(hwnd, GWL_EXSTYLE) & WS_EX_TOPMOST

510:デフォルトの名無しさん
08/05/27 08:25:20
>>504
atlthunk.cppが凄い
てかこんなのMSの中の人でないと書けないだろw

511:デフォルトの名無しさん
08/05/27 08:45:38
書ける奴はいくらでもいるだろうが、実際に、書こう思う奴は、それほどいない。
MFCはHWNDとベースクラスへのポインタを、
いわば、std::map< HWND, Hoge >的なもので管理していて、メッセージが来るたびに検索してると聞いたが。

512:デフォルトの名無しさん
08/05/27 09:33:10
>>511
実際に中身を見てから言って欲しいね

513:デフォルトの名無しさん
08/05/27 09:46:49
コード生成はWindowsより前なら常套手段だから昔の人なら楽勝

514:デフォルトの名無しさん
08/05/27 09:52:23
そんな話はしていない
いいから当該ソースを見ろ

515:デフォルトの名無しさん
08/05/27 10:24:54
WinMainからDialogBoxでモーダルダイアログを作成しております。
DialogProc内から例外をthrow(あるいはRaiseException)したところ、
WinMainで正常にcatch出来ました。

ところがDialogProcからさらに孫ダイアログを作成し、
孫ダイアログのDialogProc内から例外をthrowしたところ、
子ダイアログのDialogProcでcatch出来たのですが、
return後にAccess violationで落ちてしまいました。

どうすればreturn後に処理を続行できるのでしょうか?

516:デフォルトの名無しさん
08/05/27 10:27:53
長くて恐縮ですがソースを貼らせて頂きます。
INT_PTR CALLBACK proc2(HWND wnd, UINT msg, WPARAM w, LPARAM) {
 switch (msg) {
  case WM_INITDIALOG: return TRUE;
  case WM_COMMAND:
   switch (LOWORD(w)) {
    case IDOK:
     EndDialog(wnd, LOWORD(w));
     throw std::exception("HOGE!"); // 例外をthrow
    case IDCANCEL: EndDialog(wnd, LOWORD(w)); return TRUE;
   } break; } return FALSE;
}
INT_PTR CALLBACK proc1(HWND wnd, UINT msg, WPARAM w, LPARAM) {
 switch (msg) {
  case WM_INITDIALOG: return TRUE;
  case WM_COMMAND:
   switch (LOWORD(w)) {
    case IDOK:
     try {
      DialogBox(GetModuleHandle(0), MAKEINTRESOURCE(IDD_2), wnd, proc2);
     } catch (const std::exception&) {}
     return TRUE; // return後にAccess violation
    case IDCANCEL: EndDialog(wnd, LOWORD(w)); return TRUE;
   } break; } return FALSE;
}
int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
 try {
  DialogBox(GetModuleHandle(0), MAKEINTRESOURCE(IDD_1), 0, proc1);
 } catch (const std::exception&) {
 } catch (...) {} return 0;
}

517:デフォルトの名無しさん
08/05/27 10:44:00
>>515
C++以外のスタックフレームを飛び越えるthrow~catchって
頭の悪いlongjmpと同じだと思うがどうか

518:デフォルトの名無しさん
08/05/27 11:01:23
文字列の"123.45"をfloatに変換するAPIを教えてくだせえ

519:デフォルトの名無しさん
08/05/27 11:07:35
なんでわざわざAPI使うん?

520:デフォルトの名無しさん
08/05/27 11:11:36
wsprinf があるんだから wsscanf もあるにちがいないw

521:デフォルトの名無しさん
08/05/27 11:13:22
atofの返値がfloatじゃなくてdoubleだからって言いそうな気がする。

522:デフォルトの名無しさん
08/05/27 11:17:36
いやdoubleでもいいからさっさと教えろよ
どうせ知らないだろーけど


523:デフォルトの名無しさん
08/05/27 11:36:08
VarR4FromStr
VarR8FromStr

524:デフォルトの名無しさん
08/05/27 12:23:01
>>520
wsscanfならMSのFTP鯖にソースが置いてある
Win16時代の物みたいだから今でも使えるかどうかは知らん

525:デフォルトの名無しさん
08/05/27 12:30:58
crtdll.dllからscanfをインポートして使う・・・ってのはAPIの範疇というと苦しいか?

526:デフォルトの名無しさん
08/05/27 12:52:43
msvcrt.dllならいいんじゃね

527:デフォルトの名無しさん
08/05/27 13:07:36
crtdllとかmsvcrtにあるprintfとかscanfって_stdcallじゃなくて_cdeclでいいんだよね?

528:デフォルトの名無しさん
08/05/27 14:28:31
wsprintfもcdeclだろ
可変長なのにどうやって呼び出し先でスタックポインタを戻せるんだよ

529:デフォルトの名無しさん
08/05/27 15:10:26
うるせークズ

530:デフォルトの名無しさん
08/05/27 15:13:58
>>528
キモいよ

531:デフォルトの名無しさん
08/05/27 15:14:00
可変長のはともかく、strcpyとかもCDECLでいいんだろうか?

532:デフォルトの名無しさん
08/05/27 15:16:09
試せばいいだろハゲ

533:デフォルトの名無しさん
08/05/27 15:23:22
そんなの関係ねーだろクズが

534:デフォルトの名無しさん
08/05/27 15:31:18
関係ねー事聞くなカス

535:デフォルトの名無しさん
08/05/27 15:35:03

            ノ
           (゚Д゚)
           ( (7
           < ヽ

536:デフォルトの名無しさん
08/05/27 15:38:25
>>531みたいなのは実際試した場合間違っていても動いちゃうから困りもの

537:デフォルトの名無しさん
08/05/27 15:44:25
>>535
なんだその態度は!!

538:デフォルトの名無しさん
08/05/27 16:42:51
>>536
デバッグビルドなら呼び出し後にchkstkでESPがチェックされるから大抵気付く

539:デフォルトの名無しさん
08/05/27 18:25:05
FindWindow関数によってハンドルを調べたウィンドウを強制的に移動させるにはどうしたらよいでしょうか。
SendMessage関数でWM_MOVEを送っても移動しないことがあります。

540:デフォルトの名無しさん
08/05/27 18:26:36
WM_MOVEは動いた後に送られてくるメッセージなのに
それで動くウインドウがあるのか?

541:デフォルトの名無しさん
08/05/27 18:28:35
正しくはどのメッセージを送ればよいのでしょうか?


542:デフォルトの名無しさん
08/05/27 18:29:27
>>541
MoveWindow 関数で

543:デフォルトの名無しさん
08/05/27 18:30:30
ありがとうございます。

544:デフォルトの名無しさん
08/05/27 18:32:30
SetWindowPosとかもあるし、好きなので。

545:デフォルトの名無しさん
08/05/27 19:17:01
>>540
WM_SIZEを送ると動くウィンドウならあるよ

546:デフォルトの名無しさん
08/05/27 19:29:00
動かないウィンドウもあるってことですね。

547:デフォルトの名無しさん
08/05/27 19:49:39
>>517
遅レスすいません。
プロシージャ内で気軽にSTLなどを使いたかったのですが、邪道だったでしょうか・・・。
とりあえずプロシージャをreturnする前に全てcatchする方向で再考してみます。

548:デフォルトの名無しさん
08/05/27 19:50:20
STLが○| ̄|_にみえたのは俺だけですか?

549:デフォルトの名無しさん
08/05/27 19:53:30
>>548
面白くないよ

550:デフォルトの名無しさん
08/05/27 20:02:12
確かDispatchMessageを例外捕捉しとくとウィンドウ内部の例外が捕まえられたような

551:デフォルトの名無しさん
08/05/27 20:07:35
>>549は大爆笑して悔しかったんだろうなぁ

552:デフォルトの名無しさん
08/05/27 20:09:17
そもそもAPIから呼ばれるコールバック関数内で例外を投げるなんてアホとしか思えない

553:デフォルトの名無しさん
08/05/27 20:09:49
>>548=>>551
はいはいわろす

554:デフォルトの名無しさん
08/05/27 20:11:58
>>535,537
ワロタw

555:デフォルトの名無しさん
08/05/27 20:41:01
>>550
VC++ではC++例外を構造化例外で実装してるようだから捕まえられるかもしれないけど
C++言語的には未定義動作だからやめた方がいい

556:デフォルトの名無しさん
08/05/27 20:56:03
未定義とか不定とかどうでもいい
今時VC++以外でWin32開発してる奴の方が悪い

557:デフォルトの名無しさん
08/05/27 20:57:48
VCなんてもう終わってるだろうがw

558:デフォルトの名無しさん
08/05/27 21:27:35
終わってません
というか終わりません

559:デフォルトの名無しさん
08/05/27 22:08:58
MSではVBについで売れてる言語製品だしな

560:デフォルトの名無しさん
08/05/27 22:13:15
でも、そのVB6も来月で...

561:デフォルトの名無しさん
08/05/27 22:13:38
何その時代錯誤

562:デフォルトの名無しさん
08/05/27 22:39:04
俺も516みたいにWinMainにcatch書くことはあるけど、
その場合はエラーログ書いたりメッセージ出したりして、
とっととExitProcessするだけだな。

563:デフォルトの名無しさん
08/05/28 11:16:09
VBwwwwwwwwwwwwwwwwwwwwww

564:デフォルトの名無しさん
08/05/28 18:11:40
Visual Baka

565:デフォルトの名無しさん
08/05/28 18:21:52
violence bokan

566:デフォルトの名無しさん
08/05/28 19:41:40
>>564
C、C++に挫折した馬鹿しか使わない言語という事ですね?

567:デフォルトの名無しさん
08/05/28 20:34:14
int wmain()
{
HMODULE hModule;
HBITMAP hBitmap;
int count = 0;
std::wcout.imbue(std::locale("japanese"));
while (1)
{
hModule = LoadLibrary(L"hoge.exe"); //単一で数MBのBMPリソースのあるファイル
hBitmap = LoadBitmap((HINSTANCE)hModule, L"#200"); //そのリソース番号
if (!hBitmap)
{
FreeLibrary(hModule);
std::wcout << L"画像読み込み失敗" << std::endl;
return 1;
}
FreeLibrary(hModule);
count++;
std::cout << count << std::endl;
}
return 0;
}

大した回数(自分の環境では45回)も行かない内に画像リソースの読み込みに失敗します。
原因は何でしょうか。
環境はWinXP Home SP3、VC++2008EEです。
上記はあくまで耐久テスト用ですが、実際のソフトも仕様上ファイルのロード→アンロード回数は予測出来ません。

568:デフォルトの名無しさん
08/05/28 20:43:12
>>567
MSDNライブラリでLoadBitmap引いたらちゃんと注意書きがあるから嫁。

569:デフォルトの名無しさん
08/05/28 20:43:21
>>567
DeleteObject(hBitmap)してないからでは?

570:デフォルトの名無しさん
08/05/28 21:05:12
NT系ならDeleteObjectしなくても約10000回Loadできるはずだが

571:デフォルトの名無しさん
08/05/28 21:24:59
なんでできるの?画像がたとえば4MBだとして、500も読めば
アプリの仮想アドレス空間が枯渇するぜ?

572:デフォルトの名無しさん
08/05/28 21:27:54
外からウィンドウ内にカーソルを持って来ると、大きさ変更するときの ←→ の
形のままで普通のカーソルの形に戻りません。
CreateWindowEx、WS_OVERLAPPEDWINDOW 以外に何かいるんですか?

573:デフォルトの名無しさん
08/05/28 21:29:04
GetWindowLong, SetWindowPos 等で失敗すると 0 が返る関数は
製作者が引数に渡す値をしくじった時に失敗するのは当然ですが
絶対に動作するはずの引数で、OSが何かしらの問題で失敗する事ってありますか?
他人が書かれているコードを見ても、成功する事が前提で書かれているものばかりで問題ないのか疑問です
このような関数が失敗する時は、OSが動いているのも不思議なくらいの状態で いつOSが止まってもおかしくない状況なので
アプリケーションで取得できなかった値を使用して不具合が出るよりOSの方が重症なのでエラーチェックを行っていないという事なのでしょうか?
誰か詳しい方 教えてください

574:567
08/05/28 21:33:00
回答ありがとうございます。
耐久テストのコードではその方法で解決しました。

実際のコードはhBitmapをウィンドウプロシージャのスタティックなローカル変数として宣言し、メッセージ処理先(LBN_SELCHANGE)で画像リソースを呼び出しています。
これを止めてメッセージの処理先で
static HBITMAP hBitmap;
と宣言したら以下のコンパイルエラーが出てしまい、どうにも出来ません。

error C2065: 'hBitmap' : 定義されていない識別子です。

575:デフォルトの名無しさん
08/05/28 21:35:28
>>572
WNDCLASS の hCursor にカーソルを設定する
あるいは WM_SETCURSOR メッセージで SetCursor を呼びカーソルを設定する

576:デフォルトの名無しさん
08/05/28 21:42:58
>>575
ありがとうございました。

577:デフォルトの名無しさん
08/05/28 21:43:16
>>574
Win32API以前の問題だ。
自分でなんとかしろ。

578:デフォルトの名無しさん
08/05/28 22:04:56
>>577
ダイアログに画像を表示したらDeleteObject()しても良かったんですね…。
VB.NETで同じようなコードをBitmapオブジェクトで行ったらエラーが出たのでWin32APIでもそうだと勘違いしていました。
C++でGUIアプリを作り始めてまだ1週間ですが、少し背伸びし過ぎました。

579:デフォルトの名無しさん
08/05/28 22:05:28
C言語すら禄に理解してない癖に何が耐久テストだよ

580:デフォルトの名無しさん
08/05/28 22:07:06
なんだVisual Bakaプログラマだったのかw

581:デフォルトの名無しさん
08/05/28 22:37:55
>>579,580
罵るしか能の無い奴は消えろ


582:デフォルトの名無しさん
08/05/28 22:45:51
いやです

583:デフォルトの名無しさん
08/05/28 22:47:12
それぐらいしか楽しみがないんだろうから許してやってもいいんじゃ

584:デフォルトの名無しさん
08/05/28 22:50:05
つうか罵られるのが嫌なら2ちゃんで質問しなければいいのでは

585:デフォルトの名無しさん
08/05/28 23:01:23
当事者以外にも罵り文を見て不快に思う人がいるだろう

586:デフォルトの名無しさん
08/05/28 23:02:54
不快に思うのが嫌なら2ちゃんに来なければいいのでは

587:デフォルトの名無しさん
08/05/28 23:03:23
次にお前は「そんな奴が2ちゃん見るなよ」と言う。

って書こうと思ったのに

588:デフォルトの名無しさん
08/05/28 23:09:08
MSDNすら読まずに質問する奴なんて叩かれて当然

589:デフォルトの名無しさん
08/05/28 23:09:13
○○が嫌なら××しなければいいだろう

この言葉だけでは解決できない事がどれだけ溢れてると思ってるんだ

590:デフォルトの名無しさん
08/05/28 23:10:09
>>588
なら「MSDN読め」でいい、独り言を言うように罵り煽る奴はいらん

591:デフォルトの名無しさん
08/05/28 23:13:03
>>590
MSDN読め

592:デフォルトの名無しさん
08/05/28 23:21:30
それくらい察して欲しかったって言うのが本音。

593:デフォルトの名無しさん
08/05/28 23:25:43
話を理解してない馬鹿は知らないならそれぐらい察してレスしないでMSDN読んでほしかったってのが本音

594:デフォルトの名無しさん
08/05/29 03:55:50
VBwwwwwwwwwwwwwwwwwwwwww

595:デフォルトの名無しさん
08/05/29 08:10:11
複数スレッドから参照されるキューへの出入力で排他処理を行いたいのですが、
カウンタ1の無名セマフォとクリティカルセクションではどちらの使用が適切なのでしょうか?

596:デフォルトの名無しさん
08/05/29 08:30:48
クリティカルセクション

597:デフォルトの名無しさん
08/05/29 08:48:08
このスレの住人ってVBプログラマいないの?
まあVBだとネイティブなAPI使わない事が
多いだろうから少ないかもね

598:デフォルトの名無しさん
08/05/29 09:51:07
ドットロネットロに移行してるだろうし

599:デフォルトの名無しさん
08/05/29 10:14:39
>>596
ありがとうございます。

600:デフォルトの名無しさん
08/05/29 12:47:24
Virtual Batouスレですね

601:498
08/05/29 13:22:09
>>504
質問しといて、亀でゴメンナサイ…
やはりキーとなるデータ使ってマップみたいなことするのが一般的なんですね…

…動的に関数作れるのならちょっと試してみます
ありがとうございました。

602:デフォルトの名無しさん
08/05/29 14:34:11
マップつっても二分探索なら大して負荷にならんだろ

603:デフォルトの名無しさん
08/05/29 16:15:07
おまんこ

604:デフォルトの名無しさん
08/05/29 16:32:52
んがくく

605:デフォルトの名無しさん
08/05/29 21:53:12
画面を分割してそれぞれに違うものを表示するのは子ウィンドウを使っているのですか?
例えばIEだと、HPを表示する部分とお気に入り・履歴などが分かれていますが、あれも子ウィンドウを使っているのでしょうか?


606:デフォルトの名無しさん
08/05/29 21:56:59
>>605
そうだと思うよ。
SPYとかで調べてみたらいいんじゃないかな。

607:605
08/05/29 22:13:08
>>606
SPYを使えばそういうことまで分かるのですか
ダウンロードしてみようと思います
ありがとうございました

608:デフォルトの名無しさん
08/05/29 22:56:43
Spy++ってタダで入手できたか?

てか、今やWin32/C++使いから見ると商用版VisualStudioの価値って
リソースエディタとCRT/ATL/MFCのソースコードとSpy++ぐらいなんだよなー

609:デフォルトの名無しさん
08/05/29 23:00:11
SDKのUISpyでも十分目的は果たせると思うお

610:デフォルトの名無しさん
08/05/29 23:05:04
フリーソフトでスパイよりいいのあるお

611:デフォルトの名無しさん
08/05/29 23:25:35
Spy++の代わりにフリーソフト使ったら負けかなと思ってる

612:デフォルトの名無しさん
08/05/30 00:23:14
Winspactor Spy使ってる

613:デフォルトの名無しさん
08/05/30 00:28:05
Winsp「e」ctorだろう

614:デフォルトの名無しさん
08/05/30 00:33:25
昔のPlatform SDKにサンプルとしてSpyってのがあったんだけどな。
ソース付きで、Spy++のちょっとショボくなったやつ。
今はそういうサンプル全部無くなってるな。

615:デフォルトの名無しさん
08/05/30 00:46:35
>>614
あれ、ちょっとどころか相当ショボイだろ

URL忘れたけど、MSサイトのどこかに
解凍すると130MBのchmが出てきて大量にSDKサンプルの入ってるやつがあった
その中におまいさんの言ってるSpyのソースコードも入ってるよ

616:デフォルトの名無しさん
08/05/30 00:49:07
そんなにショボかったかw
見たの10年くらい前だから、もうよく覚えてないな。

617:デフォルトの名無しさん
08/05/30 01:23:01
>>616
歳がばれるぞw

618:デフォルトの名無しさん
08/05/30 01:42:32
現役大学生か。若いな。

619:デフォルトの名無しさん
08/05/30 02:33:33
spyそのものはspy++が出るまでSDKの普通のツールだったしな

620:デフォルトの名無しさん
08/05/30 08:56:51
MIIM_CHECKMARKS の
MIIMって何の略ですか?
Menu* だとは思うのですが.

621:デフォルトの名無しさん
08/05/30 09:35:02
MenuItemInfoMask

622:デフォルトの名無しさん
08/05/30 11:41:50
int main(int argc, char *argv[])
コンソールアプリだとこれで引数渡せるけど

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
APIじゃこう宣言されてるよね
非コンソールアプリを実行する時に
プログラム名 -オプション
ってやるにはどうすればいい?

623:デフォルトの名無しさん
08/05/30 11:43:40
>>615
探したけどみつからないお><
もうなくなちゃったのかな?

624:デフォルトの名無しさん
08/05/30 11:44:00
>>622
lpCmdLineに引数が入ってる

625:デフォルトの名無しさん
08/05/30 12:28:02
GetCommandLine

626:デフォルトの名無しさん
08/05/30 12:29:15
__argcと__argv

627:デフォルトの名無しさん
08/05/30 12:46:09
ついでにUnicodeであればlpCmdLineをCommandLineToArgvWに通すとLPWSTRの配列に分解してくれる

628:デフォルトの名無しさん
08/05/30 12:47:43
>>619
VC2の頃なんか普通にあったなSpy。アイコンもスパイ風の男で、VC4だかの初代Spy++は
そのアイコンに++の絵が付いただけ。
というかSpyの強化版だから「Spy++」になったわけだし

629:デフォルトの名無しさん
08/05/30 13:05:35
次のバージョンではSpy#になるんですね。わかります。

630:デフォルトの名無しさん
08/05/30 13:15:19
その次はSpy.NETになるんですね。わかります。

631:デフォルトの名無しさん
08/05/30 15:21:58
Spy.NETってもうなかったっけ?

632:デフォルトの名無しさん
08/05/30 15:28:33
URLリンク(www.spy.net)

633:デフォルトの名無しさん
08/05/30 16:22:32
ウィンドウで
Set/GetWindowLongがあるように

スレッドとかプロセス別に値収納する奴ってありますか?

634:デフォルトの名無しさん
08/05/30 16:35:56
>>633
スレッドはスレッドローカルストレージってやつでスレッド固有の値を保持できるよ。詳細はmsdnみろ
プロセスは普通にグローバル変数使えばいいんでは…?

635:デフォルトの名無しさん
08/05/30 16:40:02
Get/SetLastErrorを使うとスレッド別に32bitの値を格納できる

636:デフォルトの名無しさん
08/05/30 17:11:13
スレッドならTLSを使う。

プロセスについては、自分以外のプロセスを管理する上でそれぞれに値を割り当てたいなら、
HPROCESS取得・VirtualAllocExで確保してRead/WriteProcessMemoryでアクセスという手はある。
用途が全く見えないが。

637:デフォルトの名無しさん
08/05/30 17:15:30
HPROCESS
HPROCESS
HPROCESS

638:デフォルトの名無しさん
08/05/30 20:17:10
ダイアログに追加したステータスバーにツールチップを表示したくてSBT_TOOLTIPSを指定して作成しました。
ディスプレイの水平解像度を超える長い文字列を表示するとツールチップがはみ出してしまいます。
これを折り返す方法はないのでしょうか。

SendDlgItemMessage(hDlg, IDC_STAT1, TTM_SETMAXTIPWIDTH, 0, (LPARAM)(int)320);

などとしても駄目でした。

639:デフォルトの名無しさん
08/05/30 20:45:15
確かこうやる
RECT rc;
SystemParametersInfo(SPI_GETWORKAREA, 0, &rc, 0);
SendMessage(hToolTip, TTM_SETMAXTIPWIDTH, 0, rc.right - rc.left);


640:デフォルトの名無しさん
08/05/30 21:22:52
>>639
試してみましたが駄目でした。
ステータスバーに初めから備わったツールチップ機能を使用しているので、独自にツールチップをCreateWindowEx()している訳ではありません。

VB.NETやC#に例えるなら以下のプロパティを設定した場合とほぼ同じです。
これらの言語では特に何もしなくても折り返し表示されました。

ToolStatusStripLabel1.AutoToolTip = False
ToolStatusStripLabel1.ToolTipText = "表示する内容"

641:デフォルトの名無しさん
08/05/31 01:37:42
VB.NETやC#の宣伝がしたいなら余所へどうぞ
そもそもステータスバーにそんな長いツールチップを出すのがUIとして間違い


とは言え
ToolStripとその派生コンポーネントって便利杉だよなー
まぁ.NET2.0のウリだったからな

642:デフォルトの名無しさん
08/05/31 02:41:56
ToolStripをパクったクラスをC++で作ればいいじゃない

643:デフォルトの名無しさん
08/05/31 02:51:43
ブビ厨がそんなの作れる訳ないじゃんw

644:デフォルトの名無しさん
08/05/31 04:52:35
メニューのRebar化ってどうやってやるのかなと思って、
WTLのソース覗いてみたら、5000行近くあって吹いた。

645:デフォルトの名無しさん
08/05/31 05:02:49
メニューのレバー化、俺も考えたけど、メニューをツールバー化しないと無理っぽいし。あきらめたわ
ツールバー化したら、メニュー文字間隔が変だし。どうにかしてメニューをレバーに突っ込めないかな

646:デフォルトの名無しさん
08/05/31 05:14:30
だからレバーじゃなくてリバーだと(ry

つうかReBar化って何だよ
ReBarに入れるって意味ならそう言え

647:デフォルトの名無しさん
08/05/31 05:20:58
>>644
WTLのはメニュー項目にアイコン付ける為のオーナードロー込みだからデカいだけ
純粋にCommandBarだけなら2000行ぐらいだ

648:↑
08/05/31 05:22:46
最も無意味なカキコの例

649:デフォルトの名無しさん
08/05/31 05:30:19
妄言吐くだけのキモイ奴が多すぎ

650:デフォルトの名無しさん
08/05/31 05:32:54
>>646
Rebar化で十分通じるわマヌケ

651:デフォルトの名無しさん
08/05/31 05:34:57
>>650
開き直るなマヌケ

652:デフォルトの名無しさん
08/05/31 05:51:37
>>651
ごめんなさいマヌケ

653:デフォルトの名無しさん
08/05/31 05:52:52
>>652
どういたしましてマヌケ

654:デフォルトの名無しさん
08/05/31 05:53:39
煽りいれる奴は、かまってちゃんだから相手にしない方がいいよ

655:デフォルトの名無しさん
08/05/31 05:56:44
わかってるよ
俺もかまってちゃんなんだよ

656:デフォルトの名無しさん
08/05/31 06:03:17
かまってちゃんだから2ちゃんねらなんだよ

657:デフォルトの名無しさん
08/05/31 09:21:20
>>645
漏れ、レバーはキライなんだよ。

658:デフォルトの名無しさん
08/05/31 11:52:20
質問内容も馬鹿丸出しだし、レバーなんていう人にはロクなのがいないね。

659:デフォルトの名無しさん
08/05/31 12:00:21
訳:かまってほしいな


660:デフォルトの名無しさん
08/05/31 12:01:11
もっとかまってよー

661:デフォルトの名無しさん
08/05/31 13:46:51
657は食い物のことを言ってるんだと思った。

662:デフォルトの名無しさん
08/05/31 13:49:02
メニューの肝臓化

663:デフォルトの名無しさん
08/05/31 13:50:56
キモ

664:デフォルトの名無しさん
08/05/31 15:00:48
リバーでもレバーでもどっちでもいいよ。


そんなの見たことも聞いたこともないから。
なにみんな脳内妄想語ってるの?ってカンジ?みたいな~。

665:デフォルトの名無しさん
08/05/31 15:07:31
だって脳内妄想を語るスレじゃん?ってカンジ?みたいな~。

666:デフォルトの名無しさん
08/05/31 19:15:37
またレバーリバーの言葉遊びで100レス消費するつもりか?
頭悪い奴が増えたな

667:デフォルトの名無しさん
08/05/31 19:18:13
ビルゲイツ氏ね

668:デフォルトの名無しさん
08/05/31 19:58:34
不毛な論争で無駄なレスを消費しないよう今後は以下のカタカナ表記で統一しましょう。
(出来る限り英語の発音に合わせたため一般的なカタカナ語とは表記に違いがあります)

Common Control カムン ケントロウル

Button バテン
Static ステァティク
Edit エディト
ListBox リスト バクス
ComboBox カンボゥ バクス
ScrollBar スクロウル バー

Toolbar トゥール バー
Status Bar ステイテス バー
TrackBar トラェック バー
Progress Bar プラグレス バー
TreeView トゥリーヴュー
ListView リストヴュー
HotKey ハット キー
Header ヘダー
Tab テァブ
Animate エァネメイト
ToolTip トゥール ティプ
Month Picker マンス ピカー
DateTime Picker デイト タイム ピカー
ReBar リバー
UpDown アプ ダウン
Pager ペイヂア
Native Font ネイティヴ ファント
Chevron シェヴラン
ImageList イミヂ リスト

669:デフォルトの名無しさん
08/05/31 20:04:27
いやいや違うな

Common Control カマン カンチョロォ
Button バトゥン

とかの方が正確だろ

670:デフォルトの名無しさん
08/05/31 20:10:11
Button バラゥン

の方が正確かも

671:デフォルトの名無しさん
08/05/31 20:10:52
不覚にもwww

672:デフォルトの名無しさん
08/05/31 20:12:05
リソース外のbmpやjpeg等の画像を読み込むAPIがあれば教えてください

673:デフォルトの名無しさん
08/05/31 20:13:39
GDI+
OleLoadPicture
IImgCtx

674:デフォルトの名無しさん
08/05/31 23:28:22
>>671
ワロタwww

675:デフォルトの名無しさん
08/05/31 23:41:50
>>669はイギリス、>>670はアメリカの英語に近い。

676:デフォルトの名無しさん
08/05/31 23:52:32
もう発音記号でいいよ

677:デフォルトの名無しさん
08/06/01 00:00:51
国際音声記号でいいよ


678:デフォルトの名無しさん
08/06/01 00:04:42
発音する訳じゃないんだから、普通に英語表記でいいだろwww

679:デフォルトの名無しさん
08/06/01 00:13:43
カマン コンチュロゥルについてなのですが、コマンドゥバァをSDKで使うサンプルないのでしょうか?
ネッツで調べても見つからなくて

680:デフォルトの名無しさん
08/06/01 00:14:49
英語でおk

681:デフォルトの名無しさん
08/06/01 00:35:59
×サンプル
○サンポゥ

682:デフォルトの名無しさん
08/06/01 00:42:15
katakana yamete eigoni sitara?

683:デフォルトの名無しさん
08/06/01 00:43:51
sorya ro-maji yanke


684:デフォルトの名無しさん
08/06/01 00:45:24
muri iwanaide kudasai ><

685:デフォルトの名無しさん
08/06/01 00:50:13
yominikuidesu ><


686:デフォルトの名無しさん
08/06/01 00:52:25
omaera omoroi

687:デフォルトの名無しさん
08/06/01 00:52:53
nanda kono nagare

688:デフォルトの名無しさん
08/06/01 00:54:51
fudan doori jan


689:デフォルトの名無しさん
08/06/01 02:58:41
GetProcessHeap tte NULL ga kaettekuruktoaruno?

690:デフォルトの名無しさん
08/06/01 03:00:43
aruyo

691:689
08/06/01 03:02:16
>>690
kaette kitakoto naindaga
maa hinnpannnitukaumonojanaikara doudemoiika

692:デフォルトの名無しさん
08/06/01 03:04:45
おまえらローマ字とか恥ずかしいからやめてくれ

693:デフォルトの名無しさん
08/06/01 03:15:44
ryoukai

694:デフォルトの名無しさん
08/06/01 04:28:20
>>692
Yes, sir.

695:デフォルトの名無しさん
08/06/01 04:30:56
>>692
Okay.

696:デフォルトの名無しさん
08/06/01 04:48:58
>>692
ming bai le

697:デフォルトの名無しさん
08/06/01 10:10:52
>>692
daga kotowaru

698:デフォルトの名無しさん
08/06/01 10:36:43
I don't give a FUCK!!

699:デフォルトの名無しさん
08/06/01 10:54:51
nani konosure

700:デフォルトの名無しさん
08/06/01 11:10:45
英語の出来ない人が似非英語を書いたりローマ字書いたりするだけの悲しいスレ

701:デフォルトの名無しさん
08/06/01 11:42:38
>>696
nanigodetuka?

702:デフォルトの名無しさん
08/06/01 11:47:50
detteiu

703:デフォルトの名無しさん
08/06/01 11:56:07
>>701
[明白了] chugoku go desu yo

704:デフォルトの名無しさん
08/06/01 12:01:51
bokuhacker!

705:デフォルトの名無しさん
08/06/01 12:07:21
moudameda

706:デフォルトの名無しさん
08/06/01 12:10:57
romaji no dekinai hito ga, ese-chuugokugo wo kaitari nihongo kaitari surudakeno kanashii sure.

707:デフォルトの名無しさん
08/06/01 12:49:18
>>706
abusett teno's anu cincit unegun sent skipet?


708:デフォルトの名無しさん
08/06/01 12:52:16
明日まで書込み禁止

709:デフォルトの名無しさん
08/06/01 12:54:42
jichichuu otsu

710:デフォルトの名無しさん
08/06/01 12:55:30
いい加減にしろ

711:デフォルトの名無しさん
08/06/01 12:56:15
naniwo?

712:デフォルトの名無しさん
08/06/01 12:57:47
業とらしく言うんじゃねーよクソカス
黙れないなら死ね

713:デフォルトの名無しさん
08/06/01 12:59:48
hate?

714:デフォルトの名無しさん
08/06/01 13:00:34
ahosuguru

715:デフォルトの名無しさん
08/06/01 13:01:30
yaku : kamatte hoshiina

716:デフォルトの名無しさん
08/06/01 13:02:31
いいから黙れ
ローマ字で会話するのを止めろ

717:デフォルトの名無しさん
08/06/01 13:03:35
OK

718:デフォルトの名無しさん
08/06/01 13:04:12
nande sonnnani hitoni meirei shitagaruno?

719:デフォルトの名無しさん
08/06/01 13:05:35
souda, kaiwa suruna to iwaretakara, kaiwa wo naritatasenakereba iinda.

720:デフォルトの名無しさん
08/06/01 13:05:51
スレと関係ない話題をいつまでも引っ張ってるからだクソガキ

721:デフォルトの名無しさん
08/06/01 13:06:46
yaku : kamatte hoshiina

722:デフォルトの名無しさん
08/06/01 13:08:10
超伸びてると思ったら何この流れ。

723:デフォルトの名無しさん
08/06/01 13:09:14
日本語でおk

724:デフォルトの名無しさん
08/06/01 13:09:16
irassyai
isshoni asobo-

725:デフォルトの名無しさん
08/06/01 13:10:12
ここまで俺の自演。

726:デフォルトの名無しさん
08/06/01 13:10:51
いいや俺だ。

727:デフォルトの名無しさん
08/06/01 13:11:32
nani ka shitumon ga areba moto no nagare ni modoru yo
son-nani kakka sinai hou ga ii to omou na

728:デフォルトの名無しさん
08/06/01 13:23:31
久しぶりに基地害を見た。

729:デフォルトの名無しさん
08/06/01 13:24:05
毎日くれば毎日見られるよ


730:デフォルトの名無しさん
08/06/01 13:26:19
これやってるの一人か二人なんだろうな。そろそろ通報しとくか。

731:デフォルトの名無しさん
08/06/01 13:26:44
なんでWin32APIスレだけこんなに荒れるの?

732:デフォルトの名無しさん
08/06/01 13:33:38
普段、話についてこれないやつが初めて自分のローマ字を披露できたんだ。見守ってやれ

733:デフォルトの名無しさん
08/06/01 13:36:56
つーかなんでこの板IDないの?

734:デフォルトの名無しさん
08/06/01 13:59:07
そのように設定していないから。

735:デフォルトの名無しさん
08/06/01 14:10:52
今日はここに沸いてたのか

736:デフォルトの名無しさん
08/06/01 14:38:34
毎日ここに沸いてるよ

737:682
08/06/01 15:43:35
こんな事になるとは思わなかった
スマソ

738:デフォルトの名無しさん
08/06/01 16:00:04
ごみレスだらけだよ

739:デフォルトの名無しさん
08/06/01 16:07:37
>>737
二度と来るなカス

740:デフォルトの名無しさん
08/06/01 16:10:59
>>739
ごめんねカス

741:デフォルトの名無しさん
08/06/01 16:41:05
>>740
win32APIスレに居て欲しいタイプじゃないから、別スレに移動してくれませんか?

742:デフォルトの名無しさん
08/06/01 16:44:35
>>737
言葉の揚げ足取ってうれしがる奴は邪魔。
もうこないでほしい

743:デフォルトの名無しさん
08/06/01 16:45:22
あなた好みのタイプなんて知ったことじゃありません

744:デフォルトの名無しさん
08/06/01 16:51:33
相手にされてうれしがってるだけなんだから、もう相手するのやめようよ。

745:デフォルトの名無しさん
08/06/01 16:52:41
↑一番相手にするタイプ

746:デフォルトの名無しさん
08/06/01 17:00:21
683から736は俺じゃないんだがな

747:デフォルトの名無しさん
08/06/01 17:03:45
ほら早速。

748:デフォルトの名無しさん
08/06/01 17:07:59
DVDとかCDをフォーマットするには何て関数使えばいい?

749:デフォルトの名無しさん
08/06/01 17:16:13
見てる側からすれば変な発言にノッタお前らも邪魔なんだけどな
煽る奴も邪魔

スルー覚えろよ

750:デフォルトの名無しさん
08/06/01 17:22:36
>スルー覚えろよ
そういうあなたがスルーを覚えられていないようなので
スルーを覚えるつもりはありません。

751:デフォルトの名無しさん
08/06/01 17:23:53
} while (1);

752:デフォルトの名無しさん
08/06/01 17:28:40
do { が見つからないんだが

753:デフォルトの名無しさん
08/06/01 17:31:18
} while (1);

754:デフォルトの名無しさん
08/06/01 17:34:44
質問があるんですが、なんか変な流れみたいなので自重しときます。

755:デフォルトの名無しさん
08/06/01 17:35:23
goto >>1000;

756:デフォルトの名無しさん
08/06/01 17:36:14
同じく質問があるんですが、なんか変な流れみたいなので自重しときます。

757:デフォルトの名無しさん
08/06/01 17:36:54
コマンドバーのSDKサンプルあるとこ教えてください
海外サイトでもおk

758:デフォルトの名無しさん
08/06/01 17:40:56
>>757
いい加減しつこい

MSDNに説明があるだろうが
あれ読んで分からなかったら猫の糞サンプルでも見て勝手にやってろ

759:デフォルトの名無しさん
08/06/01 17:51:50
>>738,739-740
ワロスwwwwwwwwwwwww

760:デフォルトの名無しさん
08/06/01 18:33:11
スルーしろよ ←今まで我慢してた奴
そういうお前がな ←顔真っ赤な奴
↑お前もな ←呆れた奴

無限ループになるし終われw



761:デフォルトの名無しさん
08/06/01 18:35:51
この手の無限ループは荒らしてる基地外が飽きて沈静化するまで終わらないよ

762:デフォルトの名無しさん
08/06/01 19:48:44
前から言われてるけどID制して欲しいですね。

763:デフォルトの名無しさん
08/06/01 20:13:32
どうせID変えまくって荒らすだけだろ

764:デフォルトの名無しさん
08/06/01 21:07:05
荒らす奴はIDの変え方知らんと思うが

765:デフォルトの名無しさん
08/06/01 21:11:20
ほとんどはID変えてまではしないよ、特にこの板ではありえないそう
同じIDのままならNGで終了だし

766:デフォルトの名無しさん
08/06/01 21:14:47
質問とか答えるときもあった方が便利そうだけどな

767:デフォルトの名無しさん
08/06/01 21:18:03
ハンドルっていうのはポインタと思っとけばいいですか

768:デフォルトの名無しさん
08/06/01 21:26:46
よくないです

769:デフォルトの名無しさん
08/06/01 21:41:04
ポインタのポインタに近いかも

770:デフォルトの名無しさん
08/06/01 21:47:34
質問です
掲示板とかによくあるIDの変え方を教えてください

771:デフォルトの名無しさん
08/06/01 22:11:57
名前欄に fushianasan といれる

772:proxy10.microsoft.com
08/06/01 22:22:49
これでいいですか?

773:デフォルトの名無しさん
08/06/01 22:29:53
今すごい自演を見た

774:デフォルトの名無しさん
08/06/01 22:44:40
fusianasanの場合は文字がもう少し細くなるからバレバレ

775:デフォルトの名無しさん
08/06/01 22:46:46
>>767
ハンドルというのは、中身を意識してはいけないもの。
操作対象のオブジェクトを一意に識別する単なるID。

776:デフォルトの名無しさん
08/06/01 22:50:23
ハンドル
インターネットでいうとIPアドレス
学校でいうと何年何組何番とか

777:デフォルトの名無しさん
08/06/01 22:53:09
>>776
何年何組何番は時とともに変化するから学籍番号のほうが的確かと。

778:デフォルトの名無しさん
08/06/01 23:03:13
ハンドルでわからないアホはプログラム作らなくていいよ

779:デフォルトの名無しさん
08/06/01 23:05:57
車に乗るとき握るものですね、わかります

780:デフォルトの名無しさん
08/06/01 23:08:02
50セントじゃねーの?

781:デフォルトの名無しさん
08/06/01 23:10:59
ステアリングじゃないの?

782:デフォルトの名無しさん
08/06/01 23:15:35
はいはいそこまで

783:デフォルトの名無しさん
08/06/01 23:16:58
object identifierとでも言っておけばいいのに
何でハンドルって言うようになったんだ。

784:デフォルトの名無しさん
08/06/01 23:20:29
なんで初心者って、そういうどうでもいい所が気になるのかねぇ
「適当な固有の値」ぐらいに思ってればいいじゃないの

785:デフォルトの名無しさん
08/06/01 23:21:25
ただの興味本位です。スレ違い失敬。

786:デフォルトの名無しさん
08/06/01 23:35:42
新人に聞かれて答えられなかったらカッコ悪いじゃないか

787:デフォルトの名無しさん
08/06/01 23:37:16
お前に聞く新人なんて誰もいないから心配しなくていいよ

788:デフォルトの名無しさん
08/06/02 00:55:00
いいぞお前ら
もっとやれ

789:デフォルトの名無しさん
08/06/02 01:32:49
とても質問できるような環境じゃないな・・・

790:デフォルトの名無しさん
08/06/02 01:39:27
質問です
基地外を消去するAPIを教えてください

791:デフォルトの名無しさん
08/06/02 02:14:14
( ´∀`)<ぬるぽ

792:デフォルトの名無しさん
08/06/02 02:42:57
ビットマップを直接弄りたいので、
今までCreateCompatibleBitmapで書いていたコードをCreateDIBSectionで作り変えたら、
今まで精々数%しかCPU食っていなかったのに、数十%もCPUを食うようになってしまいました。
CreateDIBSectionで吐き出されたHBITMAPを使って描画するのは、重い処理なのでしょうか。
教えてください。

793:デフォルトの名無しさん
08/06/02 03:07:10
DIBとDDBの違いについて調べろ

794:デフォルトの名無しさん
08/06/02 03:29:45
今更Win32APIw

795:デフォルトの名無しさん
08/06/02 03:48:40
今でもWin32APIw

796:デフォルトの名無しさん
08/06/02 03:56:34
今こそWin32APIw

797:デフォルトの名無しさん
08/06/02 04:53:14
荒らしはwin32API質問箱をなくそうとしてるのか。ひどいな

798:デフォルトの名無しさん
08/06/02 06:16:25
ひどいね

799:デフォルトの名無しさん
08/06/02 07:13:21
>>792
CreateCompatibleBitmapは内部でVRAMにメモリを確保してる
CreateDIBSectionはシステムメモリに確保してる
あとは調べれ

800:デフォルトの名無しさん
08/06/02 07:17:22
VISTA未満の話だけどね

801:デフォルトの名無しさん
08/06/02 08:08:37
>CreateCompatibleBitmapは内部でVRAMにメモリを確保してる
そういう嘘を堂々と書かないように

802:デフォルトの名無しさん
08/06/02 08:22:21
訳:かまってほしいな

803:デフォルトの名無しさん
08/06/02 10:38:12
XP以前でVRAM上に確保されるかどうかはドライバ依存
Vista以降ではドライバに依存しなくなった

804:デフォルトの名無しさん
08/06/02 12:11:21
ATI系のボードはXPでもそういうの遅くなったんだっけ?

805:デフォルトの名無しさん
08/06/02 12:15:27
どうでもいいよ

DDB → VRAMに確保
DIB → システムメモリに確保

ATIとかVistaとかそんな少数派は無視でおk

806:デフォルトの名無しさん
08/06/02 14:22:18
やっぱりIDが欲しいな

807:デフォルトの名無しさん
08/06/02 14:45:57
知らないならレスしないでください。

808:デフォルトの名無しさん
08/06/02 15:11:38
知っているのに知らん振り~

809:デフォルトの名無しさん
08/06/02 15:24:31
ID欲しいというのは大概自演荒らし本人
セキュ板がまさにそれ

810:デフォルトの名無しさん
08/06/02 15:28:24
画面上の任意の色(白)を変える方法ってないですか?
試しに半透明ウィンドウを被せてみたら文字がかすんで使えません。
背景色を変更できないページやフリーソフトはまぶしくてしょうがないです

811:デフォルトの名無しさん
08/06/02 15:30:08
説得力のない大概だな

812:デフォルトの名無しさん
08/06/02 15:32:59
モニターのコントラストとか輝度を調整してみては

813:デフォルトの名無しさん
08/06/02 15:42:41
>背景色を変更できないページ
つ ユーザーCSS

>背景色を変更できないフリーソフト
配色の設定(COLOR_WINDOWとか)に基づいていない糞フトなんて
作者に文句言って修正してもらうか使わなければいいのでは

ってか、最近の液晶って輝度が高すぎなんだよな
モニターの設定で最も暗くしてもまだ眩しかったりするし

814:デフォルトの名無しさん
08/06/02 15:50:27
>>813
いいえ、液晶は発光しませんから。
バックライトが眩しいのは、劣化で暗くなることを想定して明る過ぎる光源を使っているからですね。

815:810
08/06/02 16:12:58
>>812
まぶしくない程度に下げると他が暗くなりすぎたりとなかなか難しいですが
ちょっと調整してみました。どうもでした
>>813
一応設定はしているんですが、変更を受け付けないページやpdfなんかが
目下最大の敵です。

816:デフォルトの名無しさん
08/06/02 17:21:02
暗くすると色諧調が失われる糞モニタなら捨てたほうがいい。
その辺でグレースケールでも拾ってきて調べてみるといい。

817:デフォルトの名無しさん
08/06/02 17:24:45
↑話を理解してない馬鹿

818:デフォルトの名無しさん
08/06/02 17:47:01
>>816
ハード板かCG板にお帰りください

819:デフォルトの名無しさん
08/06/02 18:58:15
知らないならレスするなよクズ

820:デフォルトの名無しさん
08/06/02 19:03:03
>>816
>>819

821:デフォルトの名無しさん
08/06/02 23:19:19
>>810
まさがグレーの半透明被せてないか?
たぶん純黒で不透明度低めのウィンドウを被せれば文字もくっきりするよ

822:810
08/06/03 00:18:58
>>821
はい、グレーのやつでした。さっそく試してみます。
やはり半透明ウィンドウでやるのがよさげなようですね。
ありがとうございました。そしてお騒がせしました

823:デフォルトの名無しさん
08/06/03 00:34:07
ディスプレイドライバに輝度やガンマ調整機能とか無いの?
俺のPCは少数派(笑)のATIだけどドライバの設定でそういう調節ができる。

824:デフォルトの名無しさん
08/06/03 09:47:34
SendMessageとかでメッセージ送れますけど
必ず届くのでしょうか?・・・不安で不安で・・・
共有メモリとかファイル化して渡した方が良いでしょうか?

825:デフォルトの名無しさん
08/06/03 09:53:59
何を渡したいかで決めようぜ

826:デフォルトの名無しさん
08/06/03 09:56:34
ack貰えばいいじゃん

827:デフォルトの名無しさん
08/06/03 11:56:17
SendMessageだと相手のメッセージループに割り込みが入るから大体届くんじゃねーの
ハングしてるスレッドにSendMessage投げてごらん?
投げた側もハングするから。

828:デフォルトの名無しさん
08/06/03 13:43:34
じゃあこうしよう
お前たちのような蛆虫はレスするなってことで

829:デフォルトの名無しさん
08/06/03 14:10:08
SendMessageCallbackやSendMessageTimeoutを使えば対象ウィンドウが応答したかは解るよ。
エラー時にはちゃんとGetLastErrorの値も見るように。

830:デフォルトの名無しさん
08/06/03 18:18:29
HWND hwnd = FindWindow( ... );
// この間にhwndがDestroyされると届かなくなるので必ず届くなんて不可能
SendMessage( hwnd, ... );

昔9x使ってたら、DestroyしたHWNDが割と近い時間で他のウィンドウに使用されて困ったことがあったけど
NTだと確か上位16ビットが再利用カウンタだからそういう衝突は無いかな

831:デフォルトの名無しさん
08/06/03 18:31:58
初めて聞いたぞそれ

832:デフォルトの名無しさん
08/06/03 19:26:56
あっそ

833:デフォルトの名無しさん
08/06/03 19:50:47
でっていうwwwwwwwwwwww

834:デフォルトの名無しさん
08/06/03 21:30:08
SendMessageした先からSendMessageで返事を返してもらう、って出来る?

835:デフォルトの名無しさん
08/06/03 22:18:24
スレッドが違う前提の話だよな。
SendMessageをもらって、ウインドウプロシージャが走ってから
そいつが返事をSendMessageするまでの間に、
ReplyMessageしとけばいけるんでない。

836:デフォルトの名無しさん
08/06/03 22:38:11
SendMessageを投げあってデッドロック!!!マジカッコイイ!!!

837:デフォルトの名無しさん
08/06/03 22:39:32
SendMessageへの返事は返値でしなさいよw

838:デフォルトの名無しさん
08/06/03 22:59:01
SendMessageは同期させたいときに使う。


839:デフォルトの名無しさん
08/06/03 23:17:41
>>149
>フォーカスを失っても青のままにしたい

subclass化して WM_KILLFOCUS をブロック

840:デフォルトの名無しさん
08/06/04 00:01:07
>>830>>835
大丈夫。SendMessageの戻り待ちで止まっているスレッドのウィンドウへSendMessageが送られると、
Windowsが直接ウィンドウプロシージャを呼び出す。
Advanced Windows辺りに書いてあったはず。

841:デフォルトの名無しさん
08/06/04 03:47:02
質問です。
BitBltでビットマップの転送を行うとして、、
転送先のビットマップの大きさの範囲を超えるように引数を指定した場合、
この動作の定義はどうなっているのでしょうか?
はみ出たところにあったデータが壊れる心配はないのでしょうか?

842:デフォルトの名無しさん
08/06/04 04:03:42
>>841
GDIはそういう心配する必要なし

843:841
08/06/04 04:29:13
>>842
これで心置きなく転送できます。
ありがとうございました。

844:デフォルトの名無しさん
08/06/04 16:32:06
簡易的なタブエディタを作っているのですが
テキストは開いた順に配列に入れて、たとえば2番目のタブを選択したら
配列の2番目から取り出して表示するという方法でいいんですか?

845:デフォルトの名無しさん
08/06/04 16:36:41
そんなもん貴方がどう実装したいのかによるでしょ
メモリ食ってもいいのか、なるべく食わない方がいいのかとか

つかAPI関係ないだろ

846:デフォルトの名無しさん
08/06/04 16:36:52
よくわからんけどいいよ

847:デフォルトの名無しさん
08/06/04 16:44:40
タブエディタが何か分からない

848:デフォルトの名無しさん
08/06/04 16:46:36
>>847
しね

849:デフォルトの名無しさん
08/06/04 16:49:52
タブ譜のエディタですね、分かります

850:デフォルトの名無しさん
08/06/04 16:55:55
つまんね

851:デフォルトの名無しさん
08/06/04 16:58:40
訳:かまってほしいな

852:844
08/06/04 17:00:22
>>845
この方法だとメモリを食いそうなんでこれでいいのか、
他に良いスタンダードな方法があるのかと疑問に思ったので。
タブとかeditコントロールはAPIなのでここで質問してみました

>>846
よさそうならこれで作ってみます。どうもです

853:デフォルトの名無しさん
08/06/04 20:34:54
Win32APIでエディタを作っています.
ステータスバーに現在のキャレット位置を表示するために
下記のコードを書いてみたのですが,列の表示が上手くできません.
何か良い方法をご存知でしたら教えて下さい. m(_ _)m

caretPos = (DWORD)SendMessage(hEdit, EM_CHARFROMPOS, 0, MAKELPARAM(pt.x, pt.y));
pt.y = HIWORD(caretPos) + 1;
caretPos = (DWORD)SendMessage(hEdit, EM_CHARFROMPOS, 0, MAKELPARAM(pt.x, 0));
pt.x = LOWORD(caretPos) + 1;
wsprintf(str, " %d 行, %d 列", pt.y, pt.x);
SendMessage(hStatusbar, SB_SETTEXT, 1, (LPARAM)str);


854:デフォルトの名無しさん
08/06/04 20:57:59
>>852
メモリの使用量なんて作ってみたらわかることだ。
初心者なら、作る前に答えを欲しがらずに、作って考えることだ。

855:デフォルトの名無しさん
08/06/04 22:03:32
>>854
偉そうに上級者面するな

856:デフォルトの名無しさん
08/06/04 22:12:23
そいつゲイツだぞ

857:デフォルトの名無しさん
08/06/04 22:39:06
だから?

858:デフォルトの名無しさん
08/06/04 22:41:49
お布施しろ

859:デフォルトの名無しさん
08/06/04 23:20:18
どうやって?
PayPalで送金するのか?w

860:デフォルトの名無しさん
08/06/05 00:11:05
とりあえず、VistaのUltimateを10本ほど。

861:デフォルトの名無しさん
08/06/05 01:42:29
ケチケチすんなよ
MSDN Premium Subscriptionをパッケージで50本くらい買えばおk

862:デフォルトの名無しさん
08/06/05 02:25:19
>>860
Vistaなんてイラネーヨ

>>861
おk
明日買ってくる

863:デフォルトの名無しさん
08/06/05 19:14:29
>>853
キャレット位置ならEM_GETSELから調べ始めればいいんじゃね?

864:いのぶー
08/06/05 22:58:59
 ペイントを操作して、絵を描こうとしているのですが、ウィンドウをポップアップできてもドローイングエリアを
クリックできません。
C#の板でスルーされたのでやってきました、お願いいたします、教えていただけませんでしょうか? 。
[DllImport("USER32.DLL")]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("USER32.DLL")]
public static extern bool SetForegroundWindow(IntPtr hWnd);
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern IntPtr FindWindowEx(IntPtr hWnd, IntPtr hwndChildAfter, String lpszClass, String lpszWindow);
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern bool PostMessage(IntPtr hWnd, UInt32 Msg, Int32 wParam, Int32 lParam);
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern bool GetWindowRect(IntPtr hWnd, ref RECT lpRect);
[StructLayout(LayoutKind.Sequential)]
public struct RECT {
public int left;
public int top;
public int right;
public int bottom;
}
const uint WM_LBUTTONDOWN = 0x201;
const uint WM_LBUTTONUP = 0x202;

public void RemotePaint() {
IntPtr hWnd = FindWindow("MSPaintApp", null);
SetForegroundWindow(hWnd);
hWnd = FindWindowEx(hWnd, IntPtr.Zero, "AfxFrameOrView42u", null);
RECT winRect = new RECT();
GetWindowRect(hWnd, ref winRect);
PostMessage(hWnd, WM_LBUTTONDOWN, winRect.right - winRect.left, winRect.bottom - winRect.top);
PostMessage(hWnd, WM_LBUTTONUP, winRect.right - winRect.left, winRect.bottom - winRect.top);
}

865:デフォルトの名無しさん
08/06/05 23:03:24
>>864
PostMessageでDOWNした後UPする前にスリープを入れる

866:いのぶー
08/06/05 23:16:45
早速のレスをありがとうございます。

Sleepを入れてみたんですが、点を打ってくれませんでした。 (T_T)

PostMessage(hWnd, WM_LBUTTONDOWN, winRect.right - winRect.left, winRect.bottom - winRect.top);
System.Threading.Thread.Sleep(500);
PostMessage(hWnd, WM_LBUTTONUP, winRect.right - winRect.left, winRect.bottom - winRect.top);

867:デフォルトの名無しさん
08/06/05 23:53:40
[DllImport("USER32.DLL")]
public static extern bool SetForegroundWindow(IntPtr hWnd);

C丼はあまり詳しくないが、この辺のAPI宣言って合ってるのか?
Win32のBOOLとC++や.NET系のboolって別物のはずだが

868:デフォルトの名無しさん
08/06/05 23:58:22
それはあってるよ。
C#のboolは1バイトだけど、Platform呼び出しの際は、
特に指定しなければデフォルトで4バイトBOOLにマーシャリングされる。

869:いのぶー
08/06/06 00:01:48
一応、ペイントはアクティブになってくれています。

この辺りとかでは、
public static extern bool SetForegroundWindow(IntPtr hWnd);
って書いたサンプルがあったので、それを参考にしています。

URLリンク(www.atmarkit.co.jp)


870:デフォルトの名無しさん
08/06/06 00:06:43
>>868
へ~そうなんだ
VB6とかBooleanじゃなくてLongにする必要があったのに、便利な時代になったなぁ

871:デフォルトの名無しさん
08/06/06 00:21:52
クライアント領域の右下隅をクリックしたいように見えるけど、
GetWindowRectの結果使ったらボーダーの分だけはみ出さないかい?
そもそもその右下の点に画像はあるのか

872:いのぶー
08/06/06 03:49:20
RECTを取る前に
hWnd = FindWindowEx(hWnd, IntPtr.Zero, "AfxFrameOrView42u", null);
で、hWndにドローイングエリアのウィンドウハンドルをセットしなおしていますが、
それではダメでしょうか?

hWndを使いまわしていて、汚くてごめんなさい。

873:いのぶー
08/06/06 03:55:58
追伸ですが、以下のように、座標を固定で指定してやってもダメでした (T_T)

PostMessage(hWnd, WM_LBUTTONDOWN, 100, 100);
System.Threading.Thread.Sleep(500);
PostMessage(hWnd, WM_LBUTTONUP, 100, 100);




874:デフォルトの名無しさん
08/06/06 06:26:02
ふつーSendInputとか使う。

875:デフォルトの名無しさん
08/06/06 07:13:29
SendInputってフォアグラウンドじゃないとだめじゃなかったっけ

876:853
08/06/06 07:37:22
>>863

回答ありがとうございます.
EM_GETSEL は有力ですよね.
実は自分も最初はそれを考えて,

pt.x = LOWORD(SendMessage(hEdit , EM_GETSEL , NULL , NULL));

として列の位置を求めようとしていたのですが,

↓(1行,1列)
1234\r\n
6
↑(2行,1列)になってほしいけど,
実際には(2行,6列)... ORZ

という結果になってハマってしまったので,
ここで質問してみました.
結構メジャーな目的なので,どなたかご存知の方が
いらっしゃいましたら良い方法をお願いします. m(_ _)m
後の人のためにも.
(できればWin32APIで,テキスト全体をバッファに入れて改行を数えるとかは
最後の手段かなと思っています.)


877:853
08/06/06 08:11:01
解決しました.

offset = LOWORD(SendMessage(hEdit, EM_CHARFROMPOS, 0, MAKELPARAM((WORD)0, pixPt.y)));

を設定して引いてやるだけでした.
前にこの方法も試していたのですが,pix での位置と char型 での位置が
きちんと区別されていなかったために失敗していました.
お騒がせしました.


878:デフォルトの名無しさん
08/06/06 14:45:22
(WORD)0

なんでこんな書き方するのか分からん

879:デフォルトの名無しさん
08/06/06 15:22:28
分からないならレスするなつってるだろ?

880:デフォルトの名無しさん
08/06/06 15:38:14
すいません

881:デフォルトの名無しさん
08/06/06 15:41:37
どんまい

882:デフォルトの名無しさん
08/06/06 16:14:32
吸いませんじゃなくてすみませんだろ?

883:デフォルトの名無しさん
08/06/06 16:17:57
吸わないよ


884:デフォルトの名無しさん
08/06/06 16:23:21
(WORD)0

なんでこんな書き方するのか分からん

885:デフォルトの名無しさん
08/06/06 16:25:28
break;

886:デフォルトの名無しさん
08/06/06 16:59:07
訳:かまってほしいな

887:いのぶー
08/06/06 22:01:53
皆様、ありがとうございます。

sendInputというキーワードのおかげで、下記のページを見つけることができました。
URLリンク(homepage3.nifty.com)

 おかげで、sendInputを使って、点が打てました。
これを取っ掛かりになんとかやってみたいと思います。


888:デフォルトの名無しさん
08/06/06 23:10:33
>>872
GetClientRectでとれるのが「クライアント領域」、早い話がウィンドウ内部の領域
マウスイベントで指定する座標系はこれが基準。
GetWindowRectでとれるのは「ウィンドウ領域」、境界線とかも含んでいるので
一般にクライアント領域より大きい。
ちなみにRectで指定する座標は「右と下が1大きい」ものなので(理由は省略)
>866の計算だと、GetClientRectの結果使ったとしてもやはり1ドットはみだす。
以上参考までに。

889:いのぶー
08/06/06 23:31:46
888さん、ありがとうございます。(ゾロ目ですね・・・)

GetClientRectでとれる「クライアント領域」が基本とのことなのですが、
GetWindowRectでドローイングエリアの座標領域を取って、Cursorを動かして、
SendInputクリックで左ボタンダウンとアップイベントを作ってクリックしているのですが、
「クライアント領域」を使った、いい方法があるのでしょうか?

当方、「クライアント領域」の有効な使い方が解っていないので、
よろしければご教授願えませんでしょうか。教えていただけると
うれしいのですが・・・

890:デフォルトの名無しさん
08/06/07 00:16:53
>>889
有効とかどうとかじゃなくて、基本的な区別がわかってない
君がいう「ドローイングエリアの座標領域」の外側と内側とか
座標系の基準の違いとか色々ごっちゃにしてるって話
ここで説明できるような内容じゃないので入門書読め

891:いのぶー
08/06/07 00:25:15
別に、原点が画面の左上か、ウィンドウ(又はウィジェット)の左上というだけの話では?


892:いのぶー
08/06/07 00:31:04
こんな風に書いているので、問題があったら知りたいなぁという以上の意味はないので・・・

// ドローイングエリアの真ん中へ移動
Cursor.Position = new Point((winRect.left + winRect.right) / 2, (winRect.top + winRect.bottom) / 2);
//クリック
INPUT[] input = new INPUT[2]; // 計2イベントを格納
input[0].mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
input[1].mi.dwFlags = MOUSEEVENTF_LEFTUP;
SendInput(2, input, Marshal.SizeOf(input[0]));


893:いのぶー
08/06/07 00:46:46
追伸、

466の記述時点では、Rectで何の値が取れるか分かっていなかったのですが、
デバッグプリントして、理解して、887の時点では、なんとか好きな所に点が打てるように
なっていました。
(おそらく、入れ違いになってしまったのでは・・・と思っています。)

 ただ、この場合に、ウィンドウ内の座標を使って何ができるのかが知りたいのです。
 この場合、テンプレの本を薦められても対象が高域過ぎるのでお勧めのURLや書籍
でもあれば、明日にでも探しに行きたいと思います。


894:デフォルトの名無しさん
08/06/07 02:01:28
いい加減うざいです><
Win32スレなのか.NETスレなのか分かりません><

895:デフォルトの名無しさん
08/06/07 02:16:31
ここってWin32APIスレですよね><
言語が.NETだろうとWin32の話なら全然構わないと思います><

896:デフォルトの名無しさん
08/06/07 03:27:14
たとえば、スレッドの中にスレッド作った場合の注意点ってある?
開放する順番以外に。windowsスレッドって、ExitThread(true)で
自動で開放されたりしない?ハンドルクローズしないとダメ?

897:デフォルトの名無しさん
08/06/07 03:45:01
windowsスレッドって何だよ
windows板なら分かるが

898:デフォルトの名無しさん
08/06/07 04:47:09
>893
何ができるかとかいう問題じゃなくて
┏━┓
┗━┛
この枠の内側測るのと外側測るのじゃ大きさが違うだろ?
内側から測れって言われてるのに外側から測った数字使ってたりしたら
細かいところで計算が合わないからちゃんと意識しろってこと。

899:896
08/06/07 06:05:37
>>897
Linuxのプロセスみたいにゾンビプロセスが残るのかとか
windows のスレッドはexitThread(true)でスレッド開放されるのかとか

900:デフォルトの名無しさん
08/06/07 06:41:38
スレッド自身がExitThreadを呼び出すか、スレッドの関数から戻ればスレッドは止まる。
どのスレッドによって作られたか、などということは一切関係ない。
また、そのスレッドを参照しているすべてのスレッドハンドルをCloseHandleしなければならない。
スレッドハンドルを閉じていないということは、まだ使うということだから。
スレッドがシグナル状態になっているかどうかを見るなど。

pthreadだって、明示的にpthread_joinかpthread_detachしなきゃならんだろ。

901:いのぶー
08/06/07 06:56:28
> 898

 取れる数字に対する注意点を教えていただいたと理解しました。
894さんとか、うざがってる方もいることですので、この話題を終了したいと思います。

ありがとうございました。

902:デフォルトの名無しさん
08/06/07 08:06:34
>>899
> ExitThread(true)
こんな事を書いてるということはMSDN読んでないのがバレバレ

903:デフォルトの名無しさん
08/06/07 14:06:32
おいおい・・
そんなこと言ったら、ここの質問全てmsdn嫁で終わるw

904:デフォルトの名無しさん
08/06/07 14:25:25
ちょっと質問ですが、
//tmpgenc.pegasys-inc.com/ja/download/tp.html
TMPGEncの支援ツールを作りたいと思ってます。
主に自動で次々と縁故してくれるように支援するツールです。
そこで、まずファイルをドロップしてファイル名を渡すところですが、ここはどんなAPIを使ってドロップしたことにしてやればよろしいでしょうか?


905:デフォルトの名無しさん
08/06/07 14:27:01
はぁ?

906:デフォルトの名無しさん
08/06/07 14:29:15
>>905
そのTMGENCの画面にファイルをドロップするところを、他のアプリから操りたいのです・・・。


907:デフォルトの名無しさん
08/06/07 14:47:12
はぁ?

908:デフォルトの名無しさん
08/06/07 14:47:55
知らないならレスしないでください

909:904
08/06/07 14:50:36
908は私の発言じゃないですよ。

わかりにくいですか?

910:デフォルトの名無しさん
08/06/07 14:53:40
まったく分からない

911:デフォルトの名無しさん
08/06/07 14:54:30
初心者スレ池

912:デフォルトの名無しさん
08/06/07 14:55:06
910は私の発言じゃないですよ。

わかりにくいですか?

913:デフォルトの名無しさん
08/06/07 15:10:01
TMPEGの画面ってのがよく分からんが
画面へのドロップ動作をさせたいならOLE D&Dとマウス動作のシミュレートで良いんじゃね

コマンドライン使えるならそっちの方がいいと思うけど

914:デフォルトの名無しさん
08/06/07 15:12:18
お前は何を言ってるんだ

915:デフォルトの名無しさん
08/06/07 15:12:52
LoadLibraryEx で LOAD_LIBRARY_AS_DATAFILE や LOAD_LIBRARY_AS_IMAGE_RESOURCE を
指定してロードした特定のモジュールのファイル名を、GetModuleFileName で取得できません。
(GetModuleFileName の戻り値は0だが、GetLastError の戻り値は ERROR_SUCCESS)

具体的に言うと、下のページの mxdrv.dll が該当します。
URLリンク(gorry.haun.org)

どういったケースでそれが起こるのか、誰かおわかりになりませんか。

916:デフォルトの名無しさん
08/06/07 15:27:25
>>913
レスありがと。

ただOLE D&Dって初見なんだけど、これってつまりAPIでファイルを対象のウィンドウにドロップするやつはないってことですか?


917:916
08/06/07 15:38:46

自己解決しました、ありがとうございます

918:デフォルトの名無しさん
08/06/07 16:21:57
英語MSDNのSendIMEMessageExに
This function is obsolete and should not be used.
と書いてた。
ってことは、IME使うにはどうすればいいんだ?

919:デフォルトの名無しさん
08/06/07 16:28:20

質問です。

対象のアプリのボタン(OKと書かれたボタン)が操作不可かどうかを判断したいのですが、
なにか手はありますでしょうか?


920:デフォルトの名無しさん
08/06/07 16:29:48
フックふっくにしてやんよ

921:デフォルトの名無しさん
08/06/07 16:37:46
IsWindowEnabledでいいんじゃね

922:デフォルトの名無しさん
08/06/07 17:07:40
>>918
Imm~関数群などを使う。

923:デフォルトの名無しさん
08/06/07 17:16:07
IMMの次はTSFだぜ

924:デフォルトの名無しさん
08/06/07 18:31:42
>>923
> TSFとは、異性への性転換を扱うフィクションのジャンルにおける略称である。
URLリンク(ja.wikipedia.org)

???

925:デフォルトの名無しさん
08/06/07 18:38:05
ストリートファイターズ……

926:デフォルトの名無しさん
08/06/07 18:51:28
アルファベット3文字の略称って大抵は既に何かに使われてるよなw

927:デフォルトの名無しさん
08/06/07 19:26:35
_beginthreadexでつくったスレッドで現在稼動しているもののIDかなんかを取得するのは
どうすればいいですか?Thread.currentThread()みたいなやつ

928:デフォルトの名無しさん
08/06/07 19:33:05
GetCurrentThread
GetCurrentThreadId

929:デフォルトの名無しさん
08/06/07 19:33:19
IDってどういう意味だ?

スレッドハンドルの事を言っているなら、_beginthreadexの戻り値がまさにそれだ。
必要ないなら、ちゃんとCloseHandleしておけ。

スレッドIDの事を言っているのなら、スレッドハンドルに対してGetThreadIdを呼べ。

930:デフォルトの名無しさん
08/06/07 19:37:06
>>927
GetCurrentThread


931:918
08/06/07 19:44:58
>>922,923
感謝する。
とりあえず今回はTSFの方向で考えてみようと思う。

932:デフォルトの名無しさん
08/06/07 19:49:55
>>931
え……?性転換ネタでいくの?キョン子はやめたほうが……

933:931
08/06/07 20:05:29
>>932
TextServicesFlameworkですよ(汗
...とマジレスしてみる。

934:デフォルトの名無しさん
08/06/07 20:08:52
>>928-930あざーした

935:デフォルトの名無しさん
08/06/07 20:31:21
>>933
Text Services Frameworkですよとマジレス

936:デフォルトの名無しさん
08/06/07 20:37:32
Flamework
燃える仕事か。

937:デフォルトの名無しさん
08/06/07 20:40:20
>>934
一応言っておくと、GetCurrentThreadで得られるのは擬似ハンドルで
自分自身のスレッドを示す事にしか使えないからな。

938:933
08/06/07 20:46:31
>>935,936
わざとだ。
ということにしておいてくれ。

939:デフォルトの名無しさん
08/06/07 20:55:32
>>936
仕事熱心でいいじゃないか

940:デフォルトの名無しさん
08/06/07 21:01:53
炎上しているって事はデスマーチなんだろ

941:デフォルトの名無しさん
08/06/07 21:04:22
>>937
なんか書いてありましたね。でも
_beginthreadexの最後の引数に入るDWORDのIDはGetCurrentThreadIdのものと一致しますよね?

あと関係ないと思うんですが、MSDNの

_endthread と _endthreadex によって、C++ デストラクタはスレッドで保留状態になり、呼び出されません。

という日本語の意味がよく分からないんですが、どういうこと?

942:デフォルトの名無しさん
08/06/07 21:14:46
ThreadEntry(PVOID param)
{
 CMyClass hoge;
 kansuu();
}

kansuu()
{
 _enthreadex(0);
}

hogeのデストラクタは呼ばれませんよということ
素直にreturnしとけ

943:デフォルトの名無しさん
08/06/07 21:16:00
日本語の意味が分からなかったら英語版を読めばいいだろ
そもそも日本語版なんてWin95時代から更新止まってるのにそんなの見るなって

944:デフォルトの名無しさん
08/06/07 21:22:00
英語MSDNのSendIMEMessageExに
This function is obsolete and should not be used.
と書いてた。
ってことは、IME使うにはどうすればいいんだ?

945:デフォルトの名無しさん
08/06/07 21:25:06
英語MSDNのSendIMEMessageExに
This function is obsolete and should not be used.
と書いてた。
ってことは、IME使うにはどうすればいいんだ?

946:918
08/06/07 21:27:22
なんかコピペされてる?
何事ですか?

947:デフォルトの名無しさん
08/06/07 21:28:37
英語MSDNのSendIMEMessageExに
This function is obakadesu and should not be used.
と書いてた。
ってことは、IME使うにはどうすればいいんだ?

948:デフォルトの名無しさん
08/06/07 22:10:57
MSDNのYieldのところに

ウィンドウを含むスレッドでは、DispatchMessage 関数、PeekMessage 関数、または TranslateMessage 関数を使ってください。

てあるけど、どうやんのかね?

949:デフォルトの名無しさん
08/06/07 22:20:17
ウィンドウを作ったスレッドがなんでyieldなんかするんだよ

950:デフォルトの名無しさん
08/06/07 22:31:29
知らないならレスしないでください

951:デフォルトの名無しさん
08/06/07 22:57:14
糞スレ終了

952:デフォルトの名無しさん
08/06/08 00:37:08
次は、まだかな♪(・ ・。)(。・ ・)まだかな♪

953:デフォルトの名無しさん
08/06/08 00:42:09
質問したいんですけどいいですか?

954:デフォルトの名無しさん
08/06/08 00:44:29
ものによる。まずは質問して。

955:デフォルトの名無しさん
08/06/08 00:49:12
>>948
PeekMessageでぐぐればいろいろ例が見つかるはずだから、そのとおりにやればいい。

956:デフォルトの名無しさん
08/06/08 00:55:24
質問です
CreateThreadで作ったのが糞スレッドかどうか判断するAPIを教えてください

957:デフォルトの名無しさん
08/06/08 00:58:06
CreateThread自体が糞だからそのようなAPIは用意されていません。

958:デフォルトの名無しさん
08/06/08 08:19:20
PCを起動したときに、それまで何日間起動されなかったか知りたいのですが、
前回シャットダウンした日時を取得する方法ってありますか?

959:デフォルトの名無しさん
08/06/08 09:05:59
イベントログ

960:デフォルトの名無しさん
08/06/08 10:58:25
>>958
>>959のとおり、イベントログに情報がある。

ただ、OS起動やシャットダウンイベントはデフォルト設定だと記録されないはずなので、
設定を変えるか、もっと簡単にやりたいなら正確ではないけどイベントログサービスの
起動/停止時間をOS起動/シャットダウン時間とみなしてしまうやり方もある。

例がWin32APIでなくて申し訳ないけど、以下WMIのインタフェース使うスクリプトの例。

var query =
"Select * from Win32_NTLogEvent where " +
"LogFile = 'System' and SourceName = 'EventLog'";
var systemlogs = GetObject("winmgmts:!\\\\.\\root\\cimv2").ExecQuery(query);
var e = new Enumerator(systemlogs);
for (; ! e.atEnd(); e.moveNext()) {
var log = e.item();
if (log.EventCode == 6005) {//イベントログサービス起動
WScript.Echo("起動: "+log.TimeGenerated);
}
else if (log.EventCode == 6006) {//イベントログサービス停止
WScript.Echo("停止: "+log.TimeGenerated);
}
}


961:デフォルトの名無しさん
08/06/08 11:00:37
親切な人だなぁ・・
質問者じゃないけど、感心した

962:デフォルトの名無しさん
08/06/08 14:26:31
質問者はトリップ付けた方がいいと思うお

963:デフォルトの名無しさん
08/06/08 15:22:53
そんな面倒な事わざわざしないお

964:デフォルトの名無しさん
08/06/08 18:23:10
IDがあればそんな面倒な事しなくもいいのにね

965:デフォルトの名無しさん
08/06/08 19:07:44
コンボボックスをオーナードローすると
初期表示状態が微妙に縦幅が太くなるんだけぢ
どうやって元に戻すんdねすか?

中身の太さ(高さ)は↓で細くできたんです
void CColorComboBox::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
lpMeasureItemStruct->itemHeight = 14;
}

966:デフォルトの名無しさん
08/06/08 19:07:58
またID厨か

967:965
08/06/08 19:15:42
もひとつ問題が

オーナードローを可変にすると(CBS_OWNERDRAWVARIABLE)
ボックス内でマウスホイール動かしたときに意味不明な動きをします。
ホイールを下に回してるのに上からビローンって一回転して正しい
位置に回ってきます。なんだこれ。

968:デフォルトの名無しさん
08/06/08 19:46:30
>>966
独り言消えろ

969:デフォルトの名無しさん
08/06/08 19:48:08
またまたID厨か

970:デフォルトの名無しさん
08/06/08 19:53:08
ID厨ウゼェ

971:デフォルトの名無しさん
08/06/08 19:57:41
↑キモッ

972:デフォルトの名無しさん
08/06/08 19:58:33
ID厨の特徴

1. 「IDがあればなぁ」などと書く
2. 自演で荒らす
3. 「やっぱID欲しいな」などと書く

973:デフォルトの名無しさん
08/06/08 20:08:59
やっぱID欲しいな

974:デフォルトの名無しさん
08/06/08 20:09:32
IDがあればなぁ

975:デフォルトの名無しさん
08/06/08 20:29:07
俺の予想では荒らしてるのは一人か二人

976:デフォルトの名無しさん
08/06/08 20:29:14
かまってほしいな

977:デフォルトの名無しさん
08/06/08 20:30:04
>>975
二人以上なのか確実
おれ以外にも居るから

978:デフォルトの名無しさん
08/06/08 20:30:32
× なのか
○ なのは


979:デフォルトの名無しさん
08/06/08 20:32:58
りりかる

980:デフォルトの名無しさん
08/06/08 20:54:18
/* ここまで俺の自演 */

981:デフォルトの名無しさん
08/06/08 21:05:34
/* かまってほしいな */

982:デフォルトの名無しさん
08/06/08 21:10:01
/*
コメント
/*/
スイッチ
//*/

983:デフォルトの名無しさん
08/06/08 21:20:31
>>977
いや一人だ
俺と、俺の中の別人格(=お前)

984:デフォルトの名無しさん
08/06/08 21:24:40
チィッ…右手よ、静まれ!

985:デフォルトの名無しさん
08/06/08 21:38:27
IDがあって困ることはないから、ID導入して欲しいな。
なんでム板はないんだっけ?

986:デフォルトの名無しさん
08/06/08 21:40:04
必要ないから

987:デフォルトの名無しさん
08/06/08 21:45:51
IDは昔はどこもなかった。基本的にはIDが導入される板というのは
人が多く荒れる事が多い板。今までム板では現状のこのスレみたいな
事がほとんどなかったから必要なかっただけかな

988:デフォルトの名無しさん
08/06/08 21:52:30
この程度で荒れてるって・・・

989:デフォルトの名無しさん
08/06/08 21:56:25
機能してない時点で十分荒れてるだろう、ここは雑談系の板ではなく専門板なんだから

990:デフォルトの名無しさん
08/06/08 22:06:49
それに加担してる事は自覚してるのかね


991:デフォルトの名無しさん
08/06/08 22:11:40
自覚してないけど、何か?

992:デフォルトの名無しさん
08/06/08 22:12:33
次スレ建ってないんだから減速しろ

993:デフォルトの名無しさん
08/06/08 22:18:11
建ててくるわ。


Win32API質問箱 Build67

スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

過去スレ、関連リンクは>>2-10くらい。

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(URLリンク(msdn2.microsoft.com))の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで

- Win32API質問箱 wiki
URLリンク(wiki.livedoor.jp)

Win32API質問箱 Build66
スレリンク(tech板)

994:デフォルトの名無しさん
08/06/08 22:27:48
次スレたててきた
スレリンク(tech板)


995:デフォルトの名無しさん
08/06/08 22:40:15
ume

996:デフォルトの名無しさん
08/06/08 22:40:35
うめ

997:デフォルトの名無しさん
08/06/08 22:41:11
産め

998:デフォルトの名無しさん
08/06/08 22:42:18
埋め

999:デフォルトの名無しさん
08/06/08 22:43:16
おめ

1000:デフォルトの名無しさん
08/06/08 22:43:25


1001:1001
Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch