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


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

Win32API質問箱 Build39
1 名前:デフォルトの名無しさん :2006/01/08(日) 07:34:10
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんたちが答えてくれるかも。

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

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


2 名前:デフォルトの名無しさん :2006/01/08(日) 07:35:11
-過去スレ
38 ttp://pc8.2ch.net/test/read.cgi/tech/1133798345/
37 ttp://pc8.2ch.net/test/read.cgi/tech/1131884991/
36 ttp://pc8.2ch.net/test/read.cgi/tech/1128951330/
35 ttp://pc8.2ch.net/test/read.cgi/tech/1125850096/
34 ttp://pc8.2ch.net/test/read.cgi/tech/1122723009/
33 ttp://pc8.2ch.net/test/read.cgi/tech/1120153520/


3 名前:デフォルトの名無しさん :2006/01/08(日) 07:36:59
32 ttp://pc8.2ch.net/test/read.cgi/tech/1117271829/
31 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

4 名前:デフォルトの名無しさん :2006/01/08(日) 07:38:19
- MSDN Online
http://www.microsoft.com/japan/msdn/
- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
- Platform SDK Update
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
- Google
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

5 名前:デフォルトの名無しさん :2006/01/08(日) 07:39:47
漏れてないよな?

6 名前:デフォルトの名無しさん :2006/01/08(日) 09:12:10
>1 乙カレー

7 名前:デフォルトの名無しさん :2006/01/08(日) 11:27:24
──
      │
      │
──


──


8 名前:デフォルトの名無しさん :2006/01/08(日) 11:28:59
  ──
│      │
│      │
  ──
│      │
│      │
  ──

9 名前:デフォルトの名無しさん :2006/01/08(日) 11:47:15

  / ̄/   /   ̄/   ̄/ /  / / ̄  / ̄   ̄/ / ̄/ / ̄/
  /  /   / / ̄   ̄/   ̄/    ̄/ / ̄/   / / ̄/.   ̄/
.   ̄     .  ̄   ̄       ̄    ̄        ̄

10 名前:デフォルトの名無しさん :2006/01/08(日) 14:11:33
所々に見えるポチポチは何ですか?

11 名前:デフォルトの名無しさん :2006/01/08(日) 14:22:18

  / ̄/   /   ̄/   ̄/ /  / / ̄  / ̄   ̄/ / ̄/ / ̄/
  /  /   / / ̄   ̄/   ̄/    ̄/ / ̄/   / / ̄/   ̄/
   ̄         ̄   ̄         ̄    ̄       ̄


12 名前:デフォルトの名無しさん :2006/01/08(日) 15:05:36
>>10
スレ違い。ちゃんと意味があるからよそで聞いてきなさい。

13 名前:デフォルトの名無しさん :2006/01/08(日) 16:01:18
常時点灯だろ

14 名前:デフォルトの名無しさん :2006/01/08(日) 16:42:20
>>9
うんこ

15 名前:デフォルトの名無しさん :2006/01/08(日) 17:50:22
>>10
液晶のドット欠けだから仕様の範囲内

16 名前:デフォルトの名無しさん :2006/01/08(日) 18:06:17
Cスレから誘導されてきました
VC6で gettimeofday はどこに入ってるのでしょうか?
一応VC98\Include以下は検索ソフトで調べました

17 名前:デフォルトの名無しさん :2006/01/08(日) 18:19:35
prototype宣言を探してるのか、関数本体を探してるのか

18 名前:デフォルトの名無しさん :2006/01/08(日) 18:19:36
Cドライブと見た

19 名前:デフォルトの名無しさん :2006/01/08(日) 18:28:47
誘導した奴は馬鹿なのかと一瞬思ったが、もしかしたらちゃんと考えがあるのか。
ついでに>>17-18の流れも分からない。

>>16
移動するなら元スレに一言書いた方がいんでない。
VC6には無いよ。このスレ的にQueryPerformanceCounter、timeGetTime辺りを使いなされ。
じゃなきゃcygwin辺りを使うとか。

20 名前:16 :2006/01/08(日) 19:20:32
ありがとうございます

21 名前:デフォルトの名無しさん :2006/01/08(日) 23:06:23
>>10
死兆星

22 名前:デフォルトの名無しさん :2006/01/08(日) 23:27:15
>>10
ちみのPCディスプレイのドット抜け

23 名前:デフォルトの名無しさん :2006/01/08(日) 23:36:28
リストビューのヘッダにソート順を示したりする矢印がありますが、
これってどうやったら出せるんでしょうか?

http://sylphys.ddo.jp/upld2nd/pc2/src/1136730635910.png
上図の赤丸の部分です。
たぶんWindows XP以降の機能だと思います。

24 名前:デフォルトの名無しさん :2006/01/09(月) 00:29:07
SysHeader32
SysListView32


25 名前:デフォルトの名無しさん :2006/01/09(月) 00:49:00
Header Controlsのどこかにあると思って探してるんですが・・・

26 名前:デフォルトの名無しさん :2006/01/09(月) 00:58:00
http://msdn.microsoft.com/msdnmag/issues/04/11/CQA/
http://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


27 名前:デフォルトの名無しさん :2006/01/09(月) 01:05:28
ありがとう。

まだ動作確認してないですが、おそらく
HDF_SORTUP HDF_SORTDOWN ですね。

Delphiで使うためのサンプル
http://www.winningcubed.de/?page=listviewsort

28 名前:デフォルトの名無しさん :2006/01/09(月) 07:57:43
ありがとう。

29 名前:デフォルトの名無しさん :2006/01/09(月) 17:12:45
APIを使用してIMEモードを制御する

--------------------------------------------------------------------------------


'標準モジュール内

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
変換モードを特定のセルにて「人名/地名」にしたい場合、上記をどのように変更したら良いのでしょうか?

30 名前:デフォルトの名無しさん :2006/01/09(月) 17:28:17
自分でそのAPI周りをMSDN等で調べようという気の無い者に教えることなど何も無い

31 名前:デフォルトの名無しさん :2006/01/09(月) 17:44:10
セルってことはVBAか?
なんにしてもここはコード丸投げなんてのが通るスレじゃないし、
MSDNも調べない奴に丁寧に教えるスレでもない。
半月勉強して出直してこい。

32 名前:デフォルトの名無しさん :2006/01/09(月) 20:53:13
質問です。環境は、XP、Visual C++ .NET です。
C++ 相談室から誘導されてきました。

CreateWindow にてウィンドウを作成したのですが、ウィンドウが反応しません。
具体的に言うと、[×] や [_] にマウスカーソルを当ててもへこむ様子もなく(当然クリックしても何もおきない)、
キャプションを D&D してもウィンドウが動きません。
考えられる原因はないでしょうか。

ツールバーから「閉じる」を選んだり、Alt+F4 での処理は受け付けれています。
また、[×] をクリックしたとき、WM_LBUTTONCLICK は飛んできているようです。

処理全体としては、まず不可視のメインウィンドウを作成し、
CreateWindow 終了後、そのウィンドウを親とする別の可視ウィンドウを作っています。
ためしに親ウィンドウを可視にしてみましたところ、親ウィンドウは反応しました。
が、子ウィンドウが反応しません。

