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


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

Win32API質問箱 Build59



1 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 22:39:56 ]
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

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

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


2 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 22:40:26 ]
58 ttp://pc11.2ch.net/test/read.cgi/tech/1191781463/
57 ttp://pc11.2ch.net/test/read.cgi/tech/1189255282/
56 ttp://pc11.2ch.net/test/read.cgi/tech/1186989201/
55 ttp://pc11.2ch.net/test/read.cgi/tech/1184853465/
54 ttp://pc11.2ch.net/test/read.cgi/tech/1181645965/
53 ttp://pc11.2ch.net/test/read.cgi/tech/1178882828/
52 ttp://pc11.2ch.net/test/read.cgi/tech/1176828891/
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/11/10(土) 22:40:39 ]
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/11/10(土) 22:40:49 ]
- MSDN ホームページ
msdn.microsoft.com/library/
msdn2.microsoft.com/en-us/library/
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 ライブラリ 2007 年 6 月版 VisualR Studio 2005 Service Pack 1 ドキュメントを含む
www.microsoft.com/downloads/details.aspx?familyid=B8704100-0127-4D88-9B5D-896B9B388313&displaylang=ja
- Platform SDK Update
(for Windows Vista)
www.microsoft.com/downloads/details.aspx?FamilyID=ff6467e6-5bba-4bf5-b562-9199be864d29&DisplayLang=en
www.microsoft.com/downloads/details.aspx?FamilyID=7614FE22-8A64-4DFB-AA0C-DB53035F40A0&displaylang=ja
(Windows(R) 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
- Microsoft(R) Windows(R) 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

5 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 22:41:02 ]
- 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

6 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 22:41:15 ]
以上

7 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 02:03:53 ]
>>1


8 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 07:44:49 ]
前スレ最後の方で返り血の不統一が話題だったけど、
MS内部では、マック好みが多いってホント?

9 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 07:56:37 ]
ロバート・フリップはiPod派だよ

10 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:54:12 ]
質問です
キーボードからの入力をフックして、仮想キーコードを置き換えるプログラムを作ろう思い、
SetWindowsHookEx()でWH_KEYBOARD_LLにフックをかけて、
フック関数側ではlParamからKBDLLHOOKSTRUCT構造体にアクセスし、仮想キーコードを変更するようにしたのですが、
このプログラムを起動した状態でメモ帳に何か文字を入力しても、キーコードが変更されず打った文字がそのまま出てきてしまいました。
フック関数からMessageBox()表示させることはできたので、フック関数自体は呼び出されている様です。
もしかするとWH_KEYBOARD_LLでは仮想キーコードの取得はできても置換はできないのでしょうか?



11 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 01:05:24 ]
>もしかするとWH_KEYBOARD_LLでは仮想キーコードの取得はできても置換はできないのでしょうか?

概ねそんな感じ

WH_KEYBOARD_LLで送られてきたキー情報を書き換えても
メッセージキューのメッセージには影響しない


12 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 01:08:52 ]
そういうのってデバドラ書かないと無理じゃなかった?

13 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 01:17:53 ]
いや、置き換えだけならWH_WNDPROCでWM_KEY***とか見張ってればおk

目的のキーのWM_KEY***が来たら、仮想キーコード書き換えて
PostMessageしなおせばいい

14 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 01:23:46 ]
解説
GetMsgProc フックプロシージャは、メッセージの検討と変更を行えます。このフックプロシージャがシステムへ制御を返した後、GetMessage または PeekMessage 関数は、そのメッセージを変更結果と共に、最初にその関数を呼び出したアプリケーションへ渡します。

アプリケーションがこのフックプロシージャをインストールするには、WH_GETMESSAGE フックタイプと GetMsgProc フックプロシージャへのポインタを指定して、SetWindowsHookEx 関数を呼び出します。


15 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 01:25:45 ]
つまりはMSDN嫁。と

16 名前:10 mailto:sage [2007/11/12(月) 01:37:29 ]
素早い返信ありがとうございます
なるほど、やはり取得しかできないメッセージを捕まえてたんですね…
沢山キーワードを頂けたので調べながら作り直してみたいと思います

17 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 06:31:31 ]
>>13-14
その方法ってGetKeyState/GetAsyncKeyStateとかも置き換えられたっけ?

18 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 08:14:15 ]
置き換えるって言うか…

各スレッドはキーの状態を保持したキーボードマップを持ってて
GetKeyStateはそこからキー情報を取ってくる
キーボードマップはスレッドがGetMessageかPeekMessageした時に更新される

で、WH_GETMESSAGEはメッセージがキューから取得される直前にフックを呼ぶ

後はどうなるか分かるよな

19 名前:デフォルトの名無しさん [2007/11/12(月) 10:33:55 ]
どのスレで聞くべきか迷いましたがここで質問させていただきます。

他のアプリケーションのウインドウを画像として取得するにはどうしたらよいのでしょうか?

20 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 10:45:10 ]
HDC様を取得してみよう



21 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 11:02:25 ]
なんだそれw

22 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 11:48:56 ]
ビットマップのHDC様といっしょにBitBltでGo!

23 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 12:17:01 ]
XP以降ならPrintWindow
2000以下なら方法は無し

24 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 13:24:47 ]
SDKって上書きしていいの?

25 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 13:29:45 ]
意味が分からん

インストールの話なら一度アンインストールしとけ

26 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 13:49:12 ]
というかSDKといってもいくつかあるからな
Windows SDK 6.0なのか、Platform SDK最新版(今Server2003用か?)か

27 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 14:02:37 ]
>>24
OSから入れ直しに決まってんだろ。

28 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 15:43:36 ]
WinAPIでツールボタンを使ったウィンドウを作ろうと思ったのですが、
comctl32.dll、バージョン 5.82.2900.2982、エラー発生アドレス 0x0001d465
のようなエラーが出ます。WindowsXPHome,コンパイラはMinGWのgcc3.4.5,リソースコンパイラはwindres2.17.50です。ソースは下のようになっています。
*WndProc.c
LRESULT CALLBACK WindowProc(HWND hwnd,UINT message,WPARAM wparam,LPARAM lparam){
HINSTANCE hInst;
HWND hToolBar;
TBBUTTON tbb[]={{0,IDM_OPEN,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0},省略{5,IDM_TOOL5,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0}};
switch(message){
case WM_CREATE:
InitCommonControls();
hInst=(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE);
hToolBar=CreateToolbarEx(hwnd,WS_CHILD|WS_VISIBLE,ID_TOOLBAR,6,hInst,ID_TOOLBMP,tbb,6,0,0,16,16,sizeof(TBBUTTON));
return 0;
省略
*resource.h
#define ID_TOOLBAR 100
#define ID_TOOLBMP 101
#define IDM_OPEN 102
省略
#define IDM_TOOL5 107
*resource.rc
#include "resource.h"
ID_TOOLBMP BITMAP DISCARDABLE "control.bmp"

また、このページを参考にしたのですがまったく同じように作っても同じエラーが出ました。
wisdom.sakura.ne.jp/system/winapi/common/common8.html
環境が問題なのでしょうか。だとしたら解決策などはあるのでしょうか。
ご教授願います。

29 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 15:53:52 ]
とりあえずデバッガで追いかけてみたりしたかしら?

30 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 16:45:25 ]
>>29
すいません、試していませんでした。今gdbでやってみたら
Program received signal SIGSEGV, Segmentation fault.
0x5ab7d465 in ImageList_AddMasked () from C:\WINDOWS\system32\comctl32.dll
と出ました。ImageList_AddMaskedを調べるとビットマップのイメージマスク関連のようですがそこまでしかわかりませんでした。
WindowProcにブレークポイントを設定し、hToolBarの内容を見てみると0xffffffffでしたがやはりこれが問題でしょうか?
いろいろ考え試してみましたがどうにもわかりません。ご教授願います。



31 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 16:50:02 ]
>hToolBarの内容を見てみると0xffffffffでした

INVALID_HANDLE_VALUEだろそれw
作成失敗してるw

32 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 16:58:29 ]
ちがう。
CreateToolbarExの失敗時の戻り値はNULL。

でも0xFFFFFFFFが有効なハンドルって事はないから・・・。

33 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 17:12:18 ]
おそらくImageList_AddMaskedの中で
無効なビットマップハンドル使ってるんだろうな

試してないがGetWindowLongに失敗してない?
WM_CREATEってまだウィンドウ作成されてないからhWndって無効なハンドルの気が
で、無効ハンドルのせいでインスタンスハンドル取れない→イメージリソースが取れない。と

試しにGetModuleHandle(NULL);にしてみろ

34 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 17:15:20 ]
WM_CREATEでなら、
CREATEPARAMS const* pcs = (CREATEPARAMS const*)lParam;として、
pcs->hInstanceとすればインスタンスハンドルが取れる。

35 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 17:15:51 ]
CREATESTRUCTだったorz

36 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 17:31:30 ]
>>28です。
>>33-35
すべて試しましたが結果は同じでした。
hInstのインスタンスハンドルは$2=0x7c953288で取れているようです。
また、hwndのハンドルも取れています。

コードをすべてどこかにアップロードしてしまったほうが解決が早いでしょうか…?

37 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 17:35:01 ]
結局CreateToolbarExって成功してるの?

38 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 17:37:40 ]
>>WM_CREATEってまだウィンドウ作成されてないからhWndって無効なハンドルの気が

どんだけw

39 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 17:49:40 ]
>>1


40 名前:19 mailto:sage [2007/11/12(月) 18:01:53 ]
>>20-23
PrintWindowでいきたいと思います。
ありがとうございました。



41 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 18:07:46 ]
>>36
hInstが0x7c953288ってどう考えてもおかしいだろ

つーかこの程度のバグを解決できないスキルならMinGWなんて使わずVC使えよ

42 名前:デフォルトの名無しさん [2007/11/12(月) 18:23:58 ]
ビットマップでボタン作れますか?
マウスがボタンに重なったら、ボタンに使われているビットマップを変更する等の処理もしたいのですが、

43 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 19:16:21 ]
>>42
ボタンにビットマップ張ったらいいんでは?

44 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 19:27:00 ]
どうやって張るんですかね?
本等にもあまり載っていなくて苦難してます。

45 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 19:31:40 ]
質問です。

プログラムを動かそうと考えているマシンにはプリント用のネットワーク出力ポートがいくつかありますが、
EnumPortsを呼ぶとPORT_INFO_2構造体にはそれぞれ
 pMonitorName : TCPMON.DLL
 pDescription : Standard TCP/IP Port
 fPortType : 11
という値が入ります。
これらについて個々のIPアドレスを知る方法はありますでしょうか?

46 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 20:00:15 ]
>>44
普通に

ボタン ビットマップ

でググれば出てくるが

47 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 20:13:40 ]
>>46
ググッてきます!!!

48 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 20:43:43 ]
>>28です。
resource.rcに#include "resource.h"の記述をしないとなぜかウィンドウ自体は表示されます。
ですがビットマップイメージがボタンに張られていない状態です。
当たり前といえばそうなのですが、この情報から何かわかることはあるでしょうか?
たびたびすいません、ご教授願います。
>>37
プログラムが異常終了してしまうので成功していません。
>>41
おかしいのですか…どのようにおかしいのかわかりますでしょうか?

ソースをすべてアップロードしてみました。たびたびすいません、どこが悪いのかご教授願います。
>>28に書いたソースよりいくらかいじったので違う点がありますが基本的に同じです。
www.dotup.org/uploda/www.dotup.org2842.zip.html

49 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:44:20 ]
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆【一番クリックした国が優勝】参加者求ム!☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

 イギリス人天才プログラマが運営する前代未聞の無料ブラウザゲーム、clickclickclick.com/
 ただひたすらクリックし、国別の総クリック数を世界中で競い合う!
 究極にバカバカしくそして意味がなく、ひたすら時間の無駄でなんの得にもならない、だがそれが(・∀・)イイ!

 ライバルはハンガリー、そして台湾!! GAME2から参戦し、現在GAME27開催中!
 VIPで発祥し現在2ch全土から結集したクリック兵達で日本チームは戦っている!
 意味のない事に全力を傾ける、それが2ちゃんねるクオリティ!!

 独自のクリックツール開発競争も熱く、各国のプログラマが全力で優秀な兵器開発をしている!!
 日本の技術力の高さを世界に見せつけてやろうぜ!
 プログラマ、Flashゲーム製作者、動画職人、AA職人、絵師、DJ、wiki編集blog編集者、データ分析者etcも募集中!
 ツール放置参加もできるので、PCのスペックに自身のある奴、CPUに空きのある奴、時間が余ってる奴もぜひ参加してくれ!

 本スレッド
 【簡単多重】一番クリックした国が優勝【8砲門】
 wwwww.2ch.net/test/read.cgi/news4vip/1194741194/l50
 ※落ちているときはここから1発検索
 www.clickjapan.jp/find2ch.php

 日本チームの有志によるまとめサイトポータル
 www.clickjapan.jp/ 
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

50 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 22:32:12 ]
>>28
> リソースコンパイラはwindres2.17.50です。
これは、リソースに日本語が入っているとダメだったような…
ひょっとして、そっち関係とか。



51 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 22:32:28 ]
>>48
だからVC使えと(ry
デバッガだけでもVCを使う価値は十分にあると思うが、どうしてもMinGWを使わなければならない理由でもあるのか?

52 名前:デフォルトの名無しさん [2007/11/12(月) 22:37:23 ]
WindowsはZIPを解凍するAPIを標準で持っているんでしょうか?
また、あるとしたらどのバージョンからなんでしょうか。

53 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 22:41:39 ]
ねーよ

54 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 22:47:42 ]
>>48
ビットマップが24ビットだからじゃね?
256色以下にしてみ

55 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 22:50:18 ]
パソコンの画面をキャプチャーしてメモリ内に格納したいのですが、
GetDCでデスクトップのデバイスコンテキストを取得し、
GetPixelで1ピクセルずつ取得する方法より、効率の良い方法は何かあるでしょうか?

56 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 22:52:53 ]
DIB

57 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 23:13:33 ]
>>52-53
ZIPフォルダを実現する関係上、ZIPファイルはシェルフォルダとして読み書きできる。
Me/XPから標準搭載だが、98ではPlus!に付いてきたはず。
また、2000でもMeからDLLを持ってくれば使える。

ようするにWindowsのバージョンなんて当てにしないで、
実際に試してみて成功すればOKという方針で行け。

58 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 23:18:59 ]
>>55
BitBlt

59 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 23:19:51 ]
>>57
OS再インスコしたら真っ先にregsvr32 /u zipfldr.dllなんだが
そんな不確かな物に頼るぐらいなら普通にunzip32やzlibでも使えばいい

60 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 23:20:33 ]
>>55
1ピクセルごとじゃなくて普通にBitBltじゃだめなのか



61 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 09:29:25 ]
>>59
自分で機能切ってるヤツまで知ったこっちゃねーだろ・・・

62 名前:デフォルトの名無しさん [2007/11/13(火) 09:32:21 ]
delphiのぐだすれで質問したらすれ違いと言われたのでここに来ました。
WindowsXPのアクティベーションとかで使用しているようなハードウェアハッシュを
自前のプログラムでも使用したいのですが
どうやったら取得できますでしょうか。
すれ違いでしたら誘導願います。

63 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 10:50:43 ]
>>61
そもそもなぜ圧縮フォルダをプログラムから直接利用する必要があるのかサッパリなんだが
外部DLL不要、世界最小のZIP解凍ソフト!とか作りたいのかねぇ

64 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 12:04:19 ]
>>28です。
>>54
本当にありがとうございます。解決しました。

65 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 14:08:15 ]
>>63
お前、とことん読解力ないな

66 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 14:21:45 ]
( ´,_ゝ`)プッ

67 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 14:42:28 ]
言語問わずWin32APIが呼び出せるインタプリタ環境ってありますか?

68 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 14:49:17 ]
Perl

69 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 15:23:49 ]
>>68
ありがとうございます、調べてみます

70 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 16:22:08 ]
PowerShell



71 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 17:05:04 ]
>>70
こんなものもあるんですね、不勉強ですみません

72 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 22:34:14 ]
APIとか一寸試したい時に、そういうのが欲しいとちょっと思わなくもないが、
結局Cや、GUI絡みでもMFC使えば簡単に試せるからなあ。

73 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 01:04:06 ]
>>56
ありがとうございます。調べて見ます
>>60
>>58
取得した画面をファイルに出力したりネットワークで送信したりしたいのですが、
BitBltだと、出来ませんでした


74 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 01:08:18 ]
そういう場合はGetDIBitsで検索

75 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 06:05:51 ]
>>72
環境勝手にいじれない(非開発の)PCではAPI使うのにofficeのVBAしかなかったりするんだよ…

MSはPowerShell を優先度の高い更新に含めやがれ
あるいは会社のPCをすべて2008にしてください

76 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 06:23:03 ]
.NETは結局XPに標準搭載されなかったんだっけか

77 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 10:13:29 ]
標準搭載しなくていいよ

78 名前:デフォルトの名無しさん [2007/11/14(水) 11:30:13 ]
ファイルだの日時をコピーもしくは変更するAPIを教えてください

79 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 12:09:27 ]
SetFileTime
GetFileTime

80 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 12:09:41 ]
日本語でおk



81 名前:78 [2007/11/14(水) 13:12:30 ]
フォルダでした。
ところでこれってFATでも機能するのでしょうか?


82 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 13:33:53 ]
解説ぐらい読んで来い
msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpsysinf/html/_win32_getfiletime.asp

83 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 14:56:30 ]
SendMessageで書き直したいのですが、どのように書き直せばよいのか教えてください。
(VB2005です)↓

'キーコード送信
Dim DownUp As Integer = 0
Dim Down As Integer = 1
Dim Up As Integer = 2
Private Sub KBD(ByVal KEY_CODE As Byte, ByVal 状態 As Integer, ByVal ms As Integer)
Sleep(ms)
If 状態 = 1 Then
Call keybd_event(KEY_CODE, 0, 0, 0)
ElseIf 状態 = 2 Then
Call keybd_event(KEY_CODE, 0, &H2, 0)
ElseIf 状態 = 0 Then
Call keybd_event(KEY_CODE, 0, 0, 0)
Call keybd_event(KEY_CODE, 0, &H2, 0)
Else
End If
End Sub

84 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 16:09:01 ]
keybd_eventがやってることはSendMessageじゃエミュレートできないと思うんだが

85 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 16:11:05 ]
場合による

86 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 16:14:41 ]
キーイベントはポストだろ

87 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 16:16:27 ]
ポストだとどんな感じですか?

88 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 16:19:42 ]
マニュアル嫁

89 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 17:31:09 ]
ポストはポストでも、マルチポストだろ

90 名前:デフォルトの名無しさん [2007/11/14(水) 21:50:10 ]
いろんな方が質問されている内容ですがうまくいかないので質問させてください。
WS_EX_LAYERED、SetLayeredWindowAttributes、LWA_COLORKEY、IDB_CHRISTALについて
「定義されていない識別子です。」というエラーでコンパイルできません。

ソースは以下のサイトを見ながら書いています。
www.kumei.ne.jp/c_lang/sdk4/sdk_346.htm

環境はVC++6.0、OSはWindowsXP SP2です。
やってみたこと
・ServicePack6 の適用
・Windows Server 2003 SP1 Platform SDK の PSDK-x86.exeをダウンロードしてインストール
 →C:\Program Files\Microsoft Platform SDK\Bin\Orca.Msi を実行
・ソースに#include<WinUser.h> を追記

対処法がありましたら教えていただきたいです。



91 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 21:56:14 ]
VC++のインクルードディレクトリの設定を変えろ。
新しいPlatform SDKのインクルードディレクトリを指すように。

winuser.hは昔も今もwindows.hの中でインクルードされるから、
自分でインクルードを明記する必要はない。

92 名前:デフォルトの名無しさん [2007/11/14(水) 22:33:26 ]
VC++のディレクトリとPlatFormSDKのディレクトリで
階層構造が多少違うようなのですが、、、、


で、適当にやったらインクルードファイルがオープンできませんってなりました・・・。(;つД`)
メニューのツール -> オプション -> ディレクトリ タブ の中の設定を変更したんですが違いました?

93 名前:90=92 mailto:sage [2007/11/14(水) 22:42:22 ]
WS_EX_LAYERED については警告はでなくなりましたが
下記エラーが出ます。インクルードディレクトリの指定がマズイのでしょうか?

error LNK2001: 外部シンボル "__imp__SetLayeredWindowAttributes@16" は未解決です

94 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 22:43:10 ]
_WIN32_WINNTとかWINVERとかじゃね?

95 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 22:52:14 ]
>>75
ExcelあるならスクリプトからExecuteExcel4MacroでCALL Win32API

96 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 23:05:20 ]
>>93
インクルードパス同様、ライブラリパスも設定する必要があるぞ。

97 名前:90=92=93 mailto:sage [2007/11/14(水) 23:05:55 ]
>>94
ソース冒頭で
#define _WIN32_WINNT 0x0500
を指定しています。

WINVERというのが良くわかりませんが
#define WINVER 0x0400
と指定したところではエラーの内容は変わらずでした。

98 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 23:12:44 ]
>>97
つーかVC6で使えるSDKの最終バージョンって2003年2月ぐらいの奴じゃなかったっけ?
一応2003SDKとかも使えなくも無いがリンクエラー出ることあるからやめといた方がいいと思うぞ

99 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 23:16:43 ]
>>93
ライブラリのパス

100 名前:90=92=93=97 mailto:sage [2007/11/14(水) 23:29:14 ]
できました━━━━(゚∀゚)━━━━!!!!。

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




101 名前:90=92=93=97=100 mailto:sage [2007/11/14(水) 23:44:52 ]
>>98
ttp://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en

これには ”Date Published: 5/2/2005 ”とあるようです。

このSDKはあんまり薦められないってことですか?
今回はこれでないと動かない代物だったので仕方ないですが
必要なければ使わないほうが良いのでしょうか?

102 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 23:46:11 ]
タスクトレイのアイコン上でマウスホイールで操作したときに処理をすることを
考えているんですが、タスクトレイのアイコン上でマウスホイールを操作しても、
WM_MOUSEWHEELがとんできません。
WM_MOUSEWHEELをフックしても、タスクトレイのどのアイコン上なのか
識別する方法がわかりません。
NOTIFYICONDATAのhWndとかuIDを判別する方法ありませんか?



103 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 23:46:54 ]
今ならWindowsSDKだけで十分なような気も

104 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 23:49:38 ]
>>102
状況がよくわからんけど・・・
タスクトレイから通知が来たときのLPARAMを見てみる

105 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 23:52:04 ]
あ、違うか
どのアイコンか判定したかったらShell_NotifyIconのAPIフックからしないと駄目な気が
通知メッセージはユーザー定義だからフックできんし
WM_MOUSEWHEELは普通にタスクトレイが受け取ってるはず

106 名前:102 mailto:sage [2007/11/15(木) 00:13:14 ]
>>105
レスどうもです。

えとですね。
自分のアプリで登録しているアイコンなんですよ。
タスクトレイのアイコン上で操作したときに、
例えば左クリックならばWM_LBUTTONDOWNは来るんですが、
マウスホイール操作のWM_MOUSEWHEELは来ないんです。

なので、WM_MOUSEWHEELをフックして処理しようかと思ったのですが、
自分のアプリで登録しているタスクトレイのアイコン上であるかどうかの
判別ってどうするんだ?と困っているところなのです。


107 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 01:24:41 ]
>>101
そのページに書いてあるでしょ
>This SDK does not support working with Microsoft Visual C/C++®, 6.0 as support for VC 6.0 has ended.
>The last SDK that will work with VC 6.0 is the February 2003 Edition, you can order a CD on the fulfillment site.

2003年2月版でもXPSP1ぐらいまではサポートしてるので普通に使う分には困らないと思う

108 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 04:44:07 ]
>>81
NT系ならFATでも使える。まだ9xサポートしてるのか?

109 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 06:19:56 ]
>>95
知らなかった。ちょっと楽になる。サンクスですわ

110 名前:デフォルトの名無しさん [2007/11/15(木) 06:46:39 ]
zipの圧縮、解凍をサポートするapi関数ってある?
Jpegの伸縮のように、外部ライブラリ入れないとダメかな



