トップページ⇒tech
1001コメント254KB

Win32API質問箱 Build75

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2009/01/08(木) 23:06:42
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。
「知らないならレスしないで下さい。ウザイだけです。 」なんて言わないでねっ!

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

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

- Win32API質問箱 wiki
http://wiki.livedoor.jp/program1/d/FrontPage

Win32API質問箱 Build74
http://pc11.2ch.net/test/read.cgi/tech/1229239827/
0002デフォルトの名無しさん2009/01/08(木) 23:07:00
- MSDN ホームページ
http://www.microsoft.com/japan/msdn/
- MSDN ライブラリ
http://msdn.microsoft.com/ja-jp/library/
http://msdn.microsoft.com/en-us/library/
- MSDN ライブラリ (ローカル版)
http://www.microsoft.com/downloads/details.aspx?familyid=6FF3BC60-32C8-4C22-8591-A20BF8DFF1A2&displaylang=ja
http://www.microsoft.com/downloads/details.aspx?familyid=B8704100-0127-4D88-9B5D-896B9B388313&displaylang=ja
- Windows SDK & Platform SDK
http://www.microsoft.com/downloads/details.aspx?FamilyID=74dd6e2d-89c6-4e1e-af00-fc7d70f15439&DisplayLang=en
http://www.microsoft.com/downloads/details.aspx?FamilyID=c2b1e300-f358-4523-b479-f53d234cdccf&DisplayLang=en
http://www.microsoft.com/downloads/details.aspx?FamilyID=ff6467e6-5bba-4bf5-b562-9199be864d29&DisplayLang=en
http://www.microsoft.com/downloads/details.aspx?FamilyID=7614FE22-8A64-4DFB-AA0C-DB53035F40A0&displaylang=ja
http://www.microsoft.com/downloads/details.aspx?FamilyId=484269E2-3B89-47E3-8EB7-1F2BE6D7123A
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm
0003デフォルトの名無しさん2009/01/08(木) 23:07:11
- Google 聞く前に検索
http://www.google.com/

下記サイトは、違っている事もあるので参考程度にしよう!
流れを参考にしながら、APIの仕様を読めば使えるはず。

- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
- Win32 API入門
http://wisdom.sakura.ne.jp/system/winapi/
- Win32 プログラミング入門
http://www7.plala.or.jp/keny01/
●Win32API(C言語)
http://www.geocities.jp/ky_webid/win32c/
- Advanced Windows 第5版(書籍)
http://www.amazon.co.jp/dp/4891005920
0004デフォルトの名無しさん2009/01/08(木) 23:07:50
74 ttp://pc11.2ch.net/test/read.cgi/tech/1229239827/
73 ttp://pc11.2ch.net/test/read.cgi/tech/1227934931/
72 ttp://pc11.2ch.net/test/read.cgi/tech/1226575789/
71 ttp://pc11.2ch.net/test/read.cgi/tech/1224745158/
70 ttp://pc11.2ch.net/test/read.cgi/tech/1221446107/
69 ttp://pc11.2ch.net/test/read.cgi/tech/1217687038/
68 ttp://pc11.2ch.net/test/read.cgi/tech/1215348804/
67 ttp://pc11.2ch.net/test/read.cgi/tech/1212931246/
66 ttp://pc11.2ch.net/test/read.cgi/tech/1210775622/
65 ttp://pc11.2ch.net/test/read.cgi/tech/1208847084/
64 ttp://pc11.2ch.net/test/read.cgi/tech/1207099291/
63 ttp://pc11.2ch.net/test/read.cgi/tech/1204600558/
62 ttp://pc11.2ch.net/test/read.cgi/tech/1202060403/
61 ttp://pc11.2ch.net/test/read.cgi/tech/1199514664/
60 ttp://pc11.2ch.net/test/read.cgi/tech/1196874830/
59 ttp://pc11.2ch.net/test/read.cgi/tech/1194701996/
58 ttp://pc11.2ch.net/test/read.cgi/tech/1191781463/
57 ttp://pc11.2ch.net/test/read.cgi/tech/1189255282/
56 ttp://pc11.2ch.net/test/read.cgi/tech/1186989201/
55 ttp://pc11.2ch.net/test/read.cgi/tech/1184853465/
54 ttp://pc11.2ch.net/test/read.cgi/tech/1181645965/
53 ttp://pc11.2ch.net/test/read.cgi/tech/1178882828/
52 ttp://pc11.2ch.net/test/read.cgi/tech/1176828891/
51 ttp://pc11.2ch.net/test/read.cgi/tech/1174416295/
0005デフォルトの名無しさん2009/01/08(木) 23:08:07
50 ttp://pc11.2ch.net/test/read.cgi/tech/1171721448/
49 ttp://pc10.2ch.net/test/read.cgi/tech/1168708801/
48 ttp://pc10.2ch.net/test/read.cgi/tech/1166172047/
47 ttp://pc8.2ch.net/test/read.cgi/tech/1163375772/
46 ttp://pc8.2ch.net/test/read.cgi/tech/1159158014/
45 ttp://pc8.2ch.net/test/read.cgi/tech/1156032806/
44 ttp://pc8.2ch.net/test/read.cgi/tech/1151501925/
43 ttp://pc8.2ch.net/test/read.cgi/tech/1148005509/
42 ttp://pc8.2ch.net/test/read.cgi/tech/1144962549/
41 ttp://pc8.2ch.net/test/read.cgi/tech/1141392216/
40 ttp://pc8.2ch.net/test/read.cgi/tech/1138893959/
39 ttp://pc8.2ch.net/test/read.cgi/tech/1136673250/
38 ttp://pc8.2ch.net/test/read.cgi/tech/1133798345/
37 ttp://pc8.2ch.net/test/read.cgi/tech/1131884991/
36 ttp://pc8.2ch.net/test/read.cgi/tech/1128951330/
35 ttp://pc8.2ch.net/test/read.cgi/tech/1125850096/
34 ttp://pc8.2ch.net/test/read.cgi/tech/1122723009/
33 ttp://pc8.2ch.net/test/read.cgi/tech/1120153520/
32 ttp://pc8.2ch.net/test/read.cgi/tech/1117271829/
31 ttp://pc8.2ch.net/test/read.cgi/tech/1114762194/
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/
0006デフォルトの名無しさん2009/01/08(木) 23:08:18
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
0007デフォルトの名無しさん2009/01/08(木) 23:08:49
ガソリンの味がするコーヒーを飲み干しながら立てましたわ
0008デフォルトの名無しさん2009/01/08(木) 23:13:00
MSDN Library for Visual Studio 2008 SP1 (2008年12月更新版)
http://www.microsoft.com/downloads/details.aspx?FamilyID=7bbe5eda-5062-4ebb-83c7-d3c5ff92a373&DisplayLang=ja
0009デフォルトの名無しさん2009/01/09(金) 00:26:05
下記サイトは、違っている事もあるので参考程度にしよう!
流れを参考にしながら、APIの仕様を読めば使えるはず。

- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
- Win32 API入門
http://wisdom.sakura.ne.jp/system/winapi/
- Win32 プログラミング入門
http://www7.plala.or.jp/keny01/
●Win32API(C言語)
http://www.geocities.jp/ky_webid/win32c/
- Advanced Windows 第5版(書籍)
http://www.amazon.co.jp/dp/4891005920


Advanced Windowsってダメダメなの?
0010デフォルトの名無しさん2009/01/09(金) 00:30:30
NTFSに特化したやり方でいちいちルートからファイルリストを舐めていかないで
超高速にHDDのファイルリストを取得する技があるって聞いたんですが
具体的にどうやればいいんでしょうか?
0011デフォルトの名無しさん2009/01/09(金) 00:31:15
NTFSを自前で読む
0012デフォルトの名無しさん2009/01/09(金) 02:09:30
>>1乙
0013デフォルトの名無しさん2009/01/09(金) 05:17:11
>>1て
0014名無し募集中。。。2009/01/09(金) 05:51:23
     /:.:.:.:.l:.:.:.:.:.:.:.:.:.:l:.:lヽ.:.:.:.:.:ハ:.:.:l:――‐--――ヘ
    ,':.:.:.:.:.:l、:.:.:.:.:.:.:.:.ト、!ハト、:.:.:.:',:.:l:.:..: : : : : : : :: : : : 〉
   /:l:.:.:.:.:.:.l ヽト、:.:.:.:.l /ィ云ミl:.:.:.:.l:.:ト――――ァ´:./
   ,':.:.l:l:.:.:.:N,≧z-ヽ、l ゛弋ィリ l:.:.:.:.:l/      /: :/
   !:.:.:l:l:.:.:.:l〈弋ィ}       lイ:.:.:.l     /: : : /     ,、
   !:.:.:N:.:.:.:ヽ、´    、      !:.:ハ!     /: : : /     }: :ヽ
.  l:.:.:.:.:lヽ、:ヘヽ    r‐、  ,イ:./  __ /: : : 〈___/: : : 〉
.  l:.:.:.:.:l  ヽ、 ` - ...__  ̄ ./ l:.ムィ    \: : : : : : : : : : : : /
.  !:.:.:.l:.!   `ヽ{   !  ̄  _..イ−{      ` ̄ ̄ ̄ ̄ ̄
  l:.:.:.:.l:l    _, -ィ}  / /−ム-    / これは>>1乙じゃなくて
  l:.:.:.:.l:l  /  /-/‐    /,−く-、    l  ツインテールなんだからな!
  l:.:.:.:.l:l /   /−{    / {   }, ヽ.  l  勘違いするんじゃないよ!
0015デフォルトの名無しさん2009/01/09(金) 12:45:34
>>9
10スレぐらい過去スレ眺めてみたけどAdvancedWindowsは誰一人叩いてないのにな
誰だよ
0016デフォルトの名無しさん2009/01/09(金) 13:03:37
     ::|
     ::|    ____
     ::|.  ./|=|    ヽ.    ≡三< ̄ ̄ ̄>
     ::|. / |=|  o  |=ヽ     .≡ ̄>/
     ::|__〈 ___  ___l   ≡三/ /
     ::|、ヽ|.|┌--、ヽ|/,-┐|    ≡/  <___/|
     ::|.|''''|.\ヽ--イ.|ヽ-イ:|  ≡三|______/
     ::|.ヾ |.::. .. ̄ ̄| ̄ /
     ::|  ';:::::┌===┐./
     ::| _〉ヾ ヾ二ソ./       こ、これは>>1乙じゃなくてスラッガーなんだから
     ::||ロ|ロ|  `---´:|____    変な勘違いしないでよね!
     ::|:|ロ|ロ|_____/ロ|ロ|ロ,|`ヽ
     ::| |ロ|旦旦旦旦旦/ロ/ロ|旦,ヽ
     ::|ロヽ 旦旦旦旦旦./ロ,/|::旦旦)
     ::|ヾ旦旦旦旦旦旦,,,/::::|、 旦旦|
0017デフォルトの名無しさん2009/01/09(金) 13:53:37
>>9>>15
●がついてるサイトの事だろ
0018デフォルトの名無しさん2009/01/09(金) 14:41:07
VC8では、pdbを生成せずにイメージにデバッグ情報を付加することはできますか?
0019デフォルトの名無しさん2009/01/09(金) 14:41:56
VCスレへどうぞ
0020デフォルトの名無しさん2009/01/09(金) 14:48:25
どもです。そうします
0021デフォルトの名無しさん2009/01/09(金) 15:43:51
イメージにデバッグ情報を付けてると公開する時カコワルイぞw
0022デフォルトの名無しさん2009/01/09(金) 16:33:17
アプリケーション上から、マルチCPUのON/OFFを制御したいのですが、そのようなAPIをご存知の方教えて頂けないでしょうか?具体的には、

タスクマネージャ - プロセス - 関係の設定(プロセッサの関係)

にて、できる操作と同様に、あるプロセスに対して、CPUを1つにしたり、2つにしたりしたいのですが、方法が分かりませんでした。
0023デフォルトの名無しさん2009/01/09(金) 16:36:33
セットプロセスアフィニティマスク
0024デフォルトの名無しさん2009/01/09(金) 16:39:53
なんでカタカナ?
0025デフォルトの名無しさん2009/01/09(金) 16:48:00
test
0026デフォルトの名無しさん2009/01/09(金) 16:50:05
なんのtest?
0027デフォルトの名無しさん2009/01/09(金) 16:52:22
test
0028デフォルトの名無しさん2009/01/09(金) 16:58:19
何でお前存在してるの?
0029デフォルトの名無しさん2009/01/09(金) 17:08:08
         / ̄ ̄\
       / _ノ ヽ_ \
       | ミ(⌒)(⌒)彡                                / ̄ ̄ ̄\
      | *(__人__)*:|                                /  ⌒  ⌒ \
       |   ` ⌒´  |                               / ミ(>)   (●)彡 ((\
        |        |                                 |     (__人__)   |゙)〈〈ヽ、
         ヽ    ノ                              \    ` ー ´   /と'  ; )
     /⌒<>★<>、                                   `>        <´  `i 〜|
     /  /    o  )l            /  ̄ ̄ ̄\            /⌒ヽ<>★<>⌒ヽ /  .|
    / / |   o  |. |         /   ⌒  ⌒ \              |   |    o  )  ソ   /
   _/ ,,/ ノ       ヽ.|           / ミ(●)  (●)彡              |   |.   o  |\   ,/
 rと二ソ ノ'〜'〜'〜'〜ゞっァ     |  ::⌒(__人__)⌒:|           ノ   ノ       |   ̄
      ん'〜'〜'〜'〜ゝ         \    `ー'  /          〆  /          \
        |   ィ /           /⌒<>★<>ヽ           `〜"〜ヽ〜ヽ〜ヽ〜ヽ
        |  / /               /  ソ   o   \\               |    ィ  |
         |=|=/           r;と_,ノ〜'〜'〜'〜'〜、_゙っァ          |    /   /
.         |   |  |                ⌒(   Y  ノ~´                  |   ノ  丿
        |   |,  |                  丿=/=/                 |==|==|
.      |,___)__`)              ヘ__ハ_)                 |"___) __)
0030デフォルトの名無しさん2009/01/09(金) 17:09:58
貼ろうと思っても躊躇するだろ…常識的に考えて…。
0031デフォルトの名無しさん2009/01/09(金) 18:35:52
常識的に考えるなってこった
0032デフォルトの名無しさん2009/01/09(金) 20:06:20
常識の枠に囚われてはいけないのですね、わかります
0033デフォルトの名無しさん2009/01/09(金) 20:19:37
>>1乙なんです ゚。, ☆ ゚. + 。 ゚ ,。・ .
      (;><)   .  +。 . 。゚.・ o.゚ *。 ゚.+
    l^ヽ'"'"~/^i'ツ'∧ ∧
  ヾ        'ミω‘ * ) )) もふもふぽ・・・♪
  ミ  ´ ∀ `  と,   ヽ
  ッ       _   "ミ__)。 . ゚. ☆。゚.・ o.゚
 (´彡,.     (,,_,ノ  _ヽ_)_) ゚. 。゚.・ o *
       ゚。, ☆ ゚. + 。 ゚ ,。・ . 。  ,.。
0034デフォルトの名無しさん2009/01/10(土) 03:54:37
MultiByteToWideCharってバッファが小さいと失敗するのか
_TRUNCATEみたいなフラグ用意しとけばいいのに、使えねーなもう
0035デフォルトの名無しさん2009/01/10(土) 04:29:33
予めサイズ0で呼び出して、必要なバッファを確保するのが作法だろ。

/*
 * caller must free()
 */
wchar_t *SjisToUnicode(const char *str)
{
    int size = ::MultiByteToWideChar(CP_OEMCP, 0, str, -1, NULL, 0);
    if(!size) return NULL;
    wchar_t *p = (wchar_t *)malloc(sizeof(wchar_t)*size);
    if(!p) return NULL;
    ::MultiByteToWideChar(CP_OEMCP, 0, str, -1, p, size);
    return p;
}
0036デフォルトの名無しさん2009/01/10(土) 04:52:20
作法とかじゃなくてさ、エラーメッセージに使う場合なんかだと256文字程度で十分だろ
そのSjisToUnicodeとやらで100万文字のバッファが確保されると馬鹿でかいメッセージボックスが出る羽目になる

そもそも、バッファが小さいと失敗するAPIもあれば途中までコピーしてくれるAPIもあったり統一性無さすぎ
0037デフォルトの名無しさん2009/01/10(土) 05:02:58
嫌なら使うなボケ
0038デフォルトの名無しさん2009/01/10(土) 05:05:23
逆に「失敗してくれよ!」と思うAPIもあるよ。ファイルパス関係とか。

例えば、GetModuleFileNameなんて、バッファが小さいと
お節介にもバッファに収まる範囲までコピーしてくれて、
しかも終端のnullを付けないというおバカ仕様
おまけにサイズ0で呼び出しても必要なサイズが得られないしw

こういう糞APIを目の当たりにするとMSのプログラマって頭悪いなーって思う。
0039デフォルトの名無しさん2009/01/10(土) 05:11:24
何から何に変換するかわかってるんだから、元のサイズから最大でいくつになるかわかるだろう。
0040デフォルトの名無しさん2009/01/10(土) 05:12:09
>>38
msdn見たらvista以降では直ってるみたい
まさに「仕様という名のバグ」
0041デフォルトの名無しさん2009/01/10(土) 05:17:26
>>39
元のサイズがわからない事だってあるよ
頭悪いねキミ
0042デフォルトの名無しさん2009/01/10(土) 05:36:29
SHAnsiToUnicodeはtruncateするらしいよ
シェル開発チームの中の人も不便に感じたのだろうなあ
0043デフォルトの名無しさん2009/01/10(土) 06:13:41
そもそもWin32はWin16からも仕様を引きずってきちゃってるわけで
今更なに言ってんだかって話だなw
0044デフォルトの名無しさん2009/01/10(土) 07:16:47
>>43
知らないならレスしないでください。ウザイだけです。
0045デフォルトの名無しさん2009/01/10(土) 07:21:18
>>43
ゆとり臭が物凄いんですが・・・
0046デフォルトの名無しさん2009/01/10(土) 08:14:43
.net使うという選択肢は出てこないんだな
0047デフォルトの名無しさん2009/01/10(土) 08:32:53
ネットなら毎日使ってるが。
0048デフォルトの名無しさん2009/01/10(土) 11:18:09
小回りが利かない.netはパス
0049デフォルトの名無しさん2009/01/10(土) 12:27:43
たいてい、そんな小回りは必要なくないか?
0050デフォルトの名無しさん2009/01/10(土) 12:45:05
EnumWindowsで躓くから嫌です
0051デフォルトの名無しさん2009/01/10(土) 16:17:59
.netってウィンドウのサブクラス化がやたら面倒じゃないか?
スーパークラス化は継承だけでできるけど
0052デフォルトの名無しさん2009/01/10(土) 16:21:25
ドトネトがわかってない素人なのはわかった
0053デフォルトの名無しさん2009/01/10(土) 16:23:55
>>51
リストコントロールのItemChangedでメッセージが3連発くるとか無駄に面倒な部分は
.netで改善されたの?
0054デフォルトの名無しさん2009/01/10(土) 16:29:11
逆汗、逆コンパイルが簡単にできすぎ
シェアウエア作ったら一時間でクラックされそうw
0055デフォルトの名無しさん2009/01/10(土) 16:30:07
大丈夫
君のプログラムはクラックしたくなる程の魅力が無いから
0056デフォルトの名無しさん2009/01/10(土) 16:32:46
<STOP> スレ違い ここまで <STOP>
0057デフォルトの名無しさん2009/01/10(土) 16:34:19
<RESTART> スレ違い ここから <RESTART>
0058デフォルトの名無しさん2009/01/10(土) 16:34:27
>.netってウィンドウのサブクラス化がやたら面倒じゃないか?
>スーパークラス化は継承だけでできるけど

>.netってウィンドウのサブクラス化がやたら面倒じゃないか?
>スーパークラス化は継承だけでできるけど

>.netってウィンドウのサブクラス化がやたら面倒じゃないか?
>スーパークラス化は継承だけでできるけど
0059デフォルトの名無しさん2009/01/10(土) 16:36:54
とりあえず、サブクラス化と継承は関係なくね?
0060デフォルトの名無しさん2009/01/10(土) 16:38:18
.netの方法でできないって意味で言ったんだけど
Win32でWindowProc書くのと大差無い方法でできてもねぇ・・・
0061デフォルトの名無しさん2009/01/10(土) 16:41:55
サブクラス化を知らないならレスしないでください
0062デフォルトの名無しさん2009/01/10(土) 16:43:49
>>60
NativeWindowクラス継承すれば一発
10行で書けるが?
0063デフォルトの名無しさん2009/01/10(土) 16:45:27
>>62
馬鹿?その先が面倒だろ
WM_〜や構造体を定義しなくてはならないしポインタへのアクセスだってあるだろ
素直にWin32で作った方が楽だよ
0064デフォルトの名無しさん2009/01/10(土) 16:47:11
派生クラスでWndProcオーバーライドするだけなのにWinAPIと大差無いとか言われてもねえ
0065デフォルトの名無しさん2009/01/10(土) 16:48:27
<STOP> スレ違い ここまで <STOP>
0066デフォルトの名無しさん2009/01/10(土) 16:50:36
話を理解してない馬鹿が多くて困るぜ
0067デフォルトの名無しさん2009/01/10(土) 16:52:35
<STOP> スレ違い ここまで <STOP>
0068デフォルトの名無しさん2009/01/10(土) 16:53:38
凝った事をしようとすると低レベルAPIの方が楽なのは当然じゃん。
これだから頭固いオッサンは困るんだよ。
0069デフォルトの名無しさん2009/01/10(土) 17:00:01
<STOP> スレ違い ここまで <STOP>
0070デフォルトの名無しさん2009/01/10(土) 17:01:29
スレ違いだからやめろというのは分かるが1レス置きに書かなくてもなぁ・・・
0071デフォルトの名無しさん2009/01/10(土) 17:02:07
ageちゃったごめん
0072デフォルトの名無しさん2009/01/10(土) 17:02:24
お、盛り上がってるなw

MAX_PATH vs 長いファイル名
Win32 vs .NET

この辺りはもはや定番だな
0073デフォルトの名無しさん2009/01/10(土) 17:04:09
もうだめだこのスレ
0074デフォルトの名無しさん2009/01/10(土) 17:08:40
ファイルサイズだけを取得したい場合
GetFileSizeを使うよりFindFirstFileを使った方が効率的なのでしょうか?
0075デフォルトの名無しさん2009/01/10(土) 17:10:09
もうだめだこのスレ
0076デフォルトの名無しさん2009/01/10(土) 17:11:27
もうだめだこのスレ
0077デフォルトの名無しさん2009/01/10(土) 17:13:12
>>74
何を効率化したいの?実行時間?コードサイズ?書く手間?
実際に両方やってみりゃいいじゃん
0078デフォルトの名無しさん2009/01/10(土) 17:15:01
>>77
実行時間です
0079742009/01/10(土) 17:42:42
とりあえず、API呼ぶ回数が少なくて済むFindFirstFile使うことにしました
0080デフォルトの名無しさん2009/01/10(土) 17:50:30
呼ぶ回数が少なくても遅くなったら意味なし

実際どうかは知らんが
0081デフォルトの名無しさん2009/01/10(土) 17:50:41
というか共有違反でオープンできない可能性を考慮するとFindFirstFileが妥当なんだが。
0082デフォルトの名無しさん2009/01/10(土) 18:07:38
>>80
そこが知りたくて質問してみたんだ
誰か知っている人いないかな

>>81
ファイルサイズを知るって事だけが目的妥当そうですね
今作っているのはサイズ取得後そのファイルをMoveFileするので
先に共有違反とかがわかるのも良いかもしれない
まあ、自分で使うツールを作っているので細かいのはどっちでも良いか
0083デフォルトの名無しさん2009/01/10(土) 18:10:19
ケースバイケースか。普通はFindFirstFileだろうが、こんな落とし穴が。
ttp://support.microsoft.com/kb/961110
0084デフォルトの名無しさん2009/01/10(土) 18:10:31
コーディングの手間を考えたらFindFirstFile()一択だな

手間=バグの入る余地が増える
0085デフォルトの名無しさん2009/01/10(土) 18:13:34
>>83
そんな問題があるのか!
これから使うときは気をつける必要があるな
0086742009/01/10(土) 18:19:05
>>83
NTFSログファイルのサイズを増やすと発生しにくくなるって書いてあるけど
HDD残り500Mくらいで使ってるから発生しやすいのかな
とりあえず、ファイルサイズがつじつま合わなくなったらこれを疑ってみます
0087デフォルトの名無しさん2009/01/10(土) 18:36:12
>>86
>>83のリンク先にあるように、コマンドプロンプトから
chkdsk C: /L
で現在/最大のログサイズが分かる
0088デフォルトの名無しさん2009/01/10(土) 18:44:21
また「仕様という名のバグ」か。
0089742009/01/10(土) 18:46:45
>>87
現在のログ ファイル サイズは 65536 KB です。
このボリュームの既定のログ ファイル サイズは 65536 KB です。
と言われた俺はこの現象出る可能性大!?
0090デフォルトの名無しさん2009/01/10(土) 18:50:39
逆にどんな風に出るか動作確認が出来る

と考えればおk!

うちのDドライブもそうなってたけど<満タン
0091832009/01/10(土) 18:50:42
いや、単なるバグだろ。まったくなにやってんだっての。
0092デフォルトの名無しさん2009/01/10(土) 18:52:04
>>89-90
規定=初期設定(パーティション作成直後)だろ。
自分でchkdsk /Lで変えない限り規定のままだったはず。
0093デフォルトの名無しさん2009/01/10(土) 19:00:32
FindFirstFileはファイル時刻の更新で時差が出るから
現在の正確な情報はGetFileInformationByHandleで取れ
って結構前からMSDNに載ってたはずだが
邦訳MSDNには載ってない謎
0094デフォルトの名無しさん2009/01/10(土) 19:03:32
ごめん時刻に限らず全部だった
0095902009/01/10(土) 19:04:24
>>92
残念、うちのCドライブは
現在のログ ファイル サイズは 54512 KB です。
このボリュームの既定のログ ファイル サイズは 65536 KB です。
と出てる
0096デフォルトの名無しさん2009/01/10(土) 20:38:06
>>95
何らかのソフトがログファイルのサイズを変えたのだろ
市販のデフラグソフトとか
0097デフォルトの名無しさん2009/01/10(土) 20:41:30
あと、パーティションの空き領域が不足したらMFTやメタファイルの予約領域が縮小されるから
それも関係してるかもな
0098902009/01/10(土) 20:42:35
>>96
mjd!?

うわぁ、分かりづらい仕様だな・・・
てか、それならchkdskのあの表示は意味無いじゃん

結局GetFileSize()の方が安全ってことだな
0099デフォルトの名無しさん2009/01/10(土) 20:57:49
パーティションサイズの0.5%と65536KBの小さい方が既定のサイズになってる気がする。
0100デフォルトの名無しさん2009/01/10(土) 23:00:31
fseek(mF,0,SEEK_END);
mSize = ftell(mF);
fseek(mF,0,SEEK_SET);

でやあああああああああああ!
0101デフォルトの名無しさん2009/01/10(土) 23:06:04
フォルダの監視を行う処理を作ろうと思っているのですが、
ファイルが削除されたのはプログラム内でフォルダの直前の情報を保存しておいて
比べるしかないですか?
0102デフォルトの名無しさん2009/01/10(土) 23:11:58
なんかあったぞ、と俺の記憶が言っているが
それが何を使えばいいかは覚えてないw
0103デフォルトの名無しさん2009/01/10(土) 23:14:40
FindFirstChangeNotification
これかなぁ?
おかしい・・・たしかあった気がするがまるで記憶がないw
0104デフォルトの名無しさん2009/01/10(土) 23:15:59
ReadDirectoryChangesAだろ
0105デフォルトの名無しさん2009/01/10(土) 23:22:47
A なんかないだろ
0106デフォルトの名無しさん2009/01/10(土) 23:26:45
検索したら7件でてきたw
Aとったら3件www

Wがデフォなのか。
0107デフォルトの名無しさん2009/01/10(土) 23:36:52
WがついてるくせにAが無いという変なAPI
実はWatchの略なのか?
0108デフォルトの名無しさん2009/01/10(土) 23:40:40
知らレス
0109デフォルトの名無しさん2009/01/10(土) 23:52:20
W=(笑)にきまってるだろjk
0110デフォルトの名無しさん2009/01/11(日) 00:10:08
知らないならレスしないでください。ウザイだけです。
0111デフォルトの名無しさん2009/01/11(日) 00:11:50
知らレスウザです。
0112デフォルトの名無しさん2009/01/11(日) 00:13:11
srud
0113デフォルトの名無しさん2009/01/11(日) 00:14:19
srud( >>109 )
0114デフォルトの名無しさん2009/01/11(日) 00:16:20
std::srud(const Res& uza);
0115デフォルトの名無しさん2009/01/11(日) 00:30:08
新規APIのうち、かつて9xと共通だったコンポーネントはWのみで、
最初からNTのみのコンポーネントはWが無くてLPCWSTRとかキメ打ちなんだよ。
今俺が考えたんだけどね。
0116デフォルトの名無しさん2009/01/11(日) 00:32:05
srud( >>115 )
0117デフォルトの名無しさん2009/01/11(日) 00:40:15
何か面白そうなのが来た。

Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1: BETA
http://www.microsoft.com/downloads/details.aspx?FamilyID=A91DC12A-FC94-4027-B67E-46BAB7C5226C&displaylang=en
0118デフォルトの名無しさん2009/01/11(日) 00:44:09
マイクロソフトCEO、次期OSは「最高のウィンドウズ」と
http://www.cnn.co.jp/science/CNN200901090016.html
> 現行OS「Vista」の改良は中止する方針のもようだ。
0119デフォルトの名無しさん2009/01/11(日) 00:45:44
Vista厨涙目\(^o^)/
0120デフォルトの名無しさん2009/01/11(日) 01:08:45
っていか新機能は新しいバージョンにしか載せないというのはいつも通りのことだろ。
0121デフォルトの名無しさん2009/01/11(日) 01:10:29
GetPrivateProfileStringって大きすぎるバッファを指定すると読み込めなくなるの?
98seで動かしてたら0x000000ffの大きさのバッファなら受け入れてくれたのに0x00010000の大きさのバッファ指定したら値をバッファに格納してくれなくなった……

16の遺産だからだろうか?
0122デフォルトの名無しさん2009/01/11(日) 01:13:11
レジストリエントリは最大サイズがあった気がするが
0123デフォルトの名無しさん2009/01/11(日) 01:25:31
多分、0x000100ffなら動くと思うよ。w

http://support.microsoft.com/kb/78346/EN-US/
If an application uses the standard Windows application program
interface (API) calls to access the .INI files, the limit is 64K.
Examples of these standard API calls are GetPrivateProfileString()
and WritePrivateProfileString().
0124デフォルトの名無しさん2009/01/11(日) 01:25:32
今時GetPrivateProfileなんて使うなよ
0125デフォルトの名無しさん2009/01/11(日) 02:28:59
そんな制限9xだけだろ
0126デフォルトの名無しさん2009/01/11(日) 02:31:45
MoveFile("\\\\remote\\file.txt", "\\\\remote\\file2.txt");
ってやった場合remoteから一回実行したPCにファイルデータが送られて
その後またremoteに書き込むの?
0127デフォルトの名無しさん2009/01/11(日) 11:16:47
でかいファイルで試してネットワークトラヒックでも監視すれば?
0128デフォルトの名無しさん2009/01/11(日) 13:17:48
トラヒック
0129デフォルトの名無しさん2009/01/11(日) 13:29:52
ディジタル
0130デフォルトの名無しさん2009/01/11(日) 13:32:41
>>128
あなたは知らないのだろうけど
通信業界では、トラヒックという言葉を使うのだそうですよ。
0131デフォルトの名無しさん2009/01/11(日) 13:34:23
ヒューズ
0132デフォルトの名無しさん2009/01/11(日) 13:39:10
>>127-131
黙れ
0133デフォルトの名無しさん2009/01/11(日) 13:42:06
知らレスウザです。
0134デフォルトの名無しさん2009/01/11(日) 13:46:22
srud(>>130);
0135デフォルトの名無しさん2009/01/11(日) 14:36:04
もうだめだこのスレ
0136デフォルトの名無しさん2009/01/11(日) 14:42:31
元からだろ。
0137デフォルトの名無しさん2009/01/11(日) 15:01:21
知らないならレスしないでください。ウザイだけです。
0138デフォルトの名無しさん2009/01/11(日) 16:48:52
>>132.LifeState = Life::DEATH;
0139デフォルトの名無しさん2009/01/11(日) 17:01:40
srud( mdks ){
mkdr();
}
0140デフォルトの名無しさん2009/01/11(日) 18:27:38
デスクトップのタスクバーを除いた作業領域の大きさを求めるのにはどのようにすればいいのでしょうか。
画面サイズを求めるのは簡単にできたのですが・・・
0141デフォルトの名無しさん2009/01/11(日) 18:33:30
polygonを利用したいのですが、ベクターで動的配列として確保を行って渡したところ変換できない。
というエラーが出てしまうのですがVectorで動的に確保した物は配列として渡す事はできないのでしょうか?
0142デフォルトの名無しさん2009/01/11(日) 18:33:37
教えてあげないよっ!ジャン!
0143デフォルトの名無しさん2009/01/11(日) 18:34:47
>>140
タスクバーのサイズも取得して引けばいいじゃない
0144デフォルトの名無しさん2009/01/11(日) 18:37:20
>>141
先頭が大文字だからSTLのvectorとは違うんだろうな。
Vectorとやらの仕様による。
0145デフォルトの名無しさん2009/01/11(日) 18:41:18
>>144
C++の標準ライブラリの方のvectorです。。。
先頭大文字にしちゃうの癖なんです、すいません。。。
0146デフォルトの名無しさん2009/01/11(日) 18:41:43
>>140
SystemParametersInfoとSPI_GETWORKAREAのことかな。
0147デフォルトの名無しさん2009/01/11(日) 18:42:19
>>141
&v[0]のようにする
0148デフォルトの名無しさん2009/01/11(日) 18:43:35
>>146
なに教えてんだよ!
このスレは教えちゃいけないんだぞ!
0149デフォルトの名無しさん2009/01/11(日) 18:44:40
>>147
できました、ありがとうございます
0150デフォルトの名無しさん2009/01/11(日) 18:48:29
>>148
さすがの俺もその発言は引くわぁ
0151デフォルトの名無しさん2009/01/11(日) 18:56:41
>>148
それはないわ
0152デフォルトの名無しさん2009/01/11(日) 18:58:32
.NETに移行させようと必死になってないでどんどん教えろカス
0153デフォルトの名無しさん2009/01/11(日) 18:59:19
うんこに餌を与えないで下さい
0154デフォルトの名無しさん2009/01/11(日) 19:08:08
スレ違いを咎めるならむしろvectorの方だと思うけどw
0155デフォルトの名無しさん2009/01/11(日) 19:12:09
今時SystemParametersInfoなんかで手抜きするな。
ちゃんとEnumDisplayMonitors+GetMonitorInfo使え
0156デフォルトの名無しさん2009/01/11(日) 19:29:07
>>155
Windows95で動かないので却下
0157デフォルトの名無しさん2009/01/11(日) 19:33:13
今時、WIndows 95かよ。。。
0158デフォルトの名無しさん2009/01/11(日) 19:33:44
Iにつっこむの禁止
0159デフォルトの名無しさん2009/01/11(日) 20:30:48
Iをつっこむのは?
0160デフォルトの名無しさん2009/01/11(日) 20:31:36
>>156
両方作っておいて、環境によってどっちかを選ぶようにすればいい。
0161デフォルトの名無しさん2009/01/11(日) 20:31:43
Wii ndows 95
0162デフォルトの名無しさん2009/01/11(日) 20:43:12
( ゚∀゚)アハハ八八ノヽノヽノヽノ \ / \/ \
0163デフォルトの名無しさん2009/01/11(日) 21:49:51
お前ら脱線しすぎ!

いいぞもっとやれw
0164デフォルトの名無しさん2009/01/11(日) 22:00:32
まぁ、WiiでWindows動かすのは誰かがやるだろうな
ガワだけだろうけど。
0165デフォルトの名無しさん2009/01/11(日) 22:32:16
退屈じゃのう
0166デフォルトの名無しさん2009/01/11(日) 22:35:52
>>165
お前が引き篭もってるからだろ
働けクズ
0167デフォルトの名無しさん2009/01/11(日) 22:41:58
質問いいですか?
CopyMemoryとmemcpyが同じように思えるのですが、どちらを使うのがいいの?
0168デフォルトの名無しさん2009/01/11(日) 23:09:45
少なくともWin32/Win64では同じだから好きにしろ
0169デフォルトの名無しさん2009/01/11(日) 23:17:52
同じですか!ありがとうございました!
0170デフォルトの名無しさん2009/01/11(日) 23:31:46
知ってるならレスしないで下さい話が終わってしまいます
0171デフォルトの名無しさん2009/01/11(日) 23:45:17
じゃあ・・・
同じ内容の関数がなぜ二つあるのですか?初心者が混乱してしまいます。
0172デフォルトの名無しさん2009/01/11(日) 23:49:50
初心者がどちらかを発見できれば使えるだろ
0173デフォルトの名無しさん2009/01/11(日) 23:52:08
memcpy_s使えよ
0174デフォルトの名無しさん2009/01/12(月) 00:03:03
どうでもいい話としては環境とかランタイムライブラリによって
CopyMemoryとmemcpy の実行速度が違うことがあるね。
コピーのループ内で一度にmovされるデータ長が違うとか
そんなもんだろか?よくわからん。
0175デフォルトの名無しさん2009/01/12(月) 00:05:18
ベンチマークしたら差はなくなると思うよ
0176デフォルトの名無しさん2009/01/12(月) 00:08:30
そもそも
#define CopyMemory RtlCopyMemory
#define RtlCopyMemory(Destination,Source,Length) memcpy((Destination),(Source),(Length))
なんだけどな。
0177デフォルトの名無しさん2009/01/12(月) 00:10:54
>>176
MS以外のCだと、また違うことがあるのさ
0178デフォルトの名無しさん2009/01/12(月) 00:13:02
へえ、どれ?
0179デフォルトの名無しさん2009/01/12(月) 00:17:21
SDKで定義されてるのに違うとかw
0180デフォルトの名無しさん2009/01/12(月) 01:36:32
#define RtlCopyMemory memcpy
#define CopyMemory RtlCopyMemory

ちなみにMinGWでも同じ
0181デフォルトの名無しさん2009/01/12(月) 19:25:26
VBなんかだと実体をRtlMoveMemoryとしてCopyMemoryと宣言しているものをたまに見かける。
0182デフォルトの名無しさん2009/01/12(月) 19:54:37
VBはC++と違って、本当にAPIを呼ばざるを得ないからな。

って、今気づいたのだが、
もしかして、Windows7用のSDK付属のDocumentExplorerには
ページ単位でのホイールスクロールバグの修正が入った?
何か普通に落ちなくなってる。
0183デフォルトの名無しさん2009/01/12(月) 20:05:36
VBなんて糞言語どうでもいいよ
それより、違うことがあるMS以外のCマダー?>>177
0184デフォルトの名無しさん2009/01/12(月) 20:11:07
>>183
Borland C++ Compiler は ifdef になってるから別のものになる可能性があるかも

こんなの
#define CopyMemory RtlCopyMemory

NTSYSAPI
VOID
NTAPI
RtlCopyMemory (
VOID UNALIGNED *Destination,
CONST VOID UNALIGNED *Source,
SIZE_T Length
);
0185デフォルトの名無しさん2009/01/12(月) 20:13:22
VCでも、Alpha だか MIPS ではそうじゃなかったっけ?
0186デフォルトの名無しさん2009/01/12(月) 20:23:42
alignが必要なCPUではRtlCopyMemoryが用意されている
x86はそんなの必要無いからCRTのmemcpyと等価になっている
0187デフォルトの名無しさん2009/01/12(月) 23:01:55
ツールバーのTBSTYLE_LISTスタイルの有無を動的に切り替えたいんだけど
反映させるにはどうしたらいい?
全然うまくいかない、教えてエロイ人

//D
void SetTextPosition(HWND hToolbar, bool ListStyle) {
auto style=GetWindowLongPtr(hToolbar, GWL_STYLE);

if(ListStyle) {
style |= TBSTYLE_LIST;
} else {
style ^= TBSTYLE_LIST;
}

SetWindowLongPtr(hToolbar, GWL_STYLE, style);
SetWindowPos(hToolbar, null, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
}
0188デフォルトの名無しさん2009/01/12(月) 23:04:57
autoなんて型あるんだ
0189デフォルトの名無しさん2009/01/12(月) 23:07:27
>>188
コメントでD言語と言っているじゃないか。
0190デフォルトの名無しさん2009/01/12(月) 23:08:56
あくまで Win32API のスレでしかないから
言語は不問なんだな。
今まで気にした事もなかったけど。
0191デフォルトの名無しさん2009/01/12(月) 23:16:36
C++はautoとまともなfor eachを早く導入しる!

・・・後者はVC2005の独自拡張で使えるけどw
0192デフォルトの名無しさん2009/01/12(月) 23:18:06
>>191
前者はC++0xを待て。もうそろそろのはずだ。
01931872009/01/12(月) 23:37:57
自己解決しました
みんな、反応してくれてありがとう

// 報告と参考までに
// 参照 ttp://books.google.com/books?id=8LSjRRGcXqgC&pg=PA175&vq=TBSTYLE_LIST&dq=TBSTYLE_LIST+SetWindowLong&as_brr=3&hl=ja&source=gbs_search_s&cad=0
void SetTextPosition(HWND hToolbar, bool ListStyle) {
auto style=GetWindowLongPtr(hToolbar, GWL_STYLE);

if(ListStyle) {
style |= TBSTYLE_LIST;
} else {
style &= ~TBSTYLE_LIST;
}

SendMessage(hToolbar, TB_SETSTYLE, 0, style);
}
0194デフォルトの名無しさん2009/01/13(火) 00:20:57
言語というか演算子の問題だから本当はスレ違いだけどな

まあ初心者の頃は if(style & TBSTYLE_LIST) style ^= TBSTYLE_LIST; なんて書いてたがw
0195デフォルトの名無しさん2009/01/13(火) 14:26:40
srud(>>194);
0196デフォルトの名無しさん2009/01/13(火) 17:29:20
質問です。

ウインドウの上をドラッグしたイベントをもらおうと思い

WM_LBUTTONDOWN にて、SetCapture + ドラッグ開始と解釈
WM_LBUTTONUP にて ReleaseCapture + ドラッグ終了と解釈
とやっています。

これで基本的にはウインドウ外にマウスポインタが行ってしまっても作動し、満足なのですが、
どうやらドラッグ中にAlt+Tabなどでアクティブなウインドウを変えられてしまうと、WM_LBUTTONUPが届かないようです。

これに対処するには、WM_ACTIVEなどにも対処しなければならないのでしょうか?
0197デフォルトの名無しさん2009/01/13(火) 19:19:15
>>196
ReleaseCaptureされるから当然メッセージは来なくなる。
問題になるならWM_CAPTURECHANGEDで処理する。
0198デフォルトの名無しさん2009/01/13(火) 21:33:00
ショートカット作るとアイコンにショートカットのマークがつくんですが、
このアイコンを自分で作ろうと思ったらどうしたらいいんでしょうか。

0199デフォルトの名無しさん2009/01/13(火) 22:31:53
SetParentでトップレベルのボタンコントロールを同プロセス内のウィンドウを親に設定したいんですが、
どうも関数実行後も親ウィンドウをNULLで返してきます。実際表示などもされてません。
こういうことはできないんですか?
0200デフォルトの名無しさん2009/01/13(火) 22:52:01
InterlockedExchangeAdd関数の日本語版ドキュメントを見て
「加数じゃなくて被加数じゃないのか?」「原子加算って何だ?」と突っ込んでいたが
それ以上にInterlockedExchange関数のドキュメントが突っ込み所満載だった件
0201デフォルトの名無しさん2009/01/13(火) 22:54:11
>>198
IShellLinkでググレ。
0202デフォルトの名無しさん2009/01/13(火) 23:00:44
>>201
ショートカットを作りたいんじゃなくてアイコンを作りたいんです><
0203デフォルトの名無しさん2009/01/13(火) 23:12:37
アイコンエディタってこと・・・? 違うよな・・・
0204デフォルトの名無しさん2009/01/13(火) 23:15:12
>>199
ヘルプのSetParentのとこに一杯書いてある注意書きは全部読んだ?
0205デフォルトの名無しさん2009/01/13(火) 23:18:09
>>202
ICONDIR、ICONDIRENTRYでググれ
0206デフォルトの名無しさん2009/01/13(火) 23:48:42
>>204読みました。スタイルもその通り変更するようにしてるんですが・・・

HWND Hoge::handleがある。

HWND Hoge::setParent(HWND neo){
  if(handle == NULL)return NULL;
  LONG flag = ::GetWindowLongPtr(handle,GWL_STYLE);
  HWND old;
  HWND DESKTOP = ::GetDesktopWindow();
  if( neo == NULL && ::GetAncestor(handle,GA_PARENT) != DESKTOP ){//子をトップレベルにする
    old=::SetParent(handle,NULL);
    ::SetWindowLongPtr(handle , GWL_STYLE , (flag&~WS_CHILD)|WS_POPUP );
  }else
  if( neo != NULL && ::GetAncestor(handle,GA_PARENT) == DESKTOP ){//トップレベルを子にする
    ::SetWindowLongPtr(handle , GWL_STYLE , (flag&~WS_POPUP)|WS_CHILD );
    old=::SetParent(handle,neo);
  }else
  {
    old=::SetParent(handle,neo);
  }
  return old;
}
0207デフォルトの名無しさん2009/01/13(火) 23:50:12
>>202
矢印アイコンはシェルが自分のリソースを表示してるものなのでWin32APIでは
変更できず、該当の機能をサポートするツールではshellの内部リソースを無理やり
書き換えるとかしてるらしい
(shell32.dllの30番あたり)

しかもどこのタイミングかの Windows のセキュリティアップデートで、今では
それもままならないとかの噂がある
0208デフォルトの名無しさん2009/01/13(火) 23:52:56
C:\Windows みたいなパスを
\\?\C:\Windows の形式に変換するAPIってありませんでしたっけ?
なんか前見かけた記憶があるんだけど、今探すと見つからない。
気のせいだったのだろうか。
0209デフォルトの名無しさん2009/01/13(火) 23:54:18
>>208
なんだそれ
正規表現使えばいいんじゃね?
0210デフォルトの名無しさん2009/01/14(水) 00:28:01
_stprintf(str,_T("\\\\?\\%s"),path);
でいいだろ
0211デフォルトの名無しさん2009/01/14(水) 00:30:06
いや、ちゃんとネットワークパスの場合は UNC 付けたりとか
してくれたんじゃないかと思って。
_stprintf(str,_T("\\\\?\\%s"),path); これで決め打ちしちゃっていいのかな?
0212デフォルトの名無しさん2009/01/14(水) 01:25:16
InterlockedCompareExchange関数の日本語版ドキュメントに至っては
引数の型、戻り値の型、引数の要約すら大嘘

日本語版ドキュメントがダメなのって資料不足だけを指してたわけじゃないのね
誇張された話だとばかり思ってたが反省するわ
0213デフォルトの名無しさん2009/01/14(水) 01:46:32
.NET Frameworkの方の翻訳は意外とまとも。
以前英語版と比べてみたが遜色なかったので日本語版読んでる。
Win32APIは英語版しか信用できん。
0214デフォルトの名無しさん2009/01/14(水) 01:54:17
>>212
昔はPVOIDで宣言されてたんだよ
そんな事も知らないゆとりは黙っててね
0215デフォルトの名無しさん2009/01/14(水) 02:01:13
>>212
ばーかw
0216デフォルトの名無しさん2009/01/14(水) 02:14:23
ていうか日本語MSDNは基本的にWin98時代から更新止まってるので
その時代の英語版が間違っててそのままになってるのも結構ある

そもそも.NET関係しか翻訳のメンテしないのがおかしい
0217デフォルトの名無しさん2009/01/14(水) 06:40:57
大人の事情です
0218デフォルトの名無しさん2009/01/14(水) 08:05:20
嘘だらけのMSDNで日本の生産性を下げる→アメリカ人ウハウハ
0219デフォルトの名無しさん2009/01/14(水) 08:17:01
MSKKが仕事しないのは有名な話
いや日本語版をMSKKが管理してるかどうかは知らんがMSKKが悪いって事にしとけ
0220デフォルトの名無しさん2009/01/14(水) 08:23:59
MSKKは単なる商社ですから
0221デフォルトの名無しさん2009/01/14(水) 09:12:28
VS2008スレにあったけど、アンケートやってるぞ
http://c2.microsoft.fr/49ae54c30ecc4382aeba1841073ee06b/?elng=1041

最後のほうにドキュメントについての項目がある
俺はフリーエリアに中途半端なドキュメントは有害って書いたよ
0222デフォルトの名無しさん2009/01/14(水) 09:26:54
>>202
SHGetFileInfoとSHGFI_LINKOVERLAYでなんとかならんか
0223デフォルトの名無しさん2009/01/14(水) 10:13:10
>197
ありがとうございました。
無事できました
0224デフォルトの名無しさん2009/01/14(水) 11:33:01
>>221
VS2008なんて使ってねーし・・・
0225デフォルトの名無しさん2009/01/14(水) 16:16:55
>>206分かる人いませんか・・・?
0226デフォルトの名無しさん2009/01/14(水) 16:30:16
neoって何?
0227デフォルトの名無しさん2009/01/14(水) 17:44:15
#ifdef _WIN32

って、32bitOS用としてコンパイルするときは、って意味ですか?
64bitOS用としてコンパイルするときはここは通らないと思ってOK?
0228デフォルトの名無しさん2009/01/14(水) 17:50:14
>>227
64でも通る

以下MSDNより
_WIN32 Defined for applications for Win32 and Win64. Always defined.
0229デフォルトの名無しさん2009/01/14(水) 17:52:55
>>227
64ビットでもコンパイルの対象にされる。
_WIN32は(UnixやMacではなく)Windowsであるという意味だと捉えるんだ。
Win64を除外してWin32のみを対象にしたければ、#ifndef _WIN64とすること。
http://msdn.microsoft.com/en-us/library/aa489554.aspx
0230デフォルトの名無しさん2009/01/14(水) 17:55:13
互換性考えると仕方ないが、いろいろともにょもにょ来るな。
0231デフォルトの名無しさん2009/01/14(水) 17:57:16
>>228
>>229
ども。
もひとつおねがいします。

#ifdef _WIN32
#include <pshpack1.h>
#endif

typedef struct tagHogestruct
{
...
}

#ifdef _WIN32
#include <poppack.h>
#endif

この場合、32bitでも64bitでもパッキングは1でいいんですか?
02322312009/01/14(水) 18:03:47
ぐえ、こんなのもあった

#if !defined(_WIN64)
#include <pshpack1.h>
#endif

↑これは32bitだけですよね……
0233デフォルトの名無しさん2009/01/14(水) 18:06:43
>>226新しい親ウィンドウハンドルです。
0234デフォルトの名無しさん2009/01/14(水) 20:39:27
現在フック処理がいくつ走っているか調べることは可能でしょうか?
0235デフォルトの名無しさん2009/01/14(水) 23:10:46
ツールバーとステータスバーをウィンドウ上部に付けたいのですが、
そのままだと重なって表示されてしまいます。

ツールバーの直下にステータスバーが付いて2段になるような
回避法などありますでしょうか。

APIはCreateToobarExとCreateStatusWindowを使い
属性にはCCS_TOPを指定してウィンドウ上部にくるようにしています。
0236デフォルトの名無しさん2009/01/14(水) 23:48:04
どっちを上に置くべきかプログラム書く人にしかわからんのだから、おとなしく座標で指定する。




と俺は思う。
0237デフォルトの名無しさん2009/01/15(木) 01:25:10
無駄な改行ウザイ
0238デフォルトの名無しさん2009/01/15(木) 01:28:48
srud(236,237);
0239デフォルトの名無しさん2009/01/15(木) 08:49:24
srud関数にそんなオーバーロードがあるとは
0240デフォルトの名無しさん2009/01/15(木) 09:08:02
srud(>>239);
0241デフォルトの名無しさん2009/01/15(木) 11:38:56
スレッドが自然死した時に
GetExitCodeThread()で得られる終了コードは何になりますか?
0242デフォルトの名無しさん2009/01/15(木) 11:43:59
ExitThreadで設定した終了コード、もしくはスレッドプロシージャの返した値のいずれか
02432412009/01/15(木) 11:57:31
>>242 ありがとうございます。 MSDNを見ても分かり辛かったので。
02442412009/01/15(木) 12:05:02
あっ 詳細に聞きたいことを忘れてました。
スレッドプロシージャの戻り値がvoidでreturnした時に
勝手にExitThread()が呼ばれるらしいのですが
その時の終了コードは何になりますか?
度々すみません。
0245デフォルトの名無しさん2009/01/15(木) 12:05:13
自分で調べろと言おうとしたけど、そう言うなら何もう言うまい。
0246デフォルトの名無しさん2009/01/15(木) 12:08:49
_beginthreadで作成したスレッドってこと?
スレッドが終了した瞬間に、そのハンドルが再利用されて、
GetExitCodeが呼ばれる前に違うものを示す可能性があるからやめろと言いたい。
0247デフォルトの名無しさん2009/01/15(木) 13:28:02
_beginthread廃止すればいいのにねぇ
0248デフォルトの名無しさん2009/01/15(木) 13:37:18
_beginthreadの実際のTHREAD_START_ROUTINEである_threadstartの通常の戻り値は0
CreateThreadに無理矢理渡した場合は不定
0249デフォルトの名無しさん2009/01/15(木) 14:44:41
_threadstartの戻り値じゃなくて_endthreadでExitThread(0);してる
0250デフォルトの名無しさん2009/01/15(木) 16:43:45
CreateDialogParam() の第4引数で,作成先ダイアログボックスの WM_INITDIALOG メッセージ
でツリービューウィンドウのハンドルを渡そうと思うのですが,以下のようにしてハンドルを
渡せません? HWND 型(32ビット符号なし整数)を LPARAM (32ビット符号付き整数)にキャストして
逆のキャストをすると値が失われるのですか?

CreateDialogParam(hInst,"IDD_DLOG",hWnd,dlogProc,(LPARAM)hwndTreeView);

dlogProc(…,…,…,LPARAM lp)
{
  HWND hTreeView;
  switch(msg){
    case WM_INITDIALOG:
      hTreeView = (HWND)lp;
      ………
    case …
}

調べると呼び出した時点では"-2"とかの値なのに、呼び出し側では"0"になってます。
第4引数で HWND をわたせないのでしょうか??
0251デフォルトの名無しさん2009/01/15(木) 17:03:05
>呼び出した時点では"-2"
02522502009/01/15(木) 17:07:05
ちなみに、そのツリービューはうまく表示されてるのですが…
0253デフォルトの名無しさん2009/01/15(木) 17:10:32
多分値の確認方法が間違ってて、ちゃんと渡せてるか、最初から間違った値渡してる。
0254デフォルトの名無しさん2009/01/15(木) 18:12:02
>>236
ダイアログに付けるステータスバーやツールバーの位置を
座標単位でずらすのは現時点まで調べた知識では無理のようです。
ステータスバーにMoveWindowなどは効かないようです。

2種類のバーがCCS_TOPで干渉するのは解消できそうにないので
別の方法を考えてみます。
本当にありがとうございました。
0255デフォルトの名無しさん2009/01/15(木) 19:19:32
>>250
CreateDialogParam(hInst,"IDD_DLOG",hWnd,dlogProc,(LPARAM)&hwndTreeView);

dlogProc(…,…,…,LPARAM lp)
{
  HWND hTreeView;
  switch(msg){
    case WM_INITDIALOG:
      hTreeView = (HWND)(*lp);
0256デフォルトの名無しさん2009/01/15(木) 20:40:12
ファイルを出力するプログラムとして以下のソースがあります。

ofstream fout;
string str = "Hello";
string file_name = "a.txt";
wchar_t fn[MAX_PATH];
MultiByteToWideChar(0, 0, file_name.c_str(), -1, fn, MAX_PATH);
fout.open(fn);
fout<<str;
fout.close();

ソースを読んだ限りではofstreamは入力としてUnicodeでないといけないというのは感じますが、
MultiByteToWideCharをなぜ使うかが分かりません。

この関数を使わなければエラーが出るというような場面を教えてください。
0257デフォルトの名無しさん2009/01/15(木) 20:46:35
ウィンドウの外に●を描画したいんですがどうすればできますか?
透明のウィンドウ作ってそこに描画するしかない?
0258デフォルトの名無しさん2009/01/15(木) 20:57:10
>>256
C++のString↓

typedef basic_string<char> string;

見れば分かるがunicodeじゃない
これ以上はC++スレで頼む
02592502009/01/15(木) 20:59:16
>>255 さすが!値で渡さずにアドレスで渡すわけですね。初心者には思いも
つきませんでしたが、、、、やっぱりダメ (TT)とほほ。
ファイル単位の外部変数で渡すと通るんです。Borland C++ なんですが…
0260デフォルトの名無しさん2009/01/15(木) 21:00:41
>>250
dlogProc(HWND hWnd,…,…,LPARAM lp)
{
  HWND hTreeView = (HWND)GetWindowLongPtr(hWnd, DWL_USER);
  switch(msg){
    case WM_INITDIALOG:
      hTreeView = (HWND)lp;
      SetWindowLongPtr(hWnd, DWL_USER, (LONG_PTR)hTreeView);
      ………
    case …
}
こうですかわかりません
0261デフォルトの名無しさん2009/01/15(木) 21:01:37
…値渡しか参照渡しかの問題じゃないと思うよ…
0262デフォルトの名無しさん2009/01/15(木) 21:06:43
>>250
>呼び出した時点では"-2"

32bitだとして0xFFFFFFFE って値のウィンドウハンドルってなくね?
02632502009/01/15(木) 21:20:37
>>260 ありがとうございます。すげ〜〜〜〜〜〜!!! 260で出来ましたよ!!!

でも、最近 Win32API プログラミング始めた自分には分けが分かりません (T^T)
とほほ、先は長い。よろしければ、ごく簡単に解説をお願いできれば?
0264デフォルトの名無しさん2009/01/15(木) 21:23:55
>>262 snprintf(buf,sizeof(buf),"hwndTV-RECV:[%d]",lp);
で強引に出力すると、”919128”でした。(^^;;
0265デフォルトの名無しさん2009/01/15(木) 21:26:49
static HWND hTreeView;
にしなさいとかそういうはなしだったんですか?
0266デフォルトの名無しさん2009/01/15(木) 21:35:36
まさか、WM_INITDIALOG以外のとこでhTreeViewの値を
利用しているというオチか?
02672502009/01/15(木) 21:47:26
>>266 あらら? プロシージャ内変数で WM_INITDIALOG の hTreeView値 を
保存して、case WM_COMMAND: 内で利用しちゃダメなんですか?
0268デフォルトの名無しさん2009/01/15(木) 21:57:14
>>267
だめです。
void f(int x, int y)
{
  int i;
  switch(x){
  case 1: i=y; // 保存
    break;
  case 2: printf("%d", i); //つかう
    break;
  }
}
int main()
{
  f(1,2);
  f(2,0);
}
ってしてるのと同じことです。
0269デフォルトの名無しさん2009/01/15(木) 22:00:13
これ以上はC/C++のスレでお願い。
0270デフォルトの名無しさん2009/01/15(木) 22:08:42
>>269 ?!
ということは、「いったん作られたウィンドウのハンドルは変化し得る」ってことですか?
0271デフォルトの名無しさん2009/01/15(木) 22:10:29
>>270
スコープを抜けたら変数の内容が飛ぶってことをC/C++初心者スレで勉強してからまたこい
0272デフォルトの名無しさん2009/01/15(木) 22:10:46
Windowsの問題ではなくて、C/C++の特質として値が変わりうるので、その理由はC/C++スレで聞いてください。
0273デフォルトの名無しさん2009/01/15(木) 22:18:25
最後に、static 変数にしてもダメなんですか?
0274デフォルトの名無しさん2009/01/15(木) 22:19:48
いいけど本質を理解しないと同じ目に合うぞ
0275デフォルトの名無しさん2009/01/15(木) 22:20:07
>>273
しつこい奴は相手にされなくなるぞ
0276デフォルトの名無しさん2009/01/15(木) 22:29:58
>「いったん作られたウィンドウのハンドルは変化し得る」ってことですか?
ある意味、こういう発想ができるところが怖い。
0277デフォルトの名無しさん2009/01/16(金) 00:53:29
質問
Windowsでマルチスレッドのプログラムを作成しています
複数のスレッドから、int型の値を読み込み&書き換えるときにクリティカルセッションでロックしたほうがいいでしょうか?
int型なので大丈夫だったりしますか?
0278デフォルトの名無しさん2009/01/16(金) 01:01:33
しろ
.netで予めスレッドセーフになってるとかでなければどの型だからとか関係無い
0279デフォルトの名無しさん2009/01/16(金) 01:04:24
>>277
カウンタみたいな単純な加算とかだけなら
InterlockedIncrementとかInterlockedExchangeAddみたいな専用のAPIがある
0280デフォルトの名無しさん2009/01/16(金) 01:04:37
その程度ならInterlocked系で事足りる気もするが、まあした方が無難だろうなあ。
Out-of-orderとか気にしだしたら頭が痛くなるし。
0281デフォルトの名無しさん2009/01/16(金) 01:12:03
>>278-280
レスありがとうございます
Interlocked系関数は初めて知りました。これは便利ですね
0282デフォルトの名無しさん2009/01/16(金) 06:31:09
>>278
.netだってlockとかInterlockedとかあるだろ
0283デフォルトの名無しさん2009/01/16(金) 09:26:28
>int型なので大丈夫だったりしますか

そのint型とやらは何ビットだと思ってるんだ
0284デフォルトの名無しさん2009/01/16(金) 10:15:57
ビット数は関係ない。
0285デフォルトの名無しさん2009/01/16(金) 10:31:53
atomic性が必要かどうかは本人にしか判断できない
volatileだけで十分な場合もある
0286デフォルトの名無しさん2009/01/16(金) 10:59:43
ところで、

lpOldProc = (WNDPROC)GetWindowLongPtr(hwnd,GWLP_WNDPROC);
SetWindowLongPtr(hwnd,GWLP_WNDPROC,(LONG_PTR)SubclassProc);

と

lpOldProc = (WNDPROC)SetWindowLongPtr(hwnd,GWLP_WNDPROC,(LONG_PTR)SubclassProc);

ってどっちがいいの?
前者だとアトミック性が保証されないし、
後者だと SetWindowLongPtr から返ってくるまでに SubclassProc が呼ばれると破綻しそう
0287デフォルトの名無しさん2009/01/16(金) 11:53:40
そのウィンドウが所属するスレッドで呼び出す場合は、両方とも問題ない。
他スレッドのウィンドウなら後者を使って、lpOldProcが有効になるまでSubclassProcを待機させとけばいい。
0288デフォルトの名無しさん2009/01/16(金) 12:13:02
Win32APIのアトミック性って何処に記述されてんの?
0289デフォルトの名無しさん2009/01/16(金) 13:08:53
てか、他スレッドのウィンドウってサブクラス化できたっけ?
0290デフォルトの名無しさん2009/01/16(金) 17:03:00
できるが
0291デフォルトの名無しさん2009/01/16(金) 17:11:07
できます
0292デフォルトの名無しさん2009/01/16(金) 17:17:21
>>290-291
知らないならレスしないでください。ウザイだけです。
0293デフォルトの名無しさん2009/01/16(金) 17:20:23
srud(>>290, >>291);
0294デフォルトの名無しさん2009/01/16(金) 17:33:33
できるかどうかを聞いてるだけじゃんwwwwwwwwwwwwww
0295デフォルトの名無しさん2009/01/16(金) 17:42:58
srud( srud( >>294 ) );
0296デフォルトの名無しさん2009/01/16(金) 17:46:38
sort( srud.begin(),srud.end() );
0297デフォルトの名無しさん2009/01/16(金) 19:56:57
>>292-293
>>295-296
この辺に必死さを感じるw
0298デフォルトの名無しさん2009/01/16(金) 20:02:48
人生にterminateprocessされて死ね
0299デフォルトの名無しさん2009/01/16(金) 20:08:01
TerminateProcessってI/O処理が終わるまで終了できないんだよな
たまにタスクマネージャで殺せないプロセスができて強制リブートする羽目になる
0300デフォルトの名無しさん2009/01/16(金) 21:02:01
すいませんお知恵をお貸し下さい

特定の形式のクリップボードのデータをクリアしたいのですが
EmptyClipboard()だと全部消えてしまうみたいで、例えばCF_TXTのみをクリア
するにはどうすればよいでしょうか?
0301デフォルトの名無しさん2009/01/16(金) 21:33:55
全部持ってきて特定のだけはずして登録しなおすとか?
0302デフォルトの名無しさん2009/01/16(金) 21:36:25
特定の形式だけクリアしたいなんて発想が間違い
例えばCF_TEXTをセットするとOSによって自動的にCF_UNICODETEXTやCF_OEMTEXTなどもセットされる
0303デフォルトの名無しさん2009/01/17(土) 00:37:48
>>277
パフォーマンスは出ないと思うけど、
MethodImplOptions.synchronizedをプロパティのget/setメソッドに付けるのが一番手っ取り早い
0304デフォルトの名無しさん2009/01/17(土) 00:49:34
スレッド的にはスゲー頓珍漢なこと言ってるような
0305デフォルトの名無しさん2009/01/17(土) 00:55:01
P/Invokeもあるしアリかな
0306デフォルトの名無しさん2009/01/17(土) 01:21:56
volatileで十分
03073002009/01/17(土) 08:32:07
>>301
なるほど その手がありましたね。 それでやってみます。
>>302
ありがとう

情報Thanksでした!
0308デフォルトの名無しさん2009/01/17(土) 20:00:40
フォーカスがあたると枠線がでてくるボタンを
ダイアログに書きたいのですがいい方法ありませんでしょうか?
(ツールバーとかによくあるボタン)

枠線くらいなら自前で書けるのですが、
押されたときの窪みとか背景色が変更された時の事を考えると
自前では辛いので何か案があればよろしくお願いします。

こういうの↓
ttp://upload.fam.cx/cgi-bin/img-box/3wj90117195648.jpg
0309デフォルトの名無しさん2009/01/17(土) 20:08:56
押された状態の絵を用意して
表示する絵を変えればいいだけ。
0310デフォルトの名無しさん2009/01/17(土) 20:10:11
なんて頭がいいんだ!
0311デフォルトの名無しさん2009/01/17(土) 20:56:22
テーマ描画用のAPIかね。
0312デフォルトの名無しさん2009/01/17(土) 22:52:19
ボタンの絵を描くAPIがあったはずだけど、そういう話ではないのかも
0313デフォルトの名無しさん2009/01/17(土) 23:40:56
DVI で接続されているモニタの入力切替をコンピュータから行うことってできますか?
0314デフォルトの名無しさん2009/01/18(日) 00:06:38
>>312
んー、BMP用意するのも考えたんですが、
それだと背景の色が変わったら
ボタンの背景色も変えないといけないわけで・・・
もっと賢い方法ないですかなぁ・・・
0315デフォルトの名無しさん2009/01/18(日) 00:15:28
>>314
8bppカラーで良いなら、LoadImageのLR_LOADMAP3DCOLORSを利用する手がある。
0316デフォルトの名無しさん2009/01/18(日) 00:18:51
このへん
ttp://msdn.microsoft.com/en-us/library/cc656671(VS.85).aspx
0317デフォルトの名無しさん2009/01/18(日) 00:21:11
いっそのことツールバーをボタンの代わりにつかったら?
0318デフォルトの名無しさん2009/01/18(日) 07:38:09
ボタンを描くんじゃなくてButtonコントロール使えばいいだろ
0319デフォルトの名無しさん2009/01/18(日) 13:04:32
質問です。
よくテキストエディタなんかであるマウスのドラッグによる画面スクローリングは
どのように実現してるのでしょうか。
0320デフォルトの名無しさん2009/01/18(日) 13:36:45
ドラッグしたらスクロールするようにしている
0321デフォルトの名無しさん2009/01/18(日) 18:07:23
CreateDialogParam() で作ったダイアログ・ウィンドウのエディットボックス・プロシージャを
サブクラス化して、リターンキーが押されたら同じウィンドウの [実行] ボタンにメッセージを
送って動かしたいのですが、動きません。

自分自身にメッセージを送っても動かないのでしょうか?
0322デフォルトの名無しさん2009/01/18(日) 18:32:56
ダイアログはなー
0323デフォルトの名無しさん2009/01/18(日) 18:54:56
その [実行] ボタンとやらのコントロールIDを IDOK にしとけばEnterに反応するだろ
0324デフォルトの名無しさん2009/01/18(日) 22:42:58
メニューにサブメニューがある時の▲を描画するための
APIとかあれば教えてください
今のところ自分で▲のアイコン作って描画してます
0325デフォルトの名無しさん2009/01/18(日) 22:44:15
これのこと?
ttp://homepage2.nifty.com/c_lang/sdk4/sdk_308.htm
0326デフォルトの名無しさん2009/01/18(日) 23:03:27
素直に文章を解釈するなら、DrawFrameControlじゃないかなあ。
DFCS_MENUARROW辺りを使えば描画できそう。
0327デフォルトの名無しさん2009/01/18(日) 23:19:52
Marlettフォントあたりにあるからそれで描画しとけ
03283242009/01/19(月) 02:07:19
>>326
それです。サンクス!!
0329デフォルトの名無しさん2009/01/19(月) 22:16:12
Vista+IMAPI v1を使用してディスクアットワンスで書込む
方法はあるでしょうか?
※最終的にXPで使いたいためv1を使用しています
0330デフォルトの名無しさん2009/01/20(火) 01:29:02
FindFirstChangeNotification
でファイルを検地して遊んでるんですけど
一回のファイル変更で2度検知に引っかかっているようなんですが
どんな場合にありえるのでしょうか?
0331デフォルトの名無しさん2009/01/20(火) 01:31:35
何のフラグ指定してんの?
0332デフォルトの名無しさん2009/01/20(火) 01:51:49
FILE_NOTIFY_CHANGE_FILE_NAME|FILE_NOTIFY_CHANGE_SIZE
0333デフォルトの名無しさん2009/01/20(火) 11:12:42
firefoxとかのブックマークメニューって
ドラッグでメニュー項目移動できるよね
あれどうやってるのかな?
0334デフォルトの名無しさん2009/01/20(火) 11:19:13
MNS_DRAGDROP
0335デフォルトの名無しさん2009/01/20(火) 11:57:27
func("http://www.abcd.com/efg/hij/", "../") → "http://www.abcd.com/efg/"
func("http://www.abcd.com/efg/hij/", "/") → "http://www.abcd.com/"
func("http://www.abcd.com/efg/hij/", "/xyz/") → "http://www.abcd.com/xyz/"

みたいなやつが欲しいのですけど、もしご存知て゜したら教えてください。
よろしくお願いします。
0336デフォルトの名無しさん2009/01/20(火) 12:08:20
>>334
おーこんなのがあるのか
さんくす
0337デフォルトの名無しさん2009/01/20(火) 12:14:29
>>335
> もしご存知て゜したら

どこの国の言葉?
0338デフォルトの名無しさん2009/01/20(火) 12:15:43
知らないならレスしないて゜下さい。ウサ゜イた゜けです。
0339デフォルトの名無しさん2009/01/20(火) 12:16:51
やて゜す
0340デフォルトの名無しさん2009/01/20(火) 12:17:15
srud(>>335);
0341デフォルトの名無しさん2009/01/20(火) 12:46:49
>>340
srudってググってもわからないです…

>>337
拝復 貴殿のレス、正に拝見いたしました。
ご無音に打ち過ぎておりますこと、まことに申し訳ございません。
さて、お申し越しの誤字に関する件、ご迷惑のほどお察し申し上げます。
当方においては、かな打ちであるためこのようなことになってしまいました。
ただ、1文字間違えただけで「どこの国の言葉?」との貴殿の発言は
少々行き過ぎではないかと感じる所存であります。
まずは、とりあえず事情を申し上げ、もってご返事といたします。
   敬 具
0342デフォルトの名無しさん2009/01/20(火) 12:57:46
APIでやるよーなこっちゃねーだろ
正規表現でいいんじゃねーの?
0343デフォルトの名無しさん2009/01/20(火) 13:01:27
ネタで書いてんじゃない?
0344デフォルトの名無しさん2009/01/20(火) 13:01:43
>>341
どこの国の言葉?
0345デフォルトの名無しさん2009/01/20(火) 13:38:31
パス系のAPIあったよな
なんか使えんかね
0346デフォルトの名無しさん2009/01/20(火) 13:40:46
>>344
インギンブレー語
0347デフォルトの名無しさん2009/01/20(火) 13:46:13
実は、
http://pc11.2ch.net/test/gomidir/../read.cgi/tech/1231423602/
でもちゃんとアクセスできるのだなこれが。
まあ今はリダイレクトされるか。
http://pc11.2ch.net/test///read.cgi/tech/1231423602/
でも。
0348デフォルトの名無しさん2009/01/20(火) 13:49:58
>>335
UrlCombine
0349デフォルトの名無しさん2009/01/20(火) 13:50:31
Apache httpdでも苦労してやっている。
特にwin32は別方面(ストリーム指定)からの攻撃もあるので、念入りにやらないといけない。
0350デフォルトの名無しさん2009/01/20(火) 14:26:46
Url系はINTERNET_MAX_URL_LENGTHを超えると正しく処理できないからなあ
IEとかどうしてるんだろ
0351デフォルトの名無しさん2009/01/21(水) 11:31:14
GDIの質問です。
DCに線を引く場合、GDIで用意されるAPIより高品質な線を引きたいとします。
こういった場合、どういった方法が常とう手段となるのでしょうか?
たとえば、GDI+はどうやって描いているのでしょう?
0352デフォルトの名無しさん2009/01/21(水) 11:41:15
何をもって高品質とするのか、定義を明確にせよ。
0353デフォルトの名無しさん2009/01/21(水) 11:45:03
もしDCがプロッタなら余計なことをしない方が高品質だと思うよ
0354デフォルトの名無しさん2009/01/21(水) 11:52:19
よけいなことすんなよ?
0355デフォルトの名無しさん2009/01/21(水) 11:57:00
ウィンドウメッセージの送信元を知る方法は?
0356デフォルトの名無しさん2009/01/21(水) 11:58:39
知る方法はありますよ。
0357デフォルトの名無しさん2009/01/21(水) 11:59:17
srud(>>356);
0358デフォルトの名無しさん2009/01/21(水) 12:01:35
>>356
どうやって?
0359デフォルトの名無しさん2009/01/21(水) 12:10:18
またフックか
0360デフォルトの名無しさん2009/01/21(水) 12:17:01
手紙の差出人を特定するにはどうするか考えれば、自ずと答えが出るだろう。
0361デフォルトの名無しさん2009/01/21(水) 14:37:45
郵便局に潜入するんですね!なるほど!
ありがとうございました
0362デフォルトの名無しさん2009/01/21(水) 14:38:47
>>360
馬鹿はレスしないで下さい。ウザイだけです。
0363デフォルトの名無しさん2009/01/21(水) 14:48:16
>>352-353
ありがちなシチュエーションだと思うのだが。
0364デフォルトの名無しさん2009/01/21(水) 15:15:38
そもそもどこのDCに高品質な線を描きたいんだよ
0365デフォルトの名無しさん2009/01/21(水) 15:38:06
あきらかに説明足らずだけど
どうせアンチエイリアスの掛かった線を描きたいとかそんな所じゃねーか?
もし当たってるなら「GDI以外で」って事なんで
聞きたいであろう事はほぼスレ違いなんだけどな
0366デフォルトの名無しさん2009/01/21(水) 15:47:24
適当にでかいサイズの画像に描画しといて縮小。
0367デフォルトの名無しさん2009/01/21(水) 16:55:48
おそらく誰も答えられないであろうことは想像していたがw
0368デフォルトの名無しさん2009/01/21(水) 17:00:10
まあ今は冬休みだしお前らに最初から期待してなかったよw
0369デフォルトの名無しさん2009/01/21(水) 17:01:30
>>366
APIの縮小処理の品質は微妙だが
0370デフォルトの名無しさん2009/01/21(水) 17:06:05
>>360
アドレス・・?
0371デフォルトの名無しさん2009/01/21(水) 17:19:41
> まあ今は冬休みだし

?
0372デフォルトの名無しさん2009/01/21(水) 18:51:35
Linux板から俺様登場!
何でも質問してくれw
0373デフォルトの名無しさん2009/01/21(水) 19:04:17
>>372
何しに来たんですか?
0374デフォルトの名無しさん2009/01/21(水) 19:09:24
まぁ一年中休みな人もいるわけで
0375デフォルトの名無しさん2009/01/21(水) 19:14:44
>>372
Wineってどんな感じ?
0376デフォルトの名無しさん2009/01/21(水) 19:21:09
>>372
知らないならレスしないで下さい。ウザイだけです。
0377デフォルトの名無しさん2009/01/21(水) 19:27:40
srud(>>372);
0378デフォルトの名無しさん2009/01/21(水) 19:48:09
srudとはスラッシュドットという意味です。
わからない人はhttp://slashdot.jp/を見て勉強しましょう。
ドザには難しすぎるかもしれませんがw
0379デフォルトの名無しさん2009/01/21(水) 19:51:25
ああ、またアカヒか
ああ、またゲンダイか
ああ、またsrudか
0380デフォルトの名無しさん2009/01/21(水) 19:54:51
いまさら犬糞デビューか?少し落ち着けよ
いずれBSDの素晴らしさに気付いて捨てると思うけど
0381デフォルトの名無しさん2009/01/21(水) 20:03:25
GDIといえば、インストールした後の一回だけgdiplus.dllがエラーするって現象知ってる人いない?
イベントログに出てたからこのDLLで発生したのはほぼ間違いないんだけど、
再現しないし、イベントログも手元になくて詳細忘れたし\(^o^)/オワタ
0382デフォルトの名無しさん2009/01/21(水) 20:18:54
「エラーする」

日本語崩壊はここまで来たか
0383デフォルトの名無しさん2009/01/21(水) 20:34:43
しょせんドザですからw
0384デフォルトの名無しさん2009/01/21(水) 20:36:27
アーする
0385デフォルトの名無しさん2009/01/21(水) 23:15:17
HANDLEを返すAPIではINVALID_HANDLE_VALUEを返す場合と、NULLを返す場合があるように思うのですが、
リファレンスで確認するしか方法がないでしょうか。
たとえば(handle == NULL || handle == INVALID_HANDLE_VALUE)でチェックした場合、
不都合が生じる可能性はあるのでしょうか
0386デフォルトの名無しさん2009/01/21(水) 23:29:42
無い
0387デフォルトの名無しさん2009/01/21(水) 23:33:30
一応、16ビット自体にもあったAPIは失敗値が非NULLで、
32ビット以降に作成された関数はNULLを返すという背景はあるけど、
リファレンスで確認するしかないだろうね
それを面倒くさがるようではプログラミングはできないよ

だから、たとえば(handle == NULL || handle == INVALID_HANDLE_VALUE)でチェックしたコードを見た場合、
こいつのコードは危ないぞって気になる

あとは、ありえない仮定かもしれないけど、機械的に書いていて
↓みたいな状況になるかもしれないね
HANDLE handle = MyGetCurrentProcess(pid); // カレントプロセスなら -1 を返す
(handle == NULL || handle == INVALID_HANDLE_VALUE)
0388デフォルトの名無しさん2009/01/21(水) 23:36:57
なるほど、わかりました。今後はちゃんと戻り値を調べたり覚えるようにします。
ありがとうございました。
0389デフォルトの名無しさん2009/01/21(水) 23:38:40
>>387
GetCurrentProcessの返値チェックは不要だからそれは絶対にありえないと思う
0390デフォルトの名無しさん2009/01/21(水) 23:44:44
イェア すまん
MyGetProcess(pid) と書きたかったがGetCurrentProcessが頭にあって間違った

べき論で答えるならドキュメント嫁と
その上でどうするかはもちろん知ったことじゃないけどね
0391デフォルトの名無しさん2009/01/21(水) 23:48:49
MyGetProcessはOpenProcessを呼んでるつもりなのか?

だとすると-1を返すなんて有り得ないと思うが。
0392デフォルトの名無しさん2009/01/22(木) 00:04:46
そもそもGetCurrentProcessがINVALID_HANDLE_VALUEと同じ-1を返すのもどうかと思うが
-2以下を使っとけばいいのに
しかもCreateFileMappingなんて第一引数で有効な値としてINVALID_HANDLE_VALUEが使えるし

このあたりの設計の悪さは(HBRUSH)(COLOR_WINDOW+1)の+1と同じく間抜けだな
0393デフォルトの名無しさん2009/01/22(木) 00:04:55
ATL::CHandleみたいなものを作っているなら、両方チェックするのもありだと思う。
(ちなみにATL::CHandleはNULLしか見ないけど)
0394デフォルトの名無しさん2009/01/22(木) 01:14:28
なんか色々いじってたらウィンドウを作っても、その後、枠とかすら描画されない症状になっちゃったんですけど、
原因エスパーできる人いますか?もしくは作成後どのメッセージを発行すれば描画してもらえるのか教えてもらえんでしょうか?
0395デフォルトの名無しさん2009/01/22(木) 01:15:02
あ、ちなみに最大化とかすれば再描画されるんですよ。
0396デフォルトの名無しさん2009/01/22(木) 01:39:01
UpdateWindowが抜けてる
0397デフォルトの名無しさん2009/01/22(木) 12:45:14
結局メッセージの送信元(ウィンドウハンドルとか)を特定する方法はない?
0398デフォルトの名無しさん2009/01/22(木) 12:47:59
srud(>>397);
0399デフォルトの名無しさん2009/01/22(木) 13:57:55
>>397
送信元がウインドウを持っていなかったらどうするんだ?
アホにも程がある。
0400デフォルトの名無しさん2009/01/22(木) 14:01:47
それはNULLとかIsWindowで判別できるじゃん
0401デフォルトの名無しさん2009/01/22(木) 14:04:06
ウインドウがあるか無いかではなく、送信元の指標として利用できないだろ。
なんでそんなに頭が弱いんだ?
0402デフォルトの名無しさん2009/01/22(木) 14:05:51
じゃprocessハンドルならば?
0403デフォルトの名無しさん2009/01/22(木) 14:22:45
送るときに付けるか、メッセージ送信用のAPIを監視するか
後者ならフックに該当し、スレが荒れるのでこれ以上の話は禁止
0404デフォルトの名無しさん2009/01/22(木) 15:18:11
Linuxならそんな問題はないのにw
馬鹿だからWindowsに固執する
0405デフォルトの名無しさん2009/01/22(木) 15:28:34
Win32スレでLinux云々言い出すやつって、
リアルでコミュニケーションがとれずに誰にも相手にされないんだろうな
0406デフォルトの名無しさん2009/01/22(木) 15:35:46
いつもの人工無能がs/\.NET/Linux/gしただけだろ
0407デフォルトの名無しさん2009/01/22(木) 15:35:58
問題以前にメッセージを送る共通の方法が無い
D-BUSとか使わない限り
0408デフォルトの名無しさん2009/01/22(木) 16:57:48
>>396いたるところに入れたんですがやっぱりダメでした。うーん。。。
0409デフォルトの名無しさん2009/01/22(木) 17:11:18
>>408
InvalidateRect+UpdateWindow
0410デフォルトの名無しさん2009/01/22(木) 17:12:18
>>409
RedrawWindowだけで出来るだろ
0411デフォルトの名無しさん2009/01/22(木) 17:15:18
RedrawWindowってそのままの名前なのに知名度低いよねw
0412デフォルトの名無しさん2009/01/22(木) 17:46:30
問題の本質を理解するにはInvalidateRectをおぼえた方が良いキリッ
0413デフォルトの名無しさん2009/01/22(木) 18:27:27
非クライアント領域の再描画はInvalidateRectでは無理
0414デフォルトの名無しさん2009/01/22(木) 19:18:17
GDIリソース不足に陥ったとか
0415デフォルトの名無しさん2009/01/22(木) 19:19:39
>>409-413全部やってましたが、ダメでした。それともウィンドウ作ってすぐだとダメとか?そんなの無かったですよね・・・
0416デフォルトの名無しさん2009/01/22(木) 19:46:35
根本的なところでウィンドウスタイル
0417デフォルトの名無しさん2009/01/22(木) 19:49:59
MNS_DRAGDROPの使い方がわかんねー
英語でも資料無いしそもそもWM_MENUDRAGとかとれないし
もちろんSetMenuInfoはしている。。
0418デフォルトの名無しさん2009/01/22(木) 19:52:42
と思ったらいけた・・
サブメニューにSetMenuInfoやってもだめなのね・・
0419デフォルトの名無しさん2009/01/22(木) 21:05:43
>>394
>なんか色々いじってたら
break付け忘れて別のcaseに突入してるとか、その手のミスだろ
ソース晒せないなら、捨てて1から同じもの作り直せ。それで直る
0420デフォルトの名無しさん2009/01/22(木) 22:14:02
そういやvistaってdwm.exeがウィンドウの枠を描いてるんだっけ
てことは、dwm.exeを殺しつづけるプログラム書いたら・・・
0421デフォルトの名無しさん2009/01/22(木) 22:30:47
>>420
VistaベーシックテーマになってXP互換のドライバモデルによる描画になるはず。
0422デフォルトの名無しさん2009/01/23(金) 16:35:31
すいません、質問してイイ?
0423デフォルトの名無しさん2009/01/23(金) 16:36:59
srud( >>424 );
0424デフォルトの名無しさん2009/01/23(金) 16:45:37
srud( >>423 );
0425デフォルトの名無しさん2009/01/23(金) 16:53:21
それ毎日やってる奴って流行らせようとしてるんだろうなw
0426デフォルトの名無しさん2009/01/23(金) 17:23:14
TrackPopupMenuつかって表示したメニューってDestroyMenuしたほうがいいの?
0427デフォルトの名無しさん2009/01/23(金) 17:26:32
>>425
え?何いってんの?君
0428デフォルトの名無しさん2009/01/23(金) 17:36:04
何?悔しかったの?w
0429デフォルトの名無しさん2009/01/23(金) 17:40:16
>>427ワロスwwwwwwwwwwwwwwwwwww
0430デフォルトの名無しさん2009/01/23(金) 17:46:10
>>426
TrackPopupMenuに渡したメニューハンドルはどこから来たんだ?
0431デフォルトの名無しさん2009/01/23(金) 18:02:26
>>430 CreatePopupMenuで作ったハンドルです。現状は作った後放置です。
0432デフォルトの名無しさん2009/01/23(金) 18:44:58
「アプリケーションを終了する前に、DestroyMenu 関数を使って、どのウィンドウにも割り当てられていないメニューを破棄しなければなりません。」
0433デフォルトの名無しさん2009/01/23(金) 19:20:29
知らないならレスしないだけです。
0434デフォルトの名無しさん2009/01/23(金) 19:25:51
ポップアップメニューがウィンドウと関連がなくなるのってどのタイミングなんでしょう?
例えばTrackPopupMenuで表示している間は関連があるから削除しなくていいとか?
0435デフォルトの名無しさん2009/01/23(金) 19:52:47
PC新調したのを期に64bitとも整合が取れるようにコードを直そうと思っているのですが、
WinAPIの場合、ポインタと整数をキャストしている関数を新しいものと入れ替えるだけでいいのでしょうか?

またwindowsはLLP64ですけど、x64CPUを使っている場合
32bitOSと64bitOSで64bit長のデータを扱うと、前者はどこかネックになったりするのでしょうか?
0436デフォルトの名無しさん2009/01/23(金) 20:14:02
ume
0437デフォルトの名無しさん2009/01/23(金) 20:14:49
誤爆った
0438デフォルトの名無しさん2009/01/23(金) 20:15:29
>>434
面倒だからここを一通り読んでくれ
ttp://msdn.microsoft.com/en-us/library/ms674660.aspx
0439デフォルトの名無しさん2009/01/23(金) 20:29:21
>>438
面倒だからあなたが答えてくれませんか?
0440デフォルトの名無しさん2009/01/23(金) 22:28:18
>>435
そうだよ。それだけで64ビットに対応できると謳われている。

32ビットOSでは64ビットに拡張されたレジスタを使えないので、
64ビットデータを扱うには32ビットレジスタ2つかSSEレジスタを使わなければならない。
0441デフォルトの名無しさん2009/01/23(金) 22:49:37
SSEに64bit整数演算命令なんかあったっけ?
0442デフォルトの名無しさん2009/01/23(金) 23:06:24
SSEレジスタ = XMMレジスタって意味だろ

SSE命令の話なんてしてねーよ馬鹿
0443デフォルトの名無しさん2009/01/23(金) 23:25:52
そもそも整数とも言ってないな
0444デフォルトの名無しさん2009/01/23(金) 23:33:18
まあ32ビット環境でも一部のx86命令はedx:eaxで64ビット扱えるけどね
0445デフォルトの名無しさん2009/01/24(土) 00:26:47
メニューを決定したときWM_COMMANDでIDだけ分かりますが、決定時にメニューハンドルまで分かるメッセージってありますか?
0446デフォルトの名無しさん2009/01/24(土) 01:28:53
WM_COMMAND_MENU_HANDLE_WAKARU
0447デフォルトの名無しさん2009/01/24(土) 01:38:47
>>445
WM_MENUCOMMAND
たぶん。使ったこと無いけどそれっぽい。
MENUINFO.dwStyleでMNS_NOTIFYBYPOSを立てておくと、
WM_COMMANDの代わりに飛んでくると書いてある。
0448デフォルトの名無しさん2009/01/24(土) 12:01:04
>>447ありがとう!大好きだよ!チュッチュッ
0449デフォルトの名無しさん2009/01/24(土) 16:39:04
キメェ
0450デフォルトの名無しさん2009/01/24(土) 17:44:06
質問です。

オーディオデバイスから出ている音声信号をキャプチャして画面効果を出すようなアプリが作りたいんですが
どうすれば良いか分かりません。
詳細は自分で調べますので、大まかなキーワードや考え方の方針だけでも教えてください。
0451デフォルトの名無しさん2009/01/24(土) 18:47:39
>>450
キーワード
オーディオデバイス,音声信号,キャプチャ,画面効果
0452デフォルトの名無しさん2009/01/24(土) 19:23:18
ループバックの録音デバイスが存在するかどうかが要だな。
なけりゃほぼどうしようもないかと。
0453デフォルトの名無しさん2009/01/25(日) 09:43:07
以下のようにダイアログボックスのエディットウィンドウをサブクラス化しようとして
ますが、動きません(コンパイルは通る)。同じような形で CreateDialogParam() では
できたのですが、ダイアログボックスは基本的にサブクラス化できないのですか?

  ret = DialogBox(g_hInst,"IDD_ADD_ITEM", hWndOwner, (DLGPROC)addItemProc);
  ………

BOOL CALLBACK addItemProc( hAddTvItemDlg, msg, wp, lp){
  ………
  case WM_INITDIALOG:
    ………
    editboxAddItemProc = (WNDPROC)(LONG_PTR)GetWindowLong(GetDlgItem(hAddTvItemDlg,IDC_EDT_EDBX),GWL_WNDPROC);
    SetWindowLong(GetDlgItem(hAddItemDlg,IDC_EDT_EDBX)
           ,GWL_WNDPROC,(LONG)(LONG_PTR)editboxAddItemSUBproc);
    ………

static BOOL CALLBACK editboxAddItemSUBproc( hAddItemDlg, msg, wp, lp){
  switch(msg){
    case WM_KEYDOWN:
      if(wp==VK_RETURN){
        PostMessage(hAddTvItemDlg,WM_COMMAND,(WPARAM)IDC_EDT_OK,0);
        return 0;
      }else if(wp==VK_ESCAPE){
        EndDialog(hAddTvItemDlg,0);
        return 0;
      } // wp==VK_TAB はデフォルトで動くようです
      break;
  }
  return CallWindowProc(editboxAddItemProc,hAddItemDlg,msg,wp,lp);
0454デフォルトの名無しさん2009/01/25(日) 10:30:27
>>453
editboxAddItemSUBprocは呼び出されてる?

それとは別に、
>    editboxAddItemProc = (WNDPROC)(LONG_PTR)GetWindowLong(GetDlgItem(hAddTvItemDlg,IDC_EDT_EDBX),GWL_WNDPROC);
>    SetWindowLong(GetDlgItem(hAddItemDlg,IDC_EDT_EDBX)
>           ,GWL_WNDPROC,(LONG)(LONG_PTR)editboxAddItemSUBproc);

windowsx.hをインクルードして、
 editboxAddItemProc = SubclassWindow(GetDlgItem(hAddItemDlg,IDC_EDT_EDBX), editboxAddItemSUBproc);
の方がいいだろう。変なキャストもしなくていいし。
0455デフォルトの名無しさん2009/01/25(日) 10:38:22
DWL_DLGPROCじゃね?
0456デフォルトの名無しさん2009/01/25(日) 10:58:37
ダイアログ側が先行してメッセージを取り込んでいる所為で、
そもそもメッセージが届いていない、というオチな気がしないでもない。
COMCTL32v6用のGet/SetWindowSubclassとかあるけど関係無いだろうなあ。
0457デフォルトの名無しさん2009/01/25(日) 11:03:52
ついでに書いておくなら、>>453 の処理を見る限り、
WM_COMMANDのIDOKとIDCANCELをうまく処理するだけで
目的が達成されそうな気がする。
SDKの「Dialog Box Programming Considerations」を参考にしてみてくれ。
0458デフォルトの名無しさん2009/01/25(日) 11:43:18
なんでカンマが全角なのか非常に気になる
04594532009/01/25(日) 13:48:10
みなさん、ありがとうございます。

static BOOL CALLBACK editboxAddItemSUBproc( hAddItemDlg, msg, wp, lp){
  switch(msg){
    case WM_KEYDOWN:
>>     MessageBox(……);
      if(wp==VK_RETURN){

として調べると、文字キー(abcなど)は来てますが、VK_RETURN は来てません。
0460デフォルトの名無しさん2009/01/25(日) 13:57:55
【通信プログラムの質問】
初心者です。

送信、受信で、WriteFile()、ReadFile()を使用する事はわかったのですが、
この関数の使い方がわかりません。。。

具体的に引数に何を設定したらいいのでしょうか?

文字列:"Test送信データ!"を送信したい場合どうプログラムするのか教えてください。。
0461デフォルトの名無しさん2009/01/25(日) 14:01:40
通信と言っても色々あるわけで
MSDNでWriteFileの仕様は見たの?
04624602009/01/25(日) 14:06:57
>>461さん

見ました。以下のページですよね。
http://msdn.microsoft.com/ja-jp/library/cc429856.aspx

BOOL WriteFile(
HANDLE hFile, // ファイルのハンドル
LPCVOID lpBuffer, // データバッファ
DWORD nNumberOfBytesToWrite, // 書き込み対象のバイト数
LPDWORD lpNumberOfBytesWritten, // 書き込んだバイト数
LPOVERLAPPED lpOverlapped // オーバーラップ構造体のバッファ
);

第1引数と、第5引数には、何を設定すれば、いいかわかりました。
2〜4に何を設定したらいいかわからなかったのです。。

通信は、PCのCOMポート通しの通信をやろうとしています。
0463デフォルトの名無しさん2009/01/25(日) 14:23:15
いや・・そのまんまじゃん

第2引数 書きたいもの→"Test送信データ!"
第3引数 書きたいものの長さ→"Test送信データ!"のバイト数(文字列長さじゃないよ)
第4引数 書かれた長さをうけとる変数→適当なDWORD変数
0464デフォルトの名無しさん2009/01/25(日) 14:32:59
フルスクリーン中にWindowsFlipモード
([ALT]+[TAB]や、Vistaの[Windows]+[TAB]を押したときになる、ウインドウを切りかえる画面のこと)
になったかどうかを知りたんだけど、これを知る方法ってありますか?
調べて見た感じなさそうなんだけど・・・
04654602009/01/25(日) 14:51:05
以下の様にしたら、コンパイルが通りました!!
ありがとうございます。

動かしてみます。


char data[] = "test送信データ!";
LPDWORD lp;

// 送信〜
WriteFile(
handle, // シリアルポートへのハンドラ
&data, // 送信バッファへのポインタ
sizeof(data), // 送信データ数
lp, // 実際に送信したデータ数
NULL ); // 非同期I/O動作の場合のオーバーラップ構造体へのポインタ
0466デフォルトの名無しさん2009/01/25(日) 14:58:51
×
&data
○
data or &data[0]

×
LPDWORD lp;
○
DWORD len;

WriteFile(handle,data,sizeof(data),&len,NULL );
0467デフォルトの名無しさん2009/01/25(日) 15:25:18
>>465
DWORD written;とかにしてWriteFileの引数のlpを&writtenにしろ。それ以前のCの問題じゃないか。
MSDNだけじゃなくてWriteFileでググって参考になりそうなコード探せよ。
0468デフォルトの名無しさん2009/01/25(日) 19:33:05
AというRadiobuttonを選択したら
チェックボックス(IDC_GREY)にはいっているチェックをとりたいんですが
どうしたらいいですか?調べたところSendMessageを使うみたい
なんですが・・。
SendMessage(hDlg,BST_UNCHECKED,wParam,lParam);
これじゃどのチェックボックス(IDC_GREY)を外すのかわからないとおもうんですが・・。
ご教授お願いします。
0469デフォルトの名無しさん2009/01/25(日) 19:41:24
CheckDlgButtonとか、SendDlgItemMessageとか、
GetDlgItemでハンドル取ってとか、
どれでも好きなのを使うと良い。
0470デフォルトの名無しさん2009/01/25(日) 19:43:27
突然初心者が湧いてくるのは何故なんだ?
0471デフォルトの名無しさん2009/01/25(日) 19:44:02
質問スレだからだろ?
0472デフォルトの名無しさん2009/01/25(日) 20:00:14
ListViewを詳細表示していて、選択項目が変わったら、新しく選択された項目の内容を取得しようと思っています。
下記のコードを書いてみたのですが、これですと、クリックで選択項目が変わる際は取得できるのですが、
キーボードの矢印キーを使って選択が変わると、何も反応しません。
キーボードの矢印キーを使って選択が変わっても、新しい項目の値を取得できるようにするには、
どうしたら良いのでしょうか?ご教授下さい。
---------------------------------------
case WM_NOTIFY:
LPNMHDR lpnmhdr = (LPNMHDR)lp;
if( lpnmhdr->hwndFrom == hListView ){
LV_ITEM item;
LV_HITTESTINFO lvhti;
GetCursorPos((LPPOINT)&lvhti.pt);
ScreenToClient(((LPNMLISTVIEW)lp)->hdr.hwndFrom, &lvhti.pt);
ListView_HitTest(((LPNMLISTVIEW)lp)->hdr.hwndFrom, &lvhti);
char szBuff[100]="";

if (lvhti.flags & LVHT_ONITEM){
item.mask = TVIF_HANDLE | TVIF_TEXT;
item.iItem = lvhti.iItem;
item.iSubItem = 0;
item.pszText=szBuff;
item.cchTextMax=sizeof(szBuff);
ListView_GetItem(((LPNMLISTVIEW)lp)->hdr.hwndFrom, &item);
MessageBox(hWnd,szBuff,"表示",MB_OK);
}
0473デフォルトの名無しさん2009/01/25(日) 20:05:51
んな面倒なことせんでも  つLBN_SELCHANGE
0474デフォルトの名無しさん2009/01/25(日) 20:06:29
ごめん間違えた。  つLVN_ITEMCHANGED
04754722009/01/25(日) 20:29:13
>>474

うまくできました〜。
ありがとうございました。

ほんと、面倒な事しすぎててアホでした・・・。
0476デフォルトの名無しさん2009/01/25(日) 20:34:21
自分が面倒だと思うことは、大抵他人も同じように考えているわけで、
探してみると、もっと楽できる方法が提供されている事が良くある。
そうやって楽しようと調べている内に、色々詳しくなっていくわけだ。
0477デフォルトの名無しさん2009/01/25(日) 21:11:27
まあメッセージ関連はSpy++で使えそうなのを探した方が楽だけどね。
0478デフォルトの名無しさん2009/01/25(日) 21:16:05
Spyのウィンドウメッセージが16進数表記でなくてよかったお(´・ω・`)
04794722009/01/25(日) 21:25:18
たびたびですいません。

再びListViewに関する質問なのですが、
任意のクリックしたセルを修正できるListViewを作ろうと思っています。
(要するに、MSExcelの様な感じです)

ググった結果、
クリックしたセルに上書きする形で、エディタを作ればいい
とありました。

なるほど〜〜と思ったのですが、ここで問題発生・・・。
クリックしたセル領域の座標を求める方法が分かりません。

クリックしたセルのItem,SubItemは取得できるので、
CreateWindow("edit",...,(セル幅×SubItem),(セル高さ×Item),セル幅,セル高さ,...)
にすれば良いのかと一瞬思ったのですが、
よくよく考えてみると、項目数が多い場合、
ユーザーがListViewをスクロールしている可能性も考えられます。

こういった場合、どのようにしてListViewの上にエディタを作れば良いのでしょうか??
もしくは、実はもっと良い方法があったりするのでしょうか?
ご教授下さいませ。
0480デフォルトの名無しさん2009/01/25(日) 21:40:13
なんでMSDNのLVM_**を調べないの? 馬鹿なの?
0481デフォルトの名無しさん2009/01/25(日) 21:57:33
ごめんなさい。僕、白痴なんです
だから、教えてくださいね
0482デフォルトの名無しさん2009/01/25(日) 22:09:17
>>481
ほらよ
http://www.google.co.jp/search?hl=ja&q=%E3%82%A2%E3%83%AB%E3%83%84%E3%83%8F%E3%82%A4%E3%83%9E%E3%83%BC+%E8%A8%BA%E7%99%82&lr=lang_ja
0483デフォルトの名無しさん2009/01/25(日) 22:24:25
>>482
それはあなたの事でしょう
0484デフォルトの名無しさん2009/01/25(日) 22:26:45
俺、医師免許無いよ?
0485デフォルトの名無しさん2009/01/25(日) 22:28:33
WaitForSingleObjectで
主スレッドである処理が終わるまで
副スレッドを待機させるのってどうやるんですか
0486デフォルトの名無しさん2009/01/25(日) 22:34:13
WaitForSingleObjectでWaitを0にして終了するまでループしてればいい
0487デフォルトの名無しさん2009/01/25(日) 22:36:55
CreateEvent
0488デフォルトの名無しさん2009/01/25(日) 22:37:13
WaitForSingleObjectでって言ってんだろ
0489デフォルトの名無しさん2009/01/25(日) 22:39:08
CreateEvent で作ったイベントに対して WaitForSingleObject 使うんだよこのタコ
0490デフォルトの名無しさん2009/01/25(日) 22:40:09
どうやるもなにもハンドル渡す以外にやる事ないだろ
0491デフォルトの名無しさん2009/01/25(日) 23:08:27
渡すハンドルもイベントとは限らんしな
0492あんあん2009/01/25(日) 23:11:13
         _     , -‐-、
        / ̄\、 // ̄`\、
      /    _\//_ _   i|
     /   //:::::_`'|ヽ:. \二`ノ、ー..、
    //   /'/ ./::ヽ|:::\:.ヽ::::ヽ:\:::\
    |'   /::/:.:./ |.:|"`、..::ト、:ト;::::|: |:::;::::|
       |/|:::::;| ::l、|  ヽ| ヽl \|: |:::i::::|
        | |::::;ヽ:::| ,二、   ,二、|: ト ::|:::ト、
          ト/:::|`:l ! lj   ! lj |:..:| |::|:::|::|
           `|:::i:ヾ:| " '_   " |::::|'.::::i:::|:::|
        /|:::|:::|:i:\ ` ノ   イ::::|:::::::|:::|:::|、
        /:|:::|:::|::|:::|::i:.. ー ´ .|:|:::;|:::i::::|:::|:::::|、
        / |:, i .:|ー-──| / |:'|:::|ー─ 、i:::::::|
        //|l:::.|i::|   ̄` ´  ̄//::;/    l::::::ト、
        //|| |:;|ノ|       ノ,l::;l/    /:::::::ト、ヽ
     / ' |/|:|ヾ|        |::l'/    /| |:::::|、|:|
     |l/   |:| ' /     ノ//    /:|:::|::::i:.| |:|
      |')    ヽ|  |  (o,  ノ/    /:::| :|::::::|:| |:|
      |l丶    ノ ヽ     ,/    ./::::,':: |::::::|i.| |.|
     | /`iー '    ` ー /    /:::::/::/|:::::| |:| ||
    __,/_|__,  - ──/     /;::::/:::/ |:::/' |:| |
  r-'ニ '               /:/::/:::/ |:./ //|
  Y    _  ___     _////  |:/ /'
  `i_ // ̄      ̄ ̄ ̄l//、//   |'
    .| rl|    !       \|n|
    |  ||_ヽ_    ,_, -= '_,7〉
    | /、      ̄ ̄ ̄  ,/  |uゝ
    | '| \ :、       , /    ヽ
    ヽ |  \:、   //       |
      |    \   ,:/        |
0493デフォルトの名無しさん2009/01/25(日) 23:13:41
その、虫の触覚みたいな毛は何とかならんのか
0494デフォルトの名無しさん2009/01/25(日) 23:17:45
アホ毛っていいます。
0495デフォルトの名無しさん2009/01/25(日) 23:39:10
スレチかもしれませんが・・・
タスクスケジューラを使わずにサスペンドからの復帰を実現しているソフトがありますが、どのような方法を使っているのでしょうか?
0496デフォルトの名無しさん2009/01/25(日) 23:56:17
アクティブタイマ
0497デフォルトの名無しさん2009/01/26(月) 00:42:59
>>496
レスありがとうございます。
調べてみます。
0498デフォルトの名無しさん2009/01/26(月) 11:01:04
ツリービューで、子アイテムから親アイテムのハンドルを取得する方法ってある??
0499デフォルトの名無しさん2009/01/26(月) 14:44:19
>>498
TVGN_PARENT
0500デフォルトの名無しさん2009/01/26(月) 19:10:10
WaitForSingleObjectの第一引数にハンドルの配列の先頭アドレスを渡したら配列全部を待ってくれますか?
0501デフォルトの名無しさん2009/01/26(月) 19:11:20
マルチプルってのがあったような気がする
0502デフォルトの名無しさん2009/01/26(月) 19:22:08
そんなばかな
0503デフォルトの名無しさん2009/01/26(月) 19:26:11
>>501
出来たありがとう
0504デフォルトの名無しさん2009/01/27(火) 10:10:36
SetStretchBltMode(hDC, HALFTONE)
StretchBlt(hDC, ...);

きれいにビットマップを縮小できません。どうすればいいか分かりますか。
0505デフォルトの名無しさん2009/01/27(火) 10:13:40
自分で縮小処理を書く
0506デフォルトの名無しさん2009/01/27(火) 10:17:42
>>505
そんな馬鹿な
0507デフォルトの名無しさん2009/01/27(火) 10:27:59
>>504
原因がわかった。
>Windows 95/98/Me では、この値はサポートされていません。
0508デフォルトの名無しさん2009/01/27(火) 11:45:51
そんな馬鹿な
0509デフォルトの名無しさん2009/01/27(火) 11:46:39

    __ __ __ __       __     __       __
    `i  | | i'l_i'l_i'     i''´ __`ヽ-ッ _コ  l____ i´__`ー-ッ  _,,.、
     ,!  ,! .l l   _,,,_   └'´__ ``´ レ┐ ┌─┐ ,!'´ ``´ /,r''´
    / 丿 '、'、 l´ __`ヽ-ッi''´__`ヽ-ッ  .l  l  ノ /     / /
   / /   ヽ ヾ´  ``'´└'´,,_``'´   l └ ' ,/   ___,,ノ /
_,,.r'' /      \ `>  r'"´   ``ヽS.) l  「´    「´    _ノ
‘''' ´           `′ └ ''´ ̄``‐-‐'' └ ┘   └‐ '' ´
0510デフォルトの名無しさん2009/01/27(火) 13:42:26
自分で縮小処理を書くしかないようですね。
では、線形補間法を検討してみます。
0511デフォルトの名無しさん2009/01/27(火) 13:52:49
Direct3Dを使えば高速に処理できるよ。
0512デフォルトの名無しさん2009/01/27(火) 13:54:00
じゃあDirect3D使ってやるからソース教えて
0513デフォルトの名無しさん2009/01/27(火) 14:00:34
Windows 95/98/Meで動作するバージョンのDirect3Dでおねがいします。
0514デフォルトの名無しさん2009/01/27(火) 14:03:16
Windows9xで動くDirectXのバージョンていくつだ?
95も考慮するとCPU処理で十分だろ、SSE使えなくなるけど。
0515デフォルトの名無しさん2009/01/27(火) 14:57:10
95が8までで、98/Meが9までじゃなかったっけ?
0516デフォルトの名無しさん2009/01/27(火) 14:59:44
WinG?
0517デフォルトの名無しさん2009/01/27(火) 15:08:43
98はSEもってことね。
馬鹿なお前らでもそれくらいはわかってたよな?
0518デフォルトの名無しさん2009/01/27(火) 15:10:42
君のレスなんて読まないよ
0519デフォルトの名無しさん2009/01/27(火) 15:49:48
君のレスなんて読まないよ
0520デフォルトの名無しさん2009/01/27(火) 15:50:57
君のレスなんて読まないよ
0521デフォルトの名無しさん2009/01/27(火) 15:55:16
君のレスなんて読まないよ
0522デフォルトの名無しさん2009/01/27(火) 15:58:19
>>504知らずに>>505してた俺がバカみたいじゃないか
0523デフォルトの名無しさん2009/01/27(火) 15:59:43
バカのレスなんて読まないよ
0524デフォルトの名無しさん2009/01/27(火) 16:08:08
読まないよって奴のレスなんて読まないよ
0525デフォルトの名無しさん2009/01/27(火) 16:10:12
キターーー!!Win32APIスレ伝統芸能”糞レス連打”!
0526デフォルトの名無しさん2009/01/27(火) 16:13:30
伝統だったのかw
0527デフォルトの名無しさん2009/01/27(火) 16:15:37
俺が流行らせた
0528デフォルトの名無しさん2009/01/27(火) 16:15:38
>>525から糞レスなんですね。わかります。
0529デフォルトの名無しさん2009/01/27(火) 16:22:31
君のレスなんて読まないよ
0530デフォルトの名無しさん2009/01/27(火) 16:26:07
オウムレスとか、ですねわかります文とか、ほんとネタレベル低いなこのスレ
0531デフォルトの名無しさん2009/01/27(火) 16:26:45

         _
    ───| |─ R. E. S T A. U R. A. N T
      ,イ二ヽ| |
  _ { {  ヾ |__r‐z_、-、┌┐ ,.-、┌ i r-、    , ‐ァ
  \ヘヽ_二フ j / /} ト┘! レ1 | | l└┴──/ /
    `ー--‐ '´/_/ 」__j   レ'  L_,|  ̄`ヽ\  〈 /
                  ┌┐         } }  ヽ〉
                \ヽ、     ノ/
                 ``ー---─ '´
0532デフォルトの名無しさん2009/01/27(火) 16:42:47
知らないならレスしないで下さい。ウザイだけです。
0533デフォルトの名無しさん2009/01/27(火) 16:57:45
オウムレスとか、ですねわかります文とか、ほんとネタレベル低いなこのスレ
0534デフォルトの名無しさん2009/01/27(火) 17:11:56
ネタレベル低いならレスしないで下さい。オウムレスとか、ですねわかります分とかだけです。
0535デフォルトの名無しさん2009/01/27(火) 17:18:09
その辺にしてくれ
0536デフォルトの名無しさん2009/01/27(火) 17:18:35
nrod( >>534 );
0537デフォルトの名無しさん2009/01/27(火) 17:19:51
>>535
すまんこ
0538デフォルトの名無しさん2009/01/27(火) 17:20:13
オウムレスとか、ですねわかります文とか、ほんとネタレベル低いなこのスレ
0539デフォルトの名無しさん2009/01/27(火) 17:20:17
ガスト希望
0540デフォルトの名無しさん2009/01/27(火) 17:21:10
−−−−−−−−−− 終了 −−−−−−−−−−−
0541デフォルトの名無しさん2009/01/27(火) 17:30:57
オウムレスとか、ですねわかります文とか、ほんとネタレベル低いなこのスレ
0542デフォルトの名無しさん2009/01/27(火) 18:01:40
次の質問どうぞー
0543デフォルトの名無しさん2009/01/27(火) 18:22:39
これガキが1,2人でやってんだろ
0544デフォルトの名無しさん2009/01/27(火) 18:26:57
>>543
そんな判りきった事をわざわざ言わなくていいよ。
0545デフォルトの名無しさん2009/01/27(火) 18:27:54
オウムレスとか、ですねわかります文とか、ほんとネタレベル低いなこのスレ
0546デフォルトの名無しさん2009/01/27(火) 18:28:20
ばかいっちゃいけねえ。ガスト待ちの俺はじっと待ってる
0547デフォルトの名無しさん2009/01/27(火) 18:41:44
すまんがガストのロゴマークは作られてないらしい
0548デフォルトの名無しさん2009/01/27(火) 18:43:57
たしかにすかいらーくはいい出来だなw
0549デフォルトの名無しさん2009/01/27(火) 18:44:06
えええええ
バーミヤン、すかいらーくと来たらガストだろと思ってたのに。。。

情報、ありがとうございましたλ...
0550デフォルトの名無しさん2009/01/27(火) 19:18:30
ゲイツの釣りみたいだな
0551デフォルトの名無しさん2009/01/27(火) 19:23:05
>>543
違うよ。おっさんと爺が2,3人でやっている
0552デフォルトの名無しさん2009/01/27(火) 19:24:00
本当にその辺にしてくれないか。頼むから。
0553デフォルトの名無しさん2009/01/27(火) 19:24:17
>>551
なんだ、お前一人の仕業だったのか
0554デフォルトの名無しさん2009/01/27(火) 19:33:01
>>551
もう止めろよお前
0555デフォルトの名無しさん2009/01/27(火) 19:35:22
いや俺じゃないから
0556デフォルトの名無しさん2009/01/27(火) 19:37:12
俺でもないよ
0557デフォルトの名無しさん2009/01/27(火) 20:38:08
実はこいつ↓
0558デフォルトの名無しさん2009/01/27(火) 20:50:56
すいません、全部オレでした
0559デフォルトの名無しさん2009/01/27(火) 20:51:54
なんかム板のノリじゃなくね?ここだけ
0560デフォルトの名無しさん2009/01/27(火) 20:56:35
目覚ましと時計を作った例のクソガキが一人で荒らしてるだけだろ。
0561デフォルトの名無しさん2009/01/27(火) 20:58:43
目覚まし久しぶりだな
0562デフォルトの名無しさん2009/01/27(火) 21:41:21
今アクティブになっているウィンドウのタイトル名を取得したいんだけど
どうすればいいの?
言語はVB.NETっす
0563デフォルトの名無しさん2009/01/27(火) 21:44:36
>>562
よ、目覚まし
0564デフォルトの名無しさん2009/01/27(火) 21:45:08
GetForegroundWindow
GetWindowText
でいいんすか?
0565デフォルトの名無しさん2009/01/27(火) 22:02:00
なんだなんだ、目覚し来てるのか?
今度は何してるの?
0566デフォルトの名無しさん2009/01/27(火) 22:03:36
>>564
そんだけじゃわかんねぇよ
ちゃんとソース書いて説明しろよはげ
0567デフォルトの名無しさん2009/01/27(火) 22:06:48
>>566
さあ目覚ましと時計のソースをうpするんだ
みんなで笑ってあげるからよ
0568デフォルトの名無しさん2009/01/27(火) 22:07:16
>>560
お前が召還したんだから責任とれよ?
0569デフォルトの名無しさん2009/01/27(火) 22:09:57
>>566
GivemeAnswer( kokoni, GetWindowText( GetForegroundWindow() ) );
0570デフォルトの名無しさん2009/01/27(火) 22:22:17
>>569
できねぇじゃねぇかよ
俺の貴重な時間を浪費すんじゃねえよはげ
はやく教えろやくずども
0571デフォルトの名無しさん2009/01/27(火) 22:25:46
念のため言っとくけど、すごいつまんないよ
0572デフォルトの名無しさん2009/01/27(火) 22:26:25
TerminatePerson(>>570);
0573デフォルトの名無しさん2009/01/27(火) 22:37:01
>>570
くずに聞かないとプログラムも書けないお前はなんなんだ?w
0574デフォルトの名無しさん2009/01/27(火) 22:50:09
>>571
で?ソースまだ?
0575デフォルトの名無しさん2009/01/27(火) 22:52:52
WinはGNUじゃないから糞。
0576デフォルトの名無しさん2009/01/27(火) 22:57:36
>>574
まずはお前が目覚ましと時計のソース出せよ
0577デフォルトの名無しさん2009/01/27(火) 22:58:23
GNUとか/.民が好きそうだからおいら嫌い
0578デフォルトの名無しさん2009/01/27(火) 22:59:29
GNUってなに?
0579デフォルトの名無しさん2009/01/27(火) 23:09:30
いつかWin32APIについて質問したくなったときに後悔するよ
0580デフォルトの名無しさん2009/01/27(火) 23:16:56
目覚まし時計が流行ってるのか。
0581デフォルトの名無しさん2009/01/27(火) 23:23:45
このタイミングでなんなんだけどWM_KEYDOWNとかのイベントで、普通に押してるキーを取得するほかに
同時に修飾キーを押してるかどうかをチェックしたいんだけど、メッセージから分かるのはAltキーだけですか?
0582デフォルトの名無しさん2009/01/27(火) 23:24:14
>>576
は?目覚ましって何?!

早くソース作れよこれzipでやるからよ
http://vbvbvb.com/jp/gtips/0751/gGetForegroundWindow.html
0583デフォルトの名無しさん2009/01/27(火) 23:35:03
>>581
GetKeyState
0584デフォルトの名無しさん2009/01/27(火) 23:39:44
ListViewを詳細表示にしていて、
マウスでListViewをドラッグして複数行選択した後、
マウスをドロップ(っていうのかな?範囲選択が終わって、マウスボタンから指を離す事)
した瞬間を捕まえるには、何のメッセージを捕らえれば良いのかな??

ListViewのWM_LBUTTONUPかと思ったんだけど、どうも違うと分かって、
ListViewの親ウィンドウに、WM_NOTIFYで何かのメッセージが飛んで来るんだと思って、
いろいろググってみたけど分からない。

知ってる人がいたら教えて下さい。
0585デフォルトの名無しさん2009/01/27(火) 23:40:37
>>584
Spy++で調べろ
0586デフォルトの名無しさん2009/01/28(水) 00:25:03
>>584
ttp://msdn.microsoft.com/en-us/library/cc656509.aspx
0587デフォルトの名無しさん2009/01/28(水) 00:27:23
>>583どうやらそれが妥当みたいですね。ありがとうごぜいました。
05885622009/01/28(水) 00:35:06
なんか知らないうちにあらされてるな^^;
とりあえず>>562以外は偽者なので無視でお願いします。
以下のソースを書いてみたんだけどなぜかGetWindowTextLengthのところで
エラーになっちゃいます。理由わからないのでどうか教えてくださ〜い。

Dim ret As Long
ret = GetForegroundWindow

Me.Text = "タイトル"

If ret <= 0 Then
Exit Sub
End If

Dim length As Integer = GetWindowTextLength(ret)
If length <= 0 Then
Exit Sub
End If

Dim lpStringBuf As System.Text.StringBuilder
lpStringBuf = New System.Text.StringBuilder("", length + 1)

GetWindowText(ret, lpStringBuf, lpStringBuf.Capacity)
Me.TextBox1.Text = lpStringBuf.ToString
0589デフォルトの名無しさん2009/01/28(水) 00:57:43
GetLastErrorしろ
0590デフォルトの名無しさん2009/01/28(水) 01:46:04
ドザは荒らすのがよほど好きと見える。
0591デフォルトの名無しさん2009/01/28(水) 07:10:32
>>588
お前が荒らしたのはバレバレ
今さら善人ぶって「荒らしたのは偽物なので教えてくれ」なんて言っても説得力皆無
0592デフォルトの名無しさん2009/01/28(水) 07:19:37
DeclareかDllImportAttributeのどっちを使ってるかは知らんが、
そこが間違ってたらそれまでだしなあ。
0593デフォルトの名無しさん2009/01/28(水) 09:53:27
メモリマップドファイルの逆バージョンって無いんですか?
メモリの内容をファイル用APIとかで扱いたい。
0594デフォルトの名無しさん2009/01/28(水) 10:58:07
>>588
HWNDはIntPtrにするのが普通みたいだけど?
0595デフォルトの名無しさん2009/01/28(水) 11:26:08
エラーになっちゃうってそのエラーの内容書いたらいいのに
0596デフォルトの名無しさん2009/01/28(水) 11:27:58
次の縮小処理をもっと高速にする方法はありませんか。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8761.txt
0597デフォルトの名無しさん2009/01/28(水) 11:44:01
インラインアセンブラでMMXを使いベクトル演算
0598デフォルトの名無しさん2009/01/28(水) 11:55:45
>>596
iyの変化に影響せずixの変化に影響するする変数を
予めループの外で計算しておく。(計算結果は配列に入れる)
浮動小数点は極力使わない。(10000倍とかの係数で対応)
0599デフォルトの名無しさん2009/01/28(水) 12:00:14
registerとか古臭い書き方ぽいけど
それだと0.5倍未満でエイリアス出てくるよ。
MMX使えないとしてもDWORDならx8R8G8B8をx16G16とR16B16に分ければ
16bitまでの加算は同時に2つ行える。
0.5倍未満の縮小をちゃんとやりたいならメモリ食うけど2passスケーリングにすると処理量が減る。
0600デフォルトの名無しさん2009/01/28(水) 12:19:26
昨日の者ですが、キーイベントに関してまた質問させてもらいます。
WM_KEYDOWNが来た時にプロシージャ内で仮想キーがテンキーパッドにあるキーだった場合に
GetKeyState関数を使いNumLockが利いているかを最下位ビットを取るという方法でチェックしています。
しかし、何故か方向キーを連続で押すと最下位ビットが0と1を繰り返します。テンキーでない方でも同様でした。
NumLockが押されているかをチェックするのはどうすればいいんでしょうか?
0601デフォルトの名無しさん2009/01/28(水) 12:27:16
>>597-599
難しくてよくわかりません。例を示してくれませんか?
0602デフォルトの名無しさん2009/01/28(水) 12:28:46
補記:MMXは使えません。
0603デフォルトの名無しさん2009/01/28(水) 12:42:10
ここ最近、質問者が何か異常だな
スレ違いにも拘らずここまで答えもらっているのに
返ってきた言葉が「難しくてよくわかりません。例を示してくれませんか?」
よそに池
0604デフォルトの名無しさん2009/01/28(水) 12:44:01
>>603
日本語が難しくてよくわかりません。例を示してくれませんか?
0605デフォルトの名無しさん2009/01/28(水) 12:55:52
つまんね
0606デフォルトの名無しさん2009/01/28(水) 12:56:45
ねんまつ
0607デフォルトの名無しさん2009/01/28(水) 13:19:20
>>603
知らないならレスしないで下さい。ウザいだけです。。。
0608デフォルトの名無しさん2009/01/28(水) 13:20:36
>>600を教えてください。変な流れで質問が流れそうだ・・・
0609デフォルトの名無しさん2009/01/28(水) 13:24:34
>>607
何処の質問スレいってもそればっかりだな
答えてくれなくなるぞ
0610デフォルトの名無しさん2009/01/28(水) 13:27:57
>>609
知らないならレスしないで下さい。ウザいだけです。。。
0611デフォルトの名無しさん2009/01/28(水) 13:30:08
>>610
知らないならレスしないで下さい。ウザいだけです。。。
0612デフォルトの名無しさん2009/01/28(水) 13:40:23
>>608
仮想キーがテンキーだった場合は
NumLock効いてるんじゃないの?
NumLockがオフだとVK_LEFTとかが来るぞ
0613デフォルトの名無しさん2009/01/28(水) 14:38:37
>>600
どんなコードを書いたの?
0614デフォルトの名無しさん2009/01/28(水) 15:31:34
case WM_KEYDOWN:
  if( wp == VK_DOWN ){
    bool numlock = ::GetKeyState(wp)&1;
    ifstream("log.txt") << numlock;
  }
  break;
今チェックしてないですけど、こんな感じで
0615デフォルトの名無しさん2009/01/28(水) 15:35:16
srud(>>611);
0616デフォルトの名無しさん2009/01/28(水) 15:46:00
ctime等で吐いた文字列を、またtime型などに戻す方法を教えていただけませんか?
0617デフォルトの名無しさん2009/01/28(水) 15:53:25
>>616
スレ違いと分かっててわざと言ってるだろお前
0618デフォルトの名無しさん2009/01/28(水) 15:56:16
最新100レスでageて質問してるのは同一人物の荒らしだからスルーしとけ
0619デフォルトの名無しさん2009/01/28(水) 16:05:09
>>617
知らないならレスしないで下さい。ウザいだけです。。。
0620デフォルトの名無しさん2009/01/28(水) 16:16:41
しかし、普通に質問してる人に荒らし疑惑をかけて答えないのでは
スレの価値がないのだ。荒らしが言いたいことは「Linuxを使え」な
のだから。お前たちが改心してLinuxを使わない限り荒らしは収まら
ないだろう。どちらにしろ勝ち目のない戦いを挑んでいることになる。
荒らしを気にするあまり答えなければ荒らしの目論見どおりスレは潰
れる。答えれば荒らしでしたーという感じでバカにされる場合もある。
勝ち目はない。

ここはどうだろう?荒らされるに任せて200スレくらいまで伸ばして
「やはりWinAPIは流行ってるな〜」などと悦にいってみるのは?それも
悪くない。たかがAPIごときで75まで伸びるスレは他にないのだから。
Linux、Mac、UNIXのスレが75まで伸びた頃宇宙歴(Linuxに習ってヲタ
風にしてみた)はいくつだろうか?このスレは数千を超えているだろう。
悪くない。実に悪くない。

嵐に負けず、丁寧に一つ一つ質問に答えていくことを推奨する。

※LinuxはMacでもUNIXでもRubyでも好きに置き換えて読んでいただ
きたい。
0621デフォルトの名無しさん2009/01/28(水) 16:21:51
にわかLinuxヲタうぜーよ
どうせコピペに釣られてUbuntuあたりでポチポチしてたクチだろ
06226162009/01/28(水) 16:28:22
ごめんなさい…
かなり真面目に質問してました…il|iorz
そしてsage忘れたのも重ねて謝ります…

…スレ違いですか?
.NETスレにでも行けばいいですか?



そして何この流れ
0623デフォルトの名無しさん2009/01/28(水) 16:32:54
ctimeの実装は知りませんが、ctimeというインターフェースはC言語というフレームワークにおけるものです。
Win32APIとは異なります。
0624デフォルトの名無しさん2009/01/28(水) 16:33:37
この板にはLinuxスレが3個ある。すべてネタスレである。Linuxプログ
ラミングのみを扱うスレは無い。Linuxプログラマーなどいない。イン
ストールしただけで開発者を自称するのである。本来Linuxユーザーは
技術板に来てはいけない人種なのだ。来てしまった以上、荒らすのは
当然の成り行きとも言える。板違いなのである。
0625デフォルトの名無しさん2009/01/28(水) 16:38:01
>>622
【初心者歓迎】C/C++室 Ver.63【環境依存OK】
http://pc11.2ch.net/test/read.cgi/tech/1231499251/l50
0626デフォルトの名無しさん2009/01/28(水) 16:54:48
>>624
Linux上の開発環境のほとんどはLinux固有のものじゃないだろうがこの低脳
お前がム板から消えろ
06276162009/01/28(水) 17:18:18
>>623
あ、ctimeで有る必要は全くなくて、
何か指定したフォーマットで時間を文字列に出力して
文字列を指定したフォーマットで時間に戻すような関数の組み合わせがあれば教えていただけませんか?
0628デフォルトの名無しさん2009/01/28(水) 17:24:30
SystemTimeToFileTime
FileTimeTo??? で最後に time型(time_t ?) に近いもの探して変換代入ぐらいか?
0629デフォルトの名無しさん2009/01/28(水) 17:31:43
Win32で強いて挙げるとしたら、VarDateFromStr/VarBstrFromDateかな。
文字列からの変換はエラー時の処理の要求が千差万別なので、
APIとして用意するのがあまり現実的でないんだよね。
06306162009/01/28(水) 18:26:00
>>628
>>629
ありがとうございます!
0631デフォルトの名無しさん2009/01/28(水) 18:57:17
>>614
遅くなってすまん。

GetKeyState(VK_NUMLOCK)
0632デフォルトの名無しさん2009/01/28(水) 19:34:56
>>588でソース書いたものなんですがようやくできました
VB、NETだとハンドルはLong型ではなくINT型じゃないと駄目なんですね
勉強になりました
ところでウインドウから取得した情報をもとに、そのウインドウがどんなアプリ(エクセルとかメモ帳とかVBとか)なのかという情報を取得することって出来るでしょうか?
どなたか教えて下さい
よろしくお願いします
0633デフォルトの名無しさん2009/01/28(水) 20:00:48
ちょっと待った。.NETならハンドルはIntPtr型にしろ。
0634デフォルトの名無しさん2009/01/28(水) 20:07:27
>>632
つーかInt型でもマーシャリング時にエラー吐くんじゃないかなあ
.NETスレじゃないのでこれ以上触れないが

ウィンドウからプロセスIDが取れる(GetWindowThreadProcessId)
プロセスIDからプロセスを開き、そこからモジュールのパスが取れる(EnumProcessModules)
ttp://support.microsoft.com/kb/175030/ja

あとは実行ファイル名のデータベース用意するなりなんなりする
0635デフォルトの名無しさん2009/01/28(水) 20:45:08
ResourceHackerみたいに実行ファイルからリソースを取得するには?
0636デフォルトの名無しさん2009/01/28(水) 20:50:19
EnumResourceNamesとか嫁
0637デフォルトの名無しさん2009/01/28(水) 20:50:57
LoadLibraryExにLOAD_LIBRARY_AS_DATAFILE
0638デフォルトの名無しさん2009/01/28(水) 21:38:05
>>3
のリンクの猫でもわかるのサイトを全部理解しできたらプログラマになれますか?
まだ足りないですか?
0639デフォルトの名無しさん2009/01/28(水) 21:41:22
プロなら×
そうじゃないなら自称プログラマ
0640デフォルトの名無しさん2009/01/28(水) 21:41:55
まず就職試験受けて合格して入社してください。
0641デフォルトの名無しさん2009/01/28(水) 21:42:19
プロでも全然理解してないよ
熟知してる人に合うのは稀
0642デフォルトの名無しさん2009/01/28(水) 21:42:57
全部理解してなくても、プログラマとしてどっかの会社に採用されればプログラマ名乗っていいと思うよ。
0643デフォルトの名無しさん2009/01/28(水) 21:49:35
>>641
嘘だろ
猫ぐらいの事は熟知してるだろ
さすがに関数全部は覚えちゃいないが
0644デフォルトの名無しさん2009/01/28(水) 21:50:43
WM_PAINT で BeginPaint せずに GetDC して描画してるコードとかよく見るし・・・
ひでえよ
0645デフォルトの名無しさん2009/01/28(水) 21:53:06
ValidateRectしてやればいいだろ
0646デフォルトの名無しさん2009/01/28(水) 21:57:51
そんなのやってるわけないだろ
0647デフォルトの名無しさん2009/01/28(水) 21:59:01
まともに動いてるならやってあるだろ
0648デフォルトの名無しさん2009/01/28(水) 21:59:44
やってないんですよ!!! それが!!!
0649デフォルトの名無しさん2009/01/28(水) 22:01:00
>>644
おいおい、Windowはお前と違って忙しいんだから
描画ぐらいWM_PAINTなんてしないで、Windowに好きにやらせろよ
0650デフォルトの名無しさん2009/01/28(水) 22:01:51
だからつまんないっての
0651デフォルトの名無しさん2009/01/28(水) 22:02:48
DefWindowProcに流してれば、Begin/EndPaintが呼ばれるので問題ない。
ValidateRectよりは可能性高い気がしないか?
0652デフォルトの名無しさん2009/01/28(水) 22:02:50
やってないとWM_PAINTがずっと発生してまともに動かないだろ
0653デフォルトの名無しさん2009/01/28(水) 22:04:25
>>651
0654デフォルトの名無しさん2009/01/28(水) 22:04:39
まあ DefWindowProc は呼ばれてた気はするが、
BeginPaint 使わないと上にあるコントロールなどの上から描画しちゃったりするんだよな
0655デフォルトの名無しさん2009/01/28(水) 22:12:17
お前らよりWindowsプログラミングについて詳しく、ちゃんと根拠ないしアプリケーションの制約があるからそうしてるに決まってるだろ
0656デフォルトの名無しさん2009/01/28(水) 22:14:21
break; が好きなだけだろ
0657デフォルトの名無しさん2009/01/28(水) 22:15:35
>>655
バグだからって俺が修正したというのに
0658デフォルトの名無しさん2009/01/28(水) 22:24:38
>>634
さんくす
0659デフォルトの名無しさん2009/01/28(水) 23:10:55
>>631ありがとうございます。それでNumlockがONかどうかは分かりました。
しかし、やりたいのは”押された方向キーがテンキー上のものかどうか”をチェックすることでして、
それだと、まったく意味がありませんでした。このようなチェックってどうやるんでしょうか・・・?
0660デフォルトの名無しさん2009/01/28(水) 23:11:23
このスレッドは天才チンパンジーシミュレータ「iちゃん」が
言語訓練のために立てたものです。

iちゃんと調教サーバのトランザクションに利用するスレッドなので、
関係するプロセス内のスレッド以外からは書きこまないで下さい。
0661デフォルトの名無しさん2009/01/28(水) 23:13:00
>>659
VK_LEFT等の値が来たとしたらそれはNumLockがOnのテンキーではあり得ないんじゃないのか
0662デフォルトの名無しさん2009/01/28(水) 23:27:29
>659
流れを読まずにレスするけど、WM_KEYDOWNのlParamのbit23-16のスキャンコードかbit24を
見るしかないんじゃないかな。
0663デフォルトの名無しさん2009/01/28(水) 23:35:13
>>661
一応思ってたことができたんで報告。
VK_LEFTはNumlockがオフの時、方向キーとテンキー両方から送られてきます。
用はこの時どちらが押されたのかを調べたかったんですが、どうやらこれらはLPARAMの24ビット目(拡張ビット)を
見ることで分かるようです。
後でこれを見るかもしれない人のために張っときます。

bool numlock = false;
if( wp == VK_RETURN ){
  numlock = lp&0x1000000;
}else
if( (wp >= VK_PRIOR && wp <= VK_DOWN) || wp == VK_INSERT || wp == VK_DELETE || wp == VK_CLEAR ){
  numlock = (lp&0x1000000)==0;
}

GetKeyState要りませんでした。
0664デフォルトの名無しさん2009/01/28(水) 23:35:59
>>662おっとすいません。リロードしてなかったもんで。どうやらその通りでした。
0665デフォルトの名無しさん2009/01/28(水) 23:36:21
>>634
解説ありがとうございました。
とても参考になったんですが、いろいろやってみて
アクティブになったウィンドウのプロセスIDを取得することはできたんですが、
アプリケーション名を取得することがなかなかできませんでした・・・。
すいませんがもう少しヒントをよろしくお願いいたします。
0666デフォルトの名無しさん2009/01/28(水) 23:39:46
アプリケーション名って何よ
0667デフォルトの名無しさん2009/01/28(水) 23:42:08
>>665
いい加減VBスレか.NETスレ行けよ
0668デフォルトの名無しさん2009/01/28(水) 23:44:59
>>665
>プロセスIDからプロセスを開き、そこからモジュールのパスが取れる
OpenProcess→EnumProcessModules→GetModuleFileNameEx

これで全てな気がするが…
ヒントって何だ

>>666
プロセスを生成したモジュールファイル名じゃないの
0669デフォルトの名無しさん2009/01/28(水) 23:52:23
>>668
助かりましたありがとうございます!
いろいろと無知ですみません!
0670デフォルトの名無しさん2009/01/28(水) 23:53:13
>>668
.NET Frameworkでなんかあったはずだから、VB.NETスレで聞いたほうがいいと思うんだよな。
06716682009/01/28(水) 23:58:27
俺もProcessクラスのMainModuleプロパティとか使った方が速いと思うけど

わざわざAPIでやりたい物好きのようだから、APIで答えてあげたよ
俺って超優しい
0672デフォルトの名無しさん2009/01/29(木) 00:18:32
>>671
できました!
MainModuleのほうでやりました。
しかし、vb.netにこんなべんりな関数があったなんて。
勉強になりました。ありがとうございました。
06736682009/01/29(木) 00:21:46
死ね
0674デフォルトの名無しさん2009/01/29(木) 00:26:24
>>673
その気持ちすごくわかる
0675デフォルトの名無しさん2009/01/29(木) 00:27:58
おまいらって、コンパイル
マルチバイト、海栗
どっちでしている?
0676デフォルトの名無しさん2009/01/29(木) 00:33:02
VSのデフォが海胆になったので海胆で良いと思った。
0677デフォルトの名無しさん2009/01/29(木) 01:48:59
ChangeDisplaySettingsでセカンダリディスプレイの解像度変えられますか?
0678デフォルトの名無しさん2009/01/29(木) 01:51:54
知らないから質問しないでください
0679デフォルトの名無しさん2009/01/29(木) 01:57:42
MSDN読めよ
一行目に書いてあるから
0680デフォルトの名無しさん2009/01/29(木) 03:43:39
読んだけど分からなかった。ChangeDisplaySettingsExではいけるけど、ChangeDisplaySettings
では無理ってこと?
0681デフォルトの名無しさん2009/01/29(木) 04:09:35
あれが分からないとなると
説明しても理解する努力をしてもらえなさそうだな
0682デフォルトの名無しさん2009/01/29(木) 04:13:30
理解する能力が欠けてるんだよ
昔はこんなスレなんか無かったからな一人で頑張ったもんさ
0683デフォルトの名無しさん2009/01/29(木) 04:55:19
cygwinで音を出したい.
http://wisdom.sakura.ne.jp/system/winapi/media/mm6.html
のコードを
g++ wave.cpp -lwinmm -lgdi32
でコンパイルは通る&音出るけど,動作が停止する.なぜ?
こちらvista bussiness & g++ 3.4.4
0684デフォルトの名無しさん2009/01/29(木) 06:31:22
VistaのMMEエミュレーションはそんなに優しくないらしいよ。
シングルバッファで結構エグい再生の仕方してるせいで
waveOutWriteが返って来ずにメッセージループが止まってるとか。
もしくは単にドライバが腐ってるだけとか。
0685デフォルトの名無しさん2009/01/29(木) 07:18:03
>>684
Win32s 対応もそろそろ厳しいな
0686デフォルトの名無しさん2009/01/29(木) 07:38:21
MS謹製ラッパは滅びぬ。何度でもよみがえるさ。
0687デフォルトの名無しさん2009/01/29(木) 07:56:32
waveOutは、10年前にWindows98でDirectSoundが
標準で再生できるようになった時点で用済みだろ。
昔は腐ったドライバもあったからまだ検討する価値も多少あったが、
完全にエミュレーションとなった今では全く無意味だな。
0688デフォルトの名無しさん2009/01/29(木) 09:39:01
質問

Hwnd = CreateWindowEx(WS_EX_TOOLWINDOW | WS_EX_TOPMOST | WS_EX_LAYERED, "", "",
WS_POPUP, x, y, WIDTH, HEIGHT, NULL, NULL, GetModuleHandle(NULL), NULL );

SetLayeredWindowAttributes(Hwnd, RGB(255, 255, 0), 0, LWA_COLORKEY);

こういう感じで子ウィンドウの透明化していたんですけど
windows2000使っていた時は問題なく動いていたのに、XPsp3だと全く見えなくなってしまいました。
(WS_EX_LAYERED外すとxpでもちゃんと動く)

xpでWS_EX_LAYERED指定した時点で見えなくなるのはいいんですが
SetLayeredWindowAttributes が全然効いてない感じです。

なにか間違っているところありますかー
0689デフォルトの名無しさん2009/01/29(木) 12:30:23
>>688
>こういう感じで子ウィンドウの透明化していたんですけど

WS_EX_LAYERED
Windows 2000/XP: Creates a layered window. Note that this cannot be used for child windows.
                                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Also, this cannot be used if the window has a class style of either CS_OWNDC or CS_CLASSDC.
0690デフォルトの名無しさん2009/01/29(木) 12:41:24
683です.
cygwinのdefaultのg=++からMinGWのg++に変更したらあっさり解決しました.
Vistaが原因なのかcygwinが原因なのかはわからずじまい.
0691デフォルトの名無しさん2009/01/29(木) 12:44:27
>>689
すみません子は書き間違いでした
0692デフォルトの名無しさん2009/01/29(木) 12:53:00
>>691
XP SP3だけど試しにやってみたら普通にできるが。
なにか別のところでヘマやってるんじゃないの?
0693デフォルトの名無しさん2009/01/29(木) 13:28:31
>>692
確かに別のところでヘマしてるかもしれませんが
何故か2000では問題なし
どこが怪しいのかもわかりません…
0694デフォルトの名無しさん2009/01/29(木) 13:30:19
頑張ってデバッグしてくれw
0695デフォルトの名無しさん2009/01/29(木) 13:41:58
>>693
まずレイヤードウィンドウの単純なテストプログラムでも作って動作確認してみなよ。
それで動くんなら自分のプログラムに不備があるんだろう。
0696デフォルトの名無しさん2009/01/29(木) 13:52:17
>>695
出かけねばならず後でちょっと作ってみます
0697デフォルトの名無しさん2009/01/29(木) 15:39:07
たまたまうまく動いていたものが動かなくなった好例ですね
0698デフォルトの名無しさん2009/01/29(木) 15:41:45
黙れクズ
0699デフォルトの名無しさん2009/01/29(木) 15:46:06
とクズが申しております。
0700デフォルトの名無しさん2009/01/29(木) 15:59:17
DCB構造体についてなのですが

DCB構造体のメンバ
EofChar; /* EOF文字 */
EvtChar; /* イベント通知文字 */

イベント開始とEOFを検出するとどのような動作をするのでしょうか?
0701デフォルトの名無しさん2009/01/29(木) 21:57:52
マウスホバリングについて

_TrackMouseEventが返り値1でdwFlagsがTME_LEAVEの時に
WM_MOUSELEAVEがまったく飛んできません。ちなみにTME_HOVERにしたらWM_MOUSEHOVERは飛んできました。
何が悪いんでしょうか?
0702デフォルトの名無しさん2009/01/29(木) 22:48:29
ListViewを詳細表示にして、
データが入っているカラムの上からドラッグを始めて、
そのまま複数のアイテムを選択する方法ってありますか??
0703デフォルトの名無しさん2009/01/29(木) 23:02:35
どゆこと?
0704デフォルトの名無しさん2009/01/29(木) 23:04:28
>>695
さっそく単純な窓のみのプログラムを作ったところ問題無く透明化出来ました。

実は出来ないと言った問題のプログラムは、2枚ウィンドウがあるのです。
2000の時は、一枚目をHIDEにして2枚目を透明化していました。

XPで2枚のウィンドウを表示させるだけのプログラムを作ったところ
一枚目は透明化出来るんですが、2枚目がどうしても出来ません。
制限でもあるのでしょうか?
07057022009/01/29(木) 23:08:01
>>703
ListViewは、
右余白(データの入っていない部分)をクリックしてドラッグを始めると、
普通に複数行選択できますが、
データの入っている部分をクリックしてドラッグを始めると、複数行選択できません。

これの解決方法がぜひ知りたいのです。
(結構ググッたのですが、探し出せませんでした。
 もしかして不可能だったりするのでしょうか・・・)
0706デフォルトの名無しさん2009/01/29(木) 23:14:06
>>704
ソースうp
0707デフォルトの名無しさん2009/01/29(木) 23:59:22
>>706
余計なゴミとか削って70行になったけど
ここでいいのかな
0708デフォルトの名無しさん2009/01/30(金) 00:00:40
うpろだにうpしてリンク貼ろう
0709デフォルトの名無しさん2009/01/30(金) 00:14:02
>>708
ttp://www1.axfc.net/uploader/File/so/17680

これでいいのかな
おねがいします
0710デフォルトの名無しさん2009/01/30(金) 00:31:43
すいません>>701お願いします。
コード抜粋するとこんな感じです。
case WM_MOUSEMOVE:
  if(!hover){
    TRACKMOUSEEVENT tme;
    tme.cbSize = sizeof(TRACKMOUSEEVENT);
    tme.dwFlags = TME_LEAVE;
    tme.hwndTrack = hwnd;
    hover=true;
    _TrackMouseEvent(&tme);
  }
  break;
case WM_MOUSELEAVE:
  hover = false;
  break;
0711デフォルトの名無しさん2009/01/30(金) 01:38:54
コントロールパネルの電源オプションのプロパティの
「システム スタンバイ」「システム 休止状態」についてですが、
このシステムのアイドル時間が今いくらかを知る方法はなかったでしょうか?

起動しているといくら待ってもスタンバイにならないプログラムがあって
原因が何なのか調べたいのですが、毎回1分待っていてはきりがないので……。
0712デフォルトの名無しさん2009/01/30(金) 01:56:54
>>709
staticだから
てかWM_DESTROYでDestroyWindowって・・
0713デフォルトの名無しさん2009/01/30(金) 02:08:46
つ http://ranobe.com/up/src/up334011.jpg
0714デフォルトの名無しさん2009/01/30(金) 02:46:06
変態
0715デフォルトの名無しさん2009/01/30(金) 04:10:03
>>712
> WM_DESTROYでDestroyWindow
WM_DESTROYが無限再帰してスタックオーバーフローするのを期待して試したら何も起きなかったw
DestroyWindow側で再入防止の対策してあるのかな
0716デフォルトの名無しさん2009/01/30(金) 04:30:37
>>712
まだわからないです…
そこを変えまくっても色々変えまくっても変化なく
2000では普通に表示される…
0717デフォルトの名無しさん2009/01/30(金) 05:03:38
>>712
あ、できました
寝ぼけててちゃんとクラス設定してなかったけど
したら出来ました…こんな簡単なことだったのかあ
助かりました。

でもよくわからないのが、2000だと別に定義済みクラスでもなんでも
普通に透明化出来るんですよね


うpの為の適当なソースなので他のところあまりいじらんでくださいw
ありがとうございました
0718デフォルトの名無しさん2009/01/30(金) 08:29:41
やりたいこととしては、吉里吉里とDXライブラリを同ウィンドウで処理することなんですが


WinAPIでウィンドウ作って
その子ウィンドウとして、ある.exeファイルを起動(吉里吉里)
そして、通常は霧きりで進行、なんらかのフラグでDXライブラリに移行
みたいなのを創造しているのですが、これは可能なのでしょうか?

知識があまり無いので勘違いしまくりの発言だったらすいません
0719デフォルトの名無しさん2009/01/30(金) 08:48:29
無理
0720デフォルトの名無しさん2009/01/30(金) 08:50:44
ちなみに無理である理由を細かく挙げてやろうと思ったが
知識がないからと前置きされてしまったので止めた。すまぬ
0721デフォルトの名無しさん2009/01/30(金) 08:52:45
>>720
もしよければあげてもらえると嬉しいです
WinAPIは勉強中なので、これから理解できるかもしれませんし
0722デフォルトの名無しさん2009/01/30(金) 08:55:22
>>721
最悪自分で吉里吉里のソースいじる根性があるなら不可能じゃないが。
質問文のレベルからするとすっぱり諦めたほうが早いな。
0723デフォルトの名無しさん2009/01/30(金) 08:57:07
吉里吉里を起動、待機させておく
そして、もう一つのアプリ起動し、描画先を吉里吉里で作ったウィンドウにする
これでできる
0724デフォルトの名無しさん2009/01/30(金) 09:02:46
>>701>>710お願いします。
0725デフォルトの名無しさん2009/01/30(金) 12:43:27
WM_MOUSEHOVER時にTrackMouseEvent 呼んでないんじゃない?
0726デフォルトの名無しさん2009/01/30(金) 13:31:00
>>720
俺も無理である理由に興味あるなぁ。なんで?
0727デフォルトの名無しさん2009/01/30(金) 14:22:40
>>725やってもできませんでした・・・。
しかもやっぱりWM_MOUSEHOVERすら来ていないようです。
0728デフォルトの名無しさん2009/01/30(金) 16:57:49
質問です。

現在のシングルスレッドアプリケーションは下記のような仕組みでやっています。
最初はSleepすら入れなかったため、CPU使用率が100%近くなってしまいました。

で、一番良いのは GetMessageにタイムアウト時間を設定できることなのですが、そういうAPIは無いでしょうか?


if (::PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
{
 if (::GetMessage(&msg, NULL, 0, 0))
 {
  ::TranslateMessage(&msg);
  ::DispatchMessage(&msg);
 }
 else
 {
  break;
 }
}
else
{
 run(); // 内部で1フレーム分時間が経ったかチェックして、経っていなかったら::Sleep(1);して何もせずに制御を返す
}
0729デフォルトの名無しさん2009/01/30(金) 16:58:47
すいません、全体を while(true)で囲んでいるのをコピーするの忘れました。

実際は最初の行の前にwhile(true){があり、最後の行の下に } があります。
0730デフォルトの名無しさん2009/01/30(金) 17:10:29
そんな馬鹿な
0731デフォルトの名無しさん2009/01/30(金) 17:15:22
何か解決策があるなら俺も知りたい。
俺では思いつかなかったから、結局スレッド分けてる。
0732デフォルトの名無しさん2009/01/30(金) 17:22:22
MsgWaitForMultipleObjects で
シグナルにならないダミーイベントwait をタイムアウト付きでやるぐらい?
0733デフォルトの名無しさん2009/01/30(金) 17:37:54
>>732
ありがとうございます。
試してみたところ、なかなか良い動きをしてくれているようです。

MsgWaitForMultipleObjectsExのほうでないと「すでにイベントキューが貯まっているか」を見てくれないようなので、Exを使いました。

シングルスレッドで十分なちょっとしたツールの時など、役に立ちそうです。
0734デフォルトの名無しさん2009/01/30(金) 17:55:10
質問があります。
リストビューを登録しました
LV_ITEM item;

item.mask = LVIF_TEXT | LVIF_PARAM;
item.pszText = "AAA";
item.iItem = 0;
item.iSubItem = 0;
item.lParam = 1;
ListView_InsertItem(hList, &item);
別の関数で item.lParam が持つ値を知りたいです。(この場合、1ですが)ListView_○○とかマクロがあったと思うのですが忘れてしまって困ってます
lParamが持ってる値を知る方法知りませんか?
0735デフォルトの名無しさん2009/01/30(金) 18:01:36
その程度CommCtrl.hでも見ろよ
0736デフォルトの名無しさん2009/01/30(金) 18:41:13
助言ありがとうございます。
commctrl.hに載ってるのを忘れてました。感謝です。
0737デフォルトの名無しさん2009/01/30(金) 20:03:45
どーでもいい話だが
Sleepは0が基本で、それでもCPU 100%になるようなら
少しずつ値を増やしていく
0738デフォルトの名無しさん2009/01/30(金) 20:07:27
まあSleep(1)が妥当だよな。そんな速度欲しい処理でもなけりゃ
0739デフォルトの名無しさん2009/01/30(金) 20:08:23
sleep()笑
0740デフォルトの名無しさん2009/01/30(金) 20:27:39
sleep()笑ってどういうこと?
もっといい方法があるの?
それともただの馬鹿なの?死ぬの?
0741デフォルトの名無しさん2009/01/30(金) 20:36:19
0だと、実行中の同じ優先度のスレッドが無い時は直ぐ戻ってくるからな。
1の方が良いかもしれんね。

それにしてもWindows7SDKになっても未だに、
Sleepの分解能上げたかったら、timeBeginPeriod使えって書いてあるのな。
もう少しMMCSSをプッシュしても罰は当たらないと思うんだ。
0742デフォルトの名無しさん2009/01/30(金) 21:23:08
bitmapのプレビューをdialogに表示するために
SetDIBitsToDevice(hdc,
0, 0, //転送先座標
wx, wy, //幅、高さ
0, 0, //転送元座標
0, wy, //走査開始番号、走査線の本数
//ビットマップデータ開始のアドレス
(char *)szBuffer + dwOffBits - sizeof(BITMAPFILEHEADER),
lpbmp_info, //BITMAPINFO構造体へのポインタ
DIB_RGB_COLORS);
をやっているのですが、これだとそのままbmpが表示されてしまいます。
たとえば4167×4167の画像を表示しようとするとDialogがくそでかくなってしまいます。
そこでbitmapを「縮小」してプレビューしたいのですが
どうしたらいいですか?
0743デフォルトの名無しさん2009/01/30(金) 21:31:07
StretchDIBits
そのサイズだと古いOSとか場合によっては失敗するけどな。
0744デフォルトの名無しさん2009/01/30(金) 22:02:42
GDI+で縮小すればいいじゃん
0745デフォルトの名無しさん2009/01/30(金) 22:13:07
GDI+といえば、マルチスレッドのプログラムで動かしてたらフォントの作成あたりで何回か例外で落ちたんだけど、そういうものなの?
0746デフォルトの名無しさん2009/01/30(金) 22:16:40
タスクトレイにアイコンを表示させようとしてるんですが透明?なアイコンしか表示されません。
トレイにカーソルを持ってくるとソフト名はポップアップされますが見えないんです。
case WM_CREATE:
hIcon = LoadIcon(NULL,".rcにあるアイコン名");
nIcon.cbSize = sizeof(NOTIFYICONDATA);
nIcon.hWnd = hwnd;
nIcon.uID = 0;
nIcon.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
nIcon.uCallbackMessage = WM_USER + 1;
nIcon.hIcon = hIcon;
lstrcpy(nIcon.szTip,"ソフト名");
Shell_NotifyIcon(NIM_ADD,&nIcon);
何がいけないんでしょ?
0747デフォルトの名無しさん2009/01/30(金) 22:25:17
hIcon = LoadIcon(NULL,".rcにあるアイコン名");

どう考えてもこれだろ
0748デフォルトの名無しさん2009/01/30(金) 22:25:20
> hIcon = LoadIcon(NULL,".rcにあるアイコン名");
0749デフォルトの名無しさん2009/01/30(金) 22:29:47
*縮小処理はうまくいきました。
>>743 ありがと
で、
GDI+でぐぐっても有益な情報がでてこない。
GDI+について何かおすすめの「本」ありますか?
0750デフォルトの名無しさん2009/01/30(金) 22:32:49
gdiplusでぐぐれ
0751デフォルトの名無しさん2009/01/30(金) 22:34:50
>>749
.NET関連の本ぐらいしか日本語で読める書籍はなかろう。
普通にWin32APIとC++理解してるならMSDNの情報だけで概ね事足りると思うが。
0752デフォルトの名無しさん2009/01/30(金) 22:39:43
>>747-748
別の書き方しないとダメですか。
0753デフォルトの名無しさん2009/01/30(金) 22:40:12
>>749
Graphics::DrawImageで幅と高さを指定するだけなのに情報も何も
0754デフォルトの名無しさん2009/01/30(金) 22:49:32
>>741
Google ChromeがtimeBeginPeriod(1)を呼ぶせいで、
CPU仕様率が上がってうるさいという話があるわけで、そう簡単な話でもないようだ。
http://www.google.co.jp/search?hl=ja&q=timeBeginPeriod+chrome
0755デフォルトの名無しさん2009/01/30(金) 22:49:37
で、マルチスレッドでGDI+は使っていいのか?悪いのか?
0756デフォルトの名無しさん2009/01/30(金) 22:53:57
>>755
スレッドセーフに作らなければ何使ってもダメだろ

>>741
Sleep(1);だと10msぐらい返って来なくね?
ちょっと時間掛かりすぎだと思
0757デフォルトの名無しさん2009/01/30(金) 22:54:15
とりあえずGdiplusStartupと対応するGdiplusShutdownは違うスレッドで呼んでもいいと書いてある。
http://msdn.microsoft.com/en-us/library/ms534077.aspx

だから、おそらくスレッド毎にGdiplusStartupとGdiplusShutdownに呼ぶ必要もないし、
複数スレッドで使ってもいいのだろうと俺は思う。
0758デフォルトの名無しさん2009/01/30(金) 22:55:41
同じオブジェクト同時に触らないようにして普通にマルチスレッドで使ってるよ。
0759デフォルトの名無しさん2009/01/30(金) 23:04:39
親WindowのEditBoxの文字列を取得するにはどうしたらいいですか?

子Dialogで
hDlg_a=GetParent(hDlg);
// GetDlgItemText(hDlg_a,IDC_EDITBOX,FileName,(int)sizeof(FileName)-1);

とかいてもうまくFileNameに文字列が入りません。
0760デフォルトの名無しさん2009/01/30(金) 23:15:24
>>757-758
�d
だったら落ちるプログラムはクリティカルセクションで排他かけてるからDLLが落ちる理由があるならGDI+の内部で性的変数が使われてるのかと思ったんだけど、違うみたいだね。。。

けどシングルスレッドの状態では落ちないんだよなぁ。
なんでマルチスレッドだとフォントの作成辺りで落ちるのか……
フォントファイルに排他ロックでも掛けてるのかねぇ。
0761デフォルトの名無しさん2009/01/30(金) 23:22:54
ツールバーにボタン以外の独自のウインドウを追加したいのですが、
どうやればよいのでしょうか?
0762デフォルトの名無しさん2009/01/30(金) 23:30:38
>>760
他人のせいにする前に自分のプログラムを一寸たりとも疑わないその馬鹿さ加減は、
きっと死ぬまで治らないんだろうな。
0763デフォルトの名無しさん2009/01/30(金) 23:39:58
>>762
当たり前だけど疑ったあとです。
その決め付け癖はきっと死ぬまで治らないんだろうな。
0764デフォルトの名無しさん2009/01/30(金) 23:41:09
ここで言い合っても机上の空論
0765デフォルトの名無しさん2009/01/30(金) 23:49:50
>763
自分が無能で発見できないだけということを、一寸たりとも疑わないその馬鹿さ加減は、
きっと死ぬまで治らないんだろうな。
0766デフォルトの名無しさん2009/01/30(金) 23:51:40
いやでも落ちるまではいかないけど、
マルチスレッドだと性能が落ちるって話は聞いたことある。
個人的にはマルチスレッドとの相性が良くないのかなとは思う。
0767デフォルトの名無しさん2009/01/31(土) 00:03:32
聞いたことがあるとか、思うとか、
情報のソースがあるわけでもなく、自分で実験したわけでもないのに、
信憑性がまったくないことを既成事実のように語り始めるやつってなんなの?
0768デフォルトの名無しさん2009/01/31(土) 00:08:17
巨大なテクスチャを2スレッドで小さい画像として沢山
画面に描画したことあるけど普通に性能上がってたけどな。
書き込みだったら性能落ちるかもしれないけど。
0769デフォルトの名無しさん2009/01/31(土) 00:08:35
>>767
いやでも落ちるまではいかないけど、
マルチスレッドだと性能が落ちるよ。
マルチスレッドとの相性が良くない。

↑こう書かれるより全然ましってことですね。 分かります。
0770デフォルトの名無しさん2009/01/31(土) 00:08:50
親WindowのEditBoxの文字列を取得するにはどうしたらいいですか?

子Dialogで
hDlg_a=GetParent(hDlg);
GetDlgItemText(hDlg_a,IDC_EDITBOX,FileName,(int)sizeof(FileName)-1);

とかいてもうまくFileNameに文字列が入りません.
0771デフォルトの名無しさん2009/01/31(土) 01:04:41
lstrlen
0772デフォルトの名無しさん2009/01/31(土) 01:16:43
質問です。
別々のUSBポートにつなげたキーボードのキーってそれぞれどちら側のキーボードのキーが
押されたかって判別できるものですか?
0773デフォルトの名無しさん2009/01/31(土) 01:46:27
>>767
知らないのにレスするのはやめてください。うざいです。
0774デフォルトの名無しさん2009/01/31(土) 01:49:14
ポップアップメニューって普通上下に並ぶけど左右に並べれる?
0775デフォルトの名無しさん2009/01/31(土) 02:22:42
MF_MENUBREAKをたんまりとぶちこめ
0776デフォルトの名無しさん2009/01/31(土) 02:44:30
モニターを90度回転しろ
0777デフォルトの名無しさん2009/01/31(土) 02:49:54
斬新すぎんだろバカ
0778デフォルトの名無しさん2009/01/31(土) 03:17:00
>>772
XP以降ならRaw Input APIで出来るらしい。
0779デフォルトの名無しさん2009/01/31(土) 10:56:14
WinSockでデスクトップイメージの通信を行っていますが、
クライアントの接続を切ったとたんに、サーバーが異常終了して
しまいます。原因がわかりませんか?

http://uproda11.2ch-library.com/src/11154199.zip.shtml

お願いします。
0780デフォルトの名無しさん2009/01/31(土) 11:21:37
>>770
なんでGetParentを呼んでるの?
0781デフォルトの名無しさん2009/01/31(土) 11:44:07
>>770
FileNameが配列じゃなくてポインタだったら、Cの初歩からやり直せ。
07827792009/01/31(土) 12:28:42
おーーーい、わかる奴いないのか!?
0783デフォルトの名無しさん2009/01/31(土) 12:32:15
デバッグは自分でやれ
0784デフォルトの名無しさん2009/01/31(土) 12:33:08
BackDoorなんてしらんがな
0785デフォルトの名無しさん2009/01/31(土) 12:35:01
わからないから質問しないで下さい、ウザイだけです。
0786デフォルトの名無しさん2009/01/31(土) 12:35:44
っていうかネットワークプログラミングスレ池
07877792009/01/31(土) 12:39:28
>>786
逝ってきます(泣
0788デフォルトの名無しさん2009/01/31(土) 12:44:42
char FileName[256];
hDlg_a=GetParent(hDlg);
GetDlgItemText(hDlg_a,IDC_EDITBOX,FileName,(int)strlen(FileName));

親DialogのハンドルをとるためにGetParentを呼んでいます。
0789デフォルトの名無しさん2009/01/31(土) 12:46:06
>>788
その strlen に意味はあるの?
0790デフォルトの名無しさん2009/01/31(土) 12:47:12
IDC_EDITBOXの定義は?
0791デフォルトの名無しさん2009/01/31(土) 13:18:40
ああ、親ウィンドウのエディットボックス内の入力されている
ファイル名を子ウィンドウで取得させて処理させたいって事か・・・やっと意味がわかった

どのタイミングでさせたいの?場合によっては独自定義メッセージでさせちゃうとかすりゃいいのに
0792デフォルトの名無しさん2009/01/31(土) 13:26:49
まずGetDlgItemしてちゃんとハンドルが取れるか確認しろ
話はそれからだ
>>789 たぶん>>771が悪い
0793デフォルトの名無しさん2009/01/31(土) 14:25:13
GetDlgItemText(hDlg_a,IDC_EDITBOX,FileName,255);
0794デフォルトの名無しさん2009/01/31(土) 19:41:35
>>793
255じゃなくて256だろ
0795デフォルトの名無しさん2009/01/31(土) 20:25:55
>>794
1バイトで一々うるさい奴だな
0796デフォルトの名無しさん2009/01/31(土) 20:32:38
1バイトを笑う者は1バイトに笑われる
0797デフォルトの名無しさん2009/01/31(土) 20:37:27
正社員?
0798デフォルトの名無しさん2009/01/31(土) 20:47:51
バッファ長を間違う奴はWin32APIを理解してない証拠。
そんな奴>>793には回答する資格は無い。去れ。
0799デフォルトの名無しさん2009/01/31(土) 20:59:16
256文字超えたら結局0終端じゃなくなるよね。危なくない?
0800デフォルトの名無しさん2009/01/31(土) 21:05:35
>256文字超えたら結局0終端じゃなくなるよね。危なくない?
妄想でありもしない勝手な仕様を考える馬鹿って、いつになったら絶滅してくれるんだろう?
0801デフォルトの名無しさん2009/01/31(土) 21:05:37
MSDN読めよハゲ
0802デフォルトの名無しさん2009/01/31(土) 21:11:09
>>778
ありがとうございます!
調べてみます。
0803デフォルトの名無しさん2009/01/31(土) 21:11:38
すまん見てきた、文字切り捨てるてのは最後の1文字は0入れてくれるて事?
0804デフォルトの名無しさん2009/01/31(土) 21:18:10
>>803
文字列終端文字は無視
最大文字数までに文字列を切り詰めちゃうから
最大数-1して終端に終端文字追加しないとだめぽ
0805デフォルトの名無しさん2009/01/31(土) 21:19:21
なんのための文字数指定だよ
0806デフォルトの名無しさん2009/01/31(土) 21:27:35
// GetDlgItemText
// 戻り値
// 関数が成功すると、バッファへコピーされた文字列の長さ( 終端の NULL を含まない)が TCHAR 単位で返ります。

ということで終端には NULL がある。
0807デフォルトの名無しさん2009/01/31(土) 21:39:28
>>804
こういう嘘を堂々と言うバカってまだいるんだな
0808デフォルトの名無しさん2009/01/31(土) 21:42:51
>>806
戻り値じゃなくてこっちだろ

> nMaxCount
> [in] Specifies the maximum length, in TCHARs, of the string to be copied to the buffer pointed to by lpString.
> If the length of the string, including the NULL character, exceeds the limit, the string is truncated.
0809デフォルトの名無しさん2009/01/31(土) 21:45:21
srud(>>807);
0810デフォルトの名無しさん2009/01/31(土) 21:48:02
>>809=>>804
馬鹿は黙ってろ
0811デフォルトの名無しさん2009/01/31(土) 21:49:21
APIが終端文字まで入れるかどうかってこと?
0812デフォルトの名無しさん2009/01/31(土) 21:50:56
GetModuleFileNameなどの一部例外を除けばNULLまで入れてくれる
こんなの常識
0813デフォルトの名無しさん2009/01/31(土) 22:11:08
次の患者さんどうぞ〜
0814デフォルトの名無しさん2009/02/01(日) 00:39:22
タブコントロールにリストビューを表示したいんですがうまくいきません
タブのファイラーみたいな感じです
アドバイスお願いします
0815デフォルトの名無しさん2009/02/01(日) 01:39:49
回答者はエスパーじゃない。どううまくいかないかを書かないでどうやってアドバイスしろというのか?
0816デフォルトの名無しさん2009/02/01(日) 01:54:26
>>814
がんばれ!
以上。
0817デフォルトの名無しさん2009/02/01(日) 02:09:09
>>815
エスパーじゃない人はお引き取りください
0818デフォルトの名無しさん2009/02/01(日) 02:10:22
>>815
応援してる!
以上。
0819デフォルトの名無しさん2009/02/01(日) 02:32:19
>>817
大好き!
以上。
0820デフォルトの名無しさん2009/02/01(日) 02:35:48
知らないから質問しないでください。ウザイだけです。
0821デフォルトの名無しさん2009/02/01(日) 02:37:17
>>1024
キリ番!
以上。
0822デフォルトの名無しさん2009/02/01(日) 02:39:36
ssud(>>820);
0823デフォルトの名無しさん2009/02/01(日) 04:05:57
>GetModuleFileNameなどの一部例外を除けばNULLまで入れてくれる
GetModuleFileNameって結構使うのにエラー判定は弱いよな……
0824デフォルトの名無しさん2009/02/01(日) 06:52:24
>>823
MS的な正しい使い方 (最近のSDK Helpには無くなってるが)
まあ、例えば "ファイル名.ini" を作る類いのソフトならこれくらいすべきだと思うけど。

static const TCHAR szManifest[] = TEXT(".manifest");
static const DWORD cchManifest = sizeof(szManifest) / sizeof(szManifest[0]);
ULONG dwChars;
TCHAR ModuleFileNameBuffer[MAX_PATH];
TCHAR lpsz = ModuleFileNameBuffer;
DWORD dwModuleFileNameBufferAvailable = sizeof(ModuleFileNameBuffer) / sizeof(TCHAR);

// Keep trying until we run out of space, or until we fetch the name of the module.
do
{
  dwChars = GetModuleFileName(NULL, lpsz, dwModuleFileNameBufferAvailable);
  if (dwChars == 0)
    ReportLastErrorAndExit("GetModuleFileName(...)");
  if ((dwChars + cchManifest) < dwModuleFileNameBufferAvailable)
    break;
  if (lpsz != ModuleFileNameBuffer)
    delete[] lpsz;
  dwModuleFileNameBufferAvailable += MAX_PATH;
  lpsz = new TCHAR[dwModuleFileNameBufferAvailable];
  if (lpsz == NULL)
  {
    SetLastError(ERROR_OUTOFMEMORY);
    ReportLastErrorAndExit("new TCHAR[%lu]", dwModuleFileNameBufferAvailable);
  }
}
while (true);

_tcscat(lpsz, szManifest);
0825デフォルトの名無しさん2009/02/01(日) 07:16:57
最初はスタックで処理しようとするのはなかなか合理的だけどあまり見ないな
deleteが必要か判断する手間もあるからかな
0826デフォルトの名無しさん2009/02/01(日) 08:45:46
俺はATLのCTempBufferみたいなのを作って使ってる
0827デフォルトの名無しさん2009/02/01(日) 09:46:38
TCHARの配列とかnewで真面目にやっているのを見ると、皆偉いなあとか思う。
俺なんか、いつもreallocで手を抜くからなあ。
0828デフォルトの名無しさん2009/02/01(日) 09:59:00
>>825
現在のC++では、newに失敗すると、例外がthrowされるのでは? それと、
2回目のループが成功で抜けた時に、newで動的に確保したヒープが解放
されない。

ところで、上記だと結果が"ファイル名(.exe含む).manifest"になるけど、
これは意図したものなのか?
0829デフォルトの名無しさん2009/02/01(日) 10:26:45
>>828
> これは意図したものなのか?
意図も何も、.manifestの仕様を知らないのか?
0830デフォルトの名無しさん2009/02/01(日) 10:33:41
>>828
こいつ、頭が相当悪そうだw
0831デフォルトの名無しさん2009/02/01(日) 10:36:39
include <iostream>

int main(){
CHAR *pNew;

while(1){
pNew = new char[65535];
std::cin >> pNew;
std::cout << pNwe;
}

return 0;
}
0832デフォルトの名無しさん2009/02/01(日) 10:37:19
>>827
クラスじゃないならいいんでね?
0833デフォルトの名無しさん2009/02/01(日) 11:47:52
>>829-830
manifestなんていつもexeのリソースに組み込んで、単独で配布するなんて
これまで一度もやってないからな。

> まあ、例えば "ファイル名.ini" を作る類いのソフトならこれくらいすべきだと思うけど。

って記述がなければスルーしたんだが。(w

んで、メモリリークするコードを書くのはスルーか?(w
0834デフォルトの名無しさん2009/02/01(日) 12:09:06
MSのサンプルに吠えてどうしようと言うんだおまい
0835デフォルトの名無しさん2009/02/01(日) 12:15:31
リークっつうか最後に連結してるんだから開放したらそれこそエラー吐くんじゃね
0836デフォルトの名無しさん2009/02/01(日) 12:28:48
「Using the Activation Context API」のコピペだな。多少弄ってあるけど。
ちなみに、元コードは後できちんとdeleteしてある。

……よく見ると、元コードも含めて色々おかしくないか?これ。
「TCHAR lpsz」ってなんやねん。
_tcscatの箇所は元コードだとStringCChCatだけど、
バッファサイズの指定が明らかに変だし。
0837デフォルトの名無しさん2009/02/01(日) 12:28:50
>>835
そうそう。
_tcscat(lpsz, szManifest);
の後、lpszを使い終わってから、
if (lpsz != ModuleFileNameBuffer)
  delete[] lpsz;
だよな。
0838デフォルトの名無しさん2009/02/01(日) 12:37:18
>>828
今のC++なら、
lpsz = new (std::nothrow) TCHAR[dwModuleFileNameBufferAvailable];
かな。こうすればNULLが返るようになってそのまま使える。
0839デフォルトの名無しさん2009/02/01(日) 12:38:27
こんな細かいメモリの確保に失敗する状況ではまともにプログラムは動かないので、
メモリの確保に失敗した際のメモリリーク対策など考えてもあまり意味は無い。
そのままプログラムを殺してしまえば、どうせメモリは全て開放されるのだから。
プログラム終了時に自動的に開放されない、
グローバルなリソースに関してはその限りではないが。

場合によっては throw するためのメモリも足らず、即死する事もある。
この場合、スタック巻き戻しすら起こらないので、
いくらかのリソースリークが不可避になこともある。
これは不運だと思うしかないが、
グローバルリソースをできるだけ開放する努力をしなくて良い理由にはならない。

まあ、そうは言っても、簡単に例外安全にできるケースで
わざわざ例外安全にしないってのもどうかとは思うけどね。
0840デフォルトの名無しさん2009/02/01(日) 12:54:11
Cでmalloc&freeに限るね
0841デフォルトの名無しさん2009/02/01(日) 12:57:29
バッファが足りないときにエラーにするのではなく切り詰める、というAPIのどれかが、
以前は終端に\0をつけなかったらしい。この切り詰めが起こったのをチェックしないと、
バッファオーバーランしてしまう。

んで、あんまりひどいんで必ず\0をつけるようにした、
とかいう話を聞いたことがある。

どのAPIだったか思い出せない・・・まさにこのGetModuleFileNameだったような・・・

しかしこの手のAPIは統一性ないよな。
別のAPIだと、引数に ptr と &bufsiz 渡させて、ptrがNULLのときはbufsizに必要サイズを返す、
ってなってるよな。MultiByteToWideCharとかレジストリ系とか。
ああ、この場合も、bufsizに\0用の領域を含むかどうかがあるか・・・
0842デフォルトの名無しさん2009/02/01(日) 13:00:46
>>833
うわ、ホントに頭悪かったのかw
0843デフォルトの名無しさん2009/02/01(日) 13:17:28
>>842 IDが無くて良かったねw
0844デフォルトの名無しさん2009/02/01(日) 13:19:18
>>841
1. ptr == NULLのとき
 i. 必要サイズを返す
  a. 終端の \0 を含める
  b. 終端の \0 は含まない
 ii. 失敗して 0 を返す
 iii. NULL アクセスで落ちる

2. ptr != NULLでバッファが足りないとき
 i. 可能な限りコピーして切り詰める
  a. 終端に \0 が付く
  b. 終端に \0 が付かない
 ii. 何もコピーしない
  a. *ptr に \0 が入る
  b. バッファを一切弄らない
 iii. バッファオーバーランする

細かいところだと ERROR_INSUFFICIENT_BUFFER などが設定されるか、とか
まぁ1-iiiと2-iiiは論外だが
0845デフォルトの名無しさん2009/02/01(日) 13:21:42
>>828=>>833 本日の馬鹿age厨
0846デフォルトの名無しさん2009/02/01(日) 13:33:06
>>844
速度優先の場合は、落ちるのもありじゃないだろうか?
0847デフォルトの名無しさん2009/02/01(日) 13:44:51
また馬鹿age厨が来たw
0848デフォルトの名無しさん2009/02/01(日) 13:52:46
おっさんうぜー
0849デフォルトの名無しさん2009/02/01(日) 13:54:21
引っ込んでろ
0850デフォルトの名無しさん2009/02/01(日) 13:58:39
>>828>>833>>846>>848
毎日ageて馬鹿な発言をしては叩かれて、顔真っ赤にしながら低脳な煽りしてる人でしょ?
0851デフォルトの名無しさん2009/02/01(日) 14:01:25
antiageing
0852デフォルトの名無しさん2009/02/01(日) 14:02:31
>>833
スルーです。
0853デフォルトの名無しさん2009/02/01(日) 14:16:03
スルーも何も、サンプルに文句つけてる時点で己の低脳さを露呈してるだけなんだが
oldnewthingでclock.aviをハードコードするなとか文句言ってた馬鹿外人みたいだ
0854デフォルトの名無しさん2009/02/01(日) 14:25:14
> 2回目のループが成功で抜けた時に、newで動的に確保したヒープが解放されない。
この指摘がそもそも頓珍漢だからスルーしただけじゃんw
0855デフォルトの名無しさん2009/02/01(日) 14:42:47
もうだめだこのスレ
0856デフォルトの名無しさん2009/02/01(日) 14:48:34
naniwo imasara
0857デフォルトの名無しさん2009/02/01(日) 15:16:12
スライダーの初期値がうまく設定できません。

static HWND hSlider;

case WM_INITDIALOG:
hSlider=GetDlgItem(hDlg,IDC_SLIDER);
SendMessage(hSlider,TBM_SETPOS,(WPARAM)TRUE,(LPARAM)3);
//スライダーの値を3にしておく。

これで設定できるはずがうまくいきません。
WM_PAINTなどで他にも設定が必要なのでしょうか?
0858デフォルトの名無しさん2009/02/01(日) 15:19:30
TBM_SETRANGEしてないからだろ
0859デフォルトの名無しさん2009/02/01(日) 15:28:16
SendDlgItemMessage(hDlg,IDC_SLIDER,TBM_SETRANGE,FALSE,MAKELONG(1,7));
はSETPOSの前で行っています。
0860デフォルトの名無しさん2009/02/01(日) 15:39:19
ちょっと↓でやってみてよ

SendMessage(hSlider,TBM_SETRANGE,FALSE,MAKELONG(1,7));
0861デフォルトの名無しさん2009/02/01(日) 16:11:59
情報後出しウゼェ
0862デフォルトの名無しさん2009/02/01(日) 17:03:48
static HWND hSlider;

case WM_INITDIALOG:
hSlider=GetDlgItem(hDlg,IDC_SLIDER);
SendMessage(hSlider,TBM_SETRANGE,FALSE,MAKELONG(1,7));
SendMessage(hSlider,TBM_SETPOS,(WPARAM)TRUE,(LPARAM)3);
SendDlgItemMessage (hDlg,IDC_SLIDER,TBM_SETTIC,0,3);

でうまくいきません 初期値を3にもっていきたいんですが・・。
何かincludeミスもないし・・。
0863デフォルトの名無しさん2009/02/01(日) 17:10:50
自己解決しました。
ありがとうございました。
0864デフォルトの名無しさん2009/02/01(日) 17:14:44
どういたしまして^^
0865デフォルトの名無しさん2009/02/01(日) 17:43:38
API房は、単価が安くて余裕のない連中ばかりなんだな。(w
0866デフォルトの名無しさん2009/02/01(日) 17:51:06
リーズナブルと言って頂きたい
0867デフォルトの名無しさん2009/02/01(日) 18:32:04
これからはアンカーの時代だ。
0868デフォルトの名無しさん2009/02/01(日) 18:41:45
Picute Controlで詳しいページがありましたら
教えてください ねこでもわかるなどを探したのですが
詳しいページがありません。

1.Picute Controlの初期画像の設定
2.Picute Controlの画像変更

などがかいてあるページを探しています。
0869デフォルトの名無しさん2009/02/01(日) 18:51:23
スタティックコントロールとSS_BITMAPでググって頑張ってくれ
0870デフォルトの名無しさん2009/02/01(日) 18:53:39
基地害が一匹紛れ込んでるだけなのに、ID無いと荒れるね〜
0871デフォルトの名無しさん2009/02/01(日) 19:45:39
>>870
よう、基地害!
0872デフォルトの名無しさん2009/02/01(日) 19:53:43
>>870
あのーーー、先生
Picture Controlとスタティックコントロールの違いって何ですか?
0873デフォルトの名無しさん2009/02/01(日) 20:01:57
>>868
ttp://msdn.microsoft.com/en-us/library/cc656589.aspx
0874デフォルトの名無しさん2009/02/01(日) 20:20:59
ていうかPicuteって何?
0875デフォルトの名無しさん2009/02/01(日) 20:26:40
sukillがあるからPicuteあまたなんだよ
0876デフォルトの名無しさん2009/02/01(日) 20:29:24
Pictureを書けない人が居たなんて、やっぱり小学生が数名混じってたのか。
スレのレベルが急激に低下したのもこの人たちの仕業でしょう。
0877デフォルトの名無しさん2009/02/01(日) 20:33:19
Pictureの間違いだったの?
pie chartを作成するサードパーティ製コントロールの名前かと思った
0878デフォルトの名無しさん2009/02/01(日) 21:16:33
WinAPIでアプリAを作り、Aを起動すると
ウィンドウを作成し

次に予め作っておいたアプリBを起動し、それをアプリAの子ウィンドウにする


これってどうやればできますでしょうか
0879デフォルトの名無しさん2009/02/01(日) 21:21:51
頭を使えばできる
方法はいくらでもある
0880デフォルトの名無しさん2009/02/01(日) 21:22:46
srud(>>879);
0881デフォルトの名無しさん2009/02/01(日) 21:23:25
プロセスからアプリBのプロセス探させてプロセスID取得して(ry
0882デフォルトの名無しさん2009/02/01(日) 21:24:58
>>879
もうなんつうかお前あほだな
0883デフォルトの名無しさん2009/02/01(日) 21:25:19
こんなのAPIの知識でも何でも無いな
0884デフォルトの名無しさん2009/02/01(日) 21:26:41
>>882
さっきの小学生の方ですね。ご愁傷様です。
0885デフォルトの名無しさん2009/02/01(日) 21:27:06
>>881
ハンドルから子ウィンドウは分かりましたがアプリAを起動するとアプリBの.exeを自動で起動する方法が分かりません
0886デフォルトの名無しさん2009/02/01(日) 21:28:41
WindowsAPIにはSystem("");っていうのがあるからドスコマンドでも打ってろ



CreateProcess
0887デフォルトの名無しさん2009/02/01(日) 21:28:42
ネタだろ
0888デフォルトの名無しさん2009/02/01(日) 21:29:49
>>886
心のそこから感謝します
これで出来ます
0889デフォルトの名無しさん2009/02/01(日) 21:29:49
>>868=>>878=>>882=>>885だろ
スルーしとけ
0890デフォルトの名無しさん2009/02/01(日) 21:33:10
>>889
>>878と>>885と>>888は自分です
ID無いと分かりにくいですね
質問スレで質問している人間をスルーしろとか頭が弱いのでしょうか、お大事に・・・・
0891デフォルトの名無しさん2009/02/01(日) 21:33:35
やっぱりネタだ
0892デフォルトの名無しさん2009/02/01(日) 21:34:17
>>890
釣れて良かったね
0893デフォルトの名無しさん2009/02/01(日) 21:36:15
>>891-892
なんでそこまで心が歪んでるのかな
自分は分からないところを質問した
分かる人が教えてくれた
俺は教えてもらえて嬉しいし、お礼を言った

これに食いつく意味が分からない
もっと素直な心で生きましょうよ
0894デフォルトの名無しさん2009/02/01(日) 21:39:19
下手な釣りだなあ
0895デフォルトの名無しさん2009/02/01(日) 21:40:30
釣られまいと警戒しすぎ(・∀・)クスクス
0896デフォルトの名無しさん2009/02/01(日) 21:41:57
次の患者さんどうぞ
0897デフォルトの名無しさん2009/02/01(日) 21:45:34
釣りと思うならもういいです
もう二度と来ません、さようなら
0898デフォルトの名無しさん2009/02/01(日) 21:47:54
すばらしい決断だ
さようなら
0899デフォルトの名無しさん2009/02/01(日) 21:53:39
もうだめだこのスレ
0900デフォルトの名無しさん2009/02/01(日) 21:54:56
レスのこだめだうも
0901デフォルトの名無しさん2009/02/01(日) 22:04:18
もめだだこうスレの
0902デフォルトの名無しさん2009/02/01(日) 22:13:18
俺>>893だけど>>895の言うとおりだよ
教えてもらう側としては本当にありがたいスレだから釣りとかよく分からないこと警戒して変な空気作るのは良くないと思う
0903デフォルトの名無しさん2009/02/01(日) 22:16:05
俺ヤクザだけどって読んじゃった
0904デフォルトの名無しさん2009/02/01(日) 22:27:12
早速戻って来たんだね
0905デフォルトの名無しさん2009/02/01(日) 22:34:35
こんばんは
0906 ◆xdkteuOpHo 2009/02/01(日) 23:12:23
testes
0907デフォルトの名無しさん2009/02/01(日) 23:44:44
    [ ゚д゚]y-~~~ デフラグガカンリョウシマシタ
    /[へへ
うこだだのめもスレ
0908デフォルトの名無しさん2009/02/02(月) 00:23:42
ところでPictureControlってリソースファイル(.rc)に
リソースIDのIDではなく、番号で書き込むイカレタ仕様じゃなかったっけ?
こいつ使うとリソースヘッダにある番号振りなおすと大変なことになるんだよね
0909デフォルトの名無しさん2009/02/02(月) 00:30:13
わざわざ嘘情報を流すお前の方がイカレてるよ
0910デフォルトの名無しさん2009/02/02(月) 01:15:24
>>909
嘘だやってみろ
bmpリソースだぞ
0911デフォルトの名無しさん2009/02/02(月) 01:20:55
CONTROL 130,IDC_STATIC,"Static",SS_BITMAP,54,115,62,48
#define IDB_BITMAP1 130

ほらなってるやん
この130ってのがそうな
ケッ!糞が!>>909
0912デフォルトの名無しさん2009/02/02(月) 01:35:41
へぇ。で、その番号をふり直す意図は?
0913デフォルトの名無しさん2009/02/02(月) 01:53:28
908ではないが自分も番号振りなおすことはあるな

ウィザードで作りっぱなしだと未使用のIDが増えて
収拾つかなくなって保守しずらくなったり
別プロジェクトで作成したダイアログリソースををマージ
したりするとき手作業のほうが安心できたりとかするので
0914デフォルトの名無しさん2009/02/02(月) 04:25:32
>>911
ならない
お前の環境が糞なだけだろ
0915デフォルトの名無しさん2009/02/02(月) 06:30:08
>>913
そんときにピクチャーボックスがあるとENDw
0916デフォルトの名無しさん2009/02/02(月) 06:33:22
869で終わってる話題でなんで50レスも続いてんだw
0917デフォルトの名無しさん2009/02/02(月) 07:17:40
世の中にはな、終わった話題を蒸し返したがる人が結構いるんだよ。
0918デフォルトの名無しさん2009/02/02(月) 08:10:09
質問があります。
以下のように書式付きメッセージボックスを表示するコードを書いたのですが、


void func(const wchar_t* str, const wchar_t *fmt, ...) {
va_list ap;
va_start(ap, fmt);
wchar_t buf[256];
vswprintf_s(buf, sizeof(buf), fmt, ap); // ★
va_end(ap);
MessageBoxW(NULL, buf, str, MB_OK);
}

★を実行後にstrに不正な値が書きこまれてしまいます。
どうしてでしょうか?

_locale_t locale = _create_locale(LC_CTYPE, "japanese");
_vswprintf_s_l(buf, sizeof(buf), fmt, locale, ap);
としてみてもダメでした。
0919デフォルトの名無しさん2009/02/02(月) 08:11:41
バッファオーバーランだろ
09209182009/02/02(月) 08:16:46
>>919
918へのレスですか?
wchar_t buf[256];
_vsnwprintf_s(buf, sizeof(buf), _TRUNCATE, fmt, ap);
としてもダメでした。
0921デフォルトの名無しさん2009/02/02(月) 08:26:58
適当だけど
sizeof(buf)/sizeof(wchar_t)
ってことはない?
09229182009/02/02(月) 08:31:24
>>921
げげっ。それでうまくいきました。
MSDNに「sizeOfBuffer 出力の buffer のサイズ」と書いてあったので
てっきりバイト数だと思ってました。
ありがとうございました!
0923デフォルトの名無しさん2009/02/02(月) 09:02:50
最後まで読めばちゃんと書いてあるだろ

> In Visual C++ 2005, vswprintf_s conforms to the ISO C Standard for vswprintf,
> which requires the second parameter, count, of type size_t.
0924デフォルトの名無しさん2009/02/02(月) 10:09:01
どうしようもないクズだな
0925デフォルトの名無しさん2009/02/02(月) 10:36:05
>>924
おらぁクズr(r
0926デフォルトの名無しさん2009/02/02(月) 15:03:03
ウワァーッカッチョイーッ
0927デフォルトの名無しさん2009/02/02(月) 15:32:20
HBITMAPって構造体ですか?
これのビットイメージ部だけをどうしたらいいのでしょうか?
0928デフォルトの名無しさん2009/02/02(月) 15:35:58
ハンドルだと書いてあるだろうがボケ

>これのビットイメージ部だけをどうしたらいいのでしょうか?

どうしたらいいか?ってどうにでもしろよ!
俺に聞くなよ!
0929デフォルトの名無しさん2009/02/02(月) 15:39:11
>>927
想像するに、GetDIBits使えばいいと思うよ。
ハンドルはハンドルだ。識別子だ。それ以外のなんでもない。
0930デフォルトの名無しさん2009/02/02(月) 16:04:25
DIB24ビットでデータだけの1次元配列(DWORD配列)があるのですが
これをStretchBltで縮小するにはどのようにしたらいいですか?
0931デフォルトの名無しさん2009/02/02(月) 16:21:57
何が何でもStretchBlt使いたいなら自力でDIBにマップして使えば
0932デフォルトの名無しさん2009/02/02(月) 16:28:36
いえ縮小できるならStretchBltじゃなくてもいいです。

どこか参考になるサイトがあったら教えてください
0933デフォルトの名無しさん2009/02/02(月) 17:12:14
じゃー、StretchDIBits
0934デフォルトの名無しさん2009/02/02(月) 17:21:54
>>933
今それみてました。
StretchDIBitsまで辿り着くプロセスとして
BITMAPINFO bi;
biの初期化
HBITMAP hb = ::CreateCompatibleBitmap( NULL, 1440, 1080 );
HDC hdc = ::CreateCompatibleDC( NULL );
::SelectObject( hdc, hb );
::StretchDIBits( hdc, 0, 0, 1280, 720, 0, 0, 1440, 1080, dwBuffer, &bi, DIB_RGB_COLORS, SRCCOPY );
と、こんな感じでしょうか?
で、ここから縮小したDIBデータをアクセスしたい場合はどうしたらいいのでしょうか・・・
0935デフォルトの名無しさん2009/02/02(月) 20:04:29
縮小先のビットマップをCreateDIBSectionでつくればええやん
0936デフォルトの名無しさん2009/02/02(月) 20:22:25
CreateProcessが難しすぎて理解できないんだけど

STARTUPINFO pi;
PROCESS_INFORMATION si;

if(CreateProcess(NULL,
"C:\\test.exe",
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&pi,
&si) == 0)
MessageBox(NULL,"読み取れない","エラー",MB_OK);

ちゃんとC直下にtest.exe作ったけど起動されない。一体どうすれば・・・・
0937デフォルトの名無しさん2009/02/02(月) 20:25:09
PROCESS_INFORMATION si = {sizoef si};とでも書いておけ。
0初期化しておけばとりあえず動くと思う。
0938デフォルトの名無しさん2009/02/02(月) 20:31:42
>>937
0初期化ってことで
PROCESS_INFORMATION pi;
STARTUPINFO si;
ZeroMemory(&si, sizeof (si));
こう変えたら動くようになった、ありがとう、ほんとありがとう
0939デフォルトの名無しさん2009/02/02(月) 20:45:17
>>936のパス指定は相対パスにする方法ってないんですかね?
保存されるところが一定じゃないだろうからフルパスだとおかしなことになっちゃう。どうすればいいんだろう・・・
0940デフォルトの名無しさん2009/02/02(月) 20:49:01
>>939
fullpathっていう関数もあるし逆にいえばそれが実行される場所と同じディレクトリは
カレントディレクトリなのでその実行ファイルと同じディレクトリにあればファイル名の指定だけで動く
0941デフォルトの名無しさん2009/02/02(月) 20:50:57
>>939
つ【SetCurrentDirectory】
0942デフォルトの名無しさん2009/02/02(月) 21:39:02
PROCESS_INFORMATION si = {sizoef si};

突込みどころ多すぎだろw
0943デフォルトの名無しさん2009/02/02(月) 21:42:05
おまえらおちつけよ なかよくいこうぜ
0944デフォルトの名無しさん2009/02/02(月) 21:43:54
ま、コンパイルエラーだわな
0945デフォルトの名無しさん2009/02/02(月) 21:45:54
typo以外につっこめるところを素人の俺にkwsk
0946デフォルトの名無しさん2009/02/02(月) 21:53:26
てか、突っ込むべきは>>936じゃね

STARTUPINFO pi;
PROCESS_INFORMATION si;


ま、intellisenseが使えりゃ変数名なんてどうでもいいけど
0947デフォルトの名無しさん2009/02/02(月) 21:55:24
そもそもCreateProcessの第二引数は文字列リテラル駄目だろ
0948デフォルトの名無しさん2009/02/02(月) 21:56:49
そうか、>>936につられたのか>>937はw
09499362009/02/02(月) 22:01:12
>>936
なんですがC直下のプログラムは動いたんですが、違うディレクトリにすると動きません

何か間違ってそうなところはありますでしょうか
"C:\\Documents and Settings\\user\\My Documents\\Visual Studio 2008\\Projects\\Repton\\Dat\\ADV\\game.exe"
0950デフォルトの名無しさん2009/02/02(月) 22:02:08
コマンドライン引数のほうは空白混ざってたら""でくくれ
0951デフォルトの名無しさん2009/02/02(月) 22:04:52
>>947 そりゃ、W の場合だ
09529362009/02/02(月) 22:10:50
>>950
そんなルールがあったのか・・・・
・・・・・まだ、ダメっぽいです
パスは間違ってないし、C直下なら動いたので書き方が悪いと思うんですが・・・

"C:\\Documents" "and" "Settings\\user\\My" "Documents\\Visual" "Studio" "2008\\Projects\\Repton\\Dat\\ADV\\game.exe"
0953デフォルトの名無しさん2009/02/02(月) 22:12:07
>>952
0点
0954デフォルトの名無しさん2009/02/02(月) 22:13:39
STARTUPINFO si = { sizeof( STARTUPINFO)};
PROCESS_INFORMATION pi = {0};
char szCmdLine[] = "\"C:\\Documents and Settings\\user\\My Documents\\Visual Studio 2008\\Projects\\Repton\\Dat\\ADV\\game.exe\"";

if ( !::CreateProcess( NULL, strCmdLine, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
{
MessageBox(NULL,"読み取れない","エラー",MB_OK);
}

::CloseHandle( pi.hThread);
::CloseHandle( pi.hProcess);
0955デフォルトの名無しさん2009/02/02(月) 22:13:46
>>952
コマンドプロンプト出してタイプして動いたら、それと同じように入れればいい。
あと、"は\"のようにエスケープしないとな
0956デフォルトの名無しさん2009/02/02(月) 22:13:47
なんというバカ。

コマンドラインから実行してみろよ・・・
0957デフォルトの名無しさん2009/02/02(月) 22:13:53
>>952
"はエ・・・・

なんでもない
0958デフォルトの名無しさん2009/02/02(月) 22:15:15
げ、変数名ちがったわ。 strCmdLine → szCmdLine
0959デフォルトの名無しさん2009/02/02(月) 22:17:23
>>954
どうせならTCHAR対応もやろうぜ。
#include <windows.h>
int main()
{
STARTUPINFO si = { sizeof( STARTUPINFO)};
PROCESS_INFORMATION pi = {0};
TCHAR szCmdLine[] = TEXT("\"C:\\Documents and Settings\\user\\My Documents\\Visual Studio 2008\\Projects\\Repton\\Dat\\ADV\\game.exe\"");

if ( !::CreateProcess( NULL, szCmdLine, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
{
MessageBox(NULL,TEXT("読み取れない"),0,MB_OK);
}

::CloseHandle( pi.hThread);
::CloseHandle( pi.hProcess);

}
0960デフォルトの名無しさん2009/02/02(月) 22:18:55
>>959
もとが ANSI だから手を抜いたんだけどね。(笑)
09619362009/02/02(月) 22:19:16
できたー!

ありがとうございます
頑張ります
0962デフォルトの名無しさん2009/02/02(月) 22:27:44
パス区切りが/でもいいAPIて結構あるよね。
書くの楽だからそうしてたら逆に\しか許さないので嵌ったな。
0963デフォルトの名無しさん2009/02/02(月) 22:30:15
>>954>>959
MessageBoxの後にreturnが抜けてる
0964デフォルトの名無しさん2009/02/02(月) 22:56:29
おまえら低レベルな質問には一生懸命答えるのなw
0965デフォルトの名無しさん2009/02/02(月) 23:06:56
低レベルな質問にすら答えられないアホは黙ってな
0966デフォルトの名無しさん2009/02/02(月) 23:09:29
だって、それでしか自分を顕示できないんだもん
0967デフォルトの名無しさん2009/02/02(月) 23:12:13
>>964
高レベルな質問plz
0968デフォルトの名無しさん2009/02/02(月) 23:36:30
人はなぜ生きるのか
0969デフォルトの名無しさん2009/02/02(月) 23:41:29
すいません、すいません
>>959で関数の頭に::付いているのとないのあるんですけど
なぜなんですか?
09709362009/02/02(月) 23:41:36
>>968
今、この瞬間
お前は俺に「スレタイ100回読め」といわれる

そのためだけに生まれ、生きてきたんだ
0971デフォルトの名無しさん2009/02/02(月) 23:49:35
>>970
お前こそスレタイの前にMSDN読め
0972デフォルトの名無しさん2009/02/02(月) 23:50:26
>>969
ついてないのは、単にコピペしただけだから。
0973デフォルトの名無しさん2009/02/02(月) 23:51:13
>>969
単に統一してないだけ。
詳しくはC++スレへ
0974デフォルトの名無しさん2009/02/02(月) 23:53:23
>>969
::を入力するとintellisenseの恩恵に与れる
0975デフォルトの名無しさん2009/02/02(月) 23:55:25
そりゃ、VC固有だろ
0976デフォルトの名無しさん2009/02/03(火) 00:12:22
ネット上のサンプルで、関数には::つけてるけど、構造体にはつけないってのが多い気がする。
なんでだー
0977デフォルトの名無しさん2009/02/03(火) 00:20:54
(: * :)
0978デフォルトの名無しさん2009/02/03(火) 00:23:06
VCならCtrl+スペースで幸せになれる
0979デフォルトの名無しさん2009/02/03(火) 00:30:39
('A')
0980デフォルトの名無しさん2009/02/03(火) 00:31:34
>>976
関数名は被る可能性がある(CWnd::MessageBoxとか)けれど、構造体名なんて滅多に被らないだろ
つまりそういうこと
0981デフォルトの名無しさん2009/02/03(火) 09:59:56
Win32API質問箱 Build76
http://pc11.2ch.net/test/read.cgi/tech/1233622578/

次
0982デフォルトの名無しさん2009/02/03(火) 10:06:55
うめ
0983デフォルトの名無しさん2009/02/03(火) 10:19:27
そういや今日、梅の花がほころんでいましたよ
0984デフォルトの名無しさん2009/02/03(火) 10:33:43
>>981乙
0985デフォルトの名無しさん2009/02/03(火) 10:37:29
ume
0986デフォルトの名無しさん2009/02/03(火) 11:00:03
Borland C++ Compiler 5.5 でいくつかソフト作ってみましたが数10KB〜100KB程度にしかなりません。
他の個人のソフトでは数100KBどころか数MBのモノが普通にありますがあれ、どーしてそこまで大きく
なるんですか?
0987デフォルトの名無しさん2009/02/03(火) 11:01:54
ssud(>>986);
0988デフォルトの名無しさん2009/02/03(火) 11:02:28
>>986
リソースに画像とか音声を埋め込んだりすれば
すぐにMBくらい超える
0989デフォルトの名無しさん2009/02/03(火) 11:24:05
>>988
ああ書いた分量だけでなく、そういうことですか。俺個人じゃ書けない量だと不思議に
思ってました…
0990デフォルトの名無しさん2009/02/03(火) 11:42:57
>>935
CreateCompatibleDCをCreateDIBSectionにするって事ですよね?
そうした場合はStretchDIBitsで縮小したら
縮小したビットデータにはどうやってアクセスすればいいでしょうか?
0991デフォルトの名無しさん2009/02/03(火) 12:06:48
あ、違ったCreateCompatibleBitmapですね
0992デフォルトの名無しさん2009/02/03(火) 12:31:41
>>990
SelectObjectして、BitBltでしょ
0993デフォルトの名無しさん2009/02/03(火) 12:55:58
DLLで呼び出し元のハンドルを知りたいんですが、どうすればできますか?
0994デフォルトの名無しさん2009/02/03(火) 13:02:24
EnumProcessModules
0995デフォルトの名無しさん2009/02/03(火) 13:08:17
>>993
こういうことしたいって話?
ttp://blogs.msdn.com/oldnewthing/archive/2004/01/01/47042.aspx
0996デフォルトの名無しさん2009/02/03(火) 13:15:00
GetObject
0997デフォルトの名無しさん2009/02/03(火) 13:48:19
ごめんなさい質問変でしたね
DLL側が呼び出されたときに自分を呼び出したスレッドハンドルまたはプロセスハンドル
を知りたいです。
0998デフォルトの名無しさん2009/02/03(火) 13:50:21
普通にGetCurrentThread、GetCurrentProcessじゃあかんの??

悩むまでも無くない??
0999デフォルトの名無しさん2009/02/03(火) 13:53:31
DLLは呼び出し側のプロセスで動くからな
1000デフォルトの名無しさん2009/02/03(火) 13:54:10
999
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。