Win32API質問箱 Build57

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

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

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(http://msdn.microsoft.com/library/)の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
2デフォルトの名無しさん:2007/09/08(土) 21:43:31
3デフォルトの名無しさん:2007/09/08(土) 21:44:25
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デフォルトの名無しさん:2007/09/08(土) 21:45:02
   ∩___∩
   | ノ      ヽ/⌒)  あばばばばばばばばばば
  /⌒) (゚)   (゚) | .|
 / /   ( _●_)  ミ/   ∩―−、
.(  ヽ  |∪|  /    / (゚) 、_ `ヽ
 \    ヽノ /      /  ( ●  (゚) |つ      おちんちんびろ〜〜〜ん
  /      /      |  (入__,,ノ   ミ       あばあばばばば
 |       /       、 (_/    ノ
 |  /\ \       \___ ノ゙ ─――、
 | /    )  )       /\       _  ヽ
 ∪    (  \    (⌒0 /\     ヽ (_ノ
       \,,_)    `ヽノ   /  、   )O
                    (  </ /
                     > ( 〈
                    (,,__(,,_ノ
5デフォルトの名無しさん:2007/09/08(土) 21:45:19
6デフォルトの名無しさん:2007/09/08(土) 21:45:58
7デフォルトの名無しさん:2007/09/08(土) 21:47:12
- Win32 API入門
http://wisdom.sakura.ne.jp/system/winapi/
- Win32 プログラミング入門
http://www7.plala.or.jp/keny01/

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

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

>>4を除いてここまで
8デフォルトの名無しさん:2007/09/08(土) 21:47:59


    ○| ̄|_

    あー!下手こいたー!

        〃〃
     ○/\〃
     ノ  <〃〃

    ♪ズンチャ!♪ズンチャ!

    ♪ズンチャ!♪ズンチャ!

     〇∧〃
     / >
     < \

    でもそんなの関係ねぇ!

    そんなの関係ねぇ!

      〇/
     /|
     />

    はい!オッパッピー!!
9デフォルトの名無しさん:2007/09/08(土) 23:24:58
息抜きにネタ投下

http://q.hatena.ne.jp/1189259570
10デフォルトの名無しさん:2007/09/08(土) 23:27:06
>>9
死ね
11デフォルトの名無しさん:2007/09/08(土) 23:27:40
>>9
死ね
12デフォルトの名無しさん:2007/09/08(土) 23:28:12
>>9
死ね
13デフォルトの名無しさん:2007/09/08(土) 23:28:14
>>9
それに対する回答は
「お前には作れない。既にあるものをググレカス。」
でもおk?
14デフォルトの名無しさん:2007/09/08(土) 23:28:35
     >>9
    死ね

15デフォルトの名無しさん:2007/09/08(土) 23:29:35
>>9
死ねカスでおk
16デフォルトの名無しさん:2007/09/08(土) 23:36:59
流れにワロタ
17デフォルトの名無しさん:2007/09/09(日) 00:24:21
自作ポエムでも売るのかなぁ
18デフォルトの名無しさん:2007/09/09(日) 00:29:17
ちょっと面白いと思ってしまったorz

質問マダー
19 ◆XcB18Bks.Y :2007/09/09(日) 00:46:31
画面がパワーセーブモードや電力停止モードになっているかどうかを知る方法はありますか?

ぐぐってみたところではSystemParametersInfoを使う方法が出てきたものの,これは使えないみたいで,
実際に手元の環境(XP Home)で試したところ,いずれもTrueがかえってきました.
20デフォルトの名無しさん:2007/09/09(日) 00:48:36
21デフォルトの名無しさん:2007/09/09(日) 01:04:55
そばつゆを吹いた
22デフォルトの名無しさん:2007/09/09(日) 01:25:49
Delphiへたれぐらまのサッカー好きでゲーマーな学会員

まで読んだ
23:2007/09/09(日) 02:46:33
質 問 は ま だ か
24デフォルトの名無しさん:2007/09/09(日) 02:52:41
Win32APIってVistaの次のOSでも使われるの?
25デフォルトの名無しさん:2007/09/09(日) 02:58:10
うん、MSDN読め
26デフォルトの名無しさん:2007/09/09(日) 03:28:14
質問というか、雑学なんだけど、MD5とかSHA−1とかの暗号技術ってさ、著作権料とか使用料とかかからないのかな?
27デフォルトの名無しさん:2007/09/09(日) 03:29:10
掛かる掛からない以前に、お前には使う資格がない
28デフォルトの名無しさん:2007/09/09(日) 03:34:12
>>26
とりあえず今は掛かってないが、使用したモジュールのライセンスによっては痛い目見るかも名
29デフォルトの名無しさん:2007/09/09(日) 03:39:14
>>27
メッセージダイジェスト取扱技士の資格はどこで取ればいいですか?
30デフォルトの名無しさん:2007/09/09(日) 03:51:28
ここで取れます。
31デフォルトの名無しさん:2007/09/09(日) 03:52:04
32デフォルトの名無しさん:2007/09/09(日) 03:53:15
私が試験官です。
33デフォルトの名無しさん:2007/09/09(日) 14:43:26
アルゴリズム自体ではライセンス取れないんじゃなかったっけ?
>>28のいうようにモジュールとしてならできるけど
34デフォルトの名無しさん:2007/09/09(日) 15:50:03
>>33
特許が取られてるアルゴリズムは特許使用料を払ったりしないといけないかもね
35デフォルトの名無しさん:2007/09/09(日) 15:58:56
GIFのことかー!
36デフォルトの名無しさん:2007/09/09(日) 16:42:58
Linuxだとお金はらわなくていい。
ふしぎ!
37デフォルトの名無しさん:2007/09/09(日) 18:53:24
CreateProcessで質問があります。

本に掲載されたまま一字一句同じように打ち込んでも
第二引数を指定すると確実に暴走します。

  STARTUPINFO si;
PROCESS_INFORMATION pi;

ZeroMemory(&si, sizeof(si));
ZeroMemory(&pi, sizeof(pi));
si.cb = sizeof(si);

CreateProcess(NULL, TEXT("notepad"), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);

第一引数だと問題なくうごくのですが、何が原因か教えてください。
使用しているOSはVIStaで
飼っている犬は雑種です。
よろしくお願いします。
38デフォルトの名無しさん:2007/09/09(日) 18:55:27
ふざけんなボケ
39デフォルトの名無しさん:2007/09/09(日) 19:00:08
ネタなら埋まる前のスレ使ってくれ
ネタじゃないならπが識別子に使えることを教えてくれてありがとう
40デフォルトの名無しさん:2007/09/09(日) 19:02:08
ついでに

BOOL CreateProcess(
  LPCTSTR lpApplicationName,                 // 実行可能モジュールの名前
  LPTSTR lpCommandLine,                      // コマンドラインの文字列

Windows NT/2000:このパラメータで const 文字列(リテラル;文字列定数)を指定すると、この関数の Unicode 版である CreateProcessW 関数は失敗します。
41デフォルトの名無しさん:2007/09/09(日) 19:04:40
>>37
何だその本は言ってみろ嘘吐きが
42デフォルトの名無しさん:2007/09/09(日) 19:27:40
>>39
&piが文字実体参照とみなされてπと表示されただけだろ。
本当は実体参照は、&pi; というように最後にはセミコロンを付けないといけないのだが、
なくても勝手に実体参照として解釈してしまう糞ブラウザが広まったせいで…
43デフォルトの名無しさん:2007/09/09(日) 19:41:52
>>42のおかげで>>38,39,41が怒ってる意味がやっとわかった。

>>40はAdvanced Windowsにも注意書きがあったね。
俺が読んだ版では、「将来のOSでLPCTSTRに変更されるだろう」と書いてあったけど
Vistaでは落ちるようになったのか…。
44デフォルトの名無しさん:2007/09/09(日) 19:48:15
Vistaじゃなくても落ちるがな
45デフォルトの名無しさん:2007/09/09(日) 19:48:57
>>43
Vistaでも落ちる
46デフォルトの名無しさん:2007/09/09(日) 19:57:24
えすぱーだ>>42
47デフォルトの名無しさん:2007/09/09(日) 20:44:27
よくわかったな>>42
専ブラだったからわからんかった
48デフォルトの名無しさん:2007/09/09(日) 20:48:00
πなんて使えないんだから誰でも分かる
4937:2007/09/09(日) 20:56:11
>>40
ありがとうございます。
文字列定数であたえるのを変更したら動きました。
昼間からずっと悩んでました。
感謝してます。
50デフォルトの名無しさん:2007/09/10(月) 03:46:46
> 本に掲載されたまま一字一句同じように
どこの腐れ書籍かさらしageてよし
51デフォルトの名無しさん:2007/09/10(月) 07:36:37
どうせ37が文字セットの初歩的説明を見逃してるだけ
52デフォルトの名無しさん:2007/09/10(月) 09:21:45
エクスプローラと同じコンテキストメニューを開くにはどうすればいいのでしょうか?
53デフォルトの名無しさん:2007/09/10(月) 09:48:25
shellapi
54デフォルトの名無しさん:2007/09/10(月) 10:02:33
なんでここの人はMFC使わないの?馬鹿なの?
55デフォルトの名無しさん:2007/09/10(月) 10:11:31
>>54
つ[mfcスレ]
56デフォルトの名無しさん:2007/09/10(月) 10:11:33
まだMFCとか言ってんの?馬鹿なの?
57デフォルトの名無しさん:2007/09/10(月) 10:28:07
覚え立てで嬉しくなってるか、MFCでしか作れないんだろ。
58デフォルトの名無しさん:2007/09/10(月) 13:08:40
どうせならWTLで
5952:2007/09/10(月) 13:19:32
>>53
FolderItem.InvokeVerbでコンテキストメニューの項目を実行できることなどは
わかったのですが、コンテキストメニュー全体を開く方法がわかりません。
もうちょっと情報をいただけないでしょうか?
60デフォルトの名無しさん:2007/09/10(月) 13:32:09
MFCって「マクドナルドフライドチキン」の略だろ
61デフォルトの名無しさん:2007/09/10(月) 13:36:03
>>59
IContextMenu
6252:2007/09/10(月) 14:18:31
>>61
http://www.codeproject.com/shell/shellcontextmenu.asp
役に立たねえ野郎だ。
そんな能力で回答しようと思うんじゃねえ。カスが。
63デフォルトの名無しさん:2007/09/10(月) 14:27:13
そんなに自分を卑下したらいけない
64デフォルトの名無しさん:2007/09/10(月) 18:59:50
キーボードの入力判定について質問します。現在GetASyncKeyStateを用いて
キーボードの入力判定を行っているのですが、別ウインドウがアクティブの場合
でも、キー入力を拾ってしまいます。

例えば、自身のプログラムと同時にメモ帳を起動してあるとき、メモ帳への入力
を拾ってしまう。

自身のウインドウがアクティブの場合のみキー入力の判定をしたいのですが、
GetASyncKeyStateでは出来ないのでしょうか。マイクロソフトのサイトでは、
GetASyncKeyStateの説明に
「他のスレッド( またはプロセス)のウィンドウがキーボードフォーカスを
備えている場合は、0 が返ります」とあったので出来るとおもったのですが…。


WM_KEYDOWNなどのメッセージ処理やDirectInputであれば可能なことは解っているのですが、
できれば使用したくありません。

わがままですみませんが教えてください。

65デフォルトの名無しさん:2007/09/10(月) 19:38:09
GetForegroundWindow で自分のウィンドウがアクティブかどうか調べれば済むのでは
66デフォルトの名無しさん:2007/09/10(月) 20:23:37
65さん 上手くいきました。ありがとうございました。
67デフォルトの名無しさん:2007/09/10(月) 20:50:33
VC5で使える最後のSDKってどこかで手に入ります?
68デフォルトの名無しさん:2007/09/10(月) 22:56:40
EnumWindowで質問があります。ム板で追い出されてしまいました...
諸先輩方よろしくお願いします。

○やりたいこと
・PHP+Cで、PHPから外部exeを起動して任意のWindowのPrintScreen取得。
 外部exeは常駐ではなく、PHPで指定されたときのみ実行。

○質問 :
@PHPからEnumWindowを使用した外部exeを起動すると、外部exe内のEnumWindowが期待通りに動かず、
 意味のわからないハンドルを取得してしまいます。
 ソースが学校のためうろ覚えですが、取得ハンドルのタイトルを見る限り、"Zend Timeout Window"とか"SENS"とか、
 "○○WindowSocket?"のようなものが5つくらい取得されていて、Windowsアプリのハンドルは取れませんでした。
 これは何でしょうか?回避方法を教えてください。
APHPで任意のWindow画面の画像キャプチャする方法があれば、ヒントを教えて下さい。

○プログラム内容 :
・Cプログラム
コンソールからWindow画像を取得するexeを作成しました。
起動時にWindowタイトルの一部を入力すると、その画像を取得します。不一致はデスクトップ画面を取得します。
EnumWindowでハンドル取得 -> Bmp作成 -> BitBlt -> ファイル保存の流れです。
コンソールからは正しく動作しています。

・PHPプログラム
 簡単な入力Formのみ。ボタンを押すと上記exeをsystem命令で起動しています。

○環境
 ・Windows 2000, Pen4 2G, MEM 512M
 ・Apache2.2.4, PHP 5.2.4 + zend debugger, VC6, eclipse + PDT
6968:2007/09/10(月) 22:58:59
>>68
ム板で追い出されたのではなくマ板でした。失礼しました。
Win32APIのスレッドですが、できればPHPの方もアドバイスお願いします。
70デフォルトの名無しさん:2007/09/10(月) 23:00:06
宿題は宿題スレへ
71デフォルトの名無しさん:2007/09/10(月) 23:00:26
PHP用のモジュールを作ればいいだけの話。
72デフォルトの名無しさん:2007/09/10(月) 23:01:55
>>69
禿しくスレ違い。PHP板で聞いた方がいい。
73デフォルトの名無しさん:2007/09/10(月) 23:09:02
全部一つのexeでやってしまえば解決
74デフォルトの名無しさん:2007/09/10(月) 23:11:42
百個のexeでやってしまえば解決
75デフォルトの名無しさん:2007/09/10(月) 23:16:57
>>68
Apacheがサービスとして動いているなら、
EnumWindowがうまく動いていないように見えるのは、
デスクトップが異なっているため。
ウィンドウステーションとかでググれば色々わかると思う。

サービスのプロパティで、
「デスクトップとの対話をサービスに許可」にチェックを入れれば、
そのプログラムはお前が思っていたとおりに動くようになるかもしれない。
ただし、セキュリティ上の問題があるかもしれないので、慎重にやれ。
76デフォルトの名無しさん:2007/09/10(月) 23:20:03
一応API関係なんじゃないの
PHPがサービスとして起動していて目的の窓と別セッションになっているとか
7768:2007/09/10(月) 23:27:30
>>75
どうもです。ウィンドウステーション知りませんでした。
プロセスが異なるぐらいは想像していたのですが、
検索キーワードがまったく思いつきませんでした。
ありがとうございます。セキュリティーは何とかなりそうです(多分)。
7868:2007/09/10(月) 23:49:22
>>76
どうもです。仰るとおりサービスで起動しているため、ユーザーのデスクトップが取れていなかったみたいです。
ネット調べてたらGetProcessWindowStation命令で行けそうな感じです。
ありがとうございました。参考リンクはっときます。

ttp://forums.belution.com/ja/vc/000/401/43.shtml
ttp://support.microsoft.com/default.aspx?scid=kb;ja;173687
79デフォルトの名無しさん:2007/09/11(火) 00:02:32
多少和んだ
80デフォルトの名無しさん:2007/09/11(火) 00:05:21
>>78
殺す
81デフォルトの名無しさん:2007/09/11(火) 00:27:49
>>80
なんで?
キンタマみたいなのができそうだから?
82デフォルトの名無しさん:2007/09/11(火) 00:30:40
どして殺すの( ゚д゚)
83デフォルトの名無しさん:2007/09/11(火) 00:32:27
( ゚д゚ )なぜ殺した
8468:2007/09/11(火) 00:41:41
あはっwwwすでに殺されてるしwwwwwww
ウイルス作る技術も度胸もありません。へたれなんでwwwwwwwwww
セキュリティー絡みの監視ソフト作成してて、画面の定期的なスナップが必要だったのです。
皆様どうもです!
85デフォルトの名無しさん:2007/09/11(火) 01:16:02
>>84よ、>>80は実は優しい子。
あとでザオリクをry
86デフォルトの名無しさん:2007/09/11(火) 01:38:20
VC++6で生成したサンプルプログラムが
2005Expressでコンパイルできない(´・ω・`)
87デフォルトの名無しさん:2007/09/11(火) 01:44:29
ありがち
88デフォルトの名無しさん:2007/09/11(火) 01:44:45
>>86がバカだからVC++6で生成したサンプルプログラムが
2005Expressでコンパイルできない(´・ω・`)
89デフォルトの名無しさん:2007/09/11(火) 04:59:18
フリーソフトのLinkOpenとかでやっている、
「エクスプローラ上のファイルのアイコンを選択状態(シングルクリックした状態)にする」
のってどうやるんでしょうか。いわゆるシェルAPIを使うだと思うのですが、
扱ったことがなく見当がつきません。よろしくお願いします。
90デフォルトの名無しさん:2007/09/11(火) 05:10:42
explorer C:\Windows,/select
91デフォルトの名無しさん:2007/09/11(火) 05:49:58
おお! 今はもう時間が無いのでとりあえずですが
「ファイル名を指定して実行」で期待した振る舞いになるのを確認しました

ありがとうございます
92デフォルトの名無しさん:2007/09/11(火) 11:59:03
SJISベースのアプリ(のGUIなコントローラ)にUNICODEのファイル名を突っ込むと
当然変換時に欠落した文字がでてファイル操作等に失敗する可能性が出てきますが
そういうのをなるべく小手先で対処する方法はないですか?

1. Unicodeなテキストをメモリ上にロード
2. 1.のメモリデータをSJISなAPIやコントローラ(ListBox等)に突っ込む
3. 2.のデータを取り出してファイル操作 <- ここでエラー

例えば1.2.の間でファイル名がSJISに変換不可と判明したら8.3形式にするといったことをやれば出来るのかなと漠然と考えていますが・・・
93デフォルトの名無しさん:2007/09/11(火) 12:22:44
それでいいんじゃね
94デフォルトの名無しさん:2007/09/11(火) 12:45:12
ハードリンクを作るとか
95デフォルトの名無しさん:2007/09/11(火) 18:57:12
>>92
ファイル名だけ対応しているソフトは結構あるが;
パス名に対応していないソフトが多いですね。
ぜひ、がんばって対応してください。
UTF-8 に対応したソフトも増えてきたので、内部で UTF-8 でやったどうですか?
96デフォルトの名無しさん:2007/09/11(火) 19:00:24
やったどう
97デフォルトの名無しさん:2007/09/11(火) 19:45:02
殺した後に姦淫してやる
98デフォルトの名無しさん:2007/09/11(火) 21:26:37
( ゚д゚ )なぜ犯した
99デフォルトの名無しさん:2007/09/11(火) 21:31:08
復活させるため
100デフォルトの名無しさん:2007/09/11(火) 21:31:18
そこに穴があるからさ!
101デフォルトの名無しさん:2007/09/11(火) 22:46:57
特定のコントロールに文字を送りたいんだけどどうしたらいい?
102デフォルトの名無しさん:2007/09/11(火) 22:49:06
そんな簡単な事も分からんのか死ね
103デフォルトの名無しさん:2007/09/11(火) 22:50:40
おまえにはふたつあるが
おれにはひとつしかないじゃないか
しかもぼうがひとつおおいし…

ありゃ2か…
ありゃりゃ3か…orz
104デフォルトの名無しさん:2007/09/11(火) 22:50:51
どんな風に渡すかにもよる
単純にSetWindowTextで済むなら楽だが
105デフォルトの名無しさん:2007/09/11(火) 23:02:27
ゴメ

特定のコントロールに対してVBAのSendkeysの様に文字を送りたかったんだ。

sendkeyじゃ誰かが触ってアクティブフォームが変わったら送り先が変わってしまうので、
送り先を指定してkeyを送りたい。
106デフォルトの名無しさん:2007/09/11(火) 23:22:15
ウィンドウ指定してWM_KEYDOWNでいいんじゃねーの
107デフォルトの名無しさん:2007/09/12(水) 00:51:33
初歩的な質問で申し訳ないのですが、タイトルバーの横にあるMINBUTTONやCLOSE BUTTONって、
どうやってメッセージを捕まえるのでしょうか?ご教授よろしくお願いします。
108デフォルトの名無しさん:2007/09/12(水) 00:53:48
>>107
GetMessage
WM_SIZE
WM_CLOSE
109デフォルトの名無しさん:2007/09/12(水) 00:59:38
WM_SYSCOMMAND
110デフォルトの名無しさん:2007/09/12(水) 01:05:06
>>108 >>109
ご教授ありがとうございます。
WM_SYSCOMMANDで欲しいメッセージを捕まえることができそうです。
ありがとうございました。
111デフォルトの名無しさん:2007/09/12(水) 01:53:49
作ってるアプリの機能がかなり増えてきて
コールバック関数がものすごく肥大化してきました。
これはやむを得ないことなんですかね?
112デフォルトの名無しさん:2007/09/12(水) 01:56:04
いいえ
113デフォルトの名無しさん:2007/09/12(水) 01:59:36
どうすりゃええのん
114デフォルトの名無しさん:2007/09/12(水) 01:59:46
例えばウィンドウプロシージャなら、
メッセージクラッカみたいに――あるいはそれを使って――
メッセージ毎に関数を分割するという手がある。
115デフォルトの名無しさん:2007/09/12(水) 02:01:50
茸っぽい
茸は文学ではない
116デフォルトの名無しさん:2007/09/12(水) 02:07:32
メッセージクラッカですか
そういうのがあるんですね
ありがとうございました
117デフォルトの名無しさん:2007/09/12(水) 05:37:40
デバイスコンテキストに対して、特定の座標の色の取得・設定はGetPixel, SetPixel(V)を使うしか方法はないですか?
速度が遅いので、他の方法を使いたいのですが。(TextOutとかはどうやって描いてるんだろう…
118デフォルトの名無しさん:2007/09/12(水) 05:55:53
>>117
↓読むと幸せになれるかもしれない
http://wisdom.sakura.ne.jp/system/winapi/win32/win121.html

ちょっとややこしいが
119デフォルトの名無しさん:2007/09/12(水) 06:04:22
>>118
ありがとうございます。
一旦CreateDIBSectionで作ったビットマップにBitBltしてコピーし、
そこで直接データを読み書きして、その後、元のデバイスコンテキストへBitBltして戻す、という方法が思いつきました。
早速書いてみます。
120デフォルトの名無しさん:2007/09/12(水) 10:23:20
現在、汎用的な関数として、
GetLastErrorからFormatMessage, MessageBoxへの連携処理を考えています。

ここのGetLastErrorで返されるエラー値なんですけど、
この値からメッセージの分類(クリティカル・警告・情報...etc)とか
判別できるものでしょうか?

できるのであれば、その手法を教えていただけませんか?
ちなみに、皆さんはどうしています?
121デフォルトの名無しさん:2007/09/12(水) 14:14:48
思想を改める必要がある

GetLastErrorはあくまで補助的なものであって、本来やりたかった処理が失敗したことを通知することが最優先。
FormatMessageで得られるエラー原因は追加で表示してユーザーの参考にさせる程度が関の山。
122デフォルトの名無しさん:2007/09/12(水) 14:34:55
HRESULTはビット毎に意味があるけど、GetLastErrorはビット29以外は
見た覚えがないな。
123120:2007/09/12(水) 14:57:04
>>121
なるほど、割り切って内容だけを表示させることに勤めます。

>>122
HRESULTの資料を見て、>>120を考えてみたんですが、
ダメそうです。

お騒がせしました。
124デフォルトの名無しさん:2007/09/12(水) 21:25:05
hMenu = LoadMenu(NULL, _T("IDR_MENU"));
SetMenu(hWnd, hMenu);

MENUITEMINFO menuItemInfo;

ZeroMemory(&menuItemInfo, sizeof(menuItemInfo));
menuItemInfo.cbSize = sizeof(menuItemInfo);
menuItemInfo.fMask = MIIM_TYPE;
menuItemInfo.fType = MFT_STRING;
menuItemInfo.dwItemData = TEXT("追加された");

//InsertMenu(hMenu, 15, MF_BYCOMMAND, 16, _T("追加された"));
InsertMenuItem(hMenu, 15, FALSE, &menuItemInfo);

DrawMenuBar(hWnd);

「追加された」が追加されず、セパレータになるんですが、どうしてですか?
InsertMenu の方だとちゃんと追加されます。

WinXP SP2
VC++2005
125デフォルトの名無しさん:2007/09/12(水) 21:36:43
dwItemData = TEXT("追加された");  は
dwTypeData = TEXT("追加された");
じゃないかな ぱっとみだから間違ってたらすまんこ
126124:2007/09/12(水) 21:41:50
>>125
ありがとうございました。
全然、気づかなかったです。名前が似てるから・・・
無事に、追加されました。
127デフォルトの名無しさん:2007/09/13(木) 00:48:15
とある人力検索にて

Q:Web2.0が遺した物って何ですか?

A:DoCoMo2.0です
128デフォルトの名無しさん:2007/09/13(木) 01:51:52
あるソフトのウィンドウ(syslistview32)にコンテキストメニュー
を表示しようと思い、

PostMessage(hWnd, OS.WM_KEYDOWN, VK_APP, 0);
PostMessage(hWnd, OS.WM_KEYUP, VK_APP, 0);

を実行しましたが何も反応がありませんでした。

別のソフトであればコンテキストメニューが表示されます。
やり方が間違っているのでしょうか?
ちなみに右クリックした瞬間(押し下げた瞬間)にメニューが
出るソフトと、クリックし終わった瞬間(押し上げた瞬間)に
出るソフトの両方があるんですね。
129デフォルトの名無しさん:2007/09/13(木) 02:08:58
単純にそのソフトがそのキーを拾ってないだけじゃないの
130デフォルトの名無しさん:2007/09/13(木) 02:10:40
WM_CONTEXTMENUを送ったらどうだろう?
131デフォルトの名無しさん:2007/09/13(木) 09:49:52
spyを使おうぜ
132デフォルトの名無しさん:2007/09/13(木) 11:47:02
>>130

できました!!

WM_CONTEXTMENUはコンテキストメニューが開くときに
自動的に送信されているんだと誤解してました

>>131
spyってwinspectorのことですか?
133デフォルトの名無しさん:2007/09/13(木) 12:00:34
ウザイからどっか行って
134デフォルトの名無しさん:2007/09/13(木) 16:43:29
どうしてもわからんので教えてください!

libpngとlibjpegを使っているのですが
片方ずつ使う分には問題ないのですが両方のlibを使おうとすると
LINK:2005エラーが出てしまいます。最初ランタイムが違うのかと
libの方を確認してビルドし直したりしたんですがどうやらそういう問題
ではなさそうです。何か解決法はあるのでしょか?

呼び出し方はこんな感じです。
#ifdef _DEBUG
#pragma comment(lib, "libjpegd.lib")
#pragma comment(lib, "libpngd.lib")
#else
#pragma comment(lib, "libjpeg.lib")
#pragma comment(lib, "libpng.lib")
#endif
135134:2007/09/13(木) 17:03:16
Σ(・∀・ )勘違いでしたすみません解決しました><
136デフォルトの名無しさん:2007/09/13(木) 22:17:50
プログラムを動かしてるOSにないAPIを使ったらどんなことが起こるのでしょうか。
例えばWin9xでW系APIや、Win2000でuxthemeのAPIなどです。
その関数が実行されないだけとか、何かエラーが発生する、そもそも起動できないとか。
試す環境がないので聞いてみました。
137デフォルトの名無しさん:2007/09/13(木) 22:25:17
爆発する
138デフォルトの名無しさん:2007/09/13(木) 22:38:32
>>136
スタティックリンクならエントリポイントが見つからないとかなる
動的リンクなら実行されないかエラーになる
139デフォルトの名無しさん:2007/09/13(木) 22:40:13
ttp://www.uploda.org/uporg1016109.png
起動はする(CreateProcess == TRUE)けど、エントリーポイントに行く前にcsrss.exeが爆発させるので
ユーザー視点では起動しないのと同じ
140デフォルトの名無しさん:2007/09/13(木) 22:55:22
9xのW版APIはエントリポイントだけあるはず。
そして稀にMessageBoxWやTextOutWなど機能するものがある。
141デフォルトの名無しさん:2007/09/13(木) 22:55:24
dllからアタッチしたプロセスIDやウインドウハンドルとか取得するには何を使えばいいんですか。
ヒントください。
142デフォルトの名無しさん:2007/09/13(木) 22:58:50
あたっちすれっどなんとかとか
143デフォルトの名無しさん:2007/09/13(木) 23:08:56
>>140
忘れてけどそういえばそうだった 単純に失敗を返すだけの実装になってるんだった
で、たいていRegisterClassで失敗して無言でWinMainを終える、と
144デフォルトの名無しさん:2007/09/13(木) 23:16:57
プログラミングWindowsで、RegisterCassExが失敗したら
MessageBoxで9x非対応というメッセージを表示して終了するコードを見て、
なるほどと思った。
145141:2007/09/13(木) 23:19:59
>>142
ありがとん
DWORD GetCurrentThreadId(VOID);を見つけました。
146デフォルトの名無しさん:2007/09/14(金) 00:03:42
>>140
MSLU使えば強制ANSI変換で一応動くはずだしな
147デフォルトの名無しさん:2007/09/14(金) 00:07:00
>>146
つい先日、MSLUの浮動小数点のバグではまった。
148デフォルトの名無しさん:2007/09/14(金) 00:08:35
だがすぐに抜け出した。
149デフォルトの名無しさん:2007/09/14(金) 00:56:25
そしてまたはまった。
150デフォルトの名無しさん:2007/09/14(金) 01:07:53
なんかエロい話だな
151デフォルトの名無しさん:2007/09/14(金) 02:56:13
出して、入れて、出して、入れて、これがプログラムの基本です。
152デフォルトの名無しさん:2007/09/14(金) 04:01:22
SNEG?
153デフォルトの名無しさん:2007/09/14(金) 05:09:26
挿入が先だ。POPは後だ
154デフォルトの名無しさん:2007/09/14(金) 05:14:05
朝からinserterだのpush_backだのと
155デフォルトの名無しさん:2007/09/14(金) 05:18:01
Oh,Yes!Come on Fuck me!!
156デフォルトの名無しさん:2007/09/14(金) 07:10:43
Yes,pussy
157デフォルトの名無しさん:2007/09/14(金) 07:46:26
Shell_NotifyIcon の uTimeout が10秒より短くしても無視される件、
突破する方法しりませんか?

3秒がいいんだけど。
158デフォルトの名無しさん:2007/09/14(金) 07:55:35
The system minimum and maximum timeout values are currently set at 10 seconds and 30 seconds, respectively.
159デフォルトの名無しさん:2007/09/14(金) 08:21:35
通知アイコン専用スレッド作っちゃえ。
Shell_NotifyIconがタイムアウトするのは、
別の重い処理が走っているという事だから、
焦らず待ってもいい気はするけどね。
160デフォルトの名無しさん:2007/09/14(金) 17:33:22
shit
161157:2007/09/14(金) 18:13:00
>>158
それは読んだ。レジストリとかで変更できるのかな。
まさかシステムのDLLにハードコードされてるのか??

>>159
szInfoにNULLを渡すと消せるみたいなので、自分でタイマ制御するかな。。。
162デフォルトの名無しさん:2007/09/14(金) 20:32:52
もしスレ違いだったらすみません。

ウィンドウを複数表示させて(子ウィンドウなど)、
ひとつのウィンドウをドラッグして移動させたら、
他のウィンドウも一緒に移動するようなことってできないんですかね?
グループ化のようなことです。
163デフォルトの名無しさん:2007/09/14(金) 21:06:13
>>162
ハンドル保持してるんなら
WM_MOVEとかで設定したら?
164デフォルトの名無しさん:2007/09/14(金) 21:25:23
>>162
>>163はなしで
WM_MOVEは移動後に送られるもんだった
165デフォルトの名無しさん:2007/09/14(金) 21:43:40
WM_MOVING
166デフォルトの名無しさん:2007/09/14(金) 23:39:20
素朴な疑問です。
皆さんにとってTCHAR型は現役ですか?

typedef std::basic_string<TCHAR> tstring;
とか
#ifdef UNICODE
とか、
もうそんな時代じゃないのでしょうか?
コード量を増やし、可読性を下げる、ゴミ虫のような存在でしかないのでしょうか?
167デフォルトの名無しさん:2007/09/14(金) 23:50:03
TCHARで思い出したけど。
Win32APIのワイド文字はあくまでWCHARであり、wchar_tは違うよね。
168デフォルトの名無しさん:2007/09/14(金) 23:59:01
俺はTCHARを現役にさせている。
使わないけど目の前にWindows 98マシンを置いている影響かも。

しかし、#ifdef UNICODEはメインのコード中には出現させない。
比較的ライブラリ的な部分で吸収するようにしている。

>>167
そうかもしれないけど、
でもきっとみんなごっちゃに扱っているよ。
少なくとも俺はそう。
169デフォルトの名無しさん:2007/09/15(土) 00:02:43
俺も現役だな。
文字列は LPCTSTR とか _T() で囲ってたりする。

ただ tstring も使ってはいるんだけれど、
サロゲートペアの問題により
TCHAR* 変数を ++ した所で次の文字を指す保証は無いと知って、
CharNext() を利用する CString の方が安全という事を最近知った。
170デフォルトの名無しさん:2007/09/15(土) 00:07:36
VC2005でプロジェクト作ってまずするのは、「マルチバイト文字セットを使用する」
171デフォルトの名無しさん:2007/09/15(土) 00:20:17
はい、>>166はゴミ虫のような存在でしかありません。
172デフォルトの名無しさん:2007/09/15(土) 01:32:40
> TCHAR* 変数を ++ した所で次の文字を指す保証は無いと知って、
どうして?
173デフォルトの名無しさん:2007/09/15(土) 01:33:10
ごめんサロゲートペアって書いてあるな
174デフォルトの名無しさん:2007/09/15(土) 01:33:17
>サロゲートペアの問題により
175デフォルトの名無しさん:2007/09/15(土) 01:44:12
漏れはTCHAR撲滅
STLでstd::string使うようにした
コードはUTF-8
API呼ぶときだけWCHARにして渡してる
戻り値も変換してから使う
無駄なこと考えなくて済むようになったので
プログラミングに専念出来るようになった
176デフォルトの名無しさん:2007/09/15(土) 01:49:24
std::stringにUTF-8を突っ込むとな?
177デフォルトの名無しさん:2007/09/15(土) 01:56:34
>>169
CharNextはサロゲートペア非対応って書いてあるけど。
http://blogs.msdn.com/michkap/archive/2005/01/14/352802.aspx
でも結合文字列に対応しているのは立派。

あと、tstring/CStringで、インクリメントして次の文字にならないと言えば、
サロゲートペアや結合文字列の前に、ANSI時のマルチバイト文字があるだろうに。
178デフォルトの名無しさん:2007/09/15(土) 02:05:26
>>169
サロゲートペアでなく、マルチバイトの問題のことを言っているのか?

現時点ではCharNextを使ってもサロゲートペアは扱えず、
IS_SURROGATE_PAIR
IS_HIGH_SURROGATE
IS_LOW_SURROGATE
というマクロを使って判定するしかないそうな

参考
ttp://slashdot.jp/articles/06/12/26/0059208.shtml
179デフォルトの名無しさん:2007/09/15(土) 02:06:55
かぶった...orz
180デフォルトの名無しさん:2007/09/15(土) 02:44:17
>>176
なんか問題あるの?
181169:2007/09/15(土) 02:44:40
>>177-178
うそん orz
182デフォルトの名無しさん:2007/09/15(土) 02:52:03
質問です。
VB6 でファイルのプロパティ(バージョンや製品名など)を取得するのに
GetFileVersionInfo等を使っています。
ロケールIDをVerQueryValueで取得できたので、言語名をGetLocaleInfo(ロケールID, LOCALE_SENGCOUNTRY)で
取得すると、"Japan"という英語の文字列が返ってきました。
しかしシェルの「ファイルのプロパティ」で表示されるのは「日本語」や
「英語(米国)」など日本語の文字列です。
これを取得するにはどうしたらいいんでしょうか?
183デフォルトの名無しさん:2007/09/15(土) 02:55:14
ジャパーン♪
184デフォルトの名無しさん:2007/09/15(土) 03:33:22
FAR PASCALとかNEARって書いてあるコードをたまに
見かけますが
どういう意味があるんですか?
185デフォルトの名無しさん:2007/09/15(土) 03:41:58
16ビットの名残
186デフォルトの名無しさん:2007/09/15(土) 10:31:59
_stdcallとか_cdeclって書いてあるコードをたまに
見かけますが
どういう意味があるんですか?
187デフォルトの名無しさん:2007/09/15(土) 10:37:18
聞く前にドキュメント嫁
188デフォルトの名無しさん:2007/09/15(土) 10:37:35
ググれ
189デフォルトの名無しさん:2007/09/15(土) 10:40:16
ドキュメントなんてないし
ぐぐってもでないからきいてるんだよ
わかんないなら書き込むなよ
190デフォルトの名無しさん:2007/09/15(土) 10:43:44
すいません 調べたらなんとなくわかりました
スレ汚しすまそ
191デフォルトの名無しさん:2007/09/15(土) 10:49:28
>>189
死ね
192デフォルトの名無しさん:2007/09/15(土) 11:00:09
>>182
MSDNよく読めや、ボケが。

と言いたいところだが、これに関してはwinnls.hを直接読んだ方が遥かに手っ取り早い。
たぶん、必要なフラグは LOCALE_SNATIVELANGNAME だと思う。
193デフォルトの名無しさん:2007/09/15(土) 11:14:18
クイズの答えをEditコントロールに入力し、
その文字列を取得し、比較し正解か不正解か

というものを作りたいんですが、文字列を取得する方法を教えてください。
一応調べたら、GetWindowTextではできないってことはわかったんですが・・。
194デフォルトの名無しさん:2007/09/15(土) 11:19:30
次の質問をどうぞ
195193:2007/09/15(土) 11:37:50
すみません。自己解決しました☆GetWindowTextでできました。
196デフォルトの名無しさん:2007/09/15(土) 13:35:36
おめでとう☆
197デフォルトの名無しさん:2007/09/15(土) 15:42:58
以前、マウスカーソルの移動とキーの自動入力を行うプログラムを作る必要があり、
その時は、調べて解決したのですが、今調べるとどうしても見つかりません。

たしか、APIをコールした後、開放しないと入力を受付けなくなるタイプと、
入力を受付けるタイプ(たしか、こちらは非推奨だったような)の二つがあったと思います。
そのような、マウスカーソルの移動とキーの入力を行う
APIの名前をご存知のかたがいらっしゃったら教えてください。
198デフォルトの名無しさん:2007/09/15(土) 15:50:48
チートしたいから教えて下さいってはっきり言えや
199デフォルトの名無しさん:2007/09/15(土) 17:26:15
チートしたいから教えてください!
200デフォルトの名無しさん:2007/09/15(土) 17:48:13
ISAPIでのメールスロットについて悩んでおります。

まず、メールスロットのサンプルプログラムを作りました。
HANDLE hSndSlot = CreateFile(SLOTNAME, GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ) ;
この通りにCreateFileしますと問題なくハンドル作成できます。

次にISAPIのDLLの中で全く同じCreateFileの一文を書いたのですが、
ERROR_ACCESS_DENIEDのエラーになってしまいます。
(CreateMailSlot無しですと、ISAPI-DLLの中でもERROR_FILE_NOT_FOUNDが返ってきます)

ISAPI-DLL内でCreateFile()に失敗する原因としてどのようなものが挙げられるでしょうか。
二時間以上悩んでおりますが全く抜け出せません・・・
201デフォルトの名無しさん:2007/09/15(土) 18:59:20
セキュリティー上危なくない?
202デフォルトの名無しさん:2007/09/15(土) 23:06:26
すみません。
OleLoadPictureを使ってjpegを読み込みたいのですが、
読み込んだ直後にIPicture::get_Height、 get_Widthでサイズを取得すると、
実際の画像の大きさよりかなり大きな値になりました。
例えば113 は 2990に、640は16933になります。
OleLoadPictureの戻り値は正常です。
何か原因でしょうか?
203デフォルトの名無しさん:2007/09/15(土) 23:11:32
>>202
それ単位がPixelじゃないんだ
HIMETRICなんだ

http://msdn2.microsoft.com/ja-jp/library/bc81z8b6(VS.80).aspx
204デフォルトの名無しさん:2007/09/15(土) 23:52:07
>>203
なるほど。おかげ様で正常にピクセル単位に変換できました。
ありがとうございました。
205デフォルトの名無しさん:2007/09/16(日) 00:50:29
>>192
回線切ってwinnls.h を読んできました。なんとかなりそうです。
SENGCOUNTRY って、English Country のことですね。
そこら辺に落ちてたサンプルの作者が分かってなかったみたいです。
人のせいにします。
ありがとうございました。
206デフォルトの名無しさん:2007/09/16(日) 00:53:00
このスレの人たちはMFC使ってない人が多いのかな?
個人的にはMFCきらいなんでWin32そのまま使ってます
207デフォルトの名無しさん:2007/09/16(日) 00:56:36
MFCは別スレなんだから、ここは使ってない人が多いのは当たり前。
208デフォルトの名無しさん:2007/09/16(日) 01:10:04
>>205
一応追伸
俺が求めていたのはLOCALE_SLANGUAGE(localized name of language)
だったようです。では。
209200:2007/09/16(日) 08:46:51
もう5時間試行錯誤しているのに
さっぱり進めないッスorz
210デフォルトの名無しさん:2007/09/16(日) 08:52:10
211デフォルトの名無しさん:2007/09/16(日) 08:55:31
>>209
死ぬまで彷徨えばいいよ
212デフォルトの名無しさん:2007/09/16(日) 09:25:48
>>209
ISAPI全然しらんけど
MSDNライブラリの「Reading from a Mailslot」っての読んだ?
213デフォルトの名無しさん:2007/09/16(日) 09:27:23

SHFileOperation でフォルダ・ファイルのコピー等の操作をしています
Explorerでは、出てくるダイログが最前面表示でしっかり出てきますが、
Flagの設定等でそれと同じようにできるでしょうか、教えてください。
214デフォルトの名無しさん:2007/09/16(日) 09:35:37
できます
215デフォルトの名無しさん:2007/09/16(日) 09:38:50
>>209
正直IIS全然詳しくないけど、ISAPIってNetworkServiceで動作するんじゃないの?
メールスロットの作成元がよく判らないけど、
既定では作成ユーザかSystem位しかアクセスできないような気がする。
216デフォルトの名無しさん:2007/09/16(日) 09:41:25
>>214

どうもありがとうございました!!
217デフォルトの名無しさん:2007/09/16(日) 09:43:06
bool(BOOL)は扱いが楽だが、たまに情報量が少なくて戻り値型を変えてほしいと思うケースがある
218デフォルトの名無しさん:2007/09/16(日) 09:52:10
HRESULTにしろってか
219デフォルトの名無しさん:2007/09/16(日) 10:00:27
>>214
ところで、Flag引数のバリエーションにはヘルプによると

fFlags
FOF_ALLOWUNDO
FOF_CONFIRMMOUSE
FOF_FILESONLY
FOF_MULTIDESTFILES
FOF_NOCONFIRMATION
FOF_NOCONFIRMMKDIR
FOF_NO_CONNECTED_ELEMENTS
FOF_NOCOPYSECURITYATTRIBS
FOF_NOERRORUI
FOF_NORECURSION
FOF_NORECURSEREPARSE
FOF_RENAMEONCOLLISION
FOF_SILENT
FOF_SIMPLEPROGRESS
FOF_WANTMAPPINGHANDLE
FOF_WANTNUKEWARNING

とありましたが、これ以外にもありますでしょうか?該当の内容のFlagが
見つけられずにいます、よろしければご教示のほどよろしく!
220デフォルトの名無しさん:2007/09/16(日) 10:34:25
ヘッダ眺めれ
221デフォルトの名無しさん:2007/09/16(日) 10:45:58
hwnd
222デフォルトの名無しさん:2007/09/16(日) 13:39:59
>>220-221

hwnd ではゼロポインタを指定しています。これを別のものに設定すると
可能になるでしょうか。
じつはWin32APIはほとんどこれしか使っていない.NETユーザーなもので
この辺のことがよくわかりません。すみませんが、よろしくお願いします。
223デフォルトの名無しさん:2007/09/16(日) 15:19:06
>>222
C言語暦1ヶ月のわて思うに
hwndをゼロポインタにしてるから、SHFileOperationがいじけたんじゃね!
ゼロ以外のhwndにしなきゃ駄目なんじゃない。とにかくゼロ以外の、たとえば
1とか2とかに変更して試してみたらいいんじゃね。オーナーウインドウが何か知らないけど、
出来ればオーナーウインドウのHWNDが指定できると申し分ないと思うんだけど。
224デフォルトの名無しさん:2007/09/16(日) 15:26:18
>>223
あなたのいるプロジェクトは危険だというのが
その文章からヒシヒシと伝わってくる

上達にするようにがんばれ。超がんばれ。
225デフォルトの名無しさん:2007/09/16(日) 15:29:51
オーナーを指定すれば、必ずその上にウインドウが来ると言うだけの話。
226デフォルトの名無しさん:2007/09/16(日) 15:48:49
>>224
わてはプロジェクトにいないづら。学校に居て教室で講義子守唄にzzzz
間違ってC言語の授業とってしまった,orz。
Cは一々型を指定しなきゃならないから鬱陶しいなり。
動的言語が主流の時代にC言語を教えてる学校だから、やっぱ危ないよなわての学校
227デフォルトの名無しさん:2007/09/16(日) 16:00:35
何でここにおんねんw
228デフォルトの名無しさん:2007/09/16(日) 16:04:21
>>226
Cはやっておかないとだめよ
229デフォルトの名無しさん:2007/09/16(日) 16:10:29
その主張は重々わかるんだが、それでもソフトウェアする上で避けられないのがCなんだよなあ。
Java, C#マンセーな俺だがそれでもC使えないヤツはだめだと思う。
230デフォルトの名無しさん:2007/09/16(日) 16:11:24
>>227
宿題スレ行くつもりが、スレタイよくを見ずにクリックしたらココが現れたなり
これ何かの縁づら。
231デフォルトの名無しさん:2007/09/16(日) 16:29:05
はいw雑談スレになりましたw
232デフォルトの名無しさん:2007/09/16(日) 16:50:42
>>226
学校の授業はそれくらい保守的なのが相場。
233デフォルトの名無しさん:2007/09/16(日) 16:57:24
東大ってことしからpython教えてなかったか?
234222:2007/09/16(日) 17:28:32
>>223
どうもです。確かな縁で教えていただくことができました。助かりました!!

>>225
あーそうだったんですか、、やっとわかりました。うまくできているのですね!!

みなさんどうもありがとうございました!!
235デフォルトの名無しさん:2007/09/16(日) 18:26:42
Windows画像とFAXビューアの高速版を自分で作ろうとしていたら、
FindFirstFile、FindNextFileでは、エクスプローラで表示されている順番で
ファイル名を取得することができませんでした。
例えば、更新日時でソートしてあるフォルダでは更新日時順に画像を表示したいです。
適切なAPIがあれば教えて下さいませ。
236デフォルトの名無しさん:2007/09/16(日) 18:38:23
RegQueryValueEx
237デフォルトの名無しさん:2007/09/16(日) 19:15:08
IShellFolder, IShellFolder2
238デフォルトの名無しさん:2007/09/16(日) 20:38:44
>>236>>237
そのキーワードで検索して色々と知ることができました。
後は自分で調べていきたいと思います。
どうもありがとうございました。
239200:2007/09/16(日) 21:53:54
IISの権限の問題でした。
admin権限で動かしてみたところ成功いたしました。
レスくださったかたありがとうございました。
240デフォルトの名無しさん:2007/09/17(月) 04:26:08
InsertMenuItemでMENUITEMINFOを指定しますが、メニューの
文字色を変えるにはどのようにしたらいいのでしょうか?

fTypeをMFT_STRINGにすると色を指定できないようですし
241デフォルトの名無しさん:2007/09/17(月) 04:29:28
MFT_OWNERDRAW を指定して自分で描く
242デフォルトの名無しさん:2007/09/17(月) 04:43:21
>>241

こんな時間に即レスthx
トライしてみます
243デフォルトの名無しさん:2007/09/17(月) 10:15:08
VC についてるspy++なんですが、アプリ起動の際に、メッセージ横取りを禁止させる関数ってあるんすかね?
244デフォルトの名無しさん:2007/09/17(月) 10:16:04
無い
245243:2007/09/17(月) 10:20:28
関数といったのが、まずかったか・・・方法でもいいんですけど・・・
凄い人が集まってそうなので聞いてみたんですが、アプリ解析対策とかしないんですか?
246デフォルトの名無しさん:2007/09/17(月) 10:22:06
逆に聞きたいのだが、>243からどうやったら>245の意味を読み取れると思うのだ?
247デフォルトの名無しさん:2007/09/17(月) 10:23:04
フックを禁止する方法が無いんじゃね

kernel32に手出ししてみるとか?
248244:2007/09/17(月) 10:24:19
メッセージ見られるとやばいようなら最初からCUIにするよ
249デフォルトの名無しさん:2007/09/17(月) 10:24:37
故意か天然かしらんけど、煽り口調になってるぞ。
煽ってもなにも出ないばかりか、袋にされるだけさ。
250デフォルトの名無しさん:2007/09/17(月) 10:29:10
rootkitみたいなものを作って叩かれたいマゾなんだね。
251デフォルトの名無しさん:2007/09/17(月) 10:41:39
チートしたい人とチートされたくない人って似た質問するんだよね
252デフォルトの名無しさん:2007/09/17(月) 10:44:21
敵を知り己を知ればなんとやら
253デフォルトの名無しさん:2007/09/17(月) 10:45:26
>>251
チートておまえ・・・。
254デフォルトの名無しさん:2007/09/17(月) 10:47:40
メッセージレベルでクラック対策しようってのがそもそも間違ってる
255デフォルトの名無しさん:2007/09/17(月) 10:55:36
そういえばそんなフィルタドライバのソースがどっかに転がってたな
読もう読もうと思っててそのままURLもとろも失くしてしまったが
256デフォルトの名無しさん:2007/09/17(月) 10:56:17
もとろも!   orz
257デフォルトの名無しさん:2007/09/17(月) 11:20:11
         ,-、            ,.-、
        ./:::::\          /::::::ヽ
       /::::::::::::;ゝ--──-- 、._/::::::::::::::|
       /,.-‐''"´          \:::::::::::|
     /                ヽ、::::|
    /                    ヽ
     l    \                  l
    .|    ●          /     |
     l  , , ,           ●     l    にゃんだばかやろー
    ` 、      (_人__丿    、、、   /
      `ー 、__               /
         /`'''ー‐‐──‐‐‐┬'''""´
        ./        ___ l __
         l   ./    /  |/ |
         `ー-<    /  ./  ./
           `ー‐--{___/ゝ、,ノ
258デフォルトの名無しさん:2007/09/17(月) 13:01:25
フックされても問題ないように
パラメータを暗号化すれば医院で内科医
259デフォルトの名無しさん:2007/09/17(月) 13:53:37
文字列テーブルの文字を使うのに
文字配列用意してそこにコピーしないとだめっていうのは
面倒ですねぇ・・・。
文字配列の大きさの問題(文字列が入りきらない可能性)もあるし。
無駄に大きな配列用意するのもどうかなってかんじ。
260デフォルトの名無しさん:2007/09/17(月) 14:42:50
よくわからんが、必要なサイズぴったしに malloc すればいいんでないの?
261デフォルトの名無しさん:2007/09/17(月) 16:45:47
ListBoxとか使うときに
自分で持ってる構造体があるのに
API用にもうひとつ作ってコピーしないといけない理不尽
のことを言ってるのかな?
262デフォルトの名無しさん:2007/09/17(月) 17:06:36
>>261
 >API用にもうひとつ作ってコピーしないといけない理不尽
 コピーした領域をOSに渡す形なら、OS側は任意の時点で領域解放できる。

・アプリが持っている領域を、直接OSに渡した場合、その領域を解放するタイミングを知るスマートな方法はあるか?
(OS側の処理が先に終わった場合、アプリに、その領域を解放してよいか問い合わせるのか?
 それとも、解放要求をアプリに対して発行するのか?
 どちらも本末転倒でしょ?)
263262:2007/09/17(月) 17:08:04
261じゃなくて >>259 だった。すまん
264デフォルトの名無しさん:2007/09/17(月) 17:23:44
ニワトリが先か、タマゴが先か論争に発展してきますた。
265デフォルトの名無しさん:2007/09/17(月) 17:26:01
Javaや.NETはもう一度コピーしてるんだからまだマシ
266デフォルトの名無しさん:2007/09/17(月) 18:18:56
>>265
kwsk
267デフォルトの名無しさん:2007/09/17(月) 18:21:53
>>266
ahsg
268デフォルトの名無しさん:2007/09/17(月) 19:01:46
そもそも>>259はLoadStringの話に見えるのは気のせいか?
269デフォルトの名無しさん:2007/09/17(月) 21:25:47
そうなんです。
LoadString で文字列を取り出すとき
文字列の長さを気にせずに柔軟に取り出せる良い方法ないのかなぁと悩んでます。
いろいろ調べて MFC か ATL 使えばいけるのはわかったんですが
Windows プログラミングの勉強はじめたばかりで
両方ともよくわかってないんで
とりあえず MFC も ATL も使わないで出来る方法ないのかなぁと悩んでたんですけど
三日ぐらいあれこれ考えたんですけど
コレといったのが見つからないんでもう悩むのやめます。
270デフォルトの名無しさん:2007/09/17(月) 21:38:28
それならLoadResourceとかを使えばいいんだよ。
俺もやった。リソース内ではUTF-16LEのくせに、
なぜか9xがLoadResourceWを実装していないというケチさのおかげで。
271デフォルトの名無しさん:2007/09/17(月) 21:40:25
NULLを含まない格納した文字数が返るのだから nBufferMaxの値-1
が返ってきたときはたぶんバッファを増やさないといけないと判断できると思う

最初 260 とかでスタックにとって、それで足りなそうな場合だけ動的に 260*2 。
それでもだめなら 260*2 *2 。それでにだめなら 260*(ry
って感じか?

272デフォルトの名無しさん:2007/09/17(月) 21:51:57
俺はめんどくさいからそんな仕様にしない
273デフォルトの名無しさん:2007/09/17(月) 22:25:38
ネットで勉強してウィンドウとメニューバーまでは作れるようになったけどあと
がまったくわかりません(´・ω・`)
フリーソースのを見て勉強するのがいいってよくみるけど読んでみてもチンブンカンブン
需要はあるはずなのになんでWin32APIの書籍ってこんなに少ないんだろ…
どこかいいサイトか本ありませんか?
274デフォルトの名無しさん:2007/09/17(月) 22:27:22
>>271
そーいやリソース文字列は、最大65536バイトまでだったけ?
275デフォルトの名無しさん:2007/09/17(月) 22:32:51
>>273
猫でも読んでろ
276デフォルトの名無しさん:2007/09/17(月) 22:34:23
>>273
知識つけたきゃテンプレの猫とかAPI入門嫁

アドバイスしとくと、どこまで覚えるかより何をしたいかが重要だったりする
それと人のソースはあくまで一例と捉える
277デフォルトの名無しさん:2007/09/17(月) 22:34:28
>>274
http://msdn2.microsoft.com/en-us/library/ms647465.aspx#_win32_String_Resources
[quote]
For 16-bit string resources, 255 characters is the maximum length.
For 32-bit string resources, 65535 characters is the maximum length.
[/quote]
278デフォルトの名無しさん:2007/09/17(月) 22:36:58
>>277
おーいえ
さんくす
279デフォルトの名無しさん:2007/09/17(月) 23:59:48
>>275-276
d 猫ってAPIのもあったのね。HPは見づらいから今度探して買ってくる
280デフォルトの名無しさん:2007/09/18(火) 00:13:28
>>279
あほは死ね
281デフォルトの名無しさん:2007/09/18(火) 00:23:21
>>280
「あはは死ね」だと思った。
282デフォルトの名無しさん:2007/09/18(火) 00:42:50
>>279
あはは死ね
283262:2007/09/18(火) 02:02:37
>>279
 猫は「apiの使い方の外枠をつかむ」目的に限定した方がいいです。 コードは問題ありすぎ……。
(コーディングに関しては、オライリーの牛本を参照してください。)

ページが見づらいのは「書籍を買ってくれ」って事なのかね?
284デフォルトの名無しさん:2007/09/18(火) 02:10:05
>>262は死ね
285デフォルトの名無しさん:2007/09/18(火) 02:50:39
みんな死ななくていいよ
286デフォルトの名無しさん:2007/09/18(火) 04:08:18
ツールバーのちらつき対策で質問があります。
ウィンドウサイズを変更するとツールバーがちらついて困ってます。
メインウィンドウは仮想画面化してるのですが、ツールバー部分はHDCがなくてちらついてしまってます。
書き換えタイミングを0.1秒単位にづらすとかはやりましたが軽減できてもちらつき自体をなくす事はできませんでした。
どういった解決方法があるでしょうか?ご教授お願いします。
287デフォルトの名無しさん:2007/09/18(火) 04:10:29
子ウィンドウをクリッピング領域からはずす
288デフォルトの名無しさん:2007/09/18(火) 04:14:22
背面消去をなくす
289286:2007/09/18(火) 04:30:28
>>287
すみません。クリッピング領域から外すということは書き換えないってことでしょうか。。
今のサイズ変更部分はこうなってます。
case WM_SIZE:
MoveWindow(hTool, 0, 0, LOWORD(lParam), 50, TRUE);
break;
出来ればもう少し詳しくお願いできないでしょうか・・・orz
290デフォルトの名無しさん:2007/09/18(火) 04:32:17
ツールバー作成時に
WS_CLIPCHILDRENとWS_CLIPSIBLINGSを追加

試してない
291290:2007/09/18(火) 04:34:01
ごめん超勘違いしてた
俺のは忘れろ
292デフォルトの名無しさん:2007/09/18(火) 10:27:18
>>286
うろ覚えだが
メインウィンドウのクラスのスタイルから、CS_HREDRAW、CS_VREDRAWをはずすか、
またはメインウィンドウのWM_ERASEBKGNDで何もしないように対処すればよいと思われ
293286:2007/09/18(火) 10:33:24
>>292
既にそれは、やってしまってるんです。。
それでもちらつくんですよね。。
今も悩んでいて、面倒臭いですが一つ一つのボタンにハンドルを持たせればクリアできるのはないかと考え、
プログラム作成中です。
294デフォルトの名無しさん:2007/09/18(火) 10:50:11
気になるのなら自前で描くしかない
295デフォルトの名無しさん:2007/09/18(火) 10:59:43
ちらつくのは所詮描画の問題なので、普通に考えれば
メインウィンドウの背景(WM_ERASEBKGND)、メインウィンドウの描画(WM_PAINT)、
ツールバーの背景、ツールバー自身の描画
のいずれかで無駄な背景初期化を行っているくらいしかないと思うのだが

メインウィンドウの仮想画面化とかツールバー部分のHDCって何?
あとボタンにハンドルに持たせるとかも意味が分からない

ツールバーの描画で何か特別なことやってる?
296286:2007/09/18(火) 11:13:46
>>295
ツールバーにHDCみたいなのあればメモリ上にメモリDC取ってちらつき対策できないかと考えてました。
ハンドルというかボタン一つ一つにHWND型で持たせてクリアしようかと。。ツールバーの場合、ツールバーのHWND
単体でサイズ変更してるため、ちらついてるんじゃないかと考えています。
297デフォルトの名無しさん:2007/09/18(火) 11:42:52
>>296
ツールバーはOS標準のコントロールなんだから単体で対処可能なちらつき対処くらいやってるだろ
そんなことに力をそそぐくらいなら、>>292あたりもう一度見直したほうがいいのでは?

スタイル設定したつもりが反映されていないとか
メッセージハンドラを定義してみたけど名前が違ってたりして呼び出されてないとか
実はメインウィンドウの子のビューがツールバーと重なっていて、ビューの背景消去が問題だとか
298デフォルトの名無しさん:2007/09/18(火) 12:03:26
標準コントロールはちらつき対策なんて元から考えていないが、
対処くらいやっているだろうとか考えられてしまうそのおめでたい頭がうらやましい。
299デフォルトの名無しさん:2007/09/18(火) 12:26:19
そもそもツールバーってちらついたっけ?
VC2005+MFC+WinXPSP2だと、ToolBarのみとReBar+ToolBarの構成で作れるが、
どちらもちらつきは発生しなかったぞ。
昔のMFC自前実装の奴(ペイントとか)はちらつくけど。
300デフォルトの名無しさん:2007/09/18(火) 12:31:11
>>298
いや言い方はよくなかったもしれないけど、そんな高度なことを議論する
つもりはなくて、普通メインウィンドウのリサイズで気になるほどちらついたり
はしないんじゃないのってことを言ったつもりだった

そうでないと、ツールバーを使う人は全員描画のカスタイズをしないといけなく
なるけど、自分でもそんなコードは書いたことがないし、それで特に気になったこともない

>>286の気にしているのがどの程度なのかは知らないので断言はできないけど
301デフォルトの名無しさん:2007/09/18(火) 12:33:25
ちらつく理由を考え、それがあってるか検証し、
それを元に対策を考える。
302デフォルトの名無しさん:2007/09/18(火) 12:51:23
>>299
言われるまで気づかなかったが、最近の標準コントロールはちらつかないな。
Explorerのウィンドウをムキになってリサイズしてみたが悔しいほどちらつかないw
ツールバーよりウィンドウの幅が狭くなったときに出る>>のマークだけがちらついてる。
303デフォルトの名無しさん:2007/09/18(火) 13:02:01
チラリズム
304デフォルトの名無しさん:2007/09/18(火) 13:39:06
WM_SIZE時、TOOLBARにWM_SIZEを送る
クライアント部分は子ウィンドウにしてToolbarと重ねない
305デフォルトの名無しさん:2007/09/18(火) 13:58:03
専門用語でフリッカーと言うんだよ
306デフォルトの名無しさん:2007/09/18(火) 14:26:04
>case WM_SIZE:
>MoveWindow(hTool, 0, 0, LOWORD(lParam), 50, TRUE);
>break;
なんかこの辺が間違ってる気が
307デフォルトの名無しさん:2007/09/18(火) 14:30:39
>>298
死ね
308286:2007/09/18(火) 19:24:40
>>306
サイズ変更時に書き換えなさいって命令なので、その部分をカットすればちらつきませんが、
その場合、サイズ変更時ツールバーが変になってしまうので・・・。
検証の結果、ボタン一つ一つにHWNDを持たせるか、>>294さんの言うようにオーナードローで描くか。
現在は、この2択です。もっと簡単にできないか、考えて見ますね。
309デフォルトの名無しさん:2007/09/18(火) 19:33:51
>>308
あほは死ね
310デフォルトの名無しさん:2007/09/18(火) 19:51:28
MoveWindow の最後の引数ってなんだっけ。
311デフォルトの名無しさん:2007/09/18(火) 19:53:58
            ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ <こいつ最高にアホ
 彡、   |∪|  /
/ __  ヽノ /
(___)   /
312デフォルトの名無しさん:2007/09/18(火) 19:56:22
>>310
ググれよ。カス。
313デフォルトの名無しさん:2007/09/18(火) 20:34:30
>>310が一番的確な解決方に導いていると思うぞ
314デフォルトの名無しさん:2007/09/18(火) 20:38:02
             ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ <こいつ最高にアホ
 彡、   |∪|  /
/ __  ヽノ /
(___)   /

>>313
>>308
最後の引数には気付いている。
おかしいのは最後の引数ではない。
315デフォルトの名無しさん:2007/09/18(火) 22:18:15
そもそもツールバーをAPIで作ったときにMoveWindowなんて書いた記憶が無い件
316デフォルトの名無しさん:2007/09/18(火) 22:55:03
そもそもメインウィンドウは仮想画面化してるとか
ツールバー部分はHDCがないとか言う不思議君だから
リサイズでMoveWindowくらいするだろう
317デフォルトの名無しさん:2007/09/18(火) 23:47:20
検証もせずに批判ばかりする奴より、検証しようと努力してる奴の方が俺は好感を持つ。
318182:2007/09/18(火) 23:51:20
すみません
GetLocaleInfo() でファイルの言語を取得できるようになったんですが、
.net で作ったexeの場合、自分で取得すると「日本語」が返ってくるんですが
「ファイルのプロパティ」だと「ニュートラル言語」になってるんですが、
どうすりゃ取れるんでしょうか。
319デフォルトの名無しさん:2007/09/18(火) 23:57:10
>>317
正解が既に>>304で出てるのに無視されてるからじゃないの?

>>308
ツールバーのリサイズはMoveWindowでなく、WM_SIZEを直接SendMessageする

ttp://msdn2.microsoft.com/en-us/library/aa932759.aspx
320デフォルトの名無しさん:2007/09/19(水) 00:38:22
>>319
MoveWindowはダメとかSendMessageとか命令の問題じゃない気がするが・・・
試しに俺が検証してみた。

* ツールバーを作成する */
hTool = CreateWindowEx(
WS_EX_TOOLWINDOW, TOOLBARCLASSNAME, NULL,
WS_CHILD | WS_VISIBLE | WS_THICKFRAME,
0,0,0,0,
hWnd, (HMENU)IDR_TOOLBAR, hInst, NULL);

ボタン略。

>case WM_SIZE:
>SendMessage(hTool, WM_SIZE, wParam, lParam);
>break;

ちらついてるじゃねーか。orz
321デフォルトの名無しさん:2007/09/19(水) 01:45:18
>>320
俺も今試してみたが(WinXP SP2)、特にちらつきはないぞ?

//ツールバー作成部分(ボタンは2個)
hToolBar = CreateToolbarEx(hWnd, WS_CHILD | WS_VISIBLE, ID_TOOLBAR, 2,
hInst, IDB_TOOLBAR, tbb, 2, 0, 0, 16, 15, sizeof(TBBUTTON));
//他は省略

ベースはVC2005のWin32アプリのウィザード生成物で、ツールバー処理追加以外に以下を修正
×wcex.style = CS_HREDRAW | CS_VREDRAW;
○wcex.style = 0;
×wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
○wcex.hbrBackground = (HBRUSH)NULL;

なお、WM_SIZEの追加コードは

(a)SendMessage(hToolBar, WM_SIZE, wParam, lParam);
(b)MoveWindow(hToolBar, 0, 0, LOWORD(lParam), 50, TRUE);

の両パターンを試したがどちらも問題はなし
322デフォルトの名無しさん:2007/09/19(水) 02:12:26
>>321
ちらつきの考え方の違いかな。。
ウィンドウの枠、右部分を(マウス左)ドラッグして左右に振ってみて欲しい。
ツールバーのボタンがちらついてない?
俺もCreateWindowExとCreateToolBarExだと違いがあるのかと思って両方試してみたが
両方ともちらつかないか?俺も気になってきたw
323322:2007/09/19(水) 02:27:21
補足
ちらつきが分かりやすいように、ラージサイズのアイコン使用中。
324デフォルトの名無しさん:2007/09/19(水) 02:28:22
ちらしの裏にでも書いてろ低脳
325デフォルトの名無しさん:2007/09/19(水) 02:31:20
Vista使えばちらつきなんて気にならん
326デフォルトの名無しさん:2007/09/19(水) 02:34:06
>>322
OSは何?
こちらで試したプログラムでは、メニューの文字はわずかにちらつくが、ツールバーは
それよりずっと安定していて目で認識できる範囲のちらつきはない

ボタンのデザインはグレーの背景に手書きで1、2と書いてあるだけなので
目立ちにくいかもしれないが、少なくともメニューと同じくらいちらついてくれれば確実に分かる
327322:2007/09/19(水) 02:40:27
>>326
環境 (WinXP SP2)
ボタンのデザインは、既存のBMP。フォルダアイコンのラージサイズを貼り付けてる。

tbBmp.hInst = HINST_COMMCTRL;
tbBmp.nID = IDB_STD_LARGE_COLOR; /* 標準の大サイズのアイコンを使う宣言
328デフォルトの名無しさん:2007/09/19(水) 09:38:55
ちらつくのはいちいち消して(バックグラウンド塗りつぶし)描くからだよ
もともと全部描きなおすタイプならけさんでいい
329デフォルトの名無しさん:2007/09/19(水) 12:07:36
再度試してみた

背景消去を行わない(ウィンドウクラスの背景ブラシをNULLにするか、WM_ERASEBKGNDを無視)
とした場合でも、クラスのスタイルにCS_HREDRAW | CS_VREDRAW が残っていると、ボタン部分が
かすかにちらつく(メニュー文字のちらつきの半分程度)

>>322>>286の言ってるちらつきがこれってことはないのか?
330デフォルトの名無しさん:2007/09/19(水) 12:19:23
WS_CLIPCHILDRENしてるか?
331デフォルトの名無しさん:2007/09/19(水) 17:39:11
Visual Basic 6.0ってありましたよね?
あの言語でIsNumericって関数があったんですけど、
あれをVC++側で実装する場合、
OLE関連の関数群に存在するのでしょうか?
もし、存在するなら、その名称を教えていただきたいです。
332デフォルトの名無しさん:2007/09/19(水) 17:44:40
>>331
市ね
333182:2007/09/19(水) 18:06:08
>>318
VerLanguageName() で自己解決しました。
LangID は LocaleID の下位4バイトでした。
帰ります。
334デフォルトの名無しさん:2007/09/19(水) 19:19:25
>>331
VariantChangeTypeで数値関連の種類に変換できるか試せば、
同じような動作になると思う。
335デフォルトの名無しさん:2007/09/19(水) 21:14:29
Win98からVistaまで動作するプログラムを作ろうと思ってます。
Vistaのフォルダ書き込み権限を取得するために、ConvertStringSidToSidを
使っているんですが、Win98でこのプログラムを動作させようとすると
ConvertStringSidToSidがないとエラーになってしまいます。

ConvertStringSidToSidを使いつつ、両方のOSで動作するようにするためには
どうすればいいんでしょうか?
336デフォルトの名無しさん:2007/09/19(水) 21:16:52
>>335
LoadLibrary, GetProcAddress
337デフォルトの名無しさん:2007/09/19(水) 21:17:21
むり
338デフォルトの名無しさん:2007/09/19(水) 21:20:28
>>336
ありがとうございます。
試してみます。
339デフォルトの名無しさん:2007/09/19(水) 23:23:04
> Win98からVistaまで動作するプログラムを作ろうと思ってます

ムダな努力だと思うがどうよ?
依頼主からの指示?
340デフォルトの名無しさん:2007/09/19(水) 23:51:17
98-Me
2000-XP
Vista
と3種類のリリースに分けて作る方が得
341デフォルトの名無しさん:2007/09/20(木) 01:02:59
最初にOSのバージョン調べて、それを元に挙動変えるのはだめなん?
342デフォルトの名無しさん:2007/09/20(木) 01:10:52
98でSIDとかあったっけ
343デフォルトの名無しさん:2007/09/20(木) 01:18:23
> Win98からVistaまで動作するプログラムを作ろうと思ってます
 Win16で作れば、Win3.1から動くのが作れます。

冗談はともかく、Win98,Me対応は面倒な筈です。
OSのバージョン依存部分に1枚皮を被せて、呼び分ける必要があります。
OS依存部分を別DLLにして、LoadLibraryするとか。
344デフォルトの名無しさん:2007/09/20(木) 02:03:21
>>343
> Win16で作れば、Win3.1から動くのが作れます。
残念ながら64bit版Windowsで動きません。
345デフォルトの名無しさん:2007/09/20(木) 03:09:00
.Netでつくる
346デフォルトの名無しさん:2007/09/20(木) 03:51:25
Win95って.netインストールできないんじゃなかった?
347デフォルトの名無しさん:2007/09/20(木) 03:53:24
>>343はWin98からと言ってるから問題ない
348デフォルトの名無しさん:2007/09/20(木) 04:19:38
まだ98つかってる香具師いるのか
349デフォルトの名無しさん:2007/09/20(木) 05:48:08
買い換えるまでWin98という奴はいるだろ
350デフォルトの名無しさん:2007/09/20(木) 06:40:37
オレは win98 + winXP。去年から win98 -> vista と思っているが、評判が
よくないので、ママ。win98 機は gateway なんだが、keyboard に慣れていて
ホレ今も、それと coding にも使っている。hardoff で見つけた 6GB HDD で
動かしていて、元の HDD は後生大事にとってある。時々換装しないといけない
が、今年はやってない。フラットケーブルが煎餅みたいに割れそう。
351デフォルトの名無しさん:2007/09/20(木) 06:44:20
Win98をWebに繋ぐなんて最早犯罪だろ。
352デフォルトの名無しさん:2007/09/20(木) 07:09:11
ダブルバッファリングのコードを書いたつもりでしたが、上手くいきません。

InvalidateRect()関数によってWM_Paintが要請されるまで、描画が行われない予定
なのですが、InvalidateRect()を呼び出さずにもWM_Paintが発行されているようで、
TextOutによる文字列が描画されてしまいます。ご教授お願いします。

ttp://sakuratan.ddo.jp/uploader/source/date52297.txt
353デフォルトの名無しさん:2007/09/20(木) 07:21:51
>>335
もう見てないかもしれんが、俺のプログラムでは同様の事例で
リンカーオプション「/DELAYLOAD」を使っている
354デフォルトの名無しさん:2007/09/20(木) 07:44:06
見てるよ
ずーっと見てる
君を見てる
355デフォルトの名無しさん:2007/09/20(木) 07:48:07
質問に答えろぉぉぉおおお!
356デフォルトの名無しさん:2007/09/20(木) 07:50:29
>>355
m9(^Д^)プギャー アホスギ
357デフォルトの名無しさん:2007/09/20(木) 07:52:40
>>352
せいぜい、WM_PAINT内でii.hScreenを使っていいかどうかを見る
フラグでも用意しておくしかないと思う。
358デフォルトの名無しさん:2007/09/20(木) 07:55:20
>>352
とりあえず、ダブルバッファがどうとか考える前にメッセージを理解してくれ
359352:2007/09/20(木) 08:03:57
サンプルがわるかたかな・・・。
hScreenに描画している限り無効領域は発生せず、
WM_Paintは発行されないと思ってたんだけど、その認識が間違ってるのかな。
360デフォルトの名無しさん:2007/09/20(木) 08:05:23
>>359
fとWindowProcは同じスレッド?
361352:2007/09/20(木) 08:07:38
>>360
fという関数は、WM_Createで行うとエラーがでる部分を退避させるため
だけに暫定処置として作りました。
362デフォルトの名無しさん:2007/09/20(木) 08:20:11
ああすまん、WM_CREATE内から呼んでいるね。
ってそれだとWM_CREATE内から呼んでいることに変わりはないだろ。
363デフォルトの名無しさん:2007/09/20(木) 08:26:04
どう見てもAPI以前のレベルです、本当にありがとうございました。
364352:2007/09/20(木) 08:31:52
一応、猫でもわかるのサンプルみて作ったつもりなんだけど、
なんで描画されるんだろ。

365デフォルトの名無しさん:2007/09/20(木) 08:40:02
>>359
ウィンドウ作った時点じゃ、最初から無効領域
366352:2007/09/20(木) 09:32:48
>>365
なるほど!動作確認の仕方が間違っていたのですね。
おかげさまで問題を解決することができそうです。
ありがとうございました。
367デフォルトの名無しさん:2007/09/20(木) 09:34:31
重なっている上のウィンドウが移動したり、新しくウィンドウが作られたり、
そのウィンドウがリサイズしたりして、新たに描画しなければならないところが無効領域。
InvaridateRectは、そういった条件にかかわらず無効領域にするAPIだから。
368デフォルトの名無しさん:2007/09/20(木) 12:21:27
>366
この手のタイプは、「できませんでした。教えてください。」ってまた来るんだよな・・・orz
369デフォルトの名無しさん:2007/09/20(木) 13:29:37
教えて頂きたいのですが、MDIにおいて、
親ウインドウと子ウィンドウの透過率を変えることは可能でしょうか?

親ウィンドウに色のついた透明な子ウィンドウを重ねたいのです。
(一旦メモリデバイスにコピーした後、AlphaBlend()により色を付ける方法は
成功しました。)

SetWindowLong(),UpdateLayeredWindow()などが関連してくると思うのですが。
370デフォルトの名無しさん:2007/09/20(木) 13:40:03
子ウィンドウをレイヤードウィンドウすることはできない
371デフォルトの名無しさん:2007/09/20(木) 13:49:17
>370
やはり、そうでしたか。WS_CHILDとWS_EX_LAYEREDのスタイルを合わせると
ウィンドウが作れないんですよね。

ここから推測するに、親ウィンドウ(透過率255)、
子ウィンドウ(透過率127)のようなことも出来ないとなりますね。

現在のAlphaBlend()とUpdateLayeredWindow()を上手く使ってって方法を
取っていきます。
372デフォルトの名無しさん:2007/09/20(木) 20:46:07
GetKeyboardStateで、現在のキーボードの状態を取得しているのですが、
アプリのウィンドウがアクティブでないときにGetKeyboardStateすると、
上手く情報を取得してくれません・・・、解決するにはどうすればよいでしょうか?

ウィンドウをアクティブにしたフリをして、GetKeyboardStateを動かすこととか出来ないですかね?

キー入力はフックしていて、キーボードでキーが入力されると、
アプリのウィンドウがアクティブでないときでも、
イベントが呼ばれてGetKeyboardStateが走る仕組みです。

動作・開発環境は以下の通りです。
OS : WindowsXP SP2 .net framework 1.1
言語 : C#

宜しくお願い致します。
373デフォルトの名無しさん:2007/09/20(木) 20:49:24
>GetKeyboardStateで、現在のキーボードの状態を取得しているのですが、

ドキュメントにちゃんと書かれているとおり、
GetKeyboardState は現在のキーボードの状態を取得するAPIではありませんので、
別のやり方、たとえば GetAyuncKeyboardState を使うなどに変えた方が良いでしょう。
374デフォルトの名無しさん:2007/09/20(木) 20:50:17
>>373
GetAsyncKeyboardState
375デフォルトの名無しさん:2007/09/20(木) 21:05:51
>>373-374
GetAsyncKeyStateですよね?
試してみます。ありがとうございました!
376デフォルトの名無しさん:2007/09/20(木) 21:30:16
335です。
>>353さんの方法で出来ました。
ありがとうございました。
377デフォルトの名無しさん:2007/09/20(木) 22:00:05
WinSock関連での質問です。
TCPによる接続でconnection関数を利用していますが、
対象のホストを見つけられない場合は、
一定時間処理が停止しています。
これの対処法を、皆さんはしていますか?

スレッド側に投げて対処?
それとも、connectionよりいい関数があるんでしょうか?
378デフォルトの名無しさん:2007/09/20(木) 22:28:19
非ブロックソケット

379デフォルトの名無しさん:2007/09/20(木) 23:29:06
>>377
スレッド
非ブロック
非同期
380377:2007/09/21(金) 00:04:40
>>378-379
スレッド案で非同期化を試みます。
ありがとうございました!
381デフォルトの名無しさん:2007/09/21(金) 00:14:20
SHBrowseForFolder() で質問です。
BROWSEINFO.hwndOwner に設定したウィンドウに対してモーダルで
ダイアログが開きますが、他にモードレスのウィンドウがあるとき、
それらは無効にならずにフォーカスを奪えてしまいます。
全ウィンドウに対してモーダルで開いて欲しいのです。
しょうがないので SHBrowseForFolder() の前後に
「hwndOwner と同じプロセスの全有効ウィンドウを無効/有効にする」
というのを入れたら希望する動作になったんですが、
なにかオフィシャルな手段は提供されてないんでしょうか。
382デフォルトの名無しさん:2007/09/21(金) 00:38:48
その、他のウィンドウの構成が間違っている
383デフォルトの名無しさん:2007/09/21(金) 03:11:36
>>369-371
MSの公式サイトにはUpdateLayeredWindow()の方を使えって書いてある
384デフォルトの名無しさん:2007/09/21(金) 03:15:26
ごめん逆だった
SetLayeredWindowAttributesを使えって書いてある
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdnwui/htm/layer.asp
385デフォルトの名無しさん:2007/09/21(金) 04:19:28
>>384
どこに?
386デフォルトの名無しさん:2007/09/21(金) 11:20:33
lstrlenWなどの文字列の長さを返すAPIの説明に、
「文字単位の長さ」とありますが、
サロゲートペア文字は2文字と数えるのでしょうか?
それとも1文字?
もし1文字で数えられてたら、自分のプログラムが大変なことになります・・・・
387デフォルトの名無しさん:2007/09/21(金) 11:26:10
>>386
MSDNに書いてあるよ。

> The return value specifies the length of the string, in TCHAR
> values. This refers to bytes for ANSI versions of the function
> or WCHAR values for Unicode versions.
388デフォルトの名無しさん:2007/09/21(金) 11:27:30
サロゲートペアのことは書いてないようだけど
389デフォルトの名無しさん:2007/09/21(金) 11:28:24
>>388
「WCHARの長さ」って書いてあるやん
390デフォルトの名無しさん:2007/09/21(金) 12:54:30
早く全面的にUTF32に汁
391デフォルトの名無しさん:2007/09/21(金) 13:39:30
キーボードで入力されたキーコードとシフト状態を元に、文字を作成する関数って

ToAscii
ToAsciiEx
ToUnicode
ToUnicodeEx

上記以外に無いのでしょうか?あれば教えていただきたいです。
宜しくお願い致します。
392デフォルトの名無しさん:2007/09/21(金) 13:58:43
>>381 ShowOwnedPopupsは ? (試してないけど)
386関連。EM_LIMITTEXT/EM_SETLIMITTEXTはどーなってますか
393392:2007/09/21(金) 15:46:57
ShowOwnedPopupsは忘れてください
394デフォルトの名無しさん:2007/09/21(金) 17:08:10
DLLを自分で作って使ってみたいと思い挑戦しているのですが
どーしてもわからないっす。

VC2005Expressを使用してDll projectでDllをビルド
LoadLibraryで読み込む←成功
先にtypedef int (*DLLFUNC)(int, int) ;と宣言しておき
DLLFUNC Add ;
Add = (DLLFUNC)GetProcAddress(hDll, "Add") ;

↑でNULLが帰ってきて「指定されたプロシージャが見つかりません」って出てます。
DLLのソースは
#include <windows.h>
int WINAPI DllMain(HINSTANCE hInstance , DWORD fdwReason , PVOID pvReserved) {
return TRUE;
}
__declspec (dllexport) int Add(int nValue1 , int nValue2)
{
return (nValue1 + nValue2) ;
}
です。よろしくお願いします。
395デフォルトの名無しさん:2007/09/21(金) 17:10:07
def作ったほうが確実
396デフォルトの名無しさん:2007/09/21(金) 17:12:22
そのソースのファイル名は .c か .cpp か。
397デフォルトの名無しさん:2007/09/21(金) 17:16:31
>>395
defを使う方法はまだやった事無いです。今から勉強します。
>>396
.cppです。
398デフォルトの名無しさん:2007/09/21(金) 17:19:45
>>397
では、.c にリネームして試してみるべし。
399デフォルトの名無しさん:2007/09/21(金) 17:22:01
extern "C"をつけて名前マングルをやめて、かつdefでエクスポートすればいける
400デフォルトの名無しさん:2007/09/21(金) 17:33:35
誰だマングリなんて作ったの
意味ねーだろ
401デフォルトの名無しさん:2007/09/21(金) 17:43:01
.cにリネームしたらいけました!
さらに.cppに戻した後 >>399に書かれていたextern "C"の方法でも
出来ました!有難うございます。
402デフォルトの名無しさん:2007/09/21(金) 17:48:39
>>400
多重定義とかメンバ関数とか名前空間とか同名の区別に必要。
型安全なリンクにも繋がる。
403デフォルトの名無しさん:2007/09/21(金) 21:18:10
>400
んじゃオーバーロードとか使うなよ
404デフォルトの名無しさん:2007/09/21(金) 21:33:43
せめて同一プラットフォームではマングリングは統一して欲しいところ
BCCとVC++でオブジェクトリンクできないとかもうね
405381:2007/09/22(土) 01:54:58
>>382
今はテストプログラムで遊んでいるところなので、たしかにこういう
状況はレアケースだと思います。
たとえば「モーダルダイアログ→その上に[参照...]ボタン」だったら
全然問題ないです。
何を隠そうVB6で書いてるんですが、もしかしてVB特有の現象でしょうか。
C&SDKもMFCも分からないヘタレなもので、
.NETでFolderBrowserDialogクラスで試してみたら、ちゃんと全ウィンドウに
対してモーダルでした。
.NETでSHBrowseForFolder() をP/Invoke するのをこれから試します。

>>392
その関数はちょっと目的とは違う気がします。(試してないけど)
406デフォルトの名無しさん:2007/09/22(土) 02:03:47
その前にspyしてWindow構成見たほうが早くね
407デフォルトの名無しさん:2007/09/22(土) 02:09:08
micsoroftがツール提供してるってことは、
spyは合法ってことでおk?
408デフォルトの名無しさん:2007/09/22(土) 02:20:53
何言ってんだおめぇ
409デフォルトの名無しさん:2007/09/22(土) 03:48:12
>>404
COM
410デフォルトの名無しさん:2007/09/22(土) 03:55:58
1PはPLAYERだろーが
411デフォルトの名無しさん:2007/09/22(土) 04:03:12
ごめん

全然うまくないから
412デフォルトの名無しさん:2007/09/22(土) 04:08:01
>>411
相手にならん
もっと練習してから来い下手糞
413デフォルトの名無しさん:2007/09/22(土) 05:28:35
ちょっとフォルダ内のファイル一覧を作る処理を書こうとしてるんですが
FindFirstFile〜FindNextFile...は遅い!と思いしばらく実験...
ひょっとしてコマンドプロンプトでdir〜するより遅いんじゃないか?・・・と調べたらさすがにdirよりは早いようだったorz

しかしもっと早くしたいのです、FindFirstFile系より早い関数知ってる人いますか?
414デフォルトの名無しさん:2007/09/22(土) 06:00:23
IShellFolderのEnumObjectsはもっと遅い
415デフォルトの名無しさん:2007/09/22(土) 06:18:51
こんなスレで質問していないで、早く試行錯誤でバグ回避策を見つける仕事に戻るんだ!
何?やる気がありません?なら辞めろや、他の派遣雇うからw
416デフォルトの名無しさん:2007/09/22(土) 06:21:40
IShellFolderですか、COMってやつですか?
初めて見るのでよく分からんですが、こいつはこいつで奥が深そうですね
417デフォルトの名無しさん:2007/09/22(土) 07:13:35
>>413
遅いって何ファイルで何秒くらい?
418デフォルトの名無しさん:2007/09/22(土) 07:14:45
自分で作ればいいのに
能なしは大人しく既存の関数使っとけ
419デフォルトの名無しさん:2007/09/22(土) 07:35:59
>>417
5万で一秒くらいです、ちっとも遅くない・・・ですか?
420デフォルトの名無しさん:2007/09/22(土) 07:39:12
そんなに速くしたいならWindowsの外でやれ
421デフォルトの名無しさん:2007/09/22(土) 07:39:46
1msで50ファイル。どこが不満なんだ‥‥
422デフォルトの名無しさん:2007/09/22(土) 07:42:25
実際計って以外に早いなと・・・
他の部分が重いのでしょうね、スレ汚し申し訳なかったです
423デフォルトの名無しさん:2007/09/22(土) 07:45:46
windowsプログラムのお話
VC++2005EEのスケルトンプログラムのソースが何をやっているのか教えてぽ・・・。
424デフォルトの名無しさん:2007/09/22(土) 07:46:04
キャッシュが効いてただけと予想
425デフォルトの名無しさん:2007/09/22(土) 07:48:20
一覧の表示をListViewとかでやってるなら検索中は更新止めるとかしないと笑える程遅くなるぞ。
426デフォルトの名無しさん:2007/09/22(土) 08:04:49
キャッシュはメモリのコンパクションツール(っていうのかな?)を使えば消えますよね?
その状態だと5万ファイルで一分ぐらい、次回実行以降高速化してます・・・
ListViewとかじゃなくvector<string>に入れて後でファイルに保存してます、時間計測は純粋にファイルリスト取得部分のみです

再起動とかしてちゃんと計測し直した方がいいですかねぇ?
427デフォルトの名無しさん:2007/09/22(土) 08:09:58
うるせーバーカ死ね
428デフォルトの名無しさん:2007/09/22(土) 08:11:21
>>426
HD直接触ってみるとか
429デフォルトの名無しさん:2007/09/22(土) 08:25:20
キャッシュですねぇ、>>424さんの指摘どおりのようです
再起動して実行すると初回が91秒、10回実行して平均とか出してたんですが2回目以降は750msぐらいで安定してます
HDD直に触るのは魅力的ですよね、一度はやりたいです

しかしこれ、それでも使えないほど遅いかと言われればそんなこともない速度でしょうか
どうも昔触って以来FindFirstFile系は遅いと思い込んじゃってたんですかねぇ
430デフォルトの名無しさん:2007/09/22(土) 08:27:18
くそう
431デフォルトの名無しさん:2007/09/22(土) 08:33:48
>>423の言ってるのが「空のプロジェクト」をチェックしないで普通に作った奴なら
単にウィンドウ出してメニューつけて、だけをやってるんだと思う
なんかReadMe.txtってのもプロジェクトに参加してるみたいだし一度目を通されてはどうでしょう

間違ってたらスマソ
432デフォルトの名無しさん:2007/09/22(土) 08:36:17
>>429
APIの呼び先で予想外のコードが動いている可能性もあるから確認してみるといいよ。
アンチウィルスソフトはよくやってる。
とりあえずカーネルデバッグしてみ。
433デフォルトの名無しさん:2007/09/22(土) 08:48:42
カーネルデバッグと、初めて聞いたもので調べておりますが
カーネルデバッガというものを使うようですね、おすすめなんてありますか?
434デフォルトの名無しさん:2007/09/22(土) 09:15:36
とりあえず無難にWinDbgを使って見るのがいいんじゃない?
無料でダウンロードできるよ。
http://www.microsoft.com/japan/whdc/DevTools/Debugging/default.mspx

WinDbgの文法覚えとけばCUIのデバッカへの移行もしやすいから出先でデバックする機会とかあるなら役立つかもね。

あと、カーネルデバッグするしないにかかわらずシンボルをインストールすることを忘れずに。
たとえば、Visual Studioでデバッグする場合不明なシンボルがあるとコールスタック表示するのをそこであきらめるし、
シンボル名が表示されてりゃブレークポイント貼るとき楽だしね。
435デフォルトの名無しさん:2007/09/22(土) 09:30:31
>>434さん、折角教えて頂いたばかりですが現在の私の能力ではここまでのようです・・・
かなり便利そうには見えるのですが習得には少しかかりそうです・・・

いろいろとご指摘くださった皆さんありがとうございました、
今回はFindFirstFile〜でとりあえず作り、後は次回の課題とさせていただきます。
436デフォルトの名無しさん:2007/09/22(土) 09:32:40
>>431
やさしい人ありがとう><
みんなプログラム作る時は空のプロジェクトでやるのかな・・・?
437デフォルトの名無しさん:2007/09/22(土) 09:34:17
ああ
438デフォルトの名無しさん:2007/09/22(土) 09:48:51
坊主。男は黙って空のプロジェクトで作るもんだぜ?( ゚Д゚)y─┛~~
439デフォルトの名無しさん:2007/09/22(土) 14:21:56
質問させてください。
BitBltで描写している800*600のビットマップ画像を毎秒20ピクセルぐらい
で高速横移動させようとすると、描写がおっつかないのか移動中画像がぶれる
のです。(上から下に走査線の波がはしるように画像がゆがみます)

ひょっとしてWINAPIではそこまでの描写はできないのでしょうか?
DirectXを使えということなのでしょうか。
440439:2007/09/22(土) 14:24:04
↑すみません、移動値が間違っていました。
一回10ピクセルの移動を、毎秒20回ほどです。
441デフォルトの名無しさん:2007/09/22(土) 14:25:19
ププ
442デフォルトの名無しさん:2007/09/22(土) 14:29:24
>>439
DirectXには垂直同期を待つ機能がある
GDIだけではできない
443439:2007/09/22(土) 14:41:27
>>442

ご回答ありがとうございます。

今まさにGDIに垂直同期させる方法がないか考えているところ
でしたが、できないのですね。。。

DirectXを勉強することにします。
ヒント、感謝します。
444デフォルトの名無しさん:2007/09/22(土) 16:46:25
"C:\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*.*"

これがOKなのが許せない
445デフォルトの名無しさん:2007/09/22(土) 16:51:28
/////////////////////////////////////home/unko
http://www.2ch.net///////////////////////////////////////////////////
普通だろ
446デフォルトの名無しさん:2007/09/22(土) 16:53:02
VC++2005EEで途中まで文字入力したときのポップアップヘルプが
出なくなっちゃたよぅ・・・><
447デフォルトの名無しさん:2007/09/22(土) 16:57:37
EEなんて使ってるからだ
大人しくプログラミング引退しなさい
448デフォルトの名無しさん:2007/09/22(土) 17:03:58
そんなぁ・・・><
449デフォルトの名無しさん:2007/09/22(土) 17:06:19
と、思ったら僕の勘違いでした・・・
ごめんなさい
450デフォルトの名無しさん:2007/09/22(土) 17:21:41
>>444
パス名の先頭に\\?\(Cなら\\\\?\\)でもつければ?
451デフォルトの名無しさん:2007/09/22(土) 21:14:40
>>446
あのピョコってでるのは確かインテリセンスって言うはずだ
プロジェクトのフォルダ内に.ncbって拡張子のファイルがあると思う、表示される情報はこれに保存されてるらしい
で、情報の更新に若干タイムラグが出る事があってポップアップが出ない事がある、これは数秒待てば出るようになるよ
前の行にビルドエラーになる箇所があるとそれ以降インテリセンスも更新されてなかったりするのでこまめにビルドするといいかも
452デフォルトの名無しさん:2007/09/22(土) 21:30:29
じゃあ、コンパイル成功してもIntelliSense動いてくれないのはなぜなんだぜ?
特にBoostとか使ってるとき、特定の行以降/ブロック内で起こる。
453デフォルトの名無しさん:2007/09/22(土) 21:53:56
それはC++がキモすぎるかr
454デフォルトの名無しさん:2007/09/22(土) 22:27:03
いやキモいのはbo
455デフォルトの名無しさん:2007/09/22(土) 23:01:32
CreateWindowAとかのANSIバージョンのAPIで作ったウィンドウで
TextOutWとか使ってもおk?
456デフォルトの名無しさん:2007/09/22(土) 23:18:38
wchar渡せばおkだと思うが
457デフォルトの名無しさん:2007/09/23(日) 00:02:27
使ってもおk
458デフォルトの名無しさん:2007/09/23(日) 01:49:17
jpgやgifを表示させるのにもっとも手っ取り早い方法ってGDI+ですか?
GDI+って解説しているところがほとんどなくてよくわからないんだよなぁ・・・
459デフォルトの名無しさん:2007/09/23(日) 01:55:50
460デフォルトの名無しさん:2007/09/23(日) 02:40:08
サンクス
461デフォルトの名無しさん:2007/09/23(日) 02:42:36
ヘッダ読んでMSDNでも引くがいい
462デフォルトの名無しさん:2007/09/23(日) 02:46:26
OleLoadPictureもアリ
463デフォルトの名無しさん:2007/09/23(日) 03:06:52
CreateProcessでIEでも呼べば一発
464デフォルトの名無しさん:2007/09/23(日) 03:07:20
おまえ頭いいな
465デフォルトの名無しさん:2007/09/23(日) 03:21:41
コロンブスの玉子
466デフォルトの名無しさん:2007/09/23(日) 04:02:49
>>1-466
知らないならレスしないで下さい!ウザいだけです!
467デフォルトの名無しさん:2007/09/23(日) 04:20:26
まあ雑談がウザイのは同意
468デフォルトの名無しさん:2007/09/23(日) 05:37:44
>>466

> 466 名前:デフォルトの名無しさん[sage] 投稿日:2007/09/23(日) 04:02:49
> >>1-466
> 知らないならレスしないで下さい!ウザいだけです!

この範囲指定の場合、スレッド削除依頼を出すべきではないでしょうか?

と、更に雑談を増やしてみる。
469デフォルトの名無しさん:2007/09/23(日) 05:44:35
while(GetDC(NULL));
470デフォルトの名無しさん:2007/09/23(日) 08:43:12
自分が描いた画像を表示させたいんですがBMPから読み込む以外に何か方法ありませんか?
BMPみたいにビュアーで普通に見れるとかじゃなく、そのアプリを起動するまで
画像が見えないようにしたいんですが
471デフォルトの名無しさん:2007/09/23(日) 09:32:14
独自フォーマットを定義する
画像データを暗号化する
472デフォルトの名無しさん:2007/09/23(日) 09:46:06
>>471
ありがとうございます。この2つしかないんですか…
暗号化にでも挑戦してみることにします
473デフォルトの名無しさん:2007/09/23(日) 09:59:20
リソース使いたいんじゃないのか?

LoadResource
474デフォルトの名無しさん:2007/09/23(日) 15:05:43
800×600+タイトルバー,枠の大きさのウィンドウを作りたいんですがどうすればいいですか?
とりあえずこのように書いてみたんですがこれだとタイトルバーも含んで800×600
の大きさでウィンドウが作られてしまう・・・

CreateWindow(
APP_NAME,TEXT(__FILE__),
WS_OVERLAPPEDWINDOW^WS_THICKFRAME^WS_MAXIMIZEBOX|WS_VISIBLE,
CW_USEDEFAULT,CW_USEDEFAULT,
800,600,
NULL,NULL,hInstance,NULL
)
475デフォルトの名無しさん:2007/09/23(日) 15:08:50
GetSystemMetricsで得た値を足す
476デフォルトの名無しさん:2007/09/23(日) 15:09:23
AdjustWindowRectEx
477デフォルトの名無しさん:2007/09/23(日) 15:12:24
>>474
AdjustWindowRect。ただしメニューバーが2段になる場合は要自力計算。
478デフォルトの名無しさん:2007/09/23(日) 15:13:22
>>475-476のレスより
CreateWindowだから、AdjustWindowRectとGetSystemMetricsの組み合わせ。

ttp://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpwinui/html/_win32_adjustwindowrect.asp

補足:AdjustWindowRectExはCreateWindowEx用らしい
479デフォルトの名無しさん:2007/09/23(日) 15:23:45
MSDN2の左側のフレームメニューが付いてこなくなってる。
Mobile and EmbeddedならOKなのに非常に使いにくいから早く直して
480デフォルトの名無しさん:2007/09/23(日) 15:27:44
>>475-476
d AdjustWindowRectで無事うまくいきました
481デフォルトの名無しさん:2007/09/23(日) 15:29:30
>>477-478
ごめん。書き込むまえにリロードして確認してなかった
わざわざありがとうございます
482デフォルトの名無しさん:2007/09/24(月) 15:53:07
Unicode文字列から改行コードのみを取り除く関数ってある?
テキストルーチンってたくさんあるからありそうだけど・・・
483デフォルトの名無しさん :2007/09/24(月) 16:10:17
>>482
こういうこと?
WCHAR str[] = L"abcdefg\n";
WCHAR *temp;
if(temp = wcschr(str,L'\n'))
*temp = L'\0';
484デフォルトの名無しさん:2007/09/24(月) 16:25:11
前から読んで詰めたらいいんじゃね
俺はめんどくさいからString.Replaceするけど
485482:2007/09/24(月) 16:42:53
ファイルから読み込んだ文字列なのでCR,LF,NEL,VT,FF,LS,PS全て消したいと思ってるんですよ。
今も使われてるのかよくわからない改行コードもあるけど・・・

>>484さんが言うように一文字ずつ判定して前に詰めるようにします。

ありがとう!
486デフォルトの名無しさん:2007/09/24(月) 17:55:24
対象が複数あるなら、wcsspnがいいと思う。
いずれにせよWin32 APIではないが。
#それともshlwapiにStrSpnがあるってか。
487デフォルトの名無しさん:2007/09/24(月) 17:58:43
>>485
 制御コードを全て削除したいなら、0x01〜0x1fを削ればいい。
 ただし、TAB,SI,SOの処理だけは真面目に考えた方がいいぞ。
488デフォルトの名無しさん:2007/09/24(月) 18:59:32
その調子でテキスト中の\nを\r\nに直す方法を教えてください
489デフォルトの名無しさん:2007/09/24(月) 19:01:04
その調子、その調子。
490デフォルトの名無しさん:2007/09/24(月) 19:27:57
       __
      |・∀・|ノ  よい
     ./|__┐
       /  調子
    """"""""""""""
         .__
       ((ヽ|・∀・|ノ  しょっと
         |__| ))
          | |
          調子
    """""""""""""""""
491デフォルトの名無しさん:2007/09/24(月) 19:33:10
調子に乗るな
492デフォルトの名無しさん:2007/09/24(月) 19:35:16
493デフォルトの名無しさん:2007/09/24(月) 19:39:58
>>490-491
ワロタw最初意味がわからんかったww
494デフォルトの名無しさん:2007/09/24(月) 22:06:03
もしかしてWin32APIではこういうfor文の条件の中で宣言するのはNG?
for(int i=1;i<=10;i++)
495デフォルトの名無しさん:2007/09/24(月) 22:09:14
API関係ねー
496デフォルトの名無しさん:2007/09/24(月) 22:26:35
ソースファイルC言語にしてたからだった
C++でずっと書いてたからてっきりCでもいけるのかと…
スマソ
497デフォルトの名無しさん:2007/09/24(月) 22:58:19
>>494, 496
 cppでも処理系によって i のスコープが異なるから、for文の前で宣言した方が良くね?
498デフォルトの名無しさん:2007/09/24(月) 23:00:41
お前だけ良くね?
499デフォルトの名無しさん:2007/09/24(月) 23:04:53
まだVC6使ってンのかヨ!
500デフォルトの名無しさん:2007/09/24(月) 23:25:30
>>497
#define for if (0) ; else for
501デフォルトの名無しさん:2007/09/24(月) 23:56:25
>>496
C99ならOK。オプションでC99に出来たりしないか?
VC++は基本的にC++なのでC99は軽視しているという話だが、
gccなら-std=c99をつければよい。
502デフォルトの名無しさん:2007/09/25(火) 05:31:11
>>487
LSやPSはC0 Controlの範囲にないしNELはC1 Controlだろ
Unicodeの制御文字をなめるな
503デフォルトの名無しさん:2007/09/25(火) 12:20:17
このような感じでウィンドウ内にhtmlを表示させています。
ttp://www8.uploader.jp/user/vipprog/images/vipprog_uljp00064.txt

この表示させているhtml内のJavaScriptの変数の値を、アプリケーション側で取得、または書き換えを行いたいのですが、
どのようにすればいいのでしょうか?
504デフォルトの名無しさん:2007/09/25(火) 12:52:25
元のHTMLがないから

IWebBrowser2やらIHTMLDocument2やら
IHTMLElementやらIHTMLElementCollectionやらを使えとしか言えない

多分document.writeしたテキストオブジェクトを置き換える事になるはず
スクリプト実行に変数には手出しできないと思われ
505デフォルトの名無しさん:2007/09/25(火) 12:59:23
>>503
IHTMLDocument2へのポインタを取得し、
http://www.nitoyon.com/vc/tips/ie_component.htm
parentWindowプロパティでIHTMLWindow2へのポインタを取得し、
Itemプロパティに"変数名"を渡せばいいんだと思う。
http://wwwww.2ch.net/test/read.cgi/news4vip/1190679433/36n
506デフォルトの名無しさん:2007/09/25(火) 13:05:06
>>504
元のHTMLはこんな感じです。随分と簡略化していますが、
このようなHTMLの中の現在の i の値をアプリケーション側で取得を行いたいと思っています。

<html><head><title>サンプル</title>
<script type="text/javascript">
<!--
i=0;
function test(){
 document.getElementById("show").innerHTML = "i=" + i;
 i++;
}
// -->
</script>
</head>
<body>
<input type="button" value="テスト" onclick="test()">
<p><div id="show"></div></p>
</body>
</html>
507デフォルトの名無しさん:2007/09/25(火) 13:08:48
これって、WIN32 API の話なの?
508デフォルトの名無しさん:2007/09/25(火) 13:13:41
>>505
ん〜実はC言語しかしらなくて、C++的な書き方が全く理解できません。
リンク先の情報もググって出る情報もC++チックなのばかりなのですが、C言語じゃキツイですかね・・・
509デフォルトの名無しさん:2007/09/25(火) 13:38:36
C言語がわかるならobjebase.hを読めばわかる
510デフォルトの名無しさん:2007/09/25(火) 19:03:54
UNICODEの'ー'や'〜'などの文字が非表示文字扱いになっているんですが仕様ですか?

iswprint(L'ー') --- 偽が返る

ワイド文字でも_ismbc系と同じような文字判定をするにはどうしたらよいのでしょうか?
511デフォルトの名無しさん:2007/09/25(火) 20:36:02
スレ違い
512デフォルトの名無しさん:2007/09/25(火) 21:06:21
>>510
本当はCRTはスレ違いだが、Win32APIが直接絡んでくるのでここに書く。

iswprintは最終的にGetStringTypeWに繋がっていて(Cロケール時は別)、
>>510 で挙げたような文字はC1_DEFINED(0x200)が返ってくる。
iswprintは0x157のマスクで判定しているようで、印字不可文字として0を返すが、
GetStringTypeWの説明ではC1_CNTRL(0x20)を除く全ての文字がPrintableと書かれている。
よって、GetStringTypeWを直接呼び出して判定してやればOKかと。たぶん。

ちなみに.NETのSystem.Char構造体のIs系メンバには、
Printableみたいなものは用意されていなかったりする。
513デフォルトの名無しさん:2007/09/25(火) 21:43:19
非同期WinInetについての質問です。

InternetSetStatusCallback()で登録されたコールバック内で
INTERNET_STATUS_REQUEST_COMPLETEを受信後、
InternetQueryDataAvailable()を実行してもFALSEかつERROR_IO_PENDINGになることがあります。

INTERNET_STATUS_REQUEST_COMPLETEなのにPENDINGとはどうすりゃいいんじゃとググってみましたら
ttp://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/samples/internet/networking/asyncdemo/default.asp
が見つかりはしたのですが、
このソースでは537-553行目の通りマヌケな方法でグルグルと回っているだけ・・・
(このnCounter==2000の2000には何か根拠はあるのでしょうか・・・)

もう少し賢い方法はありませんでしょうか?
514デフォルトの名無しさん:2007/09/25(火) 21:55:44
SetTimerとInvalidateRectを組み合わせてアニメーションをつくると
InvalidateRectで画面を再描写させるたびに一瞬横線が入ってしまうのですが
これってどうにかする方法ないでしょうか?
515デフォルトの名無しさん:2007/09/25(火) 22:09:28
InvalidateRectの第3引数をFALSEにするとか?
あるいはダブルバッファリング?
516デフォルトの名無しさん:2007/09/25(火) 22:14:59
>>514
>>439 >>442辺りを参照
517デフォルトの名無しさん:2007/09/25(火) 22:32:20
>>515-516
ありがとうございます。
FALSEにして背景を消さないようにしたら今書いてるプログラムでは上手くいきました
とりあえず今はこれで解決ってことにしておきます
518デフォルトの名無しさん:2007/09/26(水) 05:23:12
'说明'
という文字を、UNICODE版のスタティックテキストやテキストボックス等に
表示する方法を教えてください。
フォントの問題でしょうか。 '?明'になってしまいます。
519デフォルトの名無しさん:2007/09/26(水) 05:24:18
あぎゃ、文字化けしちゃった。
普通の漢字じゃないのかな。
この文字です。
http://www.google.co.jp/search?hl=ja&q=%E8%AF%B4%E6%98%8E&lr=
520518:2007/09/26(水) 05:25:45
エクスプローラーでファイル名として作成すると
きちんと表示されるみたいです。連投すいません。
521518:2007/09/26(水) 06:14:43
あー・・・・できた。
CreateDialogIndirectParamAで作ったコントロールでは
フォントを変えてもSetWindowTextWしてもうまくいかないらしい。
フォントをMS UI Gothicにした上で、
CreateDialogIndirectParamWでコントロールを作り直した
らうまく表示できました。
同じDLGTEMPLATE引数でもAとWで動作が違う様です・・・。
522デフォルトの名無しさん:2007/09/26(水) 08:01:47
>>458
Visual C++ 2005 EE (無料版) にて、
普通に Win32API プロジェクトを作成。
プロジェクトのプロパティで、
【 共通言語ランタイムサポート(/clr) 】 を選択。

#include <windows.h>
// GDI+を呼び出すために
#using <mscorlib.dll>
#using <System.dll>
#using <System.Drawing.dll>

using namespace System;
using namespace System::Drawing;

// として、例えば、
void mCliTest(HWND hwnd)
{
 PAINTSTRUCT ps;
 HDC hDC = BeginPaint(hwnd, &ps);
 Graphics^g = Graphics::FromHdc((IntPtr)hDC);
 // テキストや図形の描画
 Pen^pen1=gcnew Pen(Color::Blue,2); // Penの色と大きさ
 g->DrawString(..,..,..,,); // や
 g->DrawLine(pen1,..,..,,); // などが使える。
 EndPaint(hwnd, &ps);
}
523デフォルトの名無しさん:2007/09/26(水) 08:33:40
>>522
なんで /clr?
524デフォルトの名無しさん:2007/09/26(水) 08:43:45
C++なら#include <gdiplus.h>でネイティブ版を使えばいいと思うんだ。

猫ですまないけど。
http://www.kumei.ne.jp/c_lang/sdk4/sdk_335.htm
525デフォルトの名無しさん:2007/09/26(水) 09:15:01
gcnewとかGraphics^とか違和感ありまくりだな
526デフォルトの名無しさん:2007/09/26(水) 09:27:27
仕事終わた
いえーい!
527デフォルトの名無しさん:2007/09/26(水) 11:14:14
ドルジ
いえーい!
528デフォルトの名無しさん:2007/09/26(水) 13:28:05
>>524
猫でも・・のことは知りませんでした。
これから確認してみます。

>>458 さんに答えたかったのは、
次のようにすれば、bmp はもちろん、
jpg, png, gif 形式の画像も読み込んで表示できる、
ということでした。

Bitmap^bmap1 = gcnew Bitmap("abc.jpg");
g->DrawImage(bmap1, x, y); // x, y は int型

以上、abc.jpg の場合。
529デフォルトの名無しさん:2007/09/26(水) 13:32:22
てか、既に回答もらってるとこに遅レスしても、もう見てないと思うんだ・・・
530デフォルトの名無しさん:2007/09/26(水) 13:37:19
回答というのは半分自己満足なのだからこれでいいのだ
531デフォルトの名無しさん:2007/09/26(水) 13:38:58
回答というのは半分他社迷惑なのだからこれでいいのか
532デフォルトの名無しさん:2007/09/26(水) 13:43:49
>>528
猫も次の336章はちょうど画像表示のプログラムだよ。
533デフォルトの名無しさん:2007/09/26(水) 18:01:46
Windowsの付属ペイントを使ってると
高速でマウスを動かしても切れ目なく描画されてるんですが
WM_MOUSEMOVEは
取得に限りがあるから上手くいかないっていうのは分かったんですが
方法がよく分からず、どうすればペイントのように描画できるんでしょうか?
534デフォルトの名無しさん:2007/09/26(水) 18:34:00
>>533
大きくマウスを動かしながら描画すればすぐに気付くと思うぞ
535デフォルトの名無しさん:2007/09/26(水) 18:34:30
前回 WM_MOUSEMOVE が来たときの座標を覚えておいて
今回 WM_MOUSEMOVE で来た座標と線で繋げばいいんじゃない
536デフォルトの名無しさん:2007/09/26(水) 19:38:13
GUIアプリケーションで、そのウィンドウに割り振られたメッセージキューを同一プロセス上の別スレッドから覗き見する方法はありますでしょうか。
537デフォルトの名無しさん:2007/09/26(水) 19:50:33
>>535 はん、親切すぎw
538デフォルトの名無しさん:2007/09/26(水) 19:58:01
チヨスもよろしく♪
539デフォルトの名無しさん:2007/09/26(水) 20:09:41
描画を行う関数を作ったのですが、HFONTとHBRUSHを引数にして呼んでも使えませんでした
なので、関数内で宣言してフォントや色を指定しました(CreateFontとCreateSolidBrush)
こうするとコンパイルできてちゃんと表示されたのですが、5分くらい眺めているといきなりフォントと色がデフォルトの状態になりました
何度か試してみましたが、やっぱり5分くらい経つとデフォルトに戻ってしまいます
どうすれば良いのでしょうか?
540デフォルトの名無しさん:2007/09/26(水) 20:11:24
>>533
SDKサンプルのimageditにはそういう場合の補間計算するルーチンが入っていたが、
今あのサンプル自体が付属してないような・・・
541デフォルトの名無しさん:2007/09/26(水) 20:17:18
>>539
プログラムやめらばいいよ
所詮それがお前の実力
542デフォルトの名無しさん:2007/09/26(水) 20:18:26
>>539
フォントやブラシを作るだけ作って削除しなくて
リソース不足で新しいフォントやブラシを作れなくなったんじゃないかと予想
543デフォルトの名無しさん:2007/09/26(水) 20:30:18
>>539
言っていることがよくわからないからコード張れ。
544デフォルトの名無しさん:2007/09/26(水) 20:31:18
>>542
ありがとうございます
解決しました

>>541
ごめんなさい・・・
545デフォルトの名無しさん:2007/09/26(水) 20:54:19
>>534 >>535
ありがとう、ようやく疑問が解決します
546デフォルトの名無しさん:2007/09/26(水) 22:15:36
>>536
SetWindowsHookExとか? PeekとかGetは調べないとあるのかどうかわかんないけど、ない気がする
547デフォルトの名無しさん:2007/09/26(水) 22:19:39
>>536
SetWindowLong
548デフォルトの名無しさん:2007/09/26(水) 22:59:15
TextOutでGDIで描写した上に文字を表示させようとすると文字の周りが白くなって
しまうので、一度メモリディバイスにTextOutしてBitBltのSRCCOPYで上にかぶせたら
いけるかな。と思いやってみたのですが同じくこのように周りが白くなって困ってます
何か文字だけを黒く表示する方法ないでしょうか?

ttp://upup.ty.land.to/src/up1127.jpg
549デフォルトの名無しさん:2007/09/26(水) 23:01:27
SetBkMode
550デフォルトの名無しさん:2007/09/26(水) 23:02:01
>>548
SetBkMode
551デフォルトの名無しさん:2007/09/26(水) 23:12:33
>>549-550
ありがとうございます。できました
ずっと試行錯誤してたのが馬鹿みたいだ
552デフォルトの名無しさん:2007/09/26(水) 23:41:42
ジュウシマツ貼っても良いかな?
553デフォルトの名無しさん:2007/09/27(木) 10:52:12
CommandLineToArgvWのANSI版ってのはないんですよね?
自作するしかないですか?
554デフォルトの名無しさん:2007/09/27(木) 11:36:54
>>553
VCならCRT内部のargcとargvを参照すればいい。
WinMainからであっても生成されている。
宣言はCRTのソースを読めば判る。
555デフォルトの名無しさん:2007/09/27(木) 12:18:30
>>546-547
ありがとうございました。
AttachThreadInput というのも発見したので、
いくつか試しながらやってみたいと思います。
556デフォルトの名無しさん:2007/09/27(木) 13:02:00
activescript rubyの板からきたんだけど

vrubyからWindowsで現在実行中のプロセスを列挙したいのですがどうすればいい?

Win32APIのEnumProcessesとかを使うと出るらしいが
使い方がわからん。

使い方をおせーて
557デフォルトの名無しさん:2007/09/27(木) 13:07:54
だが断る
558デフォルトの名無しさん:2007/09/27(木) 13:32:18
結局Rubyのライブラリの話になるのだから、こっちに持ってくるな
(・∀・)カエレ!!
559デフォルトの名無しさん:2007/09/27(木) 14:51:04
使い方なんてググればはいて捨てるほど出るしな
560デフォルトの名無しさん:2007/09/27(木) 17:06:10
すみません。
質問なんですが、モニタ(画面)の横幅、高さを得るAPIご存知ありませんか?
昔、使っていた記憶があるのですが忘れてしまいました。。ご教授お願いします。
561デフォルトの名無しさん:2007/09/27(木) 17:08:30
物理的な大きさを求めるAPIなら、そういうものは無い。
一応cmで取得するものはあるが、DPIから勝手に計算しているだけで
実際の大きさとは全く関係ないよ。
562デフォルトの名無しさん:2007/09/27(木) 17:12:39
ググれカス
563デフォルトの名無しさん:2007/09/27(木) 17:16:56
>>560
GetDeviceCapsで解像度を得て、計算するとかどうですか?
564デフォルトの名無しさん:2007/09/27(木) 17:20:48
>>561 >>563
参考になりました。ありがとうございます。
計算してたかな。。昔のプログラム探して見ます。
565デフォルトの名無しさん:2007/09/27(木) 17:21:43
死ね低脳
566デフォルトの名無しさん:2007/09/27(木) 19:49:08
もし指定の変数に変更があればTRUEを返すとかいう便利な関数ありませんか?
567デフォルトの名無しさん:2007/09/27(木) 19:51:12
腹痛い
568デフォルトの名無しさん:2007/09/27(木) 19:52:44
つ 征露丸

>>566
変更前の値を保持していれば済む話だろ
569デフォルトの名無しさん:2007/09/27(木) 20:03:38
笑いすぎにも効くの?
570デフォルトの名無しさん:2007/09/27(木) 20:30:04
WINAPIで、数独の問題を表示させ「チェック」ボタンを押すと、
正解かどうか表示するプログラムを作りたいと思っています。

それで、お聞きしたいところは、
数独の9×9のマスを表示させるコントロールはなにがいいのでしょう?

探している条件としては以下のものです。
・列や行の番号とかが表示されない(Excelの”A列”とかの表示のもの)
・マスを選択したら入力できる。
・マスの周りに罫線をつけれる。
・文字列に色を付けれる。

そういったものってあるのでしょうか?
よろしくおねがいします。
571デフォルトの名無しさん:2007/09/27(木) 20:36:18
9x9くらい自分で作れ低能
そんなコントロールがあるかボケ
呆れてシュールストレミング吹いたわ
572デフォルトの名無しさん:2007/09/27(木) 20:47:10
エディットコントロールを81個置くのが楽なんじゃないかね

ヘッダやカラムは作らなければ当然無いし、
クリックすれば入力できるし、
枠も付いてるし、
色も付けれる
573デフォルトの名無しさん:2007/09/27(木) 21:38:41
シュールストレミングって航空輸入禁止なんだよな

.netならDataGridでいいんじゃねーの
574デフォルトの名無しさん:2007/09/27(木) 22:02:07
>>570
どうしてもAPIだけでやりたいならエディットコントロールを81個置くのが無難。
Grid系を使えるなら、列や行のラベルは(Excelでさえできるのだから)隠せるはず。
575デフォルトの名無しさん:2007/09/27(木) 22:27:27
そういや、
(ActiveXとかでない)Win32APIレベルで使えるフリーなGridコントロールないかね?
なければ作るが。
576デフォルトの名無しさん:2007/09/27(木) 22:34:57
ツールバーで質問があります。
ウィンドウスタイルにTBSTYLE_FLATを追加することで背景色が透明になることがわかったのですが、
逆に透明になったツールバーの背景色に色をつけようとするとどうすればいいですか?
577デフォルトの名無しさん:2007/09/27(木) 22:35:29
>>575
そんなのCodeGuruあたりに腐るほどあるだろう
578デフォルトの名無しさん:2007/09/27(木) 22:39:46
>>576
ウィンドウスタイルからTBSTYLE_FLATを削除すれば?
579デフォルトの名無しさん:2007/09/27(木) 22:41:42
>>578
TBSTYLE_FLATを使いたいんじゃね?
580デフォルトの名無しさん:2007/09/27(木) 22:58:37
LRESULT CALLBACKにごちゃごちゃ書くのはあまりよろしくない?
581デフォルトの名無しさん:2007/09/27(木) 23:02:59
一般論として長い関数は嫌われる。
素のWin32 APIでウィンドウプロシージャを書くのなら、
最低限、メッセージクラッカーを使うことを勧める。
582デフォルトの名無しさん:2007/09/27(木) 23:09:59
>>577
CodeGuruはまともなのがない
583デフォルトの名無しさん:2007/09/27(木) 23:26:27
メニューバーを作りたいのですがイマイチよく分からないので質問させてください。
環境はWinXPでVisual Studio 2005 Professional Edition を使用しています。

リソースエディタで簡単にメニューは作れたのですが、それをウィンドウに組み込むのはどうすればいいのでしょうか?
とりあえずメニューバーの識別子はIDR_MENU1となっていたのでこれをウィンドウクラスの設定で
wndclass.lpszMenuName = "IDR_MENU1";
としました。で、一応プロジェクトにresource.hが入ってはいますが、念のため
#include "resource.h"
を記述しました。が、実行してみてもメニューバーが表示されていません。どうすればいいのでしょうか?
584デフォルトの名無しさん:2007/09/27(木) 23:27:53
MAKEINTRESOURCE(IDR_MENU1)
585デフォルトの名無しさん:2007/09/27(木) 23:28:19
Proもったいない
586デフォルトの名無しさん:2007/09/27(木) 23:30:06
>>584
ありがとうございました。できました;;
587デフォルトの名無しさん:2007/09/27(木) 23:32:45
>>585
研究室のです。せっかくあるので使わせてもらっておりまする。
588デフォルトの名無しさん:2007/09/28(金) 00:43:19
5ボタンマウスの XButton1,2 と Wheel の左右 を自分のプログラムで
処理するにはどのようにしたらよいのでしょうか?
589デフォルトの名無しさん:2007/09/28(金) 01:06:37
WM_XBUTTON*じゃない?
WM_APPCOMMAND投げてくるドライバもあったようななかったような

チルトはシラネ
590デフォルトの名無しさん:2007/09/28(金) 01:25:05
spy++でメッセージ見たらよかろうもん
591デフォルトの名無しさん:2007/09/28(金) 08:09:05
ホイールの左右はWM_MOUSEHWHEELだな。
ただしVista専用。
592デフォルトの名無しさん:2007/09/28(金) 10:45:44
SHFileOperation で質問です。
移動・コピー・削除・名前の変更それぞれで
有効な SHFILEOPSTRUCT.fFlags の定数ってわかりませんか?
FO_DELETE 以外で FOF_ALLOWUNDO って意味あるの?とかいろいろ疑問で、
たとえば FO_RENAME だったら FOF_MULTIDESTFILES は設定してもなにもしない
みたいな情報の一覧がほしいです。
593デフォルトの名無しさん:2007/09/28(金) 11:13:02
>>592
皆の幸せのため、君が頑張れ
594デフォルトの名無しさん:2007/09/28(金) 11:16:06
>FO_DELETE 以外で FOF_ALLOWUNDO って意味あるの?とかいろいろ疑問で

コピー/移動してからCtrl+Z押せば分かるだろうに
595デフォルトの名無しさん:2007/09/28(金) 19:26:25
DLL内にあるアイコンをロードして、アプリケーションのアイコンに設定しようとしているんですが、

HANDLE hModule;
szFileName モジュール(DLL)へのフルパス
IconIndex アイコンモジュールの中の取得したいアイコンのIndex番号

hModule = LoadLibrary(szFileName);
SetClassLong(hwnd, GCL_HICON, (LONG)LoadIcon(hModule, MAKEINTRESOURCE(IconIndex)));
FreeLibrary(hModule);

としても、うまくいきません。
アプリケーションウィンドウの左上のコントロールメニューアイコンは白い四角形になってしまいます。
ちなみにhModule はShell32.dllの序数62である名前なし関数で、「アイコンの変更」のダイアログを表示して
そこから取得しています。

どこかおかしいでしょうか?
596デフォルトの名無しさん:2007/09/28(金) 19:32:21
SetClassLong じゃなくて WM_SETICON を使ってみるといいかもしれない
LoadLibrary/LoadIcon/FreeLibrary じゃなくて ExtractIcon を使ってみるといいかもしれない
597デフォルトの名無しさん:2007/09/28(金) 19:33:55
そもそも戻り値をチェックしていない時点で、
自分で原因を調べようという意図がまったく見られない。
598デフォルトの名無しさん:2007/09/28(金) 19:35:14
SetClassLong(hwnd, GCL_HICON, hicon);で問題ないよ
それよりもちゃんとハンドルが取得できてるか確認しろヴォケ
599デフォルトの名無しさん:2007/09/28(金) 19:39:27
んだんだ、アイコンと言えどもいい加減に扱っとるとリソースリークの原因になるぞ
いつのまにかダイアログが表示できなくなったりするから怖いぜ
(APIとしては成功したりするからGetLastErrorとかで確認できない)
600デフォルトの名無しさん:2007/09/28(金) 20:30:26
LoadIconはマッピングされたリソースを参照するハンドルを返してるんじゃね?
だからFreeLibrary時点で見失って白四角形になる、と。
LR_SHARED無しのLoadImage使ってみ。
こっちは呼び出し毎にコピーを作成するはず。
601デフォルトの名無しさん:2007/09/28(金) 21:03:42
リソースIDじゃなくてインデックス渡してるからロードに失敗してるんじゃね?
602デフォルトの名無しさん:2007/09/28(金) 21:10:16
NULLバイト文字終端のUTF-8の文字列に対して、普通にstrlenしてもよろしいでしょうか?
603デフォルトの名無しさん:2007/09/28(金) 21:11:37
>>602
Win32APIと無関係なのに自分勝手にこのスレで質問する理由を明確に述べよ。
604デフォルトの名無しさん:2007/09/28(金) 21:11:56
>>602
よろしいですの。
605デフォルトの名無しさん:2007/09/28(金) 21:13:30
>>604
ありがとうございました。
606595:2007/09/28(金) 22:27:18
第一にLoadLibraryに失敗していました。
%SystemRoot%\system32\SHELL32.dll こういうパスは認識されないんですね。
アイコンの変更ダイアログからの戻り値を直接渡していましたので・・

その次に、アイコン変更ダイアログで自作DLLを選んでみたんですが
やっぱり白い四角形になってしまいます。

DLL内のアイコンってどうやって取得すればいいんでしょう。

たくさんの方からご返事をいただきまして恐縮です。
今、全部試してます。
もしかしたらExtractIconでいけるかもしれませんので、もうしばらく失礼させていただきます。
607595:2007/09/28(金) 22:46:51
ExtractIconでいけました。
ただUNICODE定義がないと失敗してしまう・・・
あと%SystemRoot%\system32\SHELL32.dll こういうパスって普通のパスに戻せるんですか?
608デフォルトの名無しさん:2007/09/28(金) 22:51:12
%SystemRoot%を環境変数から取り出せばいいんじゃない?
俺はAPIとかよく分からないけど
609デフォルトの名無しさん:2007/09/28(金) 22:54:43
>>607
ExpandEnvironmentStrings
で環境変数取れるかも
610デフォルトの名無しさん:2007/09/28(金) 22:58:29
数字をファイルから読み込んで足したり引いたり処理をして書き換えて保存したいんですが、
CreateFile,ReadFile,WriteFileでその作成したファイルの数字を簡単にメモ帳などで
書き換えれないようにってできますか?
色々試行錯誤してみたんですが、どうしてもそのままの数字でファイルに保存
されてしまってメモ帳で開いて簡単に数字を書き換えれてしまう(´・ω・`)
611デフォルトの名無しさん:2007/09/28(金) 23:01:29
何いってるのかサッパリ
612デフォルトの名無しさん:2007/09/28(金) 23:31:48
123
↑書き換えたらコロス
613デフォルトの名無しさん:2007/09/28(金) 23:35:46
質問です。
メインとなるウィンドウ(幅600、高さ400)を生成します。
このウィンドウの子ウィンドウとして例えばボタンを配置するのですが、このボタンを表示範囲外、
つまりX座標0、Y座標500に配置したとします。

その時に、メインのウィンドウの右にスクロールバーをスクロールする事でボタンを表示させたいのですが、
どのようにすればいいのでしょうか?
614デフォルトの名無しさん:2007/09/28(金) 23:40:35
そのようにすればいいのです。
615デフォルトの名無しさん:2007/09/28(金) 23:40:42
>>612
ワロスwww
616デフォルトの名無しさん:2007/09/28(金) 23:44:32
>>610
 暗号化して書き込めば?
 さもなきゃNTFSの暗号化機能を利用するとか
617デフォルトの名無しさん:2007/09/28(金) 23:46:16
プロセスが終了したら削除すりゃいいんじゃ?

>>616
NTFSの暗号化ってそういうもんじゃないと思うけど。
618デフォルトの名無しさん:2007/09/28(金) 23:49:47
>>614
なんというか、スクロールバーを動かしても上手く表示領域がシフトしないのですが・・・
http://wisdom.sakura.ne.jp/system/winapi/win32/win50.html
を参考に作ってます。
619デフォルトの名無しさん:2007/09/28(金) 23:52:33
>>618
とりあえず、>>618のソースのウィンドウにボタンコントロールを表示領域よりも下に設置して
その後スクロールバーをいじってみたのですが、スクロールバーの位置が変わるだけで特にウィンドウには何も変化がありません。
620デフォルトの名無しさん:2007/09/28(金) 23:56:52
>>618
質問者の知能レベルがどの程度かなんて知ったことではないが、
ボタンと思うからうまくいかないんじゃないかな。
例えばでかいドキュメントのはしっこに張り付いたエロ画像と思い込むんだ。
そのエロ画像をなんとかしてスクロールして全部見たい、さあどうするか?
ほら、もう答えは出てるだろ。
621デフォルトの名無しさん:2007/09/28(金) 23:58:56
>>620
ん〜・・・難しい・・・何かヒントを・・・
622デフォルトの名無しさん:2007/09/29(土) 00:00:05
>>617
>プロセスが終了したら削除すりゃいいんじゃ?

むしろCreateFileの共有フラグ0にして開きっぱなしにしておけばw
623デフォルトの名無しさん:2007/09/29(土) 00:01:45
>>621
単にSCROLLINFOのフラグとスクロール量の指定がおかしいんだと思うけど
624デフォルトの名無しさん:2007/09/29(土) 00:06:52
>>623
scr.cbSize = sizeof(SCROLLINFO);
scr.fMask = SIF_PAGE | SIF_RANGE;
scr.nMin = 0;
scr.nMax = 10;
scr.nPage = 2;
SetScrollInfo(hwnd, SB_VERT , &scr , TRUE);
scr.fMask = SIF_POS;

これじゃマズいですか?
625デフォルトの名無しさん:2007/09/29(土) 00:10:36
>>623
違うって。

>ただし、ウィンドウのサイズなどによってバーのサイズを変更したり。
>実際にクライアント領域を移動させるにはもう少し複雑なプログラムになります。

これだ。
スクロールバーの表示とは別にクライアント領域は自分で移動しないといけないの。
626625:2007/09/29(土) 00:12:28
ScrollWindowExな
627デフォルトの名無しさん:2007/09/29(土) 00:14:30
>>625
という事は、別に設定が必要なんですね。
スクロールバー自体に標準でそういう機能が備わってるものだと思いました。

もしかして、スクロールバーのつまみの位置によって、ウィンドウ内の各コントロールのポジションを
計算して移動させないといけないとかですか?
628デフォルトの名無しさん:2007/09/29(土) 00:23:16
>>627
なんも判ってないみたいだな
一度きちんとした入門書読んだほうがいいよ
買う必要ないから図書館で借りるなりして
629デフォルトの名無しさん:2007/09/29(土) 00:28:01
>>626
とりあえず ScrollWindowEx(hwnd, 0, -10, NULL, NULL, NULL, NULL, 0); にしてみたら
移動はしました。が、移動時に残像が残りますが・・・。色々と調べてみます・・・

>>628
インターネットの情報だけでやってるので、なかなか段階を踏んで勉強が出来ないですね。
必要なものを必要な時に参照する感じなので中々ちゃんとした知識が身につかない・・・
630デフォルトの名無しさん:2007/09/29(土) 00:30:57
思い込みだけでやってると後で苦労するぞ
まあ知ったこっちゃないけどさ
631デフォルトの名無しさん:2007/09/29(土) 00:33:40
要領次第だと思うけど

俺はDirectXの本くらいしか買ったこと無いや
632デフォルトの名無しさん:2007/09/29(土) 00:41:42
あー無理これ、意味わからぬ(´;ω;`)
633デフォルトの名無しさん:2007/09/29(土) 00:43:52
そのAAむかつく奴多いから、答えを得られる確率も減るわけ。わかる?
634デフォルトの名無しさん:2007/09/29(土) 00:47:43
知らないよお前の好みまでw
635デフォルトの名無しさん:2007/09/29(土) 00:58:25
俺もそのAA乗っけて質問する奴には絶対に答えない。
そういう類の馬鹿が書く文章はほぼ例外なくそれ以前の問題を抱えてるが。
636デフォルトの名無しさん:2007/09/29(土) 01:02:29
少し黙れ
637595:2007/09/29(土) 01:05:37
>>609
いけそうです。
みなさん、いろいろご親切に教えていただきましてありがとうございます。
638632:2007/09/29(土) 01:08:32
一応言っておきますけど、>>634は俺じゃないですよ。
そのAA書くだけで人格否定されるのは心外ではありますけど。
639636:2007/09/29(土) 01:10:41
いいから黙れよ
AAはAAスレでやれってのも一理あるんだから
640デフォルトの名無しさん:2007/09/29(土) 01:13:04
AA貼り付ける余裕あんなら自分で調べろやハゲ
641632:2007/09/29(土) 01:31:34
なんかAA書いただけで随分荒れるんですね・・・
まぁここではあまり情報得られそうにないので去ります。
642デフォルトの名無しさん:2007/09/29(土) 01:39:07
空気を読めるようになろうね。
643デフォルトの名無しさん:2007/09/29(土) 01:56:22
テキストファイルに書いてある数字をint型で読み込むにはどうしたらいいですか?
644デフォルトの名無しさん:2007/09/29(土) 01:58:07
atoi
645デフォルトの名無しさん:2007/09/29(土) 02:03:22
>>644
上手くいきました。ありがとうございます
646デフォルトの名無しさん:2007/09/29(土) 02:15:37
スタティックコントロールをサブクラス化したのですが、
スタティックコントロールのプロシージャにWM_CREATEが送られてきません。
プロシージャ内でWM_CREATEを捕まえて、コントロール内に子ウィンドウを生成したいのですが
647デフォルトの名無しさん:2007/09/29(土) 02:19:30
CreateWindowした後(WM_CREATE処理後)じゃないとサブクラス化できなくね?
648デフォルトの名無しさん:2007/09/29(土) 02:21:15
なるほど、そういう仕様なのか
649デフォルトの名無しさん:2007/09/29(土) 02:34:32
今度産まれた甥っ子をサブクラス化したのですが、
受精卵が送られてきません。
膣内で精子と卵子を捕まえて、DNA内にバックドアを生成したいのですが
650デフォルトの名無しさん:2007/09/29(土) 02:43:24
高度すぎてわからんよ
651デフォルトの名無しさん:2007/09/29(土) 04:50:49
その処理は生まれる前にしかできません。
652デフォルトの名無しさん:2007/09/29(土) 05:17:56
要するにバックドア作っておいて自由自在に操れるようにしておいて、、時期を見計らって猥褻な行為に走ろうというペドフェリアショタコンの思考ですな。
その異常な性癖は俺がお前のDNAにバックドアとして仕込んでおいたものだ。人が自ら不幸を生成する様が楽しくてね。
653デフォルトの名無しさん:2007/09/29(土) 05:22:08
DNAに仕込んだとか因果的決定論っぽくなってきたな
654デフォルトの名無しさん:2007/09/29(土) 05:25:05
何故64bit版WindowsでもWin32APIが使われているのですか?
何故新しくWin64APIを作らないのですか?
655デフォルトの名無しさん:2007/09/29(土) 05:30:50
>>654
何言ってんだお前
64ビット版でWin32APIが動作するのはエミュレーションを挟んでるから

WOW64
656デフォルトの名無しさん:2007/09/29(土) 08:33:04
Win32は滅びんよ、何度でも甦るさ。
657デフォルトの名無しさん:2007/09/29(土) 08:41:39
>>656
マジに二世代先のOSまで使われそうで怖いな。
658デフォルトの名無しさん:2007/09/29(土) 09:41:36
>>654
Win16→Win32みたいな大幅な変更があったら、移行の手間がかかるだろ。
なるべくそんな手間をかけずに済むようにWin64はWin32と同じAPIを持っている。
659デフォルトの名無しさん:2007/09/29(土) 10:09:28
>>658
勉強になりました。
今後、WINFXだっけか。組み方変わるのはやだなぁ。
660デフォルトの名無しさん:2007/09/29(土) 10:27:17
結局のところ互換性が問題になるわけだ。
Vistaの遅れも未実装も、互換性を取ろうとして断念した結果だからな。
661デフォルトの名無しさん:2007/09/29(土) 10:37:32
>>659
WinFXは.NET Framwork 3.0としてVista搭載。
XP/Server 2003にもインストール可。
662デフォルトの名無しさん:2007/09/29(土) 15:43:42
APIとMFCの違いってなんですかね?
663デフォルトの名無しさん:2007/09/29(土) 15:45:37
664デフォルトの名無しさん:2007/09/29(土) 15:54:07
>>661
ただし当初言ってたような基本APIではなくWin32 APIにかぶせる形になった
665デフォルトの名無しさん:2007/09/29(土) 15:54:51
>>663
上はAPI一般の解説だから
http://ja.wikipedia.org/wiki/Windows_API
のほうがいいと思われ
666デフォルトの名無しさん:2007/09/29(土) 16:33:43
>>663
wikipediaのMFCの項目はいつ見ても笑えるな。
修正しないで置いとく方が面白いと思える位に。
667デフォルトの名無しさん:2007/09/29(土) 17:11:18
>>666
kwsk
668デフォルトの名無しさん:2007/09/29(土) 17:46:34
AFXってなに?
669デフォルトの名無しさん:2007/09/29(土) 17:51:05
Away From XXX
670デフォルトの名無しさん:2007/09/29(土) 19:20:23
Visual Studio 2008の製品版っていつ発売?
671デフォルトの名無しさん:2007/09/29(土) 19:27:38
2008年

大晦日かもしれんがな
672デフォルトの名無しさん:2007/09/29(土) 19:41:26
d まだ正確には決まってないのか
今2005買うのももったいないし早く発売して欲しいな
673デフォルトの名無しさん:2007/09/29(土) 20:34:31
そういう話題はこっちで。

【Orcas】 Visual Studio 2008 【.NET3.5】 Part2
http://pc11.2ch.net/test/read.cgi/tech/1187855872/

でも毎回、2005->2006年発売みたいに遅れてるから、2009年だと思った方がいいと思う。
674デフォルトの名無しさん:2007/09/29(土) 20:50:32
早く出す意味ないしね。
2008年終わり頃から2009年中頃くらいだと思う
675デフォルトの名無しさん:2007/09/29(土) 20:55:52
それよりAPIの話しようぜ!!!!11

言ってみたかっただけ
676デフォルトの名無しさん:2007/09/29(土) 21:00:08
VB2005Express使用



Public Class Form1
  Private Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal vKey As Long) As Long

  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Do
      If Me.Visible = False Then Exit Do
      If GetAsyncKeyState(90) Then MsgBox("Z")
      Application.DoEvents()
    Loop
  End Sub
End Class

というコードをテスト目的で書いてみた。走らせて見たら

「PInvoke 関数 'RPG!RPG.Form1::GetAsyncKeyState' がスタックを不安定にしています。
PInvoke シグネチャがアンマネージ ターゲット シグネチャに一致していないことが原因として考えられます。
呼び出し規約、および PInvoke シグネチャのパラメータがターゲットのアンマネージ シグネチャに一致していることを確認してください。」

と表示された。
GetAsyncKeyStateの宣言自体はVBAで使ってたものをそのまま移しただけ。
これは利用方が悪いのか宣言が悪いのかkwsk
まだプログラミング初めて間も無いからMSDN読んでもよくわからない・・・、知ってる人頼む。
677デフォルトの名無しさん:2007/09/29(土) 21:07:57
>Delphi、Java、.NET Frameworkなど他のオブジェクト指向ライブラリは、
>言語仕様やライブラリ内にメモリのガベージコレクションの機能が標準で入っているのに対して、
>MFCはガベージコレクションを採用しなかったという、致命的欠点を持ち、
>それ故、バグを生みやすく、生産性が低い。
678デフォルトの名無しさん:2007/09/29(土) 21:08:48
679デフォルトの名無しさん:2007/09/29(土) 21:10:31
>>677
OOP信者か?これ書いたの
680デフォルトの名無しさん:2007/09/29(土) 21:13:53

CreateFileで数字のみが書いてあるテキストファイルを読み込んだ後、

    TCHAR inbuf[256],outbuf[255];
    int x;
    DWORD wReadSize;

    ReadFile( hFile, inbuf, sizeof(inbuf), &wReadSize, NULL );
    inbuf[wReadSize] = TEXT('\0');
    x=atoi(inbuf);
    x+=2;
    wsprintf(outbuf,TEXT("%d"),x);
    WriteFile(hFile ,outbuf,sizeof(outbuf),&wReadSize,NULL);

でその読み込んだ数字に2を足してファイルにその数字を出力したいのですが
コンパイルエラーはでないんですが実行するとエラーがでて終了してしまいます
LPSTR型のにファイルの数字を読み込ませてやってみたり半日やってみたんですが
それもコンパイルエラーが出たり実行したらエラーがでたりで泣きそうです
すみませんがこのような処理をするお手本のソース教えていただけないでしょうか?
681デフォルトの名無しさん:2007/09/29(土) 21:14:22
>>676
.netのlongは64bit
682676:2007/09/29(土) 21:19:29
>>678
サンクス、一通り読んでみたが例文みたいなのが無いとわかりにくいです・・・
もう少し読み直して理解しようとは思う

>>681
え、ってことはIntに変えればおkってこと?
よ、よくわからない・・・
683デフォルトの名無しさん:2007/09/29(土) 21:20:28
>>670
2008Q1ですよ。
684デフォルトの名無しさん:2007/09/29(土) 22:32:53
>>683
Q3〜Q4にずれ込む可能性大だから。過去の実績が語っている。

>>677
MFCのバグの発生のしやすさは、オブジェクトのインタフェースの統一性のなさに起因する。
メモリ管理とは関係がない。(OOPでもメモリリークは発生する。)

# VCLを憶えた後、MFCを使ったら地獄だった。javaとVCLはいい勝負。
685デフォルトの名無しさん:2007/09/30(日) 00:14:33
>>679
ガーベジコレクションはOOPとは何の関係もない。
ちなみにガベージじゃなくてガーベ(ッ)ジな。
686デフォルトの名無しさん:2007/09/30(日) 00:45:15
wikiには
>なお本来の英語の発音に近い表記は「ガーベジコレクション」あるいは
>「ガーベッジコレクション」であると思われるが、一般には「ガベージコレクション」
>または「ガーベージコレクション」と表記されることが多い。
ってある
687デフォルトの名無しさん:2007/09/30(日) 01:04:04
書いた奴がそう思い込んでるだけ
688デフォルトの名無しさん:2007/09/30(日) 01:05:50
きっと正しい略称は「ガーコレ」なんだろな。「ガベコレ」じゃなくて。
689デフォルトの名無しさん:2007/09/30(日) 01:12:11
カタカナになった時点で日本語
普及していて他人に通じるし元の英単語にもすぐ結びつくから問題ない
690デフォルトの名無しさん:2007/09/30(日) 01:16:14
はいはいやめやめそこまでそこまで
691デフォルトの名無しさん:2007/09/30(日) 01:18:34
/* そうやって中身を隠蔽しまくるからバグが見つからなくなるんです><
  そうやって中身を隠蔽しまくるからバグを見つける能力がなくなるんです><
  何事もほどほどに>< */
692デフォルトの名無しさん:2007/09/30(日) 01:21:04
政治と同じだな
そもそも領収書の出ないとこから買い物すんなよ
693デフォルトの名無しさん:2007/09/30(日) 02:31:02
>>594
いや、そこ限定だったらそれですむけど
他にもいろいろあるじゃないですか><

操作ごとに別々のクラスにして有効なフラグだけメンバを用意しようと
思ってたんですが、適当にやっときます。。。
694デフォルトの名無しさん:2007/09/30(日) 07:59:54
>>680
ファイルの中身がShift_JISなどなら、
inbuf, outbufの型をTCHAR配列からchar配列にしてみろ。
695デフォルトの名無しさん:2007/09/30(日) 09:34:27
ガービッジ
696デフォルトの名無しさん:2007/09/30(日) 11:31:20
ギャビジ カレクシュン
697デフォルトの名無しさん:2007/09/30(日) 12:23:37
30%でアイテムを落とす
っていうのはどうやればいいんですか?
698デフォルトの名無しさん:2007/09/30(日) 12:30:38
ハァ?
699デフォルトの名無しさん:2007/09/30(日) 12:34:16
>>697
そんなAPIはありません。
700デフォルトの名無しさん:2007/09/30(日) 12:46:46
やり方教えろよてください
701デフォルトの名無しさん:2007/09/30(日) 12:48:29
>>700
ここはAPIについて質問するスレです
702デフォルトの名無しさん:2007/09/30(日) 12:51:49
よくわからんね
703デフォルトの名無しさん:2007/09/30(日) 12:54:04
>>697
DOWNITEM(LPSTR ITEM,30);
704デフォルトの名無しさん:2007/09/30(日) 13:21:38
つ 垂れ流しの腕輪
705デフォルトの名無しさん:2007/09/30(日) 13:24:30
ねだやしの巻物を投げつけられる
焼きおにぎりにされる
デロデロになる
706デフォルトの名無しさん:2007/09/30(日) 13:25:30
なんでシレンの話題が出てんの?w
707デフォルトの名無しさん:2007/09/30(日) 13:34:42
結局697は何が言いたかったのか
708デフォルトの名無しさん:2007/09/30(日) 14:08:05
>>701
Win32でない何かのAPIの質問をされても困る。
709デフォルトの名無しさん:2007/09/30(日) 14:09:44
落し物ゲーム作りたいという熱意は伝わったw
710デフォルトの名無しさん:2007/09/30(日) 14:12:05
RPGツクールじゃねーか?
711デフォルトの名無しさん:2007/09/30(日) 15:38:15
えろよてください
712デフォルトの名無しさん:2007/09/30(日) 15:44:41
スローガン:キチガイに構うな
713デフォルトの名無しさん:2007/09/30(日) 16:37:00
>>703
ありがとうございます!ちゃんと動きました!
714デフォルトの名無しさん:2007/09/30(日) 19:09:18
関数が全部載ってるサイト教えてよママン!
715デフォルトの名無しさん:2007/09/30(日) 19:16:03
716デフォルトの名無しさん:2007/09/30(日) 19:50:22
>>715
うひょー!
英語ってむつかしいよママン!
せめてどこをクリッコして調べればいいのか教えてよママン!
717デフォルトの名無しさん:2007/09/30(日) 19:51:30
全部載ってるサイトなんだから全部読めばいいんだよ
718デフォルトの名無しさん:2007/09/30(日) 19:57:32
分かったよ!僕頑張るよママン!
719デフォルトの名無しさん:2007/09/30(日) 19:57:37
720デフォルトの名無しさん:2007/09/30(日) 19:58:37
>>716
お前の知りたいことはどこをクリックすれば分かるんだ?
721デフォルトの名無しさん:2007/09/30(日) 20:05:15
>>719
日本語と見比べてみたら英語にしか関数載ってないじゃないか!!
なんて鬼畜なのマイクロソフト!
英語漬けの電源入れてくるよママン!!
722デフォルトの名無しさん:2007/09/30(日) 20:06:27
もういいから
723デフォルトの名無しさん:2007/09/30(日) 20:20:23
(´・ω・`)
724デフォルトの名無しさん:2007/09/30(日) 20:39:54
関数だけ覚えたってしょうがないのに……。
725デフォルトの名無しさん:2007/09/30(日) 22:35:23
関数を単語帳に書いて全暗記した俺に謝れよ
726デフォルトの名無しさん:2007/09/30(日) 22:37:10
>>725
バージョン毎のAPIの挙動の変化まで暗記してたら神!
あるいは才能の無駄遣い
727デフォルトの名無しさん:2007/09/30(日) 23:03:34
>>725
嘘だぁ
ほんとならアイテムを30%で落とすやりかたやってみ
728デフォルトの名無しさん:2007/09/30(日) 23:17:48
そ、その手にはのらねぇ!
729デフォルトの名無しさん:2007/10/01(月) 00:24:12
>>725
じゃ、次は全部のウィンドウメッセージの暗記。
それが終わったら、<windows.h>をインクルードして使える
全てのインタフェースとそのメソッドを暗記。
730デフォルトの名無しさん:2007/10/01(月) 01:05:21
>>727
0から9までの乱数の無限ストリーム用意して、
012だったらアイテムを落とす。

char *drop_rand = "012345678901234567890123456789";
int ndrop = 0;
char *DropItem30Percent(void) {
if (drop_rand[ndrop++] <= 2)
return "アイテムだった";
return "ゴミだった";
}
731よおよお:2007/10/01(月) 01:46:39
GetSystemPowerStatusで電源情報を取得したいのですが、SYSTEM_POWER_STATUS構造体のうちの
ACLineStatusとBatteryLifePercentメンバーの情報しか取れません。
ほかのメンバーはすべてUnknown です。
API VC6++です。

なにか改善策はあるでしょうか?

特におかしなことをしているわけではないんですが
GetSystemPowerStatus(&sps);
switch(sps.ACLineStatus)
{ 
以下略
732デフォルトの名無しさん:2007/10/01(月) 01:58:20
http://www.winapi-database.com/Struct/SYSTEM_POWER_STATUS.html

どのメンバにも「不明」って項目がある
「不明」なんでしょうよ
733よおよお:2007/10/01(月) 02:14:26
APIで取得できないなら、PCのバッテリ情報なんかはどこで取ってるんでしょう?
734デフォルトの名無しさん:2007/10/01(月) 02:48:47
デバイスドライバ
735デフォルトの名無しさん:2007/10/01(月) 03:24:44
>>730
うわっ・・・マジで釣れちゃったよ・・・
736デフォルトの名無しさん:2007/10/01(月) 12:15:46
windowssdkってなんでimg配布なんだよ…
737デフォルトの名無しさん:2007/10/01(月) 12:25:03
仮想CD-ROMソフトを使えばCDやDVDに焼くことなく
直接ドライブにマウントできるわけだし、imgで問題ないと思うけど
738デフォルトの名無しさん:2007/10/01(月) 13:03:07
サポート無しだけど、MS製VCDドライバも提供されているしな。
739デフォルトの名無しさん:2007/10/01(月) 13:41:56
逆に736は何だったらいいと思っていたのだろう?
740デフォルトの名無しさん:2007/10/01(月) 14:03:50
そりゃあexeかmsiじゃないの?俺もそっちの方がいいし。
741デフォルトの名無しさん:2007/10/01(月) 14:20:56
むしろ小分けにしてだして欲しい。ツールとか。
742デフォルトの名無しさん:2007/10/01(月) 14:22:12
>>736>>737
その用途のためにMS謹製の仮想CDツール配布してたと思ったけど今無くなっちゃったの?
743デフォルトの名無しさん:2007/10/01(月) 14:29:04
Vistaじゃ使えないんです><
744デフォルトの名無しさん:2007/10/01(月) 14:56:55
Vista未対応のならWebInstall版あるぞ
745デフォルトの名無しさん:2007/10/01(月) 15:02:31
ExpLzhでisoイメージの中身みれるよ。
最近個人利用は無償になった。
ttp://ponsoftware.com/archiver/download.shtml#explzh
746デフォルトの名無しさん:2007/10/01(月) 15:19:12
ExpLzhってUDFには対応してなかった気がするが
747デフォルトの名無しさん:2007/10/01(月) 15:22:12
vistaにはdaemontools使えないの?
748デフォルトの名無しさん:2007/10/01(月) 16:08:53
>>747
使えません
だから作れ
749デフォルトの名無しさん:2007/10/01(月) 16:11:14
騙されちゃらめぇ
750デフォルトの名無しさん:2007/10/01(月) 16:17:19
VISTAでもdaemontools使えるよ
751デフォルトの名無しさん:2007/10/01(月) 16:38:36
年に数回しかマウントしないんでどらえもん入れる気にならない。
MSには頑張ってほしい
752デフォルトの名無しさん:2007/10/01(月) 16:40:51
わざわざ入れたくないから初めから入れとけってか
753デフォルトの名無しさん:2007/10/01(月) 17:31:27
>>752
それも道理かもな。今日日割れ物じゃなくともイメージ扱う機会も多いし。
754デフォルトの名無しさん:2007/10/01(月) 17:33:32
UAC切ったりマニフェストを書けば動くようになるものも多いのだけれど、
そういうのじゃ動かないの?
755デフォルトの名無しさん:2007/10/01(月) 18:00:10
質問です。
EDITコントロールにて、Excelのセルみたいに、垂直中央揃えしたくて
調べてみたのですが、そういったことは出来ないみたいです。
何か代案はないでしょうか?

「表示したい位置になるように垂直の位置をずらせばいいじゃん」とかはなしでお願いします。
756デフォルトの名無しさん:2007/10/01(月) 18:24:07
>>755
リッチエディットコントロールじゃダメ?
757デフォルトの名無しさん:2007/10/01(月) 21:21:58
づらせばいいとおもうよ
758デフォルトの名無しさん:2007/10/01(月) 21:29:30
Cを最近勉強し始めたばっかなんですが、
Windowsはアプリケーションにメッセージを渡していますが、
例えばRipIt4Me.exe等はDVD Decrypter.exe等を自動で操作しています。
これは、DVD Decrypter.exeにRipIt4Me.exeがメッセージを渡しているのですか?
759デフォルトの名無しさん:2007/10/01(月) 21:34:09
かつらじゃねーよ
760デフォルトの名無しさん:2007/10/01(月) 21:44:17
>>755
「「XXXXXXX」とかはなしでお願いします。 」とかはなしでお願いします。
761デフォルトの名無しさん:2007/10/01(月) 21:46:40
れみりゃかわいいよれみりゃ
762デフォルトの名無しさん:2007/10/01(月) 21:50:29
>>755
ES_CENTER ってなかったっけ? 古いWindowsだと、 ES_MULTILINE も指定しないと動かないみたいだけど。
ちょっと記憶が曖昧だな・・・
763デフォルトの名無しさん:2007/10/01(月) 21:53:01
>>761
どこの東方スレの誤爆だ
764デフォルトの名無しさん:2007/10/01(月) 22:02:49
>>758
コマンドライン
765デフォルトの名無しさん:2007/10/01(月) 22:08:51
誤爆とその対応に吹いたw
766デフォルトの名無しさん:2007/10/01(月) 22:48:27
>>762 垂直中央揃えは未対応だよ。

シングルラインなら、垂直位置をずらすのも現実解と思うけどな。
マルチラインは、表示と編集を分けるか、全て自前で実装するしかないな。
767デフォルトの名無しさん:2007/10/01(月) 22:48:39
例えばエロゲのタイトル画面みたいにマウスやキーボードで選択したら選択中の
ところが点滅したりするのってMOUSEMOVEやKEYDOWNとSetTimerとBitBltで組み合わせて
するしかない?
768デフォルトの名無しさん:2007/10/01(月) 22:53:46
そんな実装方法でゲーム作り始めた日には、あっという間に破綻する予感。
769デフォルトの名無しさん:2007/10/01(月) 23:21:50
じゃあどうすればいんだよヽ(`Д´)ノ
今のところDirectXとか他のを勉強するとかいう選択肢は無しで
770デフォルトの名無しさん:2007/10/01(月) 23:32:33
やる気がないなら諦めるという選択肢しか残っていない。
771デフォルトの名無しさん:2007/10/01(月) 23:34:42
なければ自分で作る。
それがプログラマーだよ。     作 −俺の尊敬する上司ー
772デフォルトの名無しさん:2007/10/01(月) 23:38:01
773デフォルトの名無しさん:2007/10/01(月) 23:38:58
>>767
エロゲのタイトル画面なんて見たことないからわからんよ。
774デフォルトの名無しさん:2007/10/02(火) 00:09:00
>>767
WPFならそういうのたくさんあるよ。
Win32 APIでやりたいなら作れとしか。
775デフォルトの名無しさん:2007/10/02(火) 03:04:15
BitBltじゃほぼ確実に描画速度が追いつかんけどな
素直に吉里吉里みたいなスクリプターでも使っとけよ
776デフォルトの名無しさん:2007/10/02(火) 03:19:03
ありがとう。WinAPIではきついのか
別にそれほど作りたいわけでもないしもう少しWin32APIを集中的に勉強したいんで諦めます
777デフォルトの名無しさん:2007/10/02(火) 03:40:58
BitBltなめんな!
GDIだって条件が揃えばハードウェアアクセラレーションは効くから速いよ。

で、あの質問の本質はそんな話じゃないと思うんだ。
一般的なWindowsアプリケーションとゲームでは、メインループの構造が
全然違うからSetTimerなんか使わないよってことだと思う。
778デフォルトの名無しさん:2007/10/02(火) 04:01:49
ゲームだとPeekMessage使うからとかそんな話?
779デフォルトの名無しさん:2007/10/02(火) 04:14:37
>GDIだって条件が揃えばハードウェアアクセラレーションは効くから速いよ。

ハードウェアごとの条件を覆うのもWin32API役割の一つなのに
条件を揃えるとか本末転倒じゃないかと思った。

あとメインループの構造について

一般のWinアプリ
GetMessage→TranslateMessage→DispatchMessage→最初へ

ゲームの類
PeekMessage→(メッセージがあれば:TranslateMessage→DispatchMessage→)Input→Render→最初へ

そんなに違いは無いような
780デフォルトの名無しさん:2007/10/02(火) 06:36:37
>ハードウェアごとの条件を覆うのもWin32API役割の一つなのに
>条件を揃えるとか本末転倒じゃないかと思った。

あほ
781デフォルトの名無しさん:2007/10/02(火) 08:03:28
このスッドレを最初から読めばカッペでもWin3あぴが扱えるようになるっぺ?
782デフォルトの名無しさん:2007/10/02(火) 09:19:38
>>781
あなたが神か
783デフォルトの名無しさん:2007/10/02(火) 09:35:02
>>769
後々ウィンドウプロシージャの条件分岐がすごいことになりそうって言いたいんだと思う

case WM_KEYDOWN:
if (titleScreen){
...
} else if (gameoverScreen) {
...
} else if (........) {
...
}
みたいに

それを御し切れると思うなら、べつにいいんじゃないか
784デフォルトの名無しさん:2007/10/02(火) 09:40:45
>>777
DDBのBitBltなら速かったけれども
残念ながらVistaでは……
785デフォルトの名無しさん:2007/10/02(火) 14:14:26
Graphics.DrawImageに比べりゃBitBltなんて速い方
786デフォルトの名無しさん:2007/10/02(火) 14:38:37
ポインタ理解できたよー!!
俺最強wwww
787デフォルトの名無しさん:2007/10/02(火) 19:27:55
質問します。
wsprintf(str, "%.0d", num)にて
numが0のときは表示しない、
0以外のときは表示するって処理をしようと思いました。
ですが、なぜか0が表示されてしまいます。

ためしにsprintf(str, "%.0d", num)にて試しましたが0は表示されませんでした。
ワイド文字も使う予定なのでsprintfは使いたくありません。
どうしたら希望道理の動作をするように出来るのでしょうか?
788デフォルトの名無しさん:2007/10/02(火) 19:34:04
_stprintf か?
789787:2007/10/02(火) 19:41:54
>>788
おぉ、_stprintfマクロですか。
printfに置き換えられるみたいですしいけそうですね。
ありがとうございます^^
790デフォルトの名無しさん:2007/10/02(火) 19:52:39
おまいらプログラミング勉強し始めて何年くらい?
791デフォルトの名無しさん:2007/10/02(火) 19:55:22
AVIFileGetStreamで作ったIAVIStream*は、AVIStreamReleaseで解放することになってるみたいですけど、
これってIAVIStreamのReleaseで解放してはだめなんでしょうか?MSDNに一切記述がなくて・・・

やってもいいならエラー処理の都合でCComPtrで管理するようにしたいんです。
792デフォルトの名無しさん:2007/10/02(火) 20:10:52
AddUrlToFavoritesのMSDNの記述って間違ってない?
MSDNは最後のパラメータをTRUEにするとダイアログが出るって書いて有るけど
逆なんだよねー
ヘルプの記載しミスなのかバグなのかを知りたい。
793デフォルトの名無しさん:2007/10/02(火) 20:11:54
説明を読む限り、普通のReleaseと処理が変わらないように見えるな。
COMがまだ普及していなかった頃だから、
分かりやすいように関数を用意しておいたんじゃね?
794デフォルトの名無しさん:2007/10/02(火) 23:00:31
>>791
デバッガで追ってみれば?
上手く動くならきにしな〜い。
795デフォルトの名無しさん:2007/10/03(水) 03:29:34
>>790
勉強はしたことがない
796デフォルトの名無しさん:2007/10/03(水) 08:39:19
>>790
もう四年ぐらいだな。
なんか周期があって、半年まったくやらなかったり、
一ヶ月プログラムしかしない時期もあった。
こんなの学生の時期だけだろうな。
797デフォルトの名無しさん:2007/10/03(水) 09:25:15
ShellExecuteで起動されるアプリケーションを取得するAPIあったら教えてください。
最悪レジストリ読みになるのかな。
798デフォルトの名無しさん:2007/10/03(水) 10:52:58
何をおっしゃいますやら
799デフォルトの名無しさん:2007/10/03(水) 10:55:44
>>797
お前はレジストリを読むのにAPIを使わないのか?
800デフォルトの名無しさん:2007/10/03(水) 11:06:26
IShellExecuteHookのことを言ってるのかしら
もしそうなら、あれはもう忘れてくださる?
801デフォルトの名無しさん:2007/10/03(水) 11:25:22
ソケット通信で質問ですが
自分がクライアントで相手がいない時にconnectすると約20秒間connectから抜けてこないのですが
connectのタイムアウトを設定する方法を教えてください
802デフォルトの名無しさん:2007/10/03(水) 11:27:36
拡張子とアクションに関連付けられたexeの古パスを取りたいんじゃねーの
803デフォルトの名無しさん:2007/10/03(水) 11:36:49
非ブロッキングconnectにすればいいんじゃない
804デフォルトの名無しさん:2007/10/03(水) 11:36:59
>>801
ありません。connect()外部の手段でタイムアウト処理を実装する必要があります。
805デフォルトの名無しさん:2007/10/03(水) 11:53:45
>>801
スレッドを別に作ればいいんでねーの?C系のマルチスレッドは面倒だが。
806デフォルトの名無しさん:2007/10/03(水) 12:23:29
非ブロッキングで行ける。
判定が若干面倒になるが。
807デフォルトの名無しさん:2007/10/03(水) 12:38:18
マルチスレッドにしなくても、イベント処理でOK。
つーか、Winsockの使いこなしはこのスレで語るレベルを超えるので、
真面目にサイトを探して勉強して欲しいと思う今日子の頃。
808デフォルトの名無しさん:2007/10/03(水) 13:25:25
>>803-807
おまいらの言いたい事はわかりましたありがとう。
ぐぐったら山ほど出てきたので非ブロッキングでやります。
809デフォルトの名無しさん:2007/10/03(水) 16:55:16
今日この頃→きょうこのごろ
今日子の頃→きょうこのころ
810デフォルトの名無しさん:2007/10/03(水) 17:28:35
EDITコントロールの背景色や枠の色ってどうやって変えるのでしょうか?
811デフォルトの名無しさん:2007/10/03(水) 18:15:20
>>810
WM_CTLCOLOREDIT
WM_CTLCOLORSTATIC
WM_NCPAINT
812810:2007/10/03(水) 20:03:25
>>811
助かります^^
813デフォルトの名無しさん:2007/10/03(水) 20:47:55
他のウィンドウと連動して最小化、元のサイズに戻すということを
したいのですが、どうすればいいのでしょうか?
814デフォルトの名無しさん:2007/10/03(水) 20:52:41
SDKforVistaをインストールした。
ドキュメントでAPIリファレンスを読んで、Vistaでの新規API&追加フラグは分かったんだけど、
その一覧にはない仕様変更されたAPIはどうやって確認するの?
815デフォルトの名無しさん:2007/10/03(水) 21:18:45
>>814
とりあえずVista移行ガイド系のドキュメントがあちこちにあるはずなので
探して読む。
816デフォルトの名無しさん:2007/10/04(木) 20:01:34
>>813
他のウィンドウと連携の部分はスレッドでGetWindow*を使ってチェック。
んで、自分のウィンドウの制御はSetWindowPosやMoveWindowを使えば良いじゃない?
817デフォルトの名無しさん:2007/10/04(木) 22:10:10
「ファイルを開く」ダイアログの2回目の動作がおかしいです。
なぜかアプリケーションが落ちてしまいます。
長文ですが指摘お願いします。 ↓現状

static OPENFILENAME ofn;で宣言し、
WM_CREATEメッセージにて、
==================================
memset(&ofn, 0, sizeof(ofn));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = hWnd;
ofn.lpstrFilter = "txt(*.txt)\0*.txt\0csv(*.csv)\0*.csv\0\0";
ofn.lpstrFile = szFile;
ofn.lpstrFileTitle = szFileTitle;
ofn.nMaxFile = sizeof(szFile);
ofn.nMaxFileTitle = sizeof(szFileTitle);
ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
ofn.lpstrTitle = "ファイルオープン";
==================================
のように設定しました。
case WM_COMMANDにてIDM_READがくるとダイアログを開くようにしました。
==================================
switch (LOWORD(wp))
{
case IDM_READ:
GetOpenFileName(&ofn);
break;
}
==================================
1回目のダイアログ開く操作は、普通に動作しているように見えますが、
2回目のダイアログ開く操作は、マウスカーソルをcsvファイルの上に持っていくと、ウィンドウが落ちてしまいます。
818デフォルトの名無しさん:2007/10/04(木) 22:18:29
毎回初期化処理、ちゃんと走らせてるの?
819デフォルトの名無しさん:2007/10/04(木) 22:24:49
えっと・・・、
もしかしてOPENFILENAME内のどれか毎回初期化いるのですか?
820デフォルトの名無しさん:2007/10/04(木) 22:33:39
ここ
ofn.lpstrFileTitle = szFileTitle;
821デフォルトの名無しさん:2007/10/04(木) 22:33:46
szFile, szFileTitleだな
あと、デバッグのしかたを勉強すべし
822デフォルトの名無しさん:2007/10/04(木) 22:42:46
書き込む前に試しに、
switch (LOWORD(wp))
{
case IDM_READ:
szFile[0] = '\0';
szFileTitle[0] = '\0';
GetOpenFileName(&ofn);
break;
}
としていましたが、
何度かマウスカーソルを動かしたらやっぱり落ちています。
823デフォルトの名無しさん:2007/10/04(木) 22:44:35
szFileとかもstatic変数なの?
824822:2007/10/04(木) 22:52:01
もちろん、static変数にしました。
825デフォルトの名無しさん:2007/10/04(木) 22:53:20
ってか、マウスカーソル動かしたら落ちるってどゆこと?
826822:2007/10/04(木) 23:00:19
よくわかりませんがダイアログを開いて、
ファイル名のところ(特に前回開いた拡張子と同じやつらへん?)で
マウスをグルグル動かしているとウィンドウが閉じてしまうことがあるんです。

GetOpenFileNameの返却値を、
MessageBoxで表示しようとしてもMessageBoxが出てこないまま落ちてしまうし・・・
827デフォルトの名無しさん:2007/10/04(木) 23:03:25
昔あったAdobeReader絡みの不具合か?
あれって修正されたんだっけ?
828デフォルトの名無しさん:2007/10/04(木) 23:08:34
なんかの初期化忘れてるに俺もイピョウ。
829デフォルトの名無しさん:2007/10/04(木) 23:25:05
とりあえず環境plz
830デフォルトの名無しさん:2007/10/04(木) 23:26:26
>MessageBoxで表示しようとしてもMessageBoxが出てこないまま落ちてしまうし・・・
ASSERTも「ハンドルされていない例外」もでずに落ちるのか?
831デフォルトの名無しさん:2007/10/04(木) 23:36:12
832デフォルトの名無しさん:2007/10/04(木) 23:41:47
NT系ならServerとかのサービスを走らせてないと例外が発生するっつー話があるが
まあ、関係なさそうだな
833822:2007/10/04(木) 23:47:00
返信遅くなりました。
環境ですが、
OS:WinXpHomeSP2
コンバイラ:borlandC++
です。

ソースどっかにあげたほうがいいですか?
834デフォルトの名無しさん:2007/10/04(木) 23:51:13
あげられるなら、是非。
835822:2007/10/05(金) 00:01:44
こういった状況です。
http://wktk.vip2ch.com/upload.cgi?mode=dl&file=48812
DLPASS:wakaran
836デフォルトの名無しさん:2007/10/05(金) 00:03:33
waveOutOpenの引数にコールバックを指定した場合、waveOutWriteしたあとwaveOutProcはどのタイミングで呼ばれるのでしょうか?
メインループでGetMessageやPeekMessageを呼んだときですか?
また、スレッドセーフでしょうか?
837822:2007/10/05(金) 00:07:20
>>830
>ASSERTも「ハンドルされていない例外」もでずに落ちるのか?
そうゆう状況です。
838デフォルトの名無しさん:2007/10/05(金) 00:39:45
一切、そんな挙動起きず、何度ファイル開いてもグリグリしても問題なし。
当方、VistaHomePre VS2008EE Debug/Release両方で確認。
839822:2007/10/05(金) 00:48:53
う〜ん、なんでだろ・・・。
パソコン再起動してみるか
意味無いだろうなぁ・・・
840デフォルトの名無しさん:2007/10/05(金) 01:30:32
うちもまったく問題なし
Vista x64
VS2008 beta
841デフォルトの名無しさん:2007/10/05(金) 01:47:48
64bitVista使ってる人初めてだ。あんたすげーよ。
842デフォルトの名無しさん:2007/10/05(金) 01:48:19
>>839
それは有名な仕様ですが。
843デフォルトの名無しさん:2007/10/05(金) 02:00:12
>>840
ちょw32bitと64bitは違うけどほとんど同じ環境w
だれか他の環境持ってて試せる人いないのかな?
844デフォルトの名無しさん:2007/10/05(金) 02:01:44
だから仕様だって
845デフォルトの名無しさん:2007/10/05(金) 02:07:29
Adobe Reader をアンインストールする ⇒ 落ちなくなる

ということもある
846デフォルトの名無しさん:2007/10/05(金) 02:14:33
ttp://hpcgi1.nifty.com/MADIA/Vcbbs/wwwlng.cgi?print+200606/06060017.txt

CoInitialize で落ちなくなるかもって
847デフォルトの名無しさん:2007/10/05(金) 03:08:59
コモンダイアログがおかしいようなら、マニフェストで別のを使ってみる。
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*' />
    </dependentAssembly>
  </dependency>
</assembly>
848デフォルトの名無しさん:2007/10/05(金) 03:09:11
スタティックコントロールの文字列の幅(≠文字数)を取得出来るような関数ってありませんか?
「文字列」、「幅」、「テキスト」あたりでググってみたんですけどそれらしいものが見当たりません。
文字列の幅を取得して、その幅に合う幅のスタティックコントロールを作りたいんですけど…。
849デフォルトの名無しさん:2007/10/05(金) 03:30:15
GetTextExtent32 とか、そんな感じの名前の関数が在ったような気がする。
ちょっとうるおぼえだから、びみょんに名前違うかもしれんが、まあこんな感じだった。
MSDNとかでソレっぽいのを探してみてくれ。
850デフォルトの名無しさん:2007/10/05(金) 04:44:14
>>848
DrawText
幅も高さも計算してくれる
851デフォルトの名無しさん:2007/10/05(金) 04:47:44
>>849
うる覚えって何だようろ覚えだろ
852デフォルトの名無しさん:2007/10/05(金) 04:50:54
うろ覚えをうろ覚えなんだからしょうがないなw
853デフォルトの名無しさん:2007/10/05(金) 04:55:08
おいときますね
GetTextExtentPoint32
854デフォルトの名無しさん:2007/10/05(金) 06:13:00
うるおぼえ(←なぜか変換できない)
855デフォルトの名無しさん:2007/10/05(金) 06:28:41
うろ覚え←なぜか変換できる
856デフォルトの名無しさん:2007/10/05(金) 06:54:46
857デフォルトの名無しさん:2007/10/05(金) 08:34:51
>>822
俺も昔、その症状が出てかなり悩んだことがある。
プログラムの最初で CoInitialize(Ex) を呼び出すようにしたら直った。
858デフォルトの名無しさん:2007/10/05(金) 10:43:33
「┌」や「├」などの罫線文字を使って
文字列入りの枠を等幅フォントのDrawTextで一気に描画しているのですが、
フォントを斜体にした場合、この罫線文字まで斜体になってしまいます。
これってやはり別フォントを選び直すか、罫線を別途描画するしかないのでしょうか。
罫線だけは斜体にしないような都合のいいフォント設定方法はありませんよね?
859デフォルトの名無しさん:2007/10/05(金) 11:23:36
無い
860sage:2007/10/05(金) 13:17:09
質問です。

「ネットワーク接続」→「ローカルエリア接続」→
「ローカルエリア接続の状態」→「全般」の中の「継続時間」
と表示されている時間を取得する方法はありますでしょうか・・・。
861デフォルトの名無しさん:2007/10/05(金) 13:27:26
知らん

でもワラタ
862デフォルトの名無しさん:2007/10/05(金) 13:30:28
生成したフォームをあるウィンドウより前面(ZオーダーのTOP?)に
配置したいのですが、何か良い方法はないでしょうか。

SetWindowPosを試してみたのですが、「自分自身より前面」には出来たの
ですが、他のウィンドウを指定すると上手く行きませんでした。
863822:2007/10/05(金) 14:20:57
>>856
起きなくなった気がします。
ありがとございますw
864デフォルトの名無しさん:2007/10/05(金) 14:52:52
ウィンドウサイズを調整するために、AdjustWindowRectExを使っているのですが
ステータスバーもつけたウィンドウなのでその分ずれが発生しています。
暫定的にウィンドウサイズに(y+25)としたら見た目が近くなりました。

ですが、ステータスバーのサイズが25と固定なのでしょうか?
(サイズが変わったら結果もずれるし・・・)
ですのでステータスバーのサイズの正しい取得方法があれば教えてください。
お願いします。
865デフォルトの名無しさん:2007/10/05(金) 15:00:21
ふつうに、ステータスバーのハンドルでGetWindowRectすればいいんでない?
866デフォルトの名無しさん:2007/10/05(金) 15:00:23
GetWindowRect で取得すればいいんじゃないかと
867864:2007/10/05(金) 15:06:08
>>865-866
あ、そっか・・・。(あれもウィンドウだってこと忘れてた)
あほだ自分・・・
868848:2007/10/05(金) 15:23:26
GetTextExtentPoint32なんて便利なのがあったんですね。

文字列の幅の取得は成功するんですが、フォントを変えてからの
文字列の幅を取得しようとしてもデフォルトのフォントのままの幅が返ってきてしまいます。
一応フォント変えてからGetDC()でデバイスコンテキストハンドル取得してるんですけど・・・。
これだとまずいんでしょうか・・・。何か対処法ってありませんか?

/*フォント設定*/
SendMessage(hStaticWnd, WM_SETFONT, (WPARAM)hFont, MAKELPARAM(TRUE, 0));
/*文字列幅の計測*/
hdc = GetDC(hStaticWnd);
GetTextExtentPoint32(hdc, (LPCTSTR)str, lstrlen((LPCTSTR)str) , &size);
869デフォルトの名無しさん:2007/10/05(金) 15:41:17
DCにフォントを設定しないとだめだろ
870848:2007/10/05(金) 15:50:24
>>869
よく分かってなかったみたいです。
SelectObject()でフォント設定したら出来ました。
ありがとうございます。
871TaskMan:2007/10/05(金) 19:26:25
XPのタスクマネージャのプロセス一覧の様な物を作りたいのですが、
他ユーザープロセスのユーザー名がどうやっても取れません。
タスクマネージャでは出来てるので出来るはずなのですが・・・。

ちなみに、以下の掲示板にも同様の議論がなされていて、
ttp://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200407/04070077.txt
同様の手法でAdministratorsとSYSTEMは取れましたが、その他がやはりアクセス拒否されます。

掲示板中ではTokenManではやっていそうとの事なのですが、そんなコード入ってない様に思えます。

どなたか詳しい方ご存知でしたらご教授ください。
宜しくお願いいたします。
872デフォルトの名無しさん:2007/10/05(金) 19:58:04
Wtsナントカ
873デフォルトの名無しさん:2007/10/05(金) 20:12:24
ollydbgとかで追いかけると良いんじゃないかな
あるいはインポート関数しらべて怪しいのぐぐってみたり

XP以前かVistaかで違いが出てきそうな処理の代表だからしんどそうだけどね
874デフォルトの名無しさん:2007/10/05(金) 22:30:53
ファイルから1行ずつ別の変数に読み込みこんで、また1行ずつ書き込みたいんですが
何かいい方法ありませんか?
875デフォルトの名無しさん:2007/10/05(金) 22:32:33
ReadFileしてWriteFileすれ
876デフォルトの名無しさん:2007/10/06(土) 00:37:48
ReadFileで1行ずつ読むのって面倒じゃね?
普通にfgetsでも使えばいいと思うが。
877デフォルトの名無しさん:2007/10/06(土) 00:51:42
このスレ的な回答なんだろう
878デフォルトの名無しさん:2007/10/06(土) 00:58:39
LRESULT CMyD3DApplication::MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
  switch( msg )
  {
    case WM_KEYDOWN:
    {
      switch ( wParam ){
        case VK_SPACE:
          スペースが押されたときの処理

とやってますが、1回変換とか無変換のスペースに隣接してるキーを押してしまうと
それ以後何をやってもVK_SPACEが来なくなります。
1度こうなるとアプリを再起動しないと直りません。
何がおかしいのでしょうか。
879デフォルトの名無しさん:2007/10/06(土) 01:00:39
日本語入力になるからじゃねぇの?
880デフォルトの名無しさん:2007/10/06(土) 01:24:04
>>875-876
ありがとう。
ReadFileで弄ってとりあえず1行1行読み込めるようにはなったけど書き込むのが
ちゃんと改行してくれない('A`)
もう諦めてWIN32APIにこだわらずC++の方法で開くことにします
881デフォルトの名無しさん:2007/10/06(土) 01:50:38
>>874
ifstream
882デフォルトの名無しさん:2007/10/06(土) 02:36:38
改行コード付加しなきゃ改行しないのは当然じゃね
883デフォルトの名無しさん:2007/10/06(土) 11:52:00
\r\nじゃなくて\nしか書いてないんじゃね
884デフォルトの名無しさん:2007/10/06(土) 14:18:54
>>883
それ、俺もあったなw
なんで改行されないのかと3時間くらい悩んだ。
885デフォルトの名無しさん:2007/10/06(土) 14:28:07
俺はなかった
一瞬で閃く
886デフォルトの名無しさん:2007/10/06(土) 14:29:00
メモ帳(Editコントロール)が\nだけで改行してくれれば問題ないけどな
887デフォルトの名無しさん:2007/10/06(土) 19:06:46
>>879
そういう問題じゃないキガス、どうやっても解除できないし。
どなたか試してもらえませんかね。
888デフォルトの名無しさん:2007/10/06(土) 19:38:56
>>887
そういう問題じゃないキガス、どうやっても解除できるし。
どんだけレベルなんで消えてもらえませんかね。
889デフォルトの名無しさん:2007/10/06(土) 20:37:51
質問なのですが、画像をウィンドウに表示し、非アクティブにしました。
再び画面を表示すると画像やメニューが消えています。画面のアクティブ、非アクティブを知るAPIないでしょうか?
890デフォルトの名無しさん:2007/10/06(土) 20:43:08
>画面のアクティブ、非アクティブを知るAPIないでしょうか?
GetForegroundWindow

画像が消えた原因は別だけどな
891デフォルトの名無しさん:2007/10/06(土) 20:46:57
猫Cにてモーダルダイアログのところを見ていたのですが、
「3.「OK」ボタンが押されたときに、ダイアログボックスのに入力された情報を読み取る」
の処理の部分が「3.は考慮しません」の一言でやり方が書いていません。

やり方がわからないのでSendMessageで親に送るとか、グローバル変数にするとかしか思いつきません。
どうやったらいいのでしょう?
892デフォルトの名無しさん:2007/10/06(土) 20:47:52
まさかアクティブになったら描き直すつもりなのか?
893デフォルトの名無しさん:2007/10/06(土) 20:51:04
>>890
WM_PAINTとBeginPaintのところ見直したほうがいいよ
894デフォルトの名無しさん:2007/10/06(土) 20:54:19
>>891
お好きなようになされば良いと思いますが、
標準的な方法を求めておられるのでしたら
こちらのものを参考になさってはいかがでしょうか?
http://www.kumei.ne.jp/c_lang/sdk3/sdk_276.htm
http://www.kumei.ne.jp/c_lang/sdk3/sdk_277.htm
895891:2007/10/06(土) 20:57:23
ありゃ、ネットのには載ってたのか・・・
ありがとです
896デフォルトの名無しさん:2007/10/06(土) 21:00:56
>>891
君の見てる場所とは違うが猫のサイトにこんな記述がある

http://www.kumei.ne.jp/c_lang/sdk/sdk_15.htm

>次に、ダイアログボックスもメニューの時と同じようにボタンが押されたときなどに
>WM_COMMANDメッセージがでます。それを捕まえて、OKボタンか、CANCELボタンなら
>EndDialog関数でダイアログボックスを終了させます。
>この関数の第2引数はDialogBox関数の戻り値 になることに注意して下さい。

>OKボタンが押されたとき、グローバル変数に各コントロールの状態をコピーしなくてはいけません。

>エジットボックスに入力されている文字列は GetDlgItemText関数で取得することができます。
>例を見れば引数の意味は分かりますね。

猫の著者は堂々とグローバル使ってるから参考にしない方がいいよ

897889:2007/10/06(土) 21:05:07
>>890 >>892 >>893
ありがとうございます。
WM_PAINT は使ってなくて、WM_DRAWITEMで描いてます。
察しのとおり、アクティブのとき画面を描き直そうと考えてました。。
画像が消えた原因はなんなのでしょうか?ご教授お願いします。。
898デフォルトの名無しさん:2007/10/06(土) 21:08:09
ご教授お願いします
って書くやつ多いけど
正しくは
ご教示ください
899デフォルトの名無しさん:2007/10/06(土) 21:19:56
WM_DRAWITEMってボタンとかメニュー項目とかリストボックスの項目を描くときに使うやつだよ?
900デフォルトの名無しさん:2007/10/06(土) 21:20:50
WM_PAINTで上書きされるから
901デフォルトの名無しさん:2007/10/06(土) 21:27:43
「無効領域の発生」ってのと、WM_PAINTが呼ばれるタイミングについて理解すればいいと思う。
902889:2007/10/06(土) 21:32:45
>>899
はい。リストボックスを勉強しています。
>>900
貴重な助言ありがとうございます。
WM_DRAWITEMでWM_PAINTのようなInvalidateRectのように任意で描きなおすような命令ないでしょうか?
WM_DRAWITEMで任意に書き直すと言う部分で苦戦中です。
903891:2007/10/06(土) 21:40:17
>>894
ごめん、参考になりそうなとこがどれかわからなかった・・・。
どの部分かわかりやすく教えてください^^;
904デフォルトの名無しさん:2007/10/06(土) 22:02:51
>>903
あほすぎ
生きてる価値ないよ
905デフォルトの名無しさん:2007/10/06(土) 22:37:12
>>903
メモリを確保してEndDialogの引数で返せば
906デフォルトの名無しさん:2007/10/06(土) 22:55:10
質問です。XP、VS2005 です。

MDI のように、子ウィンドウが親ウィンドウの範囲内でしか移動できない
(親ウィンドウの外に移動しようとすると、親ウィンドウのふちに隠れる) ようにするにはどうするのでしょうか?

やりたいのは、こんな感じです。
・ダイアログの中に、子ダイアログを配置する。
・子ダイアログは親ダイアログより大きく、そのため、一部分しか表示されない。スクロールバーで可視範囲を移動する。

よろしくお願いします。
907デフォルトの名無しさん:2007/10/06(土) 23:24:42
WS_CHILD つけて WS_
908デフォルトの名無しさん:2007/10/06(土) 23:44:08
WS_ …?(;--
909デフォルトの名無しさん:2007/10/06(土) 23:56:09
>>907
勿体つけずに教えろよ。禿
910デフォルトの名無しさん:2007/10/07(日) 00:05:54
んなんも分からんのか、死ね
911デフォルトの名無しさん:2007/10/07(日) 00:11:13
MDIが嫌なら自分でスクロールイベント捕まえて
クライアント領域移動するしかないんじゃね
912デフォルトの名無しさん:2007/10/07(日) 00:19:55
動かすのは簡単なのですが、
親ウィンドウのふちに隠すのが分かりません…。
913906:2007/10/07(日) 00:27:54
今やってみたのですが、ダイアログの上においた、コントロールなど通常のウィンドウは、WS_CHILD で普通にふちに隠れました。
が、ダイアログの上に置いたダイアログは隠れませんでした…。何か特殊な処理が行われているのでしょうか…。
914906:2007/10/07(日) 00:34:17
自己解決。

ダイアログを作ってから SetWindowLongPtr で WS_CHILD を与えるんじゃなく、
リソースエディタ上で、ダイアログに "子" 属性を与えるとうまくいきました。

ヒントをくださった方々、ありがとうございました。
915デフォルトの名無しさん:2007/10/07(日) 04:47:28
リストボックスコントロールで、表示域に収まらない項目を、
左右にスクロールさせるなどて表示できるようにしたいのですが、
ためしにWS_HSCROLLをコントロールのスタイルに加えても
水平スクロールバーは出てきませんでした。
どうやるのがセオリーなんでしょうか。
916デフォルトの名無しさん:2007/10/07(日) 05:10:29
>>915
LBS_MULTICOLUMN と LBS_DISABLENOSCROLL を指定してみ
917デフォルトの名無しさん:2007/10/07(日) 09:03:45
>>915
水平スクロールバーは出てきましたが、つまみもなく、
無効状態みたいになっててエディットボックスみたいな
スクロールはしてくれそうにないです。
こうなるとリストビューの方がよさそうですね・・・。
918yappi-:2007/10/07(日) 10:12:30
あのスミマセヌ
ウィンドウを最大化させるってどうやってやるんでしたっけ?
MaximizeWindowとかそういう関数はないんでしょうか??
一応 SendMessage(hwnd, WM_SYSCOMMAND, (WPARAM)SC_MAXIMIZE, 0);
としましたが、スマートじゃないですよねw(汗
919デフォルトの名無しさん:2007/10/07(日) 10:25:42
ググれば沢山でてくるけど
920デフォルトの名無しさん:2007/10/07(日) 10:26:52
yappi-氏ね
921yappi-:2007/10/07(日) 10:40:51
ShowWindow( hWnd, SW_MAXIMIZE ); ですね。
ああ恥ずかしい・・
スミマセヌ
922デフォルトの名無しさん:2007/10/07(日) 10:47:48
ゆるさん
923デフォルトの名無しさん:2007/10/07(日) 19:45:27
typedef struct{
...
}test;
static test suuti={...};
こういう風に構造体を作って自作関数にvoid kansuu(test suuti)みたいに呼び出しているのですが
コマンドプロント上ではきちんと動作するのに、WINAPIを使うと型名が必要(自作関数のvoid kansuu(test suuti){ の行)と未定義のシンボル WndProc(関数 InitApp ) というエラーがでます
自分で何回も見直しておかしいところは全て直したつもりなのですが、直りません
何が原因なんでしょうか?
924デフォルトの名無しさん:2007/10/07(日) 19:53:31
志村〜抜けてる!抜けてる!
925デフォルトの名無しさん:2007/10/07(日) 19:55:28
>>923
あなたがあほなのが原因です。
926デフォルトの名無しさん:2007/10/07(日) 20:01:57
>>923
あなたがプログラマーに向いてないのが原因。
927デフォルトの名無しさん:2007/10/07(日) 20:42:23
次の質問をどうぞ
928デフォルトの名無しさん:2007/10/07(日) 20:45:10
すみません
かなり考えたんですが分かりません・・・
本当に困ってるんで教えてください;
929デフォルトの名無しさん:2007/10/07(日) 20:49:32
「コマンドプロント上」と「WINAPIを使うと」を
条件の違いとして提示している時点で意味が判らん。
930デフォルトの名無しさん:2007/10/07(日) 20:56:28
構造体を自作関数で使ったことがなかったので
コマンドプロント上でテストしてみて動いたのをAPIを使ったプログラムにコピーしても動かなかったのでこう書きました
抜けてると言われて思いつくのはstaticしか・・・
931デフォルトの名無しさん:2007/10/07(日) 20:59:52
まずC言語の基礎を見直した方がいいぞ
932デフォルトの名無しさん:2007/10/07(日) 20:59:54
typedef structなんて書く人ひさしぶりに見た。
クラスとかテンプレート使わなくても、C++を使った方がいいと思うが。

>>930
;とか抜けてるとこない?
933デフォルトの名無しさん:2007/10/07(日) 21:08:40
;が抜けてるところは見当たりませんでした
抜けてるというのがヒントなのでしょうか?
934デフォルトの名無しさん:2007/10/07(日) 21:12:57
>>933
俺が速攻で志村抜けてるって書いてやってるのに、スルーだもんな。
935デフォルトの名無しさん:2007/10/07(日) 21:15:03
もうAPIとか無関係なのでここではスレ違い。
936デフォルトの名無しさん:2007/10/07(日) 21:21:48
>>934
すみません
一応>>930でレスをしたつもりでした
本当に思いつかなかったので頭のネジのことを言ってるのだと思ってました

>>935
すみません
APIが関係してないことが分かっただけでも良かったです
今日はもう考えるをやめて明日もう一度見直してみます
937デフォルトの名無しさん:2007/10/07(日) 21:27:13
死ぬまで考えてればいいのに
938デフォルトの名無しさん:2007/10/07(日) 21:38:14
俺も傍から見てるけどわかんね
何が抜けてる?
939デフォルトの名無しさん:2007/10/07(日) 21:47:23
>>932
え?そうなの?俺いまでも愛用してるけど・・・引数に使うと便利なんだよ。
940デフォルトの名無しさん:2007/10/07(日) 21:49:09
プログラミングなんて人それぞれだろ






と、
941デフォルトの名無しさん:2007/10/07(日) 21:58:26
WM_PAINT:
BeginPaint(hWnd, &ps);

SelectObject(memDCS, (HPEN)PRect);
GetClientRect(hWnd, &rc);
FillRect(memDCS, &rc, cFont.hBrush);
Rectangle(memDCS, rc.left, rc.top, rc.right, rc.bottom);
BitBlt(hdc, 0, 0, 400, 500, memDCS, 0, 0, SRCCOPY);
EndPaint(hWnd, &ps);
break;
WM_SIZE:
GetClientRect(hWnd, &rc);
InvalidateRect(hWnd, &rc, FALSE);
break;

症状
グラフィックは描けているのですが、ウィンドウが新しいウィンドウの下に行くとグラフィックが消えます。
ウィンドウサイズを下へずらすとステータスバーが連なる絵になります。解決方法ご教示ください。。
942デフォルトの名無しさん:2007/10/07(日) 22:27:57
>BitBlt(hdc, 0, 0, 400, 500, memDCS, 0, 0, SRCCOPY);

この hdc はどこから?
943デフォルトの名無しさん:2007/10/07(日) 23:10:42
>>942
グローバル変数でメインウィンドウのHDCになります。もう少し考えて見ます。。
オーナードローとWM_PAINTって共存できないんでしょうか。。今この部分の動作を勉強しています。。
944デフォルトの名無しさん:2007/10/07(日) 23:15:29
ウインドウスタイルのクリッピングが適切に設定されていないんじゃないか?
945デフォルトの名無しさん:2007/10/07(日) 23:25:22
>>944
口頭でうまく説明できるか分かりませんが、
ウィンドウ左半分をWM_PAINTで描き、ウィンドウ右半分をオーナードローで描こうとしています。
WM_SIZEが発生した場合、オーナードローが優先されてWM_PAINTの部分が>>941のような症状が出ます。
たしかにクリッピングが適切に処理されてないと思います。オーナードローのWindowCreateExの座標部分をずらして
WM_PAINTの部分を確保している状態です。この場合だとメインウィンドウのHWNDがオーナードローの方へずれてしまうだけなんですよね。。
なにかいい方法ないでしょうか・・?
946デフォルトの名無しさん:2007/10/07(日) 23:28:14
そもそもやろうとしていることに無理がある。
947デフォルトの名無しさん:2007/10/07(日) 23:33:15
なんつうかウィンドウ2個にした方が簡単じゃね
948デフォルトの名無しさん:2007/10/07(日) 23:38:56
>>947
たしかにそのとおりなんですが。。。
オーナードローとWM_PAINTの優先順位というか。動作確認というか。勉強してみようと思った次第です。
優先順位はオーナードローの方が高いのか検証中です。
答えてくださった方、変な質問で申し訳ありませんでした。。
949デフォルトの名無しさん:2007/10/07(日) 23:41:55
>>941
memDCSにHBITMAPは?
サイズが変更されたらHBITMAPのサイズが小さいときはHBITMAPのサイズも変更
950949:2007/10/07(日) 23:47:37
聞き忘れ
memDCSってメモリDCの事だよね?
951デフォルトの名無しさん:2007/10/08(月) 00:22:14
帰っちゃったかな?

メモリDCの場合描画処理したいなら
CreateCompatibleBitmap などを使ってHBITMAPを作成し
SelectObject(memDCS, (HBITMAP)hBitmap); をする必要がある
この後にmemDCSに対して描画処理を開始する

もしHBITMAPを設定してあったとしても>>949でも書いたけど
サイズが足りないときはそれに合わせて変更する必要がある
952デフォルトの名無しさん:2007/10/08(月) 00:27:47
WM_PAINT:
BeginPaint(hWnd, &ps);

SelectObject(ps.hdc, (HPEN)PRect);
GetClientRect(hWnd, &rc);
FillRect(ps.hdc, &rc, cFont.hBrush);
Rectangle(ps.hdc, rc.left, rc.top, rc.right, rc.bottom);

EndPaint(hWnd, &ps);
break;

そもそもこうした場合でも成功するのか?
953デフォルトの名無しさん:2007/10/08(月) 00:36:15
VC++で作成されたサンプルプログラムを、DLL化してVBから利用しようとしているのですが

DLL内でLoadLibrary()を使って、別のDLLを読み込もうとするとエラーが出ます。

DLLからDLLは読めないんですか?
それともヘッダとか調べてDLLの読み込み部分を改造すればいいのかなあ・・・



マジ素人なんで何質問してるかも微妙ですorz
954デフォルトの名無しさん:2007/10/08(月) 00:38:21
悪い事は言わない
やめておきなさい
955デフォルトの名無しさん:2007/10/08(月) 00:41:29
マジ素人ならそんな事しない方が
956デフォルトの名無しさん:2007/10/08(月) 00:43:06
DLLからDLLは読み込めます
957デフォルトの名無しさん:2007/10/08(月) 00:46:09
>>953
普通にLoadLibrary()出来る
普通にミスだろ
958デフォルトの名無しさん:2007/10/08(月) 00:47:27
珍しく千客万来だなw

DLL内でLoadLibraryは可能
呼ぶタイミングを間違うと場合によっては偉い事に

エラーが出てるならパス通ってないとか
そもそも呼び出そうとしてるDLLが無いとかそんなん
959デフォルトの名無しさん:2007/10/08(月) 00:55:10
そういう場合はLoadLibraryするよりLIBくっつけてすたちっくのほうがよくね?
960デフォルトの名無しさん:2007/10/08(月) 00:56:17
cdeclになってたりして
961デフォルトの名無しさん:2007/10/08(月) 01:01:24
あとは

>VC++で作成されたサンプルプログラムを、DLL化

この段階で間違ってるとか
962デフォルトの名無しさん:2007/10/08(月) 01:08:01
>>958
こういう日があってもいいと思われ。
おもしろくていい。
963953:2007/10/08(月) 01:12:29
>>954-961
ありがとうございます。

サンプルは実行ファイルと同じフォルダにあれば動作したので
DLLと同じフォルダに置いておけば良いと思ったのですが

なんとなく、システムフォルダに入れたら動きました


ここで質問するような事ではないかもしれませんが、
同じフォルダで動作させるためにパスを通すというのは、プログラムではどうやるんでしょうか?

LIBくっつける、というのも良く分かりませんが、勉強してみます。
964デフォルトの名無しさん:2007/10/08(月) 01:17:05
>>963
ググる事を覚えろ
965デフォルトの名無しさん:2007/10/08(月) 01:19:28
>>963
自分がいるパスとってくりゃいいじゃん。
ロードするときゃそのパスとファイル名くっつければいい。
うまくいかなきゃメッセージボックスでもなんでもいいから
実行しようとしているパスを表示してみりゃいい。
966デフォルトの名無しさん:2007/10/08(月) 01:21:53
>>963
通すパスが解ってるならフルパスでしろよ
GetModuleFileNameでexeかdllのパスを取得しろよ
967デフォルトの名無しさん:2007/10/08(月) 01:23:37
>>963
死ねカス
968デフォルトの名無しさん:2007/10/08(月) 01:23:43
つか同じフォルダにおいてあるならファイル名だけでロードできる筈
無駄にパスつけてんじゃねーの
969デフォルトの名無しさん:2007/10/08(月) 01:29:14
>>963
もしかしてデバッグ時の話じゃないよね
970953:2007/10/08(月) 01:29:15
マジすいません

実はC言語も殆ど分かってなくて、イメージがつかめてませんでした。
なんとなく分かりました、ありがとうございました。
971デフォルトの名無しさん:2007/10/08(月) 01:31:35
>>968
exe と dll(2) が同じフォルダで
dll(1) が別のフォルダって事じゃないか
972デフォルトの名無しさん:2007/10/08(月) 01:34:36
サンプルdll(2)は実行ファイルexeと同じフォルダにあれば動作したので
DLLdll(1) と同じフォルダに置いておけば良いと思ったのですが
973デフォルトの名無しさん:2007/10/08(月) 01:45:46
>>972
呼び出したパスを検索して
呼び出されたパスは検索しないんだな
正直、知らんかった
974デフォルトの名無しさん:2007/10/08(月) 01:48:15
DLLからDLL呼ぶなんてあまりしないからな
975デフォルトの名無しさん:2007/10/08(月) 01:49:33
初歩的な質問で申し訳ないです。ウィンドウ上部にメニュー(ファイル(F)など)をつけました。
画面をリサイズした場合、ちらつきが発生します。どうしても気になります。
メニュー部分を描き換えさせない。又はちらつかない方法ないでしょうか。
VC + sdkで作っております。よろしくお願いします。
976デフォルトの名無しさん:2007/10/08(月) 01:53:09
>>292付近に似たような話があったが解決しなかったなw
977デフォルトの名無しさん:2007/10/08(月) 01:53:49
全部同じ人
978975:2007/10/08(月) 02:00:35
別人ですよ。上の方は確認させてもらいました。うまくいくのかと思って
WM_ERASEBKGNDをつけてみたのですが、メニュー部分は関係ないみたいです。
メニュー部分は
wc.hbrBackground = NULL;
wc.lpszMenuName = MAKEINTRESOURCE( IDR_MENU1 );
wc.lpszClassName = WNDCLASS;
return (RegisterClassEx( &wc ));
以外は触っていません。
何か方法ありませんか?
979デフォルトの名無しさん:2007/10/08(月) 02:02:32
>>1-978
ここまで俺の自演
980デフォルトの名無しさん:2007/10/08(月) 02:04:56
まぁ俺は知ってるが教えてやらない
981デフォルトの名無しさん:2007/10/08(月) 02:09:43
わざわざ上げてまで言う事かよ
黙ってた方がさっさと居なくなるのに
982デフォルトの名無しさん:2007/10/08(月) 02:13:29
お前だってレスしてるだろうがボケ
983デフォルトの名無しさん:2007/10/08(月) 02:16:20
お前だってレスしてるだろうがボケ
984デフォルトの名無しさん:2007/10/08(月) 02:19:40
よほどのアホだな
知ってるそぶり見せたら食い付いてくるだろう
日本語理解できないカッカちゃんですか
985978:2007/10/08(月) 02:24:31
すみません。。。
質問が悪かったみたいです。
たくさん答えが返ってきてるようなので僕もと思い質問させてもらいました。
空気を悪くしたようで申し訳ないです。失礼します。。。
986デフォルトの名無しさん:2007/10/08(月) 02:28:45
気にするな。いつものことだ
987デフォルトの名無しさん:2007/10/08(月) 02:29:41
>>978
なかなかの釣り師だね♪
988デフォルトの名無しさん:2007/10/08(月) 02:50:47
試したけどちらつかなかったから分からん
989デフォルトの名無しさん:2007/10/08(月) 03:05:36
>>979-984
こいつら最低だな・・・
黙ってたらとか食いついてくるとかあまりに質問者がかわいそうだ。
990デフォルトの名無しさん:2007/10/08(月) 03:08:55
初歩的な質問ばかりでスレが埋まるよりマシ
991デフォルトの名無しさん:2007/10/08(月) 03:12:01
埋め
992デフォルトの名無しさん:2007/10/08(月) 03:20:34
新スレ立ってから埋めれw
993デフォルトの名無しさん:2007/10/08(月) 03:22:17
やなこった
994デフォルトの名無しさん:2007/10/08(月) 03:23:21
立ててくる
995デフォルトの名無しさん:2007/10/08(月) 03:24:28
パンナコッタ
996デフォルトの名無しさん:2007/10/08(月) 03:24:35
生め
997デフォルトの名無しさん:2007/10/08(月) 03:25:37
998デフォルトの名無しさん:2007/10/08(月) 03:26:45
Win32API質問箱 Build58
http://pc11.2ch.net/test/read.cgi/tech/1191781463/

おちんちんびろーん貼った奴
怒らないから挙手
999次スレ1:2007/10/08(月) 03:35:33
>>998
1000デフォルトの名無しさん:2007/10/08(月) 03:36:32

10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。