111 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 08:09:45 ]
なんでXPでzipfldr.dllなんてDLLが追加されたか考えれば分かるだろう

112 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 08:16:37 ]
スレ違いだけど.NETならGZipStreamクラスある

113 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 08:49:12 ]
zip圧縮解凍ライブラリなんてネット上に腐るほどあるだろ
zipfldrを呼び出す方が遥かに面倒だと思うが

114 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 10:05:12 ]
COM使ったことあれば、そう面倒でもないと思うが・・・まぁ人それぞれか

115 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 11:24:13 ]
zipfldr.dllのCOMインターフェイスって公開されてたっけ?
IShellFolder::GetUIObjectOfでIDropTargetを取得してD&Dをエミュレートして・・・とか考えたけど結構面倒な気が
他に方法あったらおせーて

116 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 11:56:30 ]
rundll32.exe zipfldr.dll,RouteTheCall %zipfile%

これか?ためしてないけど

117 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 12:05:42 ]
CLSIDFromString("CompressedFolder",&clsid);
CoCreateInstance(clsid,NULL,CLSCTX_ALL,IID_IStorage,(LPVOID*)&pStorage);
pStorage->QueryInterface<IPersistFile>(&pPersistFile);
pPersistFile->Load("zipファイル名",STGM_READWRITE|STGM_SHARE_EXCLUSIVE);

てな感じ、足りないとこは脳内補完よろ
あとはIStorageとIStreamの操作で中身読める。
書き込みは試したことないけど・・・、たぶん似たような手順でいけるとおもふ

118 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 12:10:27 ]
それって
rundll32.exe unzip32.dll,UnZipCommandLine "%1"
と同レベルな気が

119 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 12:12:31 ]
リロードしてなかった
>>118>>116へのレス

>CLSIDFromString("CompressedFolder",&clsid);
これって将来的に大丈夫なのかな?
そんなモン気にするなってツッコミは無しで

120 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 12:21:32 ]
質問です。
SetWindowsHookEx でグローバルフック登録しているのですが、runas 等で別のユーザで起動したウィンドウへのメッセージがフックできないようです。
普通の (同じユーザ) ウィンドウへのメッセージはフックできています。
何か方法はありますか?



121 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 12:23:56 ]
別ユーザのウィンドウがフック出来たらセキュリティホール以外の何物でもないだろう
ImpersonateLoggedOnUserとか使えばどうにかなるかも知れんが

122 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 12:27:09 ]
自分も昇格する

123 名前:120 mailto:sage [2007/11/15(木) 13:06:13 ]
>>121 そういわれればそうですねぇ。
まあ、今回のは特殊用途なので権限は気にしなくていいのですが・・・
ImpersonateLoggedOnUser 知らなかったので調べます。

124 名前:110 [2007/11/15(木) 15:11:57 ]
c++は使えないから、comとか無しで頼む
普通にapi関数を一本呼び出し(ループでも)で使えないの?

125 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 15:14:11 ]
無理だっつうの

126 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 15:15:27 ]
もう自分でdeflate書け

127 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 15:18:37 ]
>>124
例えCでもCOMは使えるぞ
いったい何を言ってるんだ?

128 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 15:20:07 ]
>>124
unzip32使え
嫌なら.net使え

いずれにせよスレ違いだからもう来なくていいよ

129 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 15:20:30 ]
(124は)CでCOMが使えない

130 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 15:25:45 ]
124では無いがCでCOMなんて面倒すぎるだろ
第1引数省略できねーしスマートポインタ使えねーしlpVtblとか一々書いてられるか



131 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 15:28:31 ]
で、だから何?

132 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 15:30:40 ]
124みたいな奴がCでCOMなんかに手を出すとリークしまくりの糞プログラムにしかならんだろうという事だ

133 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 15:35:16 ]
なるほど

134 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 22:58:01 ]
>>110
一般公開されていないよ、MSのZIP解凍/圧縮は。
APIもCOMも。

135 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 00:04:43 ]
このスレでいいのかどうか悩んだんですが
『Advenced Windows』を読む上で、Win32APIやOSの知識は前提になっているのでしょうか?
C/C++は一通りやったけどWindowsプログラムは未経験という段階の人間が、
>>1にある言葉を借りると「APIフックなど高度な事」が最終目標だという場合、
先に『プログラミングWindwos』などを読んでおくべきなのかどうかと思いまして。

136 名前:デフォルトの名無しさん [2007/11/16(金) 00:27:30 ]
www.kumei.ne.jp/c_lang/sdk4/sdk_346.htm

上記のプログラムでCreateWindowExにてウィンドウスタイルを
WS_OVERLAPPEDWINDOW としているのを
WS_POPUP に置き換えるとウインドウが表示されなくなってしまうのですがどうしてでしょうか?
枠線が消えるのはわかりますが、表示されていたはずのピットマップまで消えてしまうので
納得できませんでした。

よろしくお願いします。

137 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 00:31:11 ]
基礎的なAPIの知識は必要。
最終的にAdvenced Windowsを買う「べき」なのは間違いないと思うけど入門には向かない。
4倍ぐらいの量と金額のEffectiveC++ or STLを入門として買うようなもの。

個人的には APIで学ぶWindows徹底理解 ちゅうのが激しくオススメ

138 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 00:31:46 ]
どこでエラーが出てるか調べろ

139 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 00:33:44 ]
沢山のソースコードを読むほうがためになると思う。

140 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 00:53:01 ]
>>139に同意



141 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 01:07:23 ]
>>137-139
アンカーつけて喋れw

142 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 01:18:33 ]
はい

143 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 01:42:04 ]
いいえ

144 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 01:47:24 ]
はいえ

145 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 02:14:27 ]
ないあるよ

146 名前:135 mailto:sage [2007/11/16(金) 02:17:40 ]
>>137
分かりやすい解説、ありがとうございました。
おすすめいただいた書籍、目次見てたらおもしろそうなので、
是非目を通してみたいと思います。

147 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 05:04:23 ]
>>136
CW_USEDEFAULTはWS_OVERLAPPEDでないと効果がない。
WS_POPUPだと単にサイズゼロのウィンドウが画面外に作成されてしまう

148 名前:デフォルトの名無しさん [2007/11/16(金) 11:22:25 ]
TextOutで表示させる文字のフォントを変更したいのですが、
どのようにすればいいのでしょうか?

149 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 11:35:57 ]
SelectObject

150 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 11:58:39 ]
もっといえばCreateFont→SelectObject



151 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 12:04:38 ]
スレ違いの場合は誘導をお願いします。

今、生DVDにデータを書き込むプログラムを作っています。理想は、時系列で増え続けるデータを
direct recordingすることです。
ところがまず、Windows 2003 DDK添付のspti.cでWRITE DATA BUFFER operationがエラーコード2で
失敗する所ではまっています。
そもそも生DVDに対しては、spti.cでは書き込みは行えないのでしょうか?


152 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 13:33:13 ]
_beginthreadex関数で、void*型の引数で文字列を渡したいんですけど

  _beginthreadex(NULL, 0, mythread, (void*)str, 0, (unsigned int*)&thID);

でスレッド作成をして、スレッド内で

  char buf[256];
strcpy(buf, str);

としていますが、上手く引数を受け取れません。
表示させてみると「フフフ…」となります。


strの部分を&strとしたり、色々試してみたのですが上手くいきません。

おとなしくグローバル変数で値を渡したほうがよいのでしょうか…。
  

153 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 13:41:33 ]
呼び出している側の領域が、相手のスレッドが動作する前に消失しているんだろ。
馬鹿がよくやる。

154 名前:デフォルトの名無しさん [2007/11/16(金) 16:55:25 ]
よくわからないけど、とりあえずはキャストしないといけないんじゃない?

155 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 17:28:39 ]
>>152
複数作成したりどうしてもグローバル変数使いたくないなら
動的に確保してやればいい
ローカル変数のアドレスを渡すなんて問題外

156 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 18:43:29 ]
プログラミングに慣れてないならスレッドなんかに手を出すのはやめとけよ
ネット上のサンプルでも排他制御やアトミックオペレーションしてない、いい加減なソースが多いしな

157 名前:136 mailto:sage [2007/11/16(金) 20:11:06 ]
>>147
また一つ賢くなれました。
ありがとうございました。

158 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 08:31:31 ]
助けて下さい。
次の物を作らなければなりません。
hp.jpdo.com/cc009/1/img/1718.jpg

図形は、単純なのですが、作り方が分かりません・・・
アドバイス・参考文献 宜しくお願いします。
出来れば優しい神降臨求む

159 名前:158 mailto:sage [2007/11/17(土) 08:39:59 ]
i-bbs.sijex.net/imageDisp.jsp?id=gtrgtr&file=1195256319996o.jpg
上の画像は、出ないのでコチラ?

160 名前:158 mailto:sage [2007/11/17(土) 08:46:25 ]
画像は、サンプルです。実際は単純な○△◇等です。
言語は、Vidual c++ 6.0以降
ダイヤログから出発、ボタンを押すと各図形を表示
宜しくお願いします



161 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 08:53:38 ]
何が分かっていて、何がわからないの?
CあるいはC++はわかるならプログラミングWindowsでも読め。



162 名前:158 mailto:sage [2007/11/17(土) 09:16:18 ]
ダイアログからダイアログの飛ばし方が分からないです。
とばすのに必要なのは?

ダイアログでも図形は、書けるものなのか?
それに必要なのは?

とりあえずこの2点の知識お願いします。

163 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 09:30:39 ]
>ダイアログからダイアログの飛ばし方が分からないです。
ダイアログを親ウィンドウにしてダイアログを生成する

>とばすのに必要なのは?
お前のプログラミング知識

>ダイアログでも図形は、書けるものなのか?
描ける (書けるって何だよ)

>それに必要なのは?
お前のプログラミング知識

164 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 09:44:40 ]
宿題か

>ダイアログからダイアログの飛ばし方が分からないです。
>とばすのに必要なのは?

DialogBox
msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpwinui/html/_win32_dialogbox.asp

これだとダイアログリソースが必要になる

CreateWindowExでも書けると言えば書ける
www.sm.rim.or.jp/~shishido/mdialog.html

こちらは普通にウィンドウを作るのでリソースは必要ない

>ダイアログでも図形は、書けるものなのか?
>それに必要なのは?

例示された奴をとりあえず書けって言われたら
BeginPaint、EndPaint、GetStockObject、FillRect、LineTo、MoveToEx、SetPixel辺りで書くかな

訳分からなければWin32 API入門の30章あたりまで読め

165 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 10:49:57 ]
やさしいインタネッツだな

166 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 11:03:22 ]
ダイアログにその画像貼っとけ

167 名前:158 mailto:sage [2007/11/17(土) 11:36:02 ]
>>164様 他
有難う御座います・・・
読んだけど、分け分から無いです。
取りあえず”Win32 API入門”を買って読みます。
必死なので、また来ます。
それでは、宜しくお願いします。

168 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 11:36:50 ]
つーかMFCだろスレ違い

169 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 11:43:41 ]
>>167
Win32 API入門って「サイト名」なんだけどね

>>168
少なくとも164に上がってんのはほぼ全部API

170 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 12:05:01 ]
リソースとして埋め込んだビットマップを
普通にファイルからビットマップ読み込んだ時のように
CreateDIBSectionする方法って無いでしょうか?

リソースとして埋め込んだビットマップで
アルファブレンド等をしたいのでピクセル列が欲しいんです、W98SEです



171 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 12:10:19 ]
とりあえず、LoadImageにLR_CREATEDIBSECTION使っとけばいいんじゃね?
暇なら、FindResourceから始める、という手もあるけど。

172 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 12:29:05 ]
今時98SEかよ

173 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 12:30:55 ]
>>171
どうもありがとう、両方試してみます

174 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 12:38:48 ]
アクティブなウインドウのファイル名を取得するコードを書いてます。
ネットではぴったりのコードがなく、つなぎ合わせで
なんとかこんな感じでまとめたのですが、よくわからない
のもあって、うまく動きません。
環境はBCB WinXPです。
/*
//ttp://m--takahashi.com/bbs/pastlog/11800/11731.html
1) GetWindowThreadProcessId() で HWND から ProcessID を得る
2) OpenProcess() で ProcessID から hProcess を得る
3) EnumProcessModules() で hProcess から hModule を得る
4) hProcess / hModule を使って GetModuleFileNameEx() でヤッター!!
*/
DWORD dwPID;
DWORD dwProcessID = GetWindowThreadProcessId(GetForegroundWindow(), &dwPID);
DWORD ProcessIDs[1000]; /* プロセスIDの一覧 */
HANDLE handle = OpenProcess(PROCESS_ALL_ACCESS, 0, dwProcessID);

DWORD ReturnSize; /* プロセスID一覧の取得結果のサイズ */
EnumProcesses(dwProcessID, sizeof(dwProcessID), &ReturnSize);//この行は?
if(handle)
{
HMODULE hMod;
DWORD size;
char fname[MAX_PATH];
EnumProcessModules(handle, &hMod, sizeof(hMod) ,&size);
GetModuleFileNameEx(handle, hMod, fname, sizeof(fname));
CloseHandle(handle);
ShowMessage(fname);
}


175 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 12:45:03 ]
GetWindowThreadProcessIdの返り値はスレッドID

176 名前:デフォルトの名無しさん [2007/11/17(土) 12:45:50 ]
途中で送信しちまった

GetWindowThreadProcessIdの返り値はスレッドIDなのに
OpenProcessにスレッドID渡してるぞハゲ

177 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 12:48:17 ]
EnumProcessesの第一引数

178 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 12:49:33 ]
そもそもEnumProcessesいらないだろこの場合
HWNDからProcessID取るって言ってんだから

179 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 12:59:47 ]
なんかもうアレ

180 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 13:12:37 ]
DWORD dwPID;
DWORD dwProcessID = GetWindowThreadProcessId(GetForegroundWindow(), &dwPID);

噴いたwww



181 名前:デフォルトの名無しさん [2007/11/17(土) 14:47:18 ]
wiodwsXP
visual studio .net
にてwindowアプリケーションを作っておりますが、
Heap corruption detected at 038A9008(最後の数字は毎回変わる)
のような文章が「出力」の欄に出て警告もなしに勝手に終了します。

ググッた結果、どうやら領域確保あたりが怪しいらしく
mallocやfree関数を調べましたが、おかしな点は見当たりませんでした。

他にどこらへんが怪しいと思いますか?

182 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 14:49:22 ]
mallocやfree周辺

183 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 15:00:56 ]
使ってるOSがおかしいよ

184 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 15:06:36 ]
ヒープオーバーランだろ

185 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 15:09:28 ]
>>181
プログラムのどこかで、メモリの確保した範囲外に書き込みをして、ヒープを破壊しまったんだ
プログラムのどの部分がどこに影響を与えるとかほとんど予測できないから、
問題が出なくなるまで怪しい場所をひとつずつコメントアウトして原因を絞っていくしかない

186 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 15:18:37 ]
初心者は文字列用のバッファが怪しい
終端NULLが良くオーバーランしてる

187 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 15:22:52 ]
ヌル文字はNULと書くようにしようぜ

188 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 15:23:45 ]
>>181
>>181の頭が怪しい

189 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 16:20:32 ]
APIスレに来てmallocとかfreeとか言ってるのが気に入らない
HeapAlloc使えよ

とかいう冗談はさておきWin32API関係ない。C初心者スレいってソースすべてうpすれば早く片付くかもね

190 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 16:34:58 ]
>>185
ありがとう。めんどくさそうだけど頑張ります。

>>186
参考にしてみます。ありがとうございます。



191 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 17:17:43 ]
>>171のFindResource()のほうから調べながら試していたんですが
(BITMAPFILEHEADER)LockResource()
(BITMAPINFO)LockResource()
とヘッダとインフォのメモリへのポインタを取得して
インフォからCreateDIBSection()でHBITMAPを作成する所まではできたんですが
DIBSectionのほうで使用するメモリに
読み込んだリソースの方のメモリをコピーする所で躓きました

LockResource()でピクセル列の先頭ポインタを取得するために
どういうキャストをすれば良いのかが分からないので困っています
思いつくことを試しながらCopyMemory()しましたがどれも強制終了してしまいます

192 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 17:38:41 ]
windows XP
VC++ 2003
SetWindowRgnでウィンドウスタイルが変わらないようにするには
どうすればいいですか?
SetWindowRgnしなければXPスタイルなのに、関数を呼ぶと
コマンドプロンプトと同様のスタイル(クラシック?)になります
ウィンドウはVC++2003のWin32プロジェクトで新規作成した
雛形そのままです

193 名前:デフォルトの名無しさん [2007/11/17(土) 18:11:14 ]
ANSIビルドのプログラムで、ウィンドウ内に作成したエディットコントロールに
ユーザーによって入力されたテキストを取得して、それをUNICODE形式のファイルに保存しようとしています。

処理の流れとして、エディットコントロール内のテキストの長さ(バイト単位)を取得して
→ 動的にメモリ確保
→ WideChatToMultiByteでUNICODE文字列に変換
→ WriteFile でファイルの先頭2バイトにBOMを書き込み
→ 変換後の文字列をWriteFile ファイルに書き込む

こういう風にしています。
ただ、エディットコントロール内のテキストの長さを取得する段階でつまづいてしまって。。
なんだか、2バイト文字が正確に数えられていないようなんです。
エディットコントロール内のテキストが、「こんにちはwindows」のようになっていた場合。
この文字列「こんにちはwindows」のサイズ(バイト数)を正確に掴むためにはどうすればいいんでしょうか?

ちなみにMFCはわかりません。

194 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 18:23:31 ]
GetWindowTextLength(のA)でいけるぞ。

comctl32.dllバージョン6使っていたらUTF-16単位での文字数になるかもしれないが、
そのときには、そもそもNT系のはずで、W系APIを直接使って
UNICODE文字列を取得してしまえばいい。

195 名前:193 [2007/11/17(土) 18:51:26 ]
lstrlen()でも同じ症状になるんですが、
例えば

ANSIビルド版のプログラムでは
lstrlen(TEXT("hello") = 5
lstrlen(TEXT("こんにちは")) = 10
ですが

UNICODE版では
lstrlen(TEXT("hello") = 10
lstrlen(TEXT("こんにちは")) = 10
となります。

確認してみましたが、GetWindowTextLengthでも同じ結果でした。
バイト数は分かりますが、文字数が分からないに思うんですが・・
確かにメモリ確保にはバイト数だけ分かればいいんですが、そもそもGetWindowTextLengthって文字列の長さ(=文字数)
を取得する関数という認識で間違いないですよね?

UNICODE版は、文字数とバイト数(文字数×2)に何の不思議も無いんですが
ANSI版は、文字数とバイト数がバラバラというか。。
ダブルバイト文字とシングルバイト文字が一緒くたでわかりにくいというか・・


196 名前:193 [2007/11/17(土) 18:56:10 ]
lstrlen(TEXT("hello") = 5
lstrlen(TEXT("こんにちは")) = 5
でした。

うぉー混乱する000

文字列を取得する関数って、
ANSI版だと、文字列のバイト数
UNICODE版だと、文字列の文字数
になってる??みたいですgあ・・

197 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 19:02:06 ]
ユーザーが手入力するならたいした文字数じゃないだろうから、
単純にバイト数の倍確保しておけばいいんじゃね?

198 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 19:07:28 ]
キーボードやマウスのボタンを押した時にはウインドウメッセージが出ますが、
ゲームパッドのボタンを押した時にはWMは出ているのでしょうか?
出ていればそのメッセージを教えて頂きたく思います。

60fpsのゲームループの中にゲームパッド情報取得の「〜->GetDeviceState〜」を書くと
まれにエラーが出てしまうため、他の方法を模索しています。

199 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 19:10:23 ]
>>198
あるわけない

200 名前:193 [2007/11/17(土) 19:18:51 ]
>>197
うーん。そうなんだけどねぇ。
あとMultiByteToWideCharの最後の引数は文字数を指定しろってなってるから、
これが原因なのかどうか分からないけど、UNICODEファイルとして保存したとき
最後にゴミがつくんです。
一応メモリ確保はGlobalAlloc(GPTR, dwSize)とやってますんで、0で初期化されてるはずなんだけど。。
どこがおかしいのかが分からないという。。。



201 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 19:58:33 ]
>>191
FindResourceの方は半ば冗談だったのだけどな……

LockResourceで先頭のアドレスが取れるのだから、後はそれを手繰っていくだけ。
中身は通常のビットマップのファイルとほとんど一緒。
ただし、BITMAPFILEHEADER部分が省かれているので、その点には注意。

202 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 20:11:42 ]
ウィンドウのメニュー部分を透明にすることは出来ますかね?

203 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 20:12:15 ]
C++で静的な仮想関数を使用する方法 or 参考HPを教えてください。

やりたいことは、_beginthreadexでスレッドクラスを作成して、
子クラスで任意の子メソッドを呼び出すことです。
つまづいている点は、_beginthreadexのコールメソッドが、
Staticなため、子クラスがオーバーライドできなくて困ってます。

ちなみに、以下のHPを参照しましたが、
これよりスマートな方法があれば教えてください!

よろしくです!

C++で遊ぼう「静的仮想関数」編
ttp://www.ksky.ne.jp/~seahorse/cpp/staticvirtual.html

204 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 20:18:16 ]
>>203
「スレッドクラス」「子メソッド」「コールメソッド」「子クラスがオーバーライド」の意味が
わかりません。

エスパーカモン。

205 名前:203 mailto:sage [2007/11/17(土) 20:23:21 ]
203です。スレッドだと話がややこしいのでサンプル書きました。
以下で、BとCクラスのtest()を呼んだとき、BとCのtest1()を読んでほしいという質問です。
よろしくおねがいします。

#include <iostream>
using namespace std;
class A{
public:
static void test1(void){cout << "A" << endl;}
void test(void){test1();}
};
class B : public A{
public:
static void test1(void){cout << "B" << endl;}
};
class C : public A{
public:
static void test1(void){cout << "C" << endl;}
};
int main(int argc, char *argv[]){
B *bbb = new B();
C *ccc = new C();
bbb->test();
ccc->test();
delete bbb;
delete ccc;
return 0;
}
実行結果:
A
A

206 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 20:32:34 ]
>>203
やりたいのはこういうことじゃないか?
静的な仮想関数なんてわけのわからないものは必要ない

class A{ public: virtual void test1(){ cout << "A" << endl; }};
class B{ public: virtual void test1(){ cout << "B" << endl; }};
class C{ public: virtual void test1(){ cout << "C" << endl; }};

void thread_main(void *p){
 static_cast<A*>(p)->test1();
}

int main(int argc, char **argv){
 B *bbb = new B();
 C *ccc = new C();
 _beginthreadex(NULL, 0, thread_main, bbb, 0, NULL);
 _beginthreadex(NULL, 0, thread_main, ccc, 0, NULL);
 ....
}

207 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 20:34:14 ]
>>205
static を virtual に変えて終了。

Windows API 関係ないなら C/C++ スレいけば?

208 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 20:46:05 ]
>>205
thisポインタで自分を取り戻すんだ!

209 名前:203 mailto:sage [2007/11/17(土) 20:53:03 ]
203です。
>>207,206
_beginthreadexで実行する関数が、GlobalかStaticの制限があるのです。
また、スレッドクラスを継承するクラスは、簡単に使えるようにしたかったのです。
わけあって、MFC等のライブラリを使用できないのです。
>>208
thisを渡す方法も検討したのですが、これも上記Win32APIの理由で・・・

C++すれ逝って来ます。どうもです。

210 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 20:55:58 ]
>>209
> _beginthreadexで実行する関数が、GlobalかStaticの制限があるのです。

嘘だろ?どこに書いてある?

_beginthreadex のせいでこんなことになってるなら C++ スレに逝っても
迷惑なだけだろう。



211 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 20:59:00 ]
>>209
>thisを渡す方法も検討したのですが、これも上記Win32APIの理由で・・・ 

どの理由だよ
thread_mainはグローバル関数なんだから制限の範囲内じゃん

212 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 21:08:43 ]
>>201
カスタムリソースにも興味があったのでFindの方やってみようかなと思って
アドバイスありがとう、やってみます

