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


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

Win32API質問箱 Build23
1 名前:デフォルトの名無しさん :04/09/19 04:11:44
- 過去スレ
Build22:http://pc5.2ch.net/test/read.cgi/tech/1092524669/
Build21:http://pc5.2ch.net/test/read.cgi/tech/1090422324/
Build20:http://pc5.2ch.net/test/read.cgi/tech/1088140233/
Build19:http://pc5.2ch.net/test/read.cgi/tech/1084697545/
Build18:http://pc5.2ch.net/test/read.cgi/tech/1081702990/
Build17:http://pc5.2ch.net/test/read.cgi/tech/1077470361/
Build16:http://pc2.2ch.net/test/read.cgi/tech/1073830065/
Build15:http://pc2.2ch.net/test/read.cgi/tech/1069339866/
Build14:http://pc5.2ch.net/tech/kako/1065/10653/1065328397.html
Build13:http://pc5.2ch.net/tech/kako/1059/10595/1059549320.html
Build12:http://pc5.2ch.net/tech/kako/1056/10560/1056033645.html
Build11:http://pc5.2ch.net/tech/kako/1052/10526/1052651750.html
Build10:http://pc5.2ch.net/tech/kako/1047/10478/1047819779.html
Build9:http://pc5.2ch.net/tech/kako/1044/10449/1044929160.html
Build8:http://pc5.2ch.net/tech/kako/1040/10409/1040964626.html
Build7:http://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
Build6:http://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
Build5:http://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
Build4:http://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
Build3:http://pc.2ch.net/tech/kako/1017/10170/1017072275.html
Build2:http://pc.2ch.net/tech/kako/1006/10067/1006783012.html
Build1:http://pc.2ch.net/tech/kako/991/991576947.html
(★は「いやー ごめんなさい。」に巻き込まれた模様

2 名前:デフォルトの名無しさん :04/09/19 04:13:01
- MSDN Online
http://www.microsoft.com/japan/msdn/default.asp
- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
- Platform SDK Update
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
- Google
http://www.google.com/

Win32 API入門
http://black.sakura.ne.jp/~third/system/winapi/win.html
WIN32 Programming
http://www7.plala.or.jp/keny01/win32/
Win32 SDK Programming
hhttp://www7.plala.or.jp/keny01/windows/win32/

3 名前:デフォルトの名無しさん :04/09/19 04:13:07
(´゚Д゚`)

4 名前:デフォルトの名無しさん :04/09/19 04:13:17
2げっとー
はじめてやった わーい


5 名前:デフォルトの名無しさん :04/09/19 04:15:14
がーん

6 名前:デフォルトの名無しさん :04/09/19 04:32:56
> WIN32 Programming
> http://www7.plala.or.jp/keny01/win32/
これリンク切れてるよ

7 名前:デフォルトの名無しさん :04/09/19 05:08:45
>>6
修正忘れてた。
http://www7.plala.or.jp/keny01/windows/win32/

8 名前:ほんたま :04/09/19 08:43:47
おみゃ〜らよ、WideCharToMultiByteを使って、unicodeをsift-jisに変換すると、漢字はちゃんと変換されるのに、半角英数は文字化けするのよ。
unicodeが「4F 00 4B 00 27 59 0B 4E B9 5B 50 5B」の場合、これは「OK大下容子」の意味だ。
これをchar型の文字列pctextに取得して、この時点でpctextの内容をMessagBoxで表示してみると「ok'Y・Nケ[P[」だ。
これをWideCharToMultiByteを使って変換し、変換した文字列temptextを表示してみると「?大下容子」になっているんだ。
おみゃ〜らよ、なぜOKはちゃんとならないのかな?
これ、教えれ、ばかおみゃ〜ら、こら!!!!!!!


9 名前:デフォルトの名無しさん :04/09/19 08:45:27
>>8
氏ね

10 名前:ほんたま :04/09/19 08:55:34
>>9
こら、教えれ、ばかこら!!!!

11 名前:デフォルトの名無しさん :04/09/19 09:56:58
一応はっとく

Build15:ttp://saba.haiiro.info/uploader/file/0587.html
Build16:ttp://saba.haiiro.info/uploader/file/0588.html


12 名前:デフォルトの名無しさん :04/09/19 10:37:25
>>1
おつ。

>>11
いただきます。

13 名前:デフォルトの名無しさん :04/09/19 12:19:18
お前ら、よく聞け。

アプリを常にタスクバーの前面に置くために、
タスクバーを親に指定してウィンドウを表示しているヤシいると思う。
XPSP2適用後だと、その前面表示アプリのせいで、
スタートボタンから展開されるはずのポップアップ形式のメニューなどが、
不意に閉じてしまう現象が起こるようになった。

XPSP2では、親をタスクバーにしているアプリは要注意だ。

14 名前:デフォルトの名無しさん :04/09/19 12:39:16
親をタスクバーにする理由を教えて欲しい
HTND_MOSTTOPだっけ?
そんな感じの指定すりゃいいのに

15 名前:デフォルトの名無しさん :04/09/19 12:56:21
dj

16 名前:デフォルトの名無しさん :04/09/19 13:06:08
>>14
> アプリを常にタスクバーの前面に置くために

17 名前:デフォルトの名無しさん :04/09/19 13:34:41
>>1
<< "乙";

18 名前:デフォルトの名無しさん :04/09/19 13:43:26
HWND_MOSTTOPじゃならないんだ

19 名前:デフォルトの名無しさん :04/09/19 13:46:06
d$

20 名前:デフォルトの名無しさん :04/09/19 15:30:20
ListViewむかつく。
なんで、カラムを追加するときはindexを指定するのに
アイテムを追加するときはデータの中にindexが含まれてるんだ?

21 名前:デフォルトの名無しさん :04/09/19 15:47:41
はぁ?

22 名前:デフォルトの名無しさん :04/09/19 15:57:53
>>20の発言を重く見たゲイツは強権を発動
$70兆を投与し現行のWindows全てにパッチを当て
リストビューアイテム追加時のデータからindexを分離した

897 名前:デフォルトの名無しさん[sage] 投稿日:04/02/29(水) 22:21:15
ListViewむかつく。
変更が少ないカラムは良いけど、
アイテムデータにはindexを含めろよ。別管理マンドクセ。

23 名前:デフォルトの名無しさん :04/09/19 16:00:03
今年の2月29日は日曜日じゃなかったか?

24 名前:デフォルトの名無しさん :04/09/19 17:26:57
ぐだぐだだな。

25 名前:デフォルトの名無しさん :04/09/19 19:15:20
コントロールパネルの地域のオプションに基づいた日付や数値の整形をしたいのですが
その情報はどこで得られるのでしょうか。

26 名前:デフォルトの名無しさん :04/09/19 20:41:50
>>25
日付はGetDateFormat、
数値はGetNumberFormatで整形できる。
形式を知りたいだけならGetLocaleInfo。

27 名前:デフォルトの名無しさん :04/09/19 22:47:39
>>26
ありがとうございました、そのまんまですね。
GetDateFormat/GetTimeFormatは見つけていたのにNumberFormatは見落としていたようです。

28 名前:デフォルトの名無しさん :04/09/20 01:38:34
IShellFolder2::GetDetailsOfでループを回してカラムを取得しているのですが、
所有者の次、作成者の前に details.str が L"" の要素が列挙されます。
エクスプローラのカラムのカスタマイズでは出てこないのですが、これは何なのでしょうか?

29 名前:28 :04/09/20 02:54:53
GetDefaultColumnState/SHCOLSTATE_HIDDENでふるいに掛けて自己解決しました。

30 名前:デフォルトの名無しさん :04/09/20 11:29:15
エディットボックスについてです。
EM_REPLACESELで文字を最後に追加した時に、
勝手にスクロールしないようにするにはどうすれば良いでしょうか?
スクロールバーの位置を弄ってみたんですがだんだんずれて行きます。
SDKだけで作ってます。
いい方法があれば教えてください。
リッチエディットでも構いませんっ

31 名前:30 :04/09/20 11:49:22
すみません、解決しました。

32 名前:デフォルトの名無しさん :04/09/20 13:20:00
アプリ開発プログラマーからの視点で聞きたいのですが、
MapFanやデジタル全国地図などのように、オンラインで多ユーザーの同時アクセス、
大きめのデータのやりとり(地図ベクトルデータ)を前提にしたシステムを
作る場合、データ送受信においてはどういったアプローチがベストでしょうか?



33 名前:デフォルトの名無しさん :04/09/20 14:13:30
32
ロードバランサー & LAMP

34 名前:デフォルトの名無しさん :04/09/20 19:27:46
//下のようなコードがあるのですがWM_NOTIFYメッセージが送られてきません。
//何が悪いのでしょうか?
#include <windows.h>
static LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wp, LPARAM lp ) {
NMHDR* nmhdr;

switch( msg ) {
case WM_DESTROY:
PostQuitMessage( 0 );
break;

case WM_NOTIFY:
nmhdr = (NMHDR*)lp;

if( nmhdr->code == BN_CLICKED ) {
// hogehoge
}
break;

default:
return DefWindowProc( hwnd, msg, wp, lp );
}
return 0;
}
//続きます

35 名前:デフォルトの名無しさん :04/09/20 19:30:40
//続きです
extern int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd ) {
WNDCLASSEX wcex; HWND hwnd; MSG msg; BOOL res;

wcex.cbSize = sizeof(wcex);
wcex.style = 0;
wcex.lpfnWndProc = WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon( NULL, IDI_APPLICATION );
wcex.hCursor = LoadCursor( NULL, IDC_ARROW );
wcex.hbrBackground = (HBRUSH)COLOR_WINDOW;
wcex.lpszMenuName = NULL;
wcex.lpszClassName = "test";
wcex.hIconSm = NULL;
RegisterClassEx( &wcex );

hwnd = CreateWindowEx( 0, "test", "test", WS_OVERLAPPEDWINDOW, 0, 0, 300, 300, NULL, NULL, hInstance, NULL );
CreateWindowEx( 0, "BUTTON", "test", (WS_CHILD|WS_VISIBLE), 100, 100, 100, 100, hwnd, (HMENU)0x1000, hInstance, NULL );
ShowWindow( hwnd, nShowCmd );
UpdateWindow( hwnd );

while( ( res = GetMessage( &msg, NULL, 0, 0 ) ) != 0 ) {
if( res > 0 ) {
TranslateMessage( &msg );
DispatchMessage( &msg );
}
}
return 0;
}

36 名前:デフォルトの名無しさん :04/09/20 19:35:45
Delphiスレから移動して参りました。

ListViewを仮想リストビューとして使っています。
項目の表示などはちゃんと出来ているのですが、
Shiftを使用した複数選択をした際に、選択情報が
LVM_GETNEXTITEM などに反映されないようです。
(LVM_GETNEXTITEM で選択アイテムを数えるプログラムを書いてみましたが
Shiftによる選択を除いて、ちゃんと動作しました。)

これは、ListViewの仕様なのでしょうか?

37 名前:34 :04/09/20 19:41:57
すいません。ボタンとかには送らないとMSDNに書いてありました。∧||∧

38 名前:36 :04/09/20 22:20:24
すいません、>>36の質問は取り消させて頂きます。
どうやら、Delphi での私の書き方が悪かったようです。
この件を確認してくださった方がいらっしゃたら、すいません。

39 名前:デフォルトの名無しさん :04/09/21 10:00:14
>ボタンとかには送らないとMSDNに書いてありました。

そりゃそうだ。通知メッセージは、コントロールが親に送るもんだから

BN_CLICKED なら WM_COMMAND だよ

40 名前:デフォルトの名無しさん :04/09/21 12:01:42
WNDCLASSEXの、
cbWndExtra→Set[Get]WindowLong
cbClsExtra→Set[Get]ClassLong
がわかったのですが、これはどのように使い分ければいいのですか?


41 名前:デフォルトの名無しさん :04/09/21 12:18:46
>>40
cbWndExtra→ウィンドウ毎に固有のデータを格納
cbClsExtra→ウィンドウクラスから作られた全てのウィンドウが共有するデータを格納

42 名前:デフォルトの名無しさん :04/09/21 16:55:03
ビットマップ読み込みして、そこに文字を書き込むプログラムを作っています
Windows2000、XPpro(日本語、英語版)、Windows98(日本語版)では文字が縦に
出力されるのですが、Windows98の英語版でのみ、文字列が横並びに出力されて
しまいます。
読み込みをしているビットマップのサイズは縦x横=828x1165ですが、
何かWindows98での制限とかあるのでしょうか?

hDCCC = GetDC(0);
hBitmapDIB = ::CreateDIBSection(hDCCC,bif,DIB_RGB_COLORS,(VOID**)&pDIB,NULL,0);

hDCBB = CreateCompatibleDC(hDCCC);
ReleaseDC(0,hDCCC);
hBMMM = (HBITMAP)SelectObject(hDCBB,hBitmapDIB);

hFOnt = CreateFont(iFontHeight,0,2700,2700,FW_REGULAR,FALSE,FALSE,FALSE,DEFAULT_CHARSET,
OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,PROOF_QUALITY,
FIXED_PITCH | FF_MODERN,NULL);
hFOOO = (hFOnt)SelectObject(hDCBB,hFOnt);
SetBkMode(hDCBB,TRANSPARENT);

TextOut(hDCBB,dwX,dwY,buf,strlen(buf));
::CopyMemory( (BYTE*)m_lpNewImage + m_nHeaderSize,pDIB, m_nImageSize );
SelectObject(hDCBB,hFOOO);
SelectObject(hDCBB,hBMMM);
DeleteObject(hFOnt);
DeleteObject(hBitmapDIB);
DeleteDC(hDCBB);


43 名前:ほんたま :04/09/21 20:56:54
おみゃ〜らよ、Win32APIでRECT構造体を使う関数ってよくあるだろ?
あれは、別にRECT構造体でなくてもいいんだぞ。
自分でKINTAMA構造体をつくって、そのメンバをOMANKO1、OMANKO2,OMANKO3,OMANKO4という4つのint型にして、
rect.left、rect.right、rect.top、rect.bottomのかわりに、
KANTAMA.OMANKO1、KANTAMA.OMANKO2、KANTAMA.OMANKO3、KANTAMA.OMANKO4をつかってもまったく問題ないぞ!!!


44 名前:ほんたま :04/09/21 20:57:33
おみゃ〜らよ、RECT構造体ばかりではないぞ!
WINで定義されている構造体は全部そうだ。
おみゃ〜らよ、WINで定義されている構造体を使う必要はまったくない。
メンバの型と数さえ同じなら、自分で好き勝手な構造体を作って、それを使ってもまったく問題ない!!!
おみゃ〜らよ、知らなかったろ?


45 名前:デフォルトの名無しさん :04/09/21 21:00:30
>>44
詰め物の位置や数も気にしないで良いんですか?

46 名前:ほんたま :04/09/21 21:14:52
>>45
正確に言うと、詰め物で気にしなければならないのは、数、型、順番だ。
逆に言うと、詰め物の数、型、順番さえ合っていれば、WIN定義の構造体を使わなくてもいいってことだ。
自分で好き勝手な構造体をつくって使えばいい。

47 名前:デフォルトの名無しさん :04/09/21 21:18:14
>>46
詰め物の型って?

48 名前:デフォルトの名無しさん :04/09/21 21:23:35
彼は詰め物=構造体の各メンバだと解釈したらしい。

49 名前:デフォルトの名無しさん :04/09/21 22:43:42
CreateWindowでクライアント領域にはっ付けたボタンのキャプションのフォントを
変更するにはどうすればよいのでしょう?

50 名前:49 :04/09/21 22:44:27
↑フォントというかサイズが大きいので小さくしたいのです。

51 名前:デフォルトの名無しさん :04/09/21 23:05:01
WM_SETFONT

52 名前:デフォルトの名無しさん :04/09/21 23:15:03
>>51
危うくオーナードローに踏み切りかけました。ありがとうございまs

53 名前:デフォルトの名無しさん :04/09/21 23:25:17
ほんならやー、CRectオブジェクトへのポインタは
RECT構造体へのポインタにキャストしても
使えるねんでーたぶん。

54 名前:デフォルトの名無しさん :04/09/21 23:29:38
あ、ポインタじゃなくてもいいか

55 名前:デフォルトの名無しさん :04/09/21 23:53:59
何でほんたまは当たり前のことを説明してるだけなのに偉そうなんですか。
誰か教えてください、

56 名前:デフォルトの名無しさん :04/09/22 01:40:55
スレッドが二つ、スレッド1とスレッド2あったとします。
スレッド1からスレッド2にPostMessage()で
ある構造体typedef struct foo_tag{...}FOO;をポインタで渡す場合、自動変数で渡した方がいいのでしょうか?
それともmallocした方がいいのでしょうか。
どういう指針で考えたらいいのでしょうか?

(1)FOO foo;
PostMessage(hwnd,MSG,&foo,0);
(2)FOO *foo
PostMessage(hwnd,MSG,foo,0);


57 名前:デフォルトの名無しさん :04/09/22 01:43:36
1は消滅する

58 名前:56 :04/09/22 01:58:14
すみません、日本語がおかしかったので再度。

スレッドが二つ、スレッド1とスレッド2あったとします。
スレッド1からスレッド2にPostMessage()で
ある構造体typedef struct foo_tag{...}FOO;を渡す場合、自動変数で渡した方がいいのでしょうか?
それともmallocした方がいいのでしょうか。
どういう指針で考えたらいいのでしょうか?

(1)FOO foo;
PostMessage(hwnd,MSG,&foo,0);
(2)FOO *foo
PostMessage(hwnd,MSG,foo,0);


59 名前:デフォルトの名無しさん :04/09/22 01:59:10
1は消滅する

60 名前:56 :04/09/22 02:00:56
>>57
渡された側でディープコピーすれば値はわたるが、
他のスレッドがこのPostMessageを呼び出す関数を使ったときにこのfooのスタック領域を上書き(初期化)してしまうということですね。

61 名前:デフォルトの名無しさん :04/09/22 02:08:07
>>60
んー?「このPostMessageを呼び出す関数を使ったとき」に限らないよ?

62 名前:デフォルトの名無しさん :04/09/22 02:10:21
違う。PostMessageはSendMessageじゃない。
変数の生存期間の問題なんで自分でタイミングを完全に理解できてないと
自動変数を使うのはまずい。

63 名前:デフォルトの名無しさん :04/09/22 02:38:21
>>62
つまりSendMessageは同期関数で、PostMessageは非同期関数。
非同期関数はメッセージを渡したらすぐにリターンするから、Postされた側は処理を継続できる。
タイミングとは、Postされた後にその渡された&fooを呼び出した側でまた操作する(消去したり、値を変えてしまう)のはいつか
ということですね。

64 名前:デフォルトの名無しさん :04/09/22 07:48:04
スタックってスレッド毎に独立してるんじゃなかったか?
だったらSendだろうがPostだろうが自動変数は使えないだろ。


65 名前:64 :04/09/22 07:50:54
ごめん、なんか勘違いしてた。
わすれてください

66 名前:デフォルトの名無しさん :04/09/22 08:20:17
排他制御した方が良いような希ガス。

67 名前:デフォルトの名無しさん :04/09/22 08:33:39
矩形でないところへ bitmap の絵を貼り付けるため、24 bit color の色を
SetPixel() で、HDC に埋めていますが、色が元のとは違います。
元のは、暗い褐色なのに、青黒いのです。HDC の設定でなにか必要に思え
るのですが、なんでしょうか。BeginPaint() 以降なにもしていません。

68 名前:67 :04/09/22 08:44:35
>>67
自己レス。B と R が逆だった。うかつ。

69 名前:デフォルトの名無しさん :04/09/22 10:58:05
>矩形でないところへ bitmap の絵を貼り付けるため

リージョン使って SelectClipRgn してから BitBlt するのが普通

70 名前:デフォルトの名無しさん :04/09/22 12:27:37
WindowsのIDはどうやって取得しますか?
マイコンピュータ右クリック→システムのプロパティ→全般タブで
使用者: のところに出ている xxxxx-xxx-xxxxxxx-xxxx の文字列のことです.

71 名前:デフォルトの名無しさん :04/09/22 13:18:45
レジストリ

HKEY_LOCAL_MACHINE の Software\Microsoft\Windows\CurrentVersion

72 名前:デフォルトの名無しさん :04/09/22 14:03:25
>>71
thx!!

73 名前:デフォルトの名無しさん :04/09/22 14:26:34
MultiByteToWideCharなんかのWideChar(UNICODE)ってのは
終端ヌルも含めオール2バイト(UTF-16?)でいいのですか?
WORD境界にそろえろと言われたもので調べています。

74 名前:デフォルトの名無しさん :04/09/22 14:35:51
>終端ヌルも含めオール2バイト

そうだと思います。

75 名前:デフォルトの名無しさん :04/09/22 14:41:20
>>73
2バイト単位の符号であることは確かです。
最近はサロゲートペアをサポートしているようなので1文字=2バイトとは限りませんが。


76 名前:73 :04/09/22 15:02:10
了解です
WORD単位ならOKなので。ども

77 名前:デフォルトの名無しさん :04/09/22 16:10:02
C+ウィンアプリ+SDKのメッセージループ外で、
PostQuitMessage or PostMessage(WM_APP)を行っても大丈夫でしょうか。
メッセージループ外でそれらを行い、メッセージループに入った時、
待ち状態にならないように、すぐにメッセージ処理を行いたいのですが。

78 名前:デフォルトの名無しさん :04/09/22 16:21:02
>>77
大丈夫だったと思う。

79 名前:77 :04/09/22 16:25:12
>>78
分かりました。ありがとうございました。

80 名前:デフォルトの名無しさん :04/09/22 19:06:31
>>77

むしろメッセージループ内で行ってるのを見たことないけど

81 名前:デフォルトの名無しさん :04/09/22 19:33:02
最初にPeekMessage呼び出してメッセージキューを作っておく必要があるんじゃないの?

82 名前:デフォルトの名無しさん :04/09/22 19:56:45
DefWindowProcは、他のメッセージをやった後、行うのはダメなのでしょうか。

83 名前:デフォルトの名無しさん :04/09/22 20:06:58
デフォルト処理が自前処理と重なってわやなことになる場合もあるから
メッセージの説明をMSDNで確認すれ

84 名前:デフォルトの名無しさん :04/09/22 20:11:10
>>83
調べてみます。ありがとうございました。

85 名前:デフォルトの名無しさん :04/09/22 22:56:00
>>83
わや?

86 名前:デフォルトの名無しさん :04/09/22 23:17:13
STRRET::uTypeがSTRRET_OFFSETの場合、
返ってくる文字列はワイド文字列なんでしょうか?
MSDNにはpidlの先頭からのオフセットとしか書いてないし、
STRRET_OFFSETを返す例を見つけられないので調査も出来ないです。

87 名前:デフォルトの名無しさん :04/09/22 23:51:48
>>86
ぐぐった限りでは char* にキャストしている例ばかりがヒットした。
もしかして SHGetFileInfoA と SHGetFileInfoW で違うのかもしれない。
あいまいですまん。

88 名前:デフォルトの名無しさん :04/09/22 23:58:58
RFC2104に記述されているHMAC:メッセージ認証のための鍵付ハッシング
について実装したいと思っているのですが、実装方法分かる方
いらっしゃいますでしょうか?

通常通りハッシュ生成を行い、RFCに記述されている
H(K XOR opad, H(K XOR ipad, text))
の通り計算を実装すると正しく出力されたのですが

APIヘッダとか見ているとHMAC_INFO構造体とか色々用意されていて
自分で実装しなくても算出してくれそうなのですが使い方どうも
よくわかりません。

CryptCreateHashのhKeyに正しいKeyを渡せば上手くいきそうな
雰囲気なのですがそのhKeyが?(これであっているか不明ですが)

とりあえず困らないのですけど気になってしょうがない。

89 名前:87 :04/09/23 00:06:41
>>86
ヘッダ見たら
#define STRRET_OFFSET 0x0001 // Use STRRET.uOffset to Ansi
って書いてあった。orz
なら ANSI 文字列でいいのだろう。

90 名前:67 :04/09/23 00:08:39
>>69
ヒントを有難う。3次元座標の空間に bitmap を浮かべて、マウスで
空間を動かすと、台形になったりひし形になるのを試している。
パース修正っていうのかな。

91 名前:デフォルトの名無しさん :04/09/23 01:06:54
>>89
ありがとうございます。
まさかMSDNに書いてない事がヘッダに書いてあるとは。
大変参考になりました。

92 名前:デフォルトの名無しさん :04/09/23 02:40:18
Sleep(1)って本当に1ミリ秒なんですか?
なんか使っててもっと長いようなんですが。。。

93 名前:デフォルトの名無しさん :04/09/23 02:49:21
Sleep(1)なら最低でも1ミリ秒以上は戻ってこない。いつ戻ってくるかはなんの保証も無い。

94 名前:デフォルトの名無しさん :04/09/23 03:33:09
使えないAPIですね。さすが糞OS。

95 名前:デフォルトの名無しさん :04/09/23 03:38:12
正確な計測を行いたければ代替手段がありますが何か?

96 名前:デフォルトの名無しさん :04/09/23 03:39:41
timeBeginPeriod() で Sleep() の精度も変化

97 名前:デフォルトの名無しさん :04/09/23 04:29:49
>>94
最低でも1ミリ秒は、他のプロセスやスレッドにCPU処理を譲るという意味で、
ちゃんと役に立っているよ。
糞OSなのもわかるけど、正しい使い方をしないで糞というのもどうかと。

98 名前:デフォルトの名無しさん :04/09/23 04:53:30
彼はWindowsを憎んでいるのです

99 名前:デフォルトの名無しさん :04/09/23 05:05:54
ボケーしね,とりあえず怒った

100 名前:デフォルトの名無しさん :04/09/23 06:01:02
>>94
ちなみにLinuxのリアルタイム処理はもっと使えない。

101 名前:デフォルトの名無しさん :04/09/23 08:22:42
つーかリアルタイムOS使えよ

102 名前:デフォルトの名無しさん :04/09/23 09:01:57
ソフトしかわからん奴の限界

103 名前:デフォルトの名無しさん :04/09/23 10:15:12
>>102
最近ハードウエアについて学んだ学生さんですか?

104 名前:デフォルトの名無しさん :04/09/23 10:41:56
まだ10年の若輩者です

105 名前:デフォルトの名無しさん :04/09/23 10:53:36
義務教育10年目

106 名前:デフォルトの名無しさん :04/09/23 11:54:41
計測をするなら、お手軽なのはGetTickTimeを使う
出来るだけ正確に測定したい場合は、QueryPerformanceを使う

107 名前:デフォルトの名無しさん :04/09/23 12:12:51
>>106
QueryPerformanceCounterって
一部の古いPentiumProマザーボードで正常な値を取得できないとか
一部のマルチプロセッサ環境で異常な値を返す場合があるとか
SpeedStepやCnQなどのクロック変化で正確な時間が測れない場合があるとか
噂やネットで聞くがどうなんだろう

108 名前:デフォルトの名無しさん :04/09/23 12:55:01
GetTickTime

109 名前:デフォルトの名無しさん :04/09/23 14:05:12
>>107
やねうらお氏のWebページか、書籍に詳しく書かれてる。
ちゃんとまとめてあるし、実験&考察までしているのはここだけじゃないか?

110 名前:デフォルトの名無しさん :04/09/23 14:48:58
またうらおか

111 名前:デフォルトの名無しさん :04/09/23 15:29:22
WM_GETMINMAXINFOが通知されるときの
MINMAXINFOのデフォルト値を調べることってできますか?
ウィンドウプロシージャの中でやるのはナシ

112 名前:デフォルトの名無しさん :04/09/23 16:55:19
DefWindowProc(hwnd, WM_GETMINMAXINFO...)

113 名前:デフォルトの名無しさん :04/09/23 17:53:32
>>112
アリガトゴザマス
でも、lParamには一体何を渡せば・・・。

114 名前:デフォルトの名無しさん :04/09/23 20:18:22
シンプルな枠なしウィンドウ
(2chブラウザで >>番号 にマウスを移動させると出現するポップアップのようなもの)
を作りたいのですが、これはWIN32APIの周りをいじると実現できるのでしょうか?
以下、試しにrubyで書いてみたのですが、こんな大げさなウィンドウを作る必要がなくて、
テキスト情報をもっとシンプルにポップアップしたいのですが…

require 'Win32API'
msgbox = Win32API.new('user32', 'MessageBox', 'LPPI', 'I')
msgbox.call(0, 'Message Box', 'test', 0)

ご存じのかた、情報のポインタだけでも教えていただけないでしょうか。

115 名前:デフォルトの名無しさん :04/09/23 20:24:52
>>114
2chブラウザのポップアップウインドウは普通ToolTipをつかっているはず


116 名前:デフォルトの名無しさん :04/09/23 21:07:58
Win2k以降でIShellDetailsはIShellFolder2に取って代わられたと書いてあるのですが、
特定のフォルダ(タスク等)でIShellFolder2の取得に失敗します。
タスクの場合は、IShellDetailsの生成に成功するのですが他のフォルダの場合は
IShellDetailsに失敗してIShellFolder2で成功するようです。

IShellFolder2生成
if (失敗)
 IShellDetails生成
 if (失敗)
  エラーか、独自処理

って感じで良いんでしょうか?
>For Windows 2000 and later systems, IShellDetails is superseded by IShellFolder2.
を見るとObsoleteな扱いになってるように見えるのですが。

117 名前:デフォルトの名無しさん :04/09/23 21:32:12
>>113
自分のウィンドウにWM_GETMINMAXINFOが来たときのlParamには何が入ってる?

118 名前:デフォルトの名無しさん :04/09/24 00:03:49
>>117
というよりも、どちらかと言うと、
その値を調べたいのです
やっぱりWM_GETMINMAXINFOに張りついてないと
いけないんでしょうかね・・・

119 名前:デフォルトの名無しさん :04/09/24 00:58:20
だから呼び出し元でMINMAXINFO構造体を用意して、
lParamにそのアドレスを渡せっていう話だろ。

120 名前:114 :04/09/24 05:50:26
>>115
ありがとうございます。試しに以下のコードでTooltipを表示してみたのですが、
require 'vr/vrcontrol': require 'vr/vrtooltip'
class Form4ToolTip < VRForm
include VRDrawable
AREA = [0,0,110,110]
def construct
self.caption = "tooltip"; self.move 10,10,110,110
tt = createTooltip; tt.addToolArea AREA,"てすと"
end
end
VRLocalScreen.start(Form4ToolTip)

できれば、元になるウィンドウ無しにツールチップだけ表示することはできないでしょうか。
たとえばIEのテキスト入力画面でカーソルの位置に突如ポップアップを出すとか。

babylonとかドクターマウスとか、翻訳系のアプリケーションの場合には、
元になるウィンドウ関係なしにポップアップ表示が実現されているのですが、
あーいうのはどうやってプログラムを組めばよいのでしょうか…ご存じの方教えてくださいm(__)m

121 名前:デフォルトの名無しさん :04/09/24 10:23:40
>>119
初期化なしでいいんですか?

122 名前:デフォルトの名無しさん :04/09/24 10:54:47
>>116
Windows 2K 以降のシステムに対しては、IShellDetails は IShellFolder2 で置き換えられました、
みたいな意味だから例えば Win98 や NT の頃に出た Shell Namespace Extension の中には、
IShellDetails しか実装していないものもある。


123 名前:デフォルトの名無しさん :04/09/24 11:07:15
WM_*の値がいくつであるか、一覧が乗っているサイトが
ありましたら、URLを教えてください。

通常は、マジックナンバーは使わないのですが、
メッセージ処理の研究をしていて、来たメッセージのmsg.messageを
ウィンドウなどに表示したとき、どのWM_*か知りたいのです。

124 名前:デフォルトの名無しさん :04/09/24 11:32:26
>>123
WinUser.h見たほうが早いと思うが…。

125 名前:デフォルトの名無しさん :04/09/24 12:06:07
>>124
なるほど。ありがとうございました。

126 名前:デフォルトの名無しさん :04/09/24 14:09:36
Spy++じゃダメなの?

127 名前:デフォルトの名無しさん :04/09/24 14:51:02
CreateWindowでモーダルを作ろうと思っているのですが、
DS_SYSMODALはどこかのウィンドウの「子」として作らなければ関数失敗しますか?
自分は失敗するのですが。。

128 名前:デフォルトの名無しさん :04/09/24 19:41:35
CreateWindowで、自プログラムのメインウィンドウを作る場合、
そのウィンドウの親ウィンドウとして、
GetDesktopWindowで得たウィンドウハンドルを指定するべきなのでしょうか?
それとも、NULLを指定するべきでしょうか?


129 名前:デフォルトの名無しさん :04/09/24 20:18:17
リングレベルを変更するAPIを教えて下さい。


130 名前:デフォルトの名無しさん :04/09/24 20:21:55
お前ごときに変更されてたまるか。

131 名前:デフォルトの名無しさん :04/09/24 20:31:45
>>128
どっちでもいい。

132 名前:デフォルトの名無しさん :04/09/24 20:38:45
終了ボタンを押した時に、GetMessageから出るメッセージを教えてください。

調べてみると、WM_NCLBUTTONDOWNが出ているみたいなのですが、
それはバーとか非クライアント領域で共通のものなので、
他に出ていると思うのですが、分かりませんでした。

WM_CLOSEは、コールバックの方では出ているようなのですが、
GetMessageからは、出ていないようです。

133 名前:デフォルトの名無しさん :04/09/24 20:43:58
>>131
それぞれ値が全く違うので気になりました。
NULLを指定した場合には、
一体何を親ウィンドウとしているのでしょうか?
NULLは標準的なやり方ではないのですか?


134 名前:デフォルトの名無しさん :04/09/24 21:01:25
>>133
Spy++でみると、どっちで作ってもオーナーウインドウは(なし)になる。

135 名前:134 :04/09/24 21:02:46
ちなみに、マルチモニタ(4枚)環境。

136 名前:デフォルトの名無しさん :04/09/24 21:45:21
>>132
GetMessageからメッセージが出てくる順番は先入れ先出しのキューだから、
即座に反応してほしいメッセージは直接ウィンドウプロシージャへ送られる。



137 名前:デフォルトの名無しさん :04/09/24 22:19:02
WindowsOSのプロセスは厳密には親子関係にはないそうですが、
子プロセスが先に終了しても全く問題はないということですか?


138 名前:デフォルトの名無しさん :04/09/24 22:47:27
>>132
アレコレあるけど最終的(の1っ歩前)は、WM_SYSCOMMAND で SC_CLOSE が来てると思うよ。
普通のウィンドウなら。

139 名前:132 :04/09/24 22:55:57
>>136>>138
ありがとうございます。もう一度試してみます。

140 名前:デフォルトの名無しさん :04/09/25 05:31:55
ファイルの切り取りや貼り付けをする一般的な方法ってどんなものでしょうか?
とりあえず思いつくのは、コンテキストメニューを取得して、verbに"cut"や"paste"を指定することなのですが
もっと一般的な方法ってないでしょうか?
SHFileOperationみたいな物が用意されていそうな雰囲気があるのですが。

141 名前:デフォルトの名無しさん :04/09/25 05:38:08
>>137
そう。子プロセスが終了するまで親は停止するようなプログラムも作れるし、親が終了しても子はそのまま残るし。

142 名前:デフォルトの名無しさん :04/09/25 07:30:09
>>141
ゾンビらないのですか?
優秀なOSですね。


143 名前:デフォルトの名無しさん :04/09/25 07:57:37
ゾンビって終了したにも関わらずそのステータスを誰にも
取得されていないプロセスのことじゃなかったっけ?
なんか大きな勘違いしてるカキコを2chでよく見かけるけど。

144 名前:デフォルトの名無しさん :04/09/25 09:34:27
あの、マウスのカーソルって条件によって形を変えられるじゃないですか。
例えば場所によって一般的なアローであったり手の形であったり、エディットボックスのときも変わりますよね。
そこでなのですが、自分以外のプログラムによって変わったカーソルの形が画面に表示されるときに
何になっているのかということを取得することってできませんか?
また、カーソルの形の画像自体を取得できなくてもある位置からある違った位置にカーソルを動かした時に
そのカーソルの画像が変わったかいなかを取得できるだけでもかまいません。
画像判定以外でどうにかならないかと考えております。
お知恵を貸していただける方がいらっしゃいましたらお願いします。


145 名前:デフォルトの名無しさん :04/09/25 09:49:47
HCURSOR SetCursor(HCURSOR hCursor);
の戻り値を保存して
次判定するときに参考にするんじゃだめ?

146 名前:デフォルトの名無しさん :04/09/25 09:55:15
マナーの悪いプログラム、嫌いです。


147 名前:デフォルトの名無しさん :04/09/25 11:21:00
自分で登録したタスクトレイのアイコン上に
マウスカーソルが行った事を知るにはどうすればいいんでしょう?

WM_MOUSEMOVEだと、どういう条件だかわからんけど
がしがし飛んできてるみたいで。。。
WM_MOUSEMOVEでどうにかするものなのかな?



148 名前:デフォルトの名無しさん :04/09/25 11:24:16
>>147
はぁ?NOTIFYICONDATA.uCallbackMessage

149 名前:147 :04/09/25 11:37:42
>>148
言葉足らずですまん
uCallbackMessageで受け取った時のことねん

今もぐぐってるけど、WM_LBUTTONDOWNとかの
クリック系しか無くて、困ってるんです

150 名前:デフォルトの名無しさん :04/09/25 12:15:32
最後にlparam=WM_MOUSEMOVEがきたときのマウス座標(p1)を
記憶しておいて、タイマーでマウスの座標(p2)を定期的にチェック
してp1==p2ならアイコン上、違ったらアイコン外とみなすのはどうかね?
試してないけど。

151 名前:147 :04/09/25 12:39:44
下げ忘れてた、すまん

>>150

うーむ、こういう案になるのかぁ
入った時と出た時だけ捕まえるとか。。。無理( ・ω・)?

まぁ、もう暫く頭の中で練ってみます
ありがとうです

152 名前:デフォルトの名無しさん :04/09/25 12:52:00
リスト構造のデータを管理するときは積極的にHeapCreateするべきでしょうか?

153 名前:デフォルトの名無しさん :04/09/25 12:58:19
>>140
IShellLinkみたいなやつがあった筈。

154 名前:デフォルトの名無しさん :04/09/25 18:10:05
Win2KSP4
C++Builder5で
::MessageBeep(MB_OK)
とかやっても音が出ないんです

普段操作してる時は音出ます
VSは持ってないのでテストできないんですが
こういう症状出た事ある人いますか?

155 名前:デフォルトの名無しさん :04/09/25 18:21:24
他のアプリでメッセージボックスが出る時にも音が出てないのか?
出てなければ環境の問題。

他のが出てておまいのが出ないなんてのはまずあり得ないはず。

156 名前:154 :04/09/25 18:29:36
ペイントなんかだとダイアログの時音が出るけど
・・・C++Builderで作ってるソフトからだとダイアログの時音が出ない!

なんだこりゃ・・・?
C++ Builder の環境疑うべきかな?

157 名前:154 :04/09/25 19:00:11
解決しました
TweakUIでサウンド殺してました
すんません、ゆるして・゚゚(´□`。)°゚。ワーン

158 名前:デフォルトの名無しさん :04/09/25 19:00:33
IContextMenuを使ったプログラムを作ると、
Spy++で見るメッセージのネスとレベルがとんでもない勢いで増えていくんですがこんなモンですか?
エクスプローラのネストレベルもどんどん増えていくみたいなのですが。

159 名前:デフォルトの名無しさん :04/09/25 19:45:02
DialogBoxParamがモーダルになってくれません。
オーナーウィンドウがNULLでもモーダルにする方法はないでしょうか?

160 名前:デフォルトの名無しさん :04/09/25 19:54:49
>>159
どういう理由でモーダルでないと判断したんだ?

161 名前:デフォルトの名無しさん :04/09/25 20:04:42
>160
アプリから呼ばれるDLLを開発しており、アプリからDLLを呼んでダイアログを
開いたところ、呼び出し側アプリのウィンドウが操作できてしまう。。。

162 名前:デフォルトの名無しさん :04/09/25 20:10:23
DialogBoxParam(m_hInstance,
 MAKEINTRESOURCE(IDD_ReaderSelectDlg),
 0,
 DialogProcEntry,
 (LPARAM)this);

…3番目が0じゃだめなの???

163 名前:デフォルトの名無しさん :04/09/25 20:23:35
アプリウィンドウをオーナーに出来ない理由があるのか?

164 名前:デフォルトの名無しさん :04/09/25 20:33:18
アプリウィンドウのハンドルの取得方法がわからないのでNULLを渡しています。
自分(ダイアログ)を開いた親、もしくは
アプリのTopLevelウィンドウがわかればいいのだけれど…

165 名前:デフォルトの名無しさん :04/09/25 20:43:29
普通呼ぶとき渡してもらうだろ

166 名前:デフォルトの名無しさん :04/09/25 20:49:58
今回作っているものは渡してもらえません(T.T)

167 名前:デフォルトの名無しさん :04/09/25 21:13:40
>166
最初から設計のやり直し。
はい次の方どうぞ。


168 名前:デフォルトの名無しさん :04/09/25 21:18:50
ったく2ちゃんねらは役にたたねぇなw

169 名前:デフォルトの名無しさん :04/09/25 21:21:43
EnumWindowで探すか?


170 名前:デフォルトの名無しさん :04/09/25 22:06:57
そのあとGetWindowThreadProcessIdかな。
最初からEnumThreadWindowsでもいいかも。

171 名前:デフォルトの名無しさん :04/09/25 22:12:45
>>168
同意

172 名前:デフォルトの名無しさん :04/09/25 22:15:49
>>171
じゃあ何故オマイラはここにいるのですか?

173 名前:デフォルトの名無しさん :04/09/25 22:18:40
>>172
役に立たない人間だからです

174 名前:デフォルトの名無しさん :04/09/25 22:52:09
>>161
システムモーダルにすれば操作できないよ

175 名前:sage :04/09/26 01:19:55
あるウィンドウAを親としてWS_CHILDスタイルを指定しないでウィンドウBを作ったとき
Bから見たAをオーナーウィンドウ、、というんですよね。違ってるでしょうか。

GetWindowでGW_OWNERを指定した場合は必要なAのハンドルが得られるのですがGetParentを使用した場合に関数が失敗します。

(GetParent)
「指定したウィンドウがトップレベルウィンドウの場合は、オーナーウィンドウのハンドルが返ります。指定したウィンドウが
トップレベルのオーナーを持たないウィンドウだった場合、および関数が失敗した場合は NULL が返ります。」

GetParentでオーナーを取得できているのにGetParentでオーナーが存在していないという事になっている(?)のは何故なのでしょうか。
間違い指摘してくださいお願いします。


176 名前:デフォルトの名無しさん :04/09/26 01:41:17
>>175
とりあえずGetLastError()してみては

177 名前:671 :04/09/26 07:51:00
ドキュメントの間違い。ずっと前から。

178 名前:デフォルトの名無しさん :04/09/26 11:21:31
プロセスの親子関係が曖昧なんだから、
ウィンドウの親子関係くらいはシンプルでハッキリと作ったらいいのに。


179 名前:デフォルトの名無しさん :04/09/26 11:39:56
はっきりしてるよ。親子関係と所有関係を混同してる人が多いだけで。
GetParent() はオーナーを返さないのも名前からいって妥当だと思うけどね。

180 名前:デフォルトの名無しさん :04/09/26 13:00:02
すっげー、このヒト。名前だけでAPIの全貌つかんじゃってるよ。
当然とか言い切っちゃってるし。


>The GetParent function retrieves a handle to the specified window's parent or owner.
>指定された子ウィンドウの親ウィンドウまたはオーナーウィンドウのハンドルを返します。



181 名前:デフォルトの名無しさん :04/09/26 13:07:25
>>180
当然とは言ってないわけだが

182 名前:175 :04/09/26 13:20:30
sageを今やっと理解しました175です。ありがとうございます。

>>176さん

使った事がない関数なので調べて見ます。
今時間がないので試せませんが、夜試してみようと思います。

>>177さん

あ、MSDNの文書自体が間違っているということですか??
考えもしませんでした。そういえば日本語のMSDNは誤植が多いって誰かが・・。
英語も勉強しなくては

>>178さん

僕も自分が親とオーナーのをちゃんと識別できているかどうかすらわかってない感じです。
子は親の領域内に表示されるウィンドウ、オーナーに所有されたウィンドウというのは
オーナーが閉じられたときに自身も閉じられてしまうようなウィンドウ、あとは上に書いたことをつけたしたような認識です。

>>179さん

やっぱりMSDNが誤植でGetParentはオーナーを返さないんですね。
自分も親子関係と所有関係の違いをよくわかっておりません。
「オーナーウィンドウ 親ウィンドウ 違い」でググって解説は見つけたのですが、
特にオーナーについて具体的に何を指しているのかわかりませんでした。
教えてください、お願いします。

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


183 名前:デフォルトの名無しさん :04/09/26 13:25:44
>>182

英語ですけど。

Win32 Window Hierarchy and Styles

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwui/html/msdn_styles32.asp

184 名前:144 :04/09/26 13:40:05
GetCursor()で取得しようとしたんですがカーソルが矢印でもハンドでも
同じ値しか返してくれません一体どうすればいいんでしょうか・・・P_q

185 名前:デフォルトの名無しさん :04/09/26 13:45:18
>>184
これかな。

マイクロソフト サポート技術情報 - 230495
HOWTO:現在のカーソルのハンドルを入手します。
http://support.microsoft.com/?kbid=230495

186 名前:デフォルトの名無しさん :04/09/26 13:46:08
>>184
最終手段だけど、APIフックでSetCursor()をフックしちゃえば?

187 名前:デフォルトの名無しさん :04/09/26 13:47:12
x64コンパイラを含んだPlatform SDKを入手したいのですが、
どうやったら入手できますか?
MSDN以外にも、betaplaceから入手できるとCマガジンに書いて
あったのですが、Guest IDを聞かれるだけで、メールなども来ていません。

188 名前:175 :04/09/26 23:25:56
>>180さん

あれ。

>The GetParent function retrieves a handle to the specified window's parent or owner.
>指定された子ウィンドウの親ウィンドウまたはオーナーウィンドウのハンドルを返します。

MSDNの内容は誤植じゃないって事でしょうか?

GetLastErrorをGetParentの直後に使ってみました。関数はハンドルを返しませんが(関数失敗?)
LastErrorの戻り値をデバッグモードで調べると0になっていました。
0のエラーコードは「正常に終了している」とどこかの掲示板のログにありましたし
MSDNのFormatMessageのサンプルコードをほぼ完全にコピペしてエラーメッセージを表示しましたが
やはり、「操作を正しく完了しています」的なメッセージでした。

ダラダラごめんなさい。GetParentはオーナーは返さないという結論でいいのでしょうか?



189 名前:デフォルトの名無しさん :04/09/26 23:58:46
> GetParentはオーナーは返さないという結論

すくなくとも Windows95,2000 では、返しませんね。
古い Win32API のヘルプでは

The GetParent function retrieves the handle of the specified child window's parent window.

となっていて、オーナーのハンドルを取得できるとは書いていない。いつからか、取得できる
という事になっているが、自分は成功したことはありません。

GetWindow() か、WS_CHILD スタイルが無いことを確認してから GetWindowsLong() では
取得できますね。

190 名前:デフォルトの名無しさん :04/09/27 00:08:44
CreateFileの第六引数・ファイル属性のFILE_ATTRIBUTE_ENCRYPTEDの説明に
このファイルまたはディレクトリを暗号化するよう指示します。
とありますけど、実際にはどうなるんですかね?このフラグでファイルに数値入れたりしても
特に何も変わってないようにみえるんですけど

191 名前:デフォルトの名無しさん :04/09/27 00:11:21
CreateFileしたユーザ自身が見たら、暗号化されて見えなくてなくて当たり前だと思うが。

192 名前:デフォルトの名無しさん :04/09/27 00:11:29
>>190
調べてないけど、FATとNTFSでは挙動が違うんでないかい?
FATでそんなめんどくさいことサポートしてないでしょ。

193 名前:デフォルトの名無しさん :04/09/27 00:14:09
スレッドがサスペンド状態かどうかを知る方法はあるのでしょうか。
たとえばVCLのTThreadクラスでは、Suspendedプロパティを設定してから
実際にサスペンドさせるので、スレッド自身がサスペンドする場合には
このプロパティは厳密にはあてにはならないと思います。
スレッドハンドルは終了しないとシグナル状態にならないようだし、
何か方法はないものでしょうか。

194 名前:デフォルトの名無しさん :04/09/27 00:26:14
>>182 WS_POPUPの場合、GetParent()はオーナーを返す。

195 名前:デフォルトの名無しさん :04/09/27 01:05:07
>>193
VCLって何?

というか、サスペンド状態ってあんまり使わんと思うんだが
(通常はイベント待ちになってるっしょ)
汎用の何かを作るの?

196 名前:デフォルトの名無しさん :04/09/27 01:12:47
>>195
193じゃないけど、VCL = Visual Component Library の略で
Delphi、C++Builder で使われてるクラスライブラリ

197 名前:デフォルトの名無しさん :04/09/27 02:00:06
>>193
WaitForSingleObject

198 名前:デフォルトの名無しさん :04/09/27 02:25:57
>>193
SuspendThreadして戻り値見るとか?

199 名前:193 :04/09/27 06:52:57
>>195
VCL知らんっすか。まァそうかもしれませぬな。
>>196さん、さんくすっす。

あんまりスレッドを作ったり終了したりすると原因不明のメモリリークがあるとか
聞くし(真偽は不明)、どうせ必要なスレッドならサスペンドで待機させといて
必要なデータを設定→Resumeの方が効率いいかなー、とオモテそんな仕組みを
考えております。

>>197
なんのハンドルを?サスペンドでもシグナル状態になるの?

>>198
考えましたけど、一瞬でもスレッドの動作を阻害するのでやだなあと。
でも一応案のひとつです。

200 名前:デフォルトの名無しさん :04/09/27 06:59:26
>>190
ファイルを暗号化するには専用のAPIを使う必要がある
暗号化属性ビットを直接いじっても駄目

201 名前:デフォルトの名無しさん :04/09/27 09:13:12
なんだDel厨か…

202 名前:デフォルトの名無しさん :04/09/27 14:10:22
>>193
待機させるならCreateEventのハンドルとかでイベント待ちする方が賢いと思うけど。
SuspendThreadはワーカスレッド側の都合に関係なく止まるから普通は使わないよ。

203 名前:デフォルトの名無しさん :04/09/27 14:31:48
質問です。
複数のアイコンを1つのファイルにまとめるためにdllを作るというのはありですか?
試してみたところ、dllはソースファイルに何も書かなくてもビルドできるようなので
正直驚いているところです。

正しいアイコン書庫ファイルの作り方は何なのでしょうか?

204 名前:デフォルトの名無しさん :04/09/27 14:38:59
>>203
WinAPIで取り出せるからdllでいいと思うけど。

205 名前:デフォルトの名無しさん :04/09/27 14:40:25
拡張子はICLにするのが一般的なんかしら。
ttp://www.venus.dti.ne.jp/~mueji/tips/tips07.htm

206 名前:デフォルトの名無しさん :04/09/27 14:56:37
>>205
情報有難うございました。
リンクページによると、dllはある種のアイコン書庫ファイル扱いされてるみたいですね。
.iclファイルという専用のフォーマットがあることは全く知りませんでした。
勉強になりました、サンクスです。ノシ

ちなみに自分がVC6SP4で生成したソースなしdllでのサイズについて触れますと、
2,238[Byte] × 219個 を組み込んだ状態で、557,056Byteのdllファイルとなったので、
オーバーヘッドは、557,056-490,122 = 66,934[Byte]でした。

207 名前:デフォルトの名無しさん :04/09/27 15:03:26
おーい、ICLは専用フォーマットじゃないよ。
アイコンしか入っていないDLLを、それとわかるように拡張子変えてるだけ。

208 名前:デフォルトの名無しさん :04/09/27 15:38:26
ListViewコントロールのスクロールバー位置についての質問です。
垂直スクロールバーが一番下に来ているかどうか知りたいのですが以下のようなコードで問題ないのでしょうか?
nPos+nPageがnMaxより1大きいのが気になるのですが‥‥

::SCROLLINFO si;
si.cbSize = sizeof(si);
si.fMask = SIF_ALL; //SIF_POS | SIF_RANGE;
::GetScrollInfo(hWnd, SB_VERT, &si);
if ((si.nPos + si.nPage - 1) == si.nMax)
  //要スクロール
else
  //スクロール不要



209 名前:デフォルトの名無しさん :04/09/27 15:38:40
>>206
リンカの/NOENTRYでもう少しサイズは小さくならないか?

210 名前:デフォルトの名無しさん :04/09/27 17:39:00
Windows であるディレクトリ以下のファイルのコピー,移動,削除などを
監視したいんだが,

FindFirstChangeNotification

を使えば,それが起きたことを教えてくれるが,
なんていうファイルのどうしたのか(コピー? 移動? 削除?)は
これじゃわからん.

これを知る方法ない?


211 名前:デフォルトの名無しさん :04/09/27 18:08:48
>>210
NTならそういうAPIが使えるが、そうでないなら自分でリストアップするしかない。
と記憶してる。

212 名前:210 :04/09/27 18:10:01
リストアップっていうのは?
どうやんの?

213 名前:デフォルトの名無しさん :04/09/27 18:19:47
>>212
変更前にファイルリストを作っておいて変更後と比較する

214 名前:デフォルトの名無しさん :04/09/27 18:21:31
>>213

常駐して,アクション(ファイル操作)が起こりしだい
リアルタイムで知りたいんだけど,
その方法じゃ無理やんけ

215 名前:デフォルトの名無しさん :04/09/27 18:25:33
アクションが起きるたびにファイルリストを随時更新するんだよ

216 名前:デフォルトの名無しさん :04/09/27 18:25:46
さよか。

217 名前:210 :04/09/27 18:32:07
>>215

1つのドライブぜんぶ監視したいんだが,
そんなことやってられっか
いくらメモリくうかわからんし,
CPU もおおいそがしだよ

218 名前:デフォルトの名無しさん :04/09/27 18:34:21
そうですか

219 名前:210 :04/09/27 18:34:57
誰かいい知恵だせよ

220 名前:デフォルトの名無しさん :04/09/27 18:38:44
さいな

221 名前:デフォルトの名無しさん :04/09/27 18:44:30
ファイルI/OのAPIをフックすればできるけど、特殊なAPIの呼び出しかたしてたり
圧縮・暗号化されてる実効ファイルとかだとちょっと面倒。

222 名前:206 :04/09/27 18:46:52
>>207
早とちりでしたか。orz

223 名前:デフォルトの名無しさん :04/09/27 19:04:00
>>210
NT系でいいんなら ReadDirectoryChangesW を非同期で使えば?

224 名前:デフォルトの名無しさん :04/09/27 19:12:35
つーか210では「あるディレクトリ」とか言ってるのに
「1つのドライブぜんぶ」とかいきなり前提条件変えるし

225 名前:デフォルトの名無しさん :04/09/27 19:21:58
もう相手すんなよ。

226 名前:デフォルトの名無しさん :04/09/27 19:52:22
(´,_ゝ`)プッ
しょせんここのレベルはこの程度だよ

227 名前:210 :04/09/27 20:02:18
あなたたちには、失望したわ。

228 名前:210 :04/09/27 20:08:47
自己解決したので、もう来ません。

229 名前:デフォルトの名無しさん :04/09/27 20:09:42
何事もなかったかのように次の人どうぞ↓

230 名前:デフォルトの名無しさん :04/09/27 20:10:08
>>223に答え教えてもらっておいて「自己解決」か。
プッ

231 名前:193 :04/09/27 20:16:35
>>202
もちろん、ワーカスレッドの都合を無視して無理やりサスペンドさせるような
作りにはしていません。
おっしゃるとおりに今までイベントオブジェクトで連携を取っていたんですが、
ワーカスレッドが自発的に停止する場合に問題だったのです。
スレ違い気味になるので詳しくは書きませんが、別のアプローチで解決しそうです。

232 名前:デフォルトの名無しさん :04/09/27 20:39:31
詳しく書け

233 名前:デフォルトの名無しさん :04/09/27 21:27:26
SHChangeNotifyRegister() は9xでも隠しAPIとして存在しているはず。

234 名前:193 :04/09/27 22:34:23
>>232
>>201にむかついたので、Del厨は引っ込みますよーだ。

235 名前:デフォルトの名無しさん :04/09/27 23:30:00
>>233
SHChangeNotifyRegisterはアテにならない。

236 名前:デフォルトの名無しさん :04/09/27 23:36:34
>>235
それは当然。ソフトウェア的に実現しているに過ぎないからね。
SHChangeNotify() をちゃんと呼んでくれるプログラムしか対応できない。
エクスプローラでの操作が反映される程度だろう。

9x でリアルタイムに反映させようと思ったら、ドライバ書くしかないんじゃないか?

237 名前:デフォルトの名無しさん :04/09/28 00:06:07
分割ウィンドウを作ろうと思ってがんばってるんですが、どうしても
みてくれが悪くなります。
MFCのCSplitterWndと同様の効果を得られるようにするにはどのように
すればよろしいのでしょうか?

238 名前:デフォルトの名無しさん :04/09/28 00:09:53
MFCと同じように書く

239 名前:188 :04/09/28 01:52:10
>>189さん

遅れてすいません。
なるほど!詳しくどうもありがとうございました!
これでスッキリ寝れます。

みなさんどうもありがとうございました。

240 名前:デフォルトの名無しさん :04/09/28 01:52:49
別スレで同じことを書きましたがスレ違いだったみたいなので
こちらで質問します。

MCIで動画を再生するプログラムを作っているのですが
MCIWndCreateでWS_CHILDを指定して再生させています。
ですがこのままだと再描画がされません。
親のウィンドウにはWM_PAINTが来るのですが、
どのように再描画させれば良いかが不明です。

どなたかご存知ないですか?

241 名前:デフォルトの名無しさん :04/09/28 15:46:13
>>240
InvalidateRect

242 名前:デフォルトの名無しさん :04/09/28 22:04:17
NamedPipeなんですけどクライアント側でWaitNamedPipeを使って待つようにしてます。
ほぼ同時刻にクライアント側から書き込もうとすると1つはタイムアウトでエラーになります。
サーバー側でのインスタンスの数は1つでも制限なしでも変わらす。

同時刻に接続に行って両方とも読むいい方法は無いですか?

243 名前:デフォルトの名無しさん :04/09/28 23:37:08
設定の保存にレジストリを使いたいんですが、レジストリに書き込むにはどうしたらいいんでしょうか。
HKEY_CURRENT_USER\SOFTWARE\Microsoft\sample (仮)に
名前 Height 値 200

という感じで記録したいんです。

244 名前:デフォルトの名無しさん :04/09/28 23:47:44
>>243
自分で調べてみてそれが分からない程度ならばプログラムをやめろ

245 名前:デフォルトの名無しさん :04/09/28 23:58:00
>>243
RegSetValueEx

これでわからなければ残念だが 244 の言うとおり

246 名前:デフォルトの名無しさん :04/09/29 02:26:39
チェックボックスを縦一列にびっしり並べたいのですが、
一つ一つの縦幅の値をどのようにして決定したらよいかわかりません。
WM_CTLCOLORBTNでデバイスコンテキストを受け取れば、
GetTextMetricsで文字の高さを得て近い事はできるかなあと思いましたが
もっと綺麗な方法があるかなと思って質問させていただきました。
よろしくおねがいします。

247 名前:デフォルトの名無しさん :04/09/29 02:43:43
プリンタなどの特殊なDC以外では、文字列の高さはフォントで決まる。どこでもいいから
スクリーン関係のHDCを取得して、使用するフォントで高さを一回求めればいい。

GetDC(0) でもいいんじゃないの、たぶん。

248 名前:デフォルトの名無しさん :04/09/29 02:54:35
醜悪なインターフェイスの典型

249 名前:デフォルトの名無しさん :04/09/29 09:32:23
統一されたインターフェイスの典型

250 名前:デフォルトの名無しさん :04/09/29 11:12:29
TrueTypeフォントデータからLineTo,MoveToで描画可能な線情報を
抽出したいのですが、何かいい方法はないでしょうか?

【現在のロジック】
DIBに文字を描画 → 輪郭だけのビットマップ画像(袋文字状態)を作成 →
ビットマップの輪郭を一筆書き線の情報に変換

一筆書き線の情報をLineTo,MoveTo描画すると元の文字の輪郭らしきものにはなるが
美しくない。

TrueTypeフォントデータから直接LineTo,MoveTo座標を抽出する方法があればベストです。
どなたか知ってらっしゃる方がいればよろしくお願いいたします。


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