ウィンドウは全てクラス化してあり、単純な処理ではないので、ソースを全て晒すのは困難です。
必要と思われる部分を晒します。

(続く)

33 名前:32 :2006/01/09(月) 20:54:03
// Parent.cpp

// 親ウィンドウクラスの設定
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;



34 名前:32 :2006/01/09(月) 20:54:35
// Child.cpp

// 子ウィンドウクラスの設定
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;

35 名前:32 :2006/01/09(月) 20:55:11
これらの処理は仮想クラスで行っており、
ウィンドウプロシージャでは、GetProp/SetProp によるオブジェクトの結びつけ、
継承先クラスのウィンドウプロシージャの呼び出し、など複雑な処理を行っていますので、
全体を晒すのは困難です。
ですが、WM_CREATE の返答としての処理は何も行っておりません。
その他も、WM_DESTROY などの特殊処理を除いて、全て DefWindowProc の処理が行われています。


以上です。長々と申し訳ございませんが、よろしくお願いします。

36 名前:デフォルトの名無しさん :2006/01/09(月) 21:17:30
>>35
メッセージは?

37 名前:デフォルトの名無しさん :2006/01/09(月) 21:17:40
全部晒すのは困難ですって、固めてロダにUPするという考えは無いのか
ってかそんな、登録部分だけ出されてもわかりゃせんわ

38 名前:デフォルトの名無しさん :2006/01/09(月) 21:20:27
全てDefWindowProcの処理が行われていますって言うけど
そういう現象が起きてる以上、「全て行われて」はいないってことだよ
本当にDefWindowProcに行ってるなら、×押しゃ消えるし_押しゃ最小化される

39 名前:デフォルトの名無しさん :2006/01/09(月) 21:25:34
>>35
ふと気になったが
メッセージ処理にWM_SYSCOMMAND入れてないか?

40 名前:32 :2006/01/09(月) 21:33:00
>>39
それは入ってないです。

>>38
DefWindowProc まわりを見直してみます。
解決しなかったらまとめてうpしてみます。ありがとうございました。

41 名前:デフォルトの名無しさん :2006/01/09(月) 21:41:56
exeを起動するさい、CPU一個だけ利用するようにして起動できないでしょうか?

win2000です。

42 名前:デフォルトの名無しさん :2006/01/09(月) 21:43:35
わけわからん。

43 名前:41 :2006/01/09(月) 21:55:28
タスクマネージャのプロセスの右クリックの「関係の設定」で、
CPU0のみチェックがついてる状態で起動できないでしょうか?

という意味です。わかりにくくてすいません。

CPU1個しかない場合は「関係の設定」はありません。

44 名前:sage :2006/01/09(月) 21:59:12
IEコンポーネントでIHTMLTableのput_borderには、どのような値を渡せば良いのでしょうか?
VARIANTでbstrValだとは思うのですが、どうしてもうまく行きません。
開発環境はVC6です。


45 名前:デフォルトの名無しさん :2006/01/09(月) 22:07:23
>>43
できる。
SetThreadAffinityMaskかなんかで調べてみればいい


46 名前:デフォルトの名無しさん :2006/01/09(月) 22:20:26
>>45
ありがとうございます。調べてみます。

47 名前:デフォルトの名無しさん :2006/01/10(火) 01:53:31
IMEを使った処理で
WM_IME_COMPOSITIONで処理をさせずに、WM_IME_CHARでWParamの値を見ると、
なぜか、Shift-JISコードが返ります。WindowはIsUnicodeWindowでTrueを返すのに、
なぜか、UnicodeじゃなくShift-JISが返ります。
単純なプログラムを作って、同じことすると確かにWM_IME_CHARのWParamはUnicodeで
自分のプログラムがどっか悪いと思うのですが、これ以上、どこを重点的に
調べればよいか皆目検討がつきません。
どうぞ、みなさんの知恵をかしてください。


48 名前:デフォルトの名無しさん :2006/01/10(火) 03:26:58
自分のプログラム

単純なプログラム
の違いを減らしていけばいいんじゃねえの?

49 名前:デフォルトの名無しさん :2006/01/10(火) 03:50:33
テキストファイルが何行あるのか調べる方法を教えてにょ

50 名前:デフォルトの名無しさん :2006/01/10(火) 03:53:27
$ wc -l hoge.txt

51 名前:デフォルトの名無しさん :2006/01/10(火) 03:58:30
>>49
APIだけでは難しい。
#まぁ、自分で数えろと。

>>50
いくらなんでもこのスレでそれはないだろう。

52 名前:デフォルトの名無しさん :2006/01/10(火) 04:28:53
>>48
ありがとうございます。ですが、自分のプログラム100行、ライブラリ1万行以上。
で、そのライブラリはMFCのように、フレームワークの上に構築された、コントロール
でして。単純に削除できないんです。ですが、やっぱそれしかないですよね。
私もそんな気がします。




53 名前:デフォルトの名無しさん :2006/01/10(火) 04:46:50
100行って、随分小さいのな。
1万行以上ってのも、そう書く以上は2万行には満たないんだろ。
その程度ならわけないやん。

54 名前:デフォルトの名無しさん :2006/01/10(火) 09:04:58
>>53
>>47です。はぁ、やっとわかりました。ちなみに、100行ってのは、単純にRegisterClassやCreateWindow
でウィンドウを作成して、WM_CHARやWM_IME_CHARやWM_IME_COMPOSITIONを捕まえて
そのwParam, lParam値をリストボックスに表示するだけでして。
で、原因なんですけど、問題のプログラムはUnicodeウィンドウとAnsiウィンドウが混在してて、
WH_GETMESSAGEでフックをしているんですけど、その時の処理がおかしかったようです。
「SetWindowHookExWでフックをインストールすれば、そのフックプロシージャにはAnsiウィンドウのメッセージだろうが
すべて、Unicode値が渡される前提でプログラムが作られていました。」
Windowsややこしい。



55 名前:デフォルトの名無しさん :2006/01/10(火) 09:33:59
VC++6 で XP, 2000 をターゲットに、リッチテキストファイルに画像処理を加えて表示する
プログラムを作成中です。

初めての VC だったので難儀し、ほぼ9割がたできたのですが、1点だけ分からずに
困っています。

RTFファイルをメタファイルとして再生・表示まではできるのですが、これをビットマップ
(DIB, DDB いずれでも可)に変換するには、どのようにしたら良いのでしょうか。
画像処理の関係で、どうしてもビットマップにする必要があるためです。

キーワードやポインタだけでも良いので、ご存知のかたがいらっしゃったら教えていただければ助かります。

56 名前:デフォルトの名無しさん :2006/01/10(火) 09:40:36
>>55
CreateDIBSectionでHBITMAP作ってHDCに関連付けて、
そこにメタファイルを再生すれば良いんじゃない?

57 名前:デフォルトの名無しさん :2006/01/10(火) 09:43:14
ダイアログのハンドルから、そのダイアログがモーダルかどうか
知る方法はありますか?

58 名前:デフォルトの名無しさん :2006/01/10(火) 10:47:08
ttp://wisdom.sakura.ne.jp/system/winapi/win32/win132.html
このページのEnumFontFamiliesEx()関数についてなんですが
上記ページをトレースしてコンパイルしてみた場合

BCC5.5.1ですと第3引数は(int)として定義されてるのでunsigned longは渡せないと吐いてくれます
そこでVC6.0でも同様にトレースしてみたんですが同じようなエラーを吐いてくれました
MSDNによるとコールバック関数へのアドレスを、とあるのですが・・どうすればいいでしょうかorz

参考にはならないと思いますがOSはXPhome+sp2の32bit環境です

59 名前:デフォルトの名無しさん :2006/01/10(火) 10:48:00
てめぇはキャストもできんのかカス

60 名前:デフォルトの名無しさん :2006/01/10(火) 10:48:39
いやキャストしたんですけどね
なぜかそのキャストが拒まれてしまうんですよ

61 名前:デフォルトの名無しさん :2006/01/10(火) 10:52:14
>>56

ありがとうございます。さっそく試してみます。


62 名前:デフォルトの名無しさん :2006/01/10(火) 10:54:26
よぉカス

63 名前:デフォルトの名無しさん :2006/01/10(火) 10:57:16
どこに第3引数がintと書いてあるよカス

64 名前:59 :2006/01/10(火) 10:59:58
>>60
VC++6.0でやったが、適切にキャストしたら普通にできたわけだが
だからキャストもできんのかと言っている

65 名前:デフォルトの名無しさん :2006/01/10(火) 12:29:30
>>58
エラーメッセージの解釈が間違っている。
問題のソースやエラーメッセージをそのまま載せない事が間違っている。

66 名前:デフォルトの名無しさん :2006/01/10(火) 12:30:02
>>58
はて、手元のMSDNには
int CALLBACK EnumFontFamExProc(
ENUMLOGFONTEX *lpelfe, // 論理的なフォントデータ
NEWTEXTMETRICEX *lpntme, // 物理的なフォントデータ
DWORD FontType, // フォントの種類
LPARAM lParam // アプリケーション定義のデータ
);
と書いてあるのだが。
サイトを鵜呑みにするだけでなく、MSDNもきちんと読んだらどうかね。

67 名前:デフォルトの名無しさん :2006/01/10(火) 12:31:24
>>54
> Ansiウィンドウ

変なオレ用語使うな。
なんだよ、Ansiウィンドウって?

68 名前:デフォルトの名無しさん :2006/01/10(火) 12:45:17
>>66
すっげー勘違いしてる予感w

69 名前:66 :2006/01/10(火) 12:57:59
>>68
あれ、>63と同じこと言ってるだけの積もりなんだが。
MSDNにはDWORDで宣言しろと書いてあるのに、件のサイトのソースにはintで宣言されているから
型が違って呼び出せないと言うエラーが出ているって話ではないのかな?
これが勘違いなら、暫くこのスレに書き込みするの止めるよ。

70 名前:デフォルトの名無しさん :2006/01/10(火) 13:02:35
>>67
>>54ですが、IsUnicodeWindowがTrueになるWindowをUnicodeウィンドウ、
もう一方をAnsiウィンドウと呼んでみただけです。
Win32のAPIもUnicode版とAnsi版の2種類があるって表現されていたもので。


71 名前:デフォルトの名無しさん :2006/01/10(火) 15:21:23
Ascii の A じゃないか?

72 名前:デフォルトの名無しさん :2006/01/10(火) 15:54:11
>>69
キミが言ってるのはコールバック関数の、EnumFontFamExProcのこと
>>58が言ってるのはEnumFontFamExProcのアドレスを渡す、EnumFontFamiliesEx関数の第3引数のことである
実際に、>>58のアドレスにあるソースをそのままコンパイルすれば、
EnumFontFamiliesExの呼び出しの所で引数の型エラーが出る


73 名前:デフォルトの名無しさん :2006/01/10(火) 15:58:34
>>71
まぁなんだ、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?

74 名前:デフォルトの名無しさん :2006/01/10(火) 16:16:39
こまっています・・・

Win2000SP4で権限チェックするモジュールがあります。
これは、NetUserGetLocalGroups()でログインしているユーザが所属しているローカルグループを
一覧して、「Administrators」グループに所属しているか確認しています。

ある特定の端末(数台)で、一覧されるユーザが「Users」権限のみになってしいます。

正常な端末では、「Users」と「Administrators」グループが取れます・・・

このAPIは端末の設定か何かで動作が変るものでしょうか??


75 名前:デフォルトの名無しさん :2006/01/10(火) 16:18:06
>>72
EnumFontFomExProcのアドレス渡す引数が
> BCC5.5.1ですと第3引数は(int)として定義されてるのでunsigned longは渡せないと吐いてくれます
ポインタでないって主張してるのか?
どう考えてもコールバック関数の仮引数の問題だろ?

76 名前:デフォルトの名無しさん :2006/01/10(火) 16:24:58
>>75
じゃあ、VC++6.0で仮引数をDWORDで宣言してコンパイルしてみろよ
同じエラー出るからよ

まぁ、>>58もエラーの内容を取り間違えては居ると思うんだけどな

77 名前:67(!=71) :2006/01/10(火) 16:52:39
>>73
> 英語版: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

78 名前:デフォルトの名無しさん :2006/01/10(火) 17:05:06
>>77
http://www.google.com/search?q=site%3Amicrosoft.com+A%2Fsuffix+Ansi
こんなもんで納得してくれるか?


79 名前:!72 :2006/01/10(火) 17:05:27
>>76
それ以前に、EnumFontFamiliesEx()の第3引数は「FONTENUMPROC」型、
と書かれているいるんだから FONTENUMPROC 型で渡すのが正当だろう。

# もちろん、引数で指定したプロシージャは、
# FONTENUMPROC 型と矛盾しない定義にすることも必要だな。

80 名前:デフォルトの名無しさん :2006/01/10(火) 17:09:37
ソースのURLもって、はっきりMSDNと書いてるのに何を言ってるのか・・・

81 名前:デフォルトの名無しさん :2006/01/10(火) 17:28:36
質問させてくだちぃ。
タイマーを作りたいと思ってます。。
ウィンドウは表示させずに数字のみを画面に表示させたいのですが、
その場合、内部で動的に画像を生成しリージョンを適用する
・・・という方法しかありませんよね?

ちょっと速度の面で不安があるのですが、
それは仕方ないと割り切るしかないでしょうか?

82 名前:デフォルトの名無しさん :2006/01/10(火) 17:59:27
NULL_BRSUH に TextOut じゃだめか?

83 名前:デフォルトの名無しさん :2006/01/10(火) 18:02:21
>>81
起動時に数字の形したリージョン作ったら?

84 名前:デフォルトの名無しさん :2006/01/10(火) 19:07:23
>>81
レイヤードウィンドウというものもある。

85 名前:デフォルトの名無しさん :2006/01/10(火) 19:09:59
ディスクトップのHDCに直接描画と言う方法も(ry

86 名前:デフォルトの名無しさん :2006/01/10(火) 19:17:29
>ディスクトップ
>ディスクトップ
>ディスクトップ

87 名前:デフォルトの名無しさん :2006/01/10(火) 20:18:11
ノー!デェィスクトァップゥ

88 名前:87 :2006/01/10(火) 20:22:28
我ながらあきれた

89 名前:デフォルトの名無しさん :2006/01/10(火) 20:27:28
こやつめ

90 名前:66 :2006/01/10(火) 21:30:10
判った。
私は正しくコールバック関数を定義すれば引き数は自ずとキャストの必要がないだろうと言いたかったのだが
それが伝わってなかったのだな。

>>72
ということで、>58でエラーになることは承知しているのですよ。

>>76
で、どうすればいいと言いたいの?

>>58
改めてもう一回。
サイトのソースにのみ頼らずMSDNを読めばサイトのソースの引き数の型が間違っていることが判る。
それを修正してコンパイルしてみたまえ。

91 名前:デフォルトの名無しさん :2006/01/10(火) 21:50:35
ダメだこいつ

92 名前:デフォルトの名無しさん :2006/01/10(火) 21:51:39
自分だけは間違ってないという困ったちゃんなんだよ、きっと

93 名前:デフォルトの名無しさん :2006/01/10(火) 22:40:07
>>82-85
みなさんありがddです
環境はWin2000なんで、せっかくだから
レイヤードウィンドウとやらを試してみようと思います!
これだと負荷をかけずに希望のものが作れそうです。
いい情報ありがとう〜。

ディスクトップに直接描画はキビシス...(^ω^;)

94 名前:58 :2006/01/10(火) 22:46:53
皆さんすみませんでしたorz
今一度注意しながらソースを見たのですが
指摘の通りコールバック関数の引数についてのエラーだったようです。すみません
そこで以下のように修正したのですが・・・

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) 型は渡せない

と吐かれてしまいます。モウダメダ ... (´・ω・`)


95 名前:デフォルトの名無しさん :2006/01/10(火) 22:51:51
>>94
BCC付属のヘッダが間違っているのでは?

96 名前:デフォルトの名無しさん :2006/01/10(火) 22:54:27
ううんBCCでもVC6.0でも同じ様なエラーを吐いてコンパイルが出来ませんでした・・・

97 名前:デフォルトの名無しさん :2006/01/10(火) 22:56:08
だから言ってるじゃねぇか、int、DWORDだけの問題じゃねぇって
面倒だから(FONTENUMPROC)付けて強制的にキャストしとけ
そうすりゃエラーでねぇからよ

>>95
VC++でも同じだよ

98 名前:デフォルトの名無しさん :2006/01/10(火) 23:00:24
はい、コールバック関数へのアドレスを
(FONTENUMPROC)としてキャストしたらコンパイルでき、期待された動作をするプログラムが作成できました。

いろいろとすみませんでした

99 名前:デフォルトの名無しさん :2006/01/10(火) 23:03:30
キミよりむしろ、わかっても無いのにゴタゴタ言ってたバカどもが迷惑

100 名前:デフォルトの名無しさん :2006/01/10(火) 23:15:13
どうでもいいけど、第3引数はintとか素で言ってるのすげえよな。
関数ポインタ知らないのかよ。
なんかWin32API以前の問題だな。

101 名前:デフォルトの名無しさん :2006/01/10(火) 23:18:03
>>100
コールバック関数の第3引数はあのサイトではintとなっていたからごっちゃになったんだろう。

102 名前:デフォルトの名無しさん :2006/01/10(火) 23:22:33
MSも意地でヘッダ直さんのかな

103 名前:デフォルトの名無しさん :2006/01/10(火) 23:40:29
うむ

104 名前:デフォルトの名無しさん :2006/01/11(水) 03:14:40
>>77
古いけど、MSDNのヘルプにのってるサンプルには
// Register an ANSI window class.
RegisterClassA(&AnsiWndCls);
// ANSI Window Procedure
LONG AnsiWndProc(HWND hwnd, UINT message,
WPARAM wParam, LPARAM lParam)
// Unicode Window Procedure

とも書いてある。


105 名前:デフォルトの名無しさん :2006/01/11(水) 05:51:26
指定時刻にスタンバイから復帰させる方法を教えてください


106 名前:デフォルトの名無しさん :2006/01/11(水) 06:23:07
>>100
エラーにはFONTENUMPROC型とかじゃなく、int (const struct〜って出るから、
そこのintを見てintって言ってたんじゃないかね

>>105
ねぇよ

107 名前:デフォルトの名無しさん :2006/01/11(水) 06:38:13
>>105
タスクスケジューラ
wake on lan

108 名前:デフォルトの名無しさん :2006/01/11(水) 07:45:21
>>105
CreateWaitableTimer
SetWaitableTimer

109 名前:デフォルトの名無しさん :2006/01/11(水) 08:11:20
BitBltのDIB版はないでしょうか。

SetDIBitsToDeviceが近いと思いますが、
ラストオペレーションコードがありません。

StretchDIBitsで先、元のサイズを
同じにするという方法もあると思いますが、
BitDIBitsみたいなのが別にあるなら教えてください。

110 名前:デフォルトの名無しさん :2006/01/11(水) 08:24:13
DIBをHDCにSelectObjectしてBitBltすればいいじゃん?

111 名前:デフォルトの名無しさん :2006/01/11(水) 08:27:31
DIBをSelectしてじゃ語弊がありすぎるな
DIBからHBITMAP作ってSelectしてBltすればいいじゃん

112 名前:109 :2006/01/11(水) 08:48:20
なるほど、分かりました。
ありがとうございます。

113 名前:デフォルトの名無しさん :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のマッピングをすべて解除すること
はできないのですか?

114 名前:113 :2006/01/11(水) 16:39:04
三行目のnet.dll→network.dllです。もうしわけございません。。

115 名前:デフォルトの名無しさん :2006/01/11(水) 20:12:59
TCHAR関連について質問です。

tchar.hをインクルードしない場合
TCHAR , TEXTマクロはコンパイルできるんですが
_TCHAR , _TEXTマクロ ,_Tマクロ だとエラーになります

_ありでもなしでも意味は変わらないと思うのですが
どうしてこのような違いがあるのでしょうか?

116 名前:デフォルトの名無しさん :2006/01/11(水) 20:24:59
自分で定義を追跡して見るくらいしろや

117 名前:デフォルトの名無しさん :2006/01/11(水) 20:25:55
つーか、tchar.hをインクルードするしないでコンパイル可否が変わるってだけで十分想像できそうなもんだがな

118 名前:デフォルトの名無しさん :2006/01/11(水) 20:28:00
まぁ、言ってしまえば、
_ 付きのヤツはTCHAR.Hで定義されていて、
_ ついてないヤツはデフォルトでインクルードされるヘッダに定義されてるから

今度からちったぁ自分で調べろよ
あと、_ありなしで意味は変わらないと思うとか、本気で思ってるとそのうち痛い目見るぞ
言葉の意味とプログラムの意味は別物だ

119 名前:デフォルトの名無しさん :2006/01/11(水) 20:32:38
>_ありでもなしでも意味は変わらないと思うのですが

#define _true 0
とか?

120 名前:デフォルトの名無しさん :2006/01/11(水) 21:22:48
> デフォルトでインクルードされるヘッダ

いやその説明もどうかと

121 名前:デフォルトの名無しさん :2006/01/11(水) 21:24:54
typedefで型定義されてたらダメだな

122 名前:デフォルトの名無しさん :2006/01/11(水) 21:35:08
だが実際、windows.hをインクルードすれば普通に入ってるヘッダだしな

123 名前:デフォルトの名無しさん :2006/01/11(水) 23:18:53
たしかにこのスレではWindows.hをデフォルトと書きたくなるのはわかる。

124 名前:デフォルトの名無しさん :2006/01/11(水) 23:27:22
ファイルをコピーしながら、プログレスバーの値を増やしていきたいのですが、
コピーを行っていると画面が更新されません。
UpdateWindow、Sleep(1)を入れても更新されないみたいです。

ファイルをコピーしながらプログレスバーを動かすソフトでは、マルチスレッド
で実行しているのでしょうか?
マルチスレッドはよくわからないので、その他にやり方があれば教えてください。
よろしくお願いします。

125 名前:デフォルトの名無しさん :2006/01/11(水) 23:29:53
Win32APIを前提に話す以上Windows.hはデフォルトと思うのが普通だろうな

126 名前:デフォルトの名無しさん :2006/01/11(水) 23:36:38
>>124
メッセージ処理しろよ。

127 名前:デフォルトの名無しさん :2006/01/11(水) 23:39:30
>>124
ちょっとづつコピーしながら間に表示したら?

128 名前:デフォルトの名無しさん :2006/01/11(水) 23:39:52
Windows.hじゃなくてwindows.hだと言いたくなりつつ
Windowsならどっちでもアクセスできることにぐんにょり

129 名前:デフォルトの名無しさん :2006/01/11(水) 23:41:05
ファイルシステムで大文字小文字区別するのはうざすぎ

130 名前:デフォルトの名無しさん :2006/01/11(水) 23:43:17
ウニ糞を馬鹿にするなっ!

131 名前:デフォルトの名無しさん :2006/01/11(水) 23:47:39
>>129
アホですね

132 名前:デフォルトの名無しさん :2006/01/11(水) 23:51:46
>>126-127
ありがとうございます。

UpdateWindow(hWnd);
GetMessage(&msg, NULL, NULL, NULL);
TranslateMessage(&msg);
DispatchMessage(&msg);
Sleep(1);

としたら、コピーしながらでもプログレスバーは表示されました。
ウィンドウがなぜか動かなかったりしますが、また調べてみます。

133 名前:デフォルトの名無しさん :2006/01/11(水) 23:53:01
ちょwwwwwwwwww

134 名前:デフォルトの名無しさん :2006/01/11(水) 23:56:54
>ウィンドウがなぜか動かなかったりしますが
>ウィンドウがなぜか動かなかったりしますが
>ウィンドウがなぜか動かなかったりしますが
>ウィンドウがなぜか動かなかったりしますが
>ウィンドウがなぜか動かなかったりしますが
>ウィンドウがなぜか動かなかったりしますが
>ウィンドウがなぜか動かなかったりしますが


135 名前:デフォルトの名無しさん :2006/01/12(木) 00:02:40
ウィンドウズがなぜか動かなかったりします

どうすればいいですか。

136 名前:デフォルトの名無しさん :2006/01/12(木) 00:06:02
死ねばいいと思うよ

137 名前:デフォルトの名無しさん :2006/01/12(木) 00:26:48
ウィンドウが動かんぐらいなんだ
近頃の若いモンは我慢を知らん

138 名前:デフォルトの名無しさん :2006/01/12(木) 00:32:09
そうだそうだ
おれなんか×ボタンがきかん

139 名前:デフォルトの名無しさん :2006/01/12(木) 08:32:08
>>135
進捗率が変わったとき、progress bar の項目に新しい値を PBM_SETPOS で
セットするだけで表示が変わらない?
後、残り時間など変えたいなら計算して、表示個所に SetDlgItemText() して
hDlg を InvalidateRect() する。
中止ボタンがあるなら PeekMessage() で ボタンの項目(GetDltItem(hDlg, IDCANCEL)などで
取る)に LBUTTONDOWN があるか見る位で動いているけどなあ。
これらは、どこかにサンプルがあったのを真似しただけだが。

140 名前:デフォルトの名無しさん :2006/01/12(木) 09:15:52
アンカーにテラワロス

141 名前:デフォルトの名無しさん :2006/01/12(木) 10:01:13
>>124>>139

メッセージポンプすら理解していないのに、

 「Windowsプログラムが出来ます。」

とか、得意げに言ってそうだな。

142 名前:デフォルトの名無しさん :2006/01/12(木) 12:49:08
>>125
その理屈は変だろ
おまけに、デフォルトでインクルード「する」なら良いんだろうが、「される」だとなんかアレな感じがするw

143 名前:デフォルトの名無しさん :2006/01/12(木) 13:03:09
どう変だ?

144 名前:デフォルトの名無しさん :2006/01/12(木) 13:13:10
>>142
たぶんIDEのウィザードに頼りっきりなんだろうな

145 名前:デフォルトの名無しさん :2006/01/12(木) 14:18:33
>>142
でも、日本語的には「する」は能動的な行動を表すから、デフォルト
で「する」はちょっと違和感がある。

146 名前:デフォルトの名無しさん :2006/01/12(木) 14:29:15
>>145
まぁ、それは主語に何を置くかしだいじゃね?
日本語はよく主語省略されるから。
Windows.hを主語に置けば、「される」
「する」場合の主語はなんだろう、「統合開発環境が」とか、そんな類の。
いいの思いつかないけど。
まぁ、この場合、話題の中心がWindows.hだから、それを主語にするのが自然かな。

って、ことで「される」に決定だ。フォー。


147 名前:デフォルトの名無しさん :2006/01/12(木) 14:35:20
ハゲワロタ、さりげなく出てきてるがおまえ当事者だろw >Windows.h
まぁこんなので長文書いてる時点で当事者なんだろうけど

148 名前:デフォルトの名無しさん :2006/01/12(木) 15:05:15
>>147
俺が前に投稿したのはちなみに>>104だ。


149 名前:デフォルトの名無しさん :2006/01/12(木) 16:22:05
Windows.hと書く素敵マンが二人もいたと。
そもそも最初から>>118 >>125がデフォルトの意味を間違えてるんだから、以後は無意味だな。

150 名前:デフォルトの名無しさん :2006/01/12(木) 16:54:42
VC2003です。
ダイアログの上にエディットが貼りつけてあり、
そのエディットの上に(ダイアログが親の)リストボックスを
表示したり非表示にしたりするのですが、
リストボックスがマウスの操作を受けず
エディットにフォーカスが行ってしまいます。

151 名前:デフォルトの名無しさん :2006/01/12(木) 16:55:49
そうです。

152 名前:デフォルトの名無しさん :2006/01/12(木) 16:56:54
OSはWindows XP SP2、開発環境はVisual C++ 2005 Express Edition 日本語版なんですが、

PTSTR pszErrMsg;
(略)
FormatMessage(
   FORMAT_MESSAGE_ALLOCATE_BUFFER |
   FORMAT_MESSAGE_IGNORE_INSERTS |
   FORMAT_MESSAGE_FROM_SYSTEM ,
   NULL , GetLastError() , 0 ,
   pszErrMsg , 0 , NULL
);
(略)

エラーメッセージを取得することができません。デバッガで調べると、ポインタはNULLを指してました。
どこが間違っているのでしょうか。

153 名前:デフォルトの名無しさん :2006/01/12(木) 17:03:29
(LPTSTR) &pszErrMsg

154 名前:デフォルトの名無しさん :2006/01/12(木) 17:38:46
あるアプリの右クリックショートカットメニューのチェックの有無はを調べたいのですが、
ショートカットメニューのハンドルはどのようにしたら取得出来るでしょうか?

いろんなウィンドウハンドルにgetmenuしたり、メインウィンドウのメニューのハンドルと
ショートカットメニューのIDでgetmenuiteminfoを実行してみたりしましたが駄目でした。
ちなみにそのショートカットメニューからのwm_commandはTPUtilWindowクラスの
ウィンドウが受け取っているようです。

よろしくお願いします。

155 名前:152 :2006/01/12(木) 17:48:50
変数の型自体を変えて、

LPTSTR lpszErrMsg;
(略)
FormatMessage(
   FORMAT_MESSAGE_ALLOCATE_BUFFER |
   FORMAT_MESSAGE_IGNORE_INSERTS |
   FORMAT_MESSAGE_FROM_SYSTEM ,
   NULL , GetLastError() , 0 , lpszErrMsg , 0 , NULL
);
(略)

こうしました。でもまだ駄目です。どうすればいいですか?

156 名前:デフォルトの名無しさん :2006/01/12(木) 17:54:15
FormatMessageでぐぐれば最初のページにサンプルが出てるからそこをよく読むといい。
処理後、LocalFreeを入れるのを忘れないように。

157 名前:デフォルトの名無しさん :2006/01/12(木) 18:03:18
>>155
アホかおまえ
>>153が何をやってるか良く見てみろ
>>153が書いたのとおまえがやったことはまったく別物だ

158 名前:デフォルトの名無しさん :2006/01/12(木) 18:03:55
>>154
日本語で質問して下さい。

>>155
釣り?

159 名前:113 :2006/01/12(木) 19:34:59

(。´Д⊂) うぅ…。

160 名前:デフォルトの名無しさん :2006/01/12(木) 19:44:41
150です。
すみません。
どうすればいいのでしょうか?

161 名前:152 :2006/01/12(木) 19:52:22
>>157
こうですか?

PTSTR pszErrMsg;
(略)
FormatMessage(
   FORMAT_MESSAGE_ALLOCATE_BUFFER |
   FORMAT_MESSAGE_IGNORE_INSERTS |
   FORMAT_MESSAGE_FROM_SYSTEM ,
   NULL , GetLastError() , 0 , (LPTSTR)&pszErrMsg , 0 , NULL
);
(略)

これでも駄目でした。

162 名前:デフォルトの名無しさん :2006/01/12(木) 20:10:18
>>161
君のコードはよく見てないけどヘルプにサンプル載ってるからコピーしてくれば

163 名前:デフォルトの名無しさん :2006/01/12(木) 20:12:45
>>160
オーナー度労

164 名前:152 :2006/01/12(木) 20:31:41
>>162
解決しました。ありがとうございました。

165 名前:デフォルトの名無しさん :2006/01/12(木) 20:59:26
74です。自己解決しました。すれ汚しすまそ。

166 名前:デフォルトの名無しさん :2006/01/12(木) 21:52:02
>>154
できない。
あきらめろ。

167 名前:デフォルトの名無しさん :2006/01/12(木) 22:04:52
キーボードショートカットが無いアプリケーションに、キーボードショートカットをつけたいのです。
そこで別のアプリケーションからメッセージをポストしてやるのかなーと思って
似たようなアプリを調べたところ、キーコマンドをそのアプリで受け取って、コントロールしたい
アプリにWM_MOUSEMOVEなどのメッセージをポストしたりして、右クリックメニューに対処してました。
これって何かほかに良い方法ありそうな気がするのですが、アドバイス願います。

168 名前:デフォルトの名無しさん :2006/01/12(木) 22:18:53
>>167
なぜそんな気がするのですか?

169 名前:デフォルトの名無しさん :2006/01/12(木) 22:24:10
>>168
エスパーの卵だからだろ?

170 名前:デフォルトの名無しさん :2006/01/13(金) 01:10:29
editboxを一番下の行に移動させたいのですがどうしたらよいのでしょうか?
SetWindowText(GetDlgItem(IDC_EDIT1),"任意");
SDK
でやっていますのでよろしくお願いします。
SDKでエディットボックスの任意の行に移動させる関数と
今エディットボックスが持っている行数を取得する関数があるとできると思うのですが・・
MSDNライブラリGOOGLE活用しましたが、検索技術が未熟なためか見つけることができませんでした。
どなたかよろしくお願いします。

171 名前:デフォルトの名無しさん :2006/01/13(金) 01:19:03
>>170
こんなのあった
ttp://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200101/01010024.txt

172 名前:デフォルトの名無しさん :2006/01/13(金) 01:20:55
先越されちゃったけど、カーソル移動するならEM_SETSELね。

173 名前:デフォルトの名無しさん :2006/01/13(金) 01:23:28
何言ってんの、お前ら?
「editboxを」「移動させたい」ならMoveWindowとかSetWindowPosだろ。

174 名前:デフォルトの名無しさん :2006/01/13(金) 01:26:52
>>173
すいません。
質問の仕方が悪かったです。申し訳ないです。

>>171,172
EM_SETSELという関数を使うのですね?今から参照のサイトを見てやってみます。


175 名前:デフォルトの名無しさん :2006/01/13(金) 01:28:00
Win95の質問だめですか?

176 名前:デフォルトの名無しさん :2006/01/13(金) 01:32:21
>>175
とりあえずカキコしてみれ

177 名前:デフォルトの名無しさん :2006/01/13(金) 01:33:24
>>171,172
ありがとうございます。
まとめて
SendMessage(GetDlgItem(hWnd, IDC_EDIT1), EM_LINESCROLL, 0, SendMessage(GetDlgItem(hWnd, IDC_EDIT1), EM_GETLINECOUNT, 0, 0));/* 行数分スクロールさせる */

を追加したらできました。
ありがとうございます。相当感謝してます。

178 名前:デフォルトの名無しさん :2006/01/13(金) 01:34:23
フォルダ状態の保存ができないぽい。98では「フォルダ状態を全てに・・」みたいな項目があったけど・・

179 名前:デフォルトの名無しさん :2006/01/13(金) 01:42:54
>>177
なぜ同じ GetDlgItem() を二回も発行するのだ
無駄はいかんぞ

180 名前:デフォルトの名無しさん :2006/01/13(金) 01:49:42
>>179

HWND 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);/* 行数分スクロールさせる */
とでは
どちらが処理を軽くできるでしょうか?

181 名前:180 :2006/01/13(金) 01:50:56
>HWND hWnd = GetDlgItem(hWnd,IDC_EDIT1);
すいません。hEditでした。

182 名前:デフォルトの名無しさん :2006/01/13(金) 01:57:12
>>180
通常2番目だろうね。
コンパイラには、GetDlgItem(hWnd, IDC_EDIT)が2回同じ値を返すかどうかは
予測できない(つまり律儀に2回関数を呼びだす)けれども、変数は前後を見て
使われていなければレジスタに割り当てたりできるし。APIの呼び出しは結構
オーバーヘッドでかい。ただ、そこまで気にする内容かどうかは謎。

183 名前:デフォルトの名無しさん :2006/01/13(金) 01:58:42
SendDlgItemMessageってのもあるわけだが。

184 名前:デフォルトの名無しさん :2006/01/13(金) 02:00:29
>>182
回答ありがとうございます。
二回呼び出すのをやめ
>>179さんの注意どおり無駄を省くことにします。
ありがとうございました。

185 名前:178=175 :2006/01/13(金) 02:07:50
ウィンドウズ95で>>178はできないですか、というかすれ違いなら止めよ

186 名前:デフォルトの名無しさん :2006/01/13(金) 02:15:02
>>185
スレ違い

187 名前:154 :2006/01/13(金) 03:41:48
すいません、自己解決しました。
やっとすっきりした・・・

188 名前:デフォルトの名無しさん :2006/01/13(金) 14:53:44
質問です。
WinMain()のHINSTANCEを渡せば、いつでもどこでも
メインウィンドウのハンドルを得るAPIがあったと思うのですが、
ど忘れしてしまいました orz

HWND hwMain;
hwMain = GetHWND(hInstance);

なんかこんな感じのAPIだったと思うのですが、
どなたかご存知ありませんか?
ググりまくっても出てこないよ。 (T_T)

189 名前:デフォルトの名無しさん :2006/01/13(金) 16:15:30
>>188
まず、「メインウィンドウ」から説明して貰おうか?

190 名前:188 :2006/01/13(金) 16:38:57
あ、ごめ。えーと、親ウィンドウのつもりでした m(__)m
ちなみにhInstanceはWinMain()の第一引数です。

確かこんな関数があったと思うんだけどなぁ。

191 名前:デフォルトの名無しさん :2006/01/13(金) 16:41:31
GetParent?

でも、HINSTANCE関係ないしなー

192 名前:188 :2006/01/13(金) 16:46:11
>>191
ググるとそれがよく引っかかりました orz

確かどっかのサイトで見たと思うんですが・・。

193 名前:デフォルトの名無しさん :2006/01/13(金) 16:51:43
スレ違いかもしれませんが、ご存知の方教えてください。

マウスのプロパティで、ポインタのデザインを変更する
事ができますが(3Dブロンズや3Dモノクロなど)、これを
変更するためのAPIとかって存在するのでしょうか?

194 名前:デフォルトの名無しさん :2006/01/13(金) 16:52:45
レジスタ弄るAPIじゃね?

195 名前:デフォルトの名無しさん :2006/01/13(金) 16:54:39
ウィンドウハンドル使ってインスタンスハンドル取得するのは知ってるが
その逆なんて知らないなぁ

そもそも自プログラムならメインウィンドウのハンドルが分からないわけないし、
他プログラムのウィンドウならFindWindowで探すもんだと思うしなぁ

196 名前:デフォルトの名無しさん :2006/01/13(金) 16:55:22
>>194
レジスタ弄ってどうするよバカ

197 名前:デフォルトの名無しさん :2006/01/13(金) 17:14:44
>>194
レジストリのどこを変更すれば設定が変わるかってのは
わかってるんですが、項目が多くて一気にできないものかと。


198 名前:188 :2006/01/13(金) 17:21:55
>>195
ありゃ、私が見たのはそっちだったのかなぁ。
うーん。もうちょっとググってみまっす。。

199 名前:デフォルトの名無しさん :2006/01/13(金) 17:23:27
目的を明確にすればそんなAPIが必要なのかわかるんじゃないかな。

200 名前:デフォルトの名無しさん :2006/01/13(金) 17:42:36
>>190
> 親ウィンドウのつもりでした m(__)m

何から見て親なんだ?
そもそも、一つのプロセスには複数のトップレベルウィンドウを作れるわけだが、
複数の場合はZオーダーがトップのものを取得すればいいのか?
# ウィンドウがない場合もあるが、これは無効ハンドルでいいだろう。

201 名前:デフォルトの名無しさん :2006/01/13(金) 19:13:24
悪いがメインで十分通じる

202 名前:デフォルトの名無しさん :2006/01/13(金) 19:23:07
バカだからだな。

203 名前:デフォルトの名無しさん :2006/01/13(金) 19:30:58
>>202
ならばさっさと代替の言葉を示せよ、読解力のない揚げ足取り君w

204 名前:デフォルトの名無しさん :2006/01/13(金) 20:17:29
GetModule()

205 名前:デフォルトの名無しさん :2006/01/13(金) 20:21:17
痛いところ突かれたからってそうムキになるなよw

206 名前:デフォルトの名無しさん :2006/01/13(金) 20:38:34
さすがバカじゃ無い方、1時間も悩んで思いつかなかったのねw
つか202の時点で失笑ものだが

207 名前:デフォルトの名無しさん :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);
}
------------------------------------------------------------------------------


208 名前:デフォルトの名無しさん :2006/01/13(金) 22:26:44
Sleep(500)の前後にUpdateWindow(message_window)入れてみれ

209 名前:デフォルトの名無しさん :2006/01/13(金) 22:28:01
書き間違いスマソ。
Sleep(500)の前後にUpdateWindow(message_window)入れてみれ
        ↓
Sleep(500)の前にUpdateWindow(message_window)入れてみれ

210 名前:デフォルトの名無しさん :2006/01/13(金) 22:44:11
どうやったら「前に」と「前後」を書き間違えるんだよw
手書きじゃあるまいにw

211 名前:デフォルトの名無しさん :2006/01/13(金) 22:54:09
>>210
別にいいじゃん・・・
気にしてるんだからほっといてよw

212 名前:デフォルトの名無しさん :2006/01/13(金) 23:16:41
タスクバーにポインタ持って行くと、ウィンドウタイトルがポップアップしますが、
文字列が長いと、80字位に切り詰まるようです。

これって可変なんでしょうか?可変なら最大文字数を取得する方法ってありますか??

213 名前:デフォルトの名無しさん :2006/01/13(金) 23:17:36
固定

214 名前:デフォルトの名無しさん :2006/01/13(金) 23:35:42
セマフォとミューテックス以外で
スレッド専用に特化した高速な同期化オブジェクトってありますか?

215 名前:デフォルトの名無しさん :2006/01/13(金) 23:44:20
クリティカルセクション

216 名前:デフォルトの名無しさん :2006/01/14(土) 00:19:40
サンクス、思い出した

217 名前:デフォルトの名無しさん :2006/01/14(土) 01:31:57
質問させていただきます。
SDKでチャットプログラム作ってるんですがすっげー重いです。
というか明らかにソースコードがおかしいです。
動作させてわかりました。
ソケットにデータが入ってきたかチェックするかをdefaultのところに記述していました。
すると動作がおかしくなってしまいました。
実際どんな感じになっているかと言うと
http://www.geocities.jp/poruporuchan2000/main.txt
です。ソケットについては別途宣言しています。
http://www.geocities.jp/poruporuchan2000/setup_client.txt
mixiで相談しましたが、思ったような回答が得られていないため投稿しました。
よろしくお願いします。

218 名前:デフォルトの名無しさん :2006/01/14(土) 01:33:20
>>217
肝心の「どのように動作がおかしいのか」を書かなくちゃ意味がないと思うが

219 名前:デフォルトの名無しさん :2006/01/14(土) 01:35:17
>>218
すいません。
起動すると極端に重くなってコンパイルしたEXEファイルのウインドウが真っ白あるいは
デスクトップの画面をそのまま表示している状態です。

プロセスがいつの間にか100%になっていたりします。

220 名前:デフォルトの名無しさん :2006/01/14(土) 01:36:41
動作はともかくとして、気分の悪くなるソースだな

221 名前:デフォルトの名無しさん :2006/01/14(土) 01:39:20
>>220
エラー処理はまだ書いていません。
勉強がてら書いているのでできればアドバイスをもらえたらと思います。

222 名前:デフォルトの名無しさん :2006/01/14(土) 01:40:29
完全にWM_PAINTをポイ捨てしてるように見えるんだが。

223 名前:デフォルトの名無しさん :2006/01/14(土) 01:43:03
>>222
WM_PAINTはウインドウの再描画を行うやつだったと思いますが、それを応用してソケットにデータインしたときの処理
を行えるということでしょうか?

224 名前:デフォルトの名無しさん :2006/01/14(土) 01:45:23
defaultの所をタイマーで書き直したら?

225 名前:デフォルトの名無しさん :2006/01/14(土) 01:47:55
>>223
defaultでFALSEを返したら?

226 名前:デフォルトの名無しさん :2006/01/14(土) 01:48:13
>>224
mixiで質問したときもそのように回答をいただきました。
そのタイマーというのがよく理解できていないため、どの用に記述していいのかよくわかっていません。
MSDNライブラリで見てみたのですが書式は理解できました。
ですがどのようにそれを使えばいいのかわかりません。
できればご教授お願いします。

227 名前:デフォルトの名無しさん :2006/01/14(土) 01:50:50
>>225
FALSEに書き直して実行したところ今度は別途用意したソケットで
WSACleanup();
でエラーが出てしまいました。
エラーがでたというのはコンパイルできたのですがデバック処理中にエラーがでたということです。

228 名前:デフォルトの名無しさん :2006/01/14(土) 01:52:14
>>226
たんにSetTimerした後にWM_TIMERを受け取って処理するか
コールバック登録するかってだけだろうに。

PeekMessageの方がいいと思うがな。

229 名前:デフォルトの名無しさん :2006/01/14(土) 01:55:16
>>228
すいません。有益なアドバイスのようですが
理解ができないので調べて理解できるように勤めます。

230 名前:デフォルトの名無しさん :2006/01/14(土) 02:30:34
調べてみた結果
SetTimerで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:
//以下続く
どう訂正したらいいのかよろしくお願いします。

231 名前:デフォルトの名無しさん :2006/01/14(土) 02:34:11
>>230
breakぐらいしろと

ぶっちゃけCとWindowsプログラミングの基礎からやり直せ

232 名前:デフォルトの名無しさん :2006/01/14(土) 02:35:16
>>231
今基礎をやっています。

233 名前:デフォルトの名無しさん :2006/01/14(土) 02:36:19
SetTimerの第二引数ってNULLなんか渡していいのか?

234 名前:デフォルトの名無しさん :2006/01/14(土) 02:36:45
selectつかうならタイマーいらんと思うが。

235 名前:デフォルトの名無しさん :2006/01/14(土) 02:39:24
>>233
第二因数は大麻の識別子ですよね?やはりTIME.hファイルを作って設定しなければならないでしょうか?

>>234
わたしもそうおもって作っていましたが、思ったような動作が得られず困ってしまい、この板に頼った次第です。

236 名前:デフォルトの名無しさん :2006/01/14(土) 02:42:05
selectの説明読んだ?timeval。
ほかに非同期IOとかもありま。

237 名前:デフォルトの名無しさん :2006/01/14(土) 02:43:15
#define TIMER_ID1 1
でいいと思うお

WM_TIMERが来たときにはwParamに識別子が入ってるのでそれで分別するべきだとおもうお
個人的な意見だがコールバックにした方がいいと思うお

238 名前:デフォルトの名無しさん :2006/01/14(土) 02:45:51
× でいいと思うお
○ でいいと思う

× それで分別するべきだとおもうお
○ それで分別するべきだとおもう

× コールバックにした方がいいと思うお
○ コールバックにした方がいいと思う


239 名前:デフォルトの名無しさん :2006/01/14(土) 02:46:55
>>236
セレクトの説明UNIXのやつも同じだと思い、読みました。
ですが記憶があやふやになってしまっているところもあります。すみません。
読み直します。

>>237
親切に設定例まで書いていただきありがとうございます。
wParamで分岐ですね!
unitで分岐していたのでいつまでたってもTIMERを拾わなかったのでしょうか・・

240 名前:デフォルトの名無しさん :2006/01/14(土) 02:47:17
また大漁だな

241 名前:デフォルトの名無しさん :2006/01/14(土) 03:00:36
・・・やはり思ったように行きません。
ちょっと挫折です・・

242 名前:デフォルトの名無しさん :2006/01/14(土) 03:08:53
SetTimer(hWnd,TIMER_ID1,300,NULL);
じゃないのか?

243 名前:デフォルトの名無しさん :2006/01/14(土) 03:14:16
>>242
回答ありがとうございます。
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)で全部飛び越して一番下の行まで一気に飛んでいます・・もう挫折です。

244 名前:デフォルトの名無しさん :2006/01/14(土) 03:14:59
プラットフォームSDKのサンプルにソケットの非同期IOの例あるからそれ見とけ。

245 名前:デフォルトの名無しさん :2006/01/14(土) 03:18:48
>>244
アドバイスありがとうございます。
サンプルがあるのですね。情報ありがとうございます。

246 名前:デフォルトの名無しさん :2006/01/14(土) 03:27:20
やっぱわかんないです。
一日休んで頭すっきりしたところでもう一度取り組んでみようと思います。
そのときまたわからないことがあれば質問させていただきます。
今日は本当にありがとうございました。

247 名前:デフォルトの名無しさん :2006/01/14(土) 03:45:25
やっぱわかんないです ><;

248 名前:デフォルトの名無しさん :2006/01/14(土) 04:10:35
>>243
猫C見るかKillTimerとSetTimerについて調べれ

249 名前:デフォルトの名無しさん :2006/01/14(土) 04:18:07
>>217
メッセージループがないけど

250 名前:デフォルトの名無しさん :2006/01/14(土) 04:18:57
>>248
KillTimerもちゃんとウインドウ消すときの処理に加えてたんですけどね。


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