■過去ログ置き場に戻る■
1-
次250
最新50
[memo]
"9999999999_00.html#R20"
という感じで、URLの最後に "#R
レスNo
" を追加すると幸せになれます。
Win32API質問箱 Build20
1
名前:
デフォルトの名無しさん
:04/06/25 14:10
スレ立てるまでもない、Win32APIについての質問はこちらへどうぞ。
ただし、最新スレくらいは質問する前に検索してくれ。というかしろ。
過去スレなどのリンクはたぶん
>>2-5
くらい。
2
名前:
デフォルトの名無しさん
:04/06/25 14:11
- 過去スレ
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
(★は「いやー ごめんなさい。」に巻き込まれた模様
3
名前:
デフォルトの名無しさん
:04/06/25 14:11
- MSDN Online
http://www.microsoft.com/japan/msdn/default.asp
- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/index.html
- 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
http://usr_vogel.at.infoseek.co.jp/Win32SDK/index.html
WindowsSDK入門
http://kerochan.no-ip.com/vcsdk/letsprog/letsprog-index.htm
4
名前:
デフォルトの名無しさん
:04/06/25 16:20
4なら海外旅行
5
名前:
デフォルトの名無しさん
:04/06/25 16:24
行ってらっしゃい
6
名前:
デフォルトの名無しさん
:04/06/25 16:34
>>1
乙。
7
名前:
デフォルトの名無しさん
:04/06/25 16:57
>>4
土産よろしく。
8
名前:
4
◆MwGQyQRf/o
:04/06/25 17:02
今からチケット買ってくるよ(;´Д`)
9
名前:
pd32c6c.tokynt01.ap.so-net.ne.jp
:04/06/25 17:03
とりあえず、まだ日本。
10
名前:
デフォルトの名無しさん
:04/06/25 17:08
どうでもいいからきえろ
11
名前:
デフォルトの名無しさん
:04/06/25 18:38
IShellFolderのインスタンスの指すフォルダかアイテムIDリストを取得する方法ってありませんか?
12
名前:
デフォルトの名無しさん
:04/06/25 18:49
GetDislpayNameOfの第一引数にNULL
MSDNに書いてないから、使っていいのかは知らん
13
名前:
デフォルトの名無しさん
:04/06/25 19:12
SHGDN_FORPARSING以外を指定した場合にエラーになるからだめみたいでですね
14
名前:
デフォルトの名無しさん
:04/06/25 20:01
皆さんはどうやってあんなに沢山のAPIを覚えたんですか?
一つ一つテストプログラムを作っては、コンパイル・テスト
したんですか?
15
名前:
デフォルトの名無しさん
:04/06/25 20:04
そうだよ。
だから藻前もがんがれ。
16
名前:
デフォルトの名無しさん
:04/06/25 20:11
>>15
一つ一つのAPI(関数)専用テストプログラム?
17
名前:
デフォルトの名無しさん
:04/06/25 20:15
そうだよ。
だから藻前もがんがれ。
18
名前:
デフォルトの名無しさん
:04/06/25 20:50
>>13
>SHGDN_FORPARSING以外を指定した場合にエラーになるからだめみたいでですね
そいつを SHGetDesktopFolder で得た IShellFolder で ParseDisplayName してやれば
ITEMIDLIST が得られるような気がするけど。
19
名前:
デフォルトの名無しさん
:04/06/25 20:54
>>14
覚えない。
基本的なところだけはもちろんおさえておくが、
必要になったときにググる。
MSDNを使うよりもググったほうがだいたいは楽。
20
名前:
デフォルトの名無しさん
:04/06/25 21:03
fgets()の使い方を完全に忘れてて今日ぐぐったw
21
名前:
デフォルトの名無しさん
:04/06/25 21:36
>>14
ヒマなときに help のキーワード一覧とかをだらーっと見てる。
Path ほにゃらら系みたいな、「自分でも書けるから必要ないんだけどあれば使う」APIとかは
「何かをするのにやり方が分からなくて Google で調べる」みたいな感じじゃ出会えないから。
22
名前:
デフォルトの名無しさん
:04/06/25 21:48
>>14
たくさんあるけど普段使うのはかなり限られてくる。
それにCreateWindowとCreateWindowExみたいにほぼ同じ機能のものも相当あるし、
それとDestroyWindowみたいに対になるものもこれまた相当ある。
23
名前:
デフォルトの名無しさん
:04/06/25 22:24
MSDNヘルプだと「〜Functions」とかが結構役に立つ。
WindowsのAPIってようするに単なるライブラリだから、ジャンル分けすればそう多くないんだよな。
24
名前:
デフォルトの名無しさん
:04/06/25 22:28
>>23
つかAPIを直で叩かせずにオブジェクトライブラリにすりゃいいのに。
25
名前:
デフォルトの名無しさん
:04/06/25 22:33
>>24
WinFX
26
名前:
23じゃないけど
:04/06/25 22:33
>>24
C言語からじゃ利用でけへんでないか
27
名前:
デフォルトの名無しさん
:04/06/25 22:34
>>24
このスレじゃそれは言っちゃダメ :-)
28
名前:
デフォルトの名無しさん
:04/06/25 22:39
IE上で、ActiveXコントロールを使って
submitイベントをフック(メッセージのフックか?)したいんですが
どなたかやったことありますか?
29
名前:
デフォルトの名無しさん
:04/06/25 22:46
あのVisualC++を買おうと思ってるんですがAPIとかちゃんとヘルプにありますか?
ドットネットとかに変わって今までと何か変わりましたか?
30
名前:
デフォルトの名無しさん
:04/06/25 22:49
>>24
マジっすか。それは(・∀・)イイ!!
>>26
C++はどう?
>>27
(´・ω・`)
31
名前:
デフォルトの名無しさん
:04/06/25 22:50
>>18
レスどうもです、とりあえずはそれでできるのでしょうが、
MSDNにNULL指定についての記述が無いのと
他のフラグでエラーが出る事から見て
「たまたま」動いているという気がしなくも無いので・・・
32
名前:
デフォルトの名無しさん
:04/06/26 01:24
マウスカーソルをShowCursorで非表示にしようと思って使ったのですが
ウィンドウ内しかカーソル非表示にされません。
完全に非表示にするにはどのようにすればいいのでしょうか?
33
名前:
デフォルトの名無しさん
:04/06/26 01:25
マウスのコードを抜く
34
名前:
デフォルトの名無しさん
:04/06/26 01:38
>>32
勝手なことすんなヴォケ
35
名前:
デフォルトの名無しさん
:04/06/26 01:41
良い反応だ
36
名前:
32
:04/06/26 01:42
>>33
(´・ω・`)
>>34
もちろんマウスが動いたりしたら表示しますので教えてください
37
名前:
デフォルトの名無しさん
:04/06/26 01:54
>>36
ソフ板の例のスレの人か?
マウスフックとウインドウフック入れて
WM_SETCURSORを乗っ取り。
38
名前:
デフォルトの名無しさん
:04/06/26 02:02
>>37
ありがとうございます
> ソフ板の例のスレの人か?
多分違う人です
39
名前:
デフォルトの名無しさん
:04/06/26 07:40
>>32
ウインドウ内からマウスカーソルがでられないようにする
40
名前:
デフォルトの名無しさん
:04/06/26 09:06
テンプレにある
WindowsSDK入門
http://kerochan.no-ip.com/vcsdk/letsprog/letsprog-index.htm
が見れないのは漏れだけですか?
(´・ω・`)
41
名前:
デフォルトの名無しさん
:04/06/26 09:25
うちも見れんな
42
名前:
デフォルトの名無しさん
:04/06/26 11:22
>>40
鯖ごと寝ているんじゃないか?
43
名前:
デフォルトの名無しさん
:04/06/26 19:35
マッピングモードをMM_LOMETRICにして、画面に2cm角の格子を書いています。
その格子に合わせてMoveWindowでコントロールを配置しようとしていますが巧くいきません。
MoveWindowの引数を論理単位(ウィンドウ)で配置できないからです。
座標を計算しようとして、
POINT pt;
int x = GetDeviceCaps(hdc,LOGPIXELSX);
pt.x = x / 254;
int y = GetDeviceCaps(hdc,LOGPIXELSY);
pt.y = y / 254;
LPtoDP(hdc,(LPPOINT)&pt,2);
とすると微妙にズレが出てしまいます。
ScrollWindowExなどの引数もそうですが、引数がビューポートで指定している関数を使う時、
結果が論理単位になるようにする巧い方法ってありますか?
宜しくお願いします。
44
名前:
503です
:04/06/26 23:51
WINAPIについての良い入門書があれば教えてください。
45
名前:
デフォルトの名無しさん
:04/06/27 00:11
>>44
お約束だがペゾルド
46
名前:
デフォルトの名無しさん
:04/06/27 08:51
テンプレに必読書も入れといてくれ。
・Advanced Windows
47
名前:
デフォルトの名無しさん
:04/06/27 09:57
>>45
APIの入門書なら取り敢えずAPIバイブルの方がいんじゃないかなぁ?
PlatformSDKでもいいけど。
ペゾルドは入門を終えて更にステップアップしたい時に最適な気がする。
48
名前:
デフォルトの名無しさん
:04/06/27 12:47
black.sakura〜の例のサイトが個人的には入門に一番よかった。
猫より2段ぐらい。ネットの文献である程度基礎を掴んでから本買った方が何かと便利な気がする
49
名前:
デフォルトの名無しさん
:04/06/27 14:57
俺も猫よりWisdom派かな。
本は買わなくてもいけるけど、買ったほうがいいのかもしれない。
50
名前:
デフォルトの名無しさん
:04/06/27 16:08
適当な背景に対してフォント文字列を描画するのにDrawText関数を使ってみたのですが
矩形ごと書き込まれますね(白く浮いてしまう)
文字形状だけを背景に対して上書きする方法を教えてください
(関数名、キーワードだけでも結構です)
よろしくおねがいします
51
名前:
デフォルトの名無しさん
:04/06/27 16:13
SetBkMode
52
名前:
50
:04/06/27 18:24
>>51
ありがとうございます
天才プログラマーですね、頼もしいです
53
名前:
デフォルトの名無しさん
:04/06/27 18:38
猫でもわかるの161章にある
LRESULT CALLBACK MyHookProc(int nCode, WPARAM wp, LPARAM lp)
{
char str[256];
if (nCode < 0)
return CallNextHookEx(hMyHook, nCode, wp, lp);
if (wp >= 0x30 && wp <= 0x39) {
wsprintf(str, "hMyHook = %d", hMyHook);
MessageBox(NULL, str, "MyHookProc", MB_OK);
return CallNextHookEx(hMyHook, nCode, wp, lp);
}
wsprintf(str, "キー入力はインターセプトされました\n フックハンドル= %d",
hMyHook);
MessageBox(NULL, str, "インターセプト", MB_OK);
return TRUE;
}
これを実行すると
二重で動作するんですがどうしたらよいでしょうか。
54
名前:
デフォルトの名無しさん
:04/06/27 19:31
よくわかんねーが、キーボードフックか?
WM_KEYDOWNとKEYUP
55
名前:
53
:04/06/27 19:52
ttp://www.kumei.ne.jp/c_lang/sdk2/sdk_161.htm
此処のDLL処理なんですが
DLLのプロシージャ内でWMメッセージは
取得できるのでしょうか
56
名前:
デフォルトの名無しさん
:04/06/27 20:00
WMは取得できないな。
繊維状態としてLPARAMのLSBで取得できる
57
名前:
53
:04/06/27 20:44
>>56
具体的にどのようなことでしょうか?
58
名前:
デフォルトの名無しさん
:04/06/27 21:05
質問です。
必要な時にLoadLibraryでモジュールをロードして、
用件が済んだらFreeLibraryでモジュールをアンロードすると、
タスクマネージャ等で見る所のメモリ使用量は、
モジュールをロードした直後に増えたまま、
アンロードしてもメモリ使用量は低下しません。
また、ダイアログボックス等を使用した場合でも、
EndDialogないしDestoryWindowしても、
メモリ使用量は低下しないようです。
キャッシュのような機構が働いている物と考えられますが、
不要になったメモリを明示的に開放する事は出来ないのでしょうか?
59
名前:
デフォルトの名無しさん
:04/06/27 21:18
ダイアログ上のリストビューをサブクラス化しようとしています。
SetWindowLong 関数を呼ぶと、戻り値で判断する限り失敗していないのですが、
設定したプロシージャにメッセージがきません。
どこかで凡ミスしているのかもしれませんが、何か考えられる原因はありますでしょうか?
60
名前:
デフォルトの名無しさん
:04/06/27 21:19
自プロセス内なのか外なのか
61
名前:
デフォルトの名無しさん
:04/06/27 21:21
>>59
SetWindowLongは自プロセスのウィンドウしかサブクラス化出来ません。
62
名前:
デフォルトの名無しさん
:04/06/27 21:25
>>60-61
即レス感謝です。
作っているのはDLLでして、ダイアログを生成して、
WM_INITDIALOGがきたところで、SetWindowLogを呼ぶようにしています。
この場合、自プロセス内ということにならないでしょうか?
63
名前:
デフォルトの名無しさん
:04/06/27 21:32
>>62
ひょっとしてキー関連のメッセージをキャッチしようとしてる?
もしくはCallWindowProcをちゃんと呼んでる?
64
名前:
59
:04/06/27 22:18
解決しました。
やはり凡ミスでしたOrz
サブクラス化したいリストビューの元々のプロシージャを、
GetWindowLong 関数を使ってWNDPROC型のグローバル変数に保存してたのですが、
自分が設定したプロシージャのプロトタイプの方もWNDPROC型にしていて、
実際の関数本体では
LRESULT CALLBACK MyListViewProc(HWND, UINT, WPARAM, LPARAM)
になっていたので、SetWindowLongからは、
WNDPROC型のプロトタイプの方しか見えてなかったことが原因みたいです。
失礼致しました。
65
名前:
デフォルトの名無しさん
:04/06/27 22:18
(・∀・)ノシ解決おめ〜
66
名前:
デフォルトの名無しさん
:04/06/27 23:44
エクスプローラみたいなのを作ってるんですが、
shell namespaceを使ってエントリの列挙をすると、
IEも列挙できますよね、しかもコイツBindToObjectが可能なので、
普通に進入できやがります。当然中にはなにも無いのですが。
候補としては
・エクスプローラでやっているように、IEのコンテナになる
・エントリのリストアップをするとき、IEを上手く弾く
の二通りが考えられるのですが、
どちらもIEのクラスIDを認識して特別扱いしないと出来ませんよね?
IEだけならいいのですが、似たようなデスクトップオブジェクトがあると
その都度手動で追加しないといけないのが気分が悪いです。
何か上手く扱う方法って無いでしょうか?
67
名前:
デフォルトの名無しさん
:04/06/27 23:45
ついでにソースです。
なんでBindToObjectできるんだか、ホント頭にきてます。
#include <windows.h>
#include <shlobj.h>
#include <iostream>
main()
{
CoInitialize(0);
HRESULT hr;
IShellFolder *psf, *pie;
ITEMIDLIST *pidl;
wchar_t *ie=L"::{871C5380-42A0-1069-A2EA-08002B30309D}";
SHGetDesktopFolder(&psf);
psf->ParseDisplayName(0, 0, ie, 0, &pidl, 0);
hr = psf->BindToObject(pidl, 0, IID_IShellFolder, (void**)&pie);
if ( SUCCEEDED(hr) ) {
std::cout << "BindToObject成功" << std::endl;
pie->Release();
}
psf->Release();
CoTaskMemFree(pidl);
CoUninitialize();
}
68
名前:
デフォルトの名無しさん
:04/06/28 00:00
スタティックリンクライブラリって勝手にOSからアンロードされることって
ありえないよね?
アンロードされたって騒いでいる奴がいたもんで。
69
名前:
デフォルトの名無しさん
:04/06/28 00:01
ない
70
名前:
デフォルトの名無しさん
:04/06/28 12:52
>>68
その馬鹿を晒してくれ。笑いが止まらん。
71
名前:
デフォルトの名無しさん
:04/06/28 12:59
>>58
他所でメモリが必要になって初めて解放されるような、定期的に解放されたような
72
名前:
デフォルトの名無しさん
:04/06/28 16:30
>>繊維状態としてLPARAMのLSBで取得できる
これの意味がよく理解できないのですが
教えていただけませんか。
73
名前:
デフォルトの名無しさん
:04/06/28 18:24
ウインドウをベッキーや2ch専用ブラウザのように分割したいのですが、
どのようにすれば分割できるのでしょうか?
また、それぞれにスクロールをつけることは可能でしょうか?
74
名前:
デフォルトの名無しさん
:04/06/28 18:44
>>73
A1 可能。二つウィンドウを並べる。
A2 当然可能。普通に付ければいい。
75
名前:
デフォルトの名無しさん
:04/06/28 18:46
MFC相談室(
http://pc5.2ch.net/test/read.cgi/tech/1088084875/39
)
で質問したところ、こちら向きの話題だとアドバイスを受けました。
MFCのCComboBoxを使ってコンボボックスを表示させているのですが、
これのCBS_SORT属性を動的に変更することはできないのでしょうか?
具体的には、
1:コンボボックスの中身をクリア
2:SetWindowLongで変更
3:再度追加
という動作をさせたいのですが、どうも動かないようです。
うまい解決法はないでしょうか?
76
名前:
デフォルトの名無しさん
:04/06/28 18:49
>>74
さん
2つウインドウを並べるとはどういうことでしょうか?
具体的に教えてください。お願いします。
77
名前:
デフォルトの名無しさん
:04/06/28 18:58
ウィンドウを分割するって事は、ウィンドウが複数必要になるってこった。
78
名前:
デフォルトの名無しさん
:04/06/28 18:58
>>72
lParamのbit31で、ハンドラが「押し」で呼ばれたか「離れ」で呼ばれたかが判別できるってことだろ。
MSDNのKeyboardProcのページに書いてある。
79
名前:
デフォルトの名無しさん
:04/06/28 19:02
>>77
さん。
ウインドウを2つ用意すれば、左右に分割されたウインドウができるということですか?
それを、どのように記述すればいいのですか?
よろしくお願いします。
80
名前:
デフォルトの名無しさん
:04/06/28 19:04
> 左右に分割されたウインドウができるということですか
それが分割ウィンドウに見えるかどうかは藻前次第だ。
がんがれ。じゃあな。
面倒がいやならMFCとか使え。
81
名前:
デフォルトの名無しさん
:04/06/28 19:05
APIで分割ウィンドウを作るような機能はない。自分で実装する必要がある。
それがイヤならMFCでCSplitterWndを使えばよい。まー普通はこっちを
選択するんだろうけど。
82
名前:
デフォルトの名無しさん
:04/06/28 19:07
http://pc5.2ch.net/test/read.cgi/tech/1083585833/834
http://pc5.2ch.net/test/read.cgi/tech/1088140233/73
マルチ
83
名前:
デフォルトの名無しさん
:04/06/28 19:09
質問です
昔はテンプレ3の
- Platform SDK Update
からSDKをダウンロードし、ローカルのHDDに保存できましたが、今は出来なくなったのでしょうか?
Win32APIなどについて調べられたのですが・・・・・
84
名前:
デフォルトの名無しさん
:04/06/28 19:10
79に付けたしですが、
hWnd1 = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW | WS_VSCROLL,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
hWnd2 = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW | WS_VSCROLL,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
とかして、まずWindowを2つ作るということですか?
Windowを2つできたら、その後はどうすればよいのでしょうか?
よろしくお願いします。
85
名前:
デフォルトの名無しさん
:04/06/28 19:11
>>83
できる。少なくともできた。
86
名前:
デフォルトの名無しさん
:04/06/28 19:12
>>84
悪いことは言わない。お前には無理だ。
あ き ら め ろ 。
87
名前:
デフォルトの名無しさん
:04/06/28 19:13
>>86
に激しく同意
88
名前:
デフォルトの名無しさん
:04/06/28 19:20
>>73
MFCのCSplitterWndのソースをパクれば?
少なくとも、こんなところでいちいち説明できるような内容ではない。
89
名前:
86
:04/06/28 19:29
まあ、お前には無理だろうし、あきらめたほうがいいんだが、それだけでは思考停止なので。
いわゆる分割ウィンドウは、単純にいえば、普通の子ウィンドウのサイズをユーザー操作で
変更できるだけのモノである。
まず、サイズ変更機能を持たない通常の子ウィンドウを配置したウィンドウを作成できるようになれ。
次に、(メニューとか)ユーザー操作を伴わず、子ウィンドウの大きさを計算し変更できるコードを書け。
その後、大きさを変更したいウィンドウ感にそれ用のウィンドウを配置するか、
親ウィンドウを表示するようにし、その部分がドラッグされたときに上記の計算を行え。
90
名前:
デフォルトの名無しさん
:04/06/28 19:33
WTLにもついてるよ
91
名前:
デフォルトの名無しさん
:04/06/28 20:05
>>75
コントロールのスタイルは、ものによってはCreateWindow時にしか効果が無いものがある。
多分CBS_SORTもその類じゃないかね。解決法としては、いったんコントロールを破棄して、
該当スタイルを有効にして作り直すのが一般的。
92
名前:
デフォルトの名無しさん
:04/06/28 21:20
>>84
まずはテンプレサイトを見るのが作法だと思う。
「猫でもわかる」の117章あたりにそれらしいネタの解説がある。
http://www.kumei.ne.jp/c_lang/sdk2/sdk_117.htm
93
名前:
75
:04/06/28 21:47
>>91
破棄⇒再構築で目的の動作をさせることができました。
大変助かりました。ありがとうございましたm(_ _)m
94
名前:
84
:04/06/28 23:09
>>92
ありがとうございます。
参考にしてみます。
95
名前:
デフォルトの名無しさん
:04/06/29 08:40
.NET Framework の Char.GetUnicodeCategory のような文字の種別を識別したいのですが、
Win32API で同等の事を行う方法を教えてください。
96
名前:
83
:04/06/29 09:23
>>85
様
1 ローカルプロクシを通さない
2 ActiveXのダウンロードと実行をON
3 IEキャッシュ削除
そして
4 OS再起動
によってダウンロード出来ました。
スレ汚し すみませんでした。
97
名前:
デフォルトの名無しさん
:04/06/29 11:41
他のアプリウィンドウのHWND取ってきて弄るプログラムを書いてるん抱けど
HWNDからコントロールの種類を判別できないですか?
ボタンとかツリービューとか。
98
名前:
デフォルトの名無しさん
:04/06/29 11:44
出来るよ。少なくとも標準コントロールなら。
99
名前:
デフォルトの名無しさん
:04/06/29 11:50
GetClassName
100
名前:
デフォルトの名無しさん
:04/06/29 11:52
どうやるの?
GetWindowLongを調べたけどスタイルとかUserDataとかはだめだった
101
名前:
デフォルトの名無しさん
:04/06/29 12:01
出来たよー
\ありがとう/
λ
102
名前:
58
:04/06/29 14:19
>>71
レスthanks.
ソース等ありますか?
103
名前:
デフォルトの名無しさん
:04/06/29 16:30
もうひとつ質問です。
他のアプリのテキストの内容を取得しようとしても取得できません。
TreeView_GetItemを使ってるんだけど、用意した文字バッファになにも
入ってきません。
104
名前:
デフォルトの名無しさん
:04/06/29 16:41
>>103
試しに TVM_GETITEM 投げてみ。
105
名前:
デフォルトの名無しさん
:04/06/29 17:01
これじゃね?
http://homepage2.nifty.com/Mr_XRAY/Halbow/VCL08.html
106
名前:
デフォルトの名無しさん
:04/06/29 17:21
>>105
ありがとう、いまそこ見ながら書いたんだけど動かないです;;
//...HWND hcur; //ターゲットのWindowHandle
HTREEITEM ht = 0;
TVITEMEX ti;
DWORD proid;
HANDLE hProcess;
char* pCommon;
memset(&ti, 0, sizeof(TVITEMEX));
//ターゲットのプロセスにメモリを確保
GetWindowThreadProcessId( hcur, &proid );
hProcess = OpenProcess( PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE, FALSE, proid );
pCommon = (char*)VirtualAllocEx( hProcess, NULL, 256, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE );
//
ht = TreeView_GetRoot( hcur );
ti.mask = TVIF_TEXT;
ti.hItem = ht;
ti.pszText = pCommon;
ti.cchTextMax = 255;
DWORD readb;
TreeView_GetItem( hcur, &ti );
if( !ReadProcessMemory(hProcess,pCommon,ffname,256,&readb) ){
printf( "mem error...\n" );
}
printf( "*** %s ***\n", ffname );
//開放
VirtualFreeEx(hProcess,pCommon,0,MEM_RELEASE);
CloseHandle(hProcess);
107
名前:
デフォルトの名無しさん
:04/06/29 17:44
いきなりソースだされてもよぉ
108
名前:
デフォルトの名無しさん
:04/06/29 19:56
ごめんなさい
えっとhcurにはターゲットのTreeViewコントロールのHWNDが入ってるんだけど
其処のプロセスをゲットしてVirtualAllocExは成功しているもよう。
WriteProcessMemoryをやるとRead...できちんと読めた。
hcurがきちんとTreeViewをさしてないのかとも思ったけど
TreeView_Expand( hcur, ht, ...)できちんとツリーは開閉した。
後僕に考えられる原因はTreeView_GetItemに渡すtiの初期化がまずいのかと
思ったが、しかしこれでいいよね… うわーn
109
名前:
デフォルトの名無しさん
:04/06/29 19:58
おっ、virusでも作ってるの?イイネイイネー
110
名前:
デフォルトの名無しさん
:04/06/29 20:28
>>108
TVITEMEX 自体を先方のメモリに取らないとダメじゃないの?
111
名前:
デフォルトの名無しさん
:04/06/29 21:27
どうでもいいけどヴァイラスって作った時点で犯罪?
112
名前:
デフォルトの名無しさん
:04/06/29 22:12
非アクティブウィンドウ時にも休止せず、処理を継続するアプリを作りたいの
ですが、APIで制御出来るのでしょうか。可能ならAPI名を教えて下さい。
113
名前:
デフォルトの名無しさん
:04/06/29 22:16
>>112
もともと非アクティブ時にもプロセスは休止しない。
114
名前:
デフォルトの名無しさん
:04/06/29 22:22
ただCPUの割り当ては少し減るんだった気がする
115
名前:
デフォルトの名無しさん
:04/06/29 22:24
エクスプローラでファイルコピーさせつつ他のアプリをアクティブにすると約3〜4割速度落ちるな。
なので俺はエクスプローラの優先度をhigherに設定してる。板違いだけど一応。
116
名前:
112
:04/06/29 22:40
>>113-115
素早いレスありがとうございます。
アクティブ如何を気にする必要がなければ特別な記述は不要で、逆にRTSで非
アクティブ時には進行が止まる様なのは、その様な処理を敢えて組み込んでい
ると考えていいのでしょうか?
一定時間毎(?)にGetActiveWindowを発行し、返ったのが自分自身でなければ、
なんて事はやらないですよね(即時性がないですし)。アクティブかフォーカ
ス周りのWM辺りを利用するんでしょうか
117
名前:
デフォルトの名無しさん
:04/06/29 22:48
>>116
そうだよ。
118
名前:
デフォルトの名無しさん
:04/06/29 22:50
その名もWM_ACTIVEメッセージ。アクティブ化・非アクティブ化等を教えてくれる。
119
名前:
デフォルトの名無しさん
:04/06/29 22:57
>>58
SetProcessWorkingSetSizeでどう?
>>68
「勝手に」OSが削除することはないけど
明示的にFreeLibraryすれば解放できるから
おおかた騒いでる奴が参照カウントの管理を間違えたんだろ
120
名前:
デフォルトの名無しさん
:04/06/29 23:12
>>119
Dynamic Link ならともかく Static Link では参照カウントなんてないんじゃない?
121
名前:
112
:04/06/29 23:14
>>117-118
やはりそうなるんですね。回答ありがとうございました。
over
122
名前:
デフォルトの名無しさん
:04/06/29 23:16
>>120
なくてもあまり困らないとは思うが、Win32ではスタティックDLLの
参照カウントも管理している。起動時は1だから一回FreeLibraryすると
メモリから消え去る(ただしexeは9xだったかNT系だったか忘れたが
どちらかは解放できない)。
意図的な使用例としては自己削除インストーラなんかがたまに使う。
123
名前:
デフォルトの名無しさん
:04/06/29 23:17
あ、スタティックリンクって.libをリンクする場合の話か。
完全に読み間違えてたorz
124
名前:
デフォルトの名無しさん
:04/06/29 23:22
DLLをインポートライブラリでリンクした場合の話だと思ってたんだが違うのか?
125
名前:
デフォルトの名無しさん
:04/06/30 00:05
何か話が混乱してるなw
インポートライブラリでDLLを使用する方法を
ロード時動的リンク(Load-Time Dynamic Linking)
実行中に LoadLibrary でDLLを使用する方法を
実行時動的リンク(Run-Time Dynamic Linking)
と言うそうだ。
正確に伝えるためにはきちんと使い分けた方が良いかもね。
C/C++ コンパイラレベルでは
明示的にコード中で LoadLibrary しない限り、呼んだ API
はみんなロード時動的リンクになる。
Cライブラリ等は
スタティックリンク (LIBC)
とロード自動的リンク (MSVCRT)
が選べるね。
126
名前:
デフォルトの名無しさん
:04/06/30 00:07
linuxなんかではlibcが外にあるようなうにゃうにゃ(ry
127
名前:
デフォルトの名無しさん
:04/06/30 00:10
あれも動的リンク
128
名前:
デフォルトの名無しさん
:04/06/30 00:30
> 明示的にコード中で LoadLibrary しない限り、呼んだ API
> はみんなロード時動的リンクになる。
/delayloadで実行時動的リンクを選べる
まあ中身は LoadLibrary してるだけなんだが
コード中に明示的に書く必要はなくなる
129
名前:
デフォルトの名無しさん
:04/06/30 01:03
チェックボックスつきリストビューで
特定のチェックボックスを無効化or非表示
ってできるのでしょうか?
130
名前:
デフォルトの名無しさん
:04/06/30 03:11
>>96
関連
ActiveXを使ってコンポーネント選択してインスコする方式だと6時間経ってもCoreすら終わらなかったので
フルダウンロード(
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm
)やったら
2分そこらで終わった。光でよかった・・・
131
名前:
デフォルトの名無しさん
:04/06/30 03:25
129じゃないですけど
129に絡んで、リストビューの中のチェックボックスをオン、オフしたときに
反応を得るにはどうすればよいのでしょうか?
ずっと悩んでいます、教えてください
132
名前:
デフォルトの名無しさん
:04/06/30 03:34
>>126
libcなんかは静的共有ライブラリといって、
アドレスのバインドはリンク時に、イメージのバインドはロード時にやるという代物だとか。
apacheモジュール(.so)あたりはDLLと同様の動的リンクらしいね。
133
名前:
デフォルトの名無しさん
:04/06/30 12:18
ネットで検索するとMSDN丸写しな関数リファレンスを載せてるサイトが
やたら多いんだけど彼らはいったい何を考えているんだろう。
134
名前:
デフォルトの名無しさん
:04/06/30 12:38
多少見やすいとか、そういった自己満足
135
名前:
デフォルトの名無しさん
:04/06/30 12:43
MSDNが最新にして最良のものだという考えに変わりはない。
以下でMSDNに対する愚見を述べさせてもらう。
MSDNには確かに誤りも存在するし、邦訳版は読みづらい(誤訳を避け、あまりに保守的な訳をしている)が、
英語版は素晴らしい。(ry
136
名前:
108
:04/06/30 13:25
>>110
なるほど、其処まで考えが回りませんでした。ありがとう
…でもTVITEMをターゲットのプロセスに確保してもだめだった(つД;
ターゲットのプロセスをデバッガで見て確保されたエリアにWriteProcess、
ReadProcess... はできていた。だけどやっぱりTreeView_GetItemしても
変化が無い…
137
名前:
デフォルトの名無しさん
:04/06/30 16:05
VirtualTreeView だったりして
138
名前:
デフォルトの名無しさん
:04/06/30 16:08
> …でもTVITEMをターゲットのプロセスに確保してもだめだった
普通は自プロセスに確保して、適当にフィールドを設定してから相手プロセスの
メモリにコピーする。そしてそのポインタを使って TreeView_GetItem を
呼び出す。文字列バッファのオフセット値が間違ってるとか?
139
名前:
デフォルトの名無しさん
:04/06/30 16:11
まず、自分のプロセス内のTreeViewでうまくいくか試してみる
140
名前:
デフォルトの名無しさん
:04/06/30 16:20
>ti.pszText = pCommon;
先頭に TVITEM をコピーしたとき、ti.pszText のオフセットも変えてる?
文字列専用のプロセスメモリを確保しておくと簡単。
141
名前:
108
:04/06/30 17:55
組んでるものはCUIコマンドのものなんで、別にプロジェクト作って
TreeViewのGetItemを試したら上手くいきました。
んでそのプロジェクトのTreeViewをコマンドでいじろうとして失敗しました。
以下CUIソース
142
名前:
108
:04/06/30 17:56
//...HWND hcur; //ターゲットのWindowHandle
HTREEITEM ht = 0;
TVITEM ti, *pComTi;
DWORD proid;
HANDLE hProcess;
char* pCommon;
memset(&ti, 255, sizeof(TVITEM));
//ターゲットのプロセスにメモリを確保
GetWindowThreadProcessId( hcur, &proid );
hProcess = OpenProcess( PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE, FALSE, proid );
pCommon = (char*)VirtualAllocEx( hProcess, NULL, 256, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE );
pComTi = (TVITEM*)VirtualAllocEx( hProcess, NULL, sizeof(TVITEM), MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE );
//
ht = TreeView_GetRoot( hcur );
ti.mask = TVIF_TEXT;
ti.hItem = ht;
ti.pszText = pCommon;
ti.cchTextMax = 255;
DWORD readb = -1;//
143
名前:
108
:04/06/30 17:56
if( !WriteProcessMemory(hProcess,pComTi,&ti,sizeof(TVITEM),&readb) ){
printf( "mem error write...\n" );
}
memset(&ti, 0, sizeof(TVITEM));
TreeView_GetItem( hcur, &pComTi );
if( !ReadProcessMemory(hProcess,pComTi,&ti,sizeof(TVITEM),&readb) ){
printf( "mem error...ti\n" );
}
if( !ReadProcessMemory(hProcess,pCommon,ffname,256,&readb) ){
printf( "mem error...\n" );
}
printf( "*** %s ***\n", ffname );
//開放
VirtualFreeEx(hProcess,pComTi ,0,MEM_RELEASE);
VirtualFreeEx(hProcess,pCommon,0,MEM_RELEASE);
CloseHandle(hProcess);
144
名前:
デフォルトの名無しさん
:04/06/30 18:52
WinXPでMicrosoft Visual Studio .NET 2003を使ってるんだけど
WM_MOUSEWHEELが定義されてなく
ttp://www.asahi-net.or.jp/~uk8t-ktu/wincode/global/0010.htm
ここ見て解決は出来たんだけど
最初から定義されてないものなの?
145
名前:
デフォルトの名無しさん
:04/06/30 19:01
>>144
#if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)
#define WM_MOUSEWHEEL 0x020A
#endif
146
名前:
デフォルトの名無しさん
:04/06/30 19:04
> if( !ReadProcessMemory(hProcess,pCommon,ffname,256,&readb) ){
ここの ffname はローカルバッファとして256バイト割り当て済み?
147
名前:
デフォルトの名無しさん
:04/06/30 19:31
サブスレッドがデータをセットしたら
寝ているメインスレッドを起こしてデータを読み取らせたいのですが
どういったやり方が一般的ですか?
いまはメインスレッドでfor(;;) Sleep(100);しながらフラグを監視してます。
148
名前:
デフォルトの名無しさん
:04/06/30 19:33
>>143
誤: TreeView_GetItem( hcur, &pComTi );
正: TreeView_GetItem( hcur, pComTi );
では?
149
名前:
デフォルトの名無しさん
:04/06/30 19:34
>>147
イベント。
CreateEvent, SetEvent, WaitForSingleObject, MsgWaitForMultipleObjects あたりを調べて。
150
名前:
デフォルトの名無しさん
:04/06/30 22:15
リストビューに関して質問です。
ソートの昇順・降順をあらわす三角印(カラムヘッダに表示されるやつ)はどうやったら表示されるのでしょうか?
自前で描画しないとダメ?
151
名前:
デフォルトの名無しさん
:04/06/30 22:24
>>150
標準じゃついてないな、漏れのはWin2kだけど
152
名前:
デフォルトの名無しさん
:04/06/30 22:31
>>150
Common Control V6(XP以降)なら可能。
2000以前に対応させようと思ったら、自前で描画する必要がある。
▼▲で誤魔化す手もあるが……。
153
名前:
150
:04/06/30 22:40
>>152
thx
やっぱ自前描画が必要なのですね…
154
名前:
150
:04/06/30 22:45
「カラムヘッダ」と「DC」でググったらよさげな情報みつかりました。
http://search.acty-net.ne.jp/mfc_search/archive/2000-2/msg02144.html
これを参考にしてみます。
「カラムヘッダ」「API」「ソートアイコン」とかでググってたので見落としてたようです。(;´Д`)
155
名前:
デフォルトの名無しさん
:04/07/01 02:58
ExitThread について質問です。Thread の薄いラッパクラスを作成中なんですが、
SDK のドキュメントでは LPTHREAD_START_ROUTINE のリターン後、暗黙的に ExitThread が呼ばれるとありますが
何らかの処理中にメインスレッドから ExitThread を呼んだ場合、適切な後始末が行われないのでしょうか。
156
名前:
デフォルトの名無しさん
:04/07/01 03:16
CreateThreadで作ったスレッドの場合は問題ない
157
名前:
デフォルトの名無しさん
:04/07/01 03:53
>>156
なるほど問題ないのですか。サンクスです。
因みに CreateThread で作成したスレッドに対してでした。抜けてましたね。すいませんん。
ところで ExitThread て明示的に呼び出す必要があるときってどんな時なんでしょう?
何らかの処理中に ExitThread を呼んだところで直ちにスレッドが終了するわけでは無いし(当たり前ですが)
イマイチ使いどころがわからんのですが…。
158
名前:
デフォルトの名無しさん
:04/07/01 08:59
C++の場合、デストラクタが呼ばれないような気がするけど
大丈夫ッスか?
159
名前:
デフォルトの名無しさん
:04/07/01 09:11
>>158
ダメです。
なので、ExitThread()は(余程注意しないと)使えません。
160
名前:
デフォルトの名無しさん
:04/07/01 10:52
スタティックDLL だってさ(プ
161
名前:
デフォルトの名無しさん
:04/07/01 11:01
不特定多数のウィンドウを作る際、
各ウィンドウに対する処理はどのようにして行うものなんでしょうか。
以前は
1 for文をまわしウィンドウを作成する。
その際、外部で宣言したHWND型配列に各ハンドルを代入させる
2 プロシージャで引数として渡されるハンドルと、
ウィンドウ作成時に用意しておいた各HWND配列から内容の同じものを
探して見つける事で多数作られる中のどのウィンドウなのかを判別し
それに応じて異なる処理をする。
この「どのウィンドウを現在扱っているか」をプロシージャ内で判別する方法が
ややこしいし、なんだかきたないので、
スマートな方法があったら教えてください
根本的に間違っていたら正してやってください
おねがいします
162
名前:
デフォルトの名無しさん
:04/07/01 11:38
ぶらくらはいくない。
163
名前:
デフォルトの名無しさん
:04/07/01 11:39
>>161
SetProp APIを使ってウィンドウハンドルに対して付加情報をむすびつけておくってのはどうよ?
164
名前:
デフォルトの名無しさん
:04/07/01 12:08
ある文字の種別は GetStringTypeEx API をつかえば取れますが、
UNICODE で規定されているスクリプトタイプを調べる API はありますか?
165
名前:
デフォルトの名無しさん
:04/07/01 12:15
>>161
for 分で Create しつつ登録する仕組みだと、WM_CREATE あたりのメッセージが
発生するときにはまだ登録されていなくて不便です。
なので、WM_NCCREATE を受けた段階で、CREATESTRUCT 経由で渡されたウィンドウを
識別する情報 (CreateWindow時に作っておく) と hWnd のマッピングを生成すると良いでしょう。
163 の言うように SetProp で登録しても良いし、std::map に入れたりしておいても良い。
「この「どのウィンドウを現在扱っているか」をプロシージャ内で判別する方法」は
GetProp とか std::map::operator [] 一発だから、別にややこしくはないと思う。
166
名前:
デフォルトの名無しさん
:04/07/01 13:30
ふつー、ウィンドウ毎の情報はC++なりのクラスのメンバに格納して、そのオブジェクトへのポインタを
SetPropなりSetWindowLongなりThunkなりでウィンドウに関連付けて終わり。
167
名前:
デフォルトの名無しさん
:04/07/01 13:43
>>163
>>165
>>166
ありがとうございます
今さらで申し訳ないのですがC++は自分は使えなくて
C言語でやっています
SetProp関数など今まで調べていたのですが
基本的な用語すらちゃんと理解できていないみたいで
具体的にどうすればいいかわかりませんでした
hWndのマッピング という言葉もよくわからないのです
ずうずうしいとは思いますが
相当なアホでもわかるように教えてもらえないでしょうか
168
名前:
デフォルトの名無しさん
:04/07/01 13:56
C++を使えないってのがオブジェクト指向を理解できない知らないって意味なら悪いことは言わんからオブジェクト指向について勉強しろ。そのほうが後々楽になる。
169
名前:
デフォルトの名無しさん
:04/07/01 14:17
ウインドウハンドルと関連データと対応付けてメッセージループ上で使用するのは、C++使う使わないに限らず、
オブジェクト指向とは関係ない、ただのロジック。
何故C++を使うだけでオブジェクト指向と言いたがるのか、さっぱり理解できない。
170
名前:
デフォルトの名無しさん
:04/07/01 14:23
>>167
マッピングっていうのは、「hWnd から必要な情報への対応表」を作成するということ。
そうして、
>>165
の前半でいっているのは、
for (int window_id = 0; window_id < 100; window_id++)
{
my_data_table[window_id].data = hogehoge();
my_data_table[window_id].hWnd = CreateWindow(...);
}
のようにしてしまうと、WM_CREATE の時にはまだ my_data_table[].hWnd が設定されていなくて
不便だから、CREATESTRUCT 経由で(この例だと) window_id を渡して、WM_NCCREATE で
my_data_table[window_id].hWnd = hWnd を実行すると良いよ、っていう話。
171
名前:
デフォルトの名無しさん
:04/07/01 14:38
>>167
自分で調べてどうにかしようって気が無いんだったら、
グローバル変数に入れてって既存の方法使えば?
172
名前:
デフォルトの名無しさん
:04/07/01 14:40
>>169
苦労したんだよ。察してあげな。
173
名前:
デフォルトの名無しさん
:04/07/01 15:33
BMPを表示させる方法はテンプレサイトをみて分かったのですが、
JPGを表示させる方法が分かりません・・・
簡単にJPGを扱う方法はありませんか?
174
名前:
デフォルトの名無しさん
:04/07/01 15:39
gdiplus系をぐぐれ
175
名前:
108
:04/07/01 15:50
レストンクス
>>148
を修正したら動きました
λ<アリガトー
176
名前:
デフォルトの名無しさん
:04/07/01 15:51
>>173
あとはOleLoadPictureとかLoadImageとか。
ただしいずれもOSバージョンに制限あり。確認汁。
177
名前:
デフォルトの名無しさん
:04/07/01 15:52
>>174
サンクスです
178
名前:
デフォルトの名無しさん
:04/07/01 16:57
依存するのはOSのバージョンではなくIEのバージョン。
179
名前:
デフォルトの名無しさん
:04/07/01 17:13
釣られませんよ( ̄ー ̄)ニヤリッ
180
名前:
デフォルトの名無しさん
:04/07/01 17:31
OleLoadPictureは組み込まれているモジュールによって、出来ることが決まる。
JPEG用のモジュールが入っているのがIEなんだが、けっこう知らない人がいるのか。
その他、標準コントロールの拡張機能もIEのバージョンに依存する部分が多い。
181
名前:
デフォルトの名無しさん
:04/07/01 18:34
Win32API質問箱 Build19
http://pc5.2ch.net/test/read.cgi/tech/1084697545/
>949
名前:デフォルトの名無しさん[sage] 投稿日:04/06/24 19:06
>今までDLLからウインドウを作ろうなんて考えもしなかったんだけど、
>DLLからCreateWindowをするとき、HINSTANCEにはDLLのインスタンスハンドルを指定するのですか?
>それともWinMainのHINSTANCEを指定すればいいのですか?
>NT系だと無視されるようなので、どちらが正しいかってのがちょっと分からないのですが。
催促ですみません、これわかる人いませんか?
182
名前:
167
:04/07/01 18:47
>>170
わかりました!
ありがとうございます
これで外部変数は使わないで済みます。
SetPropの使い方については自分で勉強しながら確認していこうと思います。
>>168
オブジェクト指向ですか。
もうわからない事だらけでやらなきゃいけないこと
山のようにあるっぽいですが、色々調べて勉強してみます
>>171
一応結構長い時間調べたり、にらめっこしたりしてみたのですが
でもわかりませんでした。精進します
みなさんありがとうございました
助かりました。
183
名前:
デフォルトの名無しさん
:04/07/01 18:47
(´∀`)ノシがんばってねー
184
名前:
デフォルトの名無しさん
:04/07/01 18:58
>>181
試したわけじゃないけど、
作ろうとしてるウィンドウがどこにあるリソース(メニューとか)を使うかによるんじゃない?
普通はDLLに使うリソース入れるだろうから、DLLのHINSTANCEだと思うけど。
185
名前:
デフォルトの名無しさん
:04/07/01 19:05
>>181
ウィンドウプロシージャの入っているモジュールの hInstance。
186
名前:
デフォルトの名無しさん
:04/07/01 19:06
184 の方が正解っぽいぽ
187
名前:
デフォルトの名無しさん
:04/07/01 19:19
>>184-186
レスありがとうございます。
ウインドクラスの場合は
>>184
で正しいと思うのですが、
CreateWindowの場合、メニューはリソースのIDではなく
メニューハンドルで指定しますよね?
リソースは影響しない気もするのですが、、、。
188
名前:
デフォルトの名無しさん
:04/07/01 19:20
とりあえずやってみれば?
189
名前:
デフォルトの名無しさん
:04/07/01 19:23
>>188
現状触れる範囲ではNT環境しかないもので、試せないのです。
190
名前:
デフォルトの名無しさん
:04/07/01 19:24
そんなときこそVirtualPC(or VMware)ですよ
191
名前:
デフォルトの名無しさん
:04/07/01 19:27
結局VirtualPCに9x系のOSインスコしないと動かんぞ。
192
名前:
デフォルトの名無しさん
:04/07/01 20:29
>>181
プログラミングWindowsでは「どっちでも構わんが私はDLLを呼び出した側のインスタンスハンドルを使うことをすすめる」と書いてある。
193
名前:
デフォルトの名無しさん
:04/07/01 21:57
>>192
ありがとうございました
194
名前:
デフォルトの名無しさん
:04/07/01 22:33
ウィンアプリで長方形の範囲を塗りつぶすAPIはあるのでしょうか。
今はSetPixelVで点をいっぱい表示したり、
CreateFontで文字サイズを変えたのを1文字を表示する、
方法でやっているのですが、あるなら教えてください。
195
名前:
デフォルトの名無しさん
:04/07/01 22:38
FillRect
196
名前:
194
:04/07/01 22:55
>>195
ありがとうございます。やってみます。
197
名前:
デフォルトの名無しさん
:04/07/01 22:57
ExtTextOutのほうが楽だけどな
198
名前:
194
:04/07/01 23:20
>>197
ありがとうございます。こちらもやってみます。
199
名前:
デフォルトの名無しさん
:04/07/01 23:53
デバイスコンテキストに描画領域を設定する方法ってありませんでしたっけ?
具体的にはWM_ERASEBKGNDである一部分だけ、再描画を停止したいのですが。
200
名前:
デフォルトの名無しさん
:04/07/01 23:58
IntersectClipRect()みたいなやつか?
201
名前:
デフォルトの名無しさん
:04/07/02 02:43
ListViewに数万アイテムを登録するとすごく時間がかかるのですが、
何とかこれを高速化する方法ないでしょうか?
ファイラーとかだとSysListView32のコントロールでも一瞬で表示されてるので、
やりようはあると思うのですが。
202
名前:
デフォルトの名無しさん
:04/07/02 02:50
仮想リストビュー
203
名前:
デフォルトの名無しさん
:04/07/02 05:53
親をHWND_DESKTOPにしてボタン作ったらスタイルにBS_PUSHBUTTONが含まれなくなりました
あとからSetWindowLongPtrとかやってもだめでした
いまのところ描写とかはうまくいってるのですがボタンであるのにBS_PUSHBUTTONでないと
問題が起きるとこってありますか?
204
名前:
デフォルトの名無しさん
:04/07/02 06:59
>203
C:\bcc55\Include>grep BS_PUSHBUTTON winuser.h
File winuser.h:
#define BS_PUSHBUTTON 0x00000000L
205
名前:
デフォルトの名無しさん
:04/07/02 07:08
>>204
あ... どうりでふくまれないはずですね
でも電卓とかのボタンをspy++で調べるとBS_PUSHBUTTONがあるのですが
今回作ったプログラムのボタンは、みかけは電卓とかのと一緒なのにふくまれません
なんでだろう...
206
名前:
デフォルトの名無しさん
:04/07/02 10:00
文書管理用のツールを作ってみたいんだけど、勉強がてらグリッドやツリービュー、
画像のサムネールや拡大・縮小、なども自作してみたいです。
でもグリッド一つとってもどう実装していいのかさっぱり分かりません。
参考になる本はないですか?
または参考になるソースを入手するにはどうすればいいですか?
207
名前:
デフォルトの名無しさん
:04/07/02 10:05
イベントとメッセージって何がどうちがうんですか?
208
名前:
4
◆MwGQyQRf/o
:04/07/02 10:12
とりあえず、海外着いた
209
名前:
203.208.86.147
:04/07/02 10:14
空港からだけど、アドレスはどうなんだろ?
210
名前:
デフォルトの名無しさん
:04/07/02 10:27
>>209
オーストラリア乙
211
名前:
デフォルトの名無しさん
:04/07/02 10:58
>>209
……楽しんでこいよ。
212
名前:
デフォルトの名無しさん
:04/07/02 11:01
>>207
イベントはキーを押したり、マウスを動かしたり、タイマーの時間が経ったり、
起こった事で、メッセージはそれをOSがプログラムに伝えてくるものかな。
213
名前:
デフォルトの名無しさん
:04/07/02 11:32
>>212
Windowsについてまだ勉強始めたばかりなのですが、
イベント=スレッド間の同期通信
メッセージ=スレッド間の非同期通信
という理解でとりあえずはいいんでしょうか?
214
名前:
デフォルトの名無しさん
:04/07/02 11:45
>>213
全く違う。
イベントってのは、英語の event そのもの。メッセージも message そのもの。
一般名詞であって、そんなに狭い意味を持って使われてるわけじゃない。
Windows の中では、イベントというと
・イベントドリブン型プログラム、という文脈でのイベント。
Windowメッセージのうち、ユーザやシステムから非同期的に発生するもの
WM_LBUTTONDOWN とか。WM_SETFONT などは普通「イベント」とは言わない。
・CreateEvent で作られた同期・排他・待ち合わせ用オブジェクト
・COM オブジェクトからの event sink インターフェイスへの呼び出し。
など諸々。
メッセージは、
・GetMessage や PeekMessage で得られる、ウィンドウメッセージ
・MAPI で転送されるメッセージ
など。
215
名前:
デフォルトの名無しさん
:04/07/02 12:19
♪これっくらいのっ
イベント箱にっ
おにぎり おにぎり
チョイと詰めて
あがり コーヒー ゆず さくらっ
216
名前:
デフォルトの名無しさん
:04/07/02 13:34
>>201
今MSDN開けない環境なんでうろおぼえだけど、
リストの更新(追加)時に更新描画をさせないようにするメッセージかなんかがあったはず。
それで描画をOFFにしておけばそこそこ速度が稼げた気がする。
217
名前:
デフォルトの名無しさん
:04/07/02 15:37
>>216
SendMessage(hListView, WM_SETREDRAW, 0, 0);
ここで項目追加
SendMessage(hListView, WM_SETREDRAW, 1, 0);
218
名前:
デフォルトの名無しさん
:04/07/02 16:41
すっげー初歩的な質問かもしれないけどさ
WIN32APIって何?
219
名前:
デフォルトの名無しさん
:04/07/02 17:06
>>218
32ビット版Windowsが用意している関数群。
Cのライブラリ関数には必要ないけど、Windows用プログラム製作には必要なものが揃っている。
220
名前:
デフォルトの名無しさん
:04/07/02 17:06
>>218
>>3
221
名前:
デフォルトの名無しさん
:04/07/02 19:31
>>216-217
201じゃないが、いい事を教えてもらった。Thx
222
名前:
デフォルトの名無しさん
:04/07/02 19:32
>>219
必要なくはないだろ。
223
名前:
デフォルトの名無しさん
:04/07/02 19:33
MSVCRTの扱いは微妙なとこだが・・・
224
名前:
デフォルトの名無しさん
:04/07/02 19:50
>>215
名古屋出身かよ!
225
名前:
デフォルトの名無しさん
:04/07/02 22:49
WinMain関数について質問なんですが、MSDNに
戻り値
関数が WM_QUIT メッセージを受け取って正常に終了する場合は、メッセージの wParam パラメータに格納されている終了コードを返してください。関数がメッセージループに入る前に終了する場合は、0 を返してください。
と書いてあります
しかし、DirectX9のマイクロソフトのサンプルコードには、
// Initialize Direct3D
if( SUCCEEDED( InitD3D( hWnd ) ) )
{
// Show the window
ShowWindow( hWnd, SW_SHOWDEFAULT );
UpdateWindow( hWnd );
// Enter the message loop
MSG msg;
while( GetMessage( &msg, NULL, 0, 0 ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
}
UnregisterClass( "D3D Tutorial", wc.hInstance );
return 0;
}
と0を返しています
これでもいいのでしょうか?
226
名前:
デフォルトの名無しさん
:04/07/02 22:51
WinInetで接続時のタイムアウトを設定する方法はありますか?
INTERNET_OPTION_CONTROL_CONNECT_TIMEOUTとか
設定してみたけど反映されてないっぽいのですよ・・
・・どなたかご存知ないでしょうか?
227
名前:
デフォルトの名無しさん
:04/07/02 22:56
IE5.5だかあたりの時代のWinInetはタイムアウトがまともに動かないんで非同期API使って自力でタイムアウトしろとか言われてた気がするが。
228
名前:
デフォルトの名無しさん
:04/07/02 23:03
>>225
WM_DESTROYでPostQuitMessage(0);なんて決め打ちしていたら別に同じ。
それにWinMain(main)の戻り値はWindowsが使うんじゃなくて、ユーザが使うものなんだけど、
ウィンドウズではまず間違いなく使われていない(それに使う手段がないに等しい)から別にいい。
229
名前:
デフォルトの名無しさん
:04/07/02 23:13
>>228
そうなんですか
プログラム終了時に、0が返ってくるとなにかxpとかがカチンと来るのかなと思っていたのですが、
大丈夫なようですね
230
名前:
デフォルトの名無しさん
:04/07/02 23:29
>>227
あーやっぱりだめですか・・。
非同期APIつーのはこの辺ですかね?
http://support.microsoft.com/default.aspx?scid=kb;EN-US;275046
ちょっと、やってみます。
231
名前:
デフォルトの名無しさん
:04/07/03 00:45
>>228
スタートアップルーチンが使ってるってことはない?
232
名前:
デフォルトの名無しさん
:04/07/03 01:08
>>231
少なくとも俺の経験上は、無い。
233
名前:
デフォルトの名無しさん
:04/07/03 04:39
gdi+でjpg画像から、ビットマップのGetPixelのように
1ピクセルの画素値を抜き出すのってどのようにすれば可能でしょうか?
よろしくお願いいたします。
234
名前:
Windowsマンセー
:04/07/03 07:48
>>214
レスありがとうございます。
Advanced Windows 3rdを古本屋で手に入れました。
カーネルオブジェクトという観点から綺麗に書かれていて
これ、とても解り易くて良い本です。
よく読んでから出なおしてきます。
235
名前:
デフォルトの名無しさん
:04/07/03 10:07
ListCtrlに数値を表示する際にカンマ区切りで表示したいわけですが
何かオプションでも有りませんでしょうか。
そういうの良く見かけますけど全部自分で区切って登録してるのかな?
236
名前:
デフォルトの名無しさん
:04/07/03 10:21
>>235
カンマ区切りって、桁区切り表示のこと?
なら自分で実装するしかない。
237
名前:
デフォルトの名無しさん
:04/07/03 11:25
まあ、自分で実装しても難しくも何ともないから、おとなしく作っとけ。
238
名前:
235
:04/07/03 11:45
無い様なのでそうすることにします。
桁区切りならGetNumberFormatで出来ますし。
239
名前:
デフォルトの名無しさん
:04/07/03 14:37
>>238
ライブラリ化しとくと便利かも
ところで、9xでWNetAddConnection2使ってネットワークドライブに割り当てた
Server2003の共有フォルダ(NTFS)を、
9x側がFATって誤認識することがあったんだが、なんか情報持ってる香具師いないか?
9x系全般で再現、同一セグメントで発生した上クライアントPCの環境には特に縛られてない模様で、
再現手順もトリガもまったくわからん状態で困ってるんだが
ローカルディスクならブートレコード読み損なったときにFATと読み違えることも
あるらしい(見たこと無い)が…?
240
名前:
デフォルトの名無しさん
:04/07/03 15:14
別に作ったテキストファイルを読み込ませて、
画面に表示する方法を教えて下さい。
241
名前:
デフォルトの名無しさん
:04/07/03 15:16
1) CreateFile()でファイルを開きます
2) ファイルの中身を読み出します(バッファ確保注意)
3) テキストウィンドウを作って2)で読んだ中身を放り込みます
242
名前:
デフォルトの名無しさん
:04/07/03 15:27
>>241
すばやいお答えありがとうございます
243
名前:
デフォルトの名無しさん
:04/07/03 15:51
>>239
ネットワークドライブの実際のフォーマットを知ってどうしようっての?
何か意味があるとは思えないが
244
名前:
デフォルトの名無しさん
:04/07/03 16:19
ファイル名の制約(8.3かどうか,大文字小文字を区別するか,長さ制限)を、
単にNTFSかFATかで区別しているとヤバいかもしれんね。
ちゃんとAPI叩いてればいいんだろうけど・・・
245
名前:
デフォルトの名無しさん
:04/07/03 16:23
mmapfileにCの文字列処理関数使った場合ファイルの末尾で'\0'でちゃんと止まってくれるの?
246
名前:
デフォルトの名無しさん
:04/07/03 16:31
意味が分からん
mapした領域オーバーしたらメモリ保護エラーだろ
247
名前:
デフォルトの名無しさん
:04/07/03 16:56
>>244
>単にNTFSかFATかで区別しているとヤバいかもしれんね。
そりゃ論外すぎる…
248
名前:
デフォルトの名無しさん
:04/07/03 17:38
「ひまわり」とか「TTS」でWIN32APIって使えるのか?
249
名前:
デフォルトの名無しさん
:04/07/03 17:55
>>244
>>247
FATと誤認識されたドライブを開いて[新規作成]→[テキストファイル]
…orz
まあ、9xが論外というならそれには激しく同意だが
250
名前:
デフォルトの名無しさん
:04/07/03 17:58
>>249
なにか問題が?
まさか、書込みできないFATを想像してないわけじゃないよね?
■過去ログ置き場に戻る■
1-
次250
最新50
DAT2HTML
0.33f Converted.