[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 06/22 11:35 / Filesize : 228 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Win32API質問箱 Build52



1 名前:デフォルトの名無しさん [2007/04/18(水) 01:54:51 ]
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

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

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

2 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 01:55:45 ]
51 ttp://pc11.2ch.net/test/read.cgi/tech/1174416295/
50 ttp://pc11.2ch.net/test/read.cgi/tech/1171721448/
49 ttp://pc10.2ch.net/test/read.cgi/tech/1168708801/
48 ttp://pc10.2ch.net/test/read.cgi/tech/1166172047/
47 ttp://pc8.2ch.net/test/read.cgi/tech/1163375772/
46 ttp://pc8.2ch.net/test/read.cgi/tech/1159158014/
45 ttp://pc8.2ch.net/test/read.cgi/tech/1156032806/
44 ttp://pc8.2ch.net/test/read.cgi/tech/1151501925/
43 ttp://pc8.2ch.net/test/read.cgi/tech/1148005509/
42 ttp://pc8.2ch.net/test/read.cgi/tech/1144962549/
41 ttp://pc8.2ch.net/test/read.cgi/tech/1141392216/
40 ttp://pc8.2ch.net/test/read.cgi/tech/1138893959/
39 ttp://pc8.2ch.net/test/read.cgi/tech/1136673250/
38 ttp://pc8.2ch.net/test/read.cgi/tech/1133798345/
37 ttp://pc8.2ch.net/test/read.cgi/tech/1131884991/
36 ttp://pc8.2ch.net/test/read.cgi/tech/1128951330/
35 ttp://pc8.2ch.net/test/read.cgi/tech/1125850096/
34 ttp://pc8.2ch.net/test/read.cgi/tech/1122723009/
33 ttp://pc8.2ch.net/test/read.cgi/tech/1120153520/
32 ttp://pc8.2ch.net/test/read.cgi/tech/1117271829/
31 ttp://pc8.2ch.net/test/read.cgi/tech/1114762194/

3 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 01:55:48 ]
30 ttp://pc8.2ch.net/test/read.cgi/tech/1112345886/
29 ttp://pc8.2ch.net/test/read.cgi/tech/1110281860/
28 ttp://pc5.2ch.net/test/read.cgi/tech/1108199304/
27 ttp://pc5.2ch.net/test/read.cgi/tech/1106103119/
26 ttp://pc5.2ch.net/test/read.cgi/tech/1104109858/
25 ttp://pc5.2ch.net/test/read.cgi/tech/1101393155/
24 ttp://pc5.2ch.net/test/read.cgi/tech/1098967135/
23 ttp://pc5.2ch.net/test/read.cgi/tech/1095534704/
22 ttp://pc5.2ch.net/test/read.cgi/tech/1092524669/
21 ttp://pc5.2ch.net/test/read.cgi/tech/1090422324/
20 ttp://pc5.2ch.net/test/read.cgi/tech/1088140233/
19 ttp://pc5.2ch.net/test/read.cgi/tech/1084697545/
18 ttp://pc5.2ch.net/test/read.cgi/tech/1081702990/
17 ttp://pc5.2ch.net/test/read.cgi/tech/1077470361/
16 ttp://pc2.2ch.net/test/read.cgi/tech/1073830065/★
15 ttp://pc2.2ch.net/test/read.cgi/tech/1069339866/★
14 ttp://pc5.2ch.net/tech/kako/1065/10653/1065328397.html
13 ttp://pc5.2ch.net/tech/kako/1059/10595/1059549320.html
12 ttp://pc5.2ch.net/tech/kako/1056/10560/1056033645.html
11 ttp://pc5.2ch.net/tech/kako/1052/10526/1052651750.html
10 ttp://pc5.2ch.net/tech/kako/1047/10478/1047819779.html
9 ttp://pc5.2ch.net/tech/kako/1044/10449/1044929160.html
8 ttp://pc5.2ch.net/tech/kako/1040/10409/1040964626.html
7 ttp://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
6 ttp://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
5 ttp://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
4 ttp://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
3 ttp://pc.2ch.net/tech/kako/1017/10170/1017072275.html
2 ttp://pc.2ch.net/tech/kako/1006/10067/1006783012.html
1 ttp://pc.2ch.net/tech/kako/991/991576947.html

4 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 01:55:57 ]
- MSDN ホームページ
www.microsoft.com/japan/msdn/
- MSDN ライブラリ
msdn.microsoft.com/library/ja/
- MSDN 2 ライブラリ
msdn2.microsoft.com/ja-jp/library/
- 猫でもわかるプログラミング
www.kumei.ne.jp/c_lang/
- Google
www.google.com/
- MSDN ライブラリ 2006年6月版
www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=373930CB-A3D7-4EA5-B421-DD6818DC7C41
- Platform SDK Update
(WindowsR Server 2003 R2 Platform SDK Full Download)
www.microsoft.com/downloads/details.aspx?FamilyId=484269E2-3B89-47E3-8EB7-1F2BE6D7123A
www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm
www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm

- Win32 API入門
wisdom.sakura.ne.jp/system/winapi/
- Win32 プログラミング入門
www7.plala.or.jp/keny01/

- Advanced Windows (書籍)
www.amazon.co.jp/exec/obidos/ASIN/4756138055

-おまけ
dat落ちしている過去スレが見れるかも。Build19が見たい人、余裕のある人は●でも買ってやってくれ。
www.2chsearch.info/index.php?b=tech
makimo.to/cgi-bin/search/search.cgi?q=Win32API&andor=AND&sf=2&view=table&D=tech

5 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 01:56:11 ]
MSDN日本語版は誤訳があったり、一部欠けていたりするなど不完全なため、英語版推奨。
msdn.microsoft.com/library/
msdn2.microsoft.com/en-us/library/

MSDN ライブラリ 2006年12月版
www.microsoft.com/downloads/details.aspx?FamilyID=94596af5-cc58-45af-a14b-df627a31e783&DisplayLang=ja

MicrosoftR WindowsR Software Development Kit for Windows Vista? and .NET Framework 3.0 Runtime Components
www.microsoft.com/downloads/details.aspx?FamilyID=c2b1e300-f358-4523-b479-f53d234cdccf&DisplayLang=en

6 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 01:56:41 ]
        , -‐- 、 r‐-、__
          ヽ    '´ ̄     `
        /   '        ヽ. ヾ  ヽ
         L_/    ;  l i !  ヽ.   .
        /     / ナフ ノ リ ナ ノ))  〉
          / i    , ァ'´l`   fヽ. ! リ /
.        / l     l ヒ'l´!   ト| lヽ
      ん、_リ、  丶 ー'  _,' ‐ ,.'  ゝ
            ヽ \ヽヽ  __ ィ ゝ`
           ` `゙, ー 、lヽ.,'.,、,、,、,、,、,、,、,、,、,、,、,、,、,、,、,、,、,、,、,、,、,、,、,、
             /  ヽヽ!|,、 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
               / ‐- 、 ヽ//   テ ン プ レ            |
            ,'´  l`ー/ ニi.                      |
            !   i ∧ ァノ         こ こ ま で     |
            ト    !'  `/                       |

7 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 02:17:43 ]
リナックスと言うと一目で頭悪そうじゃん?
FreeBSDって書くと通っぽいの思われ。


8 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 02:35:33 ]
誤爆乙

いちおつ

9 名前:デフォルトの名無しさん [2007/04/18(水) 09:10:24 ]
LoadResource(wavファイルを)でロードしたメモリは、
手動(FreeResource)では開放はしないものなんでしょうか。

LoadImageの場合は、リソースのロード、ファイルのロードに限らず、
DeleteObjectで開放するので、
メモリの種類みたいなのは、同じだと思うんですけど、
LoadResourceのメモリは普通のと違ったりするんでしょうか。

10 名前:デフォルトの名無しさん [2007/04/18(水) 09:22:36 ]
>9
どこからLoadResourceするのかで違うのでは?




11 名前:デフォルトの名無しさん [2007/04/18(水) 09:39:13 ]
あらかじめPEに含まれたリソースなら予めメモリに展開されてるからロードしても体積は増えんが
外部からロードするとメモリを確保して展開するから体積が増える

ガンガン外部からロードするとガンガンメモリを圧迫していく
その時の開放用

つかMSDNのLoadImageの項に書いてあるけど

msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpwinui/html/_win32_loadimage.asp
リソースを使っているプロセスが終了すると、システムがそのリソースを自動的に削除します。
しかし、対応する関数を呼び出してメモリを解放すれば、メモリが節約され、
プロセスのワーキングセットのサイズも小さくなります。


12 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 09:58:45 ]
>>9
ttp://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/resources/introductiontoresources/resourcereference/resourcefunctions/freeresource.asp
>The FreeResource function is obsolete and is only supported for backward compatibility with 16-bit Microsoft Windows.
>For 32-bit Windows applications, it is not necessary to free the resources loaded using LoadResource function.
>For more information, see INFO: FreeResource Not Necessary to Free Resources in Win32

ttp://support.microsoft.com/default.aspx?scid=kb;en-us;193678

13 名前:9 mailto:sage [2007/04/18(水) 10:37:44 ]
ありがとうございます。

>>10
BCCで猫とかみたいにオーソドックスにリソースファイルに書いて、
ロードは以下みたいにやっています。
get = LoadResource(hInst, FindResource(hInst, (char *)IDR_WAVE*, "wave");

>>11
そのPEというのについて調べてみます。

>>12
訳してみました。

FreeResource機能は、16ビット用に残してあるもの。
32ビットの場合、RoadResourceの場合、開放する必要はない。

ただ、以下の物に付いては、開放する必要がある。
(FreeResourceを以下の機能に取り替えた)
Accelerator:DestroyAcceleratorTable
Bitmap:DeleteObject
Cursor:DestroyCursor
Icon:DestroyIcon
Menu:DestroyMenu

14 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 13:08:17 ]
ガンガンDVD思い出した

15 名前:9 mailto:sage [2007/04/18(水) 13:30:40 ]
少し調べてきました。

>>10>>11
>どこからLoadResourceするのか
>あらかじめPE(実行ファイル)に含まれたリソースなら
実行ファイルに含まれたリソースだと思います。
リソースに含むと、その分exeの容量が増えますので。
そもそも、それ以外のリソースがどういうものか分かりません。

>予めメモリに展開されてるからロードしても体積は増えん
それは、直にリソースからwavを使ってもあまり変わらないという事でしょうか。
PlaySound(HGLOBAL, NULL, SND_MEMORY | SND_ASYNC); を以下にする感じで。
PlaySound((char *)IDR_WAVE**, hInst, SND_RESOURCE | SND_ASYNC);

ビットマップをLoadImageするのは、メモリを確保するから速くなるのではなく、
HBITMAPに変換するから速くなるという事なんですかね。

16 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 13:49:10 ]
>>15
>それ以外のリソースがどういうものか分かりません。
「実行ファイルに含まれたリソース」と「実行ファイルに含まれてないリソース」

「実行ファイルに含まれたリソース」は基本的にプログラムを実行した時点でメモリにロードされる
「実行ファイルに含まれてないリソース」はLoad*****されるまでメモリの上には無い

LoadImageで速くなるかどうかはしらんが
オブジェクトをハンドルで管理する理由は細々としたデータを管理しなくて良い所にある

17 名前:デフォルトの名無しさん [2007/04/18(水) 13:51:03 ]
>>15
リソースを何か特殊なもんだと勘違いして内科医?
テキストファイルだってリソースだよ?
リソースを直訳してみ。

18 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 14:11:40 ]
利葬巣

19 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 14:44:49 ]
これは酷い

20 名前:9 mailto:sage [2007/04/18(水) 15:53:05 ]
>>16>>17
>それ以外のリソース
> == 実行ファイルに含まれてないリソース
> == テキストファイルだってリソースだよ?
それらは外部ファイルという風に言っていました。
実行ファイルに含まれてないリソースと外部ファイルの違いが分かりません。

>「実行ファイルに含まれたリソース」は基本的に
DISCARDABLEとかですか?

>LoadImageで速くなるかどうかはしらんが
始めはDIBの状態なので、DDBにすると早くなるという意味です。

>細々としたデータを管理しなくて良い所にある
きっちり管理したいです。
64M、128Mメモリとか、ロートルマシンなので、
ある程度の量(5Mぐらい?)メモリを使うと極端に遅くなるんです。



21 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 16:38:28 ]
どうしてSetWindowsHookExを使うとけ#pragma data_seg〜って書かないといけないの?

22 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 16:40:20 ]
>>21
フックするプロセスごとにDLLがロードされるので、変数をプロセスを跨いで共有する必要がある。

23 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 16:44:07 ]
へぇ

24 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 16:45:15 ]
書きたくなければFMOでも使うといいさ

25 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 20:01:23 ]
>>4のSDKは古いんだって・・・

26 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 20:14:42 ]
何度言っても分からない

それがム板クオリティ

27 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 21:12:32 ]
MSDNライブラリも2006/06と2006/12の両方を載せるのは無駄。
>>4-5は整理しろよ。

28 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 22:13:09 ]
>>22
複数のプロセスがロードしないなら書かなくておk?

29 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 22:16:32 ]
>>28
良いと思うよ。DLLにする意味も薄くなるが。

30 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 22:19:01 ]
いや、グローバルフックはDLL化必須じゃん?



31 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 22:19:04 ]
>>28
ローカルフックならそう。そもそもDLL関係ないし。

グローバルフックなら CallNextHookEx に渡す HHOOK を共有しなければいけない。

32 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 22:25:50 ]
>>30
複数のプロセスからロードしないならグローバルフックじゃない気がするが

33 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 22:28:43 ]
え?別にDLLのフックを呼び出すのが単一でもグローバルフックはグローバルフックだろ?
それとも>>30と同じく俺も勘違いなのか?

34 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 22:30:24 ]
>>前998&999
ありがとうございました、何とかなりそうです

35 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 22:33:52 ]
>>21はグローバルフックとは一言も言ってないんだよね。
この時点ですでに勘違いなのかもシレン。
>>21のレス。

36 名前:32 mailto:sage [2007/04/18(水) 22:39:10 ]
俺も語弊があるなw
>複数のプロセスからロードされないなら
だな

37 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 22:50:14 ]
msdn2.microsoft.com/en-us/library/ms644974.aspx
実のところNT系は、CallNextHookExのHHOOK型の引数を無視するので
フックハンドルを共有する必要がない罠。

38 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 23:00:36 ]
>>36
それが良くわからんのだが
フックには特定のスレッドを対象にしたもの(これがローカルフック)と
特定の対象スレッドを指定しないグローバルのものの2種類のスコープがあって
後者はフックプロシージャがDLLにないと出来ない

で、たとえばWH_GETMESSAGEなんかは
ローカルだと対象のスレッドのメッセージだけ取ってくるし
グローバルだととにかくどこのメッセージでも取ってくる

ローカルとグローバルの違いってこれだろ?
SetWindowsHookEx呼ぶDLLの関数を複数のプロセスが呼ぶかとか関係無いと思うんだが

39 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 23:03:45 ]
>フックには特定のスレッドを対象にしたもの(これがローカルフック)と

違う。
ローカルフックは自分自身のスレッドのみを対象としたもの。
他のスレッドを指定してのフックはグローバル。
もちろんスレッドを指定せずシステム全体が対象の場合もグローバル。

40 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 23:12:24 ]
DestroyIconとDestroyCursorの違いってなに?

CreateIconIndirect で作ったらDestroyIconで処分するってMSDNに
かいてあるんですが



41 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 23:23:50 ]
DestroyIcon はアイコンを破棄する。
DestroyCursor はカーソルを破棄する。

42 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 23:46:23 ]
っていうレス以外でお願いします

43 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 23:49:00 ]
CreateWindowExのheightやWidthを弄って実行しても
何故か画面に反映されません・・・
エスパー回答でもいいので助けてください・・・

44 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 23:53:01 ]
>>40
言われた通りにしとけばいいだろ
哲学的な答えが欲しいならモニターにキーボード投げつけろ

>>43
CreateWindowExを呼んでる部分晒してよ

45 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 23:53:11 ]
ShowWindow

46 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 00:02:10 ]
>>44
2画面分割のスプリットウィンドウで、親ウィンドウの上に
子1&2ウィンドウを作っており、その子2のCreateWindowです。
CreateWindowは、親のProcのWM_CREATEで呼んでいます。
+--+-------+
|子1|子2   |
|  |      |
+----------+
+----------+

(a)の行をg_c2w.height-20にしても変化しません・・・
20はステータスバーの高さです。


// 子2ウィンドウ作成
g_hChild2 = CreateWindow(
 clsChild2,
 (LPCWSTR)"",
 WS_CHILD | WS_VISIBLE | WS_BORDER,
 g_c1w.width - g_frame,
 0,
 g_c2w.width,
 g_c2w.height, ←(a)
 hWnd,
 NULL,
 hInstance,
 NULL
);

47 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 00:05:25 ]
>>40
CreateIconFromResourceExとCreateIconIndirectは
与えたパラメータによってはカーソルを返すこともあるが、
そのハンドルがカーソルであったとしても、DestroyIconで破棄しなくてはならない。

48 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 00:23:19 ]
>>46
g_c2w.heightの中の値は確認した?

49 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 00:28:31 ]
>>48
すみません、今解決しました。
親のProcのWM_SIZEの中に子2ウィンドウのサイズを変更する個所が
ありまして、それがWM_CREATEで設定したg_c2w.heightを上書きして
いたようです。WM_SIZEでも-20してやると希望通りに動作しました。

ウィンドウ作成時にもWM_SIZEが走るとは知りませんでした・・・

50 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 00:35:31 ]
        ∧∧
       ヽ(・ω・)/   ズコー
      \(.\ ノ
    、ハ,,、  ̄
     ̄



51 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 01:15:14 ]
自己解決しました。
50にカチンときたので教えません。
バーカ!


52 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 01:26:30 ]
自己解決メソッドは↓のスレのみで有効です
【厨房満開】HSP初質51【ビラビラ満開】
pc11.2ch.net/test/read.cgi/tech/1142529119/

53 名前:40 mailto:sage [2007/04/19(木) 01:54:44 ]
>>47
ありがとう

54 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 06:08:02 ]
エクスプローラで、コンテキストメニュー項目を追加したいのですが、
ファイルやフォルダを無選択時の場合(新規作成(W)とかが出るやつ)に
使用されるレジストリはどこなのでしょうか?

55 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 06:22:08 ]
*に書いておけばいいんじゃね?

56 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 07:14:33 ]
>>54
HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers
だけど、これだけを聞いてちゃんとContextMenuHandlerを作れるのか?

57 名前:デフォルトの名無しさん [2007/04/19(木) 10:31:39 ]
任意のアプリのウィンドウを
SetParentで子ウィンドウにするプログラムを作りたいんですが
普通にSetParentしただけでは描画に問題がでました。
それでCreateRemoteThreadで同じプロセスに作ったスレッドの
ウィンドウを親にしてみても同様に描画の問題がでますた。
なのでSetParentは同じスレッドじゃないとまともに動かないと結論付けて

今度は別のAPC未対応のスレッドにウィンドウを作らせるか、
もしくはウィンドウを別スレッドで作ってからウィンドウのハンドルを
別のスレッドに関連づけるような方法を試してみたいのですが
そんな方法はありませんか?

58 名前:デフォルトの名無しさん [2007/04/19(木) 14:48:06 ]
ttp://www.kumei.ne.jp/c_lang/sdk/sdk_29.htm
猫でも・・のソースで実行してみると、メニューとダイアログボックスは
表示されるんですが、ビットマップが表示されないです。
何かが足りないと思うのですが、原因わかるかたおりますか?

Webページの実行結果と同じようにしたいので。。

59 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 14:58:16 ]
>>58
念のために聞くけど、
猫の画像ファイル(bitmap1.bmp)は自分で用意しないといけないけど用意した?

60 名前:デフォルトの名無しさん [2007/04/19(木) 15:05:27 ]
アイコンとビットマップ両方用意してあります。

ちなみに、フォルダでexeをみると、アイコンは変わって
表示されてました。



61 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 15:17:16 ]
>>60
.rcのファイルにちゃんと

MYBMP BITMAP DISCARDABLE "bitmap1.bmp"

の行がある?

62 名前:デフォルトの名無しさん [2007/04/19(木) 15:20:26 ]
>>61
あります。
もしかしてビットマップが大きすぎたりすると
表示できないとかありますかね。。
でもDlgの左上にアイコンも表示してくれないし・・・

63 名前:54 mailto:sage [2007/04/19(木) 15:21:57 ]
>>55 >>56
どうもありがとうございます。

>>56
やっぱりそれしかないんですか・・・
そこだとActiveXオブジェクトである必要がある訳ですよね・・・?

HKEY_CLASSES_ROOT\*\shell\foo\command

みたいに適当なEXEとかでできる所はないんでしょうか・・・
ないですか・・・そうですか・・・

でも何でDirectoryなんでしょうか・・・?

64 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 15:29:09 ]
>>62
当たり前だけど .rcのファイルのダイアログの定義のところに

CONTROL "MYBMP",IDC_STATIC,"Static",SS_BITMAP | SS_REALSIZEIMAGE,
19,18,13,14

の行はあるよね?
"MYBMP"の綴り間違ってたりしてないよね?
こっちの環境では2000x2000ピクセルのサイズでも、
モノクロビットマップでもちゃんと表示されるんだけどなぁ・・

65 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 15:42:40 ]
普通のBitmapじゃ表示されないよ
アイコン用Bitmapを作るツールで作らないと

66 名前:デフォルトの名無しさん [2007/04/19(木) 15:45:48 ]
>>64
あります。ビットマップが表示されないだけで
ほかのはきちんと機能します。

67 名前:デフォルトの名無しさん [2007/04/19(木) 15:55:31 ]
>>65
ビットマップの新規作成から
こぴぺしてつくりました。
アイコンは **.icoでBMPは **.bmpです。

68 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 16:01:59 ]
>>67
エクスプローラとかデスクトップを右クリックの「新規作成」のことだろうか?
作っただけのそのままのファイルだと何も表示されない。
一度、ペイントブラシで適当に色塗っただけのBMP作って試してみたら?

69 名前:デフォルトの名無しさん [2007/04/19(木) 16:04:56 ]
>>68
VCのリソースエディタに貼り付けました。
なんか色数が多いらしく、減色&小さめにリサイズして
貼り付けました。
リソースタブからプロパティをみると表示されています。
実行すると表示されません。

70 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 16:55:06 ]
とりあえずビットマップ・描画関連APIの戻り値見て、どこまで成功してるのか調べた方がいいかもね。



71 名前:58 [2007/04/19(木) 17:04:34 ]
いろいろすみません
もうちょっとがんばってみます。

72 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 20:43:41 ]
スタティックコントロールが"MYBMP"で参照しているのに、
ビットマップはMYBMPで定義されている件について。

73 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 21:58:35 ]
IDB_MYBMP

74 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 22:01:04 ]
皆様、質問があります。

コンソール画面で
ipconfig > "c:\ipinfo.txt"

とすると、リダイレクタより、
ipconfigの標準出力がc:ドライブ下のipinfo.txtに出力される。

これをCreateProcess関数のlpszCommandLineに、
「ipconfig > \"c:\\ipinfo.txt\"」と指定しても、
c:ドライブ下のipinfo.txtに出力されるものなんでしょうか?
(自分はうまくいかない)

それとも、 > はcmdの機能?

パイプで組まなきゃダメなんかなぁ・・・

75 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 22:02:35 ]
>>74
シェルの機能なのでcmd.exeごと起動する。cmd /? をチェキ。

76 名前:74 mailto:sage [2007/04/19(木) 22:06:48 ]
>>75
納得!!
cmd.exeに委託しているんですかー。

ありがとうございます。

77 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 22:38:43 ]
CreateWindowのEDITで、書き込みとか書き換えを不可能にするために
EnableWindow(h1, FALSE)をしたところ、背景が灰色になって文字も薄くなりました。
書き換え書き込みは不可能なまま、背景白、文字黒に直したいのですが
どうすればいいのでしょうか?

78 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 22:47:20 ]
>>77
ES_READONLY
WM_CTLCOLORSTATIC
でどう?

79 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 22:55:03 ]
>>78
できました!ありがとうございます!
しかし、目的のEDITのウィンドウの背景を変えるにはどのように指定すればいいのでしょうか?

80 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 23:59:54 ]
>>79
親ウィンドウでWM_CTLCOLOREDITを捉える



81 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 00:20:58 ]
リストビューの行にチェックボックスはどうやって付けるのでしょうか
↓こんな感じです
_______
|__|_____
|□  |
|□  |
|□  |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄

82 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 00:25:49 ]
>>81
www.kumei.ne.jp/c_lang/sdk2/sdk_198.htm

ここらへんで幸せになれると思う

83 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 00:27:54 ]
>>82
即レスありがとう
幸せになってきます

84 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 09:52:05 ]
>>72
それでした。
""を追加したら表示されました。
ありがとうございました。

85 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 10:35:32 ]
ReadFileで読み取ったファイルを1行づつ二次元の配列に格納して
構文解析したいです

ReadFileの第二パラメータのバッファから、二次元の配列に移すAPI
はありますか?

86 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 10:45:42 ]
CopyMemory

87 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 10:57:17 ]
物臭もここまでくると素晴らしいな

MSが何の為にそんなAPI用意するんだろうか

88 名前:デフォルトの名無しさん [2007/04/20(金) 11:50:11 ]
質問です。
ツールバーを作ろうとしているのですが、色々なサイトを調べても、ツールバー上にはボタンしか置いていないようです。
コンボボックスをツールバー上にのせたいのですが、可能でしょうか?

ツールバーと似た、レバーコントロールというものの上におけるのは調べて発見できたのですが…

89 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 11:58:39 ]
>レバーコントロール
思わずふきだしてしもた。


90 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 12:57:22 ]
エクセルでオープンしているファイルを、
CreateFileでオープンしたいのですが、どうすれば出来るでしょうか。

エクセルでオープンしていなければ、CreateFileでオープンできるのですが、
エクセルでオープンしていると、CreateFileでオープンできないようです。
ただ、他のファイルビュアーでは読めたりするので、どうやればそれができるのかわかりません。



91 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 13:01:21 ]
CreateFileのリファレンス読めば明らかだと思うが・・

92 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 13:01:24 ]
>>90
排他モードで開いてるんだろ

93 名前:85 mailto:sage [2007/04/20(金) 13:06:25 ]
ReadFileの第二パラメータのバッファの中は

111\r\n222\r\n333\r\nEOF

と連続した文字列なのはわかったのですが、これをCopyMemoryを使って、
1行づつ二次元の配列に移す場合、バッファを先頭から1文字づつ読んで\r\n
毎に切り分けて格納するしかないのでしょうか・・・
定番の読み方(例えば仕事(?)でやられる方)が知りたいです

↓こうしたい
char hairetsu[5000][1024] (5000はファイルの行数、1024は1行の最大の長さ)

hairetsu[0][1024]に111\r\n
hairetsu[1][1024]に222\r\n
hairetsu[2][1024]に333\r\n
hairetsu[3][1024]にEOF

94 名前:85 mailto:sage [2007/04/20(金) 13:07:03 ]
>>86
ありがとうございます

95 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 13:12:28 ]
てかCの標準関数にそのものズバリなのあるじゃねぇか

96 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 13:19:12 ]
バッファはそのまま使いつづけて
各行開始位置のポインタ値を保持する変数配列を用意し
バッファを一旦頭から末尾まで全部捜査し
行開始位置のポインタをとりつつ\r\nを\0\0に書き換えていく
これで文字列系関数にもポインタを渡すだけで行ごとに処理が可能に!

つーか>>93みたいな多元配列はメモリの無駄だし

97 名前:デフォルトの名無しさん [2007/04/20(金) 14:00:55 ]
Win2000+VC.net2003の環境で
QueueUserAPCをコンパイルすると
error C3861: 'QueueUserAPC'識別子は、引数依存の照合を使用しても見つかりません。
と出るんですがどうすれば解決できますか?
winbase.hをインクルードしてもkarnel32.dllとリンクしても駄目みたいなんですが。。

98 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 14:06:49 ]
_WIN32_WINNT を 0x0400 以上の値で define した後にヘッダーをインクルード
(コンパイラ設定でマクロ設定する でも可)

99 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 14:22:34 ]
子ウィンドウが開かれていて、親ウィンドウの上を移動させる時、
9x系と再描画されて、XPだと再描画されないのですが、
9x系とXPでは、再描画の挙動が違ったりしているのでしょうか。

100 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 14:46:22 ]
そりゃあ、OSの設定の問題だろ
移動を終えてドラッグ止めたら再描画されるだろ?



101 名前:99 mailto:sage [2007/04/20(金) 15:35:25 ]
>>100
ありがとうございます。
されないです。
最小化して標準に戻すのでもダメです。
WM_PAINTが来てない可能性すらあるので、
そこらへんから実験してみます。

102 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 16:22:57 ]
それはあれか、全く同じEXEを9xとXPで動かしてるのか?

>WM_PAINTが来てない可能性すらあるので、
ネェヨwwwww

103 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 16:29:05 ]
子ウインドウは動かしただけでは再描画されなくても正常だが
WS_EX_LAYERED付なら親でも

104 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 16:34:47 ]
そういえばレイヤードウィンドウなんてありましたねぇ
全然必要性を感じないから使ったこと無いですが

105 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 16:39:05 ]
レイヤードウィンドウは雑誌やスクリーンショットで見る分にはかっこいいが
実際に使ってみると使いにくくてしょうがない

106 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 16:42:11 ]
>>95
ありがとうございますstrtok確認しました

>>96
>\r\nを\0\0に書き換えていく
このやり方で行きます目から鱗です
こういうテクニックって本に書いてあるんでしょうか?
ウェブでも本でも見たことない・・

107 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 16:51:04 ]
>>105
完全不透明のレイヤードウィンドウもつくれるよ。
見た目は普通のウィンドウと変わらないけど、WM_PAINTは激減する。

108 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 17:05:24 ]
外部プロセスのCPU使用率を強制的に制限する方法を探しています。

最初に、CreteProcessのPROCESS_INFORMATIONから得られるhThreadに対して
SuspendThread/ResumeThreadを試しましたが、
複数スレッドがある場合に対応できない様です。

次にCreateToolhelp32Snapshotによるプロセス内のThreadの列挙で
SuspendThread/ResumeThreadをやろうとしましたが、
Thread32First/Thread32Nextで得られるThreadIDに対し、
OpenThreadでHandleへ変換しようとすると失敗してしまいました。

また、JobObjectの関連付けでJOB_OBJECT_LIMIT_JOB_TIMEや
IDLE_PRIORITY_CLASSで時間制限を掛けてみましたが、このオプションは
設定時間にプロセスが終わってしまうだけみたいなので目的と違う様です。

使用率制限を行うツールとして既にBESという物がありますが、
あれはどうやっているのでしょうか?

109 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 17:07:32 ]
すいません、BESはソースが公開されていますね。
調べてみます…。

110 名前:99 mailto:sage [2007/04/20(金) 17:12:42 ]
>>102
はい。基本は9xで作っているんですけど、
動作確認のためxpで動かそうと思いました。

>>103
再描画されて欲しいのは、下にある親ウィンドウの方です。
ただ、最小化→標準化とすると、子ウィンドウの方も再描画されません。
WS_EX_LAYEREDについても調べてみます。



111 名前:108 mailto:sage [2007/04/20(金) 17:27:28 ]
できました。Thread32First/Thread32Nextの方法でよかった様です。


112 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 17:37:56 ]
画像を扱うのにBMP用のAPIは見つかったのですが、
PNG用のAPIは、外部ライブラリを探すしかないのでしょうか?
OSはXPです。

113 名前:デフォルトの名無しさん [2007/04/20(金) 17:40:00 ]
GDI+でも検索汁

114 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 17:41:03 ]
つ gdiplus

115 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 17:45:29 ]
StretchDIBitsって出力先がメモリDCや拡張メタファイルでもPNGを出力できるんだろうか

116 名前:112 mailto:sage [2007/04/20(金) 17:50:23 ]
ありがとうございます。勉強してきます。

117 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 18:07:55 ]
WM_CREATEメッセージ中に、子ウインドウのレイアウトに従い
自身のサイズを変更したいのですが、CREATESTRUCTを修正しても
MoveWindow/SetWindowPosでも変更できないようです
何かいい方法はないでしょうか?

118 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 18:10:34 ]
サイズの変更をポスト

119 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 18:15:05 ]
>MoveWindow/SetWindowPosでも変更できないようです
可能性
・自分の WM_SIZE ハンドラで、引数と無関係の値にサイズ変更している
・自分の親が 親のWM_SIZEのタイミングで 自分をMoveWindowしやがってる

120 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 18:15:36 ]
あれ?ウィンドウ生成時にもWM_SIZEが発行されるんじゃなかったっけ?



121 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 18:26:35 BE:124224588-2BP(222)]
>WM_CREATEメッセージ中に、

リソースインダイレクトを使っているというオチではなかろうな。

122 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 19:23:11 ]
ウィンドウを作らずに通知エリアの追加は出来ないの

123 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 19:25:15 ]
通知エリアって?

124 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 19:34:20 BE:62112184-2BP(222)]
>>122
できたとして、どうやってメッセージを受け取るつもりだ?

125 名前:97 mailto:sage [2007/04/20(金) 19:43:23 ]
>>98
ありがとうございます。
その通りにやったら、できました。

126 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 19:45:04 ]
>>124

Hook

127 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 19:46:33 BE:58230656-2BP(222)]
>>126
「通知エリアのメッセージ」と分かっているのにフックしなければならない理由があるの?

128 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 19:59:01 ]
北がキチガイなのは世界中公認の周知の事実だが
南は中身は同じなのに私達先進国ですという皮をかぶってるのがウザス

129 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 20:02:32 ]
同意するがスレ違いだ

130 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 21:09:53 ]
>>106
さぁねぇ
プログラムの本なんて数多あるから、似たようなのが載ってる本ももしかしたらあるかもしれないな
俺はとりあえず見たこと無いが
ランゲージリファレンス系の本しか持ってないしな
ていうか今回のくらいのは、自分で思いつくくらいにはならんといかんのじゃないかと思うよ



131 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 21:12:23 ]
>>96
>行開始位置のポインタをとりつつ\r\nを\0\0に書き換えていく

これポインタ取るのはわかるけど、書き換えは出来ないんじゃね?
バッファってchar*だから一旦配列なり、mallocで取った領域なりに
バッファ丸ごとコピーして、そこを書き換えないと

132 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 21:18:26 ]
ファイルマpp(ry

133 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 21:21:50 ]
>>131
constでもリテラルでも無い、普通にメモリ上に動的確保したバッファ内の値が書き換えできないと申すか?w

134 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 21:25:15 ]
>>131
おまえの言ってるバッファはいったい何のバッファだ?
ReadFileに渡すようなバッファがWriteAccess不能なメモリ領域だと言うのか?w

135 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 21:27:54 ]
バッファの語源はやっぱ水牛?

136 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 21:28:26 ]
シリアル通信について質問させて下さい。
通信がうまくできません。

以下は流れです。

CreateFile( "COM1", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 );
GetCommState();
DCBパラメータを書き換え
SetCommState();
GetCommTimeouts();
タイムアウトパラメータを変更
SetCommTimeouts();

WriteFile();       // 1byteのコマンド送信準備
FlushFileBuffers();  // 送信
ReadFile(); // 1byte受信(受信できるまで10回繰り返し)

0x0Fを送れば、0xF0が返ってくるはずなのですが
何も返ってこなくて。手順的な見落としなどがあれば
ご指摘頂けると幸いです。

秋月のTDS01Vというセンサーキットを自前のプログラムで
読んでみようと始めたのですが、最初から躓きました。

センサーの動作は添付のプログラムで正常動作を確認しています。
全てのAPIからはエラーは返ってきていません。

137 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 21:34:21 ]
どんな引数を指定しているかも
DCBの設定内容も隠してどこがいけない?と聞かれてもな・・・

138 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 21:43:23 ]
>>137
申し訳ない、行数制限に引っかかったので
どこを削ろうかなと。

DCBはGetした後は、キットのドキュメントにある
パラメータをセットしてるつもりです。
(他はGet時のまま)
m_CommDCB.BaudRate = CBR_9600; // 9600bps
m_CommDCB.fBinary = TRUE; // bynary mode:always TRUE
m_CommDCB.fParity = FALSE; // parity no check
m_CommDCB.ByteSize = 8; // byte size
m_CommDCB.Parity = NOPARITY; // no parity
m_CommDCB.StopBits = ONESTOPBIT;// 1 stop bit

タイムアウトはWeb上でみつかったサンプルの値を引っ張って
来ています。
m_CommTimeouts.ReadIntervalTimeout = 100;
m_CommTimeouts.ReadTotalTimeoutMultiplier = 10;
m_CommTimeouts.ReadTotalTimeoutConstant = 500;
m_CommTimeouts.WriteTotalTimeoutMultiplier = 10;
m_CommTimeouts.WriteTotalTimeoutConstant = 500;

bRtn = WriteFile( m_hCommHandle, m_pTxBuff, 1, &dwCount, NULL );

FlushFileBuffers( m_hCommHandle );

dwCount = 0;
for ( int i = 0; i < 10 && dwCount == 0; i++ ) {
bRtn = ReadFile( m_hCommHandle, m_pRxBuff, 1, &dwCount, NULL );
// 戻り値チェックしながらリトライループ
}
ここで、for文が10回回って出てきてしまいます。dwCountは0のまま

139 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 21:52:46 ]
bRtnは確認したの?

140 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 21:56:33 ]
>>139
レスありがとうです。
上のソースは抽出でして、全てのAPIの戻り値は
チェックしていて、エラーが返ってきていないことは
確認しています。



141 名前:デフォルトの名無しさん [2007/04/21(土) 00:51:40 ]
>>140はCOMポートを増設してクロスケーブルを買ってくるべきだな。
で、ケーブルで首ry

142 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 15:04:40 ]
タブコントロールをEnableWindow()で無効にしても、
タブの文字が淡色表示にならないのだがそういう仕様?

143 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 15:09:15 ]
そう

144 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 18:45:17 ]
GRAYEDにしなさい?

145 名前:デフォルトの名無しさん [2007/04/21(土) 19:34:52 ]
>>141
ワロタw

まさに泣いて馬超を斬るを地でいった訳かw

146 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 20:07:28 ]
CreateWindowのEDITで、文字を入力してENTERを押したときに動作を設定したいのですが、
どうすればいいのでしょうか?EDITにフォーカスがないときには出来るのですが、
EDITにフォーカスがあるときは改行されてしまいます。

147 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 20:16:09 ]
サブクラス化

148 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 20:26:13 ]
>>146
エディットコントロールをマルチラインに設定するのをやめる。

149 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 20:32:12 ]
>>148
メッセンジャーみたいな感じで、Shift(Ctrlだったかも)+Enterで改行、
通常のEnterで別の動作みたいな感じにしたいのですが、
マルチライン設定だと無理なのでしょうか?

150 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 20:32:44 ]
>>149
>>147

それが理解できないならまだ早いということ



151 名前:デフォルトの名無しさん [2007/04/22(日) 00:31:32 ]
XP Homeでファイルのアクセスをプログラム側で検出することは出来ますか?
Proならファイルの監査が利用できるですが。

152 名前:デフォルトの名無しさん [2007/04/22(日) 02:03:44 ]
>>151
おまえのエクスプローラーはどうなってる?それが答えだ。

153 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 02:21:35 ]
フォルダの変更は監視できたと思うけど。

154 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 02:22:31 ]
>>151
理屈から考えて出来るはず。

155 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 06:10:46 ]
逆にpro側の監査機能が良くわからないがfilemonのようなことしたいのかな?


156 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 10:12:32 ]
ReadDirectoryChangesW

FILE_NOTIFY_CHANGE_LAST_ACCESS
監視中のディレクトリ、またはサブツリーで前回のファイルアクセス日時が変更されると、
変更通知の待機操作から制御が返ります。

157 名前:151 mailto:sage [2007/04/22(日) 11:11:30 ]
>>152-156
レスありがとうです。
ReadDirectoryChangesWなどでは、なんらかの更新が発生しないとダメな気がします。
(今から確認します)

簡単に試してみると、メモ帳でテキストファイルを開いても"アクセス日時"が変わらないような。。。

158 名前:151 mailto:sage [2007/04/22(日) 11:14:24 ]
連投申し訳ないです。
>>155
そうですね。filemonの簡易版(最低限アクセスがあったことをトリガーにしたい)のです。

159 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 11:17:44 ]
監査かけてイベントビューアからゲット

160 名前:デフォルトの名無しさん [2007/04/22(日) 11:20:19 ]
仮想リストビューでカラム幅を調整する方法を教えてください。

リストビューは詳細表示。ダイアログは使わずにCreateWindowで作ってます。

普通のリストビューを使っていたときはヘッダとデータを全部作り終わった後に
カラム数分 ListView_SetColumnWidth(ハンドル, インデックス, LVSCW_AUTOSIZE) をしていました。
仮想リストビューに変更してLVN_GETDISPINFOのときに
ListView_SetColumnWidth(ハンドル, pDispInfo->item.iSubItem, LVSCW_AUTOSIZE);
をやったら固まりました。

環境:VC6, SDK



161 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 11:20:59 ]
>>159
最初はそうしようと思ったんだけど、XP homeって監査がないんです。


162 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 11:39:44 ]
>>160
LVSCW_AUTOSIZEするためにはその列の一番長い文字列の幅が必要だから
そのときにLVN_GETDISPINFOが呼ばれて無限ループになってるんじゃね?

163 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 11:55:51 ]
ファイルアクセスをHOOK

164 名前:160 mailto:sage [2007/04/22(日) 12:02:08 ]
LVSCW_AUTOSIZEは使えなさそうですね。
他のタイミングで幅調整するしかないか。

165 名前:151 [2007/04/22(日) 12:09:48 ]
>>163
えっと、それはSetWindowsHookExを利用したHOOK機能のお話しでしょうか。
調べ切れていないかもしれませんが、ファイルアクセスに関するものは見つかりませんでした。

それとも ruffnex.oc.to/kenji/text/api_hook/
のような、概念的なフックの話で、代替DLLを用意して
起動しているプロセス全てのエントリポイントを塗り替えるお話でしょうか。

166 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 12:23:31 ]
explorer.exeだけならCreateProcess系のフックで何とかなると思うけど
Windows全体ってことになるとカーネルモードのお仕事になる気がする

CreateProcessにしても思いつきで言ってるうえ、あまりにもスマートじゃないが

167 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 12:31:53 ]
って
ファイルに触る=>CreateProcess=>ファイルパスの取得
が100%成り立つって前提じゃないとだからたぶん無理か
スマソ

168 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 12:39:27 ]
何らかの変更が加えられたときだけでいいならFindFirstChangeNotificationなどが使えるような気がする

169 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 12:42:40 ]
>>168
>>157-158を見てそういう話が出てくるか普通w

で、その上で、ファイルの監視なんて変更が加えられた時でいいと思うんだがな
開かれたからって、なんかあるか?

170 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 12:47:20 ]
>>142 だけど、どなたか淡色表示する方法教えてください。
なるべく簡単な方法で具体的だと助かります。




171 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 13:37:59 ]
オーナードロー

172 名前:151 mailto:sage [2007/04/22(日) 13:47:32 ]
>>169
特定ファイルへのアクセスのロギングがしたいのです。。。
やっぱり難しそうですね。

173 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 14:09:59 ]
>>151
Home EditionでもUIがないだけで監査の機能自体は存在する。
したがってこのスレ的な回答は「Audit Policy関数を駆使して何とかしろ」
msdn2.microsoft.com/en-us/library/aa375742.aspx

174 名前:151 mailto:sage [2007/04/22(日) 14:30:52 ]
>>173
>UIがないだけで監査の機能自体は存在する

そうだったんだ! 無知でした。
解決できそうです。ありがとうございます!

175 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 14:31:06 ]
ロードランナー

176 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 14:59:39 ]
初期のNTからある物をわざわざ外すわけないじゃん

177 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 15:02:18 ]
ですよねー^^

178 名前:151 mailto:sage [2007/04/22(日) 15:46:42 ]
うーん、LoadLibraryでadvapi32.dllを取り込んで
GetProcAddressしてAuditFreeとかAuditSetSystemPolicyを見つけようとしても
null返してくる。
GetLastErrorは"指定したプロシージャが見つからない(127)"でした。

>>173のページの説明でもclientは"Requires Windows Vista."ってなっていて
やっぱりXP homeでは駄目なんでしょうか。。。

179 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 17:14:55 ]
>>178
すまん、Vistaでしか確認してなかった。XP以前だとこのあたり使うのかな
AddAuditAccessAce (WinNT 3.1)
AddAuditAccessAceEx (Win2k)
AddAuditAccessObjectAce (Win2k)

180 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 17:40:38 ]
>>179
ご丁寧にありがとうございます!
GetProcAddressで確認できました。今からヘルプ読みます。



181 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 19:19:45 ]
>>180
> GetProcAddressで確認できました。
DependencyWalkerで確認したほうが手っ取り早くね?

182 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 19:43:28 ]
>>181
VCならな

183 名前:デフォルトの名無しさん [2007/04/22(日) 19:47:55 ]
[Ctrl]+[A]とかをシミュレートしたいのですがどうやるんでしょうか?
SendMessage(hWnd, WM_KEYDOWN, VK_CONTROL, 0);
SendMessage(hWnd, WM_KEYDOWN, 'V', 0);


184 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 19:56:43 ]
>>183
SendInputかkeybd_event

185 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 19:57:57 ]
>>182
VCである必要はないと思うが

186 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 20:00:42 ]
VC買わないと手に入らないと思ってるんじゃね? Platform SDKに付いてる。

187 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 20:05:15 ]
PSDKについてくるし
ttp://www.dependencywalker.com/
で単独で配布しとるぞ。

188 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 20:07:35 ]
知らんヤツの方が多いんじゃね?

189 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 20:16:56 ]
ウィンドーを作らないプログラムの場合
タスクバーの右端にアイコンを追加することは出来ますか?

190 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 20:25:10 ]
>>183
WM_KEYDOWNはSendMessageで送っては駄目。
PostMessageを使う必要がある。

詳しいことは、PostMessageとSendMessageの違いと
TranslateMessageの働きを勉強してくれ。



191 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 20:41:47 ]
>>189
出来る。ただしメッセージは受け取れない。

192 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 20:42:55 ]
>>189
確かできると思うけど、非表示のウィンドウでいいから用意しとかないとイベントを受け取れんぞ。

193 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 20:44:05 ]
>>189
非表示でウインドウを作ればいいだろ。
知恵が足りない。

194 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 22:52:21 ]
かぶりすぎ

195 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 23:11:09 ]
98、Me、XPで動いて欲しいソフトを作っているんですけど、
始めにGetVersionExのdwMajorVersionが
10、90、1かであるかチェックすれば大丈夫でしょうか。
dwMajorVersionが同じでもdwPlatformIdが違うとかはないでしょうか。

196 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 23:18:50 ]
OSVERSIONINFO
msdn2.microsoft.com/en-us/library/ms724834.aspx


197 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 23:19:33 ]
> dwMajorVersionが 
> 10、90、1かであるかチェックすれば大丈夫でしょうか
Windows の Version 90 か…
>>195は未来を進んでるなぁー


それはそうと↓を良く見れ。
msdn2.microsoft.com/en-us/library/ms724834.aspx

198 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 23:20:50 ]
リロードしたらほんとうにかぶりすぎてて吹いた

199 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 23:21:29 ]
>>195
user32.dll,kernel32.dllあたりのリンクの仕方次第では、
そんなんチェックする前にDLLのバージョン不整合で落ちるぞ。

200 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 23:29:03 ]
別次元の話だけど、俺ならまずWINVERと_WIN32_WINDOWSを0x0410にする。

それはともかく、2003/Vista及びそれ以降で動かせるようにするつもりはないのか?
まあ、そのつもりがなくても互換性モードをオンにすれば動かされるだろうが。



201 名前:195 mailto:sage [2007/04/22(日) 23:39:48 ]
ありがとうございます。

>>196
日本語のは見ていたんですけど、さっぱりだったもので。

>>197
90の使い方間違っていますか?下位をチェックするとかですかね。
飛びぬけて数字が大きいので違和感はあったんですけど。

>>199
VC2005で作られたソフトを実行すると、始めに**dllが
見つからないとか出て、実行できないのがありますがそれですかね。
それなら危険がない?と思うので逆にいいんですけど。

>>200
PCを持っているなら、もちろん動かせるようにしたいんですけど、
98、Me、XPしかないので、チェックのしようがないです。

202 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 23:48:37 ]
>>201
> 始めに**dllが
そりゃSxSだろ。manifestをちゃんと書いてやれば見つけてくれる。

203 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 23:51:01 ]
>>201
いや、動作確認しなくても「保障はしないよ」くらいは言えるでしょ。
GetVersionInfoExの結果が想定していないバージョンだったら一律に実行を拒否する、なんて
コードを書いているのでもない限り。

204 名前:195 mailto:sage [2007/04/23(月) 00:08:27 ]
>>202
それとは違いましたか。
そちらについても勉強したいと思います。

>>203
さすがに、「98、Me、XP以外なので実行できません」
と出て終了は良くないですかね・・。

よくMSDNに9x系では○○、NT系では○○と、
分かれても2パターンである事が多いので、
それがMajor4、5であると考えると、
他のOSでもそれなりに動いてくれる気もします。

有名どころで、LoadImageはNT系でファイルから開けないとか、
タイマーの精度で9x系は55ミリ秒とかありますが、
そういうのは性能が落ちる方に合わせては作っています。

205 名前:デフォルトの名無しさん [2007/04/23(月) 00:23:14 ]
ステータスバーの右下についてる
SIZEGRIPのみ表示させるってできますか?

206 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 00:31:13 ]
>>205
SCROLLBAR
SBS_SIZEGRIP
あたりでググってみ

207 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 00:34:27 ]
>>204
想定より新しいバージョンのOSは、基本的に受け入れるチェックコードでないと駄目、
って昔のMSDNで見た記憶がある。
特殊なアプリで無ければ、マニュアルに動作保障OS列挙しとけば
チェックコード自体要らないけどな。

208 名前:デフォルトの名無しさん [2007/04/23(月) 00:34:45 ]
わかりました!
ありがとう

209 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 00:39:18 ]
> LoadImageはNT系でファイルから開けない
本当?MSDNには何も書いていないけど
msdn2.microsoft.com/en-us/library/ms648045.aspx

210 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 01:03:56 ]
ググってみたけどよく分からん。
NT4.0初期の頃に問題があってSPで修正された、ってことかなあ。
少なくとも2000以降なら問題無いはず。



211 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 01:52:19 ]
DialogBoxで呼び出すCALLBACK関数に引数としてポインタを渡したいのですが
出来ますでしょうか?

212 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 01:57:03 ]
>>211
DialogBoxParamを使え

213 名前:211 mailto:sage [2007/04/23(月) 02:02:13 ]
>>212
こんな時間にサンクス
ちょっとやってみる

214 名前:195 mailto:sage [2007/04/23(月) 05:00:50 ]
>>207
なるほど、分かりました。

>>209>>210
何年か前はLR_LOADFROMFILEはNT系では使えない
となってたと思うんですけど、仰るとおり修正されたんだと思います。


215 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 07:06:13 ]
>>214
その記述があったのははNT 3.51しか想定してなかったころのすごく古いMSDNライブラリ
英語版はすぐに直ったけど日本語版では長いこと説明が残ったままだった
実際にはちゃんと開ける

216 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 08:04:58 ]
Win2000な俺のPCでもLR_LOADFROMFILEできてるからな

217 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 08:08:39 ]
UNICODEで書かれている文字列を、strstrで操作した場合、不具合は起きますか?

(strcatならlstrcatのようにUNICODEに対応する関数があるのですが、strstrには
lstrstrが無いようなのです)

218 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 08:45:50 ]
strsafe.h で追加された文字列操作関数について
ir9.jp/prog/ayu/strsafe.htm

219 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 09:15:34 ]
わかりました!
ありがとう

220 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 09:24:43 ]
>>218
UNICODE対応のstrstrが載っていないようなんですけども、strsafe.hの中の関数を使って
自分で作成するのでしょうか??



221 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 10:02:21 ]
API関係ないな

222 名前:217 mailto:sage [2007/04/23(月) 10:33:37 ]
自己解決(?)
ぐぐったらUNICODE←→ANSI変換APIが出て来た・・・
なんか面倒な事に・・・

223 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 10:36:52 ]
win32apiじゃなくていいなら、wcsstr とかなかったっけ?


224 名前:デフォルトの名無しさん [2007/04/23(月) 11:35:15 ]
RECT wndrc; wndrc.top = 0; wndrc.bottom = 100; wndrc.left = 0; wndrc.right = 100;
int x = wndrc.left; int y = wndrc.top; int w = wndrc.right - wndrc.left; int h = wndrc.bottom - wndrc.top;

hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
x, y, w, h, NULL, NULL, hInstance, NULL);
if (!hWnd) return FALSE;

RECT rc;
if( ::GetWindowRect( hWnd, &rc ) )
{
if( rc.top == wndrc.top && rc.left == wndrc.left && rc.bottom == wndrc.bottom && rc.right == wndrc.right )
{}
else
{
::MessageBox( 0, "ウィンドウサイズが違います", "?", 0 );
}
}
VC.net2003のwin32のデフォルトで作られるプログラムで
CreateWindowの所を上記の様に変更しました。
そしたら自分の想定していた rc.riight == 100 と反して
rc.right == 112 になっていました。
何故ウィンドウの幅がcreatewindowで指定した値と12も違うんでしょうか?
ちなみにウィンドウプロシージャ等は一切変更していません。

225 名前:デフォルトの名無しさん [2007/04/23(月) 13:56:40 ]
>>183
なるほど。
Postの方で正しく送れました。
ありがとうございました。

>>>>184
SendInputでちょっと下の様に
「A」を入力しるプログラムを書いて実行してみました。
全角入力がONになるみたいなんですが、最後の「変換」の決定(Enterですよね?)の所まで
自動化したい場合はどうすればいいのでしょう?
下のプログラムだと、決定という意味でのEnterは認識されないみたいです…

INPUT inputKey[3];

inputKey[0].type = INPUT_KEYBOARD;
inputKey[0].ki.wVk = 0;
inputKey[0].ki.wScan = 'A';
inputKey[0].ki.dwFlags = KEYEVENTF_UNICODE;
inputKey[0].ki.dwExtraInfo = 0;
inputKey[0].ki.time = 0;

inputKey[1].type = INPUT_KEYBOARD;
inputKey[1].ki.wVk = VK_RETURN;
inputKey[1].ki.wScan = MapVirtualKey(VK_RETURN, 0);
inputKey[1].ki.dwFlags = 0;
inputKey[1].ki.dwExtraInfo = 0;
inputKey[1].ki.time = 0;

inputKey[2] = inputKey[1];
inputKey[2].ki.dwFlags = KEYEVENTF_KEYUP;

SendInput(3, inputKey, sizeof(INPUT));

226 名前:デフォルトの名無しさん [2007/04/23(月) 18:01:42 ]
スクロールバーのサイズを、画面のプロパティで設定した値ではなくアプリ側で
任意に設定する方法はありませんか?
後、Vistaのスクロールバーのデフォルト値を教えてください。

227 名前:224 mailto:sage [2007/04/23(月) 19:15:41 ]
タイトルバーが100に収まりきらなかったのが原因ですた。スマソ。

228 名前:デフォルトの名無しさん [2007/04/24(火) 15:48:40 ]
Vistaのように右端に表示領域を確保して、その分デスクトップの作業領域を小さくしたいんですけど、どのように実装したらイイでしょうか。
(他のソフトのウィンドウ表示を最大化にしても、右端に確保した領域にかぶらないようにしたい)
以上です、よろしくお願いいたします。


229 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 16:37:32 ]
AppBarのことか?
SHAppBarMessageでググってみ

230 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 16:38:05 ]
>>228
OSが分からないと何とも言えないけど、Application Desktop Toolbarsじゃ駄目?



231 名前:デフォルトの名無しさん [2007/04/24(火) 18:01:09 ]
複数ウィンドウを作成したい場合は
どうすればいいのでしょうか

232 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 18:10:10 ]
単数ウィンドウを作るのと同じ手法を複数回繰り返してください。

233 名前:デフォルトの名無しさん [2007/04/24(火) 19:36:59 ]
>>232
なるほど
ありがとうございました!
(^O^)
あと複数の親ウィンドウをIDの用に管理する方法はあるでしょうか

234 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 20:23:13 ]
もどってくるHWNDで判るだろ?

235 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 20:55:13 ]
なんか涙でてきた

236 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 02:20:33 ]
ところで、Win32APIってなんですか?

237 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 02:51:51 ]
なんかいろんなものでてきた

238 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 04:55:21 ]
そういうことして楽しいと思ってるの?

239 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 05:04:35 ]
CreateWindow(TEXT("EDIT") , TEXT("文字") , WS_CHILD | WS_VISIBLE | WS_BORDER | ES_LEFT,
248 , 40 , 45 , 22 , hwnd , (HMENU)0 , ((LPCREATESTRUCT)(lp))->hInstance , NULL);

このエディットコントロールに表示される“文字”のフォントのサイズを小さくすることは出来るのでしょうか?

あと、SendMessage(hEdit, ES_READONLY, 0, 0);みたいな感じで、
目的のエディットコントロールを読み専用に変えたいのですが、↑のだと上手くいきません。
どうすればいいのでしょうか?


240 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 05:24:29 ]
フォント設定はWM_SETFONTかEM_SETFONTSIZE使う

読み専用のES_READONLYのES はEDITSTYLEのことであってメッセージではない
EM_SETREADONLYをSendMessageに渡す



241 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 07:35:47 ]
>>240
WM_SETFONTの方は少してこずりましたが、無事出来ました。
ありがとうございました。

242 名前:デフォルトの名無しさん [2007/04/25(水) 08:15:08 ]
ウインドウハンドルをhashtableみたいな構造に突っ込みたいのですが、
一意のキーとすべき値は何を使えばいいでしょうか。
hashtableは文字列をキーとして、値はポインタを渡すようにしています。
put(char* key, void* value)みたいにです。
ウインドウハンドルで一意となる値を文字列としてキーとして使いたいのです。
あとからウインドウハンドルからhashtable経由で値をとりたいからです。
ウインドウハンドルにはunsetという内容が入っているみたいですが、
つかうなと書いてあるWebサイトもあってどうしていいかわかりません。


243 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 08:22:01 ]
文字列じゃなくてHWNDをキーに使えばいいだろ。
どうしても文字列にしたければHWNDの値自体を文字列に変換するとか、
なんでその程度の知恵が無いんだ?

244 名前:242 [2007/04/25(水) 09:19:29 ]
>>243
回答、ありがとう。
HWNDの値自体とはアドレスのことをいっていますか?unsetの値自体をいっていますか?

245 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 09:57:34 ]
HWNDの値と言ったらHWNDの値だろ、アホかw

246 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 10:03:35 ]
class Hashtable {
put(char* key, void* value);
};

HWND hWnd = GetWindow(hogehog);
Hashtable h;
h.put((char*)hWnd, (void*)GetTitle(hWnd));


247 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 10:21:47 ]
いやいやいや

248 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 10:23:16 ]
キーに文字列しか使えない環境なら、sprintf とかでHWNDの数値を文字列にするとか

249 名前:デフォルトの名無しさん [2007/04/25(水) 11:12:27 ]
GetOpenFileNameでフラグにOFN_ALLOWMULTISELECT|OFN_EXPLORERを指定したとき、
選択したファイルの順序を逆に並べる方法は無いでしょうか?

現状、最後に選択したファイルが先頭に挿入されるようで、
これを最後に付加するようにしたいのです。
(アプリ側で逆にたどることは可能ですが、GetOpenFileName操作時の
ファイル名テキストボックスの見た目を前後逆にしたい)

環境はXPSP2です。よろしくお願いします。


250 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 13:03:38 ]
>>249
OFN_ENABLEHOOKでどうにかするしかないんじゃないかなぁ



251 名前:242 [2007/04/25(水) 14:22:33 ]
>>245-246
>>248

HWNDって、winnt.hで以下のように定義されているんですが、
int unusedをもつ構造体へのポインタではないんでしょうか?

#define DECLARE_HANDLE(name) struct name##__{int unused;}; typedef struct name##__ *name

HWNDを文字列にしたらアドレスが文字列としてとれるんだと思っているんですが、
間違えていますか?

252 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 14:45:22 ]
壮絶に違う
HWND ポインタの中身(大きさも含む)は謎

つか >>248 でいいじゃん
書かないとわからん? sprintf(buf, "%p", hwnd); とすれば? ってことだ

253 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 15:08:02 ]
デスクトップやコントロールパネルなどの
主要なシェルフォルダを指すGUIDのリストってどこかにないでしょうか?

254 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 15:52:11 ]
>>253
レジストリ

255 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 16:12:40 ]
>>253に便乗だけど
マイコンピュータとかコントロールパネルとかかもしれないpIDLがあるとき
CLSIDみたいな::{...}に変換する術ってないすか?


256 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 16:38:02 ]
SHGDN_FORPARSING

257 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 16:45:20 ]
>>250
ありがとうございます。調べてみます。

258 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 17:08:15 ]
サブクラスを使って、エディットコントロール内でEnterキーを押したら
メッセージボックスを出すようにしているのですが、その後、
エディットコントロール内で改行されてしまいます。
Enterを押したときにメッセージボックスだけを出して、
その後改行しないようにするにはどうすればいいのでしょうか?

259 名前:242 [2007/04/25(水) 17:17:16 ]
>>252
つきあってくれてありがとう。

sprintf(buf, "%p", hwnd);
ってやるとbufにはhwndのアドレスが入るとおもってるんですが間違いですか?
アドレスって再利用されて一意ではない気がするんです。

260 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 17:33:12 BE:69876566-2BP(222)]
>>259
>ってやるとbufにはhwndのアドレスが入るとおもってるんですが間違いですか?

間違いです。何のためのハンドルかと。



261 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 17:34:45 ]
エクスプローラもどきを作っています。
現在、アイコンをGetIconOfで取得しているのですが
こいつは該当フォルダの中のアイテムのアイコンしか取得できず、
デスクトップ自身のアイコンを取得することができません。

何か良い方法があれば教えてください。

262 名前:228 [2007/04/25(水) 17:35:02 ]
>229さん、230さん
レスありがとうございました。
頂いた情報で実装出来そうです、ありがとうございます。


263 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 17:35:24 ]
そもそもハンドルはポインタじゃないから、中身を気にしてはならんと思うんだが。

264 名前:242 [2007/04/25(水) 18:23:07 ]
>>260
>>263
考えてみました。
ハンドル=構造体へのポインタと勘違いしていました。

付き合ってくれた方、ありがとう。というか、すんませんでした。

265 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 18:28:23 BE:67935757-2BP(222)]
ハンドルが構造体へのポインタとして実装されていたとしても、わざわざ「ハンドル」
と読んでいるのは何のためなのかと。

266 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 18:31:33 ]
>>258をお願いします・・・m(_ _)m

267 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 18:47:48 ]
>>258
Enterキーを処理した後、EDIT本来のプロシージャに処理回してない?

268 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 18:53:30 ]
>>267
エディットコントロールのプロシージャの最後は

return CallWindowProc(DefInProc, hwnd, msg, wp, lp);

にしてます。これをどうすればいいのでしょうか・・・
return 0;とかにしてもエディットコントロール自体が消えてしまいます;;

269 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 19:02:14 ]
>>267
Enterキーの時だけ、プロシージャに処理を渡さないようにすればいい

270 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 19:02:28 ]
>>268
>Enterキーを処理した後



271 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 19:07:28 ]
SubclassProc(hwnd, msg, wparam, lparam)
{
switch(msg)
{
case WM_KEYDOWN:
if(wparam == VK_RETURN)
{
(処理)
return; // DefWindowProc()いらない
}
}
}

こういうことか?リターンキーの時だけ弾ければいいってこと?


272 名前:258 mailto:sage [2007/04/25(水) 19:07:29 ]
プロシージャはこんな感じになってます。処理の後はreturn 0;にしてますが
やはり改行されてしまいます・・・

LRESULT CALLBACK InProc(HWND hwnd , UINT msg , WPARAM wp , LPARAM lp) {
  switch(msg) {
  case WM_KEYDOWN:
    if(wp==VK_SHIFT){
      shift_flag = 1;
    }else if (wp == VK_RETURN && shift_flag==0) {
      MessageBox(hwnd, "ENTER", "ENTER", MB_OK);
    }else if (wp == VK_RETURN && shift_flag==0) {
      MessageBox(hwnd, "Shift+ENTER", "Shift+ENTER", MB_OK);
    }
    return 0;
  case WM_KEYUP:
    if(wp==VK_SHIFT){
      shift_flag = 0;
    }
    return 0;
  }
  return CallWindowProc(DefInProc , hwnd , msg , wp , lp);
}

273 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 19:15:58 ]
WM_CHAR

274 名前:258 mailto:sage [2007/04/25(水) 19:29:27 ]
WM_CHARにしてみたら文字の入力すら出来なくなったのですが・・・;;
きっと基本的なことなのでしょうけど、何時間も止まってると泣きたくなってくる・・・

275 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 19:31:19 ]
そりゃそうだよなぁ。

276 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 19:37:31 ]
>>258
if文をよ〜く見直してみろEnterキー以外もトラップしてるぞ

277 名前:258 mailto:sage [2007/04/25(水) 19:45:58 ]
>>276
Shiftの事でしょうか?Shift全部はずして、単純にif(wp==VK_RETRUN){}にしても
やはり同じ結果になりました。これは一体何がどうあghwrへあぃtjr

278 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 19:47:44 ]
>>277
トラップしないキーはreturn 0;しないでデフォルトプロシージャに渡すのだ。

279 名前:258 mailto:sage [2007/04/25(水) 19:54:15 ]
>>278
こういう事でしょうか?

LRESULT CALLBACK InProc(HWND hwnd , UINT msg , WPARAM wp , LPARAM lp) {

  switch(msg) {
  case WM_KEYDOWN:
    if (wp == VK_RETURN) {
       MessageBox(hwnd, "ENTER", "ENTER", MB_OK);
       return 0;
    }

  return CallWindowProc(DefInProc , hwnd , msg , wp , lp);
}


280 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 19:55:15 ]
>>279
それをWM_CHARでやる



281 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 20:00:15 ]
できました
みなさま本当にありがとうございました


282 名前:258 mailto:sage [2007/04/25(水) 20:02:42 ]
いえ、出来てません。文字の入力すら出来ないのですが・・・

LRESULT CALLBACK InProc(HWND hwnd , UINT msg , WPARAM wp , LPARAM lp) {

  switch(msg) {
  case WM_CHAR:
    if (wp == VK_RETURN) {
       MessageBox(hwnd, "ENTER", "ENTER", MB_OK);
       return 0;
    }

  return CallWindowProc(DefInProc , hwnd , msg , wp , lp);
}


283 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 20:10:21 ]
>>258
メッセージループのところにTranslateMessage(&msg);はあるか?

 // メッセージループ
 MSG msg;
 while(GetMessage(&msg, NULL, NULL, NULL)) {
  TranslateMessage(&msg);
  DispatchMessage(&msg);
 }

284 名前:258 mailto:sage [2007/04/25(水) 20:15:53 ]
出来ましたあああああああああ;;
caseの終わるところをreturn 0からbreak;に直したら出来ました;;
WM_CHARで捕まえて、全部return0にしてたせいで入力されないようになってたみたいです。。。
ありがとうございました

285 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 20:25:41 ]
>>279,282のプロシージャ
{ }の対応がおかしい気がするんだが・・・?

286 名前:デフォルトの名無しさん [2007/04/25(水) 21:28:59 ]
このような関数で、ドライブごとまるまるコピーしたいのですが、
BOOL CopyDirectory(LPCTSTR From, LPCTSTR To)
{
SHFILEOPSTRUCT TSHFileOpStruct;
ZeroMemory(&TSHFileOpStruct,sizeof(SHFILEOPSTRUCT));
MessageBox(NULL, From, To, MB_OK);
//構造体の初期設定
TSHFileOpStruct.hwnd = NULL; // 親ウインドウのハンドル
TSHFileOpStruct.wFunc = FO_COPY; // フラグ
TSHFileOpStruct.pFrom = From + NULL+ NULL; // 対象元パス
TSHFileOpStruct.pTo = To + NULL+ NULL; // 対象先パス
TSHFileOpStruct.fFlags = FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR; //フラグ
//実行する
if(SHFileOperation(&TSHFileOpStruct) != 0){
return FALSE;
}
if(TSHFileOpStruct.fAnyOperationsAborted == TRUE){
return FALSE;
}
return TRUE;
}

CopyDirectory("H:\\test", "C:\\test")
だと成功するのですが

CopyDirectory("H:\\", "C:\\test")

だと失敗します。
ドライブの中身をまるまるコピーすることはできないのでしょうか?
初歩的な質問かもしれませんが、よろしくお願い致します。

287 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 21:44:32 ]
pFromはあくまでもファイル名を指定するためのバッファらしいので
"H:\\*"みたいにワイルドカードを使うってのはダメ?

288 名前:デフォルトの名無しさん [2007/04/25(水) 21:50:56 ]
>>287
教えていただいた方法で解決できました!
結構長い間ひっかかっていたので、助かりました。
ありがとうございました。

289 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 22:40:16 ]
GUIアプリからコンソール用のアプリを影で動かし(て、その結果をエディタに送り)たいんですけど
そういうAPIってありますか?

290 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 22:44:12 ]
はぁ?



291 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 22:44:51 ]
無い

はい次

292 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 22:44:55 ]
あります

293 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 22:51:38 ]
ありますが、

はい次

294 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 22:52:22 ]
APIに関係することか、わかりませんがお願いします。

自己解凍書式によくあるような

> copy /b hoge.exe + datafile

でつくった hoge.exe から datafile の中身を取る
プログラムを作りたいのですがやり方を教えて頂けないでしょうか?

295 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 22:53:39 ]
*** main(char**arg,int argl) ...................................................

296 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 22:59:30 ]
>>294
「リソース」をキーワードに基本から勉強しなおしなさい

297 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 23:10:47 ]
copyで連結したものをリソースとして扱えるか?
俺にはイメージヘッダからイメージサイズを見て、
それを元にdataの先頭領域を求める方法になる気がする。
違ったらすまん

298 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 23:13:51 ]
copy /b hoge.exe + datafile + datafilesize

299 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 23:15:52 ]
ぐぐってみたらこういう方法だそうです

プログラムに4バイトのリソースを埋め込む。
そのリソースを読み込んでその値だけ、読み飛ばして自分自身を解凍するプログラムを作る。
何らかの手段で4バイトのリソースに自己解凍プログラムのサイズを書き込む。
自己解凍プログラムの後ろに実際のデータを書き込む。

300 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 23:18:20 ]
かなりコンパイラ依存な質問ですが・・・
FindNextFileがVisual C++ 6.0でちゃんと動くのにGCC(gcc version 3.4.5 (mingw special))でちゃんと動きませんorz
www.uploda.net/cgi/uploader4/index.php?file_id=0000012569.zip

test_findfile.c ソース
test_findfile_gcc.exe GCCでコンパイルしたもの
test_findfile_vc6.exe VC++6.0でコンパイルしたもの

VC++6.0でコンパイルしたものは、ちゃんと2つ目以降に見つかったファイルを表示します。
しかしGCCでコンパイルしたものは最初の1つ目しか表示しません。
MSDN見ても解決方法わからないし・・・



301 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 23:24:41 ]
>>289
名前なしパイプを使ってリダイレクト。

CreatePipe, DuplicateHandle,
CreateProcess(STARTF_USESTDHANDLESがヒント),
PeekNamedPipe, ReadFileなどの関数を使う。

待機関数を使ったプロセスの終了判定と、
PeekNamedPipeとReadFileの順序を巧く管理しないと止まるので注意。


じゃぁ、約束のおっぱいをうpしてね

302 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 23:26:03 ]
(・) (・)

303 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 23:29:15 ]
 D /     ∩___∩     \_WW/
 ・  ≪     | ノ      ヽ    ≫ D ≪
 V ≪    /  ●   ● |   ≫ ・ ≪
 ・  ≪    |  ///( _●_)//ミ   ≫V ≪
 D ≪   彡、   |∪|  、`\  ≫ ・ ≪
 ! ≪ / \   ヽノ /_> /  ≫ D ≪
   ≪ \|   ・    ・ / /   ≫ ! ≪
MMM\  |       / ̄     /MMM\
       |  /\ \
       | /    )  )
       ∪    (  \
            \_)


304 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 23:30:10 ]
>>300
ワイルドカード絡みなのかな?

下のコードをそれぞれのコンパイラでコンパイルして
「ちゃんと動かない」ときの引数を与えて比較してみればおk
#include <stdio.h>
int main(int argc, char *argv[]) {
int i;
for(i=1;i<argc;i++) printf("argv[%d]=%s\n", i, argv[i]);
return 0;
}

305 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 23:31:01 ]
ところでDVDってドメスティックバイオレンスオブダイナミカルなの?

306 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 23:32:05 ]
>>300
どのディレクトリに対して実行しても結果は同じですか?

307 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 23:35:58 ]
>>300
OSは?

308 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 23:36:35 ]
>>300
c:\directory\*
c:\\directory\\*
じゃねーの?

309 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 23:38:01 ]
>>300
ワイルドカードが展開されてるんだろ

310 名前:デフォルトの名無しさん [2007/04/25(水) 23:41:24 ]
見た感じFindNextFileが必ずゼロを返してるような動き。
一個だけ正しく見つけてあとはサヨウナラだな。



311 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 23:43:54 ]
FindFirstFile に渡される引数の内容(argv[1]) が違うから
表示させてみれば疑問は解決するはず

312 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 23:46:35 ]
そこで、ダブルクォーテーションですよ

313 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 00:24:23 ]
>>300
GCCに付属してるCRT_noglob.oをリンクすると解決するお

海外での似た質問と解凍:
www.cygwin.com/ml/cygwin/1998-11/msg00165.html
www.cygwin.com/ml/cygwin/1998-11/msg00235.html

314 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 00:48:10 ]
ぼ・・・僕ハッカー

315 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 09:54:11 ]
WTLでCToolBarCtrlを使ってツールバーを作っています。
manifestを指定してXPスタイルにしているのですが、
そうするとアイコンサイズと比べ、ボタンサイズが大きくなりすぎてしまいます。

どうしても小さくしたいのですが、SetButtonSizeを指定しても無視されてしまい
自動でサイズが決定されてしまいます。
ボタンのサイズを小さくしたいのですが、どうすればできますか。

316 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 10:07:41 ]
ビットマップを印刷する処理でカラープリンタに出力するとおk、なんですが、
白黒プリンタに印刷すると真っ黒画面(プリンタドライバのメモリ不足でよくおきるヤシ)となります。

Win32APIで、印刷時にビットマップを描くとき、白黒プリンタを意識する指定ってありましたっけ?


317 名前:デフォルトの名無しさん [2007/04/26(木) 10:09:59 ]
ShellExecuteで起動したソフトが起動しきったかどうかを確認する方法を教えてください

318 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 10:14:26 ]
起動しきった、の定義は?
メッセージループが回りだしたでいいのかな

319 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 10:28:17 ]
CreateProcessのほうがいいかもね

320 名前:デフォルトの名無しさん [2007/04/26(木) 10:34:52 ]
>>318
起動してから表示されるまでに時間がかかるソフトがあるので
画面が表示されたらと思っていました。
>>319
ShellExecuteよりShellExecuteExのインスタンスハンドルで何とかなりそうでしょうか?



321 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 10:39:08 ]
316もヨロ

322 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 10:43:13 ]
>>317
FindWindow

323 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 10:44:44 ]
>>320
ShellExecuteはシェルに命令投げるだけなので実際の起動処理は全部シェルがやる。
だからShellExecuteで起動したプロセスの処理を監視するならフックとかの回り道が必要になるし、
CreateProcessに比べて面倒極まりないから>>319の言うとおり
起動したプロセスの監視をしたいならCreateProcessがよろし。


324 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 10:48:44 ]
>>316
正解なのかどうなのかわからんが…

printerなDCに直接 StretchBlt したときに真っ黒出力されたことがあった。
printer と同じ解像度のメモリDCに一旦StretchBlt して、
そのメモリDCをprinterなDCに BitBlt で回避できた

325 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 10:52:13 ]
>>317
ShellExecuteExでfMaskにSEE_MASK_NOCLOSEPROCESSを指定すると
起動したプロセスのハンドルがhProcessに返されるので
WaitForInputIdleを呼べばいいかと。

326 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 10:55:40 ]
>>316
GetDeviceCapsで出力APIがサポートされているか調べるとか・・・かな

327 名前:デフォルトの名無しさん [2007/04/26(木) 10:57:36 ]
>>322
予めタイトルとクラス名がわかってればいいんですけどね

>>323
CreateProcessですとPROCESS_INFORMATION構造体のhProcessハンドルで
状態をみるとおもうのですが、どのAPIで状態を確認することができるのでしょうか?


328 名前:316 mailto:sage [2007/04/26(木) 10:59:45 ]
サンクス>>324 >>326

そう、その辺りの話ですよね。

自分も、StrechBlt → BitBlt → StretchDrawDIB と変えてきて、
あーこれで解決したーと思ってたんですが、
カラービデオプリンターはおk、白黒ビデオプリンターで真っ黒、見たいな現象。

>GetDeviceCapsで出力APIがサポートされているか調べるとか・・・かな

kwsk

StrechDrawDIBが動作しないとか???

329 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 11:02:13 ]
白がちゃんとした白じゃないから黒くなるのでは
StrechBltMode変えたら

330 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 11:05:53 ]
>>328
GetDeviceCapsでRASTERCAPS調べて
RC_STRETCHBLTビットが立ってれば、
StreathBltを使って良いとか、そういう話し

あと、StretchDrawDIBってMSDNにはないけど・・・?
ググっても、自作っぽい関数にしか引っかからないぞw



331 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 11:24:47 ]
>>327

>>325


332 名前:316 mailto:sage [2007/04/26(木) 11:26:43 ]
ラジャー>>329

やってみます。あ、でもプリンタ使えるの昼から。

ゴメンナサイ>>330

実体はこれです。
 ↓
procedure TBitmapPrinter.StretchDrawDIB(Canvas: TCanvas; r: TRect);
var
OldMode: Integer; // StretchMode のセーブ
begin
OldMode := SetStretchBltMode(Canvas.Handle, COLORONCOLOR);
StretchDIBits(Canvas.Handle,
r.Left, r.Top,
r.Right - r.Left, r.Bottom - r.Top,
0, 0, BitmapInfo^.bmiHeader.biWidth,
BitmapInfo^.bmiHeader.biHeight,
ImagePtr, BitmapInfo^, DIB_RGB_COLORS, SRCCOPY);
SetStretchBltMode(Canvas.Handle, OldMode);
end;

333 名前:デフォルトの名無しさん [2007/04/26(木) 11:29:35 ]
>>331
すみません、見落としてました・・・
>>325
ありがとうございます。
それでちゃんとできました。


334 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 12:16:27 ]
>>333
WaitForInputIdleはコンソール不可なので注意ね。

335 名前:316 mailto:sage [2007/04/26(木) 12:21:16 ]
つまり、
>OldMode := SetStretchBltMode(Canvas.Handle, COLORONCOLOR);
を、

COLONCOLORから変えればよいんだ。

BLACKONWHITEとWHITEONBLACKって何で2つもあるよ。。。

336 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 12:25:35 ]
>>335
>BLACKONWHITEとWHITEONBLACKって何で2つもあるよ。。。

ANDとORの違い。

337 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 12:26:51 ]
>ANDとORの違い。
普通の印刷ではどちらを使うんですか?

338 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 12:32:03 ]
>>337
普通の印刷はどうかしりませんが、

BLACKONWHITEは 0 & 1 = 0で黒が残る
WHITEONBLACKは 0 | 1 = 1で白が残る

ただそれだけ。

339 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 12:37:49 ]
まあ両方やってみればわかる
モノクロビットマップにStrechBltして画面表示してみるのもいいかもな

340 名前:デフォルトの名無しさん [2007/04/26(木) 13:21:11 ]
>>334
了解しました!
ありがとうございます!!



341 名前:デフォルトの名無しさん [2007/04/26(木) 15:39:58 ]
あるウィンドウを親として、新たに作った子ウィンドウを貼り付けたい(親側をドラッグすると、子ウィンドウもそれに追随するような)のですが、どのように実装したらよいかアドバイスいただけませんでしょうか。
よろしくお願いいたします。


342 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 15:41:52 ]
CreateWindowでWS_CHILD

343 名前:316 mailto:sage [2007/04/26(木) 16:22:55 ]
SetStretchBltModeは関係無いみたいです。

真っ黒に出たり、ちゃんと出たり、不安定。

344 名前:316 mailto:sage [2007/04/26(木) 16:53:35 ]
連続印刷した場合に、真っ黒になります。

345 名前:316 mailto:sage [2007/04/26(木) 16:57:43 ]
連続投稿すみません。

自アプリが印刷した結果がWinのスプールにまだ残っているかどうか、判断する方法はありますか?

346 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 17:18:50 ]
具体的にそうなるコードを出してみては
そもそも真っ黒になるのはプログラムが悪いんだから

347 名前:316 mailto:sage [2007/04/26(木) 17:30:29 ]
自己解決しました、お騒がせしてすみません。

348 名前:316 mailto:sage [2007/04/26(木) 18:30:21 ]
347は偽者です。

コードは332です。

349 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 18:46:54 ]
>>348
>>332には、印刷時のページ更新とかないだろ

350 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 19:51:02 ]
StartPageしたあとに毎回SetStretchBltModeしてない
とかいう落ちか?



351 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 22:30:22 ]
いままでの流れ。

>>あーや
・質問
  ビットマップを印刷する処理で
   カラープリンタ→出力おk
   白黒プリンタ→真っ黒画面
  なんで?

>>324 → あーや
  プリンタのDCに直接StretchBltした時、真っ黒出力経験あり。
  キャッシュDCを作成してStretchBlt→BitBltの提案。

>>326 → あーや
  GetDeviceCapsでプリンタ能力も調べろと提案。

>>あーや
  >>324の方法でカラーはおk。白黒プリンターはやっぱりダメ。
  >>326のいうGetDeviceCapsに初耳。

>>329 → あーや
  白≒黒より、StrechBltModeの設定を推測。

>>330 → あーや
  GetDeviceCapsのRC_STRETCHBLTフラグの意味を教える。


352 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 22:30:53 ]
(つづき)
>>あーや → 329
  昼飯はトンカツ定食にしようか悩みつつ返信。

>>あーや → 330
  GetDeviceCapsを理解。

お昼だけにソースをさらしてみる。

>>あーや
  SetStretchBltModeのBLACKONWHITEとWHITEONBLACK気付く。
  なお、ここで返信した336,338,339は、実は奇遇にも同じ町内。

>>あーや
  とりあえず、カラープリンタ、白黒プリンタ出力おkっぽいが、
  連続印刷した場合、白黒プリンタがやっぱりダメ。
  なぜか、StrechBltModeは関係ないと断定。
  そして、あーやの興味はスプールへ・・・

>>あーや → 347
  少しカチンと来る。

>>349-350
  解答発表?

353 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 01:55:35 ]
ダイアログボックスを作って、初期のフォーカスをダイアログボックス内のエディットコントロールに
SetForcusで配置したいのですが、ダイアログボックス内のエディットコントロールのハンドルが
分からないので出来ません。というよりも、ダイアログボックス内のウィンドウにはどのように
ハンドルをつければいいのでしょうか?

354 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 02:14:25 ]
GetDlgItem

355 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 02:21:49 ]
ダイアログベースでBS_DEFPUSHBUTTONを指定すると
「Enter」を押した時、ボタンを押下できるけど普通にリソースを
使わず(CreateWindow等)で作成したボタンに対して「Enter」は反応を
示さないんだけど。これはどうやって解決すればいいんでしょうか?

因みに「Enter」に反応するのはIDOKでそれ使ってもいいんですが、
できれば自分が指定したコントロールIDに変更できればいいなと思って
探してDM_SETDEFIDなるものを発見してSendMessage使って試したんだけど
やっぱりうまくいかなかった。これはダイアログにしか通用しないのかな。

因みにSendMessageはこんな感じ(WM_CREATE内で使ってる)
SendMessage(hWnd, DM_SETDEFID, (WPARAM)ID_CONTROL, 0L);

356 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 03:20:26 ]
>>354
ありがとうございました。無事フォーカス設定することができました。
しかし、エディットコントロールにフォーカスを持っていったら何故か
ボタンをクリックしても動作しないようになりました(Enterキーでは動作する)。
フォーカス外すと普通にボタンの機能は復活します。これは何が原因なのでしょうか?

357 名前:デフォルトの名無しさん [2007/04/27(金) 08:01:56 ]
付箋紙ソフトのように、たくさんのウィンドウを表示してもタスクバーに何も表示されないようにするには
どうしたらいいのでしょうか?

358 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 08:03:22 ]
>>356
Enterキー以外の処理(else側)はスルーしてるんじゃないの?


359 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 08:05:06 ]
>>357
いろいろ手法はあるけど?
統括管理ソフトを、時計横のタスクバーに駐在させるとか・・・

想定するターゲットを詳しく

360 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 08:07:38 ]
>>357
っ不可視の親Window
っWS_POPUP



361 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 08:12:02 ]
>>359ー360
試してみます!

362 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 08:29:07 ]
>>355
IsDialogMessageは?

363 名前:355 mailto:sage [2007/04/27(金) 12:23:56 ]
>>362
ダイアログでの作成じゃない場合(メインウィンドウ)の
時どうやってダイアログと同じように実現すればいいのかを知りたい。


364 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 12:41:48 ]
ウィンドウプロシージャでEnterキーをトラップすりゃいいんじゃねぇの?

365 名前:355 mailto:sage [2007/04/27(金) 12:43:36 ]
やっぱそれしかないのかな。
IDOKはデフォルトでEnter拾ってくるから
そのIDOKの設定を別IDに変更できるんじゃないかと思ってたんだが

366 名前:355 mailto:sage [2007/04/27(金) 12:44:47 ]
因みにDM_GETDEFIDやDM_GETDEFIDはダイアログプロシージャにしか
意味無いんだよね?普通にメインウィンドウでやっても何の効果もなかったから

367 名前:デフォルトの名無しさん [2007/04/27(金) 14:03:22 ]
342さんレスありがとうございます。
>342 CreateWindowでWS_CHILD
試してみたんですが、うまくいかず色々調べていたら、
親のウィンドウの拡張アトリビュートに「WS_EX_LAYERED」が立ってました、
このフラグを消すと正しく動くことからこのフラグが問題かと思うのですが、
「WS_EX_LAYERED」が立ってるウィンドウに対し「WS_CHILD」のような子ウィンドウを作ることは出来ませんでしょうか
重ね重ね申し訳ございませんが、よろしくお願いいたします。


368 名前:デフォルトの名無しさん [2007/04/27(金) 16:49:28 ]
仕様書嫁

369 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 16:58:05 ]
そもそも正しく動く、動かないとはどういうことか

370 名前:316 mailto:sage [2007/04/27(金) 17:13:14 ]
PCのメモリを1ギガにしたら解決しました。
フォトプリンタってのは、普通のプリンタよりメモリを食うものなんでしょうか。

それからStrechBltModeは無意味というか無関係ですね。
プリンタドライバも流石にStrechBltModeが間違っててもエラーを起こさないようにしてんじゃないですか?

>>>あーや → 347
>  少しカチンと来る。
 ↑
だから347はニセモノです。



371 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 17:15:51 ]
ニセモノが出るって事は、キミのやりとりに問題があるってことだよ

372 名前:デフォルトの名無しさん [2007/04/27(金) 18:12:50 ]
質問があります。
UNICODE版のプログラムを作成していますが、
部分的にANSI版のAPIを使用したい箇所があります。
それで関数名の後に直接”CreateWindowA”みたいにAとかWを付けると
ANSI UNICODEの呼び出しの切り替えができるようなことが本に書かれて
いるのですが、直接Aをつけても関数がみつからないとコンパイラから
エラーがでます。
教えてください。よろしくお願いします。

373 名前:372 [2007/04/27(金) 18:17:30 ]
includeファイルの位置変更したら解決しました.
アホな質問してすみませんでした

374 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 18:27:18 ]
>>363
IsDialogMessageは、ダイアログでない普通のウィンドウも対象にできる。

375 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 20:10:24 ]
>>370
>PCのメモリを1ギガにしたら解決しました。
その場しのぎとしてはセーフだが、
調査したほうが良いよ。

ドライバのver upで能力差とか、
ソースのメモリDC解放してないとか、
どっかで使いまわしているとか、
BitBltを使った初期化(WHITENESS、BLACKNESS)とか
ビットマップをダンプしてみるとか・・・



376 名前:371 mailto:sage [2007/04/27(金) 21:54:30 ]
 

377 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 23:30:08 ]
WH_KEYBOARD_LLはコマンドプロンプトに通用するですか?

378 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 00:40:51 ]
>>377
cmd.exeでDOS窓を開いたときの動作の話なら、通用した(今試した)

379 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 08:10:27 ]
とん

380 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 08:26:04 ]
こつ



381 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 11:09:22 ]
フォルダのデフォルトのアイコンって取得できますか?


382 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 11:10:15 ]
はい

383 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 11:23:52 ]
>>382
教えてくれよん

384 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 11:30:47 ]
>>381みたいな聞き方をするからBOOLで返されちゃうんだよ

385 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 11:44:05 ]
>>381に対する一番正確な答えになっているしな。

386 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 12:14:18 ]
自己解決したような気がします
SHGetFileInfo と SHGFI_SYSICONINDEXあたりすか

387 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 12:43:05 ]
>>372
CreateWindowはCreateWindowExのマクロに過ぎないので
CreateWindowExAにする必要がある

388 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 13:06:45 ]
>>381に便乗質問だけど

SHGetFileInfo に空文字渡すとフォルダのアイコンが返ってくるけど、
これでいいんですか?

389 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 16:07:46 ]
おまえらほんと捻くれてるよな

390 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 16:16:36 ]
必要な戻り値の型推論ができないだけ



391 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 16:25:28 ]
GetMessageの戻り値みたいに融通効かせてください><

392 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 18:08:30 ]
キャストしろ

393 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 18:34:01 ]
僕を神にしてください

394 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 19:57:54 ]
キャストしろ

395 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 20:02:55 ]
delete[]すればいんじゃね?

396 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 20:06:27 ]
洞窟の出口で秘宝を奪うべく待ってればいいと思うよ

397 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 20:18:21 ]
APIもせめて同じような定数は列挙型に纏めるとかしたらすっきりするんじゃないの?

398 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 20:25:50 ]
SDKとAPIを混同するな

399 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 20:41:09 ]
397の文脈ではAPIでもいいと俺は思う。
関数なんかだけではなく、それを呼び出すために必要な定数や型もひっくるめてAPIと言うのだと思う。

400 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 20:47:12 ]
勝手な定義を脳内で作って知ったかするのはやめておけ。



401 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 20:51:55 ]
ApplicationPrigramInterfaceと
SoftwareDevelopmentKit
の違いがわかりません先生

402 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 20:54:31 ]
ヘッダファイル自体やライブラリや関連ツールなどがSDK
ヘッダファイルやタイプライブラリなどで定義されている内容がAPI
だと思っていたが実際のところ正しい定義なんて考えたこともなかったな

403 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 21:04:06 ]
そもそもどこまでがAPIなんて誰もそんなことを定義していない。

C/C++以外からAPIを利用する場合は列挙型も何も存在しないし、
変なところで勝手に決めてしまうと他の言語から使うときに、
API以外の何か謎な物を使っていることになってしまう。

404 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 21:06:31 ]
他の言語であらかじめされている定義が無いということね。

405 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 21:24:56 ]
あれだ、web系のアホが紛れ込んでるのかもしれん。
「APIと言えばwebサービスのインタフェースを指すようになった」
らしいぞ。

406 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 21:42:36 ]
整数も渡せるだろ

407 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 21:52:13 ]
JAVAのinterfaceには定数(もどき)を定義できるし、定数を含めて問題あるまい。

というか既に定数無いか?

408 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 21:57:42 ]
>>401
Prigram

409 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 22:14:08 ]
何か美味そう

410 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 23:19:52 ]
画面に表示しないプログラムを作りたいのですが
時計の横にアイコンを登録することは出来ますか?



411 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 23:26:49 ]
>>410
できる。

412 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 23:27:08 ]
タスクバー?
可能です。

413 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 23:33:31 ]
GT-Rは5台持ってますよ
R32がVspecIIのガンメタとNISMOの白
R33がVspecのシルバー
R34がMspecのホワイトとVspecII Nurのベイサイドブルー

414 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 23:39:56 ]
ま、俺のGTOには敵わないだろうけどな。

415 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 01:51:20 ]
NAだけどな。

416 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 13:28:15 ]
>>411
だからなんでみんな戻り値がboolなんだよw

417 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 13:31:21 ]
出来るって分かれば自分で調べるだろ

418 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 13:55:07 ]
S_OKだけなら猿でも返せる

419 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 14:00:51 ]
>>410
メインウィンドウを非表示で作ればいい。
あとはタスクトレイ アイコンとかでググれ。

420 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 14:02:41 ]
なんかこの質問・回答にデジャヴを感じる



421 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 14:06:05 ]
間欠泉のようなもんだから

422 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 16:00:03 ]
Shell_NotifyIconだったっけか


423 名前:422 mailto:sage [2007/04/29(日) 16:02:09 ]
かすかな記憶を頼りに書いてみて調べてみたらビンゴだった
俺の記憶力もまだ捨てたもんじゃないな

424 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 19:47:52 ]
ワレのドタマカチ割って脳みそストローでチューチュー吸うたろか!

425 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 19:53:13 ]
自分の頭を割るというのもなかなか豪儀だな

426 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 19:55:41 ]
なめとんかいわれ

427 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 19:58:29 ]
貝割れ大根を嘗めているのか。あれは舌にピリッと来るよな。
しかし倒置法とはなかなか巧みじゃないか。

428 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 20:15:36 ]
じょんだらりん

429 名前:デフォルトの名無しさん [2007/04/29(日) 20:18:33 ]
これをUNICODEビルドしたときにメッセージボックスに化けないで表示するには
どうしたらいいでしょうか?
XP, VC6です。

  HANDLE   hFile;
  TCHAR    buf[10];
  DWORD    dwSize;

  hFile = CreateFile(
        _T("C:\\aaa.txt"),
        GENERIC_READ,
        FILE_SHARE_READ,
        NULL,
        OPEN_EXISTING,
        FILE_ATTRIBUTE_NORMAL,
        NULL);
  ReadFile(hFile, buf, 3, &dwSize, NULL);
  CloseHandle(hFile);

  buf[3] = _T('\0');
  
  MessageBox(NULL, buf, _T(""), MB_OK);


430 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 20:21:13 ]
MultiByteToWideChar



431 名前:429 mailto:sage [2007/04/29(日) 20:21:39 ]
テキストファイルはSJISで中身は abc と入っているだけです。

432 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 20:31:04 ]
"abc"のバイナリ表現はShift_JISやUS-ASCIIと、UTF-16とでは異なる。

433 名前:429 mailto:sage [2007/04/29(日) 20:42:04 ]
読み込むファイルはSJIS固定

MultiByteToWideChar
変換元がPCSTR
変換後がPWSTR

これはひょっとしてUNICODE版でビルドしてる場合だけ
MultiByteToWideCharを使って変換をかけるって事ですか?

434 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 20:44:56 ]
いいえ

435 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 20:45:04 ]
ファイルをダウンロードしたときなど、完了すると「チロン!」という音が鳴りますが、
この音を鳴らすapiがあれば教えてください。

436 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 20:45:40 ]
MCI

437 名前:435 mailto:sage [2007/04/29(日) 20:48:57 ]
>>436
ありがとうございました!

438 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 20:51:59 ]
ttp://www.int21.co.jp/pcdn/vb/noriolib/vbmag/9802/mci/
ttp://www.ne.jp/asahi/nagoya/ahomaro/builder/cpb-059.html
ttp://wisdom.sakura.ne.jp/system/winapi/media/
ttp://www13.plala.or.jp/kymats/study/multimedia.html


439 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 20:52:42 ]
>>433
はい

440 名前:439 mailto:sage [2007/04/29(日) 21:15:28 ]
ありがとうございました。



441 名前:429 mailto:sage [2007/04/29(日) 21:16:01 ]
ちがう。429でした。

442 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 23:13:32 ]
>>426
はい

443 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 00:13:19 ]
ウモンドウ作らずにWM_〜受取れますか?

444 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 00:14:58 ]
はい。ウィンドウをお作りいただけば可能です。

445 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 00:19:52 ]
ウィンドウ要らないなら非表示にしとけばいい。

446 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 00:34:00 ]
WM_〜 = window message

447 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 00:40:02 ]
一瞬普通に読んでしまったが、ウモンドウってwww

448 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 01:05:23 ]
umondou?
umondow?


449 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 04:46:30 ]
タスクトレイのアイコンの画像を取得する方法ってありませんか?
もしくは特定のアプリのトレイにあるアイコン描画をフックしたいのですが。



450 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 08:22:59 ]
SetWindowsHookExのWH_KEYBOARD_LLはAltとかミ田キーも弄れますか?



451 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 08:25:50 ]
>>450
可能。つか、自分でやってみれ。
想像以上に簡単だから

452 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 08:57:32 ]
ミ田キーワロタ

453 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 09:54:19 ]
Runasで起動したIEのウェブページのハンドルの入手の仕方おしえてください。

454 名前:デフォルトの名無しさん [2007/04/30(月) 10:17:54 ]
少しでも画面を有効に使うためにメニューバーの高さを極限まで細く
したいのですが、win32apiで可能でしょうか?
高さの取得はGetSystemMetricsで出来るのはわかったのですが、
設定がどうやっったらよいものか分かりません。どなたかやり方を教えて頂けませんでしょうか。

455 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 10:29:34 ]
0じゃいかんの?

456 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 10:31:29 ]
>>452
「ウェブページのハンドル」とは何ぞや?


>>454
レジストリに書いてWM_SETTINGCHANGEをブロードキャスト?


457 名前:452 mailto:sage [2007/04/30(月) 10:34:23 ]
>>456
IEで表示したサイトのページをFindWindowAでゲットした値のことです。

458 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 10:37:24 ]
>>454
SystemParametersInfo で SPI_SETNONCLIENTMETRICS

他のアプリケーションにも影響を与える操作なんだが、自アプリケーションで制御するような代物なんかな?
# デスクトップ - プロパティ で設定するのを自動化したいのか?
# それはそれで、迷惑な造りかもしれんが…

459 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 11:08:25 ]
>>454
オーナードロー

460 名前:デフォルトの名無しさん [2007/04/30(月) 12:06:48 ]
bccでDLLを作成してそのDLLを
LoadLibrary(TEXT("HOOKTEST.dll"));で読み出したら
DLLエントリーポイントが実行されたみたいなのだが
暗黙的に読み出したらDLLエントリーポイントが実行されないんだが
これは普通なのか?それとも何か設定が間違っているのか?



461 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 12:11:24 ]
あと
HINSTANCE hInstDLL;
#pragma data_seg(".sharedata")
HWND hWndtgt=NULL;
HHOOK hhook;
#pragma data_seg()

BOOL WINAPI DllEntryPoint(HINSTANCE hInstance,DWORD dwNotification,LPVOID lpReserved){
MessageBox(NULL,"DLL START","START",NULL);
hInstDLL=hInstance;
return TRUE;
}

int makehook(void){
hhook=SetWindowsHookEx(WH_MOUSE,(HOOKPROC)mousehookproc,hInstDLL,0);
if(hhook==NULL){
MessageBox(NULL,"MAKE HOOK ERROR","ERORR",MB_OK);
return 0;
}

return 1;
}

makehookを実行側で読み出すとhhookが絶対にNULLになるらしくフックがうまくいかない
LoadLibraryで明示的に呼び出してもうまくいかない
デバッカで見てみるとhInstDLLがnullになってるみたいなのだが何故?

462 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 12:12:13 ]
その、「実行されない」ってのはどこから解ったんだ?

463 名前:デフォルトの名無しさん [2007/04/30(月) 12:12:46 ]
>>462
MessageBoxを入れてみました

464 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 12:15:28 ]
どうしてボーランドの言語仕様ってあそこまで見苦しいの?
クラスや関数名なんて汚らしいしIDEも不細工極まりない
C++にしろパスカルにしろ目障りで読む気すらしないね。

465 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 12:17:41 ]
ボーランド見苦しい
pc11.2ch.net/test/read.cgi/tech/1067474140/

466 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 12:21:43 ]
bccの#pragmaにdata_segなんてないぞ。

467 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 12:25:11 ]
>>466
WINDOWSプログラミングスパイスって本にのってたからそのまま使ってみたんだが、だめだったか・・・

468 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 12:33:59 ]
msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdllpro/html/_win32_DllMain.asp
をみて、DllMain内で複雑な処理はできいないと理解しよう。

469 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 12:37:36 ]
_tDllMainな

470 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 12:38:38 ]
>>443
PeekMessageをスレッドの最初に呼んでおけば
そのスレッドにメッセージキューが作られるから
あとはスレッドメッセージで処理すればいい。
送信はPostThreadMessageで
受信はGetMessageのMSG構造体のHWNDが0のやつが
スレッド宛のメッセージ。



471 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 12:43:44 ]
BOOL WINAPI _tDllMain(HINSTANCE hInstance,DWORD dwNotification,LPVOID lpReserved){
hInstDLL=hInstance;
return TRUE;
}

修正

472 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 12:49:24 ]
ドラえもーん、これガソリンはレギュラーでも走るの?
いやガソリンでは無理だよ。もっとパワーのあるやつじゃないと。
プルトニウムだよのび太君。

473 名前:デフォルトの名無しさん [2007/04/30(月) 13:27:45 ]
BOOL WINAPI _DllMain(HINSTANCE hInstance,DWORD dwNotification,LPVOID lpReserved){
hInstDLL=hInstance;
makehook(hInstance);
return TRUE;
}

intmakehook(HINSTANCE hInst){
hhook=SetWindowsHookEx(WH_MOUSE,(HOOKPROC)mousehookproc,hInst,0);
if(hhook==NULL){
MessageBox(NULL,"MAKE HOOK ERROR","ERORR",MB_OK);
return 0;
}

return 1;
}

にすると問題ないみたいなんだけど・・・
グローバル変数にコピーできない
なぜだ?

474 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 13:45:13 ]
WinAPIの質問じゃないような気がしてきた

475 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 13:47:07 ]
とりあえずフック抜いてインスタンスハンドルだけコピーするDLLでも作ってろ

476 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 13:51:36 ]
窓は作らずに(非表示ではなく)
DLLの関数からShell_NotifyIconで登録してGetMessageでメッセージを受取れますか?

477 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 13:53:06 ]
不可能

478 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 13:54:27 ]
Shell_NotifyIcon から タスクトレイアクションを invoke できるようにするために窓が必要

479 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 14:00:08 ]
なんか最近この質問多いな

480 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 14:05:29 ]
間欠泉のようなもんだから(2回目)



481 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 14:09:08 ]
タスクトレイ と フック は源泉なのでしょう

482 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 14:24:49 ]
フックは多少ややこしいから分からんでもないけど…

トレイアイコンの方は潔癖症に近くねぇ?
いいじゃねーかウィンドウ一つくらい

483 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 14:30:09 ]
メッセージ通知用ウィンドウなんてたくさん使われているよ。DDEとかシステム周りでもね。

484 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 14:30:28 ]
そもそも「窓作らずメッセージ受け取れますか?」ってやってみればすぐわかるじゃねーか

485 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 14:40:48 ]
それよりもまずテンプレに沿ってMSDN読んで来い

msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shell_notifyicon.asp

486 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 14:52:16 ]
EnumWindowとかで窓一覧を取得するとあきれるほど非表示ウィンドウだらけだからな。
いまさら一つ増えたところで・・

487 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 14:55:10 ]
Winsock の Async の面倒見るのも見えない Window でやりくりしてるな

488 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 14:57:17 ]
まあ落ち着けよ

489 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 15:06:42 ]
WindowがなくてもHWNDもらう方法はないの?

490 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 15:08:13 ]
>>475
やってみた
MainDllないではグローバルインスタンスハンドルにコピーできてるみたいだけど
makehookを呼び出すとNULLになってるみたい



491 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 15:09:38 ]
逆に考えるんだ

makehook内で参照してるのがグローバル変数ではないのではないかと考えるんだ

492 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 15:13:20 ]
>>476
HWND_DESKTOP名義で登録してHOOK

493 名前:477 mailto:sage [2007/04/30(月) 15:13:39 ]
>>489
メッセージ送信先のウィンドウをデスクトップにでもしておいて
グローバルフックで定義したメッセージを引っ掛ければできなくはない

ウィンドウ作らない分フックにリソース消費するけどねw

494 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 15:15:07 ]
久々に綺麗なケコ-ン

495 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 15:28:18 ]
ウィンドウズ自体の欠陥ですか

496 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 15:35:31 ]
いいえ

497 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 16:50:13 ]
                  /    /  . :   ヘ/!    \
                 //   / . /: : ∠、ム|  .    ヽ
                / ィ   .  / :/|: |: :/   ノ: 人:     ハ
                  i/ . : . | .|{‐ |=ヘ{‐'! ` =ナ左、 V:|:   .ハ
                 / | :|: : |: :八 | o ヽ|  ´ o ∨/:   i |
                |:i: : . 、 |{ ヘ! .彡 ,  ミ、  /メ|  . ハ|
                 ヽ|ヽ: : .`| .三´ _____ ̄彡'/ . ://リ
                    > .\ |ニ. 二、,二.ヽ| /: //
                      / : : ハ`` V: : : : :ン∠イ : : ヽ ァハハ八八ノヽノヽノヽノ \ノ \ / \ / \
                  / . : :/ : \ \――/ /: :|: : : . :ヽ
                   /  . : : : :ィ: > ` ̄ イ: : 、 、、: : : : .ハ
                   /  . :/i/ "´ |  ̄ | `^``゙^\:、 : . ハ
                i/ . :/    へ ノ   __ Vニ、   ヽi、:、: i
                 ハ i:/  ∠.... iく__ 彡⌒ソ   > ‐ 、 ヽi、!
                  V / ̄、 ̄\\  ∠ニ -‐_厂 ヽ.  `
                  /  |: レ  ̄ ̄` 厂| ̄,r ̄-  、: |.  i
                /   .|/     厂 | '´     V:  丶
              「 ̄ ̄`ヽ/. : : : . . /  ハ  . : : : : : . V/ ̄`ヽ
              ,ノ二二.ヽ {. : : : : : :∧ヽ/∧: : : : : : : : :} . ニニヽ
            < ̄ィ―- 、ヽV: : : : : :\//: : : : : : : : ノ//. --t、ヽ
             `7    ヽ.ハ: : : : : : : :`´|: : : : : : : : : {彡''´   |/




498 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 17:14:45 ]
>>473
そもそもDllMainでuser32.dllの関数を呼び出してはいけない(もちろんMessageBoxも)

499 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 17:15:45 ]
>>492-493
そっちのほうがよっぽど気持ち悪いんだが潔癖症の方々はウィンドウを作らないこと自体
が目的化してるんですかね。健康のためなら死んでもいいみたいな。
>>489とか見てると釣りのようにも思えるけど

500 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 18:02:07 ]
やってみることに意味があるんだろう
無いけど



501 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 18:07:31 ]
ShellExecuteでファイルを開くと新しいウィンドウで開かれますが、
既存のウィンドウ内に表示させることは可能でしょうか?
具体的にはswfなどのファイルを、BMPをペタペタ貼るような感じで使いたいのですが・・・

502 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 18:29:52 ]
ActiveXでFlashコントロールをホストすればー

503 名前:デフォルトの名無しさん [2007/04/30(月) 19:22:13 ]
っていうかWindow作るのダサいし

504 名前:デフォルトの名無しさん [2007/04/30(月) 20:09:44 ]
MSXML6.0でXMLをロードするときに関数にIXMLDOMDocumentをポインタで引き渡すと値が返ってきません。
関数の内部での値はとれているのですが。
こういう仕様なのでしょうか?

OKの場合

CComPtr<IXMLDOMDocument> xmldom;
if(CoCreateInstance(CLSID_DOMDocument, NULL, CLSCTX_INPROC_SERVER, IID_IXMLDOMDocument, (void**)&xmldom) != S_OK){
return;
}

xmldom->put_async(VARIANT_FALSE);
xmldom->load(_variant_t(FileName), &result);
if(result != VARIANT_TRUE){
return;
}


505 名前:デフォルトの名無しさん [2007/04/30(月) 20:11:04 ]
NGの場合

if(LoadXML(FileName,xmldom) == false){
return;
}

bool LoadXML(const char* FileName,IXMLDOMDocument *xmldom)
{
VARIANT_BOOL result;
if(CoCreateInstance(CLSID_DOMDocument, NULL, CLSCTX_INPROC_SERVER, IID_IXMLDOMDocument, (void**)&xmldom) != S_OK){
return false;
}
xmldom->put_async(VARIANT_FALSE);
xmldom->load(_variant_t(FileName), &result);
if(result != VARIANT_TRUE){
return false;
}
return true;
}

506 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 20:18:34 ]
引数でポインタを返したければ、その引数はポインタのポインタである必要がある、って
いうCの基本のお話なのかな?

507 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 21:09:37 ]
×bool LoadXML(const char* FileName,IXMLDOMDocument *xmldom)
○bool LoadXML(const char* FileName,IXMLDOMDocument **xmldom)

508 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 21:16:44 ]
まあ、ポインタ参照にしてもいいけどネ

509 名前:デフォルトの名無しさん [2007/04/30(月) 22:21:03 ]
>>491
その可能性もあるけど
そうするともうどうしようもなくないか?
>>498
へー

510 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 22:46:27 ]
#define STRICT
#include <windows.h>
#include <windowsx.h>
#include "ResHOOKTEST.h"
#include "HOOKTEST.H"
static HWND hWndmain;
static HINSTANCE hInst;

LRESULT CALLBACK mainDlgProc(HWND hDlg,UINT message,WPARAM wparam,LPARAM lparam){
switch(message){
case WM_COMMAND:
if(wparam==HOOKON){
makehook();
return TRUE;
}
if(wparam==HOOKOFF){
unhook();
EndDialog(hDlg,TRUE);
}
default: return FALSE;
}
return TRUE;
}
int PASCAL WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);
UNREFERENCED_PARAMETER(nCmdShow);
hInst=hInstance;
LoadLibrary(TEXT("HOOKTEST.dll"));
DialogBox(hInstance,"MYDLG",NULL,(DLGPROC)mainDlgProc);
return 0;
}



511 名前:デフォルトの名無しさん [2007/04/30(月) 22:48:04 ]
あああああああもうだれかたすけてえええええええええええええ

512 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 22:48:21 ]
page11.auctions.yahoo.co.jp/jp/show/reviews?aID=n50365155

513 名前:504 [2007/04/30(月) 23:08:00 ]
>>506
ポインタで引き渡しているのに、ポインタのポインタで渡さなければならないのですか?
すみません。この辺理解がよくできてないです。

>>507
変更してみたのですが、
xmldom->put_async(VARIANT_FALSE);
の箇所のメンバ指定の方法がよくわかりません。
こういう感じで変更してみたのですが、コンパイルエラーが無くなりませんでした。
*(xmldom)->put_async(VARIANT_FALSE);

APIよりC言語の基本のほうを勉強したほうがよさそうですね・・・

514 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 00:38:58 ]
>>513
(*xmldom)->put_async(VARIANT_FALSE);
'->'の方が優先順位が高い。
もちろん、CoCreateInstanceの方も (void**)xmldom に直してあるよな。

後CLSID_DOMDocumentだと、MSXML3以前のインスタンスが返されていると思う。
MSXML4以降の機能を使いたければ、個別のCLSIDを指定する必要がある。
MSXML6なら、CLSID_DOMDocument60って感じで。詳細は英語版MSDN。

515 名前:491 mailto:sage [2007/05/01(火) 02:07:50 ]
>>510-511
今思ったんだけどさー

別にhInstanceをグローバル変数にコピーしなくても
GetModuleHandle(”dll名”)に置き換えれば良いんじゃないの

516 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 02:16:32 ]
さすがジョースター卿w
発想の転換だなw

517 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 04:02:47 ]
>>515
だめです

518 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 08:58:43 ]
>>473 DLL側本体は int makehook(HINSTANCE)
>>510 利用側は makehook();

根本から間違ってねーか?

519 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 09:36:11 ]
UrlDownloadToCacheFileでWeb上の頻繁に更新されるファイルを取得した場合、
キャッシュ済みのデータが戻ってきたりで必ずしも最新のファイルでない場合がよくあるのですが、
強制的に更新させる方法はないのでしょうか?

自分でソケット使って書くのマンドクセ('A`)

520 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 09:42:18 ]
ファイルを一度削除してから再度実行すれば?



521 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 10:05:39 ]
#include <windows.h>
#define EXPORT extern "C" __declspec(dllexport)
HINSTANCE hinst;
BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD dwDllMainEvent,LPVOID lpvReserved){
if(dwDllMainEvent==DLL_PROCESS_ATTACH)
hinst = hinstDLL;
return TRUE;
}
EXPORT int func(void){
char buf[15];
wsprintf(buf,"%d",hinst);
MessageBox(NULL,NULL,buf,MB_OK);
}

dllにして外部から呼び出すとインスタンスハンドルはコピーされている
460=461がコード内で妙なことしてるとしか思えない

522 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 10:07:34 ]
VC買え

523 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 10:14:31 ]
Windowsの窓ありきな設計思想に問題があるんじゃないかな。

524 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 10:19:36 ]
static HMODULE g_hModule = NULL;

BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
g_hModule = hModule;
break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}

525 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 10:20:46 ]
>>523
非表示の窓を作れないorやたら面倒なら確かに問題があるかもな

526 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 10:21:02 ]
>>510
どこでGetProcAddressしてるの?

527 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 11:21:16 ]
GUIを必要としないのに非表示の窓を作るのは倫理的に間違っている。

528 名前:デフォルトの名無しさん [2007/05/01(火) 11:22:50 ]
知らないならレスするな

529 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 11:26:22 ]
GUIが必要だからタスクトレイに表示するのでは( ̄ー ̄)

530 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 11:39:23 ]
>>527
ネットワークサービスだけ立ち上がればいいのに、GUIでしか起動できないWindowsは間違っている。
だからCUIのみでも使えるLinuxでも使えば?



531 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 11:53:53 ]
クッキー焼いてみたの、ちょっと味見してくれない?
勘違いしないでね、別にあんたの為に作ったんじゃないんだからね。

532 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 12:15:12 ]
Longhorn ServerはついにGUIレスモードが

533 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 12:22:11 ]
そもそもサービスは・・・

534 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 12:39:43 ]
>>531
わっふるわっふる

535 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 13:33:10 ]
>>532
当然タスクトレイも使えないわけだが
ウィンドウはいらないけどタスクトレイは必要なんて頭のおかしい要求する奴以外は
問題ないわな

536 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 14:28:36 ]
タスクトレイのアイコンでクリック連打するとクリックした回数に応じて
他アプリを立ち上げるランチャーなんてどうだろう

537 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 14:33:31 ]
つクイック起動

538 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 15:17:38 ]
ppmフォーマットの画像を読み込ませてウィンドウに表示したいのですが
どうしたらいいですか?
LoadImageだとppmは読めないので困ってます

539 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 15:20:20 ]
ppmをDIBに変換すればいいんじゃね

540 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 15:23:14 ]
ppmはグレイスケールの画像で、fscanfで独自に読み込んで
るんですけど、そのDIBには頑張れば変換出来そうですか?



541 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 15:27:33 ]
できるけど、そもそもLoadImage使おうとしたのは何なんだ

542 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 15:28:31 ]
CreateDIBSection → BitBlt のコース
WM_PAINT で SetPixel ぐるぐる回すコース

543 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 15:40:40 ]
LoadImageで読み込めたら表示も楽に出来ると
思ってました・・・
CreateDIBSectionってやつで頑張ってみようと思います

544 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 15:46:10 ]
Susie Plugin とか使うとか
// 懐かしい響きだな

545 名前:デフォルトの名無しさん [2007/05/01(火) 18:30:14 ]
SQLConfigDataSourceでMySQLをODBCに登録する方法を教えてください

546 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 18:36:53 ]
OOの話でよく、
「OOはデータと操作とカプセル化しちゃって、その部品を使うこと」
みたいなこと書いてあるの見ることあるけど、
これって構造化の話だよな?

547 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 18:49:47 ]
>>546
構造化と言うと、普通はDijkstraの「gotoやめれ」でしょ。OOよりだいぶ前。

548 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 19:00:35 ]
OO はカプセル化が基本ではあるが、
ポリモーフィズムが一番の肝だと思うんだぜ。

549 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 19:22:09 ]
>>518
>>473はためしに書き直してみただけ

550 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 19:32:46 ]
>>527
不合理ではあるが、HWND_MESSAGE なんてのもあるな。



551 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 19:53:39 ]
ネ申

552 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 21:24:43 ]
>547
構造化は、TopDownとBottomUpと複合設計って事だよ。

553 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 21:32:30 ]
>>545
SQLConfigDataSourceでODBCにMySQLを登録する方法を教えてください
の間違いじゃね?

これ、C:\Program Files\Common Files\ODBC\Data Sourcesフォルダ下に
ファイル置くだけじゃなかった?

554 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 21:42:39 ]
>>519
亀レス気味だが、
IBindStatusCallback::GetBindInfoが呼び出された時に、
BINDF_GETNEWESTVERSIONフラグ返せばいいんじゃね?
使ったことないから保証はしないが。

555 名前:553 mailto:sage [2007/05/01(火) 21:46:58 ]
>補足
それでも、素でDSNファイルを作るんなら、
以下のサイトで接続文字列をチェックし、
msdn2.microsoft.com/ja-jp/library/ms130822.aspx
lpszAttributesを作成する。
各パラメータはNULLでつなぎ、最後だけNULLを2つ繋ぐ。
(参考:msdn.microsoft.com/library/en-us/odbc/htm/odbcconfigdsn.asp?frame=true
lpszDriver は、"MySQL ODBC 3.51 Driver"かな?

んで、
SQLConfigDataSource(NULL, ODBC_ADD_SYS_DSN, lpszDriver, lpszAttributes);
ではだめか?

556 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 22:09:45 ]
>>521
#include <windows.h>
#include "ResHOOKTEST.h"
#include "HOOKTEST.h"

LRESULT CALLBACK mainDlgProc(HWND hDlg,UINT message,WPARAM wparam,LPARAM lparam){
switch(message){
case WM_COMMAND:
if(wparam==HOOKON){
func();
return TRUE;
}
if(wparam==HOOKOFF){
EndDialog(hDlg,TRUE);
}
default: return FALSE;
}
return TRUE;
}

int PASCAL WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);
UNREFERENCED_PARAMETER(nCmdShow);
/*LoadLibrary(TEXT("HOOKTEST.dll"));*/
DialogBox(hInstance,"MYDLG",NULL,(DLGPROC)mainDlgProc);
return 0;
}

でよみだしたけどやっぱり無理だお

557 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 22:55:40 ]
VK_KANAが立っているのに

558 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 23:01:15 ]
しかし飽きもせず、おまえらフック大好きだよなー

559 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 23:09:41 ]
しかしフック以前の段階で詰まってる罠

560 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 23:26:28 ]
僕ハッカー!



561 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 23:27:36 ]
僕バッカー

562 名前:デフォルトの名無しさん [2007/05/01(火) 23:28:14 ]
俺チンコ

563 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 23:47:57 ]
フックはひとつのDLLで二つとかセット出来ますか?

564 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 00:26:04 ]
『日本初・民営刑務所 囚人が「ソフト開発」』だってよw

ある意味俺らは囚人だww

565 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 00:31:03 ]
>>563
聞く前にまずやってみろ
SetWindowsHookExのパラメータ見ればわかりそうなもんだが

>>556
もうめんどくせーから
www.uploda.net/cgi/uploader4/index.php?file_id=0000012798.zip
でDLL作れ


566 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 08:02:53 ]
初心者ですみません。
gdi+のライブラリの中身を解析したいのですが、可能でしょうか?
それともうひとつ、図々しいですが
jpgファイルの構造を教えてくれるところはないですか?
DIBのピクセルビットを操作するようにjpgのピクセルを操作したいのです。
お願いします。

567 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 08:13:28 ]
>>566
スレ違いだと思うが・・・


jpeg header formatでググる

Code Projectを漁る
www.codeproject.com/bitmap/iptc.asp
などなど

OleLoadPictureFileでDCに乗せるとかいろいろ

568 名前:デフォルトの名無しさん [2007/05/02(水) 08:29:10 ]
アタッマきた

569 名前:567 mailto:sage [2007/05/02(水) 08:49:01 ]
俺が先に云うね

567にカチンときたので教えません。 バーカ!

>>568
これでいい?

570 名前:566 mailto:sage [2007/05/02(水) 10:07:04 ]
>>567
ありがとうございます。
試してみます。



571 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 10:39:54 ]
>>566
GDI+は、ソース公開されていないよ。
逆アセンブルするんだとか言うなら誰も止めはしないが、せいぜいライセンスは気にかけておけ。

JPEGは、画像を圧縮して記録していて、解凍しないと画像は取り出せない。
仮に編集するとしたら、編集終了後にJPEGとして保存するために再び圧縮することになる。



572 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 10:42:05 ]
不可逆の圧縮に対して解凍というのは違和感有りまくり

573 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 10:55:00 ]
>>572
同意。

今の時代は質よりも、
聞こえればいい、見えればいいの時代なのね

574 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 10:55:19 ]
JPEGはハフマンの強さを見せ付けられる圧縮技術。

575 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 10:59:50 ]
フーリエ先生も自分の考えてたことが数百年後に役に立つと予想出来たであろうか

576 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 11:17:38 ]
>>572
冷凍食品は不可逆でないのか?

577 名前:デフォルトの名無しさん [2007/05/02(水) 11:36:04 ]
それは屁理屈

展開でいいじゃん

578 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 11:51:53 ]
素材そのものではないのに
素材の名前をつけた料理には違和感ありまくり

579 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 11:53:06 ]
タイヤキ

580 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 11:56:26 ]
ミスタードーナツのメニュー



581 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 12:06:29 ]
可逆だろうが不可逆だろうが圧縮に対して解凍は違和感あり
展開・復元でいいでしょ
不可逆に対して復元は語弊あるけど

582 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 12:12:55 ]
解凍って言い回しはアーカイブファイルでないとしっくり来ない

まあ意味は伝わるからどうでもいいけどね

583 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 12:21:52 ]
まあな。文脈さえ読めればおk
宮廷に仕えてるわけでもないしねw

584 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 12:38:11 ]
解凍って言い回しはLHarc(現LHAの前身)の頃に作者の吉田さんが使い始めたんだよね。
当時のパソ通コミュで(それこそvoidも含めてw)多くのエンジニアからやめろと言われたにも関わらず。
吉田さんが自粛してくれていればこんなことには……

585 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 12:46:48 ]
>>578
Jリーグカレーとか?

586 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 14:14:38 ]
おかわり

587 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 15:06:28 ]
どうでもいい

588 名前:デフォルトの名無しさん [2007/05/02(水) 15:44:05 ]
>>555
ありがとうございます。
こんな感じでやってみたのですがダメでした・・・・
どこが悪いでしょうか

BYTE *drv = "MySQL ODBC 3.51 Driver";
BYTE att[512];
::wsprintf( &att[0], "DSN=%s\0", "test1" );
::wsprintf( &att[::lstrlen(att)+1], "Server=%s\0", "testserver" );
::wsprintf( &att[::lstrlen(att)+1], "UID=%s\0", "root" );
::wsprintf( &att[::lstrlen(att)+1], "PWD=%s\0", "1234" );
::wsprintf( &att[::lstrlen(att)+1], "DATABASE=%s\0\0", "testdb" );
::SQLConfigDataSource( NULL, ODBC_ADD_SYS_DSN, drv, att );


589 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 15:52:35 ]
文字列を文字列として渡す関数に \0 をつけるのは無意味
よって、\0 も \0\0 も意味がない。
それ全部はずした上で、配列に直接\0入れてやれ

590 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 15:58:53 ]
>>589
意味はないけど間違いでもない。
wsprintfで入れてくれるから後から入れるのはもっと無意味



591 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 16:01:34 ]
>>590
あのさ、直接入れるのは\0\0と2つ重ねる話なんだけど

592 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 16:04:11 ]
あと、strlenだと、最初の\0 間でしか数えないから、sprintfの戻り値を足してやれ

593 名前:デフォルトの名無しさん [2007/05/02(水) 16:04:22 ]
HINSTANCE hLib = LoadLibrary("xxx.dll");
を実行すると、下記のエラーが出力されます。

error C2664: 'LoadLibraryW' : 1 番目の引数を 'const char [12]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。


解決方法を教えてください。

参考ページ:ttp://homepage2.nifty.com/DSS/VCPP/DLL/dlldynamiccall.htm
環境:WindowsXP, Visual C++ EE 2005


594 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 16:09:52 ]
>>588
最初のstrlen(att)+1以外のstrlen(att)+1が全て間違っている。
それでは長さが全部同じになるから、先頭アドレスは足していかないと

595 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 16:09:59 ]
>>593
HINSTANCE hLib = LoadLibrary(_T("xxx.dll"));

で、どうか?

596 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 16:17:18 ]
>>595

ありがとうございます。
読み込めました。


597 名前:デフォルトの名無しさん [2007/05/02(水) 16:48:27 ]
初歩的な質問で申し訳ありません。

VC++でダイアログベースのプログラムの作成中です。
プロシージャ内でクラスを宣言して使用したいのですが、エラーになります。
たとえば以下のようなプログラムのがあるとします(Fooクラスが別途存在します)

LRESULT CALLBACK DlgProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
 switch (msg) {
  case WM_INITDIALOG:
   Foo foo;
   return FALSE;
  case WM_HOGE:
   foo.hoge();
  default:
   return FALSE;
 }
 return TRUE;
}

この場合、以下のエラーが出力されます
 'foo' の初期化が 'case' ラベルによって行われませんでした。

調べた結果、WM_HOGE内でFooクラスの宣言がなされてない(初期化がされていない)のでエラーになっている、ということはわかりました。

ここで質問なのですが、Fooクラスの宣言というのは一般的にどこで行うべきなのでしょうか?
プロシージャの最初のswitchの外で宣言してしまってもいいものなのでしょうか。

598 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 16:51:41 ]
>>588
DriverとAttributesは以下で判断

@.ODBCドライバを落とし、インストールする。
 dev.mysql.com/downloads/connector/odbc/3.51.html

A.コンパネから“管理ツール”の“データソース(ODBC)”を開く。
B.ファイルDNSタブから[追加]ボタンを押す・
C.データソースMySQL ODBC 3.51 Driverを選択し、[次へ]を押す。
D.データソース名に"MAROYUKI"と入力し、[次へ]を押す。
E.とりあえず完了させる。
F.次にConnecter/ODBCダイアログが開くので、必要情報を代入し[OK]を押す。
G.\Program Files\Common Files\ODBC\Data SourcesフォルダにMAROYUKI.dsnができる。
H.MAROYUKI.dsnをテキストエディタで開き、lpszDriverとlpszAttributesに一致するか確認。

599 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 16:52:15 ]
LRESULT CALLBACK DlgProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
 switch (msg) {
  case WM_INITDIALOG:
   {
     Foo foo;
   }
   return FALSE;
  case WM_HOGE:
   foo.hoge();
  default:
   return FALSE;
 }
 return TRUE;
}


こうすればいいがー

600 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 16:54:30 ]
>>594
こんなのSQLConfigDataSource()を呼ぶ所でattの512バイトがどうなってるのか見ればすぐわかるのにね。



601 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 16:54:37 ]
しまった!
↓のcaseでfooつかっとるかこれ!
んじゃ、外に定義でいいんじゃね?

602 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 16:55:07 ]
>>599
それは、case WM_HOGE でfooが使えないべ

>>597
switchの外でいいよ。
case WM_HOGE の時に Foo foo を通過してないまま foo を使うことになるべ。

603 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 17:00:29 ]
フォールスルー考えてのことならいいんだが
期待しているのは static のような気がする

604 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 17:06:56 ]
要は、そのfooをどこでどう使いたいか、どういう仕様か、によりけりだな。

605 名前:597 [2007/05/02(水) 17:07:02 ]
レスありがとうございます。

LRESULT CALLBACK DlgProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
 Foo foo; // ←switchの外で宣言
 switch (msg) {
  case WM_INITDIALOG:
   return FALSE;
  case WM_HOGE:
   foo.hoge();
  default:
   return FALSE;
 }
 return TRUE;
}

というプログラムで期待通りの動作を確認しました。
ありがとうございました。

606 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 17:07:48 ]
うーむ、INIT_DIALOGはなんだったんだろうw

607 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 17:44:03 ]
レンジのアイコンだから解凍で良いだろ

608 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 17:54:55 ]
蒸し返すなw

609 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 18:02:20 ]
>>607
アホかい。
解凍と言う用語があったから、電子レンジのアイコンが作られたに決まっておろうが。

>>584
吉田じゃなくて吉崎だな。

610 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 18:11:15 ]
石化なんて表現もあったからなw



611 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 18:18:52 ]
俺:「ファイルの圧縮で、反対の言葉が解凍ってのはどうかと話題がでてるが、
    姉ちゃんならどういう言葉が妥当だと思う?
姉:「うーん、レンジでチンして解凍みたいだから、解チンってのはどう?」
俺:( ゚д゚)ポカーン



612 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 18:21:16 ]
つまらん

613 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 18:22:28 ]
圧縮の対義語は伸張やろが!

614 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 18:59:27 ]
圧縮解凍って言葉が昔から対になってんだから小さい事気にすんな
日本語して意味がおかしくて気に食わないならpack、unpackって言え

615 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 19:12:26 ]
圧縮/伸張、compress/decompressでFA。

616 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 19:39:26 ]
>>614
おいおい、昔って言ったって、吉崎某が使い始めてから未だ20年経ってないぞ。
#あ、充分昔かw

617 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 19:45:45 ]
DB関係の作った事ないし詳しくないからとんでもなく見当違いな事言ってるかもしれないけど教えてくれ。
APIでDB触れるのってODBCだけ?oo4oとかADOとかDAOとかAPIとして持ってないのか?


618 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 20:04:43 ]
符号化の結果縮むのが圧縮。
符号化の結果伸びるのが伸長。
復号化が解凍。

じゃないのか?

619 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 20:38:55 ]
>>617
何を聞きたいのかよくわからん
それらは最終的にODBC使うんじゃなかったっけ

620 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 21:04:09 ]
エンコード/デコードで



621 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 21:39:49 ]
>>616
実際にはもっと昔から使われていた。
それ以前にはスタンダードと言えるほど広まっているツールが
なかったからLHA発祥という誤解が定着してしまっただけだ。

622 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 21:57:53 ]
っYZ1

623 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 22:09:52 ]
LHA は圧縮だけじゃなくて書庫の機能も持っているから、展開が妥当だと

624 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 22:37:24 ]
>>619
そうだったのか。いや俺も実際何を聞きたいのかよくわからないんだがw

つまりODBCAPI以外にDBを触れるAPIがあったら知りたかった

625 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 22:52:48 ]
oo4oもADOもDAOも、みな関数と言う形ではAPIを持っていないと思う。

626 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 23:02:01 ]
oo4oなつかしいなw

627 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 23:11:18 ]
>>611
俺が「それはカユイちんこみたいだな」って言ってたって言っておけ
あと「俺のチンコが痒いです」とも言っておけ

628 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 23:32:08 ]
>>585
うぐいすパンとか?

629 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 23:35:39 ]
うぐいすパンはうぐいす入ってるだろ

630 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 23:51:47 ]
東京ばな奈とか?



631 名前:デフォルトの名無しさん [2007/05/02(水) 23:58:26 ]
JETはどうした

632 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 00:04:46 ]
だからコンパイルエラーはWin32APIとはなんも関係ないっつーの

633 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 04:08:24 ]
>605
static つけないと呼び出されるたびに初期化されるんじゃないの
まあ動くならいいけど今後のこともあるし

634 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 04:19:50 ]
static 必要っぽい気はするな。
WM_INITDIALOG で new してユーザ領域にそのポインタを置いて
それを使うともっといいんじゃないかとは思うけど。
同時に複数起動する必要がないならいいけど。

635 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 04:28:26 ]
WM_PAINT内で
BeginPaint〜EndPaintを二回以上やると
2回目からの描画内容が画面に出ないんですけど
どうしてですか?

636 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 04:35:46 ]
EndPaint で更新すべき領域をクリアしてしまうんじゃない?

637 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 08:17:23 ]
フォアグラウンドのIMEの状態を調べてIME_CMODE_ROMANがない場合VK_KANAを有効にしたいのですが。
チェックするタイミングはキーフックとタイマーのどちらが良いでしょうか?

638 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 08:46:24 ]
>>637
その解法は、両方どつぼりそうな予感。

639 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 08:49:04 ]
入力対象が確定していれば、
そいつのWM_SETFOCUSメッセージ時じゃだめか?

640 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 11:48:30 ]
状態が変化する前に、処理すればいいのに



641 名前:デフォルトの名無しさん [2007/05/03(木) 11:53:57 ]
WM_PAINTのタイミングで描画しています
ウィンドウを大きくするときは再描画されるのですが小さくするときはされません
どちらでも再描画されるようにするにはどうすればよいでしょうか?

642 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 12:08:16 ]
>>641
もう少しくやしく。
もしかしたら、違う要因かも知れないから。

643 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 12:09:51 ]
WS_HREDRAW/WS_VREDRAWとか?

644 名前:641 mailto:sage [2007/05/03(木) 12:28:08 ]
>>642
最大化ボタンを押したりウィンドウの右下をドラッグしてウィンドウを大きくした場合、
それに連動してウィンドウ内の画像が書き換えられます。
そのときにcase WM_PAINT:を通過していることをMESSAGEBOXを表示させて確認しました

最大化から元に戻す場合やウィンドウの右下をドラッグしてウィンドウを小さくした場合、
ウィンドウ内は再描画されません
(同様にMESSAGEBOXで確認しました)


645 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 12:28:47 ]
>>643
MSDNやGoogleを検索しましたがなかなか情報がでてきません
関連資料あればお願いします

646 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 13:03:47 ]
>>645
CS_HREDRAW CS_VREDRAW

647 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 13:08:19 ]
>>644
WM_PAINT描画部さらせる?

648 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 13:14:26 ]
>>647
LRESULT WINAPI MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
    switch( msg )
    {
        case WM_DESTROY:
            Cleanup();
            PostQuitMessage( 0 );
            return 0;

        case WM_PAINT:
            MessageBox(hWnd, "ok", "check", 0);
            Render();
            ValidateRect( hWnd, NULL );
            return 0;

    }

    return DefWindowProc( hWnd, msg, wParam, lParam );
}


649 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 13:26:03 ]
エクスプローラの縮小版表示で独自の画像形式を表示させたいんだけど、
どうやったら出来ますか?

650 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 13:27:39 ]
>>649
独自の画像形式とは?
自分が考えたオリジナルフォーマット?




651 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 13:32:41 ]
>>648
ソースあげ

652 名前:649 mailto:sage [2007/05/03(木) 13:33:52 ]
>>650
自分が考えたフォーマットもありますし、RLAなどの標準で表示されないフォーマットもあります。


653 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 13:34:55 ]
>>649
IExtractImage を実装してレジストリに登録

654 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 13:41:28 ]
>>649

>>653の補足
msdn.microsoft.com/msdnmag/issues/0600/w2kui2/

655 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 13:52:42 ]
>>641
WM_SIZE で InvalidateRect すれば?

656 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 13:57:26 ]
>>655
WM_PAINTをWM_SIZEに書き換えたところうまくいきました

相談にのっていただいた皆様本当にありがとうございました

657 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 14:03:31 ]
WM_SIZE でレンダリングしたのか。
それっていいのか?
というか、WM_PAINT は処理しないのか?

658 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 14:03:42 ]
>>656
乙。
連休を楽しめ。

659 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 14:06:00 ]
>>657
WM_SIZEでInvalidateRectをコールし、
WM_SIZE時の範囲を更新範囲に追加したんお

660 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 14:09:06 ]
レンダリング?



661 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 14:14:02 ]
>>659
おk。

>>660
>>648

662 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 14:18:35 ]
レスどうも

>>639
入力中の英和混在入力のモード切替に対応したいので
WM_SETFOCUSじゃ無理なんです。

663 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 14:44:44 ]
>>637
>フォアグラウンドのIMEの状態を調べてIME_CMODE_ROMANがない場合
>VK_KANAを有効にしたいのですが。
>チェックするタイミングはキーフックとタイマーのどちらが良いでしょうか?

>>662
>入力中の英和混在入力のモード切替に対応したいので
>WM_SETFOCUSじゃ無理なんです。

エスパーじゃないんで要点を詳しく。
現状の具体的な問題点と、その解法にIMEをもってきた理由を特に。
(難解が平易に変わるかも)


664 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 15:00:16 ]
>>661
どこがレンダリング?w

665 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 15:20:42 ]
つ[辞書]

666 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 15:29:50 ]
>>664
Render ってのが見えないのだろうか。

667 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 15:31:24 ]
【他動-14】 《コ》
〜をレンダリングする、
〔画像{がぞう}などのデータを〕実際{じっさい}に描画{びょうが}する、
〔三次元{さんじげん}のオブジェクトを〕二次元{にじげん}の画像{がぞう}にする
◆データを解釈・計算して視覚的に表示すること。

・ Different browsers render HTML differently. ブラウザによって HTML のレンダリングは異なります。

668 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 15:37:01 ]
話の流れを読まずに、文字の綴りだけをあげつらった揚げ足取りなんだから
そんなに反応することないのに・・
ちょっと前にも、こういう質問とは本来関係ないことで脱線しなかったか?

669 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 15:38:32 ]
おや、本当だ
Render()見落としてたわ・・・・


670 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 15:40:20 ]
>>667
広義には与えられたデータを元に視覚表示すること全てレンダリングだけど
広く一般にレンダリングと言ったら3Dモデルのレンダリングのことを指すのが言葉の難しいところだ



671 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 15:44:47 ]
HTML レンダリングもよく使うと思うけど。

672 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 15:45:57 ]
>>663

簡単に言えば、
「窓使いの憂鬱」と言うソフトにカナロックON/OFFで
キーマップを切り替える機能があるんですけど。
IMEの英和混在入力を使うとずれるんですねこれが。
原因は、IME_CMODE_ROMANとVK_KANAがシンクロしないからなんで、
グローバルフックかけて外部から梃入れしようかなと。


673 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 15:53:07 ]
>>671
表示全てをレンダリングと言うよりは使うとは思うけど
それも結局ソッチの道の人がほとんどだしさ

まぁ、どうでもいいことだと思うけどw

674 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 16:30:38 ]
アタシのことでけんかしないで!

675 名前:649 mailto:sage [2007/05/03(木) 16:31:19 ]
>>653-654
サンクス
これからやってみます

676 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 16:37:13 ]
>>672
開発は終わってるんだな・・・
これソース公開してないかい?

677 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 16:42:37 ]
>>672

sourceforge.net/project/showfiles.php?group_id=5403
ソースはここみたい。

ある程度処理を読んで解析した上で、対処した方がいいかもね。

678 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 17:00:08 ]
hook.cpp
n.m_isKanaLockToggled = !!(GetKeyState(VK_KANA) & 1);

これを

HWND hWnd = GetForeGroundWindow();
ImmGetContext(hWnd);
ImmGetConversionStatus(hImc, &dwc, &dws)
n.m_isKanaLockToggled = (dwc & IME_CMODE_JAPANESE) && (dwc ^ IME_CMODE_ROMAN);
ImmReleaseContext(hWnd, hImc);

VS2003でないから試せないけど。

679 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 17:07:34 ]
おーいXOR…

680 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 17:50:06 ]
n.m_isKanaLockToggled = (dwc & IME_CMODE_JAPANESE) && (dwc & ~IME_CMODE_ROMAN);



681 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 17:54:23 ]
&~でも^でもどっちでもよくね?
ダメな理由があるなら別だけど

682 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 18:27:44 ]
っ どっちもだめ

683 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 18:54:37 ]
>>681
XORとNOT&ANDが同じ動作とでも思ってるの?

684 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 18:55:51 ]
CPUの中身は全部XORの組み合わせ

685 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 19:16:48 ]
>>683
もちろんです

686 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 19:19:09 ]
00001000 ^ 11111111 = 11110111 TRUE
00001000 ^ 11110111 = 11111111 TRUE

687 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 19:20:14 ]
>>685
これは すごい ゆとり

688 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 19:23:27 ]
10以外の位取りはゆとりで教育課程から消えたけど
ビット演算も学校で教えてたっけ?

689 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 19:29:01 ]
ビット演算まではなかったと思う。

690 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 19:29:24 ]
学校で習ったかどうかなんて関係ない。



691 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 19:32:11 ]
工業乙

692 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 19:34:31 ]
どっちかのbitが立ってることを確認するために

if(hoge & 0x000000C0)

みたいな書き方出来ると思うのですが

両方のbitが立ってることを確認したければ

if(hoge & 0x000000C0 == 0x000000C0)

って書くしか方法ないですか?


693 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 19:42:07 ]
hoge & 0x000000C0 & 0x000000C0がある

694 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 19:43:01 ]
if((hoge & 0x000000C0) & 0x000000C0)

695 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 19:43:38 ]
全部不正解

696 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 19:44:36 ]
00001000 ^ 11111111 = 11110111 TRUE
00001000 ^ 11110111 = 11111111 TRUE

00001000 &^ 11111111 =
00001000 &^ 11110111 =
にするとどうなるの?

697 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 19:46:55 ]
>>690
ゆとり教育なんか学力の低下に関係ないと言いたいわけですね。

698 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 19:50:50 ]
マスクすれ

699 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 19:52:41 ]
プログラムの勉強の前に情報技術基礎から勉強する事を勧めたいね

700 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 19:54:48 ]
>>691

高専の専攻卒で悪かったな



701 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 19:54:54 ]
こうするんだよ

if(!((hoge & 0x000000C0) ^ 0x000000C0))


702 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 19:58:01 ]
if((hoge & 0x00000080) && (hoge & 0x00000040))

703 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 19:59:30 ]
>>680
これだろ

n.m_isKanaLockToggled = (dwc & IME_CMODE_JAPANESE) && ~(dwc & IME_CMODE_ROMAN);

704 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 20:00:44 ]
何で皆向きになってるんだwwwwwwwwwww血だなwwwwwwwwwそんな俺もwwwwwwwwwwww

705 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 20:01:03 ]


~→!

706 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 20:01:52 ]
>>678-704
バカが!!!

if(1)

これだろ

707 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 20:02:39 ]
>>685
久々に開いた口が塞がらないぜ

708 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 20:02:54 ]
定数が複数あるのが美しくないな。

if(~(hoge | ~0x000000C0))

こうだろ。

709 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 20:03:30 ]
【高速化】ビット演算 0x02
pc11.2ch.net/test/read.cgi/tech/1158367586/

710 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 20:04:35 ]
>>708
お前の美しいという言葉に全米が泣いた
だがそのコードはとても美しいとは思わない

これが美しいコードの見本だ

if(0)




711 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 20:04:47 ]
ここは Win32API スレだっつーの!

712 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 20:07:41 ]
そして皆我にかえるわけだが

チェックボタンやラジオボタンでBS_ICONなどでアイコンにする事はできるんですが、
そのアイコンにマウスをあわせたら文字が浮き出るようにするやり方がわからないです。

713 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 20:09:12 ]
>>708
間違ってない?

714 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 20:10:58 ]
>>712
マウスメッセージ拾って、コモンコントロールのToolTipでガンバレ

715 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 20:11:03 ]
>>708
おまえ勘違いしてるだろ

716 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 20:11:53 ]
>>714
あー、やっぱマウスメッセージ拾うしかないのか
サンクス

717 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 20:13:44 ]
>>693 >>694 >>708
久々に馬鹿三匹発見

718 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 20:14:03 ]
連休的優しさ乙。


719 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 20:14:52 ]
【高速化】ビット演算 0x02
pc11.2ch.net/test/read.cgi/tech/1158367586/


720 名前:708 mailto:sage [2007/05/03(木) 20:24:11 ]
ちょっと間違えただけじゃないか。
指摘ついでに訂正しておいてくれよw

if(!~(hoge | ~0x000000C0))



721 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 20:49:47 ]
ウィンドウを作らずに音量とかハードウェアの安全な取出しがあるところにインジケータを追加出来ますか?

722 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 20:55:27 ]
非表示のウィンドウを作れ

723 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 20:59:36 ]
いい加減あからさまな釣りに反応するのやめろよ

724 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 21:02:56 ]
考え方を変えれば良いんだ。
表示されるまではウインドウじゃない、ただのハンドルなんだと。

725 名前:デフォルトの名無しさん mailto:ゴールデンウィークひゃっほーい [2007/05/03(木) 21:05:26 ]
僕ハッカー

726 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 21:05:45 ]
僕バッカー

727 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 21:08:05 ]
>>721
そのようなことはできません

728 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 21:08:19 ]
WM_CREATEを華麗にスルーだ!

729 名前:デフォルトの名無しさん mailto:あ、遅い? [2007/05/03(木) 21:23:20 ]
バカバッカー

730 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 21:42:08 ]
残り3日



731 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 21:58:42 ]
俺チンコ

732 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 22:29:21 ]
if(!(~hoge & 0x000000C0))

733 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 22:48:15 ]
なんでZARDが入ってないんだよ

734 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 23:41:09 ]
WANDSじゃダメか?

735 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 12:40:33 ]
>>721
最近3日に1回はその質問見てるような気がする

736 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 13:22:41 ]
間欠泉のようなもんだから(3回目)

737 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 14:07:54 ]
DLLから窓へデータを送るにはどうすればいいの?

738 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 14:09:48 ]
WM_COPYDATA

739 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 14:30:08 ]
>>737
パケでも取得するのかい?

740 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 14:35:20 ]
WORDとハンドルがひとつなんですけど



741 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 14:37:05 ]
自分でメモり割り当ててlpDataにポインタ入れるんだよ

742 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 14:39:26 ]
構造体使えばいいだろ

743 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 14:42:53 ]
>>740
それくらいだったらSendまたはPostMessageで直接独自のメッセージを送りつければいいと思う

744 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 15:42:37 ]
MMF

745 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 17:51:38 ]
映画見に行った?海賊のやつ。
ああコナンね。
( ゚д゚)ポカーン

746 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 17:57:23 ]
(´・ω・`)知らんがな

747 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 18:02:51 ]
コナン・ザ・グレードよりコマンドーだろ

748 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 18:05:46 ]
た゛っちゅーの

749 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 00:46:15 ]
SetWindowsHookExのコールバックをクラスのメンバ関数にする場合
どう書けばいいの?

(HOOKPROC)CMainDlg::KeyboardProcとすると

error C2440: '型キャスト' : 'overloaded-function' から 'HOOKPROC' に変換できません。
と怒られます。

750 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 00:49:23 ]
staticなメンバ関数から呼び出す



751 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 00:54:29 ]
行方不明じゃん

752 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 01:00:55 ]
え?

753 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 01:03:29 ]
そもそも静的にしないと住所不定

754 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 01:50:25 ]
この処理は既に実行されています。

みたいな感じの時はHRESULTはどれを使えばいいんでしょうか?

755 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 02:01:47 ]
E_KONOSHORIHA(略

756 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 02:06:27 ]
E_ABORT

757 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 02:11:27 ]
HRESULT hr = AtlHresultFromWin32(ERROR_ALREADY_INITIALIZED);

758 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 02:14:16 ]
それがエラーではないというのならS_FALSEという手もある。
勿論その場合S_KONOSHORIHA(略も可。

759 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 02:39:44 ]
AtlHresultFromWin32(ERROR_BUSY); でいいんじゃ。



760 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 08:34:39 ]
その文章だと二つの意味に取れるな。
1.現在処理中なので、受け付けることができない。
2.この呼び出しを二回以上する必要は無い。



761 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 08:41:09 ]
この呼び出しを二回以上する必要は無い。
なんですけど。FACILITY_ITFで自分で定義できるみたいですね。
どうもありがとう。

762 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 09:09:06 ]
FORMAT_MESSAGE_FROM_SYSTEMは最大で何文字まで返ってくる可能性があるの?

763 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 09:19:32 ]


764 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 09:27:04 ]
64KB。Unicodeで32K文字ってとこか。

765 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 09:29:25 ]
実メモリが許す限りじゃね?
各エラーコードに対応するメッセージが全部わかれば最大どれくらいか解ると思うけど
つか、FORMAT_MESSAGE_FROM_SYSTEMはFORMAT_MESSAGE_ALLOCATE_BUFFERと一緒に使うもんだと思ってたんだけどw

766 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 09:31:27 ]
>>764
詳しく

余談だけど、Unicode=2バイトじゃ無い

767 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 09:32:33 ]
へぇ〜

768 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 10:09:56 ]
>>766
内部的に使ってるUNICODE_STRING構造体の制限。
あとWin32のW系APIで文字と言ったら暗黙にUTF-16符号単位のことを指してると思っていい。

769 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 10:52:47 ]
FormatMessageへ渡すバッファってLPWSTRになってるけど
実際渡すのはLPWSTRへのポインタでは?

770 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 10:55:00 ]
>>769
それは、FORMAT_MESSAGE_ALLOCATE_BUFFERの時ね



771 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 10:55:57 ]
この事実に気付いた者は抹殺さr

772 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 11:31:01 ]
自動的にメモリ確保してくれるんだろ
後LocalFreeしないとダメなんだよな使い終わったら。

773 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 11:35:05 ]
あらかじめ確保したものを渡す関数と
勝手に確保して返してくれる関数の違いは
関数の仕様見て確認するしかないんですよね
ネーミングのルールとかありますか?

774 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 12:07:26 ]
呼び出し側でバッファを用意して渡す場合、
バッファサイズも渡さないとイケナイから、わかる。

775 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 16:49:46 ]
CopyMemoryの成否の判断ってどうするんでしょう

776 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 16:51:35 ]
CopyMemory が失敗する状況って、メモリが壊れてる時とかか?

777 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 16:54:24 ]
CopyMemoryってmemcpyの#defineじゃなかったっけか。

778 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 16:59:06 ]
しかもmemcpyはコンパイラによってはインラインに展開される。
そんなものが失敗するような状況じゃエラーチェックの判定だって正しく行われるかどうか
分からんぞ。つまり考えるだけ無駄

779 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 17:20:52 ]
memcpyはこういうときにエラーを返すということが定められていなかったと思う。

エラーになりそうな状況を考えると、思い付くのはヌルポインタなどメモリにアクセスできないとき。
それならWindowsが例外を投げてくるだろう。SEHで処理しろ。

780 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 17:45:48 ]
IMAGE_IMPORT_DESCRIPTOR についての質問です。

Advanced Windows のAPIフックに関するソースコードを読むと、
モジュールのベースアドレス(modBaseAddr)と、
モジュールのハンドル(hModule)は "常に同じ" として
扱われているみたいですが、
これは保証されている事なのですか?




781 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 17:48:31 ]
パケット取得でもするのかい?

782 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 17:55:03 ]
特に用途はないです。
ただの興味本位ということで・・・

783 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 18:20:23 ]
コンボボックスでドロップダウンリストが1行しか表示されません。
複数行を表示するにはどこを設定すればよいのでしょうか?

OS:WinXP
環境:Visual Studio 2005
言語:C++

784 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 18:21:32 ]
下に広げる

785 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 18:26:46 ]
コントロールのデザインのとこで、コンボボックスのドロップダウンボタンをクリックすると
コントロールの大きさを変えるのとドロップダウンリストの大きさを変えるのが切り替わる

786 名前:783 mailto:sage [2007/05/05(土) 18:28:22 ]
>>784
エディット画面で選択項目表示部分を選択すると
縦方向に伸ばすことができなかったのですが
矢印ボタンのところをクリックすると縦方向に伸ばせました。
ありがとうございました。

787 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 18:42:21 ]
ファイルマップオブジェクトにthisポインタの値を書き込むにはどうすれば良いですか?

788 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 19:06:57 ]
>>787
thisポインタの値を書き込めばいいと思います

789 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 19:43:57 ]
thisポインタの値とは?

790 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 19:44:11 ]
thisポインタの値のことだろ



791 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 21:18:42 ]
メニューバーのオーナードローをするにはどうすれば良いでしょうか?
Adobe Reader(8.0)のメニューバーのような感じにしたいです。

792 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 22:08:50 ]
メニューバー?
Reader8のメニューは普通だと思うが?
ツールバーか?

793 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 22:17:27 ]
どうしてnCodeがマイナスだとすぐにCallNextHookExを返すの?

794 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 22:44:28 ]
そういう決まりだから

795 名前:791 mailto:sage [2007/05/06(日) 00:18:21 ]
>>792
kjm.kir.jp/pc/?p=32876.jpg
赤線で囲ってあるところなんですけど、なんて言うんでしょうか?

796 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 00:23:10 ]
メニューバー

797 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 00:24:11 ]
メニューにアイコンをつけたいとかそういう話?

798 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 01:04:42 ]
質問です、以下のようなプログラムを現在制作しています。

コンソールアプリケーション
テキストをドラッグ&ドロップすることで、一定の処理をテキストファイルに対して行う。
「一定の処理」は、このアプリケーション用に書かれたDLLのによって変化する。

それで、DLLの検索&ロードをFindFirstFileとFindNextFile、LoadLibraryを用いて行っています。
そのプログラムなのですが、IDE(VC7)からでは設計通りに動作するのですが、それ以外では動作せず…。
どうやらFindFirstFileなどで、DLLが検索に引っ掛からないようなのです。

(おそらくはカレントディレクトリの問題なのでしょうが)、何故このようなことが起こるのでしょうか?
また、対策を教えてください。よろしくおねがいします。

799 名前:791 mailto:sage [2007/05/06(日) 01:11:24 ]
アイコンは別にいらないのですが、Adobe Readerみたいにメニューバーの通常状態の色や、選択状態の色を変えたいのです。
あと、右上端にあるバツ印もどうやっているでしょうか?

800 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 01:11:40 ]
GetModuleFileName



801 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 01:12:45 ]
>>798
>(おそらくはカレントディレクトリの問題なのでしょうが)
そう思うなら、まずはGetCurrentDirectory()で調べるべきでは?

802 名前:デフォルトの名無しさん [2007/05/06(日) 01:56:35 ]
DLLを実行ファイルに含めて、一つの実行ファイルにすることって可能でしょうか?

803 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:05:33 ]
>>802
無理やりリソースとして埋め込んで、実行時に復元すれば?

804 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:08:48 ]
hIconでアイコンを指定しました。
けど
kjm.kir.jp/pc/?p=32881.png
みたいにタスクバー上でしかアイコンが変わってません。
どうしたらプログラム上でもアイコンを変えれますか?

805 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:12:05 ]
hIconSm を放置してるとか?

806 名前:798 mailto:sage [2007/05/06(日) 02:17:35 ]
>801
ありがとうございます、さっそく調べてみました。
すると、カレントディレクトリがC:\Document and Settings\(ユーザー名)となっているようです。
これは何故なのでしょうか、理由をどなたか知っていれば教えていただければと。

807 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:19:44 ]
>>805
素早いレスありがとうございます。
hIconSmの存在も調べました。
でもwindows95以外はWNDCLASSEXを使えないらしく、だからhIconSmも使えないそうなんです。
実際hIconSmも指定してビルドするとWNDCLASSにはhIconSmは存在しないってエラーがでました。


808 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:19:51 ]
理由を考えるよりカレントディレクトリに依存しないようにプログラムを変えろ

809 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:23:44 ]
>>807
Windows 95 以降全部で使えるぞ。

810 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:24:58 ]
むしろどこに Win95 以外使えないって書いてるのか教えてくれ



811 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:28:52 ]
Windows 95のころのSDKじゃね?
当然「Windows 95以外」が意味してるのはNT 3.5とかWindows 3.1とか

812 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:31:49 ]
>>809-811
あれ、つかえるんですか。じゃあそれでやってみます。

813 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:32:14 ]
>>811
VC++ 5.0 あたりか。

814 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:42:04 ]
hIconSmで指定しても駄目でした。
ちなみにVC++ 6.0をつかってます

815 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:45:57 ]
あ、16 ビット版のアイコンをエディットしてないとかはどうか?
確か VC++ 6.0 あたりは、アイコンを新たに作成したときは
32 ビット版と 16 ビット版が両方作られてたはず。
どっかでエディット対象を選択できるんで、
それで 16 ビット版の方もエディットすればいいはず。

816 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:47:11 ]
ちゃんと WNDCLASSEX 使ってるか? WNDCLASS じゃないぞ

817 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:53:25 ]
>>815
一つしか作られてないと思うのですが、どこに作成されるのでしょうか?

>>816
WNDCLASSEXに変えても駄目でした。

818 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:54:32 ]
>>817
1つのファイルに2つのアイコンが入ってるはず。

819 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:55:45 ]
ビットじゃないやw ドットだ。

820 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:58:26 ]
>>818
一つしかアイコンはありませんでした・・・
もちろん32のほうだけしかありません・・・



821 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:59:02 ]
>>820
どういう風に確認した?

822 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 03:01:58 ]
>>821
アイコンの保存場所がワークスペースがあるフォルダなのでそこを確認しました

823 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 03:04:56 ]
>>822
アイコンの中身は見たのか?

824 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 03:07:30 ]
WNDCLASSEXでhIconSmを指定してる箇所のソースを
ここに張り付けた方が解決が早い予感

825 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 03:11:51 ]
>>823
アイコンの中身は見ました。
プロパティも確認しました。

826 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 03:13:43 ]
メインのとこだけ貼り付けます
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow) {
MSG msg; //メッセージ情報格納用構造体
WNDCLASSEX wc; //ウィンドウクラス
HWND hWnd; //ウィンドウハンドル
//*****ウィンドウクラスの設定*****//
wc.cbSize = sizeof(WNDCLASSEX); //構造体サイズ
wc.hInstance = hInstance; //インスタンスハンドル
wc.lpszClassName = szClassName; //ウィンドウクラス名
wc.lpfnWndProc = WindowProc; //ウィンドウプロシージャ名
wc.style = CS_HREDRAW|CS_VREDRAW; //ウィンドウスタイル
wc.hIcon = LoadIcon(hInstance,"IDI_ICON1"); //アイコンハンドル
wc.hIconSm = LoadIcon(hInstance,"IDI_ICON1");
wc.hCursor = LoadCursor(NULL,IDC_ARROW); //カーソルハンドル
wc.lpszMenuName = "saisei"; //メニュー
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //ウィンドウの背景色セット
//*****ウィンドウクラス登録*****//
if(!RegisterClassEx(&wc)) return FALSE; //登録失敗
//*****ウィンドウの作成*****//
hWnd = CreateWindow(szClassName,"再生プログラムだべ",WS_OVERLAPPEDWINDOW,440/*CW_USEDEFAULT*/,650/*CW_USEDEFAULT*/,400,100,NULL,NULL,hInstance,NULL);
/*hWnd = CreateWindow(ウィンドウクラス名,ウィンドウタイトル,ウィンドウスタイル,ウィンドウの水平座標位置,ウィンドウの垂直座標位置,ウィンドウの幅,ウィンドウの高さ,親ウィンドウのハンドル,メニューのハンドル,インスタンスハンドル)*/
//*****ウィンドウの表示*****//
ShowWindow(hWnd,nCmdShow); //ウィンドウの表示状態設定
UpdateWindow(hWnd); //ウィンドウの表示領域更新
//**********メッセージループ***************
while(GetMessage(&msg,NULL,0,0)){TranslateMessage(&msg);DispatchMessage(&msg);
}
/*while(メッセージの取得){メッセージの変換,メッセージをプロシージャへ送信}*/
return msg.wParam;
}

827 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 03:14:16 ]
>>806
IDEから実行したらおそらくカレントディレクトリはプロジェクトファイルのあるディレクトリになってるはず。
ファイルをドラッグ&ドロップして起動した場合は、ファイルのあるところがカレントディレクトリになってるはず。

理由?知らね。そのほうが都合がいいからだろ。

DLLをEXEと同じディレクトリに置くことにしてるのなら>>800とか。

828 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 03:14:36 ]
アイコンファイルをうpってみたら?

829 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 03:20:49 ]
アイコンをアップしました
ttp://vipup.sakura.ne.jp/512kb/src/512kb_9949.zip.html

830 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 03:31:28 ]
確かに 32 ドットのしか入ってないね・・・。
>>826 も別に変には思えないし。
じゃ、16 ドットのも作ってみたらどうかな。



831 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 03:40:40 ]
>>826
"IDI_ICON1"

MAKEINTRESOURCE(IDI_ICON1)
に置換すれ
ウチの環境では、それでうまくいった

832 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 03:54:18 ]
MSDNより
>LoadIcon 関数がロードできるのは、GetSystemMetrics 関数の SM_CXCURSOR と SM_CYCURSOR
> の各フラグに相当するサイズのアイコンだけです。それ以外のサイズのアイコンをロードするには、
>LoadImage 関数を使ってください。

wc.hIconSm = LoadImage(hInstance,"IDI_ICON1", IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR); 
でどお?


>SM_CXCURSOR と SM_CYCURSOR
これ誤植っぽい、SM_CXICON が正しい。

833 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 03:56:50 ]
32 ドットのアイコンを hIconSm にセットしたら、
自動的に縮小された(もちろん画像は粗い)なったはずなんだがなあ・・・。

834 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 07:51:11 ]
>>833
リソースの作り方によるよ

835 名前:デフォルトの名無しさん [2007/05/06(日) 11:45:27 ]
WindowsMediaInfomationをVCで使ってPCの情報を抜きたいです。
VBのサンプルを見つけたのですが、VC6.0への置き換え方法がよくわかりません。
ttp://www.wmifun.net/sample/win32_operatingsystemd.html
VCではどうやってCOM呼び出しを実装すればよいのでしょうか?
APIの質問ではなくて、VCの質問になるかもしれませんが、ご教授お願い致します。

836 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 11:47:11 ]
WTL

837 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 11:51:42 ]
ttp://zatsugaku.info/index.php?Program%2FWmi%2FProgram


838 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 11:52:51 ]
驚異的に改行されてねえ
とか思ったけどIEだとOKなのか

839 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 11:59:46 ]
>>831
うまくいけました。
ありがとうございます!

>>832
なんか
error C2440: '=' : 'void *' から 'struct HICON__ *' に変換することはできません。
っていわれました。


みなさま数々のご教授ありがとうございました。
またなにかエラーのときはよろしくおねがいします。

840 名前:デフォルトの名無しさん [2007/05/06(日) 12:33:32 ]
Wininetに関して質問なんですが、InternetOpenはアプリの起動時に実行すべきでしょうか?
それとも通信の必要がある場合にその都度の方がいいですかね?



841 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 13:22:32 ]
ダイアルアップの人もいるし、、、ノートで出先とか

842 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 13:54:59 ]
>>840
アプリの起動時、ネットにつながっていなくてもInternetOpen
は成功する。

実際にネットに接続するAPIが呼ばれるまでにネット接続
が確立すればOK。


843 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 14:10:42 ]
ということはどちらでも良いって事でしょうか。
タイムアウトもその都度設定するのはアレなんで起動時に呼ぼうと思います。
ありがとうございました!

844 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 14:14:08 ]
>>843
msdn2.microsoft.com/en-us/library/aa385438.aspx

この辺りを一読しとけ

845 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 14:54:04 ]
タイムアウトは効いたっけ?効果なかった気がする

846 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 16:09:17 ]
       へ      ヘ          │       /∧ヽ__/∧ヽ_ 〜∞
      /ハ \_/ 八         │   ∞〜 /ノ ヽ;;;;;;;;;丿/ ヽ\\ 〜∞
     /_______)         │     (;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;) 
    {_____愛●国_|         │     [_愛●國______] .
     |ミ/ ー―◎-◎-).        │     (__  (__  ミミミミミミミミ|
    (6     (_ _)  )        │      )         ミミミミミミミ)
   ノ/| .∴ ノ  3 ノ イエーイ..    │     ( ノ(。。 ) ι∵)リ||σ)ミミ) 
   ノ/ _\_____ノ__         │     丶 ε     U j  ノミミ)
  ノ/ /  ) 嫌 ≡ ;;;; ) `__ノフ.   │  イエーイ ヽ ,,_  U  ___,,ノ   /
  U |__|. 韓 ≡ ;;; )_/   ∈)   │       \,,______,ノ  〈
    |  |  .流 ≡   ) ̄ ̄ ̄´    │ _∩     厶_______ノ⌒丶.
    ヽ  \       )         │(S 〉   / ANTI KOREA    


847 名前:840 mailto:sage [2007/05/06(日) 17:10:49 ]
すいません、>>844さんのリンク先でサンプル見つけました。
タイムアウトも効かないみたいなので非同期で実装しようと思います。
ありがとうございました。

848 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 17:48:51 ]
これはどういう意味ですか?

イベント ID (0) (ソース testsrv 内) に関する説明が見つかりませんでした。
リモート コンピュータからメッセージを表示するために必要なレジストリ情報またはメッセージ DLL ファイルがローカル コンピュータにない可能性があります。
この説明を取得するために /AUXSOURCE= フラグを使用することができる可能性があります。詳細については、ヘルプとサポートを参照してください。
次の情報はイベントの一部です: Service started.


849 名前:デフォルトの名無しさん [2007/05/06(日) 18:15:18 ]
>>837 参考になりました。ありがとうございます。

850 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 18:26:12 ]
>>848
>詳細については、ヘルプとサポートを参照してください。



851 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 19:57:31 ]
どうしても行き詰まってしまい質問させて頂きます。
現在、HICONのキャッシュを作成し、次回からはキャッシュを元にHICONを復元させるプログラムを組んでおります。
GetDibsを使いHICONのカラーとマスクをそれぞれ、32bit, 16bitで取得し吐き出せています
吐き出させる直前の内容をCreateIconIndirectでHICONにし描画すると問題はありません
しかし、キャッシュから得た内容でHICONを作成し描画すると、アイコンによって透明可に失敗しています
皆様お知恵をお貸しくださいorz

852 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 20:09:27 ]
吐き出す前と後で何か情報が変わってんだろ

853 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 20:24:47 ]
そのキャッシュは正しく作れてんの?

854 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 21:33:05 ]
レスありがとうございます。
吐き出すデータとキャッシュに格納したデータのチェックサムを取ってみました所一致しました。
キャッシュ側のテストもかなり行っておりますので、キャッシュ側の問題とはやはり考えにくいですorz
現在、何故かWinrarのアイコンだけが不透明にならないという摩訶不思議な状態です;
もう一度、アイコンの取得全体を作り直して見たいと思います

855 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 22:02:40 ]
まず、

@キャッシュなしで、想定する動作になるか確認。
A数キャッシュ(2個ぐらい)で、想定する動作になるか確認。
B>>851で失敗したキャッシュ数の半分のキャッシュ数で、想定する動作になるか確認。


んで結果は?

856 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 22:34:29 ]
>>855さん
@現在はテスト中ですので、キャッシュから取得に失敗した場合は何もしないようにしています
A確認済みです。
B確認済みです。特定のアイコンのみが意図した通りの描画がされず、また、チェックサムを見る限りキャッシュデータ自体は問題ありませんでした。


857 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 22:36:34 ]
>>856
Aは成功?Bは失敗?

858 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 22:46:47 ]
いまいち>>851の流れが見えん。

問1.HICONのキャッシュとは何?
 独自フォーマットのデータ?

問2.吐き出させる直前の内容とは?
 exe.dlなどのモジュールに入ってるリソースそのものの事?

問3.キャッシュから得た内容でHICONを作成し描画する関数は何?
 CreateIconIndirectの事?

問4.
>アイコンによって透明可に失敗しています
>Winrarのアイコンだけが不透明にならない

ここを詳しく


859 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 23:14:35 ]
Alpha付き32ビットアイコンの予感

860 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 00:11:01 ]
レス有り難うございます。
意見を頂けて大変恐縮です。

>>857さん
こちらでは動作上は成功と見ています

>>858さん
問1: 保存したいHICONをGetIconInfoで詳しい情報を取得した後に、カラーとマスクのビットをGetDIBBitsで取得します
そして、取得した情報をキャッシュとして保存するようにしております。

問2: 直前の内容はカラー、マスクのピクセル情報です。ビットマップの画像ビットと同じですね(^^;

問3: その通りです。キャッシュから、カラー、マスクのピクセル情報を得た後、CreateIconIndirectでHICONを作成し、DrawIconで描画するようにしております

問4: Winrarのアイコンだけは本来透過される所が黒くなっていますorz
カラーとマスクをそれぞれ別に描画させてみると、
カラーではきちんとWinrarの本が束ねられている所以外は黒く
マスクでは、本が束ねられている所は黒く、それ以外は白くなっている事は確認済みです
BitBltを用いるとうまく透過されるのですが、今度はBitBltでは別の問題が発生するという状態に・・・

長文申し訳ありません



861 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 00:29:56 ]
WinRARのアイコンは32bitカラーだったりしない?

862 名前:851 mailto:sage [2007/05/07(月) 01:55:06 ]
>>861さん
確認してみた所、32bitではありませんでした;

それと、何とか解決することができましたorz
GetDIBBitsを使わず、別の方法でビットを取得した所うまく行きました…
原因が全く分かりませんが、このまま作っていきたいと思います
こんな質問に付き合って下さった皆様本当に有り難うございました。

863 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 02:35:08 ]
>>862
CreateIconIndirectで使うマスクは2bitビットマップのはず。
16bitでなく2bitでキャッシュしてみたら?

なんか解決しちゃったみたいだけど。

864 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 08:12:30 ]
>>862
そうやね、可能性あるね。
使う色が違う他のアイコンにしたら、また問題が出るんではないかと

865 名前:デフォルトの名無しさん [2007/05/07(月) 11:24:07 ]
>>863
アイコンのマスクビットマップは2bitじゃなくて高さ2倍の1bitじゃないか?

866 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 21:14:42 ]
ttp://support.microsoft.com/kb/216686/ja
ここを参考にExcelを操作するプログラムを作っているのですが

Worksheets(2).Delete

に相当することをやるにはどうしたらいいんでしょうか?

867 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 21:54:18 ]
WM_PAINTについて、OSによってはメッセージループに来ず、
直接コールバックに来るとかなどの、
詳しい挙動が載っているサイトとかありましたら教えてください。

868 名前:866 mailto:sage [2007/05/07(月) 21:55:47 ]
環境
Win2000, Excel2000, VC++6, SDK


869 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 22:04:57 ]
>>866
>>868

CLSIDFromProgID(L"Excel.Application", &clsid);

こいつは、ProgIDからCLSIDを求めている。
んで、そのCLSIDからExcel.ApplicationインターフェイスのpXlAppを取得してる。
pXlAppからWorkbook伝いにWorksheetsを求めればいいんじゃない?

870 名前:869 mailto:sage [2007/05/07(月) 22:07:39 ]
メソッドとかのノードがわからんだったら
oleviewとかで調べてみてわ?



871 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 22:08:18 ]
>>867
来ないから安心しろ
来るといったらせいぜいSendMessageした時くらいだろ

872 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 22:08:34 ]
×てわ
○ては

873 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 22:09:16 ]
>>871
SendMessageはメッセージループから来るだろ・・・

874 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 22:09:59 ]
>>873
MSDN嫁

875 名前:867 mailto:sage [2007/05/07(月) 22:13:59 ]
>>871
自分が実験した感じでは、9xでは起動時に、
XPでは通常時でも半々ぐらいで直接コールバックに来るみたいです。
また、XPで直接コールバックに来た場合、
DefWindowProcをしない場合に、メッセージループにも来てくれるみたいです。

876 名前:866 mailto:sage [2007/05/07(月) 22:15:49 ]
// Call Workbooks.Add() to get a new workbook...
IDispatch *pXlBook;
{
 VARIANT result;
 VariantInit(&result);
 AutoWrap(DISPATCH_PROPERTYGET, &result, pXlBooks, L"Add", 0);
 pXlBook = result.pdispVal;
}

この後です。pXlBook を使ってどうAutoWrapを使えばいいのかが分かりません。

ブック.Worksheets(xxx).xxxxxxxx


877 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 22:19:35 ]
>>875
同一スレッド内で UpdateWindow の類が発生したときには直接コールバックに来る。
他スレッド(プロセス)からの場合はどうだったか覚えてない。

ウィンドウが Activate/Deactivate されたときの再描画の挙動も普段の WM_PAINT とは
違っていたような記憶もある。

878 名前:867 mailto:sage [2007/05/07(月) 22:33:47 ]
>>877
>Activate/Deactivate
自分も違うような感じがしていました。
もう一度実験してみます。

879 名前:869 mailto:sage [2007/05/07(月) 22:52:06 ]
このオブジェクトは大きな流れとして
Application → Workbooks → Workbook → Worksheets → Worksheet
とある。

んでこれ・・・

AutoWrap(DISPATCH_PROPERTYGET, &result, pXlBooks, L"Add", 0);

pXlBookのAddメソッドを、AutoWrapという補佐関数を介して呼んでいる。
なお、Addメソッドの結果は、追加した新しいブックのインターフェイスポインタが入ってる。
(Workbook& Workbooks.Add()な感じで、結果はresultにある)

メンバ一覧
msdn2.microsoft.com/ja-jp/library/microsoft.office.interop.excel.workbooks_members(VS.80).aspx
しかし、DISPATCH_PROPERTYGETとは言うけど、Addはメソッドだよなー
結果、pXlBookには、いい値が入ってる?

880 名前:デフォルトの名無しさん [2007/05/07(月) 23:19:32 ]
WindowsMediaPlayerのパス位置をAPIで取得したいのですが、
どうやればできるでしょうか?
マイドキュメントとかはSHGetSpecialFolderLocationで取得できましたが、
アプリ個別は絶対パスで指定方法しか使えませんか?
よろしくお願いします。



881 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 23:25:47 ]
COMなレジストリを探索するのはどう?

882 名前:デフォルトの名無しさん [2007/05/08(火) 00:00:18 ]
PATHにないのに、startやファイル名を指定して...で起動できるものは
HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths\
の下にwmplayer.exeがあるよ

883 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 00:06:36 ]
その中を漁ると、消したはずのエロゲーのパスとかが残っていて、他人の環境で確認すると楽しいよ。

884 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 00:12:27 ]
>>880
playerを起動させて、プロセス一覧から取ってくるとか。
ユーザが入力しなくていい分、楽かもしれない。

885 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 00:18:15 ]
calc, notepadみたいに、Shellでwmplayerって打てば開くんやね

886 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 00:24:37 ]
>>882
LoadLibraryに"wmplayer"でパスを取る解法もあるのか

887 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 00:27:32 ]
システムドライブ+\Program Files\Windows Media Player\wmplayer.exe

888 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 00:30:18 ]
16、24、32、48の各サイズを含むアイコンから
ExtractIconExで取得される
小さいアイコンは16×16と24×24で
大きいアイコンは32×32になるのでしょうか?

DrawIconExでアイコンハンドルをhIconSmallにして、サイズを16より大きくすると
24×24のアイコンが表示されます。
また、ハンドルをhIconLargeにし、サイズを32より大きい値を指定すると
32×32のアイコンが拡大されて表示されてしまいます。

たとえばサイズ16のアイコンを24に拡大して表示とか
サイズ48のアイコンの表示が出来ません。

分かりにくくて申し訳ありませんが、
分かる方いたらお願いします。



889 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 00:35:26 ]
LoadImage でサイズ指定してロードしたらどう?

890 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 01:09:32 ]
>>882
へー、880じゃないけどすごく参考になった。サンクス



891 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 01:13:52 ]
>>889
すいません、説明が足りませんでした。
dllやexe, iclなどからのロードもあるので
アイコンインデックスを指定する必要があったので
ExtarctIconExを使ってました。

892 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 03:24:12 ]
>>882
環境変数と引用符がある場合があるので注意
scripting.cocolog-nifty.com/blog/2007/03/path_367f.html


893 名前:866 mailto:sage [2007/05/08(火) 05:43:59 ]
>>866,869,876,879

aaaa.bbbb

AutoWrap(DISPATCH_PROPERTYGET, NULL, aaaa, L"bbbb", 0);

aaaa.bbbb(cccc)

AutoWrap(DISPATCH_PROPERTYGET, NULL, aaaa, L"bbbb", 1, cccc);

aaaa(2).bbbb
は出来ないのでしょうか?

894 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 08:10:53 ]
>>893
志村!
itemプロパティ

895 名前:880 [2007/05/08(火) 08:47:01 ]
いろいろな方法があるのですね。
皆さんのおかげで解決できそうです。
ありがとうございました。

896 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 09:44:37 ]
指定したテキスト(ローマ字とか)をしゃべらせるモジュールって
MS系であります?

897 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 10:01:11 ]
MSのSAPIと、それを使ったやつってこと?

898 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 16:32:55 ]
Win32APIで、猫の本見ながらやってるのですが、
どうしてもBITMAPが表示されません。ソースは↓です!

ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3952.txt

どうやらLoadBitmapでエラーが出てるようなのですが・・・。
理由が良く分かりません。助けて管あfじえじそjふぃおあjふぁお

899 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 16:38:52 ]
もしもLoadBitmap()でエラーが出てるなら、ソースじゃなくてリソースファイルのほうの問題だ
リソースのほうで、"MYBMP"となってるか?
もし、ダブルクオート無しの MYBMP になってるなら、
LoadBitmap(hInst, MAKEINTRESOURCE(MYBMP));
こうしてみ

900 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 16:40:01 ]
>>898
追記
リソースファイル↓
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3953.txt



901 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 16:42:40 ]
>>899
MAKEINTRESOURCE(MYBMP)にしたら出来ました!
ありがとうございます!
MAKEINTRESOURCE・・・調べてみます!

902 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 17:32:56 ]
ビットマップ上にTextOutで文字を書いたり、
エディットコントロールを置いたりすると、文字の背景が白(デフォルト)に
なると思うのですが、これを透過して後ろのビットマップを見えるように
することは可能でしょうか?

903 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 17:39:02 ]
えっきすおあ

904 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 17:46:24 ]
TextOut 側は SetBkMode(... TRANSPARENT) でなんとか
コントロール側は… WS_EX_LAYERED する?

905 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 17:55:23 ]
>>903
BitBltの最後の引数のところですか?SRCINVERTでXORとったら
BMPが真っ白になりました。まぁ当たり前なのですが・・・。
CreateWindow()の中で背景とXORを取れるようなのがあるのでしょうか?

906 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 18:02:49 ]
>>905
ありません。
WS_TRANSPARENT にして WM_PAINT 時に上書きする程度。
あるいは SetWindowRegion でくりぬく

907 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 18:04:33 ]
(背景 AND マスク) XOR 文字


908 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 18:25:42 ]
TextOutについては>>904さんので上手くいきました。
CreateWindowEx()にかえてWS_EX_LAYEREDしたら、文字も消えますね。
結構分からないこと多いので>>906-907について調べてみます・・・

909 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 18:31:52 ]
>>908
コントロール側を Layered Window にって意味で書いたが… 正解かどうか微妙
BitBltしてる側の window style でどうこうできる代物ではないのは確実だと思われ。

# SetWindowLong(コントロール側wnd, WS_EX_LAYERED) して SetLayeredWindowAttributes(コントロール側wnd)

910 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 18:38:50 ]
WS_EX_LAYEREDはWS_CHILDは無理



911 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 18:42:29 ]
コントロールをサブクラス化して、WM_PAINTをがんばる

912 名前:909 mailto:sage [2007/05/08(火) 18:44:56 ]
>>910
ありがと。 WS_CHILD 相手はダメであったかー

913 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 19:15:51 ]
簡易切り替え有効状態のXPまたはvistaで、ユーザー名とパスワードがわかってる
別のユーザー(未ログオン状態)にAPIだけで切り替えって無理ですかね。

すでにログオンしてるならWinStationConnect()で切り替えられるってとこまでは何とか
なったんだけど、未ログオンのユーザーのログオンを自動化する方法が解らなくて・・・
というか方法無さげ?


914 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 19:41:26 ]
フックってあの赤くて毛むくじゃらで頭にプロペラがついたやつ?

915 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 19:47:38 ]
>>914


135
246R
   ↑これ

916 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 20:04:58 ]
WM_INITDIALOGの反対はWM_DESTROYとWM_CLOSEどっち

917 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 20:18:31 ]
どっちも違う

918 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 20:21:17 ]
多分 WM_CLOSE
呼び出されるタイミングで、まだ 子供window が生き残ってるから
WM_INITDIALOG は子供window が出来上がった後に来るしね

919 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 21:09:01 ]
子供window

920 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 21:18:52 ]
child window の直訳と考えれば別に間違ってるわけでもない



921 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 21:20:11 ]
出来た子供がオスかメスかはどう判断すればいいの?

922 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 21:23:12 ]
ちんこ見ればいい

923 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 21:24:41 ]
BOOL GetWindowSex( HWND hwnd, LPWINSEX lpWinSex );

書いてて虚しくなった

924 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 21:30:41 ]
Win3.1まではWINS構造体
32bit時代からはWINSEX構造体


925 名前:デフォルトの名無しさん [2007/05/08(火) 21:44:37 ]

       FOX★公認!!!

俺たちのクリックで日本を一位にしようぜ!!
“30年は日本に手は出せないな”という勝ち方をしたい
wwwww.2ch.net/test/read.cgi/news4vip/1178602852/

1. ポーランド  139,797,680
2. チリ     137,040,439
3. ★日本    86,475,213★
4. イスラエル  80,930,530
5. スロベニア  57,137,042
6. フィンランド  40,857,499

石を投げる戦争から人は進化・進歩を遂げ、剣や槍などの武器をもって戦うようになった
人間はさらに発展し兵器を使う戦争を始めた
そして今、指先一つを武器とした電脳戦争が勃発したのであった・・・
皇国を勝利へと導くには貴様らの参戦が不可欠である

・戦場
www.clickclickclick.com/default.asp
・まとめサイト
www33.atwiki.jp/clickvip/


926 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 21:59:59 ]
>>887
せめてProgram Filesの位置はSHGetFolderPathで取ろう

927 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 22:52:25 ]
実行ファイルのアイコンを設定するにはどうすればいいんですか?
ウィンドウの左上のアイコンは変えれたのですが・・・

928 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 22:54:53 ]
>>925
BitBlt() じゃなくて StretchBlt() 使えって。

929 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 23:06:07 ]
じゃあこれから子ウィンドウの事は子供windowって言おうぜwwwwwwwwwwwwwww

930 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 23:15:53 ]
>>929
んじゃ親ウインドウは、大人ウィンドウかww



931 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 23:27:21 ]
>>918
WM_DESTROYでも子ウィンドウが生きてることは保証されてるぞ
>>927
エクスプローラーでは一番若いIDのアイコンが表示される

932 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 23:31:15 ]
何かおばちゃん細胞みたいなノリだな。

933 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 23:33:25 ]
親ウィンドウが、ダイアログボックスとかを開いている状態で、
親ウィンドウにSendMessageはできるが、
PostMessageができない状態であるか
調べるやり方がありましたら教えてください。

934 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 23:35:11 ]
EnableWindowでいいんじゃね?

935 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 23:36:01 ]
IsWindowEnabledだ。

936 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 23:37:01 ]
>>933
モーダルダイアログ開いててもPostMessage出来るぞ

937 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 23:55:09 ]
>>931
それで、アイコンが変わらなかったのか・・・
ありがとうございました!無事解決しました。

938 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 00:12:13 ]
>>937
更新タイミングの自由度は低いがアイコンハンドラを作ればエクスプローラ上での
実行形式ファイルのアイコンも変更可能だぞ。

939 名前:933 mailto:sage [2007/05/09(水) 00:14:08 ]
>>934-936
ありがとうございます。
IsWindowEnabledでいけそうです。

後、MessageBoxはモーダルダイアログですかね。
第一引数をHWND、NULLどちらの場合でも、
WM_PAINTがメッセージループには来てくれないみたいです。
InvalidateRectをしても直接コールバックの方に来てしまいます。

940 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 00:44:41 ]
>>939
MessageBoxでは内部でメッセージループが回ってるんだよ



941 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 00:45:10 ]
UpdateWindowしてないか

942 名前:933 mailto:sage [2007/05/09(水) 01:03:39 ]
>>940>>941
少し理解できました。
UpdateWindowはしていません。InvalidateRectはしています。
UpdateはSendMessage(WM_PAINT)、InvalはPostMessage(WM_PAINT)
だと思うので、意図したメッセージループに来てほしいのですが、
MessageBox独自のメッセージループに移行してしまうので、
処理が変わってしまう感じですかね。

943 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 01:23:14 ]
>>942
InvalidateRectは無効領域を追加するだけ。
無効領域があり、かつメッセージキューにメッセージが無くなったときに
システムはWM_PAINTを生成する。

944 名前:933 mailto:sage [2007/05/09(水) 01:44:32 ]
>>943
なるほど、ありがとうございます。

945 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 03:11:07 ]
>>47
linux自体Solarisや*BSDから見ればカスなんだが

946 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 03:23:02 ]
>>945
よう、カス

947 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 08:01:47 ]
僕バッカー!

948 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 14:14:25 ]
>>942
そこらへんのメッセージループでもなにか特定の処理を行いたい場合には、
ローカルフックを使うのが簡単。dllもいらないし。

949 名前:デフォルトの名無しさん [2007/05/09(水) 16:03:32 ]
アイコン入りのDLLからのアイコン画像を取得する方法を教えてください。
これ
ringonoki.net/s-shot/icon/khre.png
みたいに32x32x8のように色とサイズの情報を取得したいです。

950 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 16:50:08 ]
>>946-947
バッカス



951 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 17:03:51 ]
>>949
www.google.co.jp/search?q=DLL+EnumResourceNames

952 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 01:37:55 ]
>>
ありがとうございます。やってみます。

953 名前:デフォルトの名無しさん [2007/05/10(木) 04:15:56 ]
>>951
EnumResourceNamesの第1引数に指定するHMODULEはどうやって取得すればよいですか?
LoadLibraryでHMODULEを取得しようとしましたがshell32.dllではエラーになり、
APPWIZ.DLLではLoadLibraryは成功しましたがEnumResourceTypesがTRUEを返しました。

954 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 07:41:33 ]
ググレカス

955 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 07:57:30 ]
>>953
> LoadLibraryでHMODULEを取得しようとしましたがshell32.dllではエラーになり、

エラーとは何か?

> APPWIZ.DLLではLoadLibraryは成功しましたがEnumResourceTypesがTRUEを返しました。

TRUEを返すと何か問題が?



956 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 08:01:56 ]
CreateFile の hTemplateFile って使えないの?
↓のようにやってもtest.txtの属性が、test2.txtにはコピーされないみたい。

HANDLE hFrom = ::CreateFile("c:\\test.txt", GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
HANDLE hTo = ::CreateFile("c:\\test2.txt", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, hFrom);
::CloseHandle(hFrom);
::CloseHandle(hTo);

>[in] Handle to a template file, with the GENERIC_READ access right. The template file supplies file
>attributes and extended attributes for the file being created. This parameter can be NULL.
最後の一文って一体。。。


957 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 08:15:28 ]
俺も使ったことないな、最後の引数

958 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 15:26:38 ]
Explorerの右上の旗のロゴを隠したいのですが、
SetWindowPosやShowWindowで隠そうとしても、枠が残ってしまいます。
専用の関数みたいなものがあるのでしょうか?

959 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 15:39:27 ]
>>958
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Toolbar\Explore/ShellBrowser
ITBarLayoutのアドレス0x10のバイトの下位3bit目をオフ

960 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 15:41:35 ]
下位3bit目じゃなくて下位4bit目だった。ようするに0x08



961 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 15:54:00 ]
>>960
できました、ありがとうございます。

962 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 21:42:34 ]
質問です

HTMLのFORMタグでSUBMITすると何も指定していなければ
FORMのACTIONで指定したURL等に
?---=---&___=___と付とついて送信されますよね?

その時日本語が値のときにエンコードされているように見えるのですが、
これはAPIとして提供されている機能でしょうか?

そうであればAPI名を教えてくれませんか?

963 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 21:43:13 ]
そんなWin32APIはありません。

964 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 21:50:59 ]
METHOD=GET の話か
まあURLエンコードでググれ

965 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 22:02:44 ]
IMultiLanguageインターフェイスのConvertStringメソッドとかあるけど、
ここじゃスレ違いかもね

966 名前:デフォルトの名無しさん mailto:age [2007/05/10(木) 22:21:50 ]
BitBltについて質問です。
転送元と転送先が同じDCの場合でも、この関数はちゃんと動く保障はありますか?

967 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 22:39:33 ]
>>966

厳密にはない。
GetDeviceCaps関数のRASTERCAPSで確認。

968 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 23:41:11 ]
WINDOWPLACEMENTのshowCmdあたりをいぢってて質問。
最大化してたウィンドウが最小化したあと、元の状態に戻すにはどうすればよいですか?
SW_RESTOREだと最大化状態が解除されてしまうので。

969 名前:デフォルトの名無しさん [2007/05/11(金) 00:50:22 ]
Windows Picture and Fax ViewerをCreateProcessで実行したいのですが、
notepad,mspaintのような起動方法は可能でしょうか?


970 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 01:20:37 ]
関連付けのレジストリを見れば分る



971 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 01:21:04 ]
時々エディットコントロールのボーダーが見えなくなったり、
エディットコントロールが見えなくなって下のBMP画像が出てきたりするバグで
困っています。これらはWM_PAINTで再描画された時に直るのですが、
むしろ、WM_PAINTで大きなBMP画像が毎回毎回再描画されているせいで
エディットコントロールの表示がおかしくなるのではないかと思ってます。

BMP画像は壁紙としてウィンドウと同じサイズのものを使用しているのですが、
WM_PAINTでことある毎に再描画せずにずっと表示させるようなことは可能なのでしょうか?

972 名前:デフォルトの名無しさん [2007/05/11(金) 05:35:42 ]
システムを終了するときの終了オプションダイアログ(コンピューターの電源を切る)のような
完全なシステムモーダルなダイアログボックス、或いはウィンドウってどうやって作ればいいんでしょう?

ダイアログボックスにシステムモーダル属性を付けてもだめでしたorz
タイマーでフォーカスを取り返し続けるっていうのは無しで、なにかいい方法ありますか?

973 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 06:20:01 ]
HWndにNULLを入れて

974 名前:デフォルトの名無しさん [2007/05/11(金) 06:32:30 ]
>>973
無理ですたorz

975 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 07:24:03 ]
グローバルフックしたら?


976 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 07:28:52 ]
システムモーダルつけてアド民では?

977 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 08:06:40 ]
システム乗っ取るようなものじゃないかそれ?
そんなお手軽に実現できていいのかなあ

978 名前:972 [2007/05/11(金) 08:14:53 ]
どうしても乗っ取りたいんです。

979 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 08:47:58 ]
濃そうだから海外のシステム八苦系のコミュで聞いたら?答えが出ると思うよ

980 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 09:10:22 ]
タイーホ!



981 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 09:27:54 ]
GINA?

982 名前:デフォルトの名無しさん [2007/05/11(金) 10:21:17 ]
>>978は騙りだから無視して
フリーのソフトで部屋にいない間、キャプチャーしてるんだけど(LiveCapture2ってソフトです)
デスクトップロックが効かないんですよね
それで、もし誰か侵入者がロックの掛かってないPCに触ったら(マウスが移動したら)
システムモーダルのダイアログを表示してパスワードを要求する、って感じでプログラムを作ってるわけです

多分もっといい方法があるんだろうけど、結構面白いからこれでやってみようかなぁと
どんなもんでしょうか

983 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 10:27:22 ]
誰か次スレ立てて

984 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 10:27:57 ]
>>981
NT,2000,XPなら正解。GinaのShellShutdownDialogあたりちゃうか。

>>982
やってみれば?OSのリストア何回かすることになると思うけどw。


985 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 10:29:17 ]
>>982
っ スクリーンセーバー

986 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 13:09:53 ]
982のやりたいことはスクリーンセーバーそのものだよなw

987 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 14:00:42 ]
>>971
>WM_PAINTでことある毎に再描画せずにずっと表示させるようなことは可能なのでしょうか?
それは無理。

WS_CLIPSIBLINGS とか WS_CLIPCHILDREN とかそのあたりをちゃんと理解して
適切に描画されるようにコードを直せば良い。

988 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 14:22:29 ]
>>982
俺も >>985-986 に同意。
コアをスクリーンセーバーで作れば、OSのダイアログが利用できる。
スクリーンセーバーが稼働中に録画するような構造にすれば、
まさに君の望む挙動になるんでない?

問題はスクリーンセーバ稼働中にLiveCapture2というソフトが
ちゃんと裏で動いてくれるかどうかだけど。
そこがダメなら、そこを自作する方向に行くとか。w
仮に裏で動いてくれるなら、何も作る必要がないという事にならないか?


989 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 17:15:45 ]
CreateDesktop してみればどうかな。
スクリーンセーバーも別デスクトップで動作していたと思う。

990 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 18:00:37 ]
CreateDesktopしてもNT系ならCtrl+Alt+Delで解除されるよ。
パスワードかけるならスクリーンセーバーでOSに丸投げするか、GINAしかない。



991 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 18:03:14 ]
しかしGINAはVistaでは廃止されてしまった。
Vistaで同じことやるにはMSとShell Credential Providerの開発契約しないとだめぽ

992 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 18:10:48 ]
まじかよ・・・

993 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 18:15:22 ]
開発契約なんぞ必要なのか?サンプルも公開されてるのに?
ドキュメントもご丁寧に日本語化されてるけど。
ttp://msdn.microsoft.com/msdnmag/issues/07/01/CredentialProviders/default.aspx?loc=jp

994 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 18:17:05 ]
もういっちょ。
ttp://www.microsoft.com/downloads/details.aspx?familyid=B1B3CBD1-2D3A-4FAC-982F-289F4F4B9300&displaylang=en


995 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 18:36:18 ]
>>972
最大化したウィンドウ(タイトルバー無し、最上位)にデスクトップ画面を
描画して、そのウィンドウを親ウィンドウとしてダイアログを出せばいいんじゃね?

XPで終了ダイアログを出すと背景がだんだん白黒になっていくから
そういう仕組みでやってると思うけど。

996 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 19:51:15 ]
>>993-994
Vistaβの頃のSDKには「詳細は問い合わせて契約してくれ」みたいな英文はあった気がした。
正規版になって普通に一般公開されたのかね。

997 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 20:21:34 ]
デルファイでできたアプリケーションのダイアログウィンドウのハンドルについて質問です。

spy++では、親がTfrmMainというクラス名と判明しました

そこでGetWindowLongで親ハンドルを取得すると、親はTApplicationというクラス名でした。ここでもう整合性がないです

TApplicationの名前をもつハンドルを取得して、そのハンドルからダイアログハンドルを検索するためにFindWindowsExをしたのですが、Nullが返ってきました

いったいどんな親子関係なんでしょうか?
レスおながいします(´・ω・`)


998 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 20:31:28 ]
見えない親ウインドウがある。

999 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 20:32:22 BE:124224588-2BP(222)]
>>995
ホットキー止めないと。Alt+Tabとかで普通に抜けられる。

1000 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 20:32:46 ]
次スレ
Win32API質問箱 Build53

 ttp://pc11.2ch.net/test/read.cgi/tech/1178882828/



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






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<228KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef