Win32API質問箱 Build39
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2006/01/08(日) 07:34:10やさしいお兄さんたちが答えてくれるかも。
過去スレ、関連リンクは>>2-5くらい。
■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(http://msdn.microsoft.com)の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvencedWindowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで。
0002デフォルトの名無しさん
2006/01/08(日) 07:35:1138 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/
0003デフォルトの名無しさん
2006/01/08(日) 07:36:5931 ttp://pc8.2ch.net/test/read.cgi/tech/1114762194/
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
0004デフォルトの名無しさん
2006/01/08(日) 07:38:19http://www.microsoft.com/japan/msdn/
- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
- Platform SDK Update
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
http://www.google.com/
- Windows® Server 2003 SP1 Platform SDK Full Download
http://www.microsoft.com/downloads/details.aspx?familyid=EBA0128F-A770-45F1-86F3-7AB010B398A3&displaylang=en
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm
- Win32 API入門
http://wisdom.sakura.ne.jp/system/winapi/
- Win32 プログラミング入門
http://www7.plala.or.jp/keny01/windows/win32/
- 書籍
Advanced Windows
http://www.amazon.co.jp/exec/obidos/ASIN/4756138055
-おまけ
dat落ちしている過去スレが見れるかも。Build19が見たい人、余裕のある人は●でも買ってやってくれ。
http://makimo.to/cgi-bin/search/search.cgi?q=Win32API&andor=AND&sf=2&H=&view=table&shw=&D=tech
0005デフォルトの名無しさん
2006/01/08(日) 07:39:470006デフォルトの名無しさん
2006/01/08(日) 09:12:100007デフォルトの名無しさん
2006/01/08(日) 11:27:24│
│
──
│
│
──
0008デフォルトの名無しさん
2006/01/08(日) 11:28:59│ │
│ │
──
│ │
│ │
──
0009デフォルトの名無しさん
2006/01/08(日) 11:47:15/ ̄/ /  ̄/  ̄/ / / / ̄ / ̄  ̄/ / ̄/ / ̄/
/ / / / ̄  ̄/  ̄/  ̄/ / ̄/ / / ̄/.  ̄/
.  ̄ .  ̄  ̄  ̄  ̄  ̄
0010デフォルトの名無しさん
2006/01/08(日) 14:11:330011デフォルトの名無しさん
2006/01/08(日) 14:22:18/ ̄/ /  ̄/  ̄/ / / / ̄ / ̄  ̄/ / ̄/ / ̄/
/ / / / ̄  ̄/  ̄/  ̄/ / ̄/ / / ̄/  ̄/
 ̄  ̄  ̄  ̄  ̄  ̄
0012デフォルトの名無しさん
2006/01/08(日) 15:05:36スレ違い。ちゃんと意味があるからよそで聞いてきなさい。
0013デフォルトの名無しさん
2006/01/08(日) 16:01:180014デフォルトの名無しさん
2006/01/08(日) 16:42:20うんこ
0015デフォルトの名無しさん
2006/01/08(日) 17:50:22液晶のドット欠けだから仕様の範囲内
0016デフォルトの名無しさん
2006/01/08(日) 18:06:17VC6で gettimeofday はどこに入ってるのでしょうか?
一応VC98\Include以下は検索ソフトで調べました
0017デフォルトの名無しさん
2006/01/08(日) 18:19:350018デフォルトの名無しさん
2006/01/08(日) 18:19:360019デフォルトの名無しさん
2006/01/08(日) 18:28:47ついでに>>17-18の流れも分からない。
>>16
移動するなら元スレに一言書いた方がいんでない。
VC6には無いよ。このスレ的にQueryPerformanceCounter、timeGetTime辺りを使いなされ。
じゃなきゃcygwin辺りを使うとか。
002016
2006/01/08(日) 19:20:320021デフォルトの名無しさん
2006/01/08(日) 23:06:23死兆星
0022デフォルトの名無しさん
2006/01/08(日) 23:27:15ちみのPCディスプレイのドット抜け
0023デフォルトの名無しさん
2006/01/08(日) 23:36:28これってどうやったら出せるんでしょうか?
http://sylphys.ddo.jp/upld2nd/pc2/src/1136730635910.png
上図の赤丸の部分です。
たぶんWindows XP以降の機能だと思います。
0024デフォルトの名無しさん
2006/01/09(月) 00:29:07SysListView32
0025デフォルトの名無しさん
2006/01/09(月) 00:49:000026デフォルトの名無しさん
2006/01/09(月) 00:58:00http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msaa/msaaccrf_7jlf.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msaa/msaapndx_2g4s.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msaa/msaapndx_3y5o.asp
0027デフォルトの名無しさん
2006/01/09(月) 01:05:28まだ動作確認してないですが、おそらく
HDF_SORTUP HDF_SORTDOWN ですね。
Delphiで使うためのサンプル
http://www.winningcubed.de/?page=listviewsort
0028デフォルトの名無しさん
2006/01/09(月) 07:57:430029デフォルトの名無しさん
2006/01/09(月) 17:12:45--------------------------------------------------------------------------------
'標準モジュール内
Option Explicit
'iMEの状態を制御する
Public Declare Function ImmAssociateContext Lib "imm32.dll" (ByVal hwnd As Long, ByVal himc As Long) As Long
'IMEモード定数
Public Const IME_CMODE_ALPHANUMERIC = &H0
Public Const IME_CMODE_CHARCODE = &H20
Public Const IME_CMODE_KATAKANA = &H2 ' only effect under IME_CMODE_NATIVE
Public Const IME_CMODE_ROMAN = &H10
'
'対象コントロールのGotFocusイベントに記述する
Private Sub Text1_GotFocus()
Call ImmAssociateContext(Me.Text1.hwnd, IME_CMODE_ALPHANUMERIC)
End Sub
ググったら、このようなコードを見つけました。(ttp://homepage2.nifty.com/Dee/vb/tips/vb/imemodebyapi.html)
変換モードを特定のセルにて「人名/地名」にしたい場合、上記をどのように変更したら良いのでしょうか?
0030デフォルトの名無しさん
2006/01/09(月) 17:28:170031デフォルトの名無しさん
2006/01/09(月) 17:44:10なんにしてもここはコード丸投げなんてのが通るスレじゃないし、
MSDNも調べない奴に丁寧に教えるスレでもない。
半月勉強して出直してこい。
0032デフォルトの名無しさん
2006/01/09(月) 20:53:13C++ 相談室から誘導されてきました。
CreateWindow にてウィンドウを作成したのですが、ウィンドウが反応しません。
具体的に言うと、[×] や [_] にマウスカーソルを当ててもへこむ様子もなく(当然クリックしても何もおきない)、
キャプションを D&D してもウィンドウが動きません。
考えられる原因はないでしょうか。
ツールバーから「閉じる」を選んだり、Alt+F4 での処理は受け付けれています。
また、[×] をクリックしたとき、WM_LBUTTONCLICK は飛んできているようです。
処理全体としては、まず不可視のメインウィンドウを作成し、
CreateWindow 終了後、そのウィンドウを親とする別の可視ウィンドウを作っています。
ためしに親ウィンドウを可視にしてみましたところ、親ウィンドウは反応しました。
が、子ウィンドウが反応しません。
ウィンドウは全てクラス化してあり、単純な処理ではないので、ソースを全て晒すのは困難です。
必要と思われる部分を晒します。
(続く)
003332
2006/01/09(月) 20:54:03// 親ウィンドウクラスの設定
WNDCLASSEX wc;
wc.cbSize = sizeof(wc);
wc.style = CS_OWNDC | CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = AppProcPre;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstApp;
wc.hIcon = NULL;
wc.hIconSm = NULL;
wc.hCursor = NULL;
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wc.lpszMenuName = NULL;
wc.lpszClassName = "hogeparent";
if (!RegisterClassEx(&wc))
return false;
// ウィンドウの構築
hWndApp = CreateWindow(wc.lpszClassName, "Parent", WS_CAPTION | WS_MINIMIZEBOX | WS_SYSMENU,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstApp, this);
if (hWndApp == NULL)
return false;
003432
2006/01/09(月) 20:54:35// 子ウィンドウクラスの設定
WNDCLASSEX wc;
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = CS_OWNDC | CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = (WNDPROC)WindowProcPre;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = GetInstance();// GetInstance: インスタンスを取得するグローバル関数
wc.hIcon = NULL;
wc.hIconSm = NULL;
wc.hCursor = NULL;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
//wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wc.lpszMenuName = NULL;
wc.lpszClassName = "hogechild";
if (!RegisterClassEx(&wc))
return false;
// ウィンドウの構築
hWnd = CreateWindow(wc.lpszClassName, "Child", WS_CAPTION | WS_MINIMIZEBOX | WS_SYSMENU,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
GetAppWnd(), NULL, GetInstance(), this);
// GetAppWnd: 親ウィンドウのハンドルを取得するグローバル関数
if (hWnd == NULL)
return false;
return true;
003532
2006/01/09(月) 20:55:11ウィンドウプロシージャでは、GetProp/SetProp によるオブジェクトの結びつけ、
継承先クラスのウィンドウプロシージャの呼び出し、など複雑な処理を行っていますので、
全体を晒すのは困難です。
ですが、WM_CREATE の返答としての処理は何も行っておりません。
その他も、WM_DESTROY などの特殊処理を除いて、全て DefWindowProc の処理が行われています。
以上です。長々と申し訳ございませんが、よろしくお願いします。
0036デフォルトの名無しさん
2006/01/09(月) 21:17:30メッセージは?
0037デフォルトの名無しさん
2006/01/09(月) 21:17:40ってかそんな、登録部分だけ出されてもわかりゃせんわ
0038デフォルトの名無しさん
2006/01/09(月) 21:20:27そういう現象が起きてる以上、「全て行われて」はいないってことだよ
本当にDefWindowProcに行ってるなら、×押しゃ消えるし_押しゃ最小化される
0039デフォルトの名無しさん
2006/01/09(月) 21:25:34ふと気になったが
メッセージ処理にWM_SYSCOMMAND入れてないか?
004032
2006/01/09(月) 21:33:00それは入ってないです。
>>38
DefWindowProc まわりを見直してみます。
解決しなかったらまとめてうpしてみます。ありがとうございました。
0041デフォルトの名無しさん
2006/01/09(月) 21:41:56win2000です。
0042デフォルトの名無しさん
2006/01/09(月) 21:43:35004341
2006/01/09(月) 21:55:28CPU0のみチェックがついてる状態で起動できないでしょうか?
という意味です。わかりにくくてすいません。
CPU1個しかない場合は「関係の設定」はありません。
0044sage
2006/01/09(月) 21:59:12VARIANTでbstrValだとは思うのですが、どうしてもうまく行きません。
開発環境はVC6です。
0045デフォルトの名無しさん
2006/01/09(月) 22:07:23できる。
SetThreadAffinityMaskかなんかで調べてみればいい
0046デフォルトの名無しさん
2006/01/09(月) 22:20:26ありがとうございます。調べてみます。
0047デフォルトの名無しさん
2006/01/10(火) 01:53:31WM_IME_COMPOSITIONで処理をさせずに、WM_IME_CHARでWParamの値を見ると、
なぜか、Shift-JISコードが返ります。WindowはIsUnicodeWindowでTrueを返すのに、
なぜか、UnicodeじゃなくShift-JISが返ります。
単純なプログラムを作って、同じことすると確かにWM_IME_CHARのWParamはUnicodeで
自分のプログラムがどっか悪いと思うのですが、これ以上、どこを重点的に
調べればよいか皆目検討がつきません。
どうぞ、みなさんの知恵をかしてください。
0048デフォルトの名無しさん
2006/01/10(火) 03:26:58と
単純なプログラム
の違いを減らしていけばいいんじゃねえの?
0049デフォルトの名無しさん
2006/01/10(火) 03:50:330050デフォルトの名無しさん
2006/01/10(火) 03:53:270051デフォルトの名無しさん
2006/01/10(火) 03:58:30APIだけでは難しい。
#まぁ、自分で数えろと。
>>50
いくらなんでもこのスレでそれはないだろう。
0052デフォルトの名無しさん
2006/01/10(火) 04:28:53ありがとうございます。ですが、自分のプログラム100行、ライブラリ1万行以上。
で、そのライブラリはMFCのように、フレームワークの上に構築された、コントロール
でして。単純に削除できないんです。ですが、やっぱそれしかないですよね。
私もそんな気がします。
0053デフォルトの名無しさん
2006/01/10(火) 04:46:501万行以上ってのも、そう書く以上は2万行には満たないんだろ。
その程度ならわけないやん。
0054デフォルトの名無しさん
2006/01/10(火) 09:04:58>>47です。はぁ、やっとわかりました。ちなみに、100行ってのは、単純にRegisterClassやCreateWindow
でウィンドウを作成して、WM_CHARやWM_IME_CHARやWM_IME_COMPOSITIONを捕まえて
そのwParam, lParam値をリストボックスに表示するだけでして。
で、原因なんですけど、問題のプログラムはUnicodeウィンドウとAnsiウィンドウが混在してて、
WH_GETMESSAGEでフックをしているんですけど、その時の処理がおかしかったようです。
「SetWindowHookExWでフックをインストールすれば、そのフックプロシージャにはAnsiウィンドウのメッセージだろうが
すべて、Unicode値が渡される前提でプログラムが作られていました。」
Windowsややこしい。
0055デフォルトの名無しさん
2006/01/10(火) 09:33:59プログラムを作成中です。
初めての VC だったので難儀し、ほぼ9割がたできたのですが、1点だけ分からずに
困っています。
RTFファイルをメタファイルとして再生・表示まではできるのですが、これをビットマップ
(DIB, DDB いずれでも可)に変換するには、どのようにしたら良いのでしょうか。
画像処理の関係で、どうしてもビットマップにする必要があるためです。
キーワードやポインタだけでも良いので、ご存知のかたがいらっしゃったら教えていただければ助かります。
0056デフォルトの名無しさん
2006/01/10(火) 09:40:36CreateDIBSectionでHBITMAP作ってHDCに関連付けて、
そこにメタファイルを再生すれば良いんじゃない?
0057デフォルトの名無しさん
2006/01/10(火) 09:43:14知る方法はありますか?
0058デフォルトの名無しさん
2006/01/10(火) 10:47:08このページのEnumFontFamiliesEx()関数についてなんですが
上記ページをトレースしてコンパイルしてみた場合
BCC5.5.1ですと第3引数は(int)として定義されてるのでunsigned longは渡せないと吐いてくれます
そこでVC6.0でも同様にトレースしてみたんですが同じようなエラーを吐いてくれました
MSDNによるとコールバック関数へのアドレスを、とあるのですが・・どうすればいいでしょうかorz
参考にはならないと思いますがOSはXPhome+sp2の32bit環境です
0059デフォルトの名無しさん
2006/01/10(火) 10:48:000060デフォルトの名無しさん
2006/01/10(火) 10:48:39なぜかそのキャストが拒まれてしまうんですよ
0061デフォルトの名無しさん
2006/01/10(火) 10:52:14ありがとうございます。さっそく試してみます。
0062デフォルトの名無しさん
2006/01/10(火) 10:54:260063デフォルトの名無しさん
2006/01/10(火) 10:57:160065デフォルトの名無しさん
2006/01/10(火) 12:29:30エラーメッセージの解釈が間違っている。
問題のソースやエラーメッセージをそのまま載せない事が間違っている。
0066デフォルトの名無しさん
2006/01/10(火) 12:30:02はて、手元のMSDNには
int CALLBACK EnumFontFamExProc(
ENUMLOGFONTEX *lpelfe, // 論理的なフォントデータ
NEWTEXTMETRICEX *lpntme, // 物理的なフォントデータ
DWORD FontType, // フォントの種類
LPARAM lParam // アプリケーション定義のデータ
);
と書いてあるのだが。
サイトを鵜呑みにするだけでなく、MSDNもきちんと読んだらどうかね。
0067デフォルトの名無しさん
2006/01/10(火) 12:31:24> Ansiウィンドウ
変なオレ用語使うな。
なんだよ、Ansiウィンドウって?
0068デフォルトの名無しさん
2006/01/10(火) 12:45:17すっげー勘違いしてる予感w
006966
2006/01/10(火) 12:57:59あれ、>63と同じこと言ってるだけの積もりなんだが。
MSDNにはDWORDで宣言しろと書いてあるのに、件のサイトのソースにはintで宣言されているから
型が違って呼び出せないと言うエラーが出ているって話ではないのかな?
これが勘違いなら、暫くこのスレに書き込みするの止めるよ。
0070デフォルトの名無しさん
2006/01/10(火) 13:02:35>>54ですが、IsUnicodeWindowがTrueになるWindowをUnicodeウィンドウ、
もう一方をAnsiウィンドウと呼んでみただけです。
Win32のAPIもUnicode版とAnsi版の2種類があるって表現されていたもので。
0071デフォルトの名無しさん
2006/01/10(火) 15:21:230072デフォルトの名無しさん
2006/01/10(火) 15:54:11キミが言ってるのはコールバック関数の、EnumFontFamExProcのこと
>>58が言ってるのはEnumFontFamExProcのアドレスを渡す、EnumFontFamiliesEx関数の第3引数のことである
実際に、>>58のアドレスにあるソースをそのままコンパイルすれば、
EnumFontFamiliesExの呼び出しの所で引数の型エラーが出る
0073デフォルトの名無しさん
2006/01/10(火) 15:58:34まぁなんだ、AnsiウィンドウとかUnicodeウィンドウとか言う呼び名があるかは置いといて、
AsciiのAなわけがないんだが
MSDNにもちゃんと、
英語版:Implemented as Unicode and ANSI versions on Windows NT, Windows 2000, Windows XP
日本版:Windows NT/2000 は Unicode 版と ANSI 版を実装
ってなように、ANSIと書いてあるわけで
OK?
0074デフォルトの名無しさん
2006/01/10(火) 16:16:39Win2000SP4で権限チェックするモジュールがあります。
これは、NetUserGetLocalGroups()でログインしているユーザが所属しているローカルグループを
一覧して、「Administrators」グループに所属しているか確認しています。
ある特定の端末(数台)で、一覧されるユーザが「Users」権限のみになってしいます。
正常な端末では、「Users」と「Administrators」グループが取れます・・・
このAPIは端末の設定か何かで動作が変るものでしょうか??
0075デフォルトの名無しさん
2006/01/10(火) 16:18:06EnumFontFomExProcのアドレス渡す引数が
> BCC5.5.1ですと第3引数は(int)として定義されてるのでunsigned longは渡せないと吐いてくれます
ポインタでないって主張してるのか?
どう考えてもコールバック関数の仮引数の問題だろ?
0076デフォルトの名無しさん
2006/01/10(火) 16:24:58じゃあ、VC++6.0で仮引数をDWORDで宣言してコンパイルしてみろよ
同じエラー出るからよ
まぁ、>>58もエラーの内容を取り間違えては居ると思うんだけどな
007767(!=71)
2006/01/10(火) 16:52:39> 英語版:Implemented as Unicode and ANSI versions on Windows NT, Windows 2000, Windows XP
> 日本版:Windows NT/2000 は Unicode 版と ANSI 版を実装
> ってなように、ANSIと書いてあるわけで
その一文だと「Windows NT, Windows 2000, Windows XP」には、
Unicode 版と ANSI 版の二つを実装している、としか取れないね。
# ソースの URL も(ry
0078デフォルトの名無しさん
2006/01/10(火) 17:05:06http://www.google.com/search?q=site%3Amicrosoft.com+A%2Fsuffix+Ansi
こんなもんで納得してくれるか?
0079!72
2006/01/10(火) 17:05:27それ以前に、EnumFontFamiliesEx()の第3引数は「FONTENUMPROC」型、
と書かれているいるんだから FONTENUMPROC 型で渡すのが正当だろう。
# もちろん、引数で指定したプロシージャは、
# FONTENUMPROC 型と矛盾しない定義にすることも必要だな。
0080デフォルトの名無しさん
2006/01/10(火) 17:09:370081デフォルトの名無しさん
2006/01/10(火) 17:28:36タイマーを作りたいと思ってます。。
ウィンドウは表示させずに数字のみを画面に表示させたいのですが、
その場合、内部で動的に画像を生成しリージョンを適用する
・・・という方法しかありませんよね?
ちょっと速度の面で不安があるのですが、
それは仕方ないと割り切るしかないでしょうか?
0082デフォルトの名無しさん
2006/01/10(火) 17:59:270083デフォルトの名無しさん
2006/01/10(火) 18:02:21起動時に数字の形したリージョン作ったら?
0084デフォルトの名無しさん
2006/01/10(火) 19:07:23レイヤードウィンドウというものもある。
0085デフォルトの名無しさん
2006/01/10(火) 19:09:590086デフォルトの名無しさん
2006/01/10(火) 19:17:29>ディスクトップ
>ディスクトップ
0087デフォルトの名無しさん
2006/01/10(火) 20:18:11008887
2006/01/10(火) 20:22:280089デフォルトの名無しさん
2006/01/10(火) 20:27:28009066
2006/01/10(火) 21:30:10私は正しくコールバック関数を定義すれば引き数は自ずとキャストの必要がないだろうと言いたかったのだが
それが伝わってなかったのだな。
>>72
ということで、>58でエラーになることは承知しているのですよ。
>>76
で、どうすればいいと言いたいの?
>>58
改めてもう一回。
サイトのソースにのみ頼らずMSDNを読めばサイトのソースの引き数の型が間違っていることが判る。
それを修正してコンパイルしてみたまえ。
0091デフォルトの名無しさん
2006/01/10(火) 21:50:350092デフォルトの名無しさん
2006/01/10(火) 21:51:390093デフォルトの名無しさん
2006/01/10(火) 22:40:07みなさんありが�d�dです
環境はWin2000なんで、せっかくだから
レイヤードウィンドウとやらを試してみようと思います!
これだと負荷をかけずに希望のものが作れそうです。
いい情報ありがとう〜。
ディスクトップに直接描画はキビシス...(^ω^;)
009458
2006/01/10(火) 22:46:53今一度注意しながらソースを見たのですが
指摘の通りコールバック関数の引数についてのエラーだったようです。すみません
そこで以下のように修正したのですが・・・
3 番目のパラメータは
int (__stdcall *)(const tagLOGFONTA *,const tagTEXTMETRICA *,unsigned long,long)型として定義されているので
int (__stdcall *)(tagENUMLOGFONTEXA *,tagNEWTEXTMETRICEXA *,int,long) 型は渡せない
そのままですと上記のエラーを吐くのでコールバック関数の引数をDWORDとしてコンパイルしてみました
3 番目のパラメータは
int (__stdcall *)(const tagLOGFONTA *,const tagTEXTMETRICA *,unsigned long,long) 型として定義されているので
int (__stdcall *)(tagENUMLOGFONTEXA *,tagNEWTEXTMETRICEXA *,unsigned long,long) 型は渡せない
と吐かれてしまいます。モウダメダ ... (´・ω・`)
0095デフォルトの名無しさん
2006/01/10(火) 22:51:51BCC付属のヘッダが間違っているのでは?
0096デフォルトの名無しさん
2006/01/10(火) 22:54:270097デフォルトの名無しさん
2006/01/10(火) 22:56:08面倒だから(FONTENUMPROC)付けて強制的にキャストしとけ
そうすりゃエラーでねぇからよ
>>95
VC++でも同じだよ
0098デフォルトの名無しさん
2006/01/10(火) 23:00:24(FONTENUMPROC)としてキャストしたらコンパイルでき、期待された動作をするプログラムが作成できました。
いろいろとすみませんでした
0099デフォルトの名無しさん
2006/01/10(火) 23:03:300100デフォルトの名無しさん
2006/01/10(火) 23:15:13関数ポインタ知らないのかよ。
なんかWin32API以前の問題だな。
0101デフォルトの名無しさん
2006/01/10(火) 23:18:03コールバック関数の第3引数はあのサイトではintとなっていたからごっちゃになったんだろう。
0102デフォルトの名無しさん
2006/01/10(火) 23:22:330103デフォルトの名無しさん
2006/01/10(火) 23:40:290104デフォルトの名無しさん
2006/01/11(水) 03:14:40古いけど、MSDNのヘルプにのってるサンプルには
// Register an ANSI window class.
RegisterClassA(&AnsiWndCls);
// ANSI Window Procedure
LONG AnsiWndProc(HWND hwnd, UINT message,
WPARAM wParam, LPARAM lParam)
// Unicode Window Procedure
とも書いてある。
0105デフォルトの名無しさん
2006/01/11(水) 05:51:260106デフォルトの名無しさん
2006/01/11(水) 06:23:07エラーにはFONTENUMPROC型とかじゃなく、int (const struct〜って出るから、
そこのintを見てintって言ってたんじゃないかね
>>105
ねぇよ
0107デフォルトの名無しさん
2006/01/11(水) 06:38:13タスクスケジューラ
wake on lan
0108デフォルトの名無しさん
2006/01/11(水) 07:45:21CreateWaitableTimer
SetWaitableTimer
0109デフォルトの名無しさん
2006/01/11(水) 08:11:20SetDIBitsToDeviceが近いと思いますが、
ラストオペレーションコードがありません。
StretchDIBitsで先、元のサイズを
同じにするという方法もあると思いますが、
BitDIBitsみたいなのが別にあるなら教えてください。
0110デフォルトの名無しさん
2006/01/11(水) 08:24:130111デフォルトの名無しさん
2006/01/11(水) 08:27:31DIBからHBITMAP作ってSelectしてBltすればいいじゃん
0112109
2006/01/11(水) 08:48:20ありがとうございます。
0113デフォルトの名無しさん
2006/01/11(水) 16:36:35ネットワークに接続するnetwork.dllを作って、loadLibraryを呼び出して明示的にロードすると、
net.dllがインポートしているWS2_32.dllなんかも一緒にロードされてますよね?、
その後FreeLibraryを呼び出すとnetwork.dllのマッピングは解除されるんですが、network.dllが
使ってたWS2_32.dllなどはマッピングが解除されないまま残ってしまっています。
network.dllのマッピングが解除された時点必要なくなったDLLのマッピングをすべて解除すること
はできないのですか?
0114113
2006/01/11(水) 16:39:040115デフォルトの名無しさん
2006/01/11(水) 20:12:59tchar.hをインクルードしない場合
TCHAR , TEXTマクロはコンパイルできるんですが
_TCHAR , _TEXTマクロ ,_Tマクロ だとエラーになります
_ありでもなしでも意味は変わらないと思うのですが
どうしてこのような違いがあるのでしょうか?
0116デフォルトの名無しさん
2006/01/11(水) 20:24:590117デフォルトの名無しさん
2006/01/11(水) 20:25:550118デフォルトの名無しさん
2006/01/11(水) 20:28:00_ 付きのヤツはTCHAR.Hで定義されていて、
_ ついてないヤツはデフォルトでインクルードされるヘッダに定義されてるから
今度からちったぁ自分で調べろよ
あと、_ありなしで意味は変わらないと思うとか、本気で思ってるとそのうち痛い目見るぞ
言葉の意味とプログラムの意味は別物だ
0119デフォルトの名無しさん
2006/01/11(水) 20:32:38#define _true 0
とか?
0120デフォルトの名無しさん
2006/01/11(水) 21:22:48いやその説明もどうかと
0121デフォルトの名無しさん
2006/01/11(水) 21:24:540122デフォルトの名無しさん
2006/01/11(水) 21:35:080123デフォルトの名無しさん
2006/01/11(水) 23:18:530124デフォルトの名無しさん
2006/01/11(水) 23:27:22コピーを行っていると画面が更新されません。
UpdateWindow、Sleep(1)を入れても更新されないみたいです。
ファイルをコピーしながらプログレスバーを動かすソフトでは、マルチスレッド
で実行しているのでしょうか?
マルチスレッドはよくわからないので、その他にやり方があれば教えてください。
よろしくお願いします。
0125デフォルトの名無しさん
2006/01/11(水) 23:29:530126デフォルトの名無しさん
2006/01/11(水) 23:36:38メッセージ処理しろよ。
0127デフォルトの名無しさん
2006/01/11(水) 23:39:30ちょっとづつコピーしながら間に表示したら?
0128デフォルトの名無しさん
2006/01/11(水) 23:39:52Windowsならどっちでもアクセスできることにぐんにょり
0129デフォルトの名無しさん
2006/01/11(水) 23:41:050130デフォルトの名無しさん
2006/01/11(水) 23:43:170131デフォルトの名無しさん
2006/01/11(水) 23:47:39アホですね
0132デフォルトの名無しさん
2006/01/11(水) 23:51:46ありがとうございます。
UpdateWindow(hWnd);
GetMessage(&msg, NULL, NULL, NULL);
TranslateMessage(&msg);
DispatchMessage(&msg);
Sleep(1);
としたら、コピーしながらでもプログレスバーは表示されました。
ウィンドウがなぜか動かなかったりしますが、また調べてみます。
0133デフォルトの名無しさん
2006/01/11(水) 23:53:010134デフォルトの名無しさん
2006/01/11(水) 23:56:54>ウィンドウがなぜか動かなかったりしますが
>ウィンドウがなぜか動かなかったりしますが
>ウィンドウがなぜか動かなかったりしますが
>ウィンドウがなぜか動かなかったりしますが
>ウィンドウがなぜか動かなかったりしますが
>ウィンドウがなぜか動かなかったりしますが
0135デフォルトの名無しさん
2006/01/12(木) 00:02:40どうすればいいですか。
0136デフォルトの名無しさん
2006/01/12(木) 00:06:020137デフォルトの名無しさん
2006/01/12(木) 00:26:48近頃の若いモンは我慢を知らん
0138デフォルトの名無しさん
2006/01/12(木) 00:32:09おれなんか×ボタンがきかん
0139デフォルトの名無しさん
2006/01/12(木) 08:32:08進捗率が変わったとき、progress bar の項目に新しい値を PBM_SETPOS で
セットするだけで表示が変わらない?
後、残り時間など変えたいなら計算して、表示個所に SetDlgItemText() して
hDlg を InvalidateRect() する。
中止ボタンがあるなら PeekMessage() で ボタンの項目(GetDltItem(hDlg, IDCANCEL)などで
取る)に LBUTTONDOWN があるか見る位で動いているけどなあ。
これらは、どこかにサンプルがあったのを真似しただけだが。
0140デフォルトの名無しさん
2006/01/12(木) 09:15:520141デフォルトの名無しさん
2006/01/12(木) 10:01:13メッセージポンプすら理解していないのに、
「Windowsプログラムが出来ます。」
とか、得意げに言ってそうだな。
0142デフォルトの名無しさん
2006/01/12(木) 12:49:08その理屈は変だろ
おまけに、デフォルトでインクルード「する」なら良いんだろうが、「される」だとなんかアレな感じがするw
0143デフォルトの名無しさん
2006/01/12(木) 13:03:090144デフォルトの名無しさん
2006/01/12(木) 13:13:10たぶんIDEのウィザードに頼りっきりなんだろうな
0145デフォルトの名無しさん
2006/01/12(木) 14:18:33でも、日本語的には「する」は能動的な行動を表すから、デフォルト
で「する」はちょっと違和感がある。
0146デフォルトの名無しさん
2006/01/12(木) 14:29:15まぁ、それは主語に何を置くかしだいじゃね?
日本語はよく主語省略されるから。
Windows.hを主語に置けば、「される」
「する」場合の主語はなんだろう、「統合開発環境が」とか、そんな類の。
いいの思いつかないけど。
まぁ、この場合、話題の中心がWindows.hだから、それを主語にするのが自然かな。
って、ことで「される」に決定だ。フォー。
0147デフォルトの名無しさん
2006/01/12(木) 14:35:20まぁこんなので長文書いてる時点で当事者なんだろうけど
0148デフォルトの名無しさん
2006/01/12(木) 15:05:15俺が前に投稿したのはちなみに>>104だ。
0149デフォルトの名無しさん
2006/01/12(木) 16:22:05そもそも最初から>>118 >>125がデフォルトの意味を間違えてるんだから、以後は無意味だな。
0150デフォルトの名無しさん
2006/01/12(木) 16:54:42ダイアログの上にエディットが貼りつけてあり、
そのエディットの上に(ダイアログが親の)リストボックスを
表示したり非表示にしたりするのですが、
リストボックスがマウスの操作を受けず
エディットにフォーカスが行ってしまいます。
0151デフォルトの名無しさん
2006/01/12(木) 16:55:490152デフォルトの名無しさん
2006/01/12(木) 16:56:54PTSTR pszErrMsg;
(略)
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_IGNORE_INSERTS |
FORMAT_MESSAGE_FROM_SYSTEM ,
NULL , GetLastError() , 0 ,
pszErrMsg , 0 , NULL
);
(略)
エラーメッセージを取得することができません。デバッガで調べると、ポインタはNULLを指してました。
どこが間違っているのでしょうか。
0153デフォルトの名無しさん
2006/01/12(木) 17:03:290154デフォルトの名無しさん
2006/01/12(木) 17:38:46ショートカットメニューのハンドルはどのようにしたら取得出来るでしょうか?
いろんなウィンドウハンドルにgetmenuしたり、メインウィンドウのメニューのハンドルと
ショートカットメニューのIDでgetmenuiteminfoを実行してみたりしましたが駄目でした。
ちなみにそのショートカットメニューからのwm_commandはTPUtilWindowクラスの
ウィンドウが受け取っているようです。
よろしくお願いします。
0155152
2006/01/12(木) 17:48:50LPTSTR lpszErrMsg;
(略)
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_IGNORE_INSERTS |
FORMAT_MESSAGE_FROM_SYSTEM ,
NULL , GetLastError() , 0 , lpszErrMsg , 0 , NULL
);
(略)
こうしました。でもまだ駄目です。どうすればいいですか?
0156デフォルトの名無しさん
2006/01/12(木) 17:54:15処理後、LocalFreeを入れるのを忘れないように。
0157デフォルトの名無しさん
2006/01/12(木) 18:03:18アホかおまえ
>>153が何をやってるか良く見てみろ
>>153が書いたのとおまえがやったことはまったく別物だ
0158デフォルトの名無しさん
2006/01/12(木) 18:03:55日本語で質問して下さい。
>>155
釣り?
0159113
2006/01/12(木) 19:34:59(。´Д⊂) うぅ…。
0160デフォルトの名無しさん
2006/01/12(木) 19:44:41すみません。
どうすればいいのでしょうか?
0161152
2006/01/12(木) 19:52:22こうですか?
PTSTR pszErrMsg;
(略)
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_IGNORE_INSERTS |
FORMAT_MESSAGE_FROM_SYSTEM ,
NULL , GetLastError() , 0 , (LPTSTR)&pszErrMsg , 0 , NULL
);
(略)
これでも駄目でした。
0162デフォルトの名無しさん
2006/01/12(木) 20:10:18君のコードはよく見てないけどヘルプにサンプル載ってるからコピーしてくれば
0163デフォルトの名無しさん
2006/01/12(木) 20:12:45オーナー度労
0165デフォルトの名無しさん
2006/01/12(木) 20:59:260166デフォルトの名無しさん
2006/01/12(木) 21:52:02できない。
あきらめろ。
0167デフォルトの名無しさん
2006/01/12(木) 22:04:52そこで別のアプリケーションからメッセージをポストしてやるのかなーと思って
似たようなアプリを調べたところ、キーコマンドをそのアプリで受け取って、コントロールしたい
アプリにWM_MOUSEMOVEなどのメッセージをポストしたりして、右クリックメニューに対処してました。
これって何かほかに良い方法ありそうな気がするのですが、アドバイス願います。
0168デフォルトの名無しさん
2006/01/12(木) 22:18:53なぜそんな気がするのですか?
0169デフォルトの名無しさん
2006/01/12(木) 22:24:10エスパーの卵だからだろ?
0170デフォルトの名無しさん
2006/01/13(金) 01:10:29SetWindowText(GetDlgItem(IDC_EDIT1),"任意");
SDK
でやっていますのでよろしくお願いします。
SDKでエディットボックスの任意の行に移動させる関数と
今エディットボックスが持っている行数を取得する関数があるとできると思うのですが・・
MSDNライブラリGOOGLE活用しましたが、検索技術が未熟なためか見つけることができませんでした。
どなたかよろしくお願いします。
0171デフォルトの名無しさん
2006/01/13(金) 01:19:03こんなのあった
ttp://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200101/01010024.txt
0172デフォルトの名無しさん
2006/01/13(金) 01:20:550173デフォルトの名無しさん
2006/01/13(金) 01:23:28「editboxを」「移動させたい」ならMoveWindowとかSetWindowPosだろ。
0174デフォルトの名無しさん
2006/01/13(金) 01:26:52すいません。
質問の仕方が悪かったです。申し訳ないです。
>>171,172
EM_SETSELという関数を使うのですね?今から参照のサイトを見てやってみます。
0175デフォルトの名無しさん
2006/01/13(金) 01:28:000176デフォルトの名無しさん
2006/01/13(金) 01:32:21とりあえずカキコしてみれ
0177デフォルトの名無しさん
2006/01/13(金) 01:33:24ありがとうございます。
まとめて
SendMessage(GetDlgItem(hWnd, IDC_EDIT1), EM_LINESCROLL, 0, SendMessage(GetDlgItem(hWnd, IDC_EDIT1), EM_GETLINECOUNT, 0, 0));/* 行数分スクロールさせる */
を追加したらできました。
ありがとうございます。相当感謝してます。
0178デフォルトの名無しさん
2006/01/13(金) 01:34:230179デフォルトの名無しさん
2006/01/13(金) 01:42:54なぜ同じ GetDlgItem() を二回も発行するのだ
無駄はいかんぞ
0180デフォルトの名無しさん
2006/01/13(金) 01:49:42HWND hWnd = GetDlgItem(hWnd,IDC_EDIT1);
としてコードを短くしたほうがいいですかね?
ふと思ったのですが
SendMessage(GetDlgItem(hWnd, IDC_EDIT1), EM_LINESCROLL, 0, SendMessage(GetDlgItem(hWnd, IDC_EDIT1), EM_GETLINECOUNT, 0, 0));/
と
教えてもらったサイトにある
HWND hEdit = GetDlgItem(hWnd, IDC_EDIT);
int nLines = SendMessage(hEdit, EM_GETLINECOUNT, 0, 0);/* エディットボックスの行数を取得 */
SendMessage(hEdit, EM_LINESCROLL, 0, nLines);/* 行数分スクロールさせる */
とでは
どちらが処理を軽くできるでしょうか?
0181180
2006/01/13(金) 01:50:56すいません。hEditでした。
0182デフォルトの名無しさん
2006/01/13(金) 01:57:12通常2番目だろうね。
コンパイラには、GetDlgItem(hWnd, IDC_EDIT)が2回同じ値を返すかどうかは
予測できない(つまり律儀に2回関数を呼びだす)けれども、変数は前後を見て
使われていなければレジスタに割り当てたりできるし。APIの呼び出しは結構
オーバーヘッドでかい。ただ、そこまで気にする内容かどうかは謎。
0183デフォルトの名無しさん
2006/01/13(金) 01:58:420184デフォルトの名無しさん
2006/01/13(金) 02:00:29回答ありがとうございます。
二回呼び出すのをやめ
>>179さんの注意どおり無駄を省くことにします。
ありがとうございました。
0185178=175
2006/01/13(金) 02:07:500186デフォルトの名無しさん
2006/01/13(金) 02:15:02スレ違い
0187154
2006/01/13(金) 03:41:48やっとすっきりした・・・
0188デフォルトの名無しさん
2006/01/13(金) 14:53:44WinMain()のHINSTANCEを渡せば、いつでもどこでも
メインウィンドウのハンドルを得るAPIがあったと思うのですが、
ど忘れしてしまいました orz
HWND hwMain;
hwMain = GetHWND(hInstance);
なんかこんな感じのAPIだったと思うのですが、
どなたかご存知ありませんか?
ググりまくっても出てこないよ。 (T_T)
0189デフォルトの名無しさん
2006/01/13(金) 16:15:30まず、「メインウィンドウ」から説明して貰おうか?
0190188
2006/01/13(金) 16:38:57ちなみにhInstanceはWinMain()の第一引数です。
確かこんな関数があったと思うんだけどなぁ。
0191デフォルトの名無しさん
2006/01/13(金) 16:41:31でも、HINSTANCE関係ないしなー
0193デフォルトの名無しさん
2006/01/13(金) 16:51:43マウスのプロパティで、ポインタのデザインを変更する
事ができますが(3Dブロンズや3Dモノクロなど)、これを
変更するためのAPIとかって存在するのでしょうか?
0194デフォルトの名無しさん
2006/01/13(金) 16:52:450195デフォルトの名無しさん
2006/01/13(金) 16:54:39その逆なんて知らないなぁ
そもそも自プログラムならメインウィンドウのハンドルが分からないわけないし、
他プログラムのウィンドウならFindWindowで探すもんだと思うしなぁ
0196デフォルトの名無しさん
2006/01/13(金) 16:55:22レジスタ弄ってどうするよバカ
0197デフォルトの名無しさん
2006/01/13(金) 17:14:44レジストリのどこを変更すれば設定が変わるかってのは
わかってるんですが、項目が多くて一気にできないものかと。
0199デフォルトの名無しさん
2006/01/13(金) 17:23:270200デフォルトの名無しさん
2006/01/13(金) 17:42:36> 親ウィンドウのつもりでした m(__)m
何から見て親なんだ?
そもそも、一つのプロセスには複数のトップレベルウィンドウを作れるわけだが、
複数の場合はZオーダーがトップのものを取得すればいいのか?
# ウィンドウがない場合もあるが、これは無効ハンドルでいいだろう。
0201デフォルトの名無しさん
2006/01/13(金) 19:13:240202デフォルトの名無しさん
2006/01/13(金) 19:23:070203デフォルトの名無しさん
2006/01/13(金) 19:30:58ならばさっさと代替の言葉を示せよ、読解力のない揚げ足取り君w
0204デフォルトの名無しさん
2006/01/13(金) 20:17:290205デフォルトの名無しさん
2006/01/13(金) 20:21:170206デフォルトの名無しさん
2006/01/13(金) 20:38:34つか202の時点で失笑ものだが
0207デフォルトの名無しさん
2006/01/13(金) 22:11:34以下のように、ウィンドウ生成→ウェイト→処理→ウィンドウ破棄という処理を書いても、
実際にはメッセージのウィンドウが表示すらされません。
また、Sleep値を大きくしても効果がありませんでした。
原因を宜しければ教えてください。
------------------------------------------------------------------------------
HINSTANCE AppInstance; // インスタンスハンドル
HWND hWnd; // 親ウィンドウのハンドル
DWORD WINAPI ThreadFunc(LPVOID lpParam)
{
HWND message_window;
RECT rect;
GetClientRect(::hWnd,&rect);
message_window = CreateWindowEx(0,"STATIC","処理中です",WS_DLGFRAME | WS_CHILD | WS_VISIBLE,
(rect.right+rect.left)/2-100,(rect.bottom+rect.top)/2,200,36,::hWnd,0,::AppInstance,NULL);
Sleep(500); // ちょっとウェイトする
/* (処理) */
DestroyWindow(message_window);
ExitThread(TRUE);
}
------------------------------------------------------------------------------
0208デフォルトの名無しさん
2006/01/13(金) 22:26:440209デフォルトの名無しさん
2006/01/13(金) 22:28:01Sleep(500)の前後にUpdateWindow(message_window)入れてみれ
↓
Sleep(500)の前にUpdateWindow(message_window)入れてみれ
0210デフォルトの名無しさん
2006/01/13(金) 22:44:11手書きじゃあるまいにw
0211デフォルトの名無しさん
2006/01/13(金) 22:54:09別にいいじゃん・・・
気にしてるんだからほっといてよw
0212デフォルトの名無しさん
2006/01/13(金) 23:16:41文字列が長いと、80字位に切り詰まるようです。
これって可変なんでしょうか?可変なら最大文字数を取得する方法ってありますか??
0213デフォルトの名無しさん
2006/01/13(金) 23:17:360214デフォルトの名無しさん
2006/01/13(金) 23:35:42スレッド専用に特化した高速な同期化オブジェクトってありますか?
0215デフォルトの名無しさん
2006/01/13(金) 23:44:200216デフォルトの名無しさん
2006/01/14(土) 00:19:400217デフォルトの名無しさん
2006/01/14(土) 01:31:57SDKでチャットプログラム作ってるんですがすっげー重いです。
というか明らかにソースコードがおかしいです。
動作させてわかりました。
ソケットにデータが入ってきたかチェックするかをdefaultのところに記述していました。
すると動作がおかしくなってしまいました。
実際どんな感じになっているかと言うと
http://www.geocities.jp/poruporuchan2000/main.txt
です。ソケットについては別途宣言しています。
http://www.geocities.jp/poruporuchan2000/setup_client.txt
mixiで相談しましたが、思ったような回答が得られていないため投稿しました。
よろしくお願いします。
0218デフォルトの名無しさん
2006/01/14(土) 01:33:20肝心の「どのように動作がおかしいのか」を書かなくちゃ意味がないと思うが
0219デフォルトの名無しさん
2006/01/14(土) 01:35:17すいません。
起動すると極端に重くなってコンパイルしたEXEファイルのウインドウが真っ白あるいは
デスクトップの画面をそのまま表示している状態です。
プロセスがいつの間にか100%になっていたりします。
0220デフォルトの名無しさん
2006/01/14(土) 01:36:410221デフォルトの名無しさん
2006/01/14(土) 01:39:20エラー処理はまだ書いていません。
勉強がてら書いているのでできればアドバイスをもらえたらと思います。
0222デフォルトの名無しさん
2006/01/14(土) 01:40:290223デフォルトの名無しさん
2006/01/14(土) 01:43:03WM_PAINTはウインドウの再描画を行うやつだったと思いますが、それを応用してソケットにデータインしたときの処理
を行えるということでしょうか?
0224デフォルトの名無しさん
2006/01/14(土) 01:45:230225デフォルトの名無しさん
2006/01/14(土) 01:47:55defaultでFALSEを返したら?
0226デフォルトの名無しさん
2006/01/14(土) 01:48:13mixiで質問したときもそのように回答をいただきました。
そのタイマーというのがよく理解できていないため、どの用に記述していいのかよくわかっていません。
MSDNライブラリで見てみたのですが書式は理解できました。
ですがどのようにそれを使えばいいのかわかりません。
できればご教授お願いします。
0227デフォルトの名無しさん
2006/01/14(土) 01:50:50FALSEに書き直して実行したところ今度は別途用意したソケットで
WSACleanup();
でエラーが出てしまいました。
エラーがでたというのはコンパイルできたのですがデバック処理中にエラーがでたということです。
0228デフォルトの名無しさん
2006/01/14(土) 01:52:14たんにSetTimerした後にWM_TIMERを受け取って処理するか
コールバック登録するかってだけだろうに。
PeekMessageの方がいいと思うがな。
0229デフォルトの名無しさん
2006/01/14(土) 01:55:16すいません。有益なアドバイスのようですが
理解ができないので調べて理解できるように勤めます。
0230デフォルトの名無しさん
2006/01/14(土) 02:30:34SetTimerでWM_TIMERを生成する間隔を決めて
WM_TIMERが呼び出されたときソケットにデータが入っているかチェックをしたら?という意味だと個人的に解釈しました。
間違い等あれば指摘よろしくお願いします。
調べた結果を元にしてソースを変更してみましたが思ったように前のプログラムに比べて軽快な動作が得られません。
fd_set fds; //fds監視リストを作成
//メッセージの種類に応じて処理を分岐させます。
switch (message)
{
case WM_CREATE:
SetTimer(hWnd,NULL,300,NULL);
case WM_TIMER:
FD_ZERO(&fds); /* 監視対象のディスクリプタ一覧をゼロクリア */
FD_SET(soc,&fds); /* リスニングソケットを監視対象に追加 */
select(soc + 1,&fds,NULL,NULL,NULL);
if(FD_ISSET(soc,&fds)){
//メモリの初期化と文字の表示
memset(sBuff3, 0, sizeof(sBuff3));
recv(soc, sBuff3, sizeof(sBuff3), 0);
SetWindowText(GetDlgItem(hWnd,IDC_EDIT1),sBuff3);
return 0;
}
return FALSE;
case WM_COMMAND:
//以下続く
どう訂正したらいいのかよろしくお願いします。
0231デフォルトの名無しさん
2006/01/14(土) 02:34:11breakぐらいしろと
ぶっちゃけCとWindowsプログラミングの基礎からやり直せ
0232デフォルトの名無しさん
2006/01/14(土) 02:35:16今基礎をやっています。
0233デフォルトの名無しさん
2006/01/14(土) 02:36:190234デフォルトの名無しさん
2006/01/14(土) 02:36:450235デフォルトの名無しさん
2006/01/14(土) 02:39:24第二因数は大麻の識別子ですよね?やはりTIME.hファイルを作って設定しなければならないでしょうか?
>>234
わたしもそうおもって作っていましたが、思ったような動作が得られず困ってしまい、この板に頼った次第です。
0236デフォルトの名無しさん
2006/01/14(土) 02:42:05ほかに非同期IOとかもありま。
0237デフォルトの名無しさん
2006/01/14(土) 02:43:15でいいと思うお
WM_TIMERが来たときにはwParamに識別子が入ってるのでそれで分別するべきだとおもうお
個人的な意見だがコールバックにした方がいいと思うお
0238デフォルトの名無しさん
2006/01/14(土) 02:45:51○ でいいと思う
× それで分別するべきだとおもうお
○ それで分別するべきだとおもう
× コールバックにした方がいいと思うお
○ コールバックにした方がいいと思う
0239デフォルトの名無しさん
2006/01/14(土) 02:46:55セレクトの説明UNIXのやつも同じだと思い、読みました。
ですが記憶があやふやになってしまっているところもあります。すみません。
読み直します。
>>237
親切に設定例まで書いていただきありがとうございます。
wParamで分岐ですね!
unitで分岐していたのでいつまでたってもTIMERを拾わなかったのでしょうか・・
0240デフォルトの名無しさん
2006/01/14(土) 02:47:170241デフォルトの名無しさん
2006/01/14(土) 03:00:36ちょっと挫折です・・
0242デフォルトの名無しさん
2006/01/14(土) 03:08:53じゃないのか?
0243デフォルトの名無しさん
2006/01/14(土) 03:14:16回答ありがとうございます。
WM_CREATE:
SetTimer(hWnd,TIMER_ID1,300,NULL);
break;
WM_TIMER:
FD_ZERO(&fds); /* 監視対象のディスクリプタ一覧をゼロクリア */
FD_SET(soc,&fds); /* リスニングソケットを監視対象に追加 */
select(soc + 1,&fds,NULL,NULL,NULL);
if(FD_ISSET(soc,&fds)){
//メモリの初期化と文字の表示
memset(sBuff3, 0, sizeof(sBuff3));
recv(soc, sBuff3, sizeof(sBuff3), 0);
SetWindowText(GetDlgItem(hWnd,IDC_EDIT1),sBuff3);
return 0;
}
break;
としているのですが・・デバックでブレークポイントを作成してみているのですが・・switch(UNIT)で全部飛び越して一番下の行まで一気に飛んでいます・・もう挫折です。
0244デフォルトの名無しさん
2006/01/14(土) 03:14:590245デフォルトの名無しさん
2006/01/14(土) 03:18:48アドバイスありがとうございます。
サンプルがあるのですね。情報ありがとうございます。
0246デフォルトの名無しさん
2006/01/14(土) 03:27:20一日休んで頭すっきりしたところでもう一度取り組んでみようと思います。
そのときまたわからないことがあれば質問させていただきます。
今日は本当にありがとうございました。
0247デフォルトの名無しさん
2006/01/14(土) 03:45:250248デフォルトの名無しさん
2006/01/14(土) 04:10:35猫C見るかKillTimerとSetTimerについて調べれ
0249デフォルトの名無しさん
2006/01/14(土) 04:18:07メッセージループがないけど
0250デフォルトの名無しさん
2006/01/14(土) 04:18:57KillTimerもちゃんとウインドウ消すときの処理に加えてたんですけどね。
0251デフォルトの名無しさん
2006/01/14(土) 04:20:23あたりまえでしょ!そんなこと!
0253デフォルトの名無しさん
2006/01/14(土) 04:24:35俺もそれは気付いていたけど
叩かれそうだから迷ってたんだよ。 テイウカ、 ツッコミドコロ マンサイダヨネ
底引き網漁・・・
0254デフォルトの名無しさん
2006/01/14(土) 04:26:080255デフォルトの名無しさん
2006/01/14(土) 04:27:06突っ込みどころ満載だからこのスレの意味があるってもんだ!!
修正したファイルをうpしてもいいがそれじゃ>>217
の勉強にならないもんな
0256デフォルトの名無しさん
2006/01/14(土) 04:29:27それじゃだめ。毎回KillしてSetしなきゃ。
0258デフォルトの名無しさん
2006/01/14(土) 04:50:02CreateDialogなら必要だけどさ。
0259デフォルトの名無しさん
2006/01/14(土) 05:08:29馬鹿の相手するとスレ全体が馬鹿っぽくなってくる
もう少しマシな話題にしてくれ
0260デフォルトの名無しさん
2006/01/14(土) 05:13:22氏のためになるようにな。
0261デフォルトの名無しさん
2006/01/14(土) 05:30:46IFoo *pFoo;
pBar->SomeMethods(&pFoo); // IBar* pBar; であり、インスタンス作成済
// pFooで作業
pFoo->Release(); // ???
という状況です。pFoo->Release()するべきなのか、という質問です。
SomeMethodsのドキュメントに「pFoo使用後はRelease()を呼び出せ」と明記
してある場合はいいのですが、何も書いてないものもあるのです。
感覚的にはRelease()した方が良さげですが、一般的にこう考えるべきなのでしょうか?
// でも他メソッドではAddRef()を呼べと明示するものもあって、心に迷いが生じました。
// なのにサンプルではAddRef()なしでRelease()を呼出していて、それで動作しているので混乱中
AddRef()、Release()の戻り値もイマイチ信用できないと聞き、手詰りになってしまいました。
詳しい方、どうぞ御教示下され
0262261
2006/01/14(土) 05:34:11(DirectShowまわり)
0263207
2006/01/14(土) 05:46:45即レスありがとうございました。
WS_VISIBLEを指定していても、
WM_PAINTを送ってやらないまでは表示はされないんですね。
0264デフォルトの名無しさん
2006/01/14(土) 05:46:46インスタンス作成した回数ぶんRelease()でいいんじゃない?
あとはエロくて詳しい人に任せます。
0265デフォルトの名無しさん
2006/01/14(土) 05:51:590266デフォルトの名無しさん
2006/01/14(土) 05:58:280267デフォルトの名無しさん
2006/01/14(土) 06:43:26ファイルやパイプのハンドルは特に問題なく継承できます。
しかし、コンソールのハンドルについては、子プロセスがGUIアプリの場合、継承ができないみたいなのですが?
もちろん子プロセスがCUIアプリの場合は継承できます。
GUIアプリにももちろんハンドルの値そのものは渡っているのですが、GUIアプリがそのハンドルを使おうとしてもエラーで使えません。
コンソールのハンドルをGUIアプリに継承させて使わせることができる方法をご存じの方、お教えください。
また、もし無理ならなぜこういう仕様になっているのかお教えください。
0268デフォルトの名無しさん
2006/01/14(土) 07:23:070269デフォルトの名無しさん
2006/01/14(土) 07:43:41デバッグ時に引数の値などをチェックする時にMFCならTRACE、Win32ならOutputDebugStringなどを使うでしょうがprintfのような入出力関数を使いたい場合はコンソールウィンドウを表示すれば出来ます。
#include <io.h>
#include <fcntl.h>
void OpenConsole()
{
int hCrt, i;
FILE *hf;
AllocConsole();
hCrt = _open_osfhandle((long)GetStdHandle(STD_OUTPUT_HANDLE), _O_TEXT);
hf = _fdopen(hCrt, "w");
*stdout = *hf;
i = setvbuf(stdout, NULL, _IONBF, 0);
}
終了時に解放してください。
FreeConsole();
結構重宝すると思います。
0270デフォルトの名無しさん
2006/01/14(土) 07:45:34コンソールプログラムを起動したときにWindowsが
コンソール・ウィンドウを自動的に用意することからわかるように、
Windowsは実行ファイルを見てコンソールプログラムかどうかを識別している。
この情報は、実行ファイルのヘッダー部の特定のフィールドに埋め込まれている。
このフィールドの値が定数WINDOWS_GUI(=2)ならGUIプログラム、
WINDOWS_CUI(=3)ならコンソールプログラムになる。
コンパイラのオプション指定によってどちらかを設定するのである。
上記のオプションを指定するかどうかにかかわらず、C/C++コンパイラが
ソースコードから生成するマシン語は同じものである。
しかし、プログラムの開始位置がmain関数か、WinMain関数かという違いが生じる
0271デフォルトの名無しさん
2006/01/14(土) 07:47:58{
// スクリーン・バッファのハンドルを取得
HANDLE hOut = CreateFile( "CONOUT$", GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, OPEN_EXISTING, 0, 0);
if( hOut != INVALID_HANDLE_VALUE){
DWORD sz;
WriteFile( hOut, buf, strlen(buf), &sz, NULL);
CloseHandle( hOut);
return TRUE;
}else return FALSE;
}
バッファのハンドルを取得するには、入力の場合に「CONIN$」、
出力の場合に「CONOUT$」という特殊なファイル名を指定して、
ファイル作成用APIであるCreateFileを呼び出せばよい
ファイル名以外の引数は、上記のソースの指定で固定と考えてかまわない。
こうして得たスクリーン・バッファのハンドルに対して、
ファイル書き込み用のWriteFileを呼び出すことで、コンソールに対して出力することができる
同様に、ユーザーが入力した文字列を取得するには、入力バッファに対してReadFileを呼びだせばよい
0272デフォルトの名無しさん
2006/01/14(土) 07:48:40printf等の関数で出力できるかどうかはライブラリの実装次第である
// スクリーン・バッファのハンドルを取得
HANDLE hOut = CreateFile( "CONOUT$", GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, OPEN_EXISTING, 0, 0);
BOOL ret = SetStdHandle( STD_OUTPUT_HANDLE, hOut);
printf("出力テスト");
0273デフォルトの名無しさん
2006/01/14(土) 07:59:18ttp://forums.belution.com/ja/vc/000/053/06.shtml
0274デフォルトの名無しさん
2006/01/14(土) 09:22:52int main()
{
//これらは必要なら。
HINSTANCE hinst = GetModuleHandle(0);
int nCmdShow = SW_SHOWDEFAULT;
PSTR pszCmdLine = PathGetArgsA(GetCommandLineA());
#else
int WINAPI WinMain(HINSTANCE hinst, HINSTANCE, PSTR pszCmdLine, int nCmdShow)
{
#endif
まあコンソールがなくともATLTRACE2使えばprintfと同じように書式付でデバッグ出力できるし、
C++なら自分でデバッグ出力するストリームを書く方法もある。
0275デフォルトの名無しさん
2006/01/14(土) 10:11:380276デフォルトの名無しさん
2006/01/14(土) 10:23:210277デフォルトの名無しさん
2006/01/14(土) 10:48:37m9(^Д^)プギャー
0278デフォルトの名無しさん
2006/01/14(土) 13:08:32277は269の書くことが理解できないほどのゴミ
0279デフォルトの名無しさん
2006/01/14(土) 13:17:16小学生みたいな煽り合いはよそでやりなさい
0280デフォルトの名無しさん
2006/01/14(土) 13:47:30どうやって変更したらいいの?
標準のファイルI/O APIではそれらしいのなかったよ・・
0281デフォルトの名無しさん
2006/01/14(土) 14:09:020282デフォルトの名無しさん
2006/01/14(土) 14:22:02ファイルI/Oなんかで探してるヌルいヤシには無理かと。
0283デフォルトの名無しさん
2006/01/14(土) 14:23:130284デフォルトの名無しさん
2006/01/14(土) 14:25:370285デフォルトの名無しさん
2006/01/14(土) 14:36:210286デフォルトの名無しさん
2006/01/14(土) 14:50:580287デフォルトの名無しさん
2006/01/14(土) 14:55:510288デフォルトの名無しさん
2006/01/14(土) 15:04:02/ ( ・∀・) /
〆 ┌ | つ 人
|| γ ⌒ヽヽコノ < >_∧∩
|| .| |:::|∪〓 V`Д´)/ ←>>286
./|\人 _.ノノ _||_. /
0289280
2006/01/14(土) 16:21:23もうちょっと詳しく頼む
ATAPIコマンド直接ってことはある程度のファイルシステムを
実装する必要あるってこと?
それは大変だ・・
もうちょっと簡単にやる方法ないかな?
0290デフォルトの名無しさん
2006/01/14(土) 16:24:010291デフォルトの名無しさん
2006/01/14(土) 16:41:26デバイス(ドライブ)に対して動作を制御するための命令を出すの。
そういう命令が実際あるかどうかは知らないし、そこに関しては
WIN32API外の話だ。
0292280
2006/01/14(土) 17:13:010293デフォルトの名無しさん
2006/01/14(土) 17:14:46おまいの最初の質問はそういう話じゃなかったろ?
0294280
2006/01/14(土) 17:22:41そうなるとセクタ番号わからないとできないはず
それとも何倍速かだけATAPIコマンドで指定して
ファイルの読み込み事態は普通のReadFileでやってもいいの?
0295デフォルトの名無しさん
2006/01/14(土) 17:41:35今時のドライブは「何倍速」とかいうコントロールは出来ないと思う。
そもそもドライブ自体が可変速で動いてるし。
0296デフォルトの名無しさん
2006/01/14(土) 18:14:27void OpenConsole()
{
AllocConsole();
freopen("CONOUT$", "w", stdout);
}
で十分。逝って良し。
0297デフォルトの名無しさん
2006/01/14(土) 18:49:08出来ないわけないだろ。
CD2WAVとか使ってみろ。
0298280
2006/01/14(土) 18:51:22普通CD/DVDからファイル読み出したら最高速でドライブ動くみたいで
うるさいでしょ?それを避けたいのよ
CD/DVDプレイヤーとかだとうるさくならないからできると思うんだけど
0299デフォルトの名無しさん
2006/01/14(土) 19:10:37そういうソフトなら既にあるな。
http://cdromtool.sourceforge.net/
ソースも公開されているし。
0300デフォルトの名無しさん
2006/01/14(土) 19:53:090301280
2006/01/14(土) 19:53:530302デフォルトの名無しさん
2006/01/14(土) 19:58:43ただのデータ読み出しと音楽/動画再生を一緒にすんじゃね
0303デフォルトの名無しさん
2006/01/14(土) 21:34:03つまりAPIをフックするプログラムを作りたいんですが、
参考になるソースとかはないでしょうか。
0304デフォルトの名無しさん
2006/01/14(土) 21:45:05アプリを作りたいのですが、フラッシュファイル(.swf)を書き出すAPI・仕様とか、
サンプルプログラムがあったらURLを教えてください。
(QuickTime APIで可能でしたでしょうか?)
ご教授よろしくおねがいします
0305デフォルトの名無しさん
2006/01/14(土) 21:49:10つ[listexp]
0306デフォルトの名無しさん
2006/01/14(土) 22:03:57凄い!こんな便利なものがあったなんて。
ありがとうございました。
0307280
2006/01/14(土) 22:18:42>ただのデータ読み出しと音楽/動画再生を一緒にすんじゃね
どうして?
ファイルI/Oに関しては同じではないの?
何か異なるの?
おれ別に音楽/動画再生するわけじゃないけど
同じような感じでストリーミング処理を実現したいんだ
今教えてもらったcdromtoolのソース読んでる
SCSIコマンド直接投げてるっぽいとこがある
ATAはまた別かな?
0308デフォルトの名無しさん
2006/01/14(土) 22:48:330309デフォルトの名無しさん
2006/01/14(土) 23:00:21CDの音楽の再生には遅くても問題ないから遅くなり、従って音も静かになる。
そもそも音楽の再生されるときの早さが1倍。
逆にファイルなどのデータを読み出すのは(静穏性などを考えなければ)早いほうが良いに決まっている。
だからこそ速度が上がることがCD/DVDドライブの性能向上とされた。
0311280
2006/01/14(土) 23:19:24つまり295が言うように自前でwaitでも入れてゆっくり読めば
ディスクの回転は自然と落ちると言ってるわけ?
でもそれやったけどそうならないから質問したんだ
0312デフォルトの名無しさん
2006/01/14(土) 23:20:190313デフォルトの名無しさん
2006/01/14(土) 23:48:03どうしたらそう読める
0314280
2006/01/15(日) 00:03:58ここ
>CDの音楽の再生には遅くても問題ないから遅くなり、従って音も静かになる。
「遅くなり」ってのは自然とディスクの回転が遅くなるって意味じゃないの?
>>312もう黙ってようと思ってたんだけどごめんね
0315デフォルトの名無しさん
2006/01/15(日) 00:08:22「自然と」というがおそらくは音楽CDだけが1倍で動くように作られていると思う。
311のように自前でwaitを入れても、少しの時間全力で動くのと少しの時間止まるのが繰り返されるだけだと思う。
0316デフォルトの名無しさん
2006/01/15(日) 00:34:310317デフォルトの名無しさん
2006/01/15(日) 00:39:020318デフォルトの名無しさん
2006/01/15(日) 00:59:19280は自分のPCのじゃないCDを静かに動かしてみたいと思ってんじゃねーの
0319261
2006/01/15(日) 01:34:01お返事ありがとうございました。
やはりRelease()を呼ぶべきですよね。
すっきりしました。どうもありがとうございました
0320デフォルトの名無しさん
2006/01/15(日) 03:12:23http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rls=GGLG,GGLG:2005-32,GGLG:ja&q=API+Hook
0321デフォルトの名無しさん
2006/01/15(日) 04:24:38そういうことをしたくなったときに買う本が『Advanced Windows』
0322デフォルトの名無しさん
2006/01/15(日) 09:37:27SDKでスレッドを立ててその中で非同期通信を設定しました。
データが入ってきたときにエディットボックスに書き込むように書いたつもりですがエラーが出ます。
コンパイルしています...
main.cpp
c:\documents and settings\taka\my documents\visual studio projects\受信\main.cpp(91) : error C2664: 'GetDlgItem' : 1 番目の引数を 'LPVOID' から 'HWND' に変換できません。
'void*' から非 'void' 型への変換には明示的なキャストが必要です。
c:\documents and settings\taka\my documents\visual studio projects\受信\main.cpp(96) : error C2664: 'GetDlgItem' : 1 番目の引数を 'LPVOID' から 'HWND' に変換できません。
'void*' から非 'void' 型への変換には明示的なキャストが必要です。
c:\documents and settings\taka\my documents\visual studio projects\受信\main.cpp(120) : error C2664: 'GetDlgItem' : 1 番目の引数を 'LPVOID' から 'HWND' に変換できません。
'void*' から非 'void' 型への変換には明示的なキャストが必要です。
エラーからわかると思いますが
hThread1=CreateThread(NULL,0,fnThread1,hWnd,0,NULL); /* スレッド作成 */
をして
DWORD WINAPI fnThread1(LPVOID hWnd) {
...中略
SetWindowText(GetDlgItem(hWnd,IDC_EDIT2),"接続が確立されませんでした。");
として上記のエラーが出ました。どの用にしたらいいと思われますか?よろしくお願いします。
0323322
2006/01/15(日) 09:49:04って・・・
誰も居ない・・
テラサビシス
0324デフォルトの名無しさん
2006/01/15(日) 09:52:59だけどapiと全然関係ないから無視しただけ
0325322
2006/01/15(日) 09:53:450326デフォルトの名無しさん
2006/01/15(日) 10:02:26>明示的なキャストが必要です
0327デフォルトの名無しさん
2006/01/15(日) 10:06:27それなんですけど、どうやればいいのかがわかりません。
この場合の明示的なキャストとはどうやればいいのでしょうか?
'void*' から非 'void' 型への変換・・・?
0328デフォルトの名無しさん
2006/01/15(日) 10:08:550329デフォルトの名無しさん
2006/01/15(日) 10:11:37HWND hwnd = GetDlgItem(hWnd,IDC_EDIT2);
ということでしょうか・・??
0330328
2006/01/15(日) 10:12:11hWnd の使い方がおかしい
0331デフォルトの名無しさん
2006/01/15(日) 10:12:42お前はプログラムをやるのはまだ早いよ。
Cを最初から勉強しなおせ。
0332デフォルトの名無しさん
2006/01/15(日) 10:13:04つーか、今の時代にCreateThread?
0333デフォルトの名無しさん
2006/01/15(日) 10:13:06うーむ・・・
0334デフォルトの名無しさん
2006/01/15(日) 10:13:49Cもプログラムだろ、お前もやりなおせ
0335デフォルトの名無しさん
2006/01/15(日) 10:16:39すいません。最近VC++に手をつけ始めたもので・・汗
0336328
2006/01/15(日) 10:18:14コンパイラ様がおっしゃってるので、適切にキャストするよろし
0337デフォルトの名無しさん
2006/01/15(日) 10:18:44まずあれだ。
キャストって知ってるかい?
0338デフォルトの名無しさん
2006/01/15(日) 10:20:05ありがとうございます!!!
コンパイラ様のお告げの意味がわかるようにならないとですね・・
ありがとうございました。
0339デフォルトの名無しさん
2006/01/15(日) 10:57:55CreateThreadは使わない方が良いのでしょうか?
0340デフォルトの名無しさん
2006/01/15(日) 11:00:05お前はC/C++をやるのはまだ早いよ。
プログラムを最初から勉強しなおせ。
0342デフォルトの名無しさん
2006/01/15(日) 11:08:330343デフォルトの名無しさん
2006/01/15(日) 11:17:33l l l
l l l
,. ‐'' ̄ "'' 、 ,,. --‐┴─-- 、 / ̄ "'' -、
/ ,.-‐''"´ \ _/ ヽ
l / ヽ l
l / ● l l
ヽ l (_人__ノ ● ヽ / そんな事言われても
,,>-‐| ´´ | / , , ,. ‐'' ̄ "' -、/ ウチ ポン・デ・ライオンやし
/ l ヽ_/ / ゙ヽ
l ` 、 l l
l ,. ‐'' ̄ "' -、 ,. ‐'' ̄ "'' -、 l
l, / ヽ / ヽ, /
ヽ、,, l l l,,,___,,,/
"'''l l l
ヽ /ヽ /
ヽ,___,,,/ ヽ,,___,,,/
/ |
/ |
0344デフォルトの名無しさん
2006/01/15(日) 11:21:09DVDビデオだって2時間の映画が単純コピーに2時間かかったりしない
0346デフォルトの名無しさん
2006/01/15(日) 11:31:09| `゙''ー- 、 ________
| ,. -‐ ''´ ̄ ̄`ヽ、_ /
|, - '´ ̄ `ヽ、 /
/ `ヽ、ヽ /
_/ ヽヽ/
/ / / / / / ヽハ
く / /! | 〃 _/__ l| | | | | | | ||ヽ
\l// / | /|'´ ∧ || | |ー、|| | | l | ヽ
/ハ/ | | ヽ/ ヽ | ヽ | || /|ヽ/! |/ | ヽ
/ | ||ヽ { ,r===、 \| _!V |// // .! |
| || |l |ヽ!'´ ̄`゙ , ==ミ、 /イ川 |─┘
| ハ|| || | """ ┌---┐ ` / // |
V !ヽ ト! ヽ、 | ! / //| /
ヽ! \ハ` 、 ヽ、__ノ ,.イ/ // | /
┌/)/)/)/)/)/)/)/)/)/)lー/ ` ー‐┬ '´ レ//l/ |/
|(/(/(/(/(/(/(/(/(/(/│|| |\ 〃
r'´ ̄ヽ. | | ト / \
/  ̄`ア | | | ⌒/ 入
〉  ̄二) >>322は死ねば| | | / // ヽ
〈! ,. -' | | ヽ∠-----', '´ ',
| \| | .良いと思います | |<二Z二 ̄ / ',
| | | _r'---| [ ``ヽ、 ',
| | | つかスレ違いです >-、__ [ ヽ !
\.| l. ヽ、 [ ヽ |
ヽ| \ r' ヽ、 |
0347デフォルトの名無しさん
2006/01/15(日) 11:33:15( ヌ … ヌルポ ) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ヽ
ヽ、_ _ノ ( ぬるぽぬるぽ! )
ヽ{ ヽ、_ _____ノ
_,,, _ ノノ
Σ , -'" `ヽ、
/ / ィ ト ヽ r、},々
/ /,ィ ハ N \ }7凡 >
,彳 レレ' V ヽN}Ll ヽ ぬるぽぬるぽ…
ハM| ○//// ○ `ー、イ } ぬるぽぬるぽぬるぽ!
{N{ヽl "" r-┐"" _6ノノNノ
}ヽ、 ヽ _L__l_ ノ _ノノノ
{ `ー--'≪_ V _≫'" ノl l
ll l l、_ r' ,ヘ 1 _,,-'"l l l
l l l ノ i レ' V l ヽ、_l l バタバタ
ヽ ̄ ノ| ト、__彡
_
,.'´ ヽ ガッ
! ノ_,メ,_ハ〉 _
l (!l.‘д‘ノ| , '´ィ´ `ヽ
! (とゝ )i卯ミノ从从リ *⌒)
ノ ノ/⊂彡☆#))Д゚ノリ
` `iララ′ と)j水!つ
0348デフォルトの名無しさん
2006/01/15(日) 12:03:23そうとは限らない。DVDビデオだと強制的に等倍になるドライブもある。
その場合ドライブのファームウェアを改造しなければ本来の速度を出せない。
通称 改ファーム。
0349デフォルトの名無しさん
2006/01/15(日) 12:35:29作ったスレッド内でCRTもMFCも使わないならCreateThreadでいいよ。
0350デフォルトの名無しさん
2006/01/15(日) 12:54:260351デフォルトの名無しさん
2006/01/15(日) 12:59:350352デフォルトの名無しさん
2006/01/15(日) 13:17:19アプリを作りたいのですが、フラッシュファイル(.swf)を書き出すAPI・仕様とか、
サンプルプログラムがあったらURLを教えてください。
(QuickTime APIで可能でしたでしょうか?)
ご教授よろしくおねがいします
0353・∀・)っ-○●◎- ◆Pu/ODYSSEY
2006/01/15(日) 13:27:060354デフォルトの名無しさん
2006/01/15(日) 13:28:02349じゃないが…CRTを使わないならCreateThreadでいい。
逆に使うなら_beginthreadでないとリークが発生する。
0355354
2006/01/15(日) 13:30:00_beginthreadを_beginthreadexと読み違いてた
0356デフォルトの名無しさん
2006/01/15(日) 14:40:41おっけなるほど・・了解した。
0357デフォルトの名無しさん
2006/01/15(日) 15:03:05;";'.::.:'; ;'.::.:';
;' ;.::;.:;.:'; ; ;.::;.:;.:'; ':
;" ;'.:;.::;:::;';"" "" ;'.:;.::;:::;'; ':
;" ':,
;' ':,
; '; また頑張ってね♪
ミ ● ● ミ
ミ ミ' ~;";^:
ミ """ ;" ミ '; """ ミ oOOo ミ
'; """ 丶,.,,,:" 丶,,,,:" """ ;"':,_ .○,' ))
':, ;"ミ ミ
,,; _ _;" ; ;'
; " :' ;'
; ':, ;'
; ':, ':, ,、:'
ミ ':, ;.,,;.,. ;.,..,;.,. ',
....,.,ミ ミ' ~;";^:ミ X ミ' ~;";^: ミ
ミ `"ミ ミoOOo ミ ミoOOoミ ミ
ミ ,.,.,...':,_ミ ○ ;ミ '; ;ミ ○ ;ミ_:'
ミ,.,;.,.;,,. 丶, ,:"丶,,:" ミ,.,;.;,.丶
0358デフォルトの名無しさん
2006/01/15(日) 15:04:29:;' /:/ `メ、 i: ハ: i: : ii:i ヽ: i: :ii; : : : :iヽ: :
i: :i: i: i/,ィ=ミヽi: iヽNi:i_`iL:H---i:i: ヽ
i: :i :i / {.iトgj:i ヽ! lルィ丁゙)‐ミ「!: :ii/: : i
;':/ヾム⊂つ'´ i:.;{iil1:ソ i:i:::i !: : i:
: i: /: iト 、,,ミニっ /i/゚: o i .
: i:/: : i 、`_  ̄/.:/: : : i: : >>322さんに
: /: .::ハ ゙llllllル `ヽ //. : :/! i: . <あやまれ!
/: .::/:::/`、 lll/: : : : :} /〃:./: /i iハ!
i. ::/i::/::::::i::ヽ`三ー 'ノ , イ/: /: /.::i i::::::
::::///::::::::i:::i:..ヽ---<::::/:::/: :/: : i iヽ::
0359デフォルトの名無しさん
2006/01/15(日) 15:05:04___「「 |  ̄⌒ヽ¬、\
/ ̄ブ / | \ ヽ
〃 / / ハ |ヽ ヽ\ ヽ ヽ
// / | ||l |ト、ヽ \ \ ヽ !
// /l | || ヽ ヽ\>┼\ ヽヽ |
|| | | | |」十 ヽ ヽ ヾィ¬ミヾ | 川|
lハ | | | トxrテミ ├1:::リ}| |}}リト〉
ヽ !トlハ {{ ヒハ ヽニソ | レ1∧|
ヽV八ハ ゞ┘ , "" | | || {
// /jハ "" 一 , イ /| l| ハ リテラです。
// // / /`丶 、 __/ ||/l| /l| | ヽ
// /// | / |川r┤ |//|/ || | | ヽ
/ ///川レ┬ '" / /|ハ| >┬L|ヽ !
./ / // / | || | /ヽ ァ'´ ||_メ/ /⌒ヽ}}
/ // /レ7 」 || ヽ | / __乂レ'´ / _ヽ
/ / /ハ/ |  ̄\」 /r‐ '´ ̄ } \/ トミヘ
/ / / // }‐ ¬厂!'´ ヽ/ }} \ハ
|/ / //| / _L」 | / , -------- ヘ
|| 〃/〈 | |厂 //个、`ー、 / //
0360デフォルトの名無しさん
2006/01/15(日) 15:05:38/ / / | \ ヽ
/ / / / / || | i ヽ i
i / / / / / / || || |│ |ノス
|// / /___, -一ァ| /! |ト、|│ | | く」
|,-‐¬  ̄---┘'7 |! ハ! |,、-┼十|! | | |
, -‐ ''" し' '´_ /,ィ二l |ト、/!ヽト、\_ヽ!|!l | ハ |
,r/ __ ,イ|リ ヾハ! ヽ! ,ィ⌒ヾミリノ!/リ |
/ ||ヽ -' / ̄ )` __ |ヒノ:} '` ,イ/ | |
,r ' ヾ、 ,-、____ , イ ̄,r==- ==-' レ' /| |
/ ヽ `ーソ ' | |ト、,ヘ ′"" "" / / || |
. / \_ / | ハ ヽ`゙'ヘ ' '__. ィ / / | | |
/ / / | ヽ 川\ ヾ三ニ‐'′//! | | | | 妹のクレアです!!
/ / / 八 \川| |`ト- .. __ , イ‐ァヘ | | || |!
/ / / / \ \ 「`ー- 、 / .〉 ト、| ヽ、
,イ /-─=¬ニヘ、_ \ 厂\ 厂ヽ /!| | `ー=ヘ
-‐  ̄ /─ '  ̄ ├- ヽ\ \ノ\ \ 人 ハ!ヽ || |-┤ ヽ
/ /!‐-- | |\ ト、_`ヽ oヽ ト、! || |‐┤- ヽ
// 〉 __ / ├‐- || | 川-‐ | | 厂7! ハ! ├:┤  ̄ヽ
/ / ー ─  ̄ ├‐- リ || ハ!ヘ | | ト┤|/′ ヾ,┤ ゙i_
‐ ' 〉‐- | / /\ .|o | /ヽ/(′ ∨ \
‐--─ ──-r、___-、 /ー_ {( '´>、! /ヽ/ |\ \
0362デフォルトの名無しさん
2006/01/15(日) 18:41:570363デフォルトの名無しさん
2006/01/15(日) 18:42:250365デフォルトの名無しさん
2006/01/15(日) 18:48:01ワロスw
0366デフォルトの名無しさん
2006/01/15(日) 18:50:190367デフォルトの名無しさん
2006/01/15(日) 18:50:50お前にはがっかりだ
0368デフォルトの名無しさん
2006/01/15(日) 18:51:33・・・
0369デフォルトの名無しさん
2006/01/15(日) 18:54:37l l l
l l l
,. ‐'' ̄ "'' 、 ,,. --‐┴─-- 、 / ̄ "'' -、
/ ,.-‐''"´ \ _/ ヽ
l / ヽ l
l / ● l l
ヽ l (_人__ノ ● ヽ / そんな事言われても
,,>-‐| ´´ | / , , ,. ‐'' ̄ "' -、/ ウチ ポン・デ・ライオンやし
/ l ヽ_/ / ゙ヽ ところで >>359-360 おはつです
l ` 、 l l 可愛いなぁ 連絡先交換せーへん?
l ,. ‐'' ̄ "' -、 ,. ‐'' ̄ "'' -、 l
l, / ヽ / ヽ, /
ヽ、,, l l l,,,___,,,/
"'''l l l
ヽ /ヽ /
ヽ,___,,,/ ヽ,,___,,,/
/ |
/ |
0371デフォルトの名無しさん
2006/01/15(日) 18:57:160372デフォルトの名無しさん
2006/01/15(日) 19:01:500374デフォルトの名無しさん
2006/01/15(日) 19:13:110375デフォルトの名無しさん
2006/01/15(日) 19:21:510376デフォルトの名無しさん
2006/01/15(日) 19:25:320377デフォルトの名無しさん
2006/01/15(日) 20:11:27そのまま横に読めばいいんだよ。
つまり、
マルカイミォナピボルエー
0378デフォルトの名無しさん
2006/01/15(日) 20:30:33どのファイルをインクルドーしたらいいのでつか?
0379デフォルトの名無しさん
2006/01/15(日) 20:32:23お好きにドウゾ。
突っ込む気にもなれない
0380デフォルトの名無しさん
2006/01/15(日) 20:36:300381デフォルトの名無しさん
2006/01/15(日) 20:47:17P・・・パソコンで
I・・・生きている
0382デフォルトの名無しさん
2006/01/15(日) 20:50:470383デフォルトの名無しさん
2006/01/15(日) 20:53:50/ ,、 -‐ ''"´;: ; ヽ
/ / ,、‐''"´´ ;: ;;`ヽ
/ (/ ,、-‐''"´´ _, ,丶 そおおおんあわけねええだろぉ?
i (ゝ /, , 、ー''"、´ _ヽ
| /'''_ー-<___, -'´ lー''"ノ ヽ. , へ、 _
、 'l { `ヽ;ー-、-,ー‐,r''1 ; ;ヽ<''ヘ ヽー---‐'''"""""
r、 iヽ ヽ' `' .|、 ,. | |
{λヽ.ヽ ,,ソ ヽ-' t' __ノ ,______
\ゝ、iヽー '`ー'''`1´ ~ヽ、、、/~  ̄ ̄,~"=
、‐'''''ヽ `'ヘ.',ヽ , 、 { ,、- '´
/ \ ヾ ヽ⌒ヽ ヽ { , ‐、_ /
. | ゛‐-ー'.,!\\__ `ヽ. ,、 / `'´ ,
、 / / | \ \゛、ー'>' ノrー' ´ | , /
r; / / |\,_\ `""´r''| ト、 | | /
i / | フ 丶、___ノヽ. |/ / /
rヽ\ ( | ,ヘ | | ヽ \ ‖/ /
0384デフォルトの名無しさん
2006/01/15(日) 21:27:54GetFileAttributes()を使用してみたのですが、
FDドライブやCD-ROMドライブを指定された際、
FDやCDが入っていないと、キャンセル、再実行、続行の選択の
メッセージボックスが表示されていまいます。
メッセージボックスを表示させずに、属性を取得する方法はないでしょうか?
0385デフォルトの名無しさん
2006/01/15(日) 21:33:14SetErrorMode(SEM_FAILCRITICALERRORS);
0386デフォルトの名無しさん
2006/01/15(日) 21:50:11ありがとうございます。
0387デフォルトの名無しさん
2006/01/15(日) 23:13:30試してみんと分からんけど、
PathIsDirectory
という関数もある。
0388デフォルトの名無しさん
2006/01/15(日) 23:24:18HDDであることを確認してから読みに行くとか駄目なのかな?
0389・∀・)っ-○●◎- ◆Pu/ODYSSEY
2006/01/15(日) 23:28:420390デフォルトの名無しさん
2006/01/15(日) 23:29:52ありがとうございます。明日、そちらも試してみます。
(開発環境が会社にしかないので)
>>388
ユーザに指定されたパス(FDDやCD-ROMドライブも含む)から読み込んで・・・
という処理の流れになるので、HD上だけが対象じゃないんです。
0391デフォルトの名無しさん
2006/01/16(月) 04:43:530392デフォルトの名無しさん
2006/01/16(月) 04:46:440393デフォルトの名無しさん
2006/01/16(月) 05:45:100394デフォルトの名無しさん
2006/01/16(月) 06:00:19>>381と答えるでしょうwww
0395デフォルトの名無しさん
2006/01/16(月) 06:14:550396デフォルトの名無しさん
2006/01/16(月) 06:38:56P ぱいぱい
I いじらせて
0397デフォルトの名無しさん
2006/01/16(月) 06:44:300398デフォルトの名無しさん
2006/01/16(月) 06:48:030399デフォルトの名無しさん
2006/01/16(月) 06:51:290400デフォルトの名無しさん
2006/01/16(月) 07:12:39送り先プロセスでは使えないからムダ。32bitに収まる値のみちゃんと渡せる
・・・って認識でOKですか?
またこれに関連し、「他プロセスに数十文字程度の文字列を渡したい」って思った時に
使うべきワザについて今調べています。
・メモリマップトファイルなる人 (使用経験なし)
・クリップボード
以外にもっと適切なワザはあったりするのでしょうか?キーワードだけで良いので
御教示頂けないでしょうか?
0401デフォルトの名無しさん
2006/01/16(月) 07:21:220402デフォルトの名無しさん
2006/01/16(月) 07:48:290403デフォルトの名無しさん
2006/01/16(月) 08:40:390404デフォルトの名無しさん
2006/01/16(月) 10:10:44WM_KEYDOWNが発生した際にどっちのキーボードが操作されたのか判定する方法ってありますか?
0405デフォルトの名無しさん
2006/01/16(月) 11:43:02オレは何でそんなことをする必要があるのか問い詰めたい。
0406デフォルトの名無しさん
2006/01/16(月) 11:47:33つGlobalAddAtom
0407デフォルトの名無しさん
2006/01/16(月) 12:27:55アトムからそのアトムが持っている
文字列の長さを知る方法は無い?
0408デフォルトの名無しさん
2006/01/16(月) 12:47:20もひとつオマケに
named pipe
さらにオマケで
DLLでメモリ共有
個人的には、
小さなデータ:WM_COPYDATA
大きなデータ:メモリマップドファイル+PostMessageで通知
をよく使う。
0409デフォルトの名無しさん
2006/01/16(月) 14:34:33他にもメールスロットやソケットと言う手もある。
0410デフォルトの名無しさん
2006/01/16(月) 15:43:52あります。
0411デフォルトの名無しさん
2006/01/16(月) 15:52:59or
意地悪ですね。
0412404
2006/01/16(月) 16:10:190413デフォルトの名無しさん
2006/01/16(月) 16:59:13質問した者ですが、レジストリを直接変更しても設定が即座には反映
されませんでした(あたりまえか)。
設定値を変更した後に何か行なう必要があるんでしょうか?。
それともやはり何か簡単に変更できるAPIが存在するのでしょうか?。
■変更した部分
\HKEY_CURRENT_USER\Control Panel\Cursor の各値
0414デフォルトの名無しさん
2006/01/16(月) 17:04:32SetSystemCursor?
0415デフォルトの名無しさん
2006/01/16(月) 17:12:03それだとマウスのプロパティにある「デザイン」は変わりませんよね。
「デザイン名」でズバッと変更できそうな気もするんですが・・・。
0416デフォルトの名無しさん
2006/01/16(月) 17:13:59適当なこと言ってみるけど、デスクトップテーマ関係の
APIがあったと思うから、そこでいじれるんじゃない?
0417デフォルトの名無しさん
2006/01/16(月) 17:32:11あるにはあるが・・・・・
趣味で作っているプログラムならあきらめろ。
仕事で作っているプログラムでどうしても必要というなら、
「i8042.sys・kbdHid.sysとkbdclass.sysの間に入れてどちらのキーボードからのIRPかを
アプリに通知するfilter-driver」を作成できる(デバドラのスキルを持つ)システムハウスを
探して依頼しろ。
filter-driverは少なくとも下げ進行のスレの雰囲気も読めない教えてクンに作れるシロモノではない。
0418デフォルトの名無しさん
2006/01/16(月) 17:40:26なるほど、作ってみますね
ちょうど大学で研究してるところなんですよ。
それを応用すれば、なんとかなりそうです。
親切に教えてくれてありがとうです。
0419デフォルトの名無しさん
2006/01/16(月) 17:45:49Raw Input APIはどう?XP限定で。
GetRawInputDeviceList()でデバイスを列挙しておいて
WM_INPUTで判別するような手順になりそうだが。
0420413
2006/01/16(月) 19:03:30マウスのデザインを保存すると
HKEY_CURRENT_USER\Control Panel\Cursors\Schemes
に設定が保存されるんですが、Windowsはこの値を取得し、
パースして SetSystemCursor でカーソルを変更して HKEY_
CURRENT_USER\Control Panel\Cursors にも値を設定する
などという面倒な事はやってないと思うんですが・・・。
やっぱデスクトップテーマ関連なんでしょうか・・・。。
0421デフォルトの名無しさん
2006/01/16(月) 19:19:50WIN16から連綿と続く互換性の為に、有名なWM_系メッセージは
Windows側でマーシャリングしてくれたはず。
0422デフォルトの名無しさん
2006/01/16(月) 19:21:470423400
2006/01/16(月) 19:47:34>>402
>>403
>>406
>>408
>>409
みなさま、色々と本当にありがとうございます。勉強になります。
これから詳細を調べてみます
0424デフォルトの名無しさん
2006/01/16(月) 19:52:09WM_KEYDOWNなんかに頼らず、はなからDirectInput使ったらよくね?
0425デフォルトの名無しさん
2006/01/16(月) 20:48:440426デフォルトの名無しさん
2006/01/16(月) 20:52:14おれもDirectInput使えばいいと思ったんだけど?
0427デフォルトの名無しさん
2006/01/16(月) 20:53:360428デフォルトの名無しさん
2006/01/16(月) 21:02:21詳しく
0429デフォルトの名無しさん
2006/01/16(月) 21:15:17俺もそう思う。
DirectInputの使い方を知ってるなら、だけどね。
0430デフォルトの名無しさん
2006/01/16(月) 21:16:26>>424, 426な OTL
0431デフォルトの名無しさん
2006/01/16(月) 21:59:26キミたちはそれでやっておけば良いと思うよ、それがお似合いだ。すごく似合ってる
0432デフォルトの名無しさん
2006/01/16(月) 23:27:29LVITEM pItem;
TCHAR Buf[256];
for(i = 0; i < NumItem; i++) {
pItem.mask = LVIF_TEXT;
pItem.iItem = i;
pItem.iSubItem = 0;
pItem.pszText = (LPSTR)Buf;
pItem.cchTextMax = sizeof(Buf);
::SendMessage(hw, LVM_GETITEM, 0, (LPARAM)(&pItem));
TRACE(Buf);
}
このように書いたのですがSendMessage関数の返値が0のままで取得できません。
ハンドルとかちゃんと取得できてるんですが、何か指摘お願いします。
0433――――v――――――――――――――――
2006/01/16(月) 23:28:35ミ ,,、,、,、,、,、,、,、、 彡
l i''" u u i
| 」 u ⌒' '⌒ |
,r-/ <。> < ゚ >|
l u ノ( 、_, )ヽu|
ー' ノ、__!!_,.、|
| | | |
| | | |
∧ u ヽニニソ l
/\ヽ u u /
/ ヽ. `ー--一' ノ/ヽ
0434デフォルトの名無しさん
2006/01/16(月) 23:43:56本題とは全く関係ないけど、次のところをつっこむ。
1. ポインタ型でない変数の名前の頭にpを付けている。
2. C++ではforでループ変数を宣言するのが極めて一般的。(::を使っていることからC++と見受けられる)
3. TCHARの配列をLVITEMのメンバpszTextに代入するのにキャストは不要。
しかもLVITEMのメンバpszTextの型はLPSTRではないのでかえって害。
4. LPARAMへはC++的にはreinterpret_castだろうな。これだけは好みの問題だろうけど。
0435デフォルトの名無しさん
2006/01/17(火) 00:09:490436デフォルトの名無しさん
2006/01/17(火) 00:21:06GetModuleFileName(NULL,
0437デフォルトの名無しさん
2006/01/17(火) 00:40:31hwがあさってのウィンドウになってんじゃない?
あと、pItem.cchTextMax = sizeof(Buf)/sizeof(TCHAR); じゃん?
ListView_GetItemText() はどうよ?
0438デフォルトの名無しさん
2006/01/17(火) 00:42:18それはないかw
0439432
2006/01/17(火) 00:47:19違うプロセスのコントロールを参照してました。
いったんWriteProcessMemoryでそのプロセス内に書いてからReadProcessMemory
で読んだらいけました。
バカな質問に付き合ってもらってホントにすみませんでした。
0440デフォルトの名無しさん
2006/01/17(火) 01:06:43ありがとうございます。
0441デフォルトの名無しさん
2006/01/17(火) 01:08:00カーネルを介するプロセス間通信とmmap系のものと。
0442デフォルトの名無しさん
2006/01/17(火) 01:12:28メモリマップドファイル
VirtualAllocEx
名前付きパイプ
メールスロット
WM_COPYDATA
グローバルアトム
DLLでの共有セグメント
(WM_SETTEXT)
あと、COMもプロセス間通信できているよな。
0443デフォルトの名無しさん
2006/01/17(火) 01:31:270444デフォルトの名無しさん
2006/01/17(火) 01:43:240445デフォルトの名無しさん
2006/01/17(火) 06:59:28STDとVIEW以外でなんか無いでしょうか。
更新、拡大、縮小があればいいなと思うんですが。
0446デフォルトの名無しさん
2006/01/17(火) 09:55:55名前無しパイプとソケットも結構使うと思う。
0447デフォルトの名無しさん
2006/01/17(火) 14:28:17RPC自体は名前付きパイプ、NetBIOS、Socketで実装されてるとさ。
0448デフォルトの名無しさん
2006/01/17(火) 20:33:54現在ブラウザからActiveXを介してローカルのEXEを起動するシステムを考えています。
いくつかのサイトを調査しました。その中でハ○ゲームのゲームインストーラの動作
を見ていて、よく分かりません。
ActiveX としては C:\WINDOWS\Downloaded Program Files\HgPlugiXJP21 Classとして
ダウンロードされています。
サイトからダウンローダーを起動しているHTMLは以下の通りでした。
location.href = "hangXme://http://gamestring.hangXme.co.jp:10000/?k22e..なんちゃら";
試しに【ファイルを指定して実行】で hangXme: と実行してみると、該当EXEが起
動します。これはプロトコルとして登録されているのでしょうか?よく分からないので
すが rundll32.exe msconf.dll とかが関係しているのでしょうか?
ちなみに 「ファイルの関連付け」としてはレジストリに以下が設定されています。
HKEY_CLASS_ROOT\HanGXme\Shell\Open\Command
値:C:\WINDOWS\Downloaded Program Files\HGStartXJP21.exe %1
で、hangXame: を実行するとHGStartXJP21.exeが起動します。
この辺の仕組みが分かりません。よろしくご教授下さい.
0449デフォルトの名無しさん
2006/01/17(火) 20:39:460450デフォルトの名無しさん
2006/01/17(火) 20:46:58なんでわざわざ伏字なの?
0451デフォルトの名無しさん
2006/01/17(火) 20:51:53べりサインの証明書をつければ問題ないと思うのですが...
確かにユーザーとしては不安な面もあるような気もしますが、ダウンロード元を信用してActiveXを
起動する訳ですから。
それが信用できないとなると、一般のソフトウェアも使えないという事になるのでは?
一般のソフトウェアだって、悪意があればローカルな情報を送信できる訳ですから。
0452デフォルトの名無しさん
2006/01/17(火) 20:54:29ありがとうございます。勉強してみます。
伏字にしないとまずいかなぁと思ったものですから...
0453デフォルトの名無しさん
2006/01/17(火) 21:30:110454デフォルトの名無しさん
2006/01/17(火) 21:31:180455432
2006/01/17(火) 21:38:43次のコードだと、SendMessageが失敗を返してきます。
メモリの確保まではいってるんですが、何かアドバイス願います。
LVITEM lvItem;
LRESULT lResult = FALSE;
DWORD dwProcessId = 0;
HANDLE hProcess;
i iItem = 3;
ZeroMemory(&lvItem, sizeof(LVITEM));
lvItem.mask = LVIF_STATE;
lvItem.state = LVIS_SELECTED;
lvItem.iItem = iItem;
lvItem.iSubItem = 0;
lvItem.stateMask = LVIS_SELECTED;
GetWindowThreadProcessId(hListView, &dwProcessId);
hProcess = OpenProcess( PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE, FALSE, dwProcessId);
if ( hProcess ) {
LVITEM *pvlvi = (LVITEM *)VirtualAllocEx(hProcess, NULL, sizeof(LVITEM), MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
::WriteProcessMemory(hProcess, pvlvi, &lvItem, sizeof(LVITEM), NULL);
lResult = (int)::SendMessage(hListView, LVM_SETITEM, 0, (LPARAM)pvlvi);
0456デフォルトの名無しさん
2006/01/17(火) 21:58:190457432
2006/01/17(火) 22:03:11書いてなくてすみません。
hListViewはちょっと上で取得してます。
同コントロールのアイテム名は読めてるんで、正しいものが入ってると思います。
0458デフォルトの名無しさん
2006/01/17(火) 22:09:47ガッ
0459デフォルトの名無しさん
2006/01/17(火) 23:08:35lvItem.pszTextのアドレスが指定されていない
0460デフォルトの名無しさん
2006/01/17(火) 23:14:24SendMessageの戻り値をキャストする必要はない。
0461デフォルトの名無しさん
2006/01/17(火) 23:28:36なぜSendMessageの戻り値をintにキャストしてるんだろ
0462デフォルトの名無しさん
2006/01/17(火) 23:33:02Windows NT/2000 用の VirtualAllocEx() と WriteProcessMemory() / ReadProcessMemory() 〜
のようにやってみたらどうかな
0463432
2006/01/18(水) 00:34:18やっぱりだめみたいです。
リストビューを持つ他のアプリケーションやListView_SetItemState(...も試してみましたが
なぜかstateの変更だけがうまくいきません。削除や色の変更はできるのに。
別のWindowsXPSP2 proを使ってます。もう一台XPSP2 homeのマシーンでもできませんでした。
他のプロセスのstateはいじれないようになってるんでしょうか。
0464462
2006/01/18(水) 00:49:59LVM_SETITEMするものを付け加えて実行してみたらデスクトップのアイテム全部選択されたけど、
>>432 のOSはなに? きちんとさっきのページのとおりやってみた?
0465462
2006/01/18(水) 00:50:570466462
2006/01/18(水) 00:52:000467462
2006/01/18(水) 00:59:36そのアプリの名前は教えられないの?
0468432
2006/01/18(水) 01:08:45いくつかのアプリで試してみたんですが、
デスクトップ(エクスプローラ)は試してないんで
「共有メモリを利用するには?」のところのをコピペしてやってみます。
0469デフォルトの名無しさん
2006/01/18(水) 01:34:05pLocalShared->mask = LVIF_STATE;
pLocalShared->iSubItem = 0;
pLocalShared->state = LVIS_SELECTED;
pLocalShared->stateMask= LVIS_SELECTED;
...
forループ内
::SendMessage(hSysWnd, LVM_SETITEM, 0, (LPARAM)pSysShared);
0470デフォルトの名無しさん
2006/01/18(水) 01:40:32pLocalShared->mask = LVIF_STATE;
pLocalShared->iSubItem = 0;
pLocalShared->state = LVIS_SELECTED;
pLocalShared->stateMask = LVIS_SELECTED;
// アイテムの状態をセット
for (int i = 0; i < nCount; i++)
{
pLocalShared->iItem = i;
WriteProcessMemory(hProcess, pSysShared, pLocalShared, dwSize, &dwNumberOfBytes);
SendMessage(hSysWnd, LVM_SETITEM, 0, (LPARAM)pSysShared);
}
0471デフォルトの名無しさん
2006/01/18(水) 01:55:10クソ!一生いかねー。
ドメイン0.0.0.0で登録しといた。
これでよし。だよな?
0472デフォルトの名無しさん
2006/01/18(水) 01:58:420473デフォルトの名無しさん
2006/01/18(水) 02:29:480474デフォルトの名無しさん
2006/01/18(水) 03:37:27まずCreateMutex関数でオブジェクトを作成しますよね。
この関数の戻り値はオブジェクトに対するハンドルでして、プログラムは明示的にこのハンドルを閉じるには
CloseHandleにより閉じるとあります。
ですが例えばペンやブラシのオブジェクトの場合
DeleteObjectで明示的にオブジェクトを削除しなければいけないのですが
このミューテックス及びセマフォの様なオブジェクトはどういうタイミングでオブジェクトが削除されてるのでしょうか。
あんまし理解してなくてすいませんorz
0475デフォルトの名無しさん
2006/01/18(水) 03:44:23CloseHandleすれば、削除されます。
厳密に即時削除されるかは定かではないけれど。
0476デフォルトの名無しさん
2006/01/18(水) 03:57:42まず初回に一意のミューテックスを作成しますよね。
ミューテックスの名称をTEXT("hoge")とでもしておきましょうか
そして後続のプロセスもTEXT("hoge")をCreateMutex関数にて作成しようとした場合
既にTEXT("hoge")のミューテックスオブジェクトは存在するのだから、そのオブジェクトのハンドルが返ってきます。
そしてプロセスが終了する時、又は明示的にCloseHandleを実行するとオブジェクトは破棄されるとありますが、
ミューテックスオブジェクトの所有権を取り合ってるプロセスが複数あるとして、そのうちの一つのプロセスを終了する場合
このミューテックスオブジェクトが破棄されてはまずいですよね
破棄されるならば所有権を取り合ってるプロセスが0個の時であるべきです。
このような時でもWindowsは自動的にオブジェクトを削除するタイミングを図っているのでしょうか
0477デフォルトの名無しさん
2006/01/18(水) 04:00:590478デフォルトの名無しさん
2006/01/18(水) 04:07:32ヒント:参照カウント
0479デフォルトの名無しさん
2006/01/18(水) 04:25:34有難うございます。
キーワードにより検索してみます
0480デフォルトの名無しさん
2006/01/18(水) 06:18:15オーナードローとか使ってて、LVITEMのstateではない
内部のメモリを参照して選択描画をしているとか。
0481デフォルトの名無しさん
2006/01/18(水) 09:06:34くわしく
0482デフォルトの名無しさん
2006/01/18(水) 10:33:11検知されるような糞プログラムってわけか?
0483デフォルトの名無しさん
2006/01/18(水) 11:12:48どの様にすればいいのでしょうか
対象となるウィンドウは解説サイトで取り上げられるような極普通のカスタムウィンドウです。
全然思いつかないのでそこら辺を取り上げてるサイトがあれば嬉しいのですが・・・
0484デフォルトの名無しさん
2006/01/18(水) 11:23:390485デフォルトの名無しさん
2006/01/18(水) 11:23:49ウィンドウを作成するときに、WS_THICKFRAMEを指定しない
WS_OVERLAPPEDWINDOWとかは、
WS_THICKFRAMEを含んでるんで、要注意
0486デフォルトの名無しさん
2006/01/18(水) 11:35:560487デフォルトの名無しさん
2006/01/18(水) 11:37:47(WS_OVERLAPPEDWINDOW | WS_VISIBLE) ^ WS_THICKFRAMEとした所
見事境界がなくなり、システムメニューの"サイズ変更"も無効になっていました。
ありがとうございます。ちょっと強くなった気分(*´Д`)
>>484
読ませていただきます
0488デフォルトの名無しさん
2006/01/18(水) 11:44:380490デフォルトの名無しさん
2006/01/18(水) 11:57:58WM_GETMINMAXINFO
0491デフォルトの名無しさん
2006/01/18(水) 12:00:37WM_GETMANKOINFO
0492デフォルトの名無しさん
2006/01/18(水) 12:54:53はい。ここで間違いありませんw
0493デフォルトの名無しさん
2006/01/18(水) 13:38:33もうやってられません。WinAPIは永久に不滅です。
0494デフォルトの名無しさん
2006/01/18(水) 14:11:38頭痛が痛いみたいなもんで
0495デフォルトの名無しさん
2006/01/18(水) 14:29:070496デフォルトの名無しさん
2006/01/18(水) 14:30:54いいじゃまいか
永遠に不滅です!!って誰か言ってた品
0497デフォルトの名無しさん
2006/01/18(水) 15:05:24(^ω^ ):「狐うどんと狐そば、どっち喰う?」
(゚д゚):「おれ、狐そばがいい。。。おれは狐そばがい…」(^ω^#):「一回言えばわかるお」
みたいなイライラを感じずにはいられない
0498デフォルトの名無しさん
2006/01/18(水) 15:08:05ウィンドウAで閉じる動作があった時、
ウィンドウBも閉じたいのでWM_CLOSE、WM_QUIT
などを送った所、閉じられはするのですが、
Ctrl + Alt + Deleteで見て見ると、残骸が残っているようです。
ここら辺に詳しい方がおられましたら、問題点などを教えてください。
0499デフォルトの名無しさん
2006/01/18(水) 15:41:14> 問題点などを教えてください。
・調査の仕方
・質問の仕方
に問題ありと思われ。
0500デフォルトの名無しさん
2006/01/18(水) 15:54:52BOOL b1 = func1();
bool b2 = func2();
if ( (b1 && b2) || ! (b1 || b2) ) {
// 処理
}
とあったんですが、これって
if( b1 && b2 ) {}
ではダメなのかな?と素人目に疑問が浮かびました…
上記の対処法の意図が分かりますでしょうか?
0501デフォルトの名無しさん
2006/01/18(水) 15:59:08どうみてもWin32API関係ありません
どうみてもそれじゃダメです
本当にありがとうございました
0502500
2006/01/18(水) 16:00:18ついでながらどうしてダメなのが教えてもらえませんか?
0503デフォルトの名無しさん
2006/01/18(水) 16:01:12の時の事、考えてあげて下さい
0504500
2006/01/18(水) 16:09:46b1=0で抜けるんじゃないんですか?
それともFALSEの定義の問題でしょうか…?
0505デフォルトの名無しさん
2006/01/18(水) 16:15:23どちらも偽でも、通るように書かれてる
とあるサイトとやらが勘違いしてるのか、
藻前さんが何か勘違いしてるのかは知らないけど
>if ( (b1 && b2) || ! (b1 || b2) )
と
>if( b1 && b2 )
は別物だよってこと
0506505 スレ違い申し訳ない
2006/01/18(水) 16:23:21>if( b1 && b2 )
このふたつの違いは分かるんです、でも「どちらも真の場合の判定」ですので、
>>505さんがおっしゃったように
>if ( (b1 && b2) || ! (b1 || b2) )
ではダメなんじゃないかな?と思った次第です…
0507506
2006/01/18(水) 16:24:210508デフォルトの名無しさん
2006/01/18(水) 16:27:58ありがとうございます。
0509デフォルトの名無しさん
2006/01/18(水) 16:50:49本当に「双方真の場合の判定」と書いてあるのか?
だとするなら、それじゃダメだと思ったおまいが正しい
0510デフォルトの名無しさん
2006/01/18(水) 16:50:53そのサイト晒してみ
0511500
2006/01/18(水) 16:57:45のサイトなのですが・・・
BOOL型とbool型を==を使って判定してはならない、という事までは分かります
ですが最後の対処法が前レスで挙げた形になっているのです
もし私のとんでもない勘違いなら謹んで反省します
0512デフォルトの名無しさん
2006/01/18(水) 16:59:29「オレはドモルガンの法則知ってるぜ」って自慢したくて
そんな風に書いたんじゃないの
まぁ間違ってるんだけど
0513デフォルトの名無しさん
2006/01/18(水) 17:01:32文章の流れが不味いのは間違いないんだけど、
「安全な一致判定は、下記の通りに」って書いてあるじゃん。
「どちらも真」のコードだとは書いてない。
0514デフォルトの名無しさん
2006/01/18(水) 17:02:13そのサイトでは一致判定の方法を書いてるんであって
両方とも真の判定を行ってるわけじゃない
よって、お前が悪い
0515500
2006/01/18(水) 17:04:17ということは先のコードで一致判定ができるということですね?むむむ…むずかしい
スレ違いすみませんでした
0516デフォルトの名無しさん
2006/01/18(水) 17:04:58bool b2 = func2();
としたとき、同じ結果である場合の判定は
if (b1 == b2) {
// 処理
}
は誤りで
if ( (b1 && b2) || ! (b1 || b2) ) {
// 処理
}
が正しい。
サイトの記述通り。もう一度熟読すべし。
0517デフォルトの名無しさん
2006/01/18(水) 17:14:410518デフォルトの名無しさん
2006/01/18(水) 17:29:55xmlでurlを指定するとblogshot.netのようなスクリーンショットの
画像を返すようなプログラムをwindowsで作りたいのだが、
どこから調べればよいですか?
ちなみにlinuxでcは書いたことはあるが、
windowsでのプログラムはほとんど経験なし。
よろしく。
0519デフォルトの名無しさん
2006/01/18(水) 17:37:57まあ頑張ってくれ
APIで何か疑問があったらまた鯉
0520デフォルトの名無しさん
2006/01/18(水) 17:56:280521デフォルトの名無しさん
2006/01/18(水) 18:02:240522デフォルトの名無しさん
2006/01/18(水) 18:40:53初めて知ったよ。
ていうかさ、ちょっとしたバックアップツール(差分コピー付)を
作ってたのよ。
バックアップ先に同名ファイルがあったら、退避するようにして。
で、まあ、当然日本語ファイル名は考慮するから、
コピー先に同名のファイルが存在しているかは、_mbsicmp()とかにするよな。
最初はこれ(_mbsicmp)が全角の"A"と"a"を同一視すると困ると思って試してみたけど
どうやらちゃんと区別してるっぽい(bcc55)。
で、動作確認のために、
"A.txt" を "a.txt" が存在するディレクトリにコピーしようとすると、
CopyFile()が失敗。
まさかと思ってエクスプローラでも確認したら
ちゃんと上書き確認が出やがる。
もしかして、Unicode版のAPIと_wcscmp()を使えば大丈夫か、と思って
_wcscmpの動作を調べたら、
"A"と"a"は区別するくせに、"a"と"a"を同一視しやがる。
使えねー。
結局、自分で「同一ファイル名か確認する」コードを書くのが良いのかね?
部分比較(strncmp)もしたいし
オリジナルのファイル名は尊重したいから、全部小文字に直すのは嫌だし。
比較のときだけ小文字に直す手もあるけれど。
0523デフォルトの名無しさん
2006/01/18(水) 19:00:360524デフォルトの名無しさん
2006/01/18(水) 19:19:560525522
2006/01/18(水) 19:22:40Pathxxxとかざっと見渡しても、良さそうなのが見つからないんだけど。
やりたいことは、バックアップと同期。そのために、
・ターゲット側に同一ファイル名となるファイルが存在するかを確認
ファイルが存在する場合
そのままそのファイルに追記
ファイル名を生かしたまま、別ディレクトリに移動
・コピー元側に存在しないファイルがターゲット側に存在するか確認
存在したら、別ディレクトリに移動
という感じ。
同名とみなせるファイルがターゲット側に存在するかどうかを確認するだけなら
(実際にファイルシステムにアクセスするAPIを使えば)簡単なんだけど、
コピー元側のファイル1つ毎にOSを呼び出した上、
ターゲット側のファイルについても、
それぞれ毎回OS(ファイルシステム)にアクセスする必要があるよね?
FindFirstFile()で一覧を取って、サイズやタイムスタンプで
コピーする必要が無いときは何もしないようにしたいから
出来ればファイル毎に呼び出す形にはしたく無いんだけど。
さすがに毎回ディスクアクセスはしないとは思うけどさ。
で、FindFirstFileで取った"A.txt"と"a.txt"という名前を、
「同じファイル名である」と判定したいのですよ。
0526デフォルトの名無しさん
2006/01/18(水) 19:36:530527デフォルトの名無しさん
2006/01/18(水) 20:20:230528デフォルトの名無しさん
2006/01/18(水) 20:27:09::CompareString()をNORM_IGNOREKANATYPEとNORM_IGNOREWIDTHで
使うとか。
0529528
2006/01/18(水) 20:28:090530デフォルトの名無しさん
2006/01/18(水) 20:30:20Win2Kからは区別されなくなったんだよな。NT4はどうだったかな?
0531522
2006/01/18(水) 20:57:02>>528-529の方法(LOCALE_SYSTEM_DEFAULT, NORM_IGNORECASE)で出来るっぽい。
と思ったら、>>530ですか。。。
0532522
2006/01/18(水) 21:01:38もしOSだとしたら、9xで"A.txt"と"a.txt"の両方を(FATに)作って
そのディスクを2Kで読んだらどうなるんだろう?
とりあえず、適当にFATの領域を作って、
「2K+FAT」の環境での動作から確認してみよう。
0533デフォルトの名無しさん
2006/01/18(水) 21:06:080534デフォルトの名無しさん
2006/01/18(水) 21:18:52これ、初めて知った。(2K/XPでも全角a/Aは区別されると思ってた。)
で、実験君。
98で"A.txt" と "a.txt"をFAT32に作成し、このHDDをXPに接続。
DIRすると"A.txt" と "a.txt"の両方が見えるが、エディタで"a.txt"を開こうと
すると実際に開かれるのは"A.txt"。
"A.txt"を削除すると、"a.txt"が開けるようになる。
既に納品済みのもので、これでトラブりそうなのがある・・・・・
0535522
2006/01/18(水) 21:31:35区別する/しないはOSの動作で、
FAT上に両方あると、NT系では一覧では見えるけど開けないってことか。
っていうか、やっぱ知らなかった人、俺だけじゃないよね。
俺も別扱いするものだとばかり思っていたから。
>>530の、9xでは区別しなかったって聞いて、
そう思い込んでいた理由も納得した。
0536デフォルトの名無しさん
2006/01/18(水) 22:14:26検出する方法ってありますか?
ロックする方法はわかったんですが、状態を検出する方法がわかりません…。
0537デフォルトの名無しさん
2006/01/18(水) 23:30:580539デフォルトの名無しさん
2006/01/19(木) 00:10:460540デフォルトの名無しさん
2006/01/19(木) 00:21:38好きに汁
0541デフォルトの名無しさん
2006/01/19(木) 00:36:35DLL内部の関数をGetProcAddress()で取得後、そのDLL内関数を実行しました。
処理終了後、FreeLibrary()でLoadLibrary()の戻り値を渡したんですが、
その際に、関数内で宣言しておいた260バイトのchar配列の先頭エリア4バイトの
内容が破壊されていまいます。
なにか使い方が間違っているんでしょうか?
心当たりのある方いらっしゃいますか?
XPpro SP2、VisualStudio.NET2003です。
0542デフォルトの名無しさん
2006/01/19(木) 00:42:25>>541がエスパーをご所望だ
0543デフォルトの名無しさん
2006/01/19(木) 00:51:12_stdcall とか _cdeclがらみ、と透視。
0544デフォルトの名無しさん
2006/01/19(木) 01:04:120545デフォルトの名無しさん
2006/01/19(木) 01:08:33int AAAA(char *pszSrcPath, char *pszLzhFilePath)
{
HINSTANCE hXXXX;
PFUNC pcsFunc;
int iResult;
char *pszHomeDir;
char szHomeDir[MAX_PATH];
char *pszLastSep;
// カレントディレクトリ取得
pszHomeDir = getcwd(szHomeDir, MAX_PATH);
strcpy(szParentDir, "D:\\TEMP");
// 対象データが存在するディレクトリに移動する
chdir(szParentDir);
iResult = -1;
// DLL読込
hXXXX = LoadLibrary("XXXXX.dll");
if (hXXXX != NULL) {
// Unlha()APIの呼び出し
pcsFunc = (PFUNC)GetProcAddress(hUnlha, "YYY");
if (pcsFunc != NULL) {
iResult = (*(pcsFunc)(FALSE);
}
// DLL解放
// →ここまではszHomeDirは正しい
FreeLibrary(hXXXX);
// →ここにくると、szHomeDirの先頭4バイトが別な値に書き換えられる。
}
chdir(szHomeDir);
return(iResult);
}
0546デフォルトの名無しさん
2006/01/19(木) 01:24:090547デフォルトの名無しさん
2006/01/19(木) 01:27:500548デフォルトの名無しさん
2006/01/19(木) 01:34:340549デフォルトの名無しさん
2006/01/19(木) 01:40:150550デフォルトの名無しさん
2006/01/19(木) 02:16:47PFUNCの定義は
0551デフォルトの名無しさん
2006/01/19(木) 02:34:07szParentDirって?
0552デフォルトの名無しさん
2006/01/19(木) 04:28:51CopyFileの第3引数をTRUEにしたら?
それなら実際に同名ファイルが存在する場合以外は余分なAPI呼び出しは発生しない
0553デフォルトの名無しさん
2006/01/19(木) 09:01:09> iResult = (*(pcsFunc)(FALSE);
カッコの対応も合ってないじゃん。
せめてコンパイルくらいは通して欲しいものだな。
# 出来れば、問題が再現する最低限のコードを、
# 再発する事も確認して載せて欲しいね。
0554デフォルトの名無しさん
2006/01/19(木) 10:42:16pszHomeDirを参照するところやszParentDirをセットしてるところでメ
モリ破壊を起こしてるかもしれない。pcsFuncの呼び出しでメモリ破壊
してるかもしれない。
・変に省略するな
・unlha.dllを使うことを隠す必要なんてない
0555デフォルトの名無しさん
2006/01/19(木) 10:47:36すでに>>543で正しい答えが書かれてると思うよ。
0556541
2006/01/19(木) 11:22:56おさわがせしました。
0557デフォルトの名無しさん
2006/01/19(木) 13:39:170558デフォルトの名無しさん
2006/01/19(木) 13:43:30検索のヒント
キーワードに誤字・脱字がないか確かめてください。
違うキーワードを使ってみてください。
より一般的な言葉を使ってみてください。
0559デフォルトの名無しさん
2006/01/19(木) 13:59:05LRESULTはともかくHRESULTはここをよーく読んどけ。
ttp://msdn.microsoft.com/library/en-us/com/html/15f3ae3e-1794-4948-a7aa-6309a703364b.asp
0560498
2006/01/19(木) 15:02:079x系のバグのようです。
ttp://hp.vector.co.jp/authors/VA020994/Tips/sub3-2-013.htm
親を閉じる時、自動で一緒に子が閉じられたり、
オーナーを閉じる時、自動で一緒に非オーナーが閉じられますが、
それも手動の時と同じようにダメなようです。
もちろん、ボタンとかは大丈夫なので、
タイトルがあるウィンドウだとダメとかなんですかね。
いろいろメッセージの順序を工夫して実験しましたが、
親やオーナーのWM_CLOSEに誘発して
子や非オーナーを閉じる事自体がダメなようです。
子や非オーナーを閉じないと、親やオーナーは閉じられない、
親やオーナーを閉じようとした時、まず子や非オーナーが閉じられ、
もう一度親やオーナーを閉じようとすると、閉じる事が出来る、
みたいにしないといけないようです。
0561デフォルトの名無しさん
2006/01/19(木) 16:23:30ウィンドウBでPostQuitMessage()を呼んでいたりしないよな?
後、WM_QUITは送るな。
って言うか、ウィンドウAのWM_CLOSEを受信に、
ウィンドウBにWM_CLOSEを送信するだけでいけない?
0563デフォルトの名無しさん
2006/01/19(木) 17:11:51A の WM_DESTROY ハンドラで B に WM_CLOSE を PostMessage すればOK。
だと思うけど。
0564498
2006/01/19(木) 18:35:03子や非オーナーの場合は、PostQuitMessageが
無くても大丈夫という意味ですか?
Bの方は、単体でも起動できるプログラムなので、
普通にPostQuitMessageをしていました。
実験してみます。
>>563
それをやっていますが、うまくいきません。
PostとSendを変えたり、Sleepでまってみたりしたんですが、
それではダメなようです。
0565デフォルトの名無しさん
2006/01/19(木) 19:17:43> Bの方は、単体でも起動できるプログラムなので、
ウィンドウAとBは別のプロセスなのか?
状況があまりにも見えなさすぎ。
0566498
2006/01/19(木) 19:24:54ここの様な感じです。
そこでは、EnableWindow(hwMain,FALSE);をしているので、
Bを閉じずにAを閉じる事が出来ないので問題ありません。
作りたいのが、ビットマップビューアーみたいなソフトなので、
A、Bどっちにも常にさわれるようにしたいので、
EnableWindow(hwMain,FALSE)がない状態です。
0567498
2006/01/19(木) 19:31:50実験した結果はダメでした。
ただ、子、非オーナーなどBのウィンドウには
PostQuitMessageが必要ない事が分かり、勉強になりました。
PostQuitMessageの引数にhWndがないという事で、
hWndを終了というよりかは、hInstanceを終了する感じなんですかね。
0568デフォルトの名無しさん
2006/01/19(木) 19:33:09モーダルとモードレスでは仕組みが違う。
そのサイトのやり方では藻前のやりたい事は出来ない。
基礎から勉強し直した方がいいよ。
0569デフォルトの名無しさん
2006/01/19(木) 19:34:26ただのバグでしょう。
モーダルダイアログでDialog側のディスパッチループが走っている最中に
外側のディスパッチループを終了しようとしていたり、
シングルスレッドなのに「Sleepで待つ」とか書かれていたり、
ちょっと正常な設計とは思えません。
モードレスダイアログに変更してください。
0570デフォルトの名無しさん
2006/01/19(木) 19:36:33PostQuitMessageは。
0571498
2006/01/19(木) 19:42:54>>568>>569
キーワードをいただきました。
別ウィンドウの出し方は、それぐらいしか知らなかったので。
>>570
理解しました。
0572デフォルトの名無しさん
2006/01/19(木) 21:06:21使うときバッファの長さはいくらあれば足りますか
0573デフォルトの名無しさん
2006/01/19(木) 21:10:34FORMAT_MESSAGE_ALLOCATE_BUFFERを指定すれば向こうでメモリ確保してくれる。
このときが(俺にとっては)LocalFreeを使う唯一の機会になっている。
0574デフォルトの名無しさん
2006/01/19(木) 21:13:520575デフォルトの名無しさん
2006/01/19(木) 21:32:22MSDNにサンプルまで載ってるのに…
0576デフォルトの名無しさん
2006/01/19(木) 22:20:35俺なんかあのサンプルをまんまコピーして使ってるよ
0577デフォルトの名無しさん
2006/01/19(木) 23:02:52それとも必ず pointer[x + y * width] みたいにアクセスする
必要がある(==最後にゴミがつく可能性がある)のでしたっけ。
0578デフォルトの名無しさん
2006/01/19(木) 23:47:350579デフォルトの名無しさん
2006/01/19(木) 23:50:40丁寧におしえてやろうって言う心が無いな。
たとえスレ違いでもわかるなら答えてやるって心意気がほしいな。
おれは答えないけどな。
0580デフォルトの名無しさん
2006/01/19(木) 23:50:430581デフォルトの名無しさん
2006/01/19(木) 23:54:44ピザウマスwww
0583デフォルトの名無しさん
2006/01/20(金) 01:05:202種類、CreateWindowで指定して作る方法とリソースファイルから作る方法がありますが
どっちでやってもタブコントロールの上にボタンとかをおきたいのですが
どっかいいサンプルなどおいてある場所教えていただけませんか?
0584デフォルトの名無しさん
2006/01/20(金) 01:16:10こんなところでどうか
ttp://home.a03.itscom.net/tsuzu/programing/tips28.htm
0585デフォルトの名無しさん
2006/01/20(金) 02:56:01case ...
以外でボタンが押されたことをあらわすやつってある?
質問の意味がわからない人は言ってください。
多分これでわかると思いますけど。わからなかったらスマソ
0586デフォルトの名無しさん
2006/01/20(金) 03:06:05わたしも参考になりました。
ありがとうございます。
ちなみに>>583とは別人です。
あと質問させてもらいます。
エディットボックスで変換確定してエンターボタンを押すと
もうひとつのウインドウに表示させたいのですが、
エディットボックスで変換修正確定してエンターボタンを押すと
実質そのエンターボタンがIDC_BUTTONを押したときのような操作をするapiはあるのでしょうか?
質問の文がわかりにくいのはわかりますが・・同表現したらいいのかわかりません。
よろしくお願いします。
0587デフォルトの名無しさん
2006/01/20(金) 03:22:24EN_CHANGE使うんじゃ駄目?
0588デフォルトの名無しさん
2006/01/20(金) 03:44:29リソースエディタでFORMVIEWのダイアログを作り、ClassWizard にて CFormView派生のクラスを作成。
CSampleCtl (プロジェクトをSampleとして作った場合のActiveX Controlのクラス) にて、
OnCreate で フォームビューのクラスを Create しているのですが、失敗してしまいます。(Create で 0 が返る)
失敗するのは、コントロールウィザードから TreeView(Microsoft TreeView Control) などをフォームに貼り付けた場合で、
スタティックテキストやエディットボックスのみのフォームでは失敗せず、ブラウザでの表示も確認しています。
TreeViewやListViewを使いたいのですが、どうすればいいのでしょうか。
プロジェクトは、プロジェクトウィザードのMFCActiveXコントロールから作成しています。
0589デフォルトの名無しさん
2006/01/20(金) 04:46:52CreateThreadに複数の引数を渡すには
構造体をつかうということがわかりました。
他のやり方がありますか?
0590デフォルトの名無しさん
2006/01/20(金) 07:10:14C++で自作DLLを作ってるんですがプログラムサイズを縮小化したいので
乱数取得にMSVCRT.DLLのrand関数を使いたくないんですが
0591デフォルトの名無しさん
2006/01/20(金) 08:40:22http://cwoweb2.bai.ne.jp/~jgb11101/files/random/mersenne_applet.html
http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/VERSIONS/C-LANG/TANDO/MTC/readme.html
http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/mt.html
0592デフォルトの名無しさん
2006/01/20(金) 08:46:31MSVCRTと同じアルゴリズムのrandで十分なら
線形合同式一行書くだけだろ
0593デフォルトの名無しさん
2006/01/20(金) 08:47:38CryptGenRandomとかはどーだwww
0594デフォルトの名無しさん
2006/01/20(金) 08:49:450595デフォルトの名無しさん
2006/01/20(金) 08:51:09/*UNIX*/
static long x=1;
void srand(unsigned s) { x=s; }
long rand() { x=x*1103515245+12345; return x&2147483647; }
/*DOS-Windows*/
static long x=S;
int rand() { x=x*A+C; return(int)(x>>16)&32767; }
void srand(unsigned s) { x=s; if (F) rand(); }
/usr/5bin/cc A=1103515245, C=12345, F=0, S=1
TurboC 1.5 A=22695477, C=1, F=0, S=1
Visual C++: A=214013, C=2531011, F=0, S=1
Borland C++: A=22695477, C=1, F=1, S=22695478
X[n]=A*X[n-1]+C (mod 4294967296)
0596デフォルトの名無しさん
2006/01/20(金) 08:54:24ちょwwwわかんねぇwww
0597デフォルトの名無しさん
2006/01/20(金) 08:55:510598デフォルトの名無しさん
2006/01/20(金) 08:59:200599デフォルトの名無しさん
2006/01/20(金) 09:15:350600デフォルトの名無しさん
2006/01/20(金) 09:22:350601デフォルトの名無しさん
2006/01/20(金) 10:57:321lineがlong境界で揃うのは32bitDIBだけじゃないんですか?
8bitで横が4の倍数もか。
0602デフォルトの名無しさん
2006/01/20(金) 11:10:22だけじゃない
幅、bppに関わらず常に4の倍数バイト
圧縮したときはシランがw
0603デフォルトの名無しさん
2006/01/20(金) 11:44:17あの記事のコードでSendMessage{WM_COMMAND, IDOK}で終了することはできません。
メッセージループはGetMessageで待ったままになるからです。
DialogBoxの詳しい解説はJeffrey Richter:"Windows95:A Developer's Guide"
(新古書入手可能です)
あなたの要求を満たす方法は、単にCreateWindow/DestroyWindow
だけで良いと思います(メッセージループ不用)。
0604デフォルトの名無しさん
2006/01/20(金) 17:55:35はどこに行っちゃったんでしょうか?
0605デフォルトの名無しさん
2006/01/20(金) 18:53:52Windows Media Encoderを触っていたのですが、実現の方法がわかりませんでした。
そもそも、Media Encoderで連続したJpegからWMVって作れるのでしょうか???
0606デフォルトの名無しさん
2006/01/20(金) 19:03:13ttp://m--takahashi.com/bbs.htm
旧ドメインは失効したと書いてある。
0607デフォルトの名無しさん
2006/01/20(金) 19:26:08Windows Media エンコーダ SDKを使ったことないけど
エンコードはDirect Showではないだろか。
0608デフォルトの名無しさん
2006/01/20(金) 20:56:2090日経ってから取り戻すつもりなのか?
絶対に業者に取られるな
0609デフォルトの名無しさん
2006/01/20(金) 21:18:27EnumWindows(EnumWindowsProc LPARAM)で、EnumWindowsProcを呼び出す時、
EnumWindowsProcにクラスや構造体のポインタを渡すいい方法って
ありますでしょうか。
0610デフォルトの名無しさん
2006/01/20(金) 21:21:400611609
2006/01/20(金) 21:39:54LPARAMで渡すんですよね・・・前に試した時は、KOUZOU* pSt;
EnumWindows( EnumProc (LPARAM)pSt);と言う形で投げて、
EnumProc( hwnd, lp);でうけて、lp->member;と使おうとしたら、
「->の右にこれるのは、クラスのポインタだけじゃ!」
と怒られちゃったんですが、なんか私、勘違いしていますか?
重ね重ねの質問ですいませんが、よろしくお願いします。
0612デフォルトの名無しさん
2006/01/20(金) 21:53:58pSt->member;
とか
((KOUZOU*)lp)->member;
とかして元の型に戻さないと。
0613デフォルトの名無しさん
2006/01/20(金) 22:03:220615498
2006/01/20(金) 22:51:25こういう感じでOKですか?(コーディングスタイルがきもいので注意)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1514.txt
一応、残骸が残るバグはなくなりました。
ただ、他に問題がありましたら教えてください。
この方法でOKなら、リソースや可変長配列を
使う必要がないので、こちらの方が楽な気がします。
0616デフォルトの名無しさん
2006/01/20(金) 22:55:56きーが押されてるとかとれますか?
0617デフォルトの名無しさん
2006/01/20(金) 22:57:260618デフォルトの名無しさん
2006/01/20(金) 23:06:07WM_GETDLGCODE
0619デフォルトの名無しさん
2006/01/20(金) 23:34:45Matt Pietrek:"Windows Internals"
Windows3.1の解析本。たぶん新古書入手可能。
0620デフォルトの名無しさん
2006/01/20(金) 23:37:310621デフォルトの名無しさん
2006/01/20(金) 23:57:56DrawTextで文字列をウィンドウに出力させるプログラムつくったんですが、
ウインドウに収まらず、縦スクロールつけたんですが、スクロールさせると
消えてしまいます。なんかいい方法あったらご教授ください。
0622デフォルトの名無しさん
2006/01/21(土) 00:16:15つ裏画面
0623デフォルトの名無しさん
2006/01/21(土) 00:31:500624デフォルトの名無しさん
2006/01/21(土) 00:32:470625621
2006/01/21(土) 00:37:060626デフォルトの名無しさん
2006/01/21(土) 00:55:08よしなに描き直せば
0627デフォルトの名無しさん
2006/01/21(土) 01:59:48遅くなりましたがthxです うまく組み込めました!
0628デフォルトの名無しさん
2006/01/21(土) 02:39:23int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
int PASCAL WinMain(HINSTANCE hInst,HINSTANCE hPrev,char *CmdLine,int CmdShow);
ってあるんだ。
WINAPIとPASCALってどう違うんでしょうか?
0629デフォルトの名無しさん
2006/01/21(土) 02:49:38#define FAR _far
#define PASCAL _pascal
#define WINAPI FAR PASCAL
ついでに言うとWin32では_far、_nearは意味を持たない。
0630デフォルトの名無しさん
2006/01/21(土) 07:00:02スタックに積んだ引数を呼び出し側でpopするか、呼ばれた側でpopするかの違い。
0631デフォルトの名無しさん
2006/01/21(土) 07:45:42それからWin32ではWINAPIは__stdcallだな(__pascalとはスタックに積む順番が違う)
>>630
それは__cdeclとの違い
0632デフォルトの名無しさん
2006/01/21(土) 09:06:10Win16ではPASCALだったがWin32でWINAPIになった。
互換性のためWin32のヘッダでは#define PASCAL __stacallと定義されている。
蛇足だが本当にpascal形式が使いたければ__pascalと書けば使える。
0633628
2006/01/21(土) 09:33:45つまり今はWINAPIを使うのが普通って事ですか。
スタックに積んだ引数ってのが想像しにくい(スタックて後入れ先出しだっけ・・・
とりあえずおいて置きます
0634デフォルトの名無しさん
2006/01/21(土) 09:57:090635デフォルトの名無しさん
2006/01/21(土) 10:01:02参照されるときは結局
[ebp+NN]とかアドレッシングしてアクセスされるから
後入れ先出しとは言えないですね。
呼ぶ側がパラメータをスタックにPUSHしてからCALLするだけだから
後入れ先出しの順はパラメータが左からか右からかの違いに相当します。
0636デフォルトの名無しさん
2006/01/21(土) 10:19:15SetClassLong(hWnd, GCL_HBRBACKGROUND, (LONG)CreateSolidBrush(RGB(0,0,0)));
などとすれば出来ますよね。
そこでCreateSolidBrush作成したオブジェクトについてなんですが、こいつは遅かれ早かれ
開発者がDeleteObject削除しなければなりませんよね?
今勉強しているサイトにはどこにも説明が無いので聞く所存なのですが、
HBRUSH hBr = CreateSolidBrush(RGB(255,0,0);
SetClassLong(hWnd,GCL_HBRBACKGROUND,hBr);
DeleteObject(hBr);
の様に、SetClassLongで現在設定されているブラシは削除するのはまずいのでしょうか?
0637デフォルトの名無しさん
2006/01/21(土) 11:02:16WM_DESTROYWINDOW
あたりを受け取ってから
DeleteObject
0638デフォルトの名無しさん
2006/01/21(土) 14:01:49一番かっこいい名前のWin32APIって何だと思いますか?
0639デフォルトの名無しさん
2006/01/21(土) 14:15:270640デフォルトの名無しさん
2006/01/21(土) 14:39:38完全に理解するにはあと3ヶ月だな
0641デフォルトの名無しさん
2006/01/21(土) 14:40:58MSDNのWNDCLASSEXの項にはUnregiserClassExを呼んだ時に背景のブラシは削除されると書いてある。
あと、SetClassLongPtrを使いなさい。
0642デフォルトの名無しさん
2006/01/21(土) 14:46:07タブコントールにリストボックスをくっつけて特定のタブが選択された時に
そのタブにのっかってるリストボックスにテキスト表示はできたんですが、
WM_PAINTのときに書いてたらタブを一度他のところに切り替えてもう一度タブ
を戻したら表示させたテキストが複数になちゃいました。
そうならない方法どなたか教えて頂ければうれしいです。
0643デフォルトの名無しさん
2006/01/21(土) 16:05:54SetLayeredWindowAttributes
0644デフォルトの名無しさん
2006/01/21(土) 17:24:333ヶ月後にはこのスレに書き込まれていることが釣りに思えてくる
0645デフォルトの名無しさん
2006/01/21(土) 18:41:240646デフォルトの名無しさん
2006/01/21(土) 19:09:00そうわかるまでにはもう三ヶ月かかる
0647デフォルトの名無しさん
2006/01/21(土) 20:54:07どうしたらいいでしょうか?
ウィンドウズメディアプレイアーを再生しているときみたいに、
自分のアプリケーションが起動している間はスクリーンセーバーが
起動したりスタンバイ状態になってほしくないのです。
Winsockで通信中にスタンバイ状態になると挙動がおかしくなるので困っています。
0648デフォルトの名無しさん
2006/01/21(土) 21:02:26SystemParametersInfo()でSPI_SETSCREENSAVEACTIVEを使って
スクリーンセーバーが動いてることにしちゃったり、
WM_POWERBROADCASTを処理してBROADCAST_QUERY_DENYを
返したり。
0650デフォルトの名無しさん
2006/01/21(土) 22:34:250651デフォルトの名無しさん
2006/01/21(土) 23:42:53SystemParametersInfo()は推奨できない。
自分のアプリケーションがアクティブなときだけ拒否したい場合は
WM_SYSCOMMANDメッセージのSC_MONITORPOWERと
SC_SCREENSAVEにFALSEを返せば防げばいい。
WinSockで問題があるなら、スクリーンセーバーはどうでもいいと
思うので、WM_POWERBROADCASTのPBT_APMQUERYSUSPENDを
処理すればいいかと。
あるいは、スタンバイ状態に移行するときと復帰したときの処理を
ちゃんと書いて、スタンバイ状態になっても問題ないようにするとか。
0652デフォルトの名無しさん
2006/01/22(日) 03:05:42スレタイを100回ぐらい読むといいよ
当然、大声でやると効果的
0653デフォルトの名無しさん
2006/01/22(日) 12:03:28何言ってるんですか?
TreeViewもListViewもWin32APIで作れるじゃないですか。
0654デフォルトの名無しさん
2006/01/22(日) 12:28:200655デフォルトの名無しさん
2006/01/22(日) 12:46:290656デフォルトの名無しさん
2006/01/22(日) 13:04:080657デフォルトの名無しさん
2006/01/22(日) 13:40:52ActiveX関係がなかったんでWin32でここに書いたんだけど、誘導ってことでMFC相談室行ってきます。
0658デフォルトの名無しさん
2006/01/22(日) 15:35:53【OLE】オートメーション総合スレ【ActiveX】
http://pc8.2ch.net/test/read.cgi/tech/1137771139/
0659デフォルトの名無しさん
2006/01/22(日) 17:44:370660デフォルトの名無しさん
2006/01/22(日) 17:58:31俺は全部がスレッドセーフかどうか知らないけど、中にはこんなのも存在する。
そもそも作成したスレッドからしか触れないからスレッド安全かどうか気にする必要のないというものもある。
ヒープ関係の関数はスレッドセーフにしない代わりに高速化するという指定を与えられる。
0661デフォルトの名無しさん
2006/01/23(月) 02:15:47printf,scanfなどの関数を併用することはできますか?
描画はできるんですけどこういう関数は全部無視されちゃいます。
ちなみにborland c++ compiler5.5使ってます
0662デフォルトの名無しさん
2006/01/23(月) 02:23:44WinAPIには文字出力とかの概念は存在しないからTextOut()で文字を描画する
0663661
2006/01/23(月) 02:42:28じゃあ、ファイルポインタ使ってデータファイル読み込み→
計算→描画 的なことはできないんですかね?
0664デフォルトの名無しさん
2006/01/23(月) 02:48:410665661
2006/01/23(月) 03:00:36データファイル読み込み→計算→計算結果を図で描画
ということをしようと思ってます。
0666デフォルトの名無しさん
2006/01/23(月) 03:02:19計算結果をテキストで出力したいだけなら、
コンソールアプリケーションにする。
GUIを使いながらprintf等も使いたいなら
AllocConsole()を使ってコンソールを割り当てると楽。
0667661
2006/01/23(月) 03:20:18ありがとうございます。AllocConsoleでscanfも使えますか?
scanfでデータファイル名指定、データファイルを読み込んで計算
ということもやりたいんですけど。
0668デフォルトの名無しさん
2006/01/23(月) 03:25:150670デフォルトの名無しさん
2006/01/23(月) 05:08:450671デフォルトの名無しさん
2006/01/23(月) 05:34:17出力なら>>296
入力はCONIN$に変えればいいかも。
0672デフォルトの名無しさん
2006/01/23(月) 09:03:17sprintf()やsscanf()に一言も触れないのか?
潜在的なセキュリティリスクに関する議論も再燃するはずだったのだが。
0673デフォルトの名無しさん
2006/01/23(月) 09:11:420674デフォルトの名無しさん
2006/01/23(月) 09:12:36再燃再燃再燃再燃セキュリティリスク
再燃再燃再燃再燃セキュリティリスク
再燃再燃再燃再燃セキュリティリスク
再燃再燃再燃再燃セキュリティリスク
再燃再燃再燃再燃セキュリティリスク
再燃再燃再燃再燃セキュリティリスク
再燃再燃再燃再燃セキュリティリスク
0675デフォルトの名無しさん
2006/01/23(月) 13:46:160676デフォルトの名無しさん
2006/01/23(月) 13:56:400677デフォルトの名無しさん
2006/01/23(月) 14:32:240678デフォルトの名無しさん
2006/01/23(月) 15:48:08CreateProcessAsUserで別プロセスとして起動させるしかないんでしょうか?
0679デフォルトの名無しさん
2006/01/23(月) 16:20:30エディタの様に変えることは出来ないでしょうか?
0680デフォルトの名無しさん
2006/01/23(月) 17:38:25できるはず。できるからこそエディタはそうなっているんだ。
俺もやりかたは知らないけれどとりあえず。
0681デフォルトの名無しさん
2006/01/23(月) 17:42:300682デフォルトの名無しさん
2006/01/23(月) 20:59:22前スレで脆弱性になる/ならないで論争やったからじゃね?
0683デフォルトの名無しさん
2006/01/23(月) 21:16:28プロセス実行中にユーザを切り替えることが可能になったら、
他のユーザに切り替えたあと、あらゆるハンドルが扱えなくなるので、メンテナンスが面倒だと思う。
ハンドルを子プロセスで継承可能&ユーザアクセス権限を設定して、
ハンドル値を子プロセス実行文字列の引数や共有メモリで渡すことでハンドルをそのまま使える。
0684デフォルトの名無しさん
2006/01/23(月) 23:13:58その後子プロセスを作っても作らなくても面倒さに変わりはないんじゃね?
0685デフォルトの名無しさん
2006/01/23(月) 23:18:20セキュリティホールの原因になるんじゃない?
0686デフォルトの名無しさん
2006/01/23(月) 23:41:25チャットじゃないので疑問形で同意を求める風を装う甘えた文章はやめろ。
断言できないのなら回答するな。
0687デフォルトの名無しさん
2006/01/23(月) 23:43:05しきってんじゃねーよカス
0688デフォルトの名無しさん
2006/01/23(月) 23:46:070689デフォルトの名無しさん
2006/01/23(月) 23:46:39断定を避けつつ他人の同意を求める文章は荒らしも同然。
0690デフォルトの名無しさん
2006/01/23(月) 23:47:200691デフォルトの名無しさん
2006/01/23(月) 23:51:40他の荒らしを黙らせるための書き込みは構わないと思う。
>>684-685
ピントがずれてる。
結論からいうと、必要性が判らないうちは回答するなということだ。
末尾を?にすれば許してもらえるなどと思わないほうがいい。
0692デフォルトの名無しさん
2006/01/23(月) 23:58:06黙れ
0693デフォルトの名無しさん
2006/01/24(火) 00:02:470694デフォルトの名無しさん
2006/01/24(火) 00:04:08断言できない読書感想文的な無駄なオナニー書き込みより罵倒の方がはるかにマシ。
0695デフォルトの名無しさん
2006/01/24(火) 00:04:520696デフォルトの名無しさん
2006/01/24(火) 00:05:180697デフォルトの名無しさん
2006/01/24(火) 00:15:27そんなに断言してほしけりゃしてやる
どうせアクセス権を設定しなきゃならないなら
その後子プロセスを作っても作らなくても面倒さに変わりはない。
新たに設定するユーザの権限外のアクセスが(既存ハンドルを通じて)行えると、
セキュリティホールの原因になる。
正直何が違うのかさっぱりだね
0698678
2006/01/24(火) 00:53:280699デフォルトの名無しさん
2006/01/24(火) 02:05:510700デフォルトの名無しさん
2006/01/24(火) 02:15:49だからあれほど素人は(ry
0701デフォルトの名無しさん
2006/01/24(火) 07:42:02どうやればいいですか?
0702デフォルトの名無しさん
2006/01/24(火) 07:44:530703デフォルトの名無しさん
2006/01/24(火) 07:46:580704デフォルトの名無しさん
2006/01/24(火) 08:42:260705デフォルトの名無しさん
2006/01/24(火) 08:50:49グローバルフックの方がいいかと
0706デフォルトの名無しさん
2006/01/24(火) 09:12:06win2k,VC6で開発をしています。
ユーザーアカウントに独自の追加情報を加える必要があり色々と
調べてみた結果。windowsのアカウント設定ツールからは使われて
いない(NetUserSetInfoで実際に設定してみて、設定ツール上の
どこにも反映されていないことで確認しました)USER_INFO_*構造体の
usri*_usr_commentの部分に追加できないかと考えています。
ですが、実際に使用するにあたって本当にユーザーが勝手に使ってよい
領域なのかどうかいまいち確証がもてずに困っています。
usri*_usr_commentの使用についてのドキュメント等をご存知の方が
居られましたらお教えいただけると助かります。
よろしくお願いします。
0707デフォルトの名無しさん
2006/01/24(火) 11:20:53void test ()
{
CTestClass *t = new CTestClass() ;
}
test()で、CTestClassが確保されて起動、その後CTestClass内で処理が必要なくなったら自身を消して解放みたいな。
やっぱりマネージャクラスのようなものが必要なんでしょうか?
0708デフォルトの名無しさん
2006/01/24(火) 11:32:430709デフォルトの名無しさん
2006/01/24(火) 11:33:12つ[delete this;]
0710デフォルトの名無しさん
2006/01/24(火) 11:39:130711707
2006/01/24(火) 11:57:52>delete this;
ほんとだ、消えた!。
自分は消せないと思ってた、勉強不足でした。
0712679
2006/01/24(火) 12:42:57無事解決しました。
0713デフォルトの名無しさん
2006/01/24(火) 14:41:420714デフォルトの名無しさん
2006/01/24(火) 15:05:42googleしまくってんだけど、なかなか参考になるコードが無くて、よろしくお願いします。
0715デフォルトの名無しさん
2006/01/24(火) 15:08:560716デフォルトの名無しさん
2006/01/24(火) 15:48:05でしょうか?アナログからの出力はできてもかまわないのですが、デジタル
出力だけ停止させたいのですが。
0717デフォルトの名無しさん
2006/01/24(火) 16:07:49hogeもfugaもmogeも存在しないとき、一気にディレクトリつくるAPIなかったっけ?
0718デフォルトの名無しさん
2006/01/24(火) 16:13:170719デフォルトの名無しさん
2006/01/24(火) 16:19:140720デフォルトの名無しさん
2006/01/24(火) 16:22:30プラットフォームSDKをダウンロードしようと思ったら、
MSNになくなったようです。
SDKに変わるものって何になるのでしょうか?
環境はwin2kとXPです。
馬鹿にも解るように優しく教えて下され
0721デフォルトの名無しさん
2006/01/24(火) 16:28:530723デフォルトの名無しさん
2006/01/24(火) 17:07:16SHCreateDirectoryExってWinMeや2000以降なのね。
0724デフォルトの名無しさん
2006/01/24(火) 17:11:020725デフォルトの名無しさん
2006/01/24(火) 17:38:470726デフォルトの名無しさん
2006/01/24(火) 17:39:580727725
2006/01/24(火) 17:51:580728デフォルトの名無しさん
2006/01/24(火) 17:57:000729デフォルトの名無しさん
2006/01/24(火) 19:11:59Windows XP なら manifest で出来る。
0730デフォルトの名無しさん
2006/01/24(火) 19:17:33普通にグローバルキーフック
猫でもSDK編161章
0731デフォルトの名無しさん
2006/01/24(火) 19:20:37HKEY_CLASSES_ROOT以下は制限ユーザーでも書き込めると思うが。
0732720
2006/01/25(水) 01:07:07意味は通じてるんだから
教えてくれても良いのに(´・ω・`)
0733デフォルトの名無しさん
2006/01/25(水) 01:12:22つかMSNってまだやってるのかね
0734デフォルトの名無しさん
2006/01/25(水) 02:00:380735デフォルトの名無しさん
2006/01/25(水) 02:50:400736デフォルトの名無しさん
2006/01/25(水) 03:13:35MSDNのDLサイトから消えたのは2003のSDKに一本化されたからじゃないの?
0737デフォルトの名無しさん
2006/01/25(水) 08:28:08LRESULTの数値を返せばいいの
0738デフォルトの名無しさん
2006/01/25(水) 08:30:43特に必要が無ければ0を返せば良い。
これ位訊かなくても本に書いてあるだろ。
0739デフォルトの名無しさん
2006/01/25(水) 12:52:23情報タダ取りか?
ちゃんと結果を報告しろよ、クズ!!
0740デフォルトの名無しさん
2006/01/25(水) 13:11:19それを全部半透明にするとデスクトップが暗くなります。
最初はデスクトップまで半透明になっているから暗くなってるのかと思ったのですが、
デスクトップのハンドルを除いて、後を全部半透明にしても暗くなります。
(というかデスクトップのハンドルは列挙されていないっぽい)
デスクトップをそのままにして、他を全部半透明にするにはどうしたらいいでしょうか?
0741デフォルトの名無しさん
2006/01/25(水) 13:15:52単に暗い色の壁紙が透けて見えるようになったから、とかじゃないだろうな?
0742デフォルトの名無しさん
2006/01/25(水) 13:17:380743デフォルトの名無しさん
2006/01/25(水) 13:26:050744デフォルトの名無しさん
2006/01/25(水) 13:31:09不器用なので、フリーのリソースエディタを上手に使えなくて
DialogBoxIndirectでダイアログを作成する事にしたんですが
DialogProcのWM_INITDIALOGで、自前のクラスをnewしたら
deleteする時に止まっちゃいました。
ためしに、DialogProc内にstaticで持つのを止めグローバルにして
DialogBoxIndirectから処理が返ってきた後、deleteしたんですが
それでもダメでした。
DialogBoxIndirectで作成したダイアログに貼り付けた
子ウインドウを、無事に削除する方法を教えてください。
よろしくお願いします。
0745デフォルトの名無しさん
2006/01/25(水) 13:32:14static CListView *listview = NULL;
switch(uMsg){
case WM_INITDIALOG:
if((listview = new CListView(hwndDlg)) == NULL){
ERROR;
}
return TRUE;
case WM_COMMAND:
switch(LOWORD(wParam)){
case IDOK:
ここで止まる→delete listview;
EndDialog(hwndDlg, IDOK);
return TRUE;
}
break;
}
return FALSE;
}
0746デフォルトの名無しさん
2006/01/25(水) 13:36:100747デフォルトの名無しさん
2006/01/25(水) 13:48:22borland c++はよく知らないけど
ダイアログがでてる間に消しちゃダメだろ
0748デフォルトの名無しさん
2006/01/25(水) 14:06:070749デフォルトの名無しさん
2006/01/25(水) 14:19:34子ウインドウの場合は親がやってくれるから自分で破棄する必要はない。
だからdeleteするとすればダイアログが閉じた後で
0750デフォルトの名無しさん
2006/01/25(水) 14:21:38貼りつけた子ウィンドウはどこでどうやってcreateしたのですか?
0751デフォルトの名無しさん
2006/01/25(水) 14:49:090752デフォルトの名無しさん
2006/01/25(水) 16:52:11if(listview!=NULL)
{
delete listview;
listview = NULL;
}
0753デフォルトの名無しさん
2006/01/25(水) 18:34:00止まるって、具体的にはどうなる?
delete が返ってこないということ?
それともそこでエラー?
0754725
2006/01/25(水) 19:55:24>729
>Windows XP なら manifest で出来る。
成功しました情報ありがとうございます。
http://www.microsoft.com/japan/msdn/windows/windowsxp/sidexsidewinxp.asp
このサイトが参考になりました。
>731
>>725>>727
HKEY_CLASSES_ROOT以下は制限ユーザーでも書き込めると思うが。
HKEY_CURRENT_USER以外は書き込みが出来ませんでした。
XPでは起動に成功を見たのですが、以前2000での起動が出来ません。
何方か解決方をご存じの方はいらっしゃいませんでしょうか?
具体的には、制限ユーザで自作したアプリをインストールし動作させようとしているのですが、
動作には、インストーラに同梱したコンポーネントが必要なのですがこのコンポーネントのシステムへの登録が
制限ユーザでは出来ずに、起動に失敗してしまいます。(regsvr32で登録エラーを起こしてしまいます)
以上です、よろしくお願いします。
0755デフォルトの名無しさん
2006/01/25(水) 20:50:57compileは通るんだけど、実行すると戻り値が0で、ラストエラーは「パラメータが間違っています。」(コードは87)
ん〜、誰か教えてぇ〜〜〜
0756デフォルトの名無しさん
2006/01/25(水) 20:55:260757デフォルトの名無しさん
2006/01/25(水) 21:34:32パラメータが間違ってる、と親切に教えられてるのに、
何故、無視するのだね?
0758デフォルトの名無しさん
2006/01/25(水) 22:31:36そもそもnewは例外を投げるからNULLかどうかの比較は意味がない。
どうしてもやりたければstd::nothrow。
if ((listview = new(std::nothrow) CListView(hwndDlg)) == NULL)
0759デフォルトの名無しさん
2006/01/25(水) 22:37:08なので、念のためチェックしといた方が良いと思う。
0760デフォルトの名無しさん
2006/01/25(水) 22:41:20744-745はBorland C++と書いてある。おそらく無料版だろう。
そいつのnewは例外を投げる。
0761デフォルトの名無しさん
2006/01/25(水) 22:44:25VC++2003だと、C++のヘッダをインクルードすると、例外を投げるようになるはず。
0762デフォルトの名無しさん
2006/01/25(水) 22:46:07ほほー、勉強になりました。
サンクス。
0763740
2006/01/25(水) 23:09:21ありがとうございます。
見た感じですが、デスクトップの画面の大きさの
真っ暗なウィンドウがある感じです。
根拠は、半透明にしてから同様の方法で全てのウィンドウの透明度をなくした場合、
デスクトップが真っ黒になるからです。
"Program Manager"を調べてみます。
0764740
2006/01/25(水) 23:21:03"Program Manager"を持つウィンドウを除いたら解決しました!
ありがとうございました!
0765デフォルトの名無しさん
2006/01/26(木) 00:45:510766デフォルトの名無しさん
2006/01/26(木) 00:46:390767デフォルトの名無しさん
2006/01/26(木) 00:50:300768デフォルトの名無しさん
2006/01/26(木) 00:52:470769デフォルトの名無しさん
2006/01/26(木) 01:15:53_tprintf
0770デフォルトの名無しさん
2006/01/26(木) 06:24:48テキストを入力するときに言語バーのところで日本語を選べるものと
選べない物があるんだけど、これってどういう風に作ると選べるように
なるかわかる人いる? 具体的にはIEのフォーム(URL入力欄はNG)や
Office系はOK。秀丸、EmEditor、xyzzyに始まりEclipse、VisualStudio等
ほとんどのテキストエディター系は入力不可。
正直仕事に支障が出ているので簡単なテキストエディタを作ろうと
思ってるんだけど、普通にTextBoxを配置しただけではやはり日本語は
選べないみたい。ヒントでもいいので何か情報求む。
スレ違いなら誘導お願いします。
0771デフォルトの名無しさん
2006/01/26(木) 06:49:060772デフォルトの名無しさん
2006/01/26(木) 07:22:42ざっくり見つけた限りだとこのへんか?
Techniques for Handling Input Languages in Win32
http://www.microsoft.com/globaldev/getWR/steps/WRG_kybrd.mspx#EVE
> by using Unicode edit controls or rich edit controls,
> you enable your application to handle multilingual text input.
0773デフォルトの名無しさん
2006/01/26(木) 08:24:20VC6.0は入力した文字が?になってだめだったけど、秀丸(5.13b2)、メモ帳、VS2003では入力できた。
0774デフォルトの名無しさん
2006/01/26(木) 15:53:32プログラム上では、どうやって鳴らすんでしょう?
0775デフォルトの名無しさん
2006/01/26(木) 16:08:300776デフォルトの名無しさん
2006/01/26(木) 16:44:110777デフォルトの名無しさん
2006/01/26(木) 16:52:010778デフォルトの名無しさん
2006/01/26(木) 17:02:51ASFファイルにインデックスをつけたいだけなのですが。
0779デフォルトの名無しさん
2006/01/26(木) 17:49:17あの処理ってどこから情報を取ってくるんですか?
ダウンロードしたhtmlを解析して?
それとも、HttpSendRequestに対応するフラグがあるの?
0780デフォルトの名無しさん
2006/01/26(木) 17:59:31・BOM
・meta要素
・ファイルのバイト列の癖から類推
0781デフォルトの名無しさん
2006/01/26(木) 18:01:390782デフォルトの名無しさん
2006/01/26(木) 18:04:52参考資料
[IE5]文字セットと Internet Explorer 5 の自動選択機能について
http://support.microsoft.com/default.aspx?scid=kb;ja;413581
0783774
2006/01/26(木) 18:27:11ttp://forums.belution.com/ja/vc/000/207/29s.shtml
のような記事を見つけたのですが、
レジストリから直接取得するしか無いんでしょうか。
とりあえずは、レジストリからの値の取得の方法を調べねば。
0784デフォルトの名無しさん
2006/01/26(木) 19:01:47自作のウインドウアプリケーション A (起動済みでバックグラウンドかアイコンになってる)が
フォアグラウンドかつフォーカスがあたるようにしたいのですが、
A の中でどういうAPIを使って操作をしておけばいいでしょうか。
0785デフォルトの名無しさん
2006/01/26(木) 19:10:40WM_HOTKEY を受け取ったら、フォアグラウンド & フォーカスの処理をすれば良い。
0786デフォルトの名無しさん
2006/01/26(木) 19:19:130787デフォルトの名無しさん
2006/01/26(木) 19:20:050788デフォルトの名無しさん
2006/01/26(木) 20:00:080789デフォルトの名無しさん
2006/01/26(木) 20:04:51俺は五億円ほど所得したいです
お互いがんばりましょう
0790デフォルトの名無しさん
2006/01/26(木) 20:06:37つ 所得税
0791デフォルトの名無しさん
2006/01/26(木) 21:02:18与えてどうするよ
0792デフォルトの名無しさん
2006/01/26(木) 21:03:32どうすればとまるの?
0793デフォルトの名無しさん
2006/01/26(木) 21:07:57スレ違い
0794デフォルトの名無しさん
2006/01/26(木) 21:09:26なんのこっちゃ?
VC6ならCtrl+F5とか
0795デフォルトの名無しさん
2006/01/26(木) 21:10:50VCならCtrl+F5
0796デフォルトの名無しさん
2006/01/26(木) 21:16:070797デフォルトの名無しさん
2006/01/26(木) 21:21:440798デフォルトの名無しさん
2006/01/26(木) 21:22:15ストリームのバックアップと列挙
http://www.microsoft.com/japan/msdn/windows/windows2000/ntfs5.asp#ntfs5_topic5
http://homepage3.nifty.com/k-takata/diary/2005-02.html#04
0800デフォルトの名無しさん
2006/01/26(木) 22:29:22thx
0801デフォルトの名無しさん
2006/01/26(木) 22:32:45IMultiLanguage2::DetectInputCodepage
0802799
2006/01/27(金) 08:18:50インターフェイスがあるんですねー。
調べてみます。
ありがとうございます!
0803778
2006/01/27(金) 09:34:44サンプルのdscopy.cppを↓のように書き換えました。
int __cdecl _tmain(int argc, TCHAR *argv[])
{
USES_CONVERSION;
// Initialize COM
HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
if (FAILED(hr))
return hr;
WCHAR wszTargetFile[MAX_PATH];
MultiByteToWideChar(CP_ACP, 0, "c:\\hoge.asf", -1,
wszTargetFile, NUMELMS(wszTargetFile));
hr = IndexFileByFrames(wszTargetFile);
CoUninitialize();
return hr;
}
実行すると↓のエラーが出ます。
Indexing Failed (hr=0x8000ffff)!
Press any key to continue
何かわかる人はいらっしゃいませんでしょうか?
0804デフォルトの名無しさん
2006/01/27(金) 12:55:200805デフォルトの名無しさん
2006/01/27(金) 12:57:17その問題とは関係ないけど:
USES_CONVERSION 使えるなら IndexFileByFrames( A2W("c:\\hoge.asf") ); でいいし、
さらにこんなテストなら IndexFileByFrames( L"c:\\hoge.asf" ); でも十分だと思う。
0806デフォルトの名無しさん
2006/01/27(金) 13:29:001つ1つSetFileAttributesするしかない?
0807デフォルトの名無しさん
2006/01/27(金) 13:34:570808デフォルトの名無しさん
2006/01/27(金) 13:52:040809デフォルトの名無しさん
2006/01/27(金) 17:44:35{
Beep( 100, 10000 );
}
0810778
2006/01/27(金) 17:49:02再エンコードするみたいで時間かかりますね。
インデックスだけつけたいのですが、困りました。
0811デフォルトの名無しさん
2006/01/27(金) 17:57:51説明が足りなかった。
非同期で鳴らし続けるってこと。
しかもそれじゃ10秒ごとにプチプチ言うよ。
途中で止められないし。
0812778
2006/01/27(金) 18:03:3810 BEEP 1
でよかったね。
0813デフォルトの名無しさん
2006/01/27(金) 18:40:40RegisterHotKeyとグローバルフックの両方を試して、上手くいきました。
グローバルフックでは、キーを押しても反応しないアプリケーション
(キー入力を吸い取ってる?)があるようなので、
今回はRegisterのほうを使います。ありがとうございました。
0814デフォルトの名無しさん
2006/01/27(金) 19:47:22横スクロールゲームなので指定サイズのクライアント領域を持ったウィンドウが必要だす
0815デフォルトの名無しさん
2006/01/27(金) 20:14:14AdjustWindowRect
0816デフォルトの名無しさん
2006/01/27(金) 20:31:072. 1.の後一番手前に来たウィンドウをアクティブにする
というユーティリティを作りたいんですが、2.のウィンドウを検索する方法がわかりません。
どう書けばいいんでしょうか?
0817デフォルトの名無しさん
2006/01/27(金) 20:37:46ありがとうございました
0818デフォルトの名無しさん
2006/01/27(金) 21:26:32GetWindowのGW_HWNDNEXTでいいんじゃない?
それと、Win98、Win2000以降はSetForegroundWindowに
制限があるので要注意。
0819デフォルトの名無しさん
2006/01/27(金) 21:55:39MSDNドキュメントを鵜呑みにしたか?
ドキュメントにあるような制限は実際にはない。
0820デフォルトの名無しさん
2006/01/27(金) 22:05:250821デフォルトの名無しさん
2006/01/27(金) 22:14:55分かってないのはお前の方だ。あの制限は全部ちゃんとある。
しかし、フォアグラウンドプロセスからSetForegroundWindowを
呼んだ場合は、普通に実行できる。(これも書いてある)
あの制限は主に、フォアグラウンドではないプロセスから
SetForegroundWindowを呼んだ場合のもの。
816のやろうとしている事は明らかに、SetForegroundWindowの
制限に引っかかる。
0822デフォルトの名無しさん
2006/01/27(金) 22:18:13本当に自分の目で確認したのか?
実際にテストコードを書いて試したか?
0823デフォルトの名無しさん
2006/01/27(金) 22:38:45友達に訊いてまわったけど自分の目で福井県を見たやつは
一人もいないんだ。
0824デフォルトの名無しさん
2006/01/27(金) 22:42:50愚かな思い違いだ
0825デフォルトの名無しさん
2006/01/27(金) 22:53:23HWND_TOPMOSTで代用してるけど
これはこれで色々問題あって
0826デフォルトの名無しさん
2006/01/27(金) 22:54:43(・∀・)ニヤニヤ
0827デフォルトの名無しさん
2006/01/27(金) 22:56:38流出ソースでも読んだのかな。
漏れが試した範囲ではXXXだから、
誰のどのPCでもそんな制限など付かないはずニダ
とかじゃないだろうな・・・
0828デフォルトの名無しさん
2006/01/27(金) 23:13:00HKEY_CURRENT_USER\Control Panel\Desktop\ForegroundLockTimeout
がいじってあったりすると「ドキュメントにあるような制限は実際にはない」と思えちゃうかも。
0829デフォルトの名無しさん
2006/01/27(金) 23:22:38>?フォアグラウンドプロセスがデバッグ中である。
により、制限が無いように見えちゃうとか。
0830デフォルトの名無しさん
2006/01/27(金) 23:30:50自分で試したのか、お前ら?
0831デフォルトの名無しさん
2006/01/27(金) 23:31:490832デフォルトの名無しさん
2006/01/27(金) 23:33:24君は試してないのかい?
0833デフォルトの名無しさん
2006/01/27(金) 23:37:25うまくいかないってのが、タスクバーでボタンが点滅するだけ
っていうのならば、それがSetForegroundWindowの制限。
820のリンク先にその制限を突破するコードがある。
>>819,822,826,830,832
いい加減痛いから、それ以上恥の上塗りをするのはやめた方がいいぞ。
0834デフォルトの名無しさん
2006/01/27(金) 23:39:02830ha
ドキュメントに「XXXはダメ」って書いてあっても、
自分の環境で試してOKだったら行うのかい?
漏れはそんなことしたこと無いよ。
逆にドキュメントでOKとなっていても、
試してダメ⇒回避コード作成ってのはあるけど。
0835デフォルトの名無しさん
2006/01/27(金) 23:46:04ファイル(アイコン)のドラッグドロップはDragAcceptFiles()使って
WM_DROPFILES取れば得られるみたいですけど、
リッチテキストのテキスト等のドロップはどういう仕組みで行われているのでしょう?
visualstudioのコードエディタとMSNメッセンジャの入力フォーム間とかでもD&Dできるので
アプリ内じゃない処理が行われてると思うんですが。
他のアプリのリッチテキストからのD&Dを許可する方法なぞあれば教えてください
0836デフォルトの名無しさん
2006/01/27(金) 23:49:100837デフォルトの名無しさん
2006/01/27(金) 23:52:23RegisterDragDrop
0838デフォルトの名無しさん
2006/01/28(土) 00:11:360839デフォルトの名無しさん
2006/01/28(土) 03:03:42"C:\test1\test2\test3\" というディレクトリを作りたいとき、
test1 や test2 の存在しなくても、一発で test3 までの
ディレクトリを作成してくれるAPIがあったと思うのですが、
どなたか教えて頂けないでしょうか?
確か、winhelp.dll の MakeSureなんとかかんとか API だったと思うのですが。。。
0840デフォルトの名無しさん
2006/01/28(土) 03:04:270842デフォルトの名無しさん
2006/01/28(土) 06:58:06OLEドラック&ドロップ
0843デフォルトの名無しさん
2006/01/28(土) 07:43:480844デフォルトの名無しさん
2006/01/28(土) 08:53:30等価な処理は無理。
0845デフォルトの名無しさん
2006/01/28(土) 13:11:19多分無理と思う。DLLインジェクションがやりたいのなら、SetWindowsHookexでもできると思うが。
多分9x系で使えるはず
0846デフォルトの名無しさん
2006/01/28(土) 15:55:140847デフォルトの名無しさん
2006/01/28(土) 16:09:52スタンバイ状態の時はアプリケーションは動作していないと思うが?
0848デフォルトの名無しさん
2006/01/28(土) 17:16:260849デフォルトの名無しさん
2006/01/28(土) 18:09:10一応、SetWaitableTimerで出来るが、お前さんのやりたいことは
これでいいのか?
0850デフォルトの名無しさん
2006/01/28(土) 18:27:35エスパーとしては失格です。
0851デフォルトの名無しさん
2006/01/28(土) 19:06:50自分が復帰する状況を実現したいです。安易には
// 何か処理
SendMessage(...); // 別プロセスに投げる。ハンドラは記述済
// 何か処理
というのを思いつきます。他に名前付きイベントオブジェクトで
// 何か処理
SignalObjectAndWait(...); // 別プロセスを起こし、処理終了後SetEventなど呼ぶ
// 何か処理
などともできそうです。どう実装してもいいんですが、なるべく
パフォーマンスを良くしたいです。
どちらかと言われれば、どちらを選べばよいでしょうか?
0853デフォルトの名無しさん
2006/01/28(土) 20:38:00おいおい何年前のPCの話してんのよw
スタンバイから(RTC等で)復帰なんてAPMの当時から実現してるってw
でなきゃタスクスケジューラは魔法か何かかw
0854デフォルトの名無しさん
2006/01/28(土) 20:45:260855デフォルトの名無しさん
2006/01/28(土) 20:48:410856デフォルトの名無しさん
2006/01/28(土) 20:50:530857デフォルトの名無しさん
2006/01/28(土) 20:52:22あ、Wake on LAN でも起こせるよ。
0859デフォルトの名無しさん
2006/01/28(土) 20:53:55自分が賢いことを証明する為に言い争うのはやめれ。
0860846
2006/01/28(土) 20:55:45過去の発言を見ないで質問したためこんなことになりました。
0861デフォルトの名無しさん
2006/01/28(土) 20:56:49プッw
言いがかりww
0862デフォルトの名無しさん
2006/01/28(土) 20:57:39修正
0863デフォルトの名無しさん
2006/01/28(土) 21:04:39あ、そーでしたか。こちらこそ失礼しました。
MSDNのサンプルで分ると思うけど
「ロック音」ってオープンソースのアプリあるから
それ参考になるかもよ。
>>861-862
どこのスレだか忘れたけど
かなり前にも同じ質問の回答で無視されたもんで、つい
0864846
2006/01/28(土) 21:22:370865デフォルトの名無しさん
2006/01/29(日) 00:42:16-----
OPENFILENAME ofn;
char szFileName[MAX_PATH] = "*.txt";
char szFile[MAX_PATH] = "";
memset( &ofn, 0, sizeof(ofn) );
ofn.lStructSize= sizeof(ofn);
ofn.hwndOwner= hWnd;
ofn.lpstrTitle= "ファイルを開く";
ofn.lpstrFilter= "テキスト文書 (*.txt)\0Perlスクリプト (*.cgi)\0*.cgi\0すべてのファイル (*.*)\0*.*\0\0";
ofn.lpstrFile= szFileName;
ofn.lpstrFileTitle= szFile;
ofn.nMaxFile= MAX_PATH - 1;
ofn.Flags= OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
ofn.lpstrDefExt= "txt";
GetOpenFileName(&ofn);
0866デフォルトの名無しさん
2006/01/29(日) 00:47:55コピペで出るが他に何かおかしなことしてないか?
0867デフォルトの名無しさん
2006/01/29(日) 01:00:55Win2000+VCならそのコードで普通に表示されたよ。
おそらくlStructSizeがらみの問題では?
ここちょっとややこしいんだよね。
↓こんなの一応貼っとくけど
ttp://homepage3.nifty.com/aokura/tips/trouble.html
0868デフォルトの名無しさん
2006/01/29(日) 08:38:070869デフォルトの名無しさん
2006/01/29(日) 11:00:17そのウインドウ切り替えをしたいときに
http://techtips.belution.com/ja/vc/0012/
の例のように
SystemParametersInfo( SPI_SETFOREGROUNDLOCKTIMEOUT,0,(LPVOID)0,0);
するのではなく、あなたのアプリケーションをインストールするときに
SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, (LPVOID)0, SPIF_SENDWININICHANGE | SPIF_UPDATEINIFILE);
すべきだどMicrosoftは言っています。
そういうわけで
http://techtips.belution.com/ja/vc/0012/
は完璧な回答ではないと思います。
http://support.microsoft.com/kb/97925/ja
Windows 2000 では、呼び出し元のスレッドでフォアグラウンド ウィンドウを
変更できない限り、SystemParametersInfo の呼び出しが失敗するので、
セットアップまたはパッチ アプリケーションから呼び出さなければなりません。
0870デフォルトの名無しさん
2006/01/29(日) 12:11:12レジストリをいじるのだと思いますが、どのようにやればよいのでしょうか?方法を教えてください。
0871867
2006/01/29(日) 12:21:04そっちのOSは2000かXPなんでしょ。
commdlg.hと867のリンク先とttp://diarynote.jp/d/59398/の中ほどの項をよく読んでみてよ。
できればWindows2000発表前の古いSDK(VC6付属のとか)のcmmdlg.hも。
Windows2000で構造体のサイズが拡張されたけど
拡張後のサイズ88で9xやNTで動かそうとしたとき起こる。
なのでBCCに限らず、VCでも起こりうる。
(フリーズするのではなくて、表示されずにそのままスルーされる。)
865の実行環境は9xかNTなのでは?
>>865
とりあえず
lStructSize=OPENFILENAME_SIZE_VERSION_400;とするか
#define _WIN32_WINNT 0x0400としてみてよ
それで駄目なら他の問題だ。
0872デフォルトの名無しさん
2006/01/29(日) 12:22:59英語版も合わせてよく読め。SPIF_SENDWININICHANGE | SPIF_UPDATEINIFILE を
指定するのは、SetForegroundWindowの動作を、95,NT4と同じようにするために
アプリのインストール時に恒久的に変更する場合のことだ。
0873デフォルトの名無しさん
2006/01/29(日) 13:02:25知識が足らないばかりかソケットの作成はsocket関数で行い
インターネットの場合引数にAF_INET、TCPならSOCK_STREAM ...
程度の事しか判りません。
どこかWinSockでの指針を示しているサイトはないでしょうか・・
0874デフォルトの名無しさん
2006/01/29(日) 13:05:440875デフォルトの名無しさん
2006/01/29(日) 13:13:54ありがとうございます。ちと勉強してきます
0876デフォルトの名無しさん
2006/01/29(日) 15:40:30「関連付けを変更するためには、レジストリをどのように変更すればよいか」
というのは、AIP全く関係ないのでスレ違い。
レジストリを操作するAPIは適当にググったりMSDN調べたりすればすぐわかる。
0877デフォルトの名無しさん
2006/01/29(日) 16:17:17環境:WinXP,Excel2002VBA
POSTメソッドで検索した結果(書籍情報)を、Excelの表に書き下ろすマクロを作っています。
WebBrowser.Documentプロパティを使うと簡単なのですが、HTMLの表示が余計なので
WebBrowserを介さずに、直接DOMオブジェクトを取得したいと考えています。
いろいろ調べたところ、
- MSXML.DOMDocumentで、POSTして読み込んだXMLのDOMを取得できる
- MSXML.XMLHTTPで、POSTして読み込んだHTMLのソースを取得できる
- MSHTMLで、URL指定して読み込んだHTMLのDOMを取得できる
というところまで分かった(実行できた)のですが、
POSTして読み込んだHTMLをDOMにする方法が見つかりません
ご教示くださいますよう、お願いいたします。
0878デフォルトの名無しさん
2006/01/29(日) 17:00:570879デフォルトの名無しさん
2006/01/29(日) 17:07:55で、どのスレが最適なんですか?
0880デフォルトの名無しさん
2006/01/29(日) 17:18:38はい。おそらくものによるんだと思いますが、VBE(エディタ)の「参照設定」メニューで
Microsoft XML v3.0などを選択してearly bindingしたり
Set obj = CreateObject("MSXML2.XMLHTTP")のようにlate bindingしたりして
そのままobj.openとかobj.sendとか使うことができます。
0881デフォルトの名無しさん
2006/01/29(日) 17:31:05できるよ。
>>880
それはActiveXだね。
0882デフォルトの名無しさん
2006/01/29(日) 17:38:57そのファイルをURLと指定して、MSHTMLに食わせるとか?
0883デフォルトの名無しさん
2006/01/29(日) 18:05:30良く知らんけどぐぐったらこんなんが出て来た。
http://sgry.sakura.ne.jp/articles/fileassociation.html
> Windows XP で新しくなった関連づけシステムについて
> 調べてわかった事を書いていきます
0884865
2006/01/29(日) 19:00:00で直りました。
ありがとうございました。
0885デフォルトの名無しさん
2006/01/29(日) 20:39:25GetOpenFileNameはそれで済むかもしれんが
defineすることによる他への影響は??
0886デフォルトの名無しさん
2006/01/29(日) 21:02:150887デフォルトの名無しさん
2006/01/29(日) 21:34:130888デフォルトの名無しさん
2006/01/29(日) 21:58:53'a'〜'z','0'〜'9'をRegisterHotKey()で登録し、
WM_HOTKEYが来たら自分自身をSetWindowPos()、SetFocus()で
アクティブにしたうえで、Hotkeyを解除、その先は通常に入力〜と言った感じで
任意のエディタやアプリケーションに対する入力に被せています。
しかし、これだと最初の1文字の入力がHotkeyとして食われてしまうため、
アクティブになった直後にkeybd_eventで同じ入力を送って補完するようにしています。
自分のマシンだとこれで上手くいくのですが、
他のマシンで試すと、なぜかkeybd_eventが無視されてしまい、最初の一文字が入力されません。
SendInput()も試してみましたが同様でした。
また、他の部分でkeybd_eventを実行してみたら正常に動作しています。
フォーカスを切り替えた直後のkeybd_eventに問題があるようです。
ただ、SetFocus()とkeybd_eventのSleep()を噛ましてみてもダメでした。
何かいい解決策はありますでしょうか。
対象のマシンも同様にWindowsXPでパフォーマンスは少し下くらい、
VC++は入っていませんが、.netのSDKやらplatformSDKやらが入っています。
0889デフォルトの名無しさん
2006/01/29(日) 22:35:47キーボード設定のリピート入力時間設定が大きく違うとかいうオチ?
0890デフォルトの名無しさん
2006/01/29(日) 23:03:01それが心配なら#define _WIN32_WINNT 0としてしまえばよい。
俺は大抵それに加え_WIN32_WIDOWSと_WIN32_IEも0にしている。
0891デフォルトの名無しさん
2006/01/29(日) 23:38:47自分のPCだとプリントスクリーン経由で画像のキャプチャーをすると失敗することがあって困ってます・・・
0892・∀・)っ-○●◎- ◆Pu/ODYSSEY
2006/01/29(日) 23:43:14動画とかはわざとキャプチャ不能にしてることがあるよ。
GetDC() で対象ウィンドウ(NULLを指定すればデスクトップ全体)のDCを取得して
CreateCompatibleDC()してCreateCompatibleBitmap()
0893デフォルトの名無しさん
2006/01/29(日) 23:44:41同じプログラム内で2度以上PostQuitMessageが呼ばれるのは問題ないのでしょうか??
用途は、2枚目のウインドウを破棄するときに、メインとは違うところで行われているディスパッチメッセージを抜けたいのです。
PeekMessageにウインドウハンドルをいれて監視してるのですが、WM_DESTRYやWM_QUITやWM_CLOSEが捕獲できませんでした。
PeekMessageのウインドウハンドルをNULLにした場合でも結局WM_DESTRYやWM_CLOSEは捕獲できませんでした。
こういう使い方って問題ないのでしょうか?
0894デフォルトの名無しさん
2006/01/29(日) 23:45:210895・∀・)っ-○●◎- ◆Pu/ODYSSEY
2006/01/29(日) 23:49:09PostQuitMessageを送るとメッセージループが終了するんで、それ以降メッセージ処理しようがない気が。。。。
0897デフォルトの名無しさん
2006/01/29(日) 23:53:08設定調べてみましたが、両方とも全く同じデフォルト値のままでした
0898デフォルトの名無しさん
2006/01/30(月) 00:20:23>PostQuitMessageを送るとメッセージループが終了するんで
直ぐには終わらない。WM_QUITは優先順位がものすごく低いから、
キューに貯まったメッセージが全部消えて無くなるまではやってこない。
0899デフォルトの名無しさん
2006/01/30(月) 00:21:19レス感謝!
メッセージ処理をしているところが2箇所あるんです。
えーっと、windowsにはscanf等の代わりとなるようなGUIの入力ダイアログがありません。
なので、自作しようと思って、表示とかは問題なくできたんですけど、(createwindowexでコントロールを貼り付けた。)
一つの関数に押し込めて便利に使いたいので、
その関数の中で専用のメッセージ処理を行いたいのです。
それで、その専用のメッセージ処理から抜ける際に何をフラグにして抜けるか非常に悩みまして、
一応、WM_QUITをフラグにしたんです。
で、WM_QUITを生成するためにはPostQuitMessageを呼ぶことになってしまって・・・。
こんな感じで大丈夫なのかと思って質問しました。
ぶっちゃければ、2枚目以降のウインドウを破棄したときに最後に呼ばれるメッセージがわかれば問題ないと思いますが、検討がつきません。
なんか妙案ありませんか??
0900899
2006/01/30(月) 00:25:34一応これでも今のところは意図の通り動いてはいます。
が、ちょっと挙動に不安がのこるので非常に気になっています。
0901デフォルトの名無しさん
2006/01/30(月) 00:34:11そういうときは普通モーダルダイアログを使う。
0902デフォルトの名無しさん
2006/01/30(月) 00:48:05あー、ダイアログか。
うーんあんまり使ったことないので候補から外れていました。
その手も模索してみようと思います。
レス感謝。
やっと寝れます。=D
0903デフォルトの名無しさん
2006/01/30(月) 01:17:50>動画とかはわざとキャプチャ不能にしてることがあるよ。
それ、単にオーバーレイ表示なだけな気が‥‥それ
0904デフォルトの名無しさん
2006/01/30(月) 03:22:44教えてください!あと、終了するときはDestroyWindow()とCloseWindow()
とPostQuitMessage(0)とexit(0)のどれが本当は正しいんですか?
(exit(0)が一番楽だけど・・・)
0905デフォルトの名無しさん
2006/01/30(月) 03:38:00WM_DESTROY:ウインドウが消滅し始めるとき
WM_CLOSE:ユーザーがウインドウを閉じようとしたとき(Xを押したとき、とか)
WM_QUIT:アプリケーションが終了しようとするとき
ウインドウとアプリケーションとの区別が付けば分かるかな?
DestroyWindowとCloseWindow、PostQuitMessageとexitの関係も同じようなもん。
またウインドウのメッセージループを1つのスレッドと考えると、
それを終らせるメッセージをWindowsに投げるのがPostQuitMessage
普通に強制終了させるのがeixtかな?
1アプリで複数ウインドウのソフト作ったらわかるかも。
まぁMSDN嫁。
0906デフォルトの名無しさん
2006/01/30(月) 03:44:37そんな変なことするより、RegisterHotKeyを使うのを
やめた方がいいかと。
>>904
WM_CLOSEはウィンドウの閉じるボタンが押された直後等に
送られてくるメッセージ。まだこの時点では閉じるのを拒否
することができる。(ファイルを保存するか聞くのはここ)
WM_DESTROYはウィンドウが破棄される直前に送られてくる。
もうこの時点では後戻りはできない。
後始末等が必要なときは、ここで処理するのが普通。
WM_QUITは最後、これでおしまいってときに送られてくる。
普通はWM_DESTROYもWM_QUITもアプリケーションから直接
送ったりはしない。DestroyWindow(), PostQuitMessage()を使う。
CloseWindow()というAPIはウィンドウを閉じるのではなく、
最小化するだけなので全然関係ない。
0907デフォルトの名無しさん
2006/01/30(月) 04:18:36即スレありがとうございます!謎が解けました。
これで今日も眠れます!
0908デフォルトの名無しさん
2006/01/30(月) 10:00:24> PostQuitMessageとexitの関係も同じようなもん
全くの別物な訳だが。
PostQuitMessage : 指定されたスレッドが自らの終了を要求したことをシステムに伝えます。
exit : C標準関数で、プロセスを終了する。mainでのreturnはこの処理と等価。
0909デフォルトの名無しさん
2006/01/30(月) 12:41:59パフォーマンステストで実行前に
Winのディスクキャッシュをクリアしたいんですが
どうすればいいんでしょうか?
メモリ分のダミーファイルを読み込むだけでいいんでしょうか?
0910デフォルトの名無しさん
2006/01/30(月) 16:26:33そのあとかいてるやんw
0911デフォルトの名無しさん
2006/01/30(月) 17:00:33AUTOEXEC.BATのSMARTDRV.EXEをコメントアウト(;^ω^)
0912デフォルトの名無しさん
2006/01/30(月) 17:16:48Win16ならともかくWin32でそれはないだろ。
0913デフォルトの名無しさん
2006/01/30(月) 17:17:42C/C++のexitに対応するのはExitProcessだろ。
0914デフォルトの名無しさん
2006/01/30(月) 20:49:03c/c++のexitはCRTの終了処理が含まれるから厳密にはちがうよ
0915デフォルトの名無しさん
2006/01/30(月) 21:12:25論点はそこじゃないと思うのだが……。
PostQuitMessage()とExitProcess()はまったく違うぞ。
0916デフォルトの名無しさん
2006/01/30(月) 21:18:290917デフォルトの名無しさん
2006/01/30(月) 22:26:230918デフォルトの名無しさん
2006/01/31(火) 02:36:23よろしくお願いします。
0919デフォルトの名無しさん
2006/01/31(火) 03:02:180920デフォルトの名無しさん
2006/01/31(火) 03:03:470921デフォルトの名無しさん
2006/01/31(火) 03:22:260922デフォルトの名無しさん
2006/01/31(火) 03:23:00FindWindowEx関数で該当するウィンドウのハンドル(HWND)を受け取り
GetDC乃至BeginPaintでデバイスコンテキストを取得すればいいんじゃまいか?
0924デフォルトの名無しさん
2006/01/31(火) 11:26:07GetWindowText関数で取得したウィンドウキャプションが一致しません。
Spy++はどのようにウィンドウキャプションを取得しているのでしょうか?
0925デフォルトの名無しさん
2006/01/31(火) 11:35:30志村!逆!逆!
0926デフォルトの名無しさん
2006/01/31(火) 11:41:44Spy++の動きがわかればそれを真似すればよいかなと...
もっと簡単な方法があるのでしょうか?
ちなみにGetWindowText関数で取得した値は、
SendCommand関数でWM_GETTEXTを送ったときと同じ値が返ってきます。
0927デフォルトの名無しさん
2006/01/31(火) 11:53:01取り方が違うんじゃなくて、取ってる対象が違う希ガス
0928デフォルトの名無しさん
2006/01/31(火) 11:58:59GetWindowTextは同一プロセス内のみ
0929デフォルトの名無しさん
2006/01/31(火) 12:01:37> SendCommand
SendMessageだろ?
0930デフォルトの名無しさん
2006/01/31(火) 12:06:110931デフォルトの名無しさん
2006/01/31(火) 12:33:380932デフォルトの名無しさん
2006/01/31(火) 12:42:21メッセージを送るのはSendMessageだろ?
0933デフォルトの名無しさん
2006/01/31(火) 13:06:000934924
2006/01/31(火) 13:17:36解決してません。
0935924
2006/01/31(火) 14:14:10ttp://support.microsoft.com/kb/112649/JA/
>>928さんが言ってみえることが関係するのでしょうか?
0936928
2006/01/31(火) 14:37:41MSDNをよく読め。
同一プロセスの時と違うプロセスの時とで動作が変わる事が書かれている。
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/getwindowtext.asp
0937924
2006/01/31(火) 14:53:30読んでみます。ありがとうございました。
0938デフォルトの名無しさん
2006/01/31(火) 15:00:54よろしくお願いします。
0939デフォルトの名無しさん
2006/01/31(火) 15:07:33日本語のほうにも書いてあるぞ。
MSDNにしては完璧に訳してある。
0940デフォルトの名無しさん
2006/01/31(火) 15:36:09グローバルフック
0941デフォルトの名無しさん
2006/01/31(火) 16:02:460942デフォルトの名無しさん
2006/01/31(火) 16:09:260943デフォルトの名無しさん
2006/01/31(火) 16:13:19MSDNライブラリじゃ足りない?
インシデント消費して、MSに聞いてみれ
0944924
2006/01/31(火) 16:16:33同一プロセスでないとGetWindowTextはNULLを返すということではないのでしょうか?
今回の場合NULLではなくWM_GETTEXTと同じ値を返します。
Timerイベント内(>>935)でGetWindowTextを呼び出すのと、
EnumChildWindowsのコールバック関数内で呼び出すのに違いがあるのでしょうか?
もちろんウィンドウハンドルは同じ値です。
0945924
2006/01/31(火) 16:46:11EnumChildWindowsを実行していうほうが同一プロセスで、
Timerイベントのほうが別プロセスでした。
そのため返す値が違ったようです。
スレ汚して本当にすみませんでした。
0946デフォルトの名無しさん
2006/02/01(水) 10:50:280947デフォルトの名無しさん
2006/02/01(水) 11:16:280948デフォルトの名無しさん
2006/02/01(水) 11:57:180949デフォルトの名無しさん
2006/02/01(水) 12:06:510950デフォルトの名無しさん
2006/02/01(水) 12:08:200951デフォルトの名無しさん
2006/02/01(水) 12:13:30wsprintf
0952デフォルトの名無しさん
2006/02/01(水) 12:22:14逆だろ
0953デフォルトの名無しさん
2006/02/01(水) 12:38:410954デフォルトの名無しさん
2006/02/01(水) 12:40:22どんな方法がありますか?
0955デフォルトの名無しさん
2006/02/01(水) 12:47:380956デフォルトの名無しさん
2006/02/01(水) 16:29:340957デフォルトの名無しさん
2006/02/01(水) 18:31:11しかしAPI以外の方法をすすめる。
0958デフォルトの名無しさん
2006/02/01(水) 19:13:32ディスプレイの電源が入っているかどうかを調べるAPIってありませんかね?
また、ディスプレイ関連で接続されているディスプレイの最大解像度を取得する関数なんか、無いですかね?
0959デフォルトの名無しさん
2006/02/01(水) 20:25:300960デフォルトの名無しさん
2006/02/01(水) 21:00:14ディスプレイの電源状態が何に必要なのかが気になる。
0961デフォルトの名無しさん
2006/02/01(水) 21:07:24単純に、ディスプレイの電源状態を確認して、ディスプレイの電源が付いたと同時になんらかのプログラムを起動させることを考えています。
例えば、動画とかが電源ONと同時に頭から見れたら便利ですよね?
0962デフォルトの名無しさん
2006/02/01(水) 21:14:000963デフォルトの名無しさん
2006/02/01(水) 21:14:060964デフォルトの名無しさん
2006/02/01(水) 21:25:240965デフォルトの名無しさん
2006/02/01(水) 21:26:57別に?
0966デフォルトの名無しさん
2006/02/01(水) 21:35:44印刷プレビュの実装に関して教えてもらえませんか。
MFCを使えばちょちょいの様ですが(MFCは使って無いので???ですが)、SDKに実装する方法を知りませんか。
正直、自分でガリガリ構築するのは…無理かと思ってます。
そこで、市販でも構わないのでクラスライブラリやDLLを探しているのですが…
一般的にはどの様にしているのでしょうか?
# やはりMFC?
# SDKベースでMFCの印刷プレビューを実装する方法でも構いません。
どなたか宜しくお願い致します。m(__)m
0967デフォルトの名無しさん
2006/02/01(水) 21:39:26ソース(VC6.0で作成。MFCとかは使用していません)
http://tnet1.s18.xrea.com/prog/ComboBox_Test.zip
左から順に
CBS_DROPDOWN、CBS_SIMPLE、CBS_DROPDOWNLIST
0968デフォルトの名無しさん
2006/02/01(水) 21:49:42ちゃんと追加されてる。
コンボボックスの高さが足りないため表示されないだけ。
0969デフォルトの名無しさん
2006/02/01(水) 22:08:36印刷も結局のところDCを使った描画です
0970デフォルトの名無しさん
2006/02/01(水) 22:14:35SDKで印刷プレビュー実装しているの探し見たけど、やっぱり
>>969の言う通り、DC使った描画だったよ。印刷の仕方からして
当然といえば当然だけど。
MFCは実装するというより、AppWizard使って作れば最初からつけられる。
「Doc-Viewをサポート」にチェックするだけ。
0971デフォルトの名無しさん
2006/02/01(水) 22:22:54>>957
>しかしAPI以外の方法をすすめる。
これは何かAPIで問題があるからAPI以外と言うことをお勧めしてくれてるのでしょうか?
それともDebugが難しいから?
0972デフォルトの名無しさん
2006/02/01(水) 22:43:05リソースのコンボボックスの高さを弄ったら見事にできました。
ありがとうございました!
0973デフォルトの名無しさん
2006/02/01(水) 23:00:52自分は「猫でも分かる...」を参考に作った。
win98 と winXP でドライバのセットが違うのが面倒だった。
ページが複数になるとき、狙ったページを見るとか、印刷するとかが面倒。
MS Word のようなヘッダ、フッタ、ページ番号などを付けようとすると
更に面倒。
bmp の方があっさりしている。
0974デフォルトの名無しさん
2006/02/02(木) 00:58:43調べないで答えるがターミナルサービスAPIでできそうな希ガス
0975デフォルトの名無しさん
2006/02/02(木) 06:14:542つのドライブレターが、同一のHDDに属しているかどうかを見分ける方法を教えてください。
0976デフォルトの名無しさん
2006/02/02(木) 09:57:14見分ける必要がどこにあるのかを教えて下さい。
0977デフォルトの名無しさん
2006/02/02(木) 10:05:37Fire File Copyのようなファイルコピー援用ソフトだと必須だな。
やり方は知らんが。
0978デフォルトの名無しさん
2006/02/02(木) 10:06:41読み出し方は忘れたが、HDD にはメーカ名や Ser No. やオレはこういうものだ、
こう読み取ってくれえというのが付いているから読み取って比べれば。
デバイス・マネジャなんぞで出てくるヤツ。
0979デフォルトの名無しさん
2006/02/02(木) 11:34:12何のためにこのスレに居座っているのか教えてください。
0980デフォルトの名無しさん
2006/02/02(木) 12:24:55なぜ教えなければならないのか教えてください。
0981デフォルトの名無しさん
2006/02/02(木) 12:37:500982デフォルトの名無しさん
2006/02/02(木) 17:04:11なぜ踊ってはいけないのか教えてください。
0983デフォルトの名無しさん
2006/02/02(木) 20:08:46タイトルバーやダイアログメッセージの取得方法は分かりますが、
画面上に配置されているリストボックスやラベルの文字列も取得をしたいのです……
0984デフォルトの名無しさん
2006/02/02(木) 20:14:04それら全てウィンドウです
0985デフォルトの名無しさん
2006/02/02(木) 20:14:52あるよ
ヒントは>>984
0986デフォルトの名無しさん
2006/02/02(木) 20:15:31それは別プロセスのウインドウ?
昔からあるコントロールは、大抵取得するメッセージがあるはず。
最近のコモンコントロールは、別プロセスから取得できないから、
どうしてもやりたければ、DLL注入してごにょごにょってことになるのかな。
そこまでしてやりたいのかどうかは知らないけど。
0987デフォルトの名無しさん
2006/02/02(木) 21:26:59WTLはどう?
0988デフォルトの名無しさん
2006/02/02(木) 21:58:540990デフォルトの名無しさん
2006/02/02(木) 22:11:27MyGina.dllを作成するのははだめという訳じゃない。
ミスって回復コンソールからレジストリを復旧するとか
OS再インストのおまけが付きとか、
Myサービス作ってLogonを通知するのがメンドイとか
ドキュメントが少ないとか。
たとえばLogon後に適当なEXEを走らせて検知する方が簡単かと思う。
>>975
CreateFile()→DeviceIoControl()使って
"\\\\.\\C:"でIOCTL_DISK_GET_DRIVE_LAYOUT
したものと
"\\\\.\\D:"でIOCTL_DISK_GET_DRIVE_LAYOUT
したもののシグニチャが一致したらそうなる
ようだ。ただしコードは未確認。
0991デフォルトの名無しさん
2006/02/02(木) 22:46:21特定のポートに刺さっているUSB機器(自作)のファームアップデート時に、
物理的にコネクタ抜き差ししているのですが、この抜き差しの作業ををAPIで擬似的に
再現することは可能でしょうか?
デバイスマネージャからの接続ポートの無効化→有効化で出来るか、と考えた
のですが、それを実現できる関数の名前が分からずにいます。
上記手段を使う場合にググるべき関数の名前か、その他一般的手段のヒントを
教えてもらえませんでしょうか?
0992デフォルトの名無しさん
2006/02/02(木) 23:05:05http://www.codeproject.com/system/DevicePropertySheet.asp
↑
と同じような感じでDevMgr.dllをハックしてみては?
0993デフォルトの名無しさん
2006/02/02(木) 23:14:27USB機器側が自作なら、機器側で抜き差しをエミュレート(D+=D-=Low)
するのが簡単確実。
0994デフォルトの名無しさん
2006/02/02(木) 23:16:280995991
2006/02/02(木) 23:40:35>992殿の手段と >994殿のAPI、チェックしてみようと思います。
>993殿
ファームアップデートした段階で応答なくなっちゃうんです(死
で、再起動するには抜き差し……と。
0996デフォルトの名無しさん
2006/02/02(木) 23:44:560997デフォルトの名無しさん
2006/02/03(金) 00:31:45http://pc8.2ch.net/test/read.cgi/tech/1138893959/
0998デフォルトの名無しさん
2006/02/03(金) 02:32:420999デフォルトの名無しさん
2006/02/03(金) 02:33:491000デフォルトの名無しさん
2006/02/03(金) 02:34:3310011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。