213 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 21:32:25 ]
class A {
public:
virtual unsigned threadProc () = 0;
static unsigned threadProcStatic (void * arglist) {
return ((A *)arglist)->threadProc(); }
void Start () {
_beginthreadex(threadProcStatic, this); // 引数適当 }
};
class B : public A {
public:
virtual unsigned threadProc () { // なんか }
};
こんな感じじゃ駄目なのか? >>209

214 名前:203 mailto:sage [2007/11/17(土) 22:14:30 ]
203です。Win32APIよくわかってなくてスイマセン。

>>210
 _cdeclか_clrcallで渡すことが規約のようです。global or 非staticなメンバ関数を渡せるなら教えてください。
>>211
 混乱しててスイマセン。_beginthreadexとthisをどううまく使えば良いのかわかりませんでした。
>>213
 ありがとうございます!これで動きました!一度staticな関数を噛まして非staticを呼ぶのですね。

皆様どうもありがとうございました。

215 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 22:32:28 ]
>>214
>213 は >206 と同じことなわけだが。

216 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 23:28:01 ]
>>195
>ANSI版は、文字数とバイト数がバラバラというか。。
>ダブルバイト文字とシングルバイト文字が一緒くたでわかりにくいというか・・
それが、可変長であるダブルバイト文字列というもの。
それに嫌気がさしたから、UNICODEは1文字が固定長になっている。
#というはずだったが現実そう上手くは行かず。

>>196
ANSIだとchar型、UNICODEだとwchar_t型でどれだけの要素数を占めるのかと考えればよい。

217 名前:デフォルトの名無しさん [2007/11/18(日) 00:01:51 ]
>>215
206は再利用ということを考えてないっぽい

218 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 00:02:44 ]
このようなのを作りたいんですが、どのような関数を使えばできますか?

ttp://www.hsjp.net/upload/src/up5686.jpg

219 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 00:08:52 ]
CreateListViewMitainaControl()

220 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 00:10:59 ]
>>214
>>210は間違っている気がするな



221 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 00:12:32 ]
>>219
ありがとう。そんな便利な関数があるんだね
CreateListViewでググって勉強してくる

222 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 00:12:37 ]
>>219
Mitainaワロタw

223 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 07:03:24 ]
>>199
やっぱり無いですか。調べても出てこないわけだ
エラー無くす方向で頑張ってみます

224 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 08:12:52 ]
>>198-199
無いこともない。joySetCaptureでググれ。

といっても、これを使ったところで全く解決にはならないけどな。
結局自分の代わりにポーリングして監視してくれるだけ。

ゲームパッドはキーボードやマウスのようにmake/breakコードを
送信するいわゆる割り込みデバイスではないから、能動的に
状態の変化を受け取るのは不可能。

225 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 08:47:25 ]
画面上の任意のテキストを右クリックして、文字列を取得するにはどうしたらよいでしょうか。
Babylon ttp://www.babylon.com/jpn/ のような感じで、Webブラウザに表示されたWebコンテンツでも、
ウィンドウのタイトルの文字列でも、自由にテキストを取得できるようにしたいです。
調べた限りでは、クリックした座標を元にウィンドウハンドルを取得し、該当する文字列を*丸ごと*取得することはできます。
しかし、*クリックした付近の文字列*を取得することが必要なのです。何かよい方法はありますでしょうか。

226 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 09:09:23 ]
先に言っておくが汎用的な方法は無い

テキストが表示されてるのがEDITクラス(エディットコントロール)なら
EM_GETSELで選択範囲を取れるから
WM_GETTEXTでテキストを取ってから選択範囲を切り出せばいい

ブラウザの場合は表示されてるのはキャプションじゃないのでもっと別の方法が必要になる
具体的には
IWebBrowser2→IHTMLDocument::selection→
HTMLElement::createTextRange→IHTMLTxtRange::findText
って感じで取る

まあ無理だろう

227 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 09:35:55 ]
Babylonは画面上の「画像」をOCRで読み取ってる
だからIEだろうがFirefoxだろうが、画像中の文字だろうが読み取れる

同等の物を作るのは相当な困難が予想されるが、まぁがんばれw

228 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 10:32:19 ]
>>227
>Babylonは画面上の「画像」をOCRで読み取ってる
これ、まじ?
("O(ptical)"では無いだろうというツッコミは置いといて、)
ほんとに、画像→文字認識してるの?


229 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 10:38:13 ]
>>228
Babylonの説明にそう書いてあるだろう
例に出してるものくらいちゃんと調べろよw

230 名前:228 mailto:sage [2007/11/18(日) 10:48:08 ]
>>229
ごめりんこ




231 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 11:01:02 ]
どこの誰が書いたかわからんヨタかもしれん話をいちいち調べるかよw

232 名前:158 mailto:sage [2007/11/18(日) 11:05:38 ]
昨日の158です。再び助けて下さい。

i-bbs.sijex.net/imageDisp.jsp?id=gtrgtr&file=1195351075500o.jpg
ダイアログのボタンを押して、メッツセージBoxを表示させました。

これを、異なるダイアログを表示させたいです。
例 i-bbs.sijex.net/imageDisp.jsp?id=gtrgtr&file=1195351124662o.jpg

表示させる記述と方法がわかりません。
出来れば具体的な記述をしてくれると有り難いです。
どなたか、ご教授お願いします。

233 名前:158 mailto:sage [2007/11/18(日) 11:09:45 ]
昨日の記述
>>158
>>159
>>160

助けてくれた神
>>164

234 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 11:12:15 ]
>>231=馬鹿

235 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 11:18:43 ]
>>232-233
だからMFCはスレチだっつーの

236 名前:デフォルトの名無しさん [2007/11/18(日) 11:59:39 ]
>>232
普通にボタンがクリックされたメッセージ処理に、DialogBoxかDialogBoxParamを呼び出せばいいだけじゃないの?
昨日の質問というのは見てないので分からんけど、メッセージボックスだってDLL内でリソース確保して
DialogBoxParam関数を呼び出しているだけのような気がする
モーダルダイアログボックス

237 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 12:05:44 ]
>>232
ダイアログから複数のモードレスダイアログを開くサンプルを、
C+Win32で書いてみたぞ。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5289.zip
サブダイアログは、管理を楽にするために、
一度作成されると閉じても非表示になるだけの仕様。
宿題のメインはここじゃないのだろうから、こんなもんでいいんじゃね?

238 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 12:16:12 ]
宿題お願いすると簡単に答えてくれるスレはここですか?

239 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 12:26:45 ]
宿題スレでやれ

240 名前:158 mailto:sage [2007/11/18(日) 14:04:35 ]
>>236
>>237様 他
有難う御座います・・・
けれど、駄目だ Orz 分け分からないです。

void CKadai1119Dlg::Onmaru()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
//MessageBox("○の表示");
DialogBox(hInst, (LPCTSTR)IDD_maru, hWnd, (DLGPROC)About);

}

IDD_maru ダイアログを新たに作成し、取りあえず付けました。
当然エラー 
C:\Documents and Settings\あ\デスクトップ\kadai1119\kadai1119Dlg.cpp(178) : error C2065: 'hInst' : 定義されていない識別子です。
C:\Documents and Settings\あ\デスクトップ\kadai1119\kadai1119Dlg.cpp(178) : error C2065: 'hWnd' : 定義されていない識別子です。
C:\Documents and Settings\あ\デスクトップ\kadai1119\kadai1119Dlg.cpp(178) : error C2065: 'About' : 定義されていない識別子です。



241 名前:158 mailto:sage [2007/11/18(日) 14:08:11 ]
以上のエラーが出ています。
根本的に知識が足りないです。
サンプルプログラムや文献を漁ってみます。

とても、237様に感謝してます。参考にして頑張ります。

242 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 15:02:06 ]
MFCで無意味にDialogBoxなんてAPIを使おうとする馬鹿初めて見た

>>241
いい加減こっち行けつってるだろ
日本語読めんのか?

■MFC相談室 mfc18d.dll■
pc11.2ch.net/test/read.cgi/tech/1185917008/

243 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 15:02:35 ]
基礎からやれってことだ
横着したって無駄

ここは宿題スレではない

244 名前:デフォルトの名無しさん [2007/11/18(日) 16:00:50 ]
俺は、応援してるぞ158w

245 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 16:07:57 ]
>>244
自演乙

246 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 16:20:19 ]
      __ 
     /__.))ノヽ
    .|ミ.l _  ._ i.)    
   (^'ミ/.´・ .〈・ リ   
   .しi   r、_) |   しゃぶらないか?
     |  `ニニ' /     
    ノ `ー―i´     
 / ̄    '   ̄ヽ
/   ,ィ -っ、    ヽ  
|  / 、__う人  ・,.y i   
|    /     ̄ | |  
ヽ、__ノ       |  |  
  |     。   | /  
  |  ヽ、_  _,ノ  丿
  |    (つ)   |
  |    / ヽ   |

247 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 16:23:25 ]
>>240
デスクトップwww

248 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 18:25:09 ]
がんばれ158w

249 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 18:54:46 ]
エディットボックスを透明にすることは出来ますかね?

250 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 18:59:10 ]
非表示にすればいい



251 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 19:11:18 ]
頭いいな

252 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 19:25:23 ]
間違えました。
透明な背景を持つようにするにはどうしたらいいですかね?

253 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 19:34:23 ]
レイヤードウィンドウでカラーキーを設定する

254 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 21:05:18 ]
透明なエディットボックスって何の役に立つの?

255 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 21:13:38 ]
仕事中に官能小説でも書きたいんジャマイカ?

256 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 21:19:35 ]
ググッてるんですが、中々難しいです。
>254
機能的にはなんの役にも立ちません。
しかし、描画してあるビットマップがエディットボックスの背景色と重なるのは少し気になります。

257 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 21:59:08 ]
1. WS_EX_TRANSPARENTを設定する
2. WM_CTLCOLOREDITでNULL_BRUSHを返す

これで透明にならなければEditコントロール自体の問題だからMSに文句言うか諦める

258 名前:デフォルトの名無しさん [2007/11/18(日) 23:32:39 ]
.NETでも探しているのですが、Win32APIでも探しています。

Windowsのユーザーアカウントの一覧リストをプログラム上で表示して
そこからアカウントを選択するようなことをする場合、ユーザーアカウントの
リストを得るためのクラスやAPIがあればうれしいのですが、どのようなものがある
でしょうか?

また、そのリストを、Domain上のユーザーアカウントに対しても取得したい
場合にも有効なクラスやAPIであれば尚ありがたいです。何卒よろしくお願いします。


259 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 00:07:56 ]
static HBRUSH hBrush;

switch (msg) {
case WM_CREATE:
hBrush = CreateSolidBrush(123);
hEdit = CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT", "",
WS_CHILD | WS_VISIBLE | WS_BORDER | ES_AUTOHSCROLL,
100, 10, 200, 25, hWnd, (HMENU)ID_EDIT, hInst, NULL);
SendMessage(hEdit, EM_SETLIMITTEXT, (WPARAM)63, 0);

case WM_CTLCOLOREDIT:
SetBkColor((HDC)wParam, 456);
return ((LRESULT)hBrush);
break;
こうですかね?

260 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 00:09:20 ]
標準機能では背景を透過させることは出来ない。
以上



261 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 00:16:47 ]
dllから、そのdllを読み込んだexeにメッセージを渡したいのですが
どちらもウインドウを持たない場合はどのような手段が考えられるでしょうか。

262 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 00:23:40 ]
メールを送信する

263 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 01:05:11 ]
メモリマップトファイル
アトム

264 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 01:26:11 ]
>>261
コールバック関数用意しとけばいいんじゃね?

265 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 01:55:32 ]
非同期でよければexeからdll呼び出すときに変数のポインタ渡せばいいんじゃない?
コールバックが一番確実だろうけど。

266 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 02:10:55 ]
>>259
hBrush = CreateSolidBrush(123);
SetBkColor((HDC)wParam, 456);

ナンダコレw

267 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 07:00:16 ]
Process Explorerでプログラムのsuspendとresumeが可能なんですが
どんなAPIを使ってるんでしょうか?

268 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 07:18:36 ]
ねいてぃう゛API

269 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 09:03:22 ]
スレッドを列挙してSuspendThread連打

270 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 13:18:16 ]
たぶんNtSuspendProcess
調べてもないけど



271 名前:261 mailto:sage [2007/11/19(月) 14:22:54 ]
>>262-265
レスありがとうございます!
コールバックを実装してみようと思います。

272 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 17:31:21 ]
リソースからではなく、ファイルからアイコンを取得してイメージリストに
追加したいんですが、どういう方法をとればいけるんでしょうか。

273 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 17:37:54 ]
LoadLibraryで開いて、LoadIconなりLoadImageなり

274 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 17:55:20 ]
すいません、dll内のものじゃなくて、iconファイルやbmpからです。

275 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 18:39:23 ]
LoadImage で LR_LOADFROMFILE

276 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 19:26:25 ]
>>275
ありがとうございました。
解決しました。

277 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 20:09:40 ]
透過出来ないのはなぜなんですか?

278 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 20:11:24 ]
何が?

279 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 20:15:08 ]
人体

280 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 20:28:59 ]
人体より衣服を透過したい



281 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 20:31:50 ]
夜店で売ってるよ

282 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 20:54:13 ]
>>280
ユーザーモードでは他人の衣服を透過させる事はできない
まずはターゲットに対しての特権取得を行う必要がある

283 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 21:17:45 ]
>>282
どうあがいても、無理ってことですか?

284 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 21:39:50 ]
衣服の透過は実装例とか見つからないので詳しくはわからないけど、
管理者権限でも衣服にアタッチできないんなら諦めたほうが素直じゃないか?

285 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 22:13:16 ]
透過した衣服を着てくれる彼女を作ればいいよ

286 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 22:22:54 ]
境界線をクリックした時に出る
変な網目のようなバーを描画する関数ってあるんでしょうか?

287 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 22:27:49 ]
あるといえばあるし、ないと言えばない。
あらゆるプログラムは関数を組み合わせて書く。


288 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 23:15:04 ]
>>286
DrawFocusRect

289 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 01:53:40 ]
>>286
白黒のブラシを作って、それで反転させる。

290 名前:デフォルトの名無しさん [2007/11/20(火) 06:43:28 ]
1つのアプリでコンソールを複数表示したいのですが、どうすればいいですか?
stderr用とかstdout用とかにわけたいんですが。



291 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 07:30:24 ]
コンソールは各プロセスに 1 つしか割り当てることができません。
すでにコンソールを持っているプロセスが AllocConsole 関数を呼び出すと失敗します。
FreeConsole 関数を使って現在のコンソールからプロセスを切り離すと、
AllocConsole 関数を呼び出して新しいコンソールを作成することができます。
AllocConsole 関数は、新しいコンソールの標準入力ハンドル、標準出力ハンドル、
標準エラーハンドルを設定することもできます。
標準入力ハンドルはコンソールの入力バッファのハンドル、
標準出力ハンドルと標準エラーハンドルはコンソールの画面バッファのハンドルです。
ハンドルを取得するときは、GetStdHandle 関数を使います。
この関数は主に、グラフィックスアプリケーションでコンソールウィンドウを作成するときに使います。
グラフィックスアプリケーションは、コンソールなしで初期化します。
コンソールアプリケーションは、切り離されたプロセスとして作成する
(CreateProcess 関数を呼び出すときに DETACHED_PROCESS フラグをセットする)
場合を除いて、コンソール付きで初期化するのが普通です。

ttp://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpfileio/html/_win32_allocconsole.asp
CreateConsole
AllocConsole
FreeConsole

292 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 08:25:51 ]
コンソールを持つ子プロセスを複数用意して
CreateProcessの時に親プロセスのstderrやらstdoutをそれぞれのstdinに当ててしまえば可能かも名

293 名前:デフォルトの名無しさん [2007/11/20(火) 09:41:19 ]
ブラウザのお気に入りとかのウィンドウのサイズを変える境界線みたいなのってどうやって作るんですか?
境界線を移動できるオプションをウィンドウに設定しても、動くのは一つのウィンドウだけで、
その他のウィンドウはそれに反応してリサイズされないですよね?あの境界線ってどうやって作るのでしょうか?

294 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 09:47:10 ]
リサイズされるたびに再計算してるだけ

295 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 10:34:59 ]
>>293
「スプリッタウィンドウ」 で ググれ

296 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 13:03:37 ]
>>288 >>289
ありがとう、試してみます

297 名前:デフォルトの名無しさん [2007/11/20(火) 14:21:09 ]
>>295
ありがとうございます

298 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 14:24:56 ]
でも画面DCに反転ブラシで書く方法はAeroGlass環境だとクソ重くなるぞ
スプリッタならエクスプローラみたいにダイレクトにサイズ変更するようにしたほうがいい

299 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 15:48:34 ]
普通はスプリッタウィンドウの中に子ウィンドウを置くだろ

300 名前:デフォルトの名無しさん [2007/11/20(火) 20:19:01 ]
スプラッタ?



301 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 20:52:48 ]
バケラッタ!

302 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 20:58:28 ]
(/O^)/

303 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 20:59:44 ]
はらへった

304 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 23:08:21 ]
hDCはEndPaintで開放されるのでしょうか?


case WM_PAINT:
// クライアント領域を再描画する処理
hDC = BeginPaint(hWnd, &ps);
TextOut(hDC, 0, 0, s, lstrlen(s));
EndPaint(hWnd, &ps);
return 0;

305 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 23:09:32 ]
そうだよ。PAINTSTRUCTの中にhDCが保持されているので、
そこからEndPaintは解放するデバイスコンテキストを見付ける。

306 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 23:20:22 ]
なるほど、そういうことだったのですね
デバイスコンテキストはプロシージャを抜けるまでに開放しないと
やばいことになる(どうやばいのかは知りませんが)と聞いていたので
どこで開放してるのか必死になってさがしまつた

307 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 12:56:48 ]
しかしPAINTSTRUCTの中のhdcと同じもの返すって普通に考えたら謎な実装だな。
文字列系関数で渡したバッファのポインタそのまま返すのと似た感じでコーディング楽にするためなんだろうか。

308 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 13:54:58 ]
>>307
BeginPaint の動作を勘違いしていると思う・・・

309 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 14:01:02 ]
そうか?
>>307はpsのメンバにもhdcあるのに、戻り値でも返してるって言ってるだけでは?

310 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 14:32:29 ]
確かに
別に戻り値は普通にT/Fで良いんだけどな

いいけどさ



311 名前:307 mailto:sage [2007/11/21(水) 14:37:28 ]
>>308
>>309の通り。

かなりくだらないレベルかもしれんが、PAINTSTRUCTとHDCを両方定義するのが無駄と思って
戻り値は無視(NULLチェックだけ)してPAINTSTRUCTのhdcだけを使うようにしてる。

312 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 15:24:07 ]
VBのWithのようなものがあったら俺もそうするな。
まあ今でもPAINTSTRUCTの変数名はいつもたった2文字、psだけど。

313 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 16:42:38 ]
Windows Version 1 の頃の
TextOut(BeginPaint(hWnd, &ps), 0, 0, s, lstrlen(s));
の名残


314 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 18:43:50 ]
色はつけれるけど、透過ができねぇぇぇえええ!!!

315 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 18:53:36 ]
つGDI+

316 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 19:01:43 ]
hdcはWM_PAINTのWPARAMで渡される訳だが

317 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 19:14:53 ]
>>316
一体いつの時代だ?
msdn2.microsoft.com/en-us/library/ms534901.aspx
wParam 
This parameter is not used.

318 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 19:35:11 ]
>>316
それは WM_PRINT じゃ?

319 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 19:37:50 ]
WM_PRINTと勘違いしてないか?

320 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 20:28:56 ]
>>317
URL貼るなら最後まで読めよw

> For some common controls, the default WM_PAINT message processing checks the wParam parameter.
> If wParam is non-NULL, the control assumes that the value is an HDC and paints using that device context.



321 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 20:38:07 ]
そんなイレギュラーな仕様は常用すべきではないだろう

322 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 20:58:36 ]
>>321
お前英語苦手だろw

もう少し詳しく説明されてる古いWin32SDKヘルプの説明を貼ってやろう
> Handle to the device context to draw in. If this parameter is NULL, use the default device context.
> This parameter is used by some common controls to enable drawing in a device context other than the default device context.
> Other windows can safely ignore this parameter.

323 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 22:11:02 ]
何にせよまずはBeginPaintが基本ということでいいのでは?

324 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 23:09:27 ]
>>314
ttp://www.microsoft.com/japan/msdn/windows/windows2000/layerwin.aspx
ttp://homepage1.nifty.com/ken1/win2kapi.html
ttp://homepage1.nifty.com/kazubon/progdoc/tclock/oldwin.html
ttp://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpwinui/html/_Win32_SetLayeredWindowAttributes.asp


325 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 15:20:45 ]
エクスプローラでマイコンピュータを開くと表示される
「ローカル ディスク」や「CD ドライブ」といった文字列を取得するには
どうすればいいのでしょうか?
30分以内に小倉優子ばりのおっとりキャラで答えてください

326 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 15:23:32 ]
shell32.dllからGetResource

327 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 15:36:31 ]
SHGetFileInfoで取れぬのか?

328 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 15:41:26 ]
>>327
おおいけそうな予感
ありがとー☆ミ

329 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 17:28:11 ]
memo

ttp://www.microsoft.com/technet/scriptcenter/scripts/desktop/special/default.mspx?mfr=true


330 名前:デフォルトの名無しさん [2007/11/22(木) 17:37:49 ]
割り込んで申し訳ないのですが、教えてください。
DirectX全画面のゲームの上から、文字や画像を表示する方法はないでしょうか?
(レイヤードウィンドウとかはダメでした。。。)



331 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 18:36:06 ]
グラフィックカードに直接アクセスして
描画領域くりぬいてるから駄目なんじゃない?


332 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 18:42:35 ]
よくチートツール類がやってる方法:

プロセスに潜り込んでIDrectDraw***を乗っ取り、そのBlt()あるいはBltFast()に割り込んで自分で書く。

333 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 19:19:22 ]
>>330
俺は普通に枠なしウィンドウで文字表示したことあるけど
べつにその画面内に描画したいわけじゃないんだろ

334 名前:デフォルトの名無しさん [2007/11/22(木) 19:37:41 ]
330です。
説明不足ですんません&ありがとうございます。

よくMODツールなんかで見かけるやつです。
(レースゲームなんかでスピードメータを追加する改造など)

でもどうやったら、DirectDraw***のオブジェクトを乗っ取れるか?
それができたらやりたい放題ですね。
そこをぜひぜひお願い申し上げます。

(僕のプログラミングレベルでは・・
デバイスコンテキスト取ってDrawText、BitBltぐらいしかできないっす。)

335 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 19:47:33 ]
そのレベルじゃ厳しすぎるだろ・・・

336 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 20:06:50 ]
>>334
(1) APIフックで CreateDirectDrawの類をフックして順次wrapperオブジェクトを返す
(2) 途中まで同じで、wrapperは使わず IDirectDraw9Device 等の vtbl を書き換える
のどっちかかな。

APIフックの仕方やvtblの書き替え方を自分で見つけられる程度の実力があれば、
地味にやってけばできるでそ。

337 名前:デフォルトの名無しさん [2007/11/22(木) 20:41:49 ]
334です。
>>335 やっぱり?
>>336 ありがとうございやーす。

とりあえず正しい方向へ行けるのでホッとしました。
あとは学習あるのみ・・・

338 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 21:05:42 ]
>>337
dxwndのソースが参考になるかもな。ならんかも知れんが。

339 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 21:28:37 ]
DirectDrawって・・・
もう今じゃほとんど使われていないぞ

340 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 21:29:20 ]
DWMをXPでいぢりたひ



341 名前:デフォルトの名無しさん [2007/11/22(木) 21:30:23 ]
>>338
中に「int HookDirectX(TARGETMAP *target)」こんな関数あったよ。
モロです。
地道にやってたら2週間かかってたかも
嬉しいんだけど、ちょっとはずかしい。

342 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 23:54:47 ]
>>337
ぶっちゃけTaksiが全てのソースを公開してるんだがな

343 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 00:18:16 ]
CはJavaとかとちがってガベコレがないから
プログラマがすべてリソースの開放をしなければならないと聞いたのですが
どの入門サイトもそれらしいコードがないのですがなぜでしょうか?
最初にメッセージボックスを表示するサンプルが多いようですが
メッセージボックスを開放する処理はどうすればいいのでしょうか?
また、ウインドウを作成したときもPostQuitMessageを送るだけで
その後ウインドウを開放するようなコードがないHPばかりなのですが


344 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 00:19:51 ]
>>343
ネタだよな?そうだよな?

345 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 00:44:16 ]
>>343
リソースの解放なんて必要ないよ。
一部の特殊なリソースを除けば、プロセス終了で、OSが全て片づけてくれる。

346 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 00:45:20 ]
>>343
malloc/freeやnew/deleteというのがあるじゃないか。
GetBufferしたらReleaseBufferしなきゃならないとかもそう。
ファイルは開いたら閉じるのだってリソースの解放だ。

メッセージボックスの件はネタだと信じたい。

347 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 00:58:25 ]
>どの入門サイトもそれらしいコードがない
>その後ウインドウを開放するようなコードがないHPばかりなのですが
文面から察するに経験豊富というわけではないだろうから、
「それらしい」や「するような」という判断自体が怪しいが
このレスからじゃあどのページをもってそう判断しているのかわからない

>Cは……プログラマがすべてリソースの開放をしなければならない
というのはC言語としての話であってWin32APIの話ではない。たとえば
>その後ウインドウを開放するようなコードがないHPばかりなのですが
の場合、「ウインドウを開放する」というコーディングはWinAPIとして要求してないと思われる。
(これもどのコードについて言っているのか解らないので推測だが)

まともなページであれば、APIとして開放しなければならないリソースはAPIの作法で開放されている。
ただその作法を知らないのであれば開放のコードは見つけられないかもしれない。
( HANDLE hFile = malloc(...) / free(hFile) なんてしないので)

なので勉強しろ。そして調べろ。

348 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 01:01:17 ]
論文がはかどらなくてムシャクシャして書いた。
開放がすべて誤字であることに気づいたが反省はしていない。あすも平日だがまだがんばる。

349 名前:デフォルトの名無しさん [2007/11/23(金) 01:01:27 ]
メインスレッド内でCreateThreadで作成した複数の副スレッドのうちの特定の一つのスレッドを、
メインスレッドから停止(停止っていってもいい?スレッドを消したい)させるにはどうしたらいい?
ExitThreadでは特定スレッドを別スレッドから狙い打ちにできないような???
ねぇどうすればいい??

350 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 01:12:58 ]
>>348
明日は休日ですよ……



351 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 01:29:16 ]
hoge.exe: user error (GetClientRect: ヲ」ノヲ マノ・!ケgY
(error code: 578))
ってどういう意味のエラーなのでしょうか?
一部の文字化けは元からです。
コンパイル環境:mingwで g++ hoge.c -mwindow

352 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 01:34:04 ]
>>349
ExitThreadは呼び出し元のスレッドを終了させる奴だ
別スレッドを終了させるならTerminateThread

ただ別スレッドで作成したリソースが残る可能性があるから
続行判断用のフラグをCreateThread時に渡しておく方がベターだと思う

その場合はフラグの領域が先に開放されないように注意が要るけど

353 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 01:36:26 ]
>>351
デバッグしなさいw

354 名前:デフォルトの名無しさん [2007/11/23(金) 01:44:19 ]
>>352
TerminateThread、そういう関数がありましたか。。
ExitThreadはc標準の_exitthreadみたいなもんなんですね。

>>352さん指摘どおり、たしかに
「TerminateThread is a dangerous function that should only be used in the most extreme cases.」
ってありますね。

やっぱりパラメーターで渡しておくほうがよさげですね。
でもこのやり方嫌いなんだよなぁw なんか副スレッドがいつ本スレッド内のパラメーターの変更をチェックしてるんだよ、と
渡来してみます。ありがとうございました。

355 名前:351 mailto:sage [2007/11/23(金) 01:52:37 ]
どういう理由かわからないのですが、
実行ファイルを削除してから再コンパイルすると正常に(?)動作しました。

356 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 05:14:13 ]
_で始まる関数は標準じゃないぜ
これ知らないと俺みたいな一言居士がうるせーから要注意な

357 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 07:37:18 ]
>>354
排他制御
アトミックオペレーション

358 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 09:44:32 ]
読み取りだけなら領域が無効になってなきゃ別にいつだって良いだろ
書き込みなら排他制御すべきだが

359 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 09:55:36 ]
             ____
          /__.))ノヽ
          .|ミ.l _  ._ i.) 
         (^'ミ/.´・ .〈・ リ  
         .しi   r、_) |     チャリーン
           |  `ニニ' /    __ lヽ,,lヽ
          ノ `ー―i´    | |Θ|(    )
        | ̄ ̄ ̄| ̄ ̄|_ |_|_|と   i
        |___|__|_|  |_|  しーJ

            ____
          /__.))ノヽ
          .|ミ.l _  ._ i.) 
         (^'ミ/.´・ .〈・ リ  <ヘンリーはわしが育てた
         .しi   r、_) | 
           |  `ニニ' /    __ lヽ,,lヽ
          ノ `ー―i´    | |Θ|(    )
        | ̄ ̄ ̄| ̄ ̄|_ |_|_|と   i
        |___|__|_|  |_|  しーJ

360 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 09:58:40 ]
誰だヘンリーってw



361 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 10:31:49 ]
ビルゲイツ(本名William Henry Gates III)だろ

362 名前:デフォルトの名無しさん [2007/11/23(金) 14:32:39 ]
Win32でメニューバーの色を取得したいのですがどうすればいいのでしょうか?

363 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 14:40:22 ]
getsystemmetrics

364 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 14:42:00 ]
DWORD menu_color = GetSysColor(COLOR_MENU);


365 名前:362 [2007/11/23(金) 14:49:42 ]
>>363-364

>>362です。有難うございました。

366 名前:デフォルトの名無しさん [2007/11/23(金) 15:31:59 ]
>>365
誰だよwww

>>363-364
ありがとうございます。

367 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 15:40:52 ]
ツリービューをダブルクリックでは開閉させたくないんですが、
どういう方法をとればいいんでしょうか。

368 名前:デフォルトの名無しさん [2007/11/23(金) 17:13:30 ]
サブクラス化してダブルクリックのメッセージを捕まえてreturn 0;をすればおk

369 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 19:46:11 ]
>>368
やってみます。
ありがとうございました。

370 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 20:20:42 ]
すでに起動してるアプリケーションに文字列をSendMessageするにはどうすればいいのでしょうか?
FindWindowをしてWM_APPのLPARAMに文字列を乗せて送信してみたところ
誤ったポインタが届いてしまいました



371 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 20:26:21 ]
WM_COPYDATA

372 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 20:36:44 ]
ポインタを別プロセスに送っても無意味
>>371かファイルマッピングを使う

373 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 20:51:36 ]
テキストファイルから複数行の文字列を取り出し
リストビューに表示させるにはどうしたらいいですか?

374 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 20:51:37 ]
アトムくんじゃダメなの?

375 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 20:51:47 ]
>>371-372
出来ました!
こんな便利なのあったのかー
ありがとうございました

376 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 20:57:38 ]
>>373
そりゃテキストファイル開いて、読んで、リストビューコントロールにに登録すりゃいいんでない?

377 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 21:19:04 ]
複数のBMPを結合して4GBytes以上のAVIファイルを作成するには
どうしたらいいですか?
できればVideo compressorも使いたい。

378 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 21:20:49 ]
どのように登録すればいいんですか?

379 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 22:17:05 ]
まずパソコンの電源を入れます

380 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 22:24:19 ]
>>379
次は?




381 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 22:25:06 ]
入れました。

382 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 22:29:17 ]
そしてスタートボタンをクリックします

383 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 22:31:46 ]
>>373
これって、リストビュー1つのアイテムに複数行表示させるってこと?
ならオーナードローかな、LVS_OWNERDRAWFIXEDあたり

384 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 22:42:45 ]
>>383
いえ、
テキストファイルから一行ずつ項目を追加したいです。

385 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 22:49:55 ]
うるせーばかどっかいけ

386 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 22:51:55 ]
リストビュー使うのにリストビューアイテムの追加の仕方なんて
人に聞くことじゃないでしょ。。。
調べろ禿で終わり

387 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 22:55:05 ]
あなたがここに書いたとおりに実装すればよい
ただし、そのために何のどのような設計が必要かを検討する
さらにそのために何のどのような設計が必要か検討する これを繰り返す。
言語や実装方法依存しない設計であること、この繰り返しで疑問の余地がなくなるまでコーディングを開始しないことが重要

これが完了すればコーディングなんて一瞬で終わるし、再コーディングなんて手戻りはまず発生しない

388 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 22:58:36 ]
ここでのレスを参考に分割ウィンドウ作っていたんですが
スクロールバーってオーナードローできないんでしょうか?
境界線を自力描画したせいか普通に置くと
境界線がスクロールバーの下をくぐるんです

389 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 23:00:37 ]
コーディングして実際に確認しないと、言語や実装方法依存しないことが確認できない。
理論だけで集結するなら、実験をする科学者はいない。
太平洋で核実験をする国もない。

390 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 23:02:34 ]
>>388
クライアントに直接書かずにウインドウを作ればいい。



391 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 23:03:09 ]
ReadLinesToListviewItems()

392 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 23:44:38 ]
>>388
MFCかWTLのソースでも見ろよ

393 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 00:08:57 ]
フックについて詳しく書かれた書籍はありますか?
ネット上の情報ではあまり身につかないと思うので・・

394 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 03:38:42 ]
すべてを詳しく網羅したものはない

395 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 04:35:45 ]
Advanced Windows かなあ

396 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 10:32:43 ]
フックなんて大して覚えることねーだろ

MSDNの説明読めば各フックが呼び出される状況は把握できるし
そしたらあとは自分で応用方法を考えるだけ

397 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 10:34:51 ]
APIフックかも知れんよ?

398 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 10:39:45 ]
>>395
あの分厚いやつですね
本屋でちょっと覗いてこよう

399 名前:デフォルトの名無しさん [2007/11/24(土) 15:51:48 ]
タブコントロールをCreateWindowで作成する際に、
TCS_RIGHTJUSTIFYを指定しているのですが、タブが最大まで拡大されません。
どういう原因が考えられますか?

400 名前:デフォルトの名無しさん [2007/11/24(土) 18:34:22 ]
マイクロソフトヘルプのhxsファイルはテキストなどに変換できませんか?



401 名前:デフォルトの名無しさん [2007/11/24(土) 18:36:30 ]
純正以外のgrepツールや全文検索のインディックスを作りたいんですが
htmlに変換することも難しいです シェアでABC Amber HxS Converter
というのがあるんですが日本語無理で、まとめて変換も出来ずつかえません

402 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 18:54:02 ]
純正とは?

403 名前:デフォルトの名無しさん [2007/11/24(土) 19:02:25 ]
MSDNライブラリをインストールすると入っているMicrosoft Developer Networkが純正ツールです

404 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 19:50:44 ]
s_hIml = ImageList_LoadImage(hInstance, MAKEINTRESOURCE(IDB_HEADER), 7, 0, CLR_DEFAULT, IMAGE_BITMAP, LR_LOADTRANSPARENT);
Header_SetImageList(ListView_GetHeader(s_hListView), s_hIml);

このようにして登録しておいたリストビューのヘッダのImage(14 x 6)を切り替えようと以下のような関数を作りました。
ところが何度呼び出しても切り替わってくれません…
一体全体どこが間違っているのでしょうか?

BOOL SetColumnState(void)
{
 HWND hHeader = ListView_GetHeader(s_hListView);
 int i;

 for(i = 0; i < Header_GetItemCount(hHeader); ++i)
 {
  HDITEM hdi = {HDI_FORMAT | HDF_IMAGE};
  Header_GetItem(hHeader, i, &hdi);

  if(hdi.fmt & HDF_IMAGE)
  {
   hdi.iImage = 1;
   return Header_SetItem(hHeader, i, &hdi);
  }
 }

 return FALSE;
}

405 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 20:01:12 ]
すみません自己解決しました
hdi.maskに入れないといけないんですね
1時間も悩んでたのになんてこった…

406 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 20:39:04 ]
簡単なウェブブラウザ作りたいんですが、何から手を付けたらいいかわかりません。

407 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 20:41:54 ]
おまいが作るまでも無い。既存のもので充分だ。

ちなみに、下手なウェブブラウザ作るとw3c厨に命を狙われるから覚悟しとけ。

408 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 20:45:07 ]
>>406
独自レンダリングはどこからやっても簡単にはならないだろうなw
IEコンポーネント使っていいならIEコンポーネントの使い方から調べたらいいなじゃないかな?

409 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 20:58:50 ]
>>407
目の前の人に厳しくなるってのは、自分の足が引っ張られるからとか、正当化のための理由は確かにあり得ると思うんだけど、こういうアカの他人に厳しい人ってのは、どういう倫理感を持ってるんだか、おれには非常に不思議だ。

410 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 21:02:31 ]
下手に穴のあるもの作られて
それが原因でウィルスやワームばらまかれて
結局は足を引っ張られることになってる

一番低能で一番迷惑な連中がMSの糞ソフト




411 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 21:08:48 ]
>>410
それは>>406本人ですか?

412 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 21:14:30 ]
windows使わなきゃいいじゃん

413 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 21:27:19 ]
自分は使わなくても世間が使うとその割合が増えて
ウィルスがそっちから流れ込んでくるだろ

最近はやったSARSみたいに
自国だけ閉鎖しててもどうにもならんのだよ

おれはWindows使わないっていうスタンスで
影響受けずに済むのは
ヒッキーだけ


414 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 21:29:35 ]
>>413
目の前の人に厳しくなるってのは、自分の足が引っ張られるからとか、正当化のための理由は確かにあり得ると思うんだけど、こういうアカの他人に厳しい人ってのは、どういう倫理感を持ってるんだか、おれには非常に不思議だ。

415 名前:デフォルトの名無しさん [2007/11/24(土) 21:45:37 ]
>>399どなたかわかりませんか?

416 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 21:49:31 ]
>>415
使い方を間違っている


417 名前:407 mailto:sage [2007/11/24(土) 21:50:03 ]
アカの他人に厳しい人って、まさかと思うけど俺のことじゃないよね?
単にコピペネタなのかもしれんが。

418 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 22:06:10 ]
>>413
mac使えば良いんじゃない?

感染のリスクは比較的低いと思うよ

419 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 22:09:08 ]
>>413
macなら、ウィルスが流れ込んで来ても、
たいていはWin用だから、せいぜい自分は感染せずに済む

420 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 22:12:14 ]
>>417
お前の同僚がお前のために作ったツールが穴だらけなのは迷惑かもしれないが、
赤の他人が勉強のためか、vectorに登録するためか、もしくは仕事で作ったのかしらないけど、
彼がどの程度のものを作るのかわかってもいないうちから足を引っ張ろうとするのは倫理的にどうかと思うぞ。
お前に直接迷惑がかかるわけじゃないし、
仮に彼一人が作るのをやめたところで全体的には大して変化はないだろう。
それどころか彼の向上意欲やチャンスすら奪ってしまうことになりかねない。
お前は彼に責任を取れるのか?
文句を言いたいなら実際に迷惑を被った場合だけにしろ。



421 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 22:13:47 ]
(゚Д゚)ハァ?

422 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 22:37:47 ]
子ウィンドウをWM_LBUTTONDOWNで親ウィンドウの下に置いて
WM_LBUTTONUPで親の上に戻そうと思ってSetWindowPos()を弄ってるんですが
もしかして親ウィンドウの下に子ウィンドウを置く事はできませんか?
全然下がらなくて困っています

423 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 23:20:19 ]
>>420
彼乙彼

424 名前:デフォルトの名無しさん [2007/11/24(土) 23:45:33 ]
>>416
どういう事でしょうか?

hTabCtrl = CreateWindowEx(0, WC_TABCONTROL, NULL,
   WS_CHILD | WS_CLIPSIBLINGS | WS_VISIBLE | TCS_RIGHTJUSTIFY,
   100, 100, 400, 100,
   hwnd, (HMENU)HTABCTRL, GetModuleHandle(NULL), NULL);

こんな感じで指定するのではないですか?

425 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 00:16:29 ]
GroupViewスタイルのListViewでグループの開閉(図参照)ってどうやればできるか誰かわかります?
LVGS_COLLAPSEDあたりかと思って試してみたけど変化なし・・・

図 www.youlost.mine.nu/html999/img/2298.jpg

426 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 01:37:37 ]
そりゃLVGS_***ったらGroupItemのスタイルだろ常考

コモンコントロールからの通知はWM_NOTIFYとLVN_***のはず

427 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 03:06:19 ]
逆引きリファレンスがほしいのですが
www.amazon.co.jp/C%E8%A8%80%E8%AA%9E%E9%80%86%E5%BC%95%E3%81%8D%E5%A4%A7%E5%85%A8-500%E3%81%AE%E6%A5%B5%E6%84%8F-%E5%B9%B3%E7%94%B0-%E8%B1%8A/dp/4798006475
を使ってる人いませんか?
ポチるかどうか悩んでるのですが
立ち読みしにいける環境じゃないので困ってまつ

428 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 03:28:07 ]
C言語スレか推薦図書スレか買ってはいけない書籍スレで聞け

429 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 09:41:35 ]
なんでこの程度の質問にも答えていただけないのですか?
しかも何故命令口調?
あなたに命令される覚えはありませんが?

430 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 09:48:01 ]
スレタイ嫁よ白雉



431 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 09:48:26 ]
スレ違い

432 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 09:52:24 ]
いや>>428は凄く親切だと思うぞw

普通ならスレ違いの一言で切って捨てられる所を
適切な質問先を示してるんだから。

433 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 12:48:39 ]
>>427
良書だよ
VC++版とあわせて両方かっとけ

434 名前:427 [2007/11/25(日) 13:28:26 ]
なんで>>429みたいな成りすましがいるのこのスレ
お前らだまされてるの?
それともだまされてるフリしてんの?

435 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 13:55:13 ]
鳥が付いてるわけでもなし

なりすましかどうかなんて誰も分からん

436 名前:427 mailto:sage [2007/11/25(日) 14:04:24 ]
なんでわからないの?

437 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 14:16:24 ]
>>424
msdn2.microsoft.com/en-us/library/bb760549.aspx
>TCS_RIGHTJUSTIFY
>The width of each tab is increased, if necessary, so that each row of tabs fills the entire width of the tab control.
>This window style is ignored unless the TCS_MULTILINE style is also specified.

438 名前:427 mailto:sage [2007/11/25(日) 14:17:09 ]
俺が本物だ

439 名前:427 mailto:sage [2007/11/25(日) 14:31:13 ]
そもそもTCS_RIGHTJUSTIFYって
#define 0x0000
だった希ガス

440 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 14:36:07 ]
コンソールで GetKeyboardState を実行しても戻り値は成功になりますが
引数バッファには結果は何も押していない状態になります。(もちろん色々押しています) 
ただ GetKeyboardState の直前に GetKeyState( 0 ) を実行すると
GetKeyboardState は正常な値が取得できます。
関数説明を見てもさっぱり挙動が理解できません、、
そもそも GetKeyboardState はコンソールで使用できないのでしょうか?



441 名前:427 mailto:sage [2007/11/25(日) 14:52:09 ]
GetKeyboradStateもGetKeyStateも
メッセージキューが所有する仮想キー情報からキーの状態を取ってくる

メッセージキューはスレッドがUSER32.DLLに属するAPIを最初に呼び出した時に作成される

したがって初めにGetKeyboradStateを呼んだときは
キューが作られた直後なので仮想キー情報は真っ白

442 名前:425 mailto:sage [2007/11/25(日) 15:23:32 ]
>>426
いや、コードから開閉したいんじゃなくて、開閉できるスタイルに設定したいんです。
>>425の画像のソフト以外で見たことないし自前でやってるのかな?

443 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 15:35:24 ]
msdn2.microsoft.com/en-us/library/aa930491.aspx

>state
>Currently, it can only be the following.

>LVGS_NORMAL
>Groups are expanded, the group name is displayed, and all items in the group are displayed.

どうも使えないっぽい
.NET2.0では利用可能な模様

444 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 15:37:44 ]
>>441
ありがとうございます。
説明不足でないですが、上記処理は何度も実行するループ部分でして
GetKeyState を入れるか入れないかで、
GetKeyboradState の動作がかわるのが、わけがわからないのです。
どちらもメッセージキューが必要ということは、
やはりコンソールではどちらも使用してはいけないのでしょうか?
_getch だと処理が止まってしまうので回避をしたいのが目的です。

445 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 15:54:40 ]
GetAsync〜の方を使ってみたら?

446 名前:425 mailto:sage [2007/11/25(日) 15:57:42 ]
>>443
サンクス。こっちでは何も書いてないんだけど、やっぱ無理かな?
msdn2.microsoft.com/en-us/library/bb774769.aspx
使い方は合ってるはずなのにできないってことは無理なのかもしれませんが

447 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 15:58:09 ]
>>444
コンソールで入力街に入るのを回避したいなら
_kbhitでチェックしてから_getchが常道かと

448 名前:デフォルトの名無しさん [2007/11/25(日) 17:14:34 ]
>>437
おぉありがとうございます。TCS_MULTILINEも指定しないと無視されるようですね。
また一つ勉強になりました。しかし、>>439を見て調べたのですがTCS_RIGHTJUSTIFYは
0x0000と定義されてました。これって指定できないということなんですかね???
いくら>>424のようにしても、TCS_RIGHTJUSTIFYはあってもなくても変わりませんよね?
0と論理和とっても変化なしですしね・・・どうすれば・・・

449 名前:440 mailto:sage [2007/11/25(日) 18:17:38 ]
>>445
同時キーや引数をいっぱい変えて GetAsyncKeyState を実行しまくるのが非効率でしたので
GetKeyboradState が理想でしたが、いろいろ無理そうですので素直に諦めます。

>>447
_getch よりも Get〜による同時押しも欲しかったのですが
いろいろ問題ありそうですんで諦めます 。
アドバイスありがとうございました。

450 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 19:16:31 ]
>>425
それってツリービューじゃ駄目なの?



451 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 20:20:21 ]
>>448
デフォルトでそういう動作っていう意味だろう

452 名前:425 mailto:sage [2007/11/25(日) 20:55:11 ]
>>450
表示の切り替え(アイコンとか詳細とか)が必要なんです。
何とかならんかなぁ

453 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 20:57:57 ]
>>452
予め自分でデータを持っておいて、ListViewがクリックされた時にその位置に挿入/削除して
擬似的にツリービュー的な動作を再現すればいいと思うが。

ネットで見かけるTreeListViewのサンプルとかがそういう事をしている。

454 名前:425 mailto:sage [2007/11/25(日) 21:10:19 ]
う〜ん、そうするしかないようですね。

455 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 22:05:50 ]
或いは詳細表示の時だけTreeViewに切り替えるとか。

456 名前:デフォルトの名無しさん [2007/11/26(月) 02:09:51 ]
比較的大きなドキュメントを読み込むときに、一気に読み込まず、一定のサイズごとに
シーケンシャルに読み込んでいくプログラム、例えばIE、でデータの読み込みにしたがって
右側のスクロールバーのスクロールボックスの大きさが小さくなっていく
ああいう動作はどうやって実現してるんだ?
スクロールバーの操作や、つまみ(スクロールボックス)のサイズの調整はできるんだが
読み込み中はスクロールバー自体が消えたようになってしまう。

ファイル読み込み(例えば256Byteずつ)のループ
{
ファイルの読み込み処理
行数を調べて
SetScrollInfo関数で、新しい範囲の設定
}

これでスクロールバーは更新されるはずなんだが・・ダメだ
ファイル全体の読み込み処理の終了の後、ウィンドウ全体を再描画させるとスクロールバーも出現する。

ちなみにクライアント領域の右側につく(WS_VSCROLL)、標準スクロールバーの話です。
SDK

457 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 02:16:02 ]
>これでスクロールバーは更新されるはずなんだが

されねえよw
それだとループしてる間はWM_PAINTが発生しないから再描画されるわけないだろ

手っ取り早いのは副スレッドで読み込みとスクロールバーの設定をしてInvalidateRectする
そうすればメインスレッドは滞りなく再描画する

458 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 02:32:52 ]
>>456
ウインドウメッセージを処理してやらなきゃ駄目だよ。
普通はマルチスレッド化、どうしてもスレッドが嫌ならループ内に
メッセージ処理を組み込む。

459 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 02:34:26 ]
RDW_FRAME
RDW_UPDATENOW
SWP_DRAWFRAME

辺りでぐぐれ

460 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 02:34:58 ]
それだけならDispatchMessageはさむだけで良さそうだけど
副作用出てくるような操作するときはマルチスレッドにするべき




461 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 02:36:09 ]
こんな時間に何してんだお舞ら

462 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 02:41:05 ]
質問に回答してるだけだが、何か?

463 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 02:45:46 ]
>>446
まだ見てるか分からんけど
msdn.microsoft.com/msdnmag/issues/07/08/WindowsCPP/default.aspx?loc=jp

>LVGS_COLLAPSIBLE 状態フラグを使用すると、グループを折りたたんだり展開したりできるようになります。
>グループを折りたたむと、グループに属するリストビュー項目が非表示になります。
>プログラムで LVGS_COLLAPSED 状態フラグを使用すると、グループを折りたたむことができます。

464 名前:456です。 [2007/11/26(月) 05:27:46 ]
一応、副スレッドでの読み込みでも同じようにやってみたけど×だったorz

>>457
スマソ
書き忘れた
SetScrollInfo();
InvalidateRect();
UpdateWindow();

と、きちんとやってるんだが
もちろんファイルから読み込んだ内容は順次表示されていく
だけど、スクロールバーが消えてしまう
で、これがなぜかわからない

一応ループ部分のソース(つっても分かりにくいと思う。)
do{
ZeroMemory(lpTemp, CHUNK_SIZE);
bRet = ReadFile(hFile, lpTemp, CHUNK_SIZE, &dwRead, NULL);

lstrcat(lppms->lpString, lpTemp);

iLines = StrChrCount(lppms->lpString, TEXT('\n')) + 1;//行数の取得
SendMessage(lppms->hwnd, WM_MY_SETRANGE, 0, (LPARAM)iLines); //メインスレッド内にある、ウィンドウプロシージャに範囲の設定の指示
//LPARAMで範囲の最大値を渡してる
InvalidateRect(lppms->hwnd, NULL, TRUE);
UpdateWindow(lppms->hwnd);
Sleep(100);
}while(dwRead && !lppms->bKill);

465 名前:デフォルトの名無しさん [2007/11/26(月) 05:28:24 ]
で、主スレッド内でのメッセージの受け取り
case WM_MY_SETRANGE:
si.fMask = SIF_RANGE;
si.nMin = 0;;
si.nMax = (int)lParam;
SetScrollInfo(hwnd, SB_VERT, &si, TRUE);
return 0;

466 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 07:11:19 ]
スクロールバーに再描画送ってない

467 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 08:44:59 ]
スレッドがスリープなりして使用権を返却していない。

468 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 10:37:47 ]
>>466だと思う

469 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 11:18:55 ]
仮想リストビューにアイテムを追加するときは
LVN_GETDISPINFOメッセージを監視して自分で追加していくのは解るのですが
どうやってLVN_GETDISPINFOメッセージを発生させるのでしょうか?
通常のリストビューのようにListView_SetItemでいいのでしょうか?

470 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 11:26:36 ]
アイテム数をLVM_SETITEMCOUNTで設定すれば
画面の更新が必要になると勝手に飛んでくる



471 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 11:41:54 ]
ある自作メインアプリケーションに「ログイン」の機能を持たせ、
それを起動している最中は他の自作アプリケーションが
そのログインユーザの情報にアクセスできるようにしたいと思っています。
(メインアプリケーション終了時にログインユーザの情報も消す)

そうなると、メインアプリケーション内のログインユーザの情報を
アプリケーション間で共有できるようにしなければいけないとは思うのですが、
このようなグローバルな情報はどのように共有するものなのでしょうか。

感覚的には、「OS内で唯一のインスタンスがあって、みんなでextern参照」
といった使いかたをしたいのですが、
Mutexみたいなものを使って実現できるものなのでしょうか。
なにかよいサンプルなどがあれば、教えていただけると嬉しいです。
よろしくお願いいたします。

472 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 11:50:55 ]
ファイルマッピングオブジェクト(メモリマップトファイル)

データが短いならグローバルアトムで十分

473 名前:471 mailto:sage [2007/11/26(月) 12:37:48 ]
>>472
情報ありがとうございます。
両方調べさせていただきました。

メインアプリケーションのプロセスに聞きに行くのではなく、
各アプリケーションがそれぞれ任意のタイミングで
「メインアプリケーションがどこかにセットした現在のユーザ情報」を
自分で見に行くという動きを考えているので、
メモリマップトファイルよりはグローバルアトムのほうが
それに適した実装ができそうですかね。
こっちの方法を勉強してみようと思います。

474 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 12:48:39 ]
>[メインアプリケーションがどこかにセットした現在のユーザ情報」を
>自分で見に行くという動きを考えているので、
>メモリマップトファイルよりはグローバルアトムのほうが
>それに適した実装ができそうですかね。

たぶん逆
その用途ならメモリマップトファイルの方が楽

アトムだと中身にアクセスするには生成した識別子(=一定ではない)を
SendMessageか何かで他のプロセスに渡さなきゃいけない

メモリマップトファイルは名前(=一定の値)でカーネルオブジェクトを呼び出せるから
何かを渡したりとかは必要ない

475 名前:471 mailto:sage [2007/11/26(月) 12:56:12 ]
>>474
アトムの識別子って決めうち文字列じゃなかったんですね。
一時的なレジストリみたいなものだと勘違いしてました。
間違った方向に進むところでした。ありがとうございます。

476 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 13:00:46 ]
>>470
なるほど
数だけ教えてあげれば勝手にやってくれるんですね
解決できました、ありがとうございました

477 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 13:12:10 ]
>>475
ちなみにその「一時的なレジストリ」を使って実現してもいいんだよ

478 名前:425 mailto:sage [2007/11/26(月) 13:15:48 ]
>>463
情報サンクス。でもLVGS_COLLAPSIBLEの値がわからないです。
誰か分かる方います?

479 名前:425 mailto:sage [2007/11/26(月) 13:17:14 ]
てかvista以降って書いてない?

480 名前:471 mailto:sage [2007/11/26(月) 13:27:29 ]
>>477
レジストリだと、実行中にレジストリエディタで簡単に書いたり消したりできますよね。
もちろんアトムやメモリマップトファイルでも、
本格的にセキュリティ対策するならそのまま使うわけにはいかないでしょうけど、
OS付属のエディタで読み書きできてしまうことくらいは避けておきたいなと思いまして。



481 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 13:36:04 ]
>>479
じゃあVista以降なんだろう。残念だな。

482 名前:425 mailto:sage [2007/11/26(月) 13:40:42 ]
そうなんでしょうね、諦めます。
で、次の質問なんですが、ListViewでマウスホイールが回転されたことを取得したいんですけど、
サブクラス化するしかないですよね?

483 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 13:43:19 ]
他にも方法はあるけど、サブクラス化が一番楽でコストも低いような

484 名前:425 mailto:sage [2007/11/26(月) 13:54:04 ]
おk、サンクス

485 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 16:48:58 ]
software.nikkeibp.co.jp/software/backno/04apimook1.html
ここのPart3のFileCopyプログラムですが
表示されるべきのメニューが表示されません。。。

COPYやEXITなどのメニューを表示するようにするには
どうすればいいですか?

486 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 17:03:18 ]
リソースファイル (*.rc) をコンパイルしてリンクしたか?

487 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 17:38:18 ]
>>486
ご指摘のように
リソースファイルをプロジェクトに追加するのを
忘れていたのが原因だったようです。

表示するようになりました。ありがとうございます。

488 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 18:56:47 ]
文字列置換や文字列検索に使える関数ってSDKにない?

489 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 19:01:02 ]
検索や置換のダイアログの表示なら
FindTextやReplaceTextで可能です。

490 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 19:14:03 ]
>>489
ありがとうございます
FindTextとReplaceTextについて調べてみよ



491 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 20:10:01 ]
デバッガAがDebugActiveProcessでプロセスBにアタッチした後、
デバッガCがデバッガAのアタッチを強制的にデタッチして
プロセスBにアタッチしなおすことって、出来るんでしょうか?

その過程の間、プロセスBは停止したらダメ、という条件で。

ちょっと分かりにくいですが、要するにデバッガAをデバッガCに
差し替えてしまうことができるか、ということです。(AはCに
ついては何も知らないプログラムなので、連携した動作は
ありません)

デバッガAを強制的に終了するとプロセスBも終了してしまう
ようで、一見すると不可能っぽいのですが。OSは2000〜Vista
です。よろしくお願いします。

492 名前:491 [2007/11/26(月) 20:11:58 ]
すみません、上げさせてください。

あと、「プロセスBは停止したらダメ」というのは、ようするに
終了は不可と言うことで、ブレーク状態になるのは構いません。

493 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 20:17:20 ]
XP以降ならDebugActiveProcessStopってのがある。

494 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 20:34:23 ]
>>493 どうもありがとう

495 名前:491 mailto:sage [2007/11/26(月) 21:14:53 ]
教えてもらったので早速実験してみました。

WinMain(){
DebugActiveProcessStop(GetCurrentProcessId());
 :
 :
 :
}

ってやってデバッグ実行開始したら、デバッガ(VC8)が
外れると期待したのですが、外れずにそのまま下に
行っちゃいました。

もしかしてDebugActiveProcessStopはデバッグ対象じゃなくて
デバッガのプロセスIDを渡すのかしら? それとも自プロセスが
デバッガから強制離脱することはできない…?

あるいはDebugActiveProcessを呼んだあとに、そのプログラムが
デバッグ対象を切り離す用途で使うのかも。それだと>>491
外部からのデバッガの差し替えはできませんね。

憶測ばかりで申し訳ないですが、このAPI、ググっても細かい
ところがよく分かりませんでした。


496 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 22:04:52 ]
コレ見た感じだと DebugActiveProcess 呼んだデバッガが自分で
デタッチするときに使うような感じっぽくない?

msdn2.microsoft.com/En-US/library/ms679301.aspx

497 名前:デフォルトの名無しさん [2007/11/26(月) 22:30:55 ]
ある特定のトップレベル・ウィンドウを、最前面に持ってくるのってSetWindowPos関数?
ほかにも何かいい方法ありますか?

498 名前:491 mailto:sage [2007/11/26(月) 22:30:58 ]
>>496
情報ありがとう

499 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 22:57:02 ]
>>497
BringWindowToTopはどう?

500 名前:497 [2007/11/26(月) 23:48:53 ]
>>499 トン
これもいいな
コードがすっきりした

表に持ってきたウィンドウの再描画が完了したのを検地したのを知る方法ってある?
タイマーで1秒くらい待ってから、ってやってるけどエレガントじゃない



501 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 00:09:25 ]
FindWindow

502 名前:デフォルトの名無しさん [2007/11/27(火) 04:34:26 ]
プログラムの実行中に、ウィンドウが常に最前面に表示されるようにウィンドウスタイルを変更したいです。
SetWindowLong(hwnd, GWL_EXSTYLE, GetWindowLong(hwnd, GWL_EXSTYLE) | WS_EX_TOPMOST);
SetWindowPos(hwnd, 0, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
うまくいきません。助けてケロ

503 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 05:10:48 ]
てかWS_EX_TOPMOSTが付いてれば後ろに引っ込んだりしないだろ

…他にWS_EX_TOPMOSTを持ってるウィンドウがなければ

504 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 05:17:10 ]
>>502
なんでそこまでいっておいて、SetWindowPosを調べないんだ?
SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
これだけでいい。

SetWindowLongはいらない。

505 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 09:26:31 ]
SetWindowLong入らない?

506 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 09:39:24 ]
XPの制限ユーザー上で実行するとはProgramFiles以下に書き込めません。
Vistaではこのようなファイル操作はVirtualStoreにリダイレクトされるようです。

実際のプログラムで設定ファイルを保存する場合は、
実行されたパスが読み書き可能なものであるか? Yes→実行されたパスに書き込み
No↓
ユーザーディレクトリ(AppDataなど)を取得し、そこに書き込み

このような動作が必要だと思います。
これをどのwindowsでも確実に動作させるにはどのようなAPIを使えばいいのでしょうか。


507 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 09:45:01 ]
>>505
CreateWindowExの段階でWS_EX_TOPMOST付けてるなら要らないと思うけど

508 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 09:45:53 ]
>>506
常にユーザディレクトリに書けばいいやん

509 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 11:04:14 ]
>実行されたパスが読み書き可能なものであるか? Yes→実行されたパスに書き込み
この考えがそもそも間違い
ユーザーディレクトリに置くかレジストリを使用すべき

510 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 11:33:00 ]
共用というのであれば、それなりのアクセス権もってAll Usersに置けばいいし。



511 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 11:37:09 ]
どうしてもやりたければOSのバージョンを取得してやればいいんじゃね

512 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 12:38:15 ]
>>500
InvalidateRectしてからUpdateWindowすればWM_PAINTが完了するまで待てるけど
あれって他プロセスのウィンドウに使えたかな?

513 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 12:40:47 ]
WH_CALLWNDPROCRETを見てればWM_PAINTの処理が終わったかは分かる

こんなことでフックするなんて蛇足にも程がある気がするけど

514 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 13:42:59 ]
この場合、InvalidateRectが無くてもいいでしょう。
UpdateWindowだけで再描画されなくても、WM_PAINTは抜けてるって事だし。

515 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 14:24:24 ]
インストールせずにスタンドアローンで使うことを想定しているのですが、
万が一ユーザーがProgramFiles以下に置いた場合でも正常に動作させられるようにしたいのです。

516 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 14:26:44 ]
ユーザーがProgramFiles以下に置いた場合でも置かない場合でも、
常にユーザディレクトリに書いとけばいつでも正常に動作する

517 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 14:27:36 ]
だったらなおさら、どこに配置されようとAppDataを使うべきだろ
System32に入れる奴だっているかもしれないんだし(もっともXP以前ならそこでも読み書きできるが)

518 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 14:28:28 ]
>>515
たぶん、あなたが言いたいそれを「スタンドアローン」とは言わないと思う。
Readme にでも注意書きを書いておけば、わざわざ Program Files に
配置するスキルがあるユーザなら、意味をくみ取ってくれるんじぇね?

519 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 14:31:25 ]
専用のインストーラ・アンインストーラを設けないなら、
ユーザフォルダやレジストリに情報残すと削除がめんどいってのは同意するけども。

520 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 16:18:05 ]
>>515
気持ちは分かるけど、妙な俺様仕様を作らないほうがいいよ。
OSが推奨する共通の方式に従ったほうが
安全だしセキュアだし管理しやすいし将来の互換性も期待できるし
結果ユーザにとっても使い勝手が良いから。



521 名前:デフォルトの名無しさん [2007/11/27(火) 17:35:43 ]
>>503-505
レスありがとう
解決した。
だけど、SetWindowPos に指定するフラグで、HWND_TOPMOSTはドキュメントに載ってるが
HWND_NOTOPMOSTはヘッダー見て初めて知った
最前面化:SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
最前面化解消:SetWindowPos(hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
でOKだた

522 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 17:36:45 ]
そういやexeあるフォルダのの下にファイル作るプログラム、そのままVistaでちゃんと動いてるなと思って
ファイル探したら、ユーザーの下のVirtualStore\Program Files (x86)\xxx の下にできてたわ。
勝手にマッピングしてくれるみたいだな。

523 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 17:56:19 ]
>>520
MSが互換性に気をつけると思っているのですか

524 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 18:02:56 ]
実際気をつけてるよ

525 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 18:17:32 ]
>>522を下位互換性と呼ばずになんと呼ぶと?

526 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 18:18:56 ]
>>525
新機能

527 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 18:28:47 ]
GetSysColorBrush(COLOR_***)の結果と、HBRUSH(COLOR_*** + 1) って使用上で何か違うの?

528 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 18:46:04 ]
>>524
なぜIEとFirefoxでは表示が異なるのですか?

529 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 18:51:40 ]
Firefox の仕様準拠度が低いからだな

530 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 19:06:03 ]
>>527
GetSysColorBrush はブラシのハンドルが返る
HBRUSH(COLOR_*** + 1) ってのは、WNDCLASSEX 構造体のメンバーに入れてると思うが
これはRegisterClassExを呼んだ先でインデックスかブラシのハンドルか判断して
内部でGetSysColorBrushに相当するものを呼んでるだけだろう。
+1なのはインデックス0とNULLを区別するためだなw



531 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 19:28:39 ]
FillRectとかでHBRUSH(COLOR_*** + 1)入れても動くよな?

532 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 19:37:24 ]
>>529
違います。
IEの独自仕様のためですよ。

533 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 19:42:46 ]
違います
仕様が曖昧だからですよ

534 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 19:43:23 ]
IEの仕様解釈がおかしいのは認めるが、Firefoxも解釈おかしいよ

535 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 19:53:09 ]
>>532
えーと実際に Firefox で Acid2 とか試したことありますか?


536 名前:デフォルトの名無しさん [2007/11/27(火) 19:55:09 ]
ある文字列(改行含む)から、最長行の文字数を返す関数ってあります?
UNICODE/ANSIどっちでも対応できるもので、マルチバイト文字もうまく扱ってくれるもの

前に便利な文字列操作関数っていうサイトを見た希ガスるんだけど、見つからん

537 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 19:57:02 ]
>>535
Acid2なんて飾りだよ

538 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 19:58:06 ]
>>536
Win32API に、ですよね。
そういう関数はありません。

539 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 19:58:23 ]
>>536
等幅フォント?

540 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 20:06:27 ]
指定したフォルダにあるファイルのファイル名を全て取得する関数ってありますか?



541 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 20:11:12 ]
>>540
FindFirstFile FindNextFile FindClose

542 名前:デフォルトの名無しさん [2007/11/27(火) 20:13:54 ]
>>539
そうです。

>>538
別にAPIになければ、APIじゃなくてもいいです。
自作するのはちょtっとミリなので

543 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 20:13:54 ]
>>541
ありがとうございます。貴方のおかげで道が開けまんた。

544 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 20:23:18 ]
>>542
なぜ自作するのが無理なんだ?

int line = 0;
int maxlen = 0;
int i = 1;
while (fgets(s, ...)) {
 int len = strlen(s);
 if (maxlen < len) {
  line = i;
  maxlen = len;
 }
 i++;
}
こんな感じでどうにかなるだろ。

545 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 20:32:00 ]
>>542
size_t maxCharsInLine(LPCTSTR p)
{
 size_t maxLen = 0;
 size_t len = 0;
 while (*p) {
  switch (*p) {
   case 0x0d: case 0x0a:
    len=0; break;
   default:
    if (maxLen < ++len) maxLen = len;
  }
  p = (LPCTSTR) CharNext(p);
 }
 return maxLen;
}

546 名前:鈴木 [2007/11/27(火) 20:41:03 ]
164 名前:鈴木[who@am.i] 投稿日:2007/11/27(火) 13:12:56

MiniDumpWriteDump をつかって、Dumpを出力しているのですが、
どのようにしてファイルの中身は見れるでしょうか?

547 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 20:42:50 ]
>>546
よう鈴木、こないだ貸した5000円返せよ

548 名前:鈴木 [2007/11/27(火) 20:43:36 ]
>>547
しゃ、借用書はあるのかっ!

549 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 21:01:46 ]
>>531
そうなのか。
それも内部でブラシ取得してるんだろう。
ハンドルかインデックスかは、上位ワードが
0かどうかを見てる気がする。

550 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 21:16:30 ]
質問です。

windowsで流れているサウンドをフックすることは可能でしょうか?
もし方法があれば、調べれば良いポイント・キーワードなどを教えていただけないでしょうか。



551 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 21:21:47 ]
そういうことを質問する前に最低限、
録音プログラムぐらいは作ったことがあるんだろうな?

552 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 21:23:57 ]
>>551
Windowsでサウンドプログラミングの経験があります。

553 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 21:34:15 ]
>>550
「サウンドをフックする」っていうのがわからない。

途中で加工したい?
それとも覗ければ(キャプチャできれば)十分?
audio 関連の filter driver を書けばいいと思うんだけど、
Vista 以前の OS だと色々なパスがあって面倒だと思う。

特定のアプリが対象なら話は遙かに簡単になるけど。

554 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 21:35:57 ]
>>553
> それとも覗ければ(キャプチャできれば)十分?
はい、覗けるだけで十分です。
加工して戻すということは想定していません。

555 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 21:36:23 ]
>>552
録音するプログラムを組んだことがあるのか無いのか聞いているんだが、ニホンゴワカリマスカ?

556 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 21:39:58 ]
>>555
録音するプログラムを書いたことがあります。

557 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 21:41:24 ]
>>556
じゃあ既に問題は解決している。

558 名前:デフォルトの名無しさん [2007/11/27(火) 21:42:21 ]
新規質問です。
Beep関数で、XPでは音が出るもののVistaでは音がでません。
プログラムはVisualStudio2005のC++でコンパイルしています。
VistaではBeep関数を使えないのでしょうか?

559 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 21:44:42 ]
>>558
MessageBeep を使ってみてはいかが?

560 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 21:47:04 ]
>>558
マザーボード上の内蔵Beepデバイスから出ているのなら、
物によってはマザーボードからスピーカーに繋げなければ音が出ない。
XPだと逆にドライバがなかったから、サウンドデバイスから出力されていただけでは?
そもそもAPIとは何の関係もない。



561 名前:デフォルトの名無しさん [2007/11/27(火) 21:48:06 ]
>>559
確かに、MessageBeepは使えますが、自由にメロディを設定したいのでBeep関数が使いたいのです。

562 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 21:53:16 ]
>>561
PlaySoundでwavを鳴らせばいいだろ

563 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 21:55:15 ]
>>554
DDKを使って、カーネルモードのフィルタドライバを書いてオーディオドライバの
上側のAPI(のようなもの)をフックすることになると思います。

この「オーディオドライバ」ってのが色々あるのがXPまでのOSでの難点・・・
www.microsoft.com/whdc/device/audio/wdmaud-drv.mspx
Vista からは UAA (Universal Audio 何とか) に統一されてるんだけど。

セキュアオーディオパスってのがあって、DRM処理された音源の再生時には
署名されていないフィルタドライバは割り込めなかったような気もする。

そうして僕の知るところ、これをやってる例は聞いたことがない。
オーディオカードの出力から入力へループバックする方が遙かに簡単だから。

特定のアプリが対象で、どんなAPIで鳴らしてるのか見当が付くなら、
単純なAPIフックで実装できるわけですが。

564 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 22:05:38 ]
リダイレクトに相当するものを録音するだけ。
ドライバを作る必用もなければ、APIをフックする必用など微塵もない。

565 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 22:16:40 ]
サウンドカード(デバイス)が対応してればそれが一番簡単でしょうね。


566 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 22:28:14 ]
リアルタイムでエフェクトでもかけたいんでね?

567 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 22:31:56 ]
用途が分からんがDirectShowでキャプチャで十分な希ガス

568 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 22:34:36 ]
サウンドデバイスをフックしてDRM解除するソフトでも作りたいのだろ

569 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 22:40:14 ]
>>566
お前は他人の話を聞かない奴だとよく言われるだろ。

570 名前:sage [2007/11/27(火) 22:45:54 ]
録音はwaveInXXXで実装できるが、何らかの音が鳴り始めた瞬間というのは、
ユーザーモードでは特定できないはず。
しかし、WAVEデバイス指定のmciSendCommandやwaveOutWriteをAPIフックしたとなれば、
それを期に録音を開始することで再生バイトを取得できるかもしれない。
これらの関数には、MM_MCINOTIFYのような再生終了の通知メッセージがあったから、
メッセージフックでそれを取得すれば録音終了のタイミングも図れるのではないだろうか。
デバイスオープンの関数が通知を指定していないのであれば、
その関数もフックして通知フラグを立ててしまえばいい。



571 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 23:03:00 ]
今時waveOutってのもなぁ〜
DirectSoundかASIOだろ

572 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 23:07:37 ]
>>570
そんな余計なことを考え無くったって受け取った音声データ自体をみれば、
音が鳴っているかどうかなんて判断できるだろ。

そもそも再生の開始のタイミングを受け取りたいなんてどこに書いてあるんだ?
録音終了のタイミングが知りたいなんてどこに書いてあるんだ?
再生バイトの取得が必用なんてどこに書いてあるんだ?
通知フラグを立てる必用があるなんてどこに書いてあるんだ?

573 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 23:14:22 ]
>>571
DirectSoundはVistaでHALが廃止された過去の技術
ASIOは応答速度と引き替えにCPU負荷が上がる上、
ミキサーなどの機能制約がある使う場所を選ぶ技術

知っている用語を出したいんだろうが、頭が悪すぎる

574 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 23:26:40 ]
VistaがDirectSoundのHAL捨てたのはCPUパワーが上がってきたのと、
一部に狼藉ドライバがあったからで、過去の技術と言うほどじゃない。
それを言うならwaveOutの古さってどうよ?

575 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 23:33:04 ]
waveOutが古くないなんて誰も言っていないが、妄想が酷いんじゃないか?

576 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 23:36:38 ]
>>575
横から悪いが、
あんたちょっと黙ってたほうがいい気がするよ。
誰にでも難癖つけてるようにしか見えない。

577 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 23:37:35 ]
>>573
何を勘違いしてるのか知らんが、今時waveOut系を使ってるプレーヤーなんてほとんど無いから
waveOut系をフックしてもあまり意味無いだろって言ってるのだが。

578 名前:550 mailto:sage [2007/11/27(火) 23:42:01 ]
なるほど、いろんな関数をフックしないといけないようですね。
だとすると、やはりフィルタドライバを作ったほうが抜本的な方法なのでしょうか。

579 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 23:43:55 ]
>>577
デフォルトでASIO経由再生するプレイヤーの割合の方が遙かに少ないが、
いったい何を言ってるんだ?

580 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 23:44:09 ]
>>578
だから何が目的なのかもっと具体的に書けよ



581 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 23:46:11 ]
>>579
お前は人の揚げ足を取るのが趣味なのか?

582 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 23:48:02 ]
お前ら勝手に盛り上がりすぎだろ

583 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 23:48:45 ]
>>550
ttp://applian.com/freecorder3/


584 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 23:50:23 ]
>>581
>今時waveOut系を使ってるプレーヤーなんてほとんど無いから
>waveOut系をフックしてもあまり意味無いだろって言ってるのだが。
といってASIOを挙げている時点で支離滅裂なんだが、
いったい何を考えているのか不思議でしょうがない。
そこに対する回答はないのか?

585 名前:550 mailto:sage [2007/11/27(火) 23:51:31 ]
>>580
PC1で鳴っている音をLAN経由でPC2に送りたいんですよ。
PC1とPC2にはスピーカーとマイクが接続されていて、
サウンドデバイスは一つしかないと仮定します。

586 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 23:52:10 ]
>>584
DirectSoundはどうした?
VistaでHALが廃止されたからって何が問題なんだ?

587 名前:570 mailto:sage [2007/11/27(火) 23:54:31 ]
すまない。
自分が余計な事を言ってしまったがために話が盛り上がってしまった。
要は、waveInで登録したバッファの中身を解析すれば、音が鳴っているかどうかを判定できるということだったんだ。

588 名前:550 mailto:sage [2007/11/27(火) 23:54:48 ]
PC1,PC2にそれぞれ一つのサウンドデバイス、という意味です。

589 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 23:54:58 ]
>>585
そのPCにはリダイレクトに相当するものはないのか?

590 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 23:56:26 ]
>>585
WindowsMediaEncoder をインストールするだけでいいよん



591 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 23:58:38 ]
すでにあるものをわざわざ作る必要はなかろうもん

592 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 23:59:16 ]
>>586
HALのサポートが期待できなければ、別の技術に置き換わっていくというだけの話。
で、DirectSoundの件に関しては答えたから、今度はASIOを挙げた理由を答えてくれよ。

593 名前:550 mailto:sage [2007/11/28(水) 00:00:48 ]
>>589
その機能を使った場合、PC1に接続されているマイクは独立して使えるのでしょうか?

594 名前:550 mailto:sage [2007/11/28(水) 00:02:21 ]
>>590
使用感はESounDのwindows版のようなものを想定しているのです。

595 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:02:34 ]
>>593
マイクから音が拾いたければ、データの取得先をマイクに切り替えろよ。

596 名前:550 mailto:sage [2007/11/28(水) 00:04:07 ]
GnomeのESounDはアプリケーションがESounDに合わせて作らないといけないところが違いますけれど。

597 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:04:16 ]
>>592
あんたは勝手にwaveout使えばいいじゃん
DirectSoundやASIO使うやつにいちゃもんつけずにさ

598 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:05:01 ]
盛り上がりすぎだw
俺も混ぜろバカチン共w

599 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:05:27 ]
次回のテンプレにフックの話厳禁を入れておいた方がいいんじゃないか?
安易にフックに頼りすぎる上に、いつも話がろくな事にならない。

600 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:05:51 ]
>>583 は無視ですかそうですか



601 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:06:20 ]
>>592
>>570に対してwaveOutだけフックしても鳴ってる音全てをキャプチャできんよって言っただけだが
どうやらお前は570ではなくて、技術に拘った結果waveOutをマンセーしてるだけの変人だと分かったからもういいよ。

602 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:10:02 ]
>>597
で、ASIOを挙げた理由は?

何も考えてなかったんなら後付で
>今時waveOut系を使ってるプレーヤーなんてほとんど無いから
>waveOut系をフックしてもあまり意味無いだろって言ってるのだが。
とか理由をでっち上げずに、正直に理由はないけどASIOと書きたかっただけだと言えばいいのに。

どうせ逃げ回るだけでASIOを挙げた理由を答えることも無いのは分かってるよ。
ごめんね、ちょっと苛めすぎたよ。

603 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:12:52 ]
>>601
waveOutをマンセーしているとか、そう思いこみたいのは勝手だが、妄想にも程がある。
どこにそんなことが書いてあるんだ?

604 名前:597 mailto:sage [2007/11/28(水) 00:12:54 ]
>>602
ASIOなんぞ挙げてませんよ?
今までのやり取りを見てて感じただけだ

605 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:13:06 ]
>>602
は?今時のプレーヤなら大抵DirectSoundもASIOもサポートしてるだろ
その上で>>577>>601の意味で言ったのだが、何か問題でもあるのか?

606 名前:550 mailto:sage [2007/11/28(水) 00:15:30 ]
>>600
ただいま検証しています。

607 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:17:03 ]
>>605
実際の所、ASIOをサポートソフトはけっこう限られてくるよ。

608 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:17:42 ]
もう誰が誰かすら分からんが、
さすがに「今時のプレーヤなら大抵ASIOもサポート」は無い

609 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:19:22 ]
これからもASIO厨とwaveOut厨の喧嘩が続きそうだな

610 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:19:42 ]
Windows Media PlayerでASIO使えるの?



611 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:22:23 ]
少し夜風に当たって頭冷やしてこい

612 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:24:58 ]
ASIOを舐めたらどんな味ぉ?

613 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:25:26 ]
ASIO = Advanced Serial IO

614 名前:550 mailto:sage [2007/11/28(水) 00:26:33 ]
>>600
音を送る側:クライアント
実際に音を鳴らす側:サーバ
というようにしたいわけです。
つまり、たくさんのクライアントに向けて音を送りたいわけではなく、
一つのサーバに向けて音を送りたいのです。

615 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:29:28 ]
>>614
だから録音デバイスから普通に音を拾えよ
それを好きなだけ送れ
実際にやってみてそれでダメだったらまた来い

616 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:29:40 ]
ASIOは入力用だっつーの

617 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:30:55 ]
ふっくできるよ! できるよ!
って自分の技術に奇妙な自信を持ってるから、スレがカオスになるのではないかと予想

618 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:31:57 ]
>>614
上にも出てるけどWindows Media エンコーダでできないか?

619 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:34:15 ]
>>618
前にも思ったが、プログラミングのスレで既製品を進めてどうするんだと

620 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:34:53 ]
>>616
ミキサーを通さないから音質が上がるということで、
出力用に愛用している人間は少数ながらいる。
検索すると音質が上がったと喜んでいる人間がたしかにいる。
しかし私には同じ音にしか聞こえない。



621 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:36:07 ]
>>619
大抵はそれで済んでしまうことが多いから
まあ本人がそれでも0から作りたいっつーなら構わんが

622 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:36:53 ]
>>620
ボリュームパスして大音量で再生されただけだろ
あほすぎる

623 名前:550 mailto:sage [2007/11/28(水) 00:38:47 ]
>>618
>>614のモデルに合わせる使い方ができるでしょうか?

624 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:40:23 ]
>>623
ここはプログラム板だから、ソフトの使い方は別の板へ逝け

625 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:43:04 ]
サウンドカードのサウンドバッファが16bit以上をサポートしているなら音質は上がるかもしれない
128kbpsのmp3で満足するオレには分からんレベルだ

626 名前:550 mailto:sage [2007/11/28(水) 00:57:15 ]
>>621
私も既製品で済むに越したことはないと思うのですが、
目的に合うものがないので作るしかないと思ったのです。

627 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 01:01:13 ]
>>623
WindowsMediaEncoder
PortForwarder
sshd
これを組み合わせると可能

628 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 01:12:17 ]
>私も既製品で済むに越したことはないと思うのですが、
ちょwwwwwww

ソフトウェア板でやってよwwwwwwwwwwwww
何のために100レスも消費してたんだwwwwwwwwwwwww

629 名前:550 mailto:sage [2007/11/28(水) 01:14:19 ]
>>628
肝心なのは、直接目的に合うものが存在しないということですよ。

630 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 01:16:14 ]
単に探し足りないだけ、解説を読み足りないだけだと思う

現に出来るだろ



631 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 01:17:40 ]
>>627
SSHって必要か?

632 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 01:19:12 ]
提示されたアプリについてまるで調べてないってのは分かるなあ〜
明らかに>>623なんてレス読んで脊髄反射で聞いてるよね。

633 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 01:27:07 ]
要するに>>550はESounDみたいなサウンドサーバ/クライアントが作りたいんだろ
WindowsMediaEncoderだとストリーム配信みたいなことしかできないわな

634 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 02:10:45 ]
>>629
多くのオーディオデバイスでは、リダイレクタ(ミキシング済みの音声出力を取り込める入力)が
使えるので、それを waveIn 等でとってくれば簡単に目的の処理が可能です。
(USB オーディオ等だと無いのが普通みたいだけど)

ESound のようなものを作るのなら遅延はたぶんあまり許容できないでしょうから、
Windows Media Encoder 等ではなくシーケンス番号付けて RTP で送るのが良いと思います。

>>593
リダイレクタを使う実装では PC1 の wave 入力を利用することになるので、PC1側のアプリでは
MICは利用できなくなります。PC1 に ASIO 対応の余分なオーディオデバイスを追加し、
それでPC1の(通常の)出力を取り込むなどできれば非常に簡単ですが、ハードの追加は
ダメなんでしょうか?

XP向けにフィルタドライバを書くのは恐らく非常に大変ですよ。

635 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 02:28:14 ]
リモートデスクトップ接続、ってオーディオリダイレクタを
標準装備してるよね?

636 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 02:32:39 ]
もうほっとけよ。
どうせWindowsMediaEncoderだって試してもいないだろうし。

637 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 03:34:50 ]
>>636
WindowsMediaEncoderは役にたたんだろ。

638 名前:デフォルトの名無しさん [2007/11/28(水) 03:34:58 ]
単純な質問で悪いけど
ウィンドウを不可視状態で作成するのって、CreateWindowのウィンドウスタイル引数に
WS_OVERLAPPED ^ WS_VISIBLE でよかったっけ?
なんか見えるんだけど・・orz
「^」って排他的ウンタラだったよね?よね?

639 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 03:42:28 ]
どうせShowWindow(hWnd,SH_SHOW);してるとかそういうオチ

640 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 03:46:20 ]
WS_OVERLAPPEDはWS_VISIBLEを含んでない件

つまり
WS_OVERLAPPED & WS_VISIBLE → 偽
なので

WS_OVERLAPPED ^ WS_VISIBLE = WS_OVERLAPPED | WS_VISIBLE



641 名前:デフォルトの名無しさん [2007/11/28(水) 06:17:14 ]
すまん
>WS_OVERLAPPED ^ WS_VISIBLE = WS_OVERLAPPED | WS_VISIBLE
これわからん
こんなのあり?


642 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 06:23:04 ]
0^1 = 1
1^1 = 0

643 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 06:39:07 ]
>排他的ウンタラ

排他的論理和ですが何か?


きみのやりたいことはこっちではないかな?
WS_OVERLAPPED & ~WS_VISIBLE

644 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 06:39:59 ]
>>641
わからんならWS_OVERLAPPEDだけ使え
故意に明示したいなら
WS_OVERLAPPED & ~WS_VISIBLE
こうじゃないか

645 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 06:40:39 ]
かぶってしまった

646 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 06:47:23 ]
珍子がかぶってる

647 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 07:18:54 ]
もし最初から最後まで表示する気が無いなら、WS_OVERLAPPEDも
指定するだけ無駄だな。

648 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 09:31:58 ]
TotalRecorderみたいなことがしたいのか?

649 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 09:58:31 ]
>>546
デバッグ情報はデバッガで読み込めば良い

650 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 10:24:37 ]
>>550は既存品がダメならH.323とそれに関係する資料見た方がよい
ttp://www.itu.int/rec/T-REC-H.323/en



651 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 11:33:57 ]
>>650
ESound みたいな使い方には既存のストリーミングサーバは
Windows Media Encoder は遅延が大きすぎて使えないってだけだろ。
VNC のアドオンでも作ってるんじゃねーの。

リモートデスクトップでのオーディオのリダイレクトみたいに、
フィルタドライバじゃなくてそれ専用の仮想デバイスを作っちゃう手もあるな。

652 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 12:00:48 ]
>Windows Media Encoder は遅延が大きすぎて使えないってだけだろ。
だれもそんなことはいっていない。

>VNC のアドオンでも作ってるんじゃねーの。
だれもそんなことはいっていない。

>リモートデスクトップでのオーディオのリダイレクトみたいに、
>フィルタドライバじゃなくてそれ専用の仮想デバイスを作っちゃう手もあるな。
リモートデスクトップで確認してみれば自明だが、DirectSoundで音楽再生でもしようものなら音がとびまくる。

だれももいっていないことを勝手に想定したり、使い物にならない手段を提示したり、
いったい何がしたいんだ?

653 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 12:09:53 ]
>>652
リモートデスクトップで音がとぶから仮想デバイスが使い物にならないだなんて飛躍しすぎだろ

654 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 12:28:02 ]
>>652
質問者自身が ESound みたいなのを作りたいって言ってるジャンw
逆に>>650は質問のどこを見てプロトコルに関する質問だと思ったの?
学習困難児だった?

655 名前:デフォルトの名無しさん [2007/11/28(水) 12:38:37 ]
漏れが華麗に要件をまとめた

(1) ESounD のようなリダイレクタ
(2) 同時にMICも使いたい
(3) 取ってきた音は1つのサーバに送って、サーバで鳴らす

(2)があるから、入力を占拠する「音源ボードのリダイレクタ(+WME)」はダメ。
マイクロソフトの人間は仮想デバイスを使ったが、>>652が否定してるから
仮想デバイスはダメ。フィルタドライバは>>634が否定してるからダメ。

656 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 12:47:16 ]
まだこのネタ続いてるのかよw
おまいらもういいだろww

657 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 12:54:35 ]
質問者を置き去りにして外野が騒いでるのは滑稽だな
外野といってもあーだこーだ言ってるのは一人か

658 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 15:07:49 ]
仮想デバイス作ればいいやん。
音飛びするのは帯域が足りてないだけかと。

659 名前:デフォルトの名無しさん [2007/11/28(水) 15:23:53 ]
>>550 に関しては、お前ら
1. windowsで流れているサウンドをフックすることは可能でしょうか?
2. もし方法があれば、調べれば良いポイント・キーワードなどを教えていただけないでしょうか。

1. Yes or No
2. if( 1. == Yes) 調べれば良いポイント・キーワードを教える
これだけ、答えればOK

余計な詮索、アドバイスせずにこれだけ答えてやれよ。俺俺妄想レスするなよ

660 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 15:34:23 ]
ごめん汚して  でも見てほしい


【政治】 「放置すると、日韓関係にヒビ」 外国人参政権付与、成立への流れ加速も…公明に各党同調、自民反対派は沈黙、首相次第か★10

news22.2ch.net/test/read.cgi/newsplus/1196226030/259n-


参考動画
www.nicovideo.jp/watch/sm1636901



661 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 16:25:06 ]
HeapFreeしたときの戻り値が1404673とかなんだけど
これは何の数値?

662 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 16:39:43 ]
なんだろうね
メモリアドレスではないみたいだからヒープハンドルかなんかかな

調べてないけど

663 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 16:48:01 ]
>>662
調べてよ!
気になってよるしか眠れない!

664 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 16:50:13 ]
寝れるならいいじゃない

665 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 16:59:02 ]
昼寝したいのにー

666 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 18:02:32 ]
666

667 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 19:17:16 ]
        ____
       /      \
      / \   /  \  ネット社会の闇を見ました
    /  (●)   (●)  \   
    |     (__人__)     |  ________
     \    ` ⌒´    ,/ | |          |
    ノ           \ | |          |
  /´                 | | 
 |    l                | |   

668 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 19:20:28 ]
ウィンドウサイズ変更時に、
一瞬背景色で描画され
ちらつくのですが、回避する方法は何かありませんか?

669 名前:デフォルトの名無しさん [2007/11/28(水) 19:29:46 ]
>>643-644
そうでしたorz
&と|は良く使うので、間違わないんだけど^と~は滅多に使わないのでごっちゃになってた
トンクス

670 名前:デフォルトの名無しさん [2007/11/28(水) 19:31:15 ]
>>649
そもそもデバッガが何のために付いてるのか良く分からん
使い方も分からんし



671 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 19:34:06 ]
>>668
WNDCLASSのhbrBackgroundにヌルブラシを設定する
WM_ERASEBKGNDでTRUEを返す

672 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 20:01:27 ]
~はかなりよくつかうだろ


673 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 20:23:50 ]
ビットフラグを削除する時に使うね。

674 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 20:26:55 ]
>>670
デバッグするために決まってるだろ
普通、開発はデバッグ版でして、バグがなければリリース版だろ

675 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 20:40:48 ]
デバッガという名前なんだから勝手にバグを直してくれればいいのに
使えねーな

676 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 20:43:05 ]
だったらバグのあるプログラムを書くんじゃねーよ下手糞とデバッガが仰ってます

677 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 20:54:04 ]
この流れ好きだなぁw

678 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 20:58:48 ]
そうか?

679 名前:デフォルトの名無しさん [2007/11/28(水) 21:15:17 ]
タスクバーの右側に
「ネットワークケーブルが接続されていません」とか「ワイヤレスネットワークに接続しました」
とか状態が表示されていますが
このネット接続の状態変化を監視するAPIを教えてください

680 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 21:22:53 ]
GetIFTable?



681 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 21:44:19 ]
>>680
そんな感じです。ただ今回は変更の検知をしたいのでこれは使えません
MSDNみたらGetIFTableの近くにNotifyAddrChangeというのがあったのでこれを調べて見ます
ありがとう

682 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 22:02:28 ]
IPv6のネットワークポートで接続されている機器がある時、そのアドレスがLinkLocalであった場合に
付加するスコープIDの取得の仕方を教えてもらえないでしょうか。
IP Helper関数のGetAdaptersAddresses()を使って取得できる値のいずれからしいということは
わかったのですが、列挙される構造体のうち、どれが目的の値か特定できません。

683 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 22:56:11 ]
hWndとhDCとDIBの関係がいまいちよくわからないんだけど、わかりやすく説明されてるサイトとかない?

684 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 23:50:05 ]
ウィンドウにWS_EX_LAYEREDを設定し、32Bitビットマップを読み込み下の様にUpdateLayeredWindowを実行しましたが、
ウィンドウが消えてしまい、うまくビットマップを適用させることができません。
どこがおかしいか、何方か教えて頂けないでしょうか。

ReadFile(hFile , &bmpFileHeader , sizeof (BITMAPFILEHEADER) , &dwBytes , NULL);
bmpInfo = (BITMAPINFO *) malloc (bmpFileHeader.bfOffBits - dwBytes);
ReadFile(hFile , bmpInfo , bmpFileHeader.bfOffBits - dwBytes , &dwBytes , NULL);
bPixelBits = (BYTE *) malloc (bmpFileHeader.bfSize - bmpFileHeader.bfOffBits);
hdc = GetDC(hWnd);
hBitmap = CreateDIBitmap(hdc , &bmpInfo->bmiHeader ,CBM_INIT , bPixelBits , bmpInfo , DIB_RGB_COLORS);
hBuffer = CreateCompatibleDC(hdc);
SelectObject(hBuffer , hBitmap);
GetObject(hBitmap , sizeof (BITMAP) , &bitmap);
wndPos.x = 100; wndPos.y = 100;
surPos.x = surPos.y = 0;
wndSize.cx = 300; wndSize.cy = 300;
bf.BlendOp = AC_SRC_OVER;
bf.BlendFlags = 0;
bf.AlphaFormat = AC_SRC_ALPHA;
bf.SourceConstantAlpha = 255;
UpdateLayeredWindow( hWnd, GetDC( 0 ), &wndPos,&wndSize, hBuffer, &surPos, 0, &bf, ULW_ALPHA);

長文ですみません

685 名前:デフォルトの名無しさん [2007/11/29(木) 00:01:28 ]
freeしたポインタをfreeしたらどうなりますか?多分よくないですよね?
freeされたかどうかを調べる関数とかってないですか?

686 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 00:10:35 ]
>>683
HWNDはウィンドウ
位置を動かしたりサイズを変えたり、タイトルバーを設定したりできる

HDCは画家
ペンや絵の具を渡せば、三角形とか四角形とか円とかを描いてくれる

DIBはメモリ内の.bmpファイル

687 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 00:11:51 ]
>>685
よくないです
調べる方法はありません
自分で気をつけましょう

688 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 00:18:25 ]
>>684
ビットマップのイメージ本体を読み込んでないように見える
bPixelBits は malloc しただけでそのままだし
hBitmap も Create しただけで何も描き込んでないし

689 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 00:19:09 ]
>>687
デバッグビルドならチェック入ると思うが

690 名前:デフォルトの名無しさん [2007/11/29(木) 00:30:16 ]
>>685
当たり前だけど、対象のポインタ変数にメモリが割り当てられてるかどうかは
ポインタがNULL番地をさして無ければいいわけだから
俺はいつも if(lpPoint != NULL) free(lpPoint) ってやってるが、もしかしたら正しくはないのかも知れん

>>686
ついでにCreateDIBSection関数が何者なのか、解説ヨロ
何度説明されても分からんけん




691 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 00:32:47 ]
>>690
if(lpPoint != NULL) free(lpPoint)
これは無駄だろ

if(lpPoint != NULL) delete[] lpPoint
の場合なら意味あるけど

692 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 00:38:22 ]
>>690
CreateDIBSection は指定したサイズのビットマップをメモリ内に作る。
GDI 関数で扱えるように HBITMAP ハンドルが返されるし、
その RGB 値を直接触れるように、ビットマップデータへのポインタも返される。

693 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 00:38:56 ]
>>691
どっちも無駄
NULL を free とか delete とか delete[] に食わせるのは合法で、単に無視される

694 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 00:50:08 ]
>>693
deleteも無駄だったのか・・・知らなかった

695 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 00:54:26 ]
deleteしたあとNULL入れとくのが正解

696 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 01:30:03 ]
if(lpPoint != NULL) {free(lpPoint); lpPoint = NULL;}
こうするのが正解

697 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 01:40:16 ]
>>696
不正解

698 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 01:49:15 ]
NULLだったら無視されるんだから
free(lpPoint);
lpPoint = NULL;
だけでいいじゃん…

699 名前:デフォルトの名無しさん [2007/11/29(木) 02:02:02 ]
K&Rにfreeで解放されたメモリ領域にfreeをかけるのは動作が規定されてないからやめとけって書いてあった希ガスよ
正しくは>>696のようにすべきじゃね、と思う

>>692
そういう説明は何百回も読んでるんだけど、さっぱりわかんねーよ
>指定したサイズのビットマップ ← これはデバイス独立ビットマップなのか、デバイス依存ビットマップなのか・・・
GDI関数で扱えるDDB(デバイス依存とかいう香具師)は、ビットマップのピクセルビットへはアクセスできない
HBITMAP型は通常デバイス依存ビットマップを表現するのに使われるはずだよ
なのに、ピクセルビットへのポインタもちゃんと返してくる
現にGetObjectで調べてみたら、pBitsにピクセルビットへのポインタが格納されてる
通常HBITMAP型のDDBを引数に、GetObjectやってもpBitsはNULLだよね

700 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 02:30:38 ]
>>699
free(lpPoint);
lpPoint = NULL;
free(lpPoint);

と、

free(lpPoint);
free(lpPoint);

は違う。
おまいが言っているのは後者。



701 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 02:48:31 ]
>>699
DDBのビットデータに直接アクセスできるわけない
大抵VRAM上にあるだろうし、DirectXじゃないから直接アクセスできてもあまり意味が無い

>HBITMAP型は通常デバイス依存ビットマップを表現するのに使われるはずだよ
お前の「通常」の基準がよく分からん。DDBで使うことの方が多いと思うが。

DIBもDDBもHBITMAPなのは、ある程度両者を意識しなくて済むようにそういう設計にしてるのか
DIBセクションが標準APIとして加わったのがwin95以降だからなのか他に理由があるのかは知らん

702 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 03:31:48 ]
>>688
レス、有難うございます
>>ビットマップのイメージ本体を読み込んでいない

すみませんm(__)m
初歩的なミスに気付いていませんでした

ReadFileをもう一つ追加して見ます

703 名前:デフォルトの名無しさん [2007/11/29(木) 06:31:35 ]
>>701
>HBITMAP型は通常デバイス依存ビットマップを表現するのに使われるはずだよ
お前の「通常」の基準がよく分からん。DDBで使うことの方が多いと思うが。
デバイス依存ビットマップ=DDB

704 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 08:12:20 ]
>>697
速度重視なら正解だろ

705 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 08:19:13 ]
>>704
一概には言えない
lpPointがNULLの可能性が高い場合はいいが逆だと遅くなる

706 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 08:26:40 ]
>>705
そこまで行くとそもそも論になるからもう止めようぜ

707 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 08:27:10 ]
>>699
DIBセクションは、DIBの形でデータを保持していて、
HBITMAP経由で読み書きするときには、
その都度DDBとの間で変換が行われる。

ってプログラミングWindowsに書いてあった。

708 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 10:05:52 ]
今時if文判定1個にこだわるプログラミングしてるやつがいることに驚きだわ

709 名前:683 mailto:sage [2007/11/29(木) 10:22:06 ]
>>686
ではなぜBitBltではDIBではなくhDCを渡すのでしょうか。
あと、DIB間での画像拡大コピーってできますか?

710 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 10:25:59 ]
>>709
DIBとDDBの違いわかってる?



711 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 12:24:28 ]
>>710
>>709が解ってないのはDIBとDDBの違いではなく、DCにビットマップを選択させる概念ではないかと

712 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 12:26:35 ]
DIBとDDBの違いがわかればその疑問も解決すると思うのだが

713 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 12:43:16 ]
>>709
>なぜBitBltではDIBではなくhDCを渡すのでしょうか。

BitBltはDIB用じゃないからさ
DIBを直接渡すAPIはSetDIBitsToDeviceやStretchDIBitsがあるからそっちを使う

>DIB間での画像拡大コピーってできますか?

ポインタ駆使して直接ビットデータを操作しちゃえばなんだって出来る

714 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 12:49:00 ]
>>709
GDI+でも使ってろ

715 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 14:03:10 ]
>>700
本来は
void correct_free(void **p){
old_free(*p);
*p = NULL;
}
という設計にすべきだったんだよな

そうなってはじめて安心して
correct_free(&lpPoint);
correct_free(&lpPoint);
と書ける


716 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 14:06:23 ]
その安心は半分まやかしだ
ポインタ値はあちこちにコピーされうる

717 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 14:13:31 ]
生成者と参照者を明確に区別して
freeは生成者だけが行うようにする
参照者は使ったらそのまま放置
っていう造りにしたら安定する?

718 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 14:14:26 ]
そんなあなたにshared_ptr

719 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 14:36:20 ]
>>715
correct_free(NULL);
どこが安心できるんだ?

720 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 15:14:31 ]
私が知っていること(onXP)

ビットマップにはDDB,DIB,DIBSectionがある
HDCが好むのはHBITMAPつまりDDBとDIBSection
DDBはシステム領域に作られ、総量の上限がある
DIBSectionはプロセス毎の2GBの中に作られる
-->長時間保持する大きなビットマップ向き、メモリマップを使えば巨大なものも可

DIBSectionを選択したままCreateCompatibleBitmapを呼ぶとDIBSectionが作られるらしい
DIBSectionはwin16のDIB.DRV,WinGの系統らしい
DDBとDIBSection win95の頃は速度大差なし



721 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 15:24:23 ]
>>719
ごめんうっかりしてた
void correct_free(void **p){
if(*p) old_free(*p);
*p = NULL;
}
correct_free(&lpPoint);
correct_free(&lpPoint);

722 名前:デフォルトの名無しさん [2007/11/29(木) 15:29:19 ]
頑張ってそんな変なもの使って何かいいことある?
free には失敗しないかもしれないけど、
何時誰が free するかを管理しないコーディングスタイルじゃ
内容が必要なときに既に free されてる恐れがあるじゃん。

ちゃんと誰がいつまで内容を参照したいかが分かってれば、
それの終わりのとこで一回 free すればいいわけだし。

723 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 15:57:27 ]
>>708
アセンブリでMMXやSSEで使うこのご時世に
お前が低能だって事は分かった

724 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 16:26:48 ]
>>721
if(*p)
{
old_free(*p);
*p = NULL;
}
こうだろ

>>722
バカは黙ってろ
管理するに決まってるだろ
俺はマクロでNULL代入してるぞ

725 名前:724 mailto:sage [2007/11/29(木) 16:28:36 ]
訂正
if(p)
{
old_free(*p);
*p = NULL;
}

726 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 16:30:04 ]
ダイレクト ボブサップ

727 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 16:32:44 ]
>>722
今時は開放されたメモリの参照すれば例外飛んでくれるから
NULL入れる必要もないといえば無い。
それに、確保や開放を頻繁に行うなら、意識して717のいうように作るべきだと思う。

しかし、世の中の大多数の人はそのことを知らないし、やろうともしない。
結局バグの温床になっているが、なんとなく動いてしまっていて気がつかない人も多い。
特にリリース版で動くからいいやとかいうタイプの人もいるんで・・・

あと、自分の経験上、他人が書いたコードで確保と開放が入り乱れてる場合は
開放したところにNULLいれるように書き直すと、バグが良く見つかる。
まあ、こんな小手先の技使わないといけない俺の環境が悪いんだろうな。

最新のコンパイラとか開発環境、動作環境でやり、自分がコードのすべてを把握し
覚えている限りは無用のテクニックかもしれない。

>>723
最適化スレだったらその発言は甘んじて受け入れよう
だが、ここはAPIを質問するところだ
こんなところで、パイプラインの破壊気にしてもしょうがないだろ?


728 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 16:34:44 ]
>>727
C++ならいいんだけどな

729 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 16:37:05 ]
あああ、free論議は収拾付かなくなるので終了。

終了終了

730 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 16:38:34 ]
>開放したところにNULLいれるように書き直すと、バグが良く見つかる。
嘘だろ



731 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 16:47:32 ]
>>727
APIスレだろうが最適化スレだろうが関係ない
何万回、何百万回も使うならif文一つだろうが気にするべき
ジャンプ1回で済ますかpush、call、popを使うかで大違い

732 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 16:48:24 ]
>>728
少なからず理解者がいてくれたようでうれしい

>>730
嘘だと思える君の環境がすごくうらやましい
世の中には信じられないことをする人が多いのです。
また、C++に対応してるんだかしてないんだかわからない
しょぼい環境も多いのです。

733 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 16:52:09 ]
>>732
開放したところにNULLいれてバグるなら
NULLいれなくてもバグるだろ

734 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 16:53:41 ]
>>732
お前が低能だって事は分かった

735 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 17:02:35 ]
>>727
そんなことで例外発生させてどうすんだよ
NULLなら処理を跳ばしてくれれば良いだけなのに

736 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 17:05:47 ]
>>733
NULLいれなくてもバグってるんだけどそれは発見されない、
NULLいれたらそのバグが発見されやすい、ってことだろ

737 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 17:08:32 ]
>>736
元々バグってんのか
NULL代入関係ないじゃん

738 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 17:10:49 ]
ここはAPIスレだったよね?
特定の言語の話はスレ違い

739 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 17:11:40 ]
ガベコレのある言語を使いましょう

でこの話題は終了

↓はい次

740 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 17:14:53 ]
空気読まずに
ポインタのアドレス使ったリスト管理なんかだと
freeのあとNULL入れるのは必要になってくるけどな



741 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 17:16:09 ]
haskellお勧め

742 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 17:21:43 ]
質問なのですが、
SetLayeredWindowAttributesを使わずにウインドウのある色の部分だけ透明にすることはできるのでしょうか?

743 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 17:22:31 ]
SetWindowRgn

744 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 17:31:33 ]
>>727
> 開放したところにNULLいれるように書き直すと、バグが良く見つかる。
ワロタ

745 名前:デフォルトの名無しさん [2007/11/29(木) 18:14:14 ]
結局
if( p != NULL ) { free(p); p = NULL; }
でFA?

746 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 18:15:12 ]
どうでもいいです

747 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 19:04:14 ]
>>745
>>696-698

748 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 19:11:42 ]
ぬるぽ


749 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 19:12:49 ]
if(_x_){ _x_->Release(); _x_ = NULL; }

750 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 19:21:24 ]
スマートポインタ使えよ糞共



751 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 19:25:54 ]
templateって方の種類分容量増えるんだろ
define でいいじゃん

752 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 19:27:28 ]
>>751

753 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 19:32:49 ]
>>751
確かに環境によってはtemplate禁止にせざるを得ないこともある。
が、さすがにtemplateの機能をdefineだけじゃ無理だと思う。

754 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 19:44:57 ]
本当の初心者質問ですみません。
ウインドウを作成するところで詰まってしまいました。
ビルドは成功するのですが、実行するとウインドウが表示されず、CPUが100%になります。
どこがおかしいでしょうか?

環境
WindowsXPsp2
Visual Studio2005

ソース
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5360.txt

755 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 19:48:39 ]
ウィンドウクラスの登録が抜けている

756 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 19:55:50 ]
>>854
PeekMessageなんか使うから100%になるんだ、GetMessage使え。
まずは猫でも分かる〜を読むべし。

757 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 19:58:51 ]
>>752

758 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 20:02:59 ]
>>717
>>727

COMのプログラミングすると
生成者が放置で
参照者が片付ける
みたいな感覚に染まってしまう


759 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 20:07:30 ]
>>725
それ意味なくね?
訂正が間違ってる


760 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 20:59:53 ]
InvalidateRectで無効化された領域を取得するにはどうすればよいのでしょうか?

質問の背景としては、スクロールバーを動かしたとき、画面のビットマップをBitBltで
移動させることでスクロールされるようにしています。ところが、転送元の領域が
無効化された状態であった時、その領域が転送後にも再描画されず、不正な状態のままに
なってしまっています。そこで、転送前に無効化されていた領域を転送後の座標系で
無効化しなおすことでこの問題を解決したいと思っているのですが。

よろしくお願いします。



761 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 21:03:32 ]
>>751
組み込みスレならともかく、Win32 APIスレで言う話か?
メモリ数百MiB-数GiB、CPU数百MHz-数GHzな環境で禁止にする必要などない。


762 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 21:07:40 ]
>>760
GetClipBox
PAINTSTRUCT::rcPaint

763 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 21:08:29 ]
GetUpdateRect
だけど。
ふつうはScrollWindowExが良きに計らってくれるんじゃないのかなー。

764 名前:760 mailto:sage [2007/11/29(木) 21:16:46 ]
>>763
おわっと、こんな関数があるとは知りませんでした。
まだ試してないですが、これを使えば万事うまくいきそうですね。
どうもありがとうございます。

>>762
どうもありがとうございます。

765 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 22:32:51 ]
>>759
どこが?

766 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 23:00:00 ]
もう引っ張るなよ

767 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 23:03:31 ]
別にfreeの話しを引っ張るつもりはない
しかし突っ込まずにはいられないだろ

768 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 23:04:35 ]
「あえていうなら、Win32APIスレでfreeの話をする辺りが。」
ってことで納得してくれよ(w

769 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 23:05:44 ]
だからfreeは関係ないと

770 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 23:07:43 ]
>>759>>766




771 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 23:10:46 ]
freeは本質とはあまり関係ないんだからとりあえず黙っとこうぜ。
荒らしたいというなら別だが。

772 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 23:13:29 ]
>>771
>>769
コードの話しだろ

773 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 23:15:15 ]
馬鹿しか居ないな

774 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 23:18:55 ]
以上をまとめると、HeapDestroy万歳ってことですね。

775 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 23:25:40 ]
>>772
>>725はあってるよ
どの道すれ違い消えろ

776 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 00:12:10 ]
昨日はサウンド関係で荒れて今日はfreeで荒れるのか
明日は何の話題で荒れるのかな〜?

777 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 00:18:14 ]
1:int *p;とint* p;
2:sizeof( char )
3:インデント
好きなのを選べ

778 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 00:24:36 ]
>>777
1 と 3 はコード整形ツールで抹殺されるから 2 しかない!

779 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 00:35:00 ]
ウィンドウのシステムバーの青い部分をドラッグしたときにくるメッセージって何ですか?
WM_ENTER/EXITMENULOOPは左上のボタンで出るメニューのメッセージっぽいのですが…

780 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 00:47:13 ]
WM_SYSCOMMAND
WM_WINDOWPOSCHANGING
WM_WINDOWPOSCHANGED
WM_MOVING
WM_MOVE



781 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 00:47:54 ]
>>778
Win32API的にsizeof (TCHAR)を使うので、このスレでは2すら話題にならない。

782 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 00:48:14 ]
結局見つけました
WM_ENTER/EXITSIZEMOVEでした。
お騒がせしました

783 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 00:52:10 ]
CHARとかWCHARとかTCHARとか型がありすぎてわけわかんね
文字列に関してはワールドワイドなUnicodeに対応してるWCHARだけつかってればいいってこと?

784 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 00:52:46 ]
いまさらハンガリアン記法でひとつ。

785 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 00:55:32 ]
もうNT系しか相手にしないなら、VC8みたいにいきなりUNICODE定義しといて
WCHARしか使わないという手はある。
外部入出力で結局charが要るのと、
文字列リテラルにL付け忘れることがあるのと
UNCODE特有の嫌らしい概念が出てくるのが
今ひとつだけど。

786 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 01:09:11 ]
数は少ないがANSI版しか用意されていない糞APIもあるけどな

787 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 01:09:58 ]
>外部入出力で結局charが要るのと

このときのcharで使う文字コードは何がよいのでしょうか?
UTF-8?
mbcs?


788 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 01:11:29 ]
外部次第だろ

789 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 01:20:54 ]
質問ですが、画面の解像度が変化したときに受け取るイベントというのは何なのでしょうか?

790 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 01:22:36 ]
あるよ
ググればすぐ出てくる



791 名前:デフォルトの名無しさん [2007/11/30(金) 02:10:24 ]
ココ見てると、みんな同じような問題で悩んでんだなってチョット思うな。
特にDIBSectionとかDIBとかDDBとか 、答えられる香具師があんまりいないんだな。
DIBセクションはDIB?をれともDDB?

792 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 02:10:38 ]
WM_KAIZOUDOHENKA

793 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 02:17:17 ]
>>791
DIBセクションはDIBセクションだろw
CreateDIBSection によって作成された HBITMAP 互換のGDIオブジェクト。
GetObject すると DIBSection が帰る。

794 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 02:30:32 ]
>791
答え待ってないでProgramming Windows下巻読めよ

795 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 03:25:30 ]
MSのドキュメント読めばわかる程度のことは答えんな。
調べる事が下手糞だといつまでたってもスキルは上がらんぞ。

796 名前:デフォルトの名無しさん [2007/11/30(金) 03:37:08 ]
DIBSection = DIB の部分
つまりDIBの一部分ってことでFA

797 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 03:45:56 ]
>>796
>>791のようなDIBとDDBの区別すらついてない人間にはその説明では不十分だ
結局はMSDN読め、に尽きるが

798 名前:デフォルトの名無しさん [2007/11/30(金) 04:17:46 ]
香具師なんて使ってる奴久しぶりにみたwww

799 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 05:54:26 ]
その内「w

800 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 05:55:07 ]
失敗。
まぁいいや。
800ゲッツ!



801 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 07:15:09 ]
>>786
そりゃWin16との互換専用だったりして
Unicode版用意してまで延命させる必要がそもそもない

802 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 07:32:23 ]
GetProcAddressはー?

803 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 08:35:46 ]
DLLの仕様でシンボルにANSI文字列しか使えないから


804 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 08:41:01 ]
切れちゃった

DLLの仕様でシンボルにANSI文字列しか使えないからANSIでないと意味がない
無理してUNICODEにしてもANSIに変換してオーバーヘッドが出るだけ

805 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 10:16:43 ]
ATLのW2Aとかの文字列変換マクロを使えるなら、オーバーヘッドは最小になるよ。
自分の場合、内部はUNICODEで処理するなぁ。

806 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 11:06:06 ]
CreateWindowで作ったウィンドウの子コントロールのフォントを変更したい場合
親ウィンドウに合わせて自動で全ての子のフォントを変更することはできないのでしょうか
それともこういった処理は自分で書く必要があるんでしょうか

807 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 11:42:00 ]
もちろん、自分でやらないと駄目。
自動で勝手にフォント変更されたら、コントロール毎にフォントを変えることが
できないではないか。

808 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 12:48:46 ]
>>801
違うよImageHlpだよ
ま、こんなモン使う機会あまりないけどな

809 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 12:55:46 ]
>>807
やはりそうなんですか
ありがとうございました

810 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 13:44:40 ]
>>808
Platform SDKを良く読んだほうが良い



811 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 14:10:35 ]
>>810
よく読むべきなのはお前な
BindImage
ReBaseImage
ImageLoad

> All ImageHlp functions, such as this one, are single threaded.
今時こんな設計の糞API揃いだが

812 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 14:15:58 ]
>>811
なんだそれNT時代のAPIじゃないのか?w

813 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 14:47:24 ]
そうはいうがな
Windows1.0時代からあるAPIだってUnicode対応・マルチスレッド対応だぞ

814 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 14:48:03 ]
1.0は言い過ぎか?
今でも使われる古参のAPIってどのあたりからあるんだろ

815 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 16:24:22 ]
>>813
それだって、最初からそうだったのではなく、
Win32化されたときからじゃないか。

>>814
Win16はわからないけど、CreateWindowとか有名な関数をMSDNライブラリで引くと、
大体Minimum operating systemsがWindows 95, Windows NT 3.1になっている。

816 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 18:33:37 ]
>>815
CreateWindowはWin16時代からある

817 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 18:36:26 ]
そりゃまあ、WinMainからRegisterClassしてCretateWindowしての
一連の基本のやつは昔からあるけどよー

818 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:02:10 ]
マウスキャプチャ状態にある
コモンコントロールのマウスの移動を関知するには
どうすればいいのでしょうか?
タブをドラッグアンドドロップで移動させたいのですが
親にWM_MOUSEMOVEが飛んできません…

819 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:11:50 ]
キャプチャしたウィンドウに飛んでこないか?

820 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:17:04 ]
>>819
もしやサブクラス化意外に道はないのでしょうか?
通知メッセージを用意しといてくれてもいいのに…
ゲイツめぇ



821 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:24:10 ]
だからぁ
SetCapture( hwnd );で
hwndに飛んでこないかと?

822 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:34:01 ]
>>821
キャプチャ事態は自分で行っている訳ではなくて
コモンコントロールがNM_CLICKに併せて行ってくれているようで
離したときにくるNM_RELEASEDCAPTUREまでの間に
MOVEを拾えないかと思ったのです。

823 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:36:36 ]
>>822
そりゃサブクラス化するべきなんじゃね?

824 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:38:55 ]
タブコントロールがSetCaptureして、マウスキャプチャ状態にしてるんだけど、
その状態でWM_MOUSEMOVE相当のメッセージを親Windowで取得したい。

ってこと?


825 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:41:36 ]
NM_CLICKでコモンコントロールはキャプチャしないだろ
それにSetCaptureすればいいだろが

826 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:46:00 ]
spyで確認したけどキャプチャしてない
そもそもその手のドラッグアンドドロップは自分でマウスキャプチャして実装するもの

827 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:54:01 ]
WM_LBUTTONDOWN
If the user is clicking a button, the control redraws the button to give a sunken appearance and captures the mouse.

ってMSDNに書いてあるから、ボタンの場合(TCS_BUTTONS style)はキャプチャしているんでしょ?

828 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 20:00:29 ]
>>827
なるほど、だからキャプチャしてたんですね。
親で改めてキャプチャするかサブクラス化してみようと思います。
どうもありがとうございました。

829 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 20:01:37 ]
TCS_BUTTONSスタイルまで確認してなかったわ

830 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 20:35:39 ]
>>814
俺はWTERMの人が書いた本でWindowsプログラミングの勉強をしたが
それがたしかWindows1.0用の本で、ほとんどそのまま3.1で通用したよ。
3.1から95もAPIはほとんど一緒だから、GetMessageとかのAPIは
ずっと変わってないと思う。



831 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 22:22:09 ]
だってある意味winプログラムの原点だからGetMessageの概念は

832 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 22:58:06 ]
イベントドリブンはナムコが考えました

833 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 22:58:18 ]
友達がいなくて
携帯メールがGetMessageできない漏れをどうにかしてください

WinSockムズカシス

834 名前:デフォルトの名無しさん [2007/11/30(金) 23:07:00 ]
GlobalAllocで確保されるメモリって、自プロセス内のスタック領域?とかいうところから拾ってきてるの?
ファイル読み込みで、何度かGlobalReAllocを繰り返し呼び出して、再確保を繰り返しやると
18000Byte超えたあたりで、メモリの再確保に失敗する
なんでだろう

835 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 23:09:28 ]
>>833
自分で自分のアドレスにPostMessageする

836 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 23:10:48 ]
>>834
MSDN嫁よ禿

837 名前:デフォルトの名無しさん [2007/11/30(金) 23:14:37 ]
>>836
英語だからミリだよ

838 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 23:19:22 ]
たしかにな

839 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 23:28:12 ]
>>837
英語勉強しろよ禿

840 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 23:31:14 ]
「Windowsプログラミングの極意」あるいはThe Old New Thingで
いってたけど、今は、メモリ共有のために仕組みがある以外は、
ローカルヒープとあんましかわらない、みたい。



841 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 23:42:12 ]
WinXP SP2だと、1Kから1バイトずつ伸ばしても全然失敗しないな……
フラグの指定がおかしいんじゃね?

ちなみに可変長のGlobalヒープが欲しい時は、
CreateStreamOnHGlobal + GetHGlobalFromStream がお勧めだ。

842 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 23:43:23 ]
16KBのメモリチャンク云々って話をどっかで見た気がするが忘れた。

843 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 00:08:13 ]
同じくWinXP SP2、初期サイズ1KB、増加サイズ1KBずつだと4KBで失敗。GetLastErrorは8。
増加サイズが変わると失敗するサイズも変わる。法則は謎。
GMEM_MOVEABLEすればもちろん失敗しないけど。

844 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 00:28:01 ]
ちょっとコード晒せ

845 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 00:47:55 ]
>>816
ゲンミツに言うとCreateWindowEx呼んでるだけだったような気もするけど

846 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 00:56:31 ]
HeapAlloc/HeapReAllocだとどうなる?

847 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 01:38:24 ]
>>845
手元のWin16APIヘルプだと
CreateWindow(2.x)
CreateWindowEx(3.0)
って書いてあった。

848 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 02:33:48 ]
取り込んだ画像を任意の角度に回転させるAPIってありますか?

849 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 03:11:05 ]
GDI+

850 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 06:48:51 ]
>>813
NTの最初のバージョンは3.1だが?
NTじゃないWindows 1.0がマルチスレッドやUnicodeに対応しているわけないし



851 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 10:12:50 ]
GlobalReAllocで固定メモリの領域拡大に失敗するのか
まさか単に断片化しているだけというオチじゃなかろうな

852 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 10:13:53 ]
また随分とバックパスなw

>>850
>>813は1.0時代のAPIだって今はUnicode版があるって言ってる
当たり前といえば当たり前

853 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 10:27:48 ]
GlobalAlloc懐かしいな。

854 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 11:37:40 ]
>>851
それが原因な気がするけどなー
toolhlpとかプロセスメモリエディタで覗いてみたら良いんでは

855 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 11:50:50 ]
そもそもGlobalAllocなんてクリップボードとOLEドラッグ以外に使うべきでは無い
どうせ猫でも見て変な知識付けたのだろうが

856 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 12:16:36 ]
HeapAlloc(malloc)か、サイズが数MB超えるならVirtualAlloc使えよ。



857 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 13:06:37 ]
そういう話は>>836で終わってる。

858 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 13:35:10 ]
英語が読めないので>>837で再開

859 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 15:22:23 ]
1.xの遺物 AnyPopup();

860 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 15:33:01 ]
WS_CHILDで子コントロールとして貼り付けられたダイアログって
親ウインドウが破棄されると自動的に破棄されますよね?



861 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 15:49:13 ]
いいえ

862 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 15:51:44 ]
DestroyWindowの解説に書いてある

863 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 15:53:45 ]
はい

864 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 16:07:53 ]
>>852
そりゃWin32で代わりがないAPIについてだろ。
_lcreatとかOpenFileとかにUnicode版はない

865 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 18:27:11 ]
PIDLがデスクトップを指してるかどうかって、
ILGetSizeを使って2byteかどうかで判定していい?

866 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 18:45:29 ]
>>865
SHGetSpecialFolderLocation(NULL,CSIDL_DESKTOP) + ILIsEqual()で判断するのが安牌

867 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 19:36:01 ]
CreatePrivateObjectSecurityWithMultipleInheritance
nagasugi warota

868 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 20:19:00 ]
>>866
ども。そうだよね

869 名前:834 [2007/12/01(土) 21:48:40 ]
こんなに大勢が答えてくれるなんてありがてぇありがてぇ

コードはこうなってるが、素人なんで汚いだろうけど
#define CHUNK_SIZE 1024
bySrc = GlobalAlloc(GPTR, 1);
iCount = 0;
dwTotal = 0;
do{
ZeroMemory(byTemp, CHUNK_SIZE + 1);
if(InternetReadFile(hUrl, byTemp, CHUNK_SIZE, &dwRead) == FALSE){ //失敗したら
  MessageBox(hwnd, TEXT("読み込みに失敗しました。"), TEXT("InternetReadFile Failure"), MB_OK | MB_ICONWARNING);
return -1;
}
dwTotal += dwRead;
bySrc = GlobalReAlloc(bySrc, dwTotal + 1, GMEM_MOVEABLE);
if(bySrc == NULL){
wsprintf(szBuffer, TEXT("%d 回目の読み込みで、計%dByte(新たに%dByte)の確保に失敗しました。"), iCount + 1, dwTotal, dwRead);
MessageBox(hwnd, szBuffer, TEXT("GlobaReAlloc Failure"), MB_OK | MB_ICONWARNING);

GlobalFree(bySrc);
return -1;
}

memcpy(bySrc + (CHUNK_SIZE * iCount), byTemp, dwRead);
iCount++;
}while(dwRead);

で、そのまま強制終了になったり、運がよければ「("20回目の読み込みで、計19984dByte(新たに1024Byte)の確保に失敗しました。」みたいな感じのエラーが表示される
なんでかわからん



870 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 21:57:04 ]
>bySrc + (CHUNK_SIZE * iCount)

とりあえずこれがだめなんじゃない?
毎回CHUNK_SIZEずつ読めてるとは限らないんだし



871 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 22:12:30 ]
>>869
だからそういう目的ならmalloc/realloc使えと言ってるだろうが

872 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 22:21:29 ]
>>869
>bySrc = GlobalReAlloc(bySrc, dwTotal + 1, GMEM_MOVEABLE);
同じ変数で結果を受け取ると、NULLが返ってきたときに元の領域を解放する手段が
なくなってしまってメモリリークする。reallocを使った場合も同様なので注意。

873 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 22:46:57 ]
>>870
もろにセキュリティホールだよね。

874 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 23:14:54 ]
> ZeroMemory(byTemp, CHUNK_SIZE + 1);
これは大丈夫なのか?byTempの宣言が書いてないから分からんが

875 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 00:01:49 ]
            祝

 ☆ 国 取 り 1 6 0 人 到 達 ☆ 



876 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 00:04:05 ]
何?

877 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 01:15:57 ]
桂蚕糸?

878 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 05:24:18 ]
XNResourceEditorって境界線の無いダイアログ作れないのかな
ちゃんと設定してもどうしても境界線が残るんだが

879 名前:834 [2007/12/02(日) 07:46:48 ]
おまいらなんでこんなに優しいん?
普段ボロクソ言われてるってのに(涙

一応宣言はこうなってる
BYTE byTemp[CHUNK_SIZE + 1];
static BYTE *bySrc;

それから >同じ変数で結果を受け取ると、NULLが返ってきたときに元の領域を解放する手段が
なくなってしまってメモリリークする の部分を改善してみた
bySrc = GlobalReAlloc(bySrc, dwTotal + 1, GMEM_MOVEABLE);
if(bySrc == NULL){
wsprintf(szBuffer, TEXT("%d 回目の読み込みで、計%dByte(新たに%dByte)の確保に失敗しました。"), iCount + 1, dwTotal, dwRead);
MessageBox(hwnd, szBuffer, TEXT("GlobaReAlloc Failure"), MB_OK | MB_ICONWARNING);

GlobalFree(bySrc);
bySrc = NULL;
return -1;
}

あと、>bySrc + (CHUNK_SIZE * iCount) の部分

memcpy(bySrc + dwTotal - dwRead, byTemp, dwRead);
としたら、すべてうまくいきました!!!!!!!!!!!!!!!うれしいっす!!!

芋くさいコードだけど、晒してよかった・・
ひとつ問題が解決すると、ほんとに気持ちがいいな
ありがとうな。お前ら



880 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 07:55:50 ]
FillMemoryの4バイト版ってあったりしますか



881 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 08:16:45 ]
>>879
>static BYTE *bySrc;
使い方から見てstaticで宣言する意味なくね?

>bySrc = GlobalReAlloc(bySrc, dwTotal + 1, GMEM_MOVEABLE);
改善されてないじゃん。こうだろ。
BYTE *byNewSrc;
byNewSrc = GlobalReAlloc(bySrc, dwTotal + 1, GMEM_MOVEABLE);
if (byNewSrc) {
bySrc = byNewSrc;
} else {
wsprintf.....略
}

882 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 09:21:06 ]
>>880
無いです
そのくらい自分で書け

883 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 12:25:26 ]
memset(buf,0,4);
FillMemory(buf,4,0);

884 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 12:58:49 ]
それちゃうやろw

885 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 13:04:22 ]
#if defined(RtlFillMemory)
#undef RtlFillMemory
EXTERN_C VOID WINAPI RtlFillMemory(
IN VOID UNALIGNED *Destination,
IN SIZE_T Length,
IN UCHAR Fill);
#endif
こうしておかないとダメってことか


886 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 15:03:34 ]
>>880
rep stosd

887 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 17:24:48 ]
教えてください。
自分自信のウィンドウハンドルを取得するには
FindWindowとEnumWindowを使わず取得する方法ってありますか?

888 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 17:26:54 ]
自分自身のウィンドウハンドルは自分で作ったんだからわざわざ取得しなくても最初から知ってるはずでは

889 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 17:27:17 ]
>>887
WM_CREATEで保存しとけ

890 名前:887 mailto:sage [2007/12/02(日) 18:41:21 ]
>>888,889
そういうのではなくてDLLでロードされたタイミングでそのDLLが
マップされたプロセスのウィンドウハンドルを取得するという作りなので
WM_CREATEとかでは無理なのです。

GetCurrentProcessId+EnumWindowsで取得という手もあるんですけど
他にやり方がないのかなと思ってレスしてみました。
因みにGetForegroundWindow、FindWindow以外のやり方でお願いします。



891 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 18:42:04 ]
ねーよ

892 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 18:44:21 ]
質問です
このスレに女性はいますか?

893 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 18:50:17 ]
>>890
ファイルマッピング

894 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 18:51:33 ]
たまに書く程度の女性なら、います。

895 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 19:52:56 ]
>>890
プロセスにウィンドウが複数存在したらどうする?

メインプログラムで「渡したいハンドル」を保管し、
DLLの初期化ロジックに渡した方が簡単だし、確実。


896 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 19:53:55 ]
>>890
おれらエスパーじゃないんだから、前の書き込みで「DLLで」とかわかるわけないだろ?
あほかw


897 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 19:56:39 ]
エスパーじゃない人には聞いていません

898 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 20:09:05 ]
じゃあここで待ってるといいよ

エスパーが質問に答えるスレ
pc11.2ch.net/test/read.cgi/tech/1187922645/

899 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 21:30:18 ]
ム板にもエスパースレあったのか

900 名前:887 mailto:sage [2007/12/02(日) 23:00:42 ]
>>893
その線ちょっと調べてみる。

>>895
インジェクションなんでそれはちょっと無理ぽ

>>896
正直スマンカッタ



901 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 23:16:43 ]
注入されたプロセスのすべてのスレッドにメッセージフック仕掛ければ、大抵のHWNDはもらえる
相手によってはがむしゃらな量(種類)のHWNDが飛んでくるけどな
ところでメインウィンドウって定義はあるのけ?

902 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 23:20:12 ]
>ところでメインウィンドウって定義はあるのけ?
だれもそんなこと言ってねえよ orz 野球終わったし寝る

903 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 23:40:52 ]
DLLインジェクションっていわゆるフックとかだろ?
対象ウィンドウ(ハンドル)が分かってない状態でのそれ、ってどういう設計なんだ?

904 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 23:51:26 ]
>>896-898
ワロタwww

905 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 00:30:41 ]
そんなに面白くはないとおもう

906 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 00:36:58 ]
まあ笑いのツボは人それぞれだしな。

907 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 00:41:10 ]
何が面白いのかさっぱり分からない

908 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 00:44:51 ]
面白くないと思う

909 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 00:45:53 ]
笑うなとは言わないよ。
ただ、あまりにも世間とずれているようなので、心配になっただけです。

910 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 00:59:14 ]
それはお節介w



911 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 01:01:05 ]
また笑ってる

912 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 01:39:13 ]
掲示板とかでつまらんつまらんって連呼してる奴は
営業とか人付き合いの下手な人

913 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 01:41:23 ]
???

914 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 03:04:46 ]
>>912
私つまらんって連呼する人だけど、
このスレの主旨を考えると、正直別に笑いなんかいらんと思う。
というか害悪。

915 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 17:00:01 ]
IDも出ない板で人に嫌われたって、
自分の一秒後の生活にすら何の影響も及ぼさないからな。

916 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 17:02:33 ]
人に嫌われることに慣れてる人の意見だな

917 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 17:06:26 ]
で  、  こ  の  ス  レ  と  何  の  関  係  が  ?

918 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 17:07:36 ]
>>915
おまえをみなみけの千秋だと思って萌えてやろう

919 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 17:16:33 ]
それは私が至らなかったねえ

920 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 18:37:51 ]
スレ違いにもほどがある。






鮫の話しようぜ



921 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 19:18:01 ]
>>920
前野乙

922 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 19:35:39 ]
英単語一つでできてるAPI名ってSleepとGDIの描画関数いくつかの他にある?

923 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 19:40:01 ]
Beep

924 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 20:15:18 ]
BS_OWNERDRAWを使って外観を変えたいと思っているのですけど、
BS_RADIOBUTTONやBS_CHECKBOXと組み合わせて使えますか?

BS_OWNERDRAWを使って描画を独自に実装した場合は、
ラジオボタンやチェックボックスの動作も独自に実装しなければならないのでしょうか?

925 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 20:18:09 ]
AUTOならかってにやってくれるんじゃない?

926 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 22:06:05 ]
>>894
女性プログラマカッコヨス


927 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 22:07:04 ]
>>924
BS_PUSHBUTTON〜BS_OWNERDRAWは同時に一つしか指定できないから

>ラジオボタンやチェックボックスの動作も独自に実装しなければならないのでしょうか?
これが正解

928 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 00:28:49 ]
ここにいる奴は良くも悪くも貪欲で物好きな奴ばかりだよな
仕事と割り切ってるマのほうが圧倒的。

929 名前:デフォルトの名無しさん [2007/12/04(火) 00:36:45 ]
HttpQueryInfoってどこから情報をとってくるの?
WEBページのサイズを取得しようとしてるんだけど、HTTP_QUERY_CONTENT_LENGTHつけてもテキストの部分のサイズしかとれない
0が返ってくるページも多いしね

930 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 03:51:59 ]
HttpSendRequestしてないとかTransfar-Encodingがchunkedになってるかどちらか

レスポンスの大きさを知るものであってWeb上のファイルの大きさを知るものではない



931 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 09:55:47 ]
そもそも画像データや外部スクリプト、外部スタイルシートはhtml解析して別途リクエストを投げる訳で‥‥

932 名前:デフォルトの名無しさん [2007/12/04(火) 19:37:01 ]
つか、仕事だとWin32はほとんどないような気がするんだが
Javaとかの案件のほうが圧倒的に多くないか?


933 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 19:41:46 ]
当たり前じゃん。

934 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 19:53:43 ]
SetLayeredWindowAttributesで半透明にしたウインドウを別のウインドウの上に置いて、
その上でマウスを動かすとものすごくカクカクするんですが、
考えられる原因は何でしょうか?

935 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 20:02:30 ]
>>934
1.PCがしょぼい

936 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 20:04:51 ]
>>935
半透明ではない可視ウインドウにするとカクカクしないんですよ。

937 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 20:11:22 ]
半透明は処理時間食いまくりんぐwwwwwww

938 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 20:19:41 ]
特にWindows2000は無茶遅い

939 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 20:23:43 ]
ソフトウェアカーソルだとそんなことなりそうだな
今時オンボでもそんなのあるのか怪しいけど

940 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 20:27:01 ]
>>934
ちなみにスペックは?



941 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 21:01:10 ]
>>940
CPU: PentiumD920
MEM: DDR2 2GB
Graphic: Radeon7400HD
です。

942 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 21:33:30 ]
>>941
>>935でFA

943 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 21:40:50 ]
マウスの影が半透明だから、
半透明に半透明を重ねようとして
大変な話になったとか?

944 名前:デフォルトの名無しさん [2007/12/04(火) 21:45:46 ]
初心者すぎる質問ですが、Win32API で作ったアプリケーションは、
Windowsでしか動かないのですか?

945 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 21:50:12 ]
WindowsCEでも動かない
Lindowsなら動くかもしれない


946 名前:デフォルトの名無しさん [2007/12/04(火) 22:00:45 ]
>>945
ありがとうございました。

947 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 22:05:34 ]
スプライト処理をしたいのですが画像の枚数が多いので
動的にマスクを作ったりBitBltを多用したりで力業状態なんですが
もっと効率よく画像を重ねていく方法はありますか?

948 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 22:07:57 ]
DirectDraw
DirectGraphic

949 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 23:02:42 ]
directXですか
これ以上はすれちになりそうなので初心者スレ行ってきます

ありがとうございました

950 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 23:33:53 ]
Windows と C++ Windows Template Library 8.0
msdn.microsoft.com/msdnmag/issues/07/12/WindowsCPP/default.aspx?loc=jp

まあGUIプログラミングとか一切しないわけだが



951 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 23:48:56 ]
>>950
スレ違い

ATL/WTL Part5
pc11.2ch.net/test/read.cgi/tech/1155951708/

952 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 01:01:55 ]
>>945
リンドウス?ってリナクスにウインドウズっぽいGUIかぶせたライブドアが絡んでたOSだっけ?
Win32APIと互換性あるのかあれ

953 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 01:05:33 ]
というか、キモはWINEじゃねーの。

954 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 02:23:49 ]
AlphaBlend関数(だけ?)を除いて、GDIには32bppのαチャンネルなんていう概念はないですか?

955 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 03:39:43 ]
レイヤーウィンドウ作る時もアルファチャンネルあるし、XP以上だとアルファチャンネルつきアイコンも出てくる。
というか、質問の意味がわからない。

956 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 03:41:04 ]
BITMAPV4HEADER::bV4AlphaMask

957 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 03:51:00 ]
AlphaBlendていう関数がありますがなにか

958 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 04:58:37 ]
>>957
人の話を聞けとよく言われるだろ

959 名前:デフォルトの名無しさん [2007/12/05(水) 08:03:21 ]
>>957-958
warota(bo-yomi

960 名前:shinnichi [2007/12/05(水) 11:18:58 ]
winsockで1対多のチャットプログラムを作ろうとしているのですが、上手くいかず困っています。
とりあえず以下のプログラムを作成して実験してみたのですが、

struct sockaddr_in addr1,addr2;
struct sockaddr_in client1,client2;
int len;
SOCKET sock1,sock2;

// 1
sock1 = socket( AF_INET , SOCK_STREAM , 0 );
addr1.sin_family = AF_INET;
addr1.sin_port = htons( 12345 );
addr1.sin_addr.S_un.S_addr = INADDR_ANY;
bind( sock1 , ( struct sockaddr * )&addr1 , sizeof( addr1 ) );
listen( sock1 , 1 );
len = sizeof( client1 );
sock1 = accept( sock1 , ( struct sockaddr * )&client1 , &len );

// 2
sock2 = socket( AF_INET , SOCK_STREAM , 0 );
addr2.sin_family = AF_INET;
addr2.sin_port = htons( 12345 );
addr2.sin_addr.S_un.S_addr = INADDR_ANY;
bind( sock2 , ( struct sockaddr * )&addr2 , sizeof( addr2 ) );
listen( sock2 , 1 );
len = sizeof( client2 );
sock2 = accept( sock2 , ( struct sockaddr * )&client2 , &len );

// 1 のときにはacceptで待機し、クライアントからコネクションすると接続され // 2 が実行されるのですが、// 2のacceptでは待機してくれません(クライアントからコネクションしなくても流れていってしまう)。
理由が分からず困っています。
どなたか解る人がいましたらご教授願います。




961 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 11:22:05 ]
戻り値でどこでどんなエラーが出てるか調べてみ?

962 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 11:22:35 ]
listenポート同じだからじゃ・・

963 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 11:23:55 ]
>>960
エラーコードを確認しましょう。つーか、Winsockはネットワークプログラミングスレのほうが無難じゃないかな?
# 尤も、基礎を勉強してから出直せって言われそうではあるが。

964 名前:shinnichi [2007/12/05(水) 11:35:22 ]
回答有難うございます。
戻り値ではINVALID_SOCKETが返ってきています。
なぜだかわかりませんか?

965 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 11:38:45 ]
最後だけチェックしてる?
エラーはもっと前で起きてるんじゃない?

966 名前:shinnichi [2007/12/05(水) 11:54:13 ]
回答有難うございます。
エラーですがbindのところで起きていました。
>>962の指摘どおりポートが同じだからエラーが起きていると思われます。
エラーの原因わかりましたので、あとは、色々試してみようと思います。
ご意見有難うございました。

967 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 12:12:07 ]
内容はスレ違いだけど平和でよかた

968 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 12:21:57 ]
winsockはWin32APIの一部だと思うが

969 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 12:23:52 ]
>>968
>963はより適切なスレに誘導しただけだ。一部であることを否定しているわけではない。

970 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 12:25:05 ]
いや、>>967に対しての話でしょ



971 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 14:34:36 ]
→↓↘+P

972 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 14:52:25 ]
しょぉ〜〜(ry

973 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 15:04:55 ]
vc++が初めてむかついたとき:
#define WIN32_LEAN_AND_MEANがなんでデフォでテンプレにはいってんだよ!!
これのせいで3時間なやんじまったじゃねーか!!!!

974 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 17:33:45 ]
WIN32_LEAN_AND_MEANって何を省略してるんだぜメーン?

975 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 17:39:11 ]
>>974
PNOTIFYICONDATA

976 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 18:44:47 ]
>>974
windows.hをWIN32_LEAN_AND_MEANで検索すれば分かる事を聞くな低脳

977 名前:デフォルトの名無しさん [2007/12/05(水) 18:56:38 ]
IEコンポーネントで簡単なブラウザを作ったのですが、ブラウザ側からHTMLに変化をもたせるような命令を実行した後、
うまく変化が現れません。HTMLを表示しているウィンドウにマウスカーソルを当てた時に初めて変化が起こるのですが、
これを特にマウスをウィンドウ上で移動させる事なく変更を反映させるにはどうすればいいのでしょうか?

978 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 21:01:57 ]
>>976
こういう人はなんかなぁ...

979 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 21:04:51 ]
↓次スレよろ

980 名前:デフォルトの名無しさん [2007/12/06(木) 01:13:47 ]
書き順ソフトをつくりたいと思ってるんですが、TrueTypeフォントを序々になぞっていくようなことってどうやって実装すればいいんでしょう?
習字で筆がこう、字を書いていくような



981 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 01:24:41 ]
質問ですが、
windows用の帯域制御ソフトの仕組みがどういう風になっているのか、
大まかに教えていただけませんか?

982 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 01:31:53 ]
>>980
まず、書き順データを用意することから始めるんだ。 そしたら次はスレ立てだ。

983 名前:デフォルトの名無しさん [2007/12/06(木) 02:15:48 ]
>>982
立てただよ

TrueTypeってどの線をどういう順番で描くのか情報持ってないの?

984 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 02:18:05 ]
>>983
氏ね

985 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 02:40:51 ]
「上書きしますか?」とか「終了しますか?」とかの、よく使う文章のメッセージボックスを表示させるAPIはあるんですか?
いくつかの外国製の英語のソフトウェアでは、そこだけ日本語で出てくるので、気になりました。

986 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 03:12:36 ]
ファイル移動にShellのAPI使ってるんじゃね?
終了しますか?はしらね

987 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 03:53:29 ]
ウィンドウハンドルからそのウィンドウを所有しているプロセスのフルパスを取得するには、
どのようなAPIを使えば良いでしょうか?

988 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 03:56:24 ]
>>985
MFCだよ

989 名前:デフォルトの名無しさん [2007/12/06(木) 06:26:56 ]
>>987
GetModuleFileNameではダメ?

990 名前:デフォルトの名無しさん [2007/12/06(木) 10:08:30 ]
バックアップは・・・昨日の・・・朝9時か・・・
はぁ・・・



991 名前:デフォルトの名無しさん [2007/12/06(木) 10:09:43 ]
誤爆↑

992 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 10:29:34 ]
GetWindowModuleFileName かな

993 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 14:59:43 ]
     ____
   /__.))ノヽ
   .|ミ.l _  ._ i.)
  (^'ミ/.´・ .〈・ リ  
  .しi   r、_) |   この子もわしJAPAN入りや。わしが育てたる
    |  `ニニ' /   
   ノ `ー―i´

994 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 15:39:13 ]
>>989
>>992

レスありがとうです

家に帰ったら試して見ます

995 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 17:53:57 ]


996 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 17:54:00 ]


997 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 17:54:02 ]


998 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 17:54:05 ]


999 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 17:54:08 ]


1000 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 17:54:23 ]
なんですと?!



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






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<231KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef