Win32API質問箱 Build11 [転載禁止]©2ch.net

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
Win32APIについての質問はこちらへどうぞ。

■過去スレ
Win32API質問箱 Build118
http://peace.2ch.net/test/read.cgi/tech/1407006123/

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。
 英語版( http://msdn.microsoft.com/en-us/library/ )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
2デフォルトの名無しさん:2014/12/10(水) 12:13:44.45 ID:Ii7h0n5Y
あれ9が入ってねぇ
3デフォルトの名無しさん:2014/12/10(水) 14:15:32.62 ID:Bt3w6SNQ
まあ乙
4デフォルトの名無しさん:2014/12/10(水) 15:51:35.74 ID:SNTk7rlr
>1 乙
Win32API質問箱 Build119

わざとやってるだろω
5デフォルトの名無しさん:2014/12/10(水) 18:21:01.18 ID:Bv+lRwzh
>>1乙です。
それにしてもID出てからというもの良スレに成り下がりましたね
6デフォルトの名無しさん:2014/12/10(水) 18:24:32.95 ID:Bt3w6SNQ
そういう召喚するようなことを書くんじゃないの
7デフォルトの名無しさん:2014/12/10(水) 20:47:35.96 ID:7ek4HD8a
基地概が仮面被ってウロウロしてるように見える
8デフォルトの名無しさん:2014/12/11(木) 01:17:47.91 ID:2YwrX4ci
仮面弁士さんが仮面さんと略されるのは嫌だとかブログに書いてたときは
えー、と思った
9デフォルトの名無しさん:2014/12/11(木) 05:53:28.00 ID:HD31sjD5
前スレ972です。忙しくて遅くなりましたが、一応報告。

MSDNフォーラムを流し読みで、これが該当してるかと思ったのですが、XPでは相変わらず解決しません。
ttps://social.msdn.microsoft.com/Forums/ja-JP/03a23938-639b-4a31-96b5-51e06bb0dcf7/help-i-get-multiple-dtndatetimechange?forum=vcgeneral

と言う訳で、これでDateTime_GetMonthCalの存在に気付いたので、無理矢理解決しました。
これで一回しか来なくなりました。その後動作に多少違和感ありますが、まあ良しと。


case IDC_DATE:
if (lpNmHdr->code == DTN_DATETIMECHANGE) {
  // DateTimePickerから日時を取得
SendDlgItemMessage(hwnd, IDC_DATE, DTM_GETSYSTEMTIME, 0, (LPARAM)&date);

  // OK処理
  if (日付判定でOK) {
    何らかの処理;

  // NG処理
  } else {
    DestroyWindow(DateTime_GetMonthCal(lpNmHdr->hwndFrom));  // シネハゲ
    MessageBox(hwnd, "ダメヨダメダメ", "error", MB_OK);
    日付を本日に戻す
  }
}
10デフォルトの名無しさん:2014/12/11(木) 08:38:02.85 ID:qKHRQsDr
警告メッセージボックスを出すタイミングが間違ってると思う
11デフォルトの名無しさん:2014/12/11(木) 10:23:06.73 ID:4YWsTBXo
IMEの変換候補リストの非表示化ってWM_IME_SETCONTEXTメッセージ通知時に
DefWindowProc ( hWnd, Msg, wParam, lParam & ~ISC_SHOWUIALL )をすることで出来るけど、
これをやっててもWM_IME_COMPOSITIONでDefWindowProcを呼ばずにreturn 0;しちゃうと
デスクトップ右下に変換候補リストが表示されちゃうんだけど、どうしたら良いんだろうか
return 0;するのは入力中の文字をIME側で表示させないためなんで、これは外せない

ちなみにWin8.1の場合で、Win7だと問題ない
12デフォルトの名無しさん:2014/12/11(木) 10:40:20.29 ID:+7kmVeL+
>>10
MSDNフォーラムでも上がってる問題かつ前スレから見ててその答えに至る理由と答えを詳しく
13デフォルトの名無しさん:2014/12/11(木) 11:07:13.47 ID:u3d/vbqo
☆☆☆☆☆
               /  /     /   |      \ ヽ
               / /  /   / /    ||  |  i  ヽ i
              i /  / /  / / /    ||  ||  |│ |ノス
               |//  / /___, -一ァ|  /! |ト、|│ | | く」
                |,-‐¬  ̄---┘'7 |!  ハ! |,、-┼十|! | | |
          , -‐ ''"  し' '´_ /,ィ二l |ト、/!ヽト、\_ヽ!|!l | ハ |
       ,r/      __   ,イ|リ ヾハ! ヽ!  ,ィ⌒ヾミリノ!/リ  | ☆ 自民党、グッジョブですわ。 ☆  
      / ||ヽ  -'     / ̄ )` __      |ヒノ:} '` ,イ/ |  |  http://www.soumu.go.jp/senkyo/kokumin_touhyou/index.html
    ,r '   ヾ、  ,-、____ , イ ̄,r==-      ==-'  レ' /|  |  
  / ヽ    `ーソ  ' | |ト、,ヘ ′""          "" / / || | ☆ 日本国民の皆様、12月14日(日)の
. /    \_  /  | ハ ヽ`゙'ヘ       ' '__. ィ  / / | |  |     『衆議院議員総選挙』に必ず投票にいきましょう。 ☆  
           /   / / |  ヽ 川\    ヾ三ニ‐'′//! |  | |  |   
        /    / / 八  \川| |`ト- ..  __ , イ‐ァヘ |  | ||  |!
      /    / / /  \  \ 「`ー- 、    /  .〉  ト、|  ヽ、
     ,イ    /-─=¬ニヘ、_  \   厂\ 厂ヽ /!|   | `ー=ヘ
 -‐  ̄ /─ '  ̄     ├- ヽ\  \ノ\ \ 人 ハ!ヽ ||  |-┤ ヽ
      /          /!‐-- | |\   ト、_`ヽ oヽ  ト、!  ||  |‐┤- ヽ
  // 〉      __ /  ├‐-  ||  | 川-‐  | |  厂7! ハ!  ├:┤  ̄ヽ
  / / ー ─    ̄       ├‐- リ  || ハ!ヘ   | |  ト┤|/′ ヾ,┤   ゙i_
  ‐ '              〉‐-    | / /\ .|o | /ヽ/(′    ∨     \
‐--─ ──-r、___-、    /ー_     {(   '´>、! /ヽ/       |\       \
14デフォルトの名無しさん:2014/12/11(木) 12:06:54.47 ID:CmTJh6DI
>>11
DirectX SDKのCustomUIサンプルがもしかすると参考になるかも。
あれは変換候補リストを自前描画しているように見えたし。
15デフォルトの名無しさん:2014/12/11(木) 12:26:04.04 ID:4YWsTBXo
>>14
レスさんくす。CustomUIは見てる
あのサンプル、WM_IME_から始まるメッセージを処理してる部分すべてに対して「DefWindowProcに任せて他に何もしない」ように書き換えても自前で描画しやがるんだよね
だからIMEのメッセージを処理する以外の方法でやってるんだろうけど、そうなると調べるきっかけが無くて困ってるんだわ…
16デフォルトの名無しさん:2014/12/11(木) 15:49:31.91 ID:qKHRQsDr
17デフォルトの名無しさん:2014/12/11(木) 16:19:31.00 ID:CmTJh6DI
>>15
WM_IME_SETCONTEXTは元の通りの処理で、
WM_IME_STARTCOMPOSITIONはreturn 0した上で、
WM_IME_COMPOSITIONはそのまま流すと、
候補リストが出なくなった。
期待した動きにはなっているみたいだけど、
WM_IME_COMPOSITIONの取り扱い方が謎すぎる。
下手したらWin8.1のみOKでしたとかありそうw
18デフォルトの名無しさん:2014/12/11(木) 16:21:13.59 ID:Knr7owVD
>>17
Win7でテストしよっか?
19デフォルトの名無しさん:2014/12/11(木) 17:23:39.08 ID:4YWsTBXo
>>17
おお、いけた!
Win7でもとりあえず期待通りに動いてる
STARTCOMPOSITIONだけ潰すという発想ができなかった
完全な思い込みだったわ
ありがと、助かった

>>18もありがと
20デフォルトの名無しさん:2014/12/12(金) 23:32:09.07 ID:1WcHfeh2
IMEは本当にめんどくさい
GoogleIMEは候補リスト非表示にしたらIMN_OPENCANDIDATEとIMN_CLOSECANDIDATE送らなくなったりするし
予測変換リスト消せないし
21デフォルトの名無しさん:2014/12/13(土) 06:14:59.62 ID:KcZztYF+
22デフォルトの名無しさん:2014/12/15(月) 17:08:35.86 ID:ki2QYat8
OPENCANDIDATEは無くても問題ないけど、CLOSECANDIDATEが無かったら
候補リストが閉じられたことをどうやって判断すれば良いんだろう
キー入力や変換状況から推測するしかないのか?
23デフォルトの名無しさん:2014/12/15(月) 22:06:20.53 ID:ZdlYoZ19
ネット上のファイルをDLする URLDownloadToFile についてです
これの戻り値は、正常を含めて3つあるとする説明がされているようですが
昨日からYoutubeのページを読もうとすると、800C000D が返ってきます

これは INET_E_UNKNOWN_PROTOCOL だそうで
検索しても日本語のサイトは出て来ないので最近追加されたのか
MSのサイトでは
The protocol is not known and no pluggable protocols have been entered that match.
となっていて、なにかプラグイン的なものが必要なのでしょうか
それとも、もうURLDownloadToFileは使えないのでしょうか
(XP+IE8では正常に表示しています)
24デフォルトの名無しさん:2014/12/15(月) 22:31:17.79 ID:Frs3czro
Win8.1/VS2013/VC++で「ttps://www.youtube.com/?gl=JP&hl=ja」(実際はh抜かず)に対して実行してみたけど
普通にトップページのHTMLダウンロードしたわ
25デフォルトの名無しさん:2014/12/15(月) 22:55:54.12 ID:ZdlYoZ19
なんかXPの更新が止まってるせいじゃないかという気がしてきました
URLDownloadToFileのせいじゃなくて、それを含むDLLのアップデートが必要ってことなんでしょうね
26デフォルトの名無しさん:2014/12/16(火) 00:13:30.39 ID:OxbDdIsh
とんでもないことです
>>23は無かったことにして下さい
URLが間違ってただけでした
27デフォルトの名無しさん:2014/12/16(火) 18:58:26.88 ID:PuXxa6T9
エラーメッセージが用をなしてない好例
28デフォルトの名無しさん:2014/12/16(火) 19:36:52.01 ID:I/xcQtqD
いやわかるだろ
プロトコルが間違ってるつってんだから
29デフォルトの名無しさん:2014/12/16(火) 20:04:42.76 ID:O3FTYGHy
やっぱGUIプログラミング極めるにはC#覚えた方が良いの?
30デフォルトの名無しさん:2014/12/16(火) 20:15:20.84 ID:C7o/2Q89
そりゃ覚えられるなら覚えたほうがいいだろう
31デフォルトの名無しさん:2014/12/16(火) 20:56:02.75 ID:RnBy1HD6
C#を覚えておくと就職で役に立つ可能性がある
趣味でやるならC++のほうが応用利く
C#はやりたいことが出来ないことがちょいちょいある
32デフォルトの名無しさん:2014/12/16(火) 21:07:33.11 ID:O3FTYGHy
>>31
趣味だしC++でやるかな。いろいろ変態なことしたいし
33デフォルトの名無しさん:2014/12/16(火) 21:11:26.66 ID:iZ4fodMn
そこでCLI?
34デフォルトの名無しさん:2014/12/16(火) 21:19:29.42 ID:73pYDHty
就職でC#って土方一直線やん
C++で組み込みのほうが稼げるよ
35デフォルトの名無しさん:2014/12/16(火) 21:44:21.67 ID:O3FTYGHy
C++でguiソフト作る時はみんなWin32APIでゴリゴリ書いてるのか
36デフォルトの名無しさん:2014/12/16(火) 21:45:20.29 ID:I/xcQtqD
WTL使ってる
37デフォルトの名無しさん:2014/12/16(火) 21:46:20.41 ID:WkYd0GRJ
なにそのマゾプレイ
最低でもWTL位は使うと思うぞ。
38デフォルトの名無しさん:2014/12/16(火) 21:58:02.07 ID:rJ4g6hQd
>>28
最初のコロンの前がプロトコルを指定するということを知らない人は多い
まあ、そういう人がこの板にいるのはどうかと思うが...
39デフォルトの名無しさん:2014/12/16(火) 22:00:52.40 ID:O3FTYGHy
あーそういうの使ってるのか。ようやく謎が解けたわ。もうプロシージャとバトルすんの疲れたわ
40デフォルトの名無しさん:2014/12/16(火) 22:01:40.09 ID:rJ4g6hQd
>>31
> C#はやりたいことが出来ないことがちょいちょいある

インラインアセンブラとか、ライブラリー含めたオブジェクトサイズ命とか?
他に何かあるかなぁ?
41デフォルトの名無しさん:2014/12/16(火) 22:08:06.10 ID:XedjYbmG
C#やっててやりたいこと調べてたら「Win32API使ってください」って書いてあるとゲンナリする
じゃあ最初からC++でやるわ

>>35
CreateWindow書きまくってるわ!
42デフォルトの名無しさん:2014/12/16(火) 22:24:28.50 ID:iZ4fodMn
Win32API自体は何も面倒ではない。

WM_COMMAND WM_NOTIFY とか、もうちょっとWindows自体のメッセージの仕組みがどうにかならんかな。
43デフォルトの名無しさん:2014/12/17(水) 14:46:21.16 ID:ejUwy2/1
そこは増築したから可笑しくなってるんで
治そうと思ったら基礎から創りなおさないといけないので無理
44デフォルトの名無しさん:2014/12/17(水) 15:05:18.23 ID:M4DlxzNU
笑えない
45デフォルトの名無しさん:2014/12/17(水) 15:31:21.24 ID:31zY9Bk5
>>41
あほか
C#から呼ぶWin32APIやCOMメソッドの味こそ至高
46デフォルトの名無しさん:2014/12/20(土) 11:55:41.16 ID:ktPib6WI
質問ッス
CallWindowProc()がなぜ必要かについて教えてください
もとのウィンドウプロシージャを、シンボルなり関数ポインタなりで直接呼出しちゃいかんの?

ネットに転がってるサンプルとかだと、サブクラス化でウィンドウプロシージャをFoo()に変えるときは
Foo()からCallWindowProc()経由で元のウィンドウプロシージャを呼び出し、
ウィンドウ生成時にウィンドウプロシージャFoo()を指定したときは
Foo()からDefWindowProc()直接呼出し、みたいな傾向で使い分けられてるようなんだけど
意味わかんね;
47デフォルトの名無しさん:2014/12/20(土) 12:15:43.77 ID:e+FqSQyU
リエントラントになってないんじゃね
48デフォルトの名無しさん:2014/12/20(土) 12:25:32.32 ID:ktPib6WI
ウィンドウプロシージャの呼び出しはメッセージキューで同期化されているのでは…
49デフォルトの名無しさん:2014/12/20(土) 12:44:10.96 ID:Rb9drWZD
>>46
サブクラス化が解除された時にチェインが切れてしまうから。
1がサブクラス化、2がサブクラス化、1がサブクラス化解除してさようならって順番になった時、
OSが管理していれば2から解除後のプロシージャに繋げることができる。
50デフォルトの名無しさん:2014/12/20(土) 12:57:40.39 ID:Rb9drWZD
ふと思い出したけど、WinXPから追加されたShell系のAPI使った方がスマートかも。
Get/Set/RemoveSubclassとDefSubclassProcってのがある。
51デフォルトの名無しさん:2014/12/20(土) 19:49:13.64 ID:yFHMiTkQ
47,48,49 ハズレ。 精進してください
52デフォルトの名無しさん:2014/12/20(土) 20:02:12.53 ID:Rb9drWZD
Win32APIで二度と精進することは無いよ、流石に。
このまま解答は謎のまま終わるのだろうしw
53デフォルトの名無しさん:2014/12/20(土) 20:41:38.02 ID:d3OhbbmF
>>46
内部でどうやってるのかは知らんけど
WIn32APIってある関数を関数ポインタから直接呼び出さないようにするためのAPIって他にもあった気がする。

元のウィンドウプロシージャがウィンドウプロシージャとは思えないような名前になっている場合でも
CallWindowProc()によって呼ばれていればウィンドウプロシージャとすぐ分かるとか(→まず命名規則を直せwと言われる)
あとコードの中で関数ポインタを使ってそのまま呼び出すと、それが普通の関数との区別が付きにくいから、
普通の関数ではなく関数ポインタを使って呼び出してますよ〜っていうアピールとか
ただ、稀にそういう無駄に思えるAPIにはなんらかの安全装置が入っている場合もあると思う
NULLの場合は呼ばないとかね

まぁ適当に書いたw
54デフォルトの名無しさん:2014/12/21(日) 07:13:15.86 ID:8360BKUs
Win32APIでウィンドウ内部に表示したテキストをマウスカーソルで選択して
その内容をクリップボードにコピーするにはどうすればいいですか?
テキストをビットマップで描画した場合はそういう動作を実装するのは原始的な方法でやるしかないと思います。
例えば、独自のデータクラスでテキストのフォント情報とウィンドウ内での表示位置を保持しておいて
マウスカーソルが該当位置に入ったときに、マウスポインタをテキストカーソルに変更してテキストを選択、コピーできるようにするといった方法です。
テキストをスタティックテキストとして表示した場合は選択してコピーという動作は不可能ですか?
質問を率直に表現すると、一般的なウェブブラウザやメーラーでの実装がどうなってるのか知りたいです。
55デフォルトの名無しさん:2014/12/21(日) 10:13:26.13 ID:Cbe/fEHP
56デフォルトの名無しさん:2014/12/21(日) 22:08:16.21 ID:nIdOkAPb
Win16でチェインを作るのに用意したAPIが流用できたって事なのかな。
まあ、SDK Books Onlineに全てが書かれているわけでも無し、
Win16の時点で既に別の用途を持っていた可能性もあるか。
57デフォルトの名無しさん:2014/12/21(日) 22:13:14.89 ID:OyijOBJq
58片山博文MZ ◆T6xkBnTXz7B0 :2014/12/23(火) 19:22:30.30 ID:wKRFgZ7F
スタティックコントロールは、標準では上下中央寄せができないんだよな?
59デフォルトの名無しさん:2014/12/23(火) 19:48:02.42 ID:hFB1tnzj
>>58
SS_CENTERIMAGE
60片山博文MZ ◆T6xkBnTXz7B0 :2014/12/23(火) 20:03:29.88 ID:wKRFgZ7F
>>59 ありがと
61デフォルトの名無しさん:2014/12/24(水) 01:05:28.96 ID:EbeXH3Zw
>>54
ここに簡潔に書くことはできない
非常に手の込んだことやる
手探りならHTML->RitchTextコンバータ作ってRitchTextCtrlでごまかせ
62デフォルトの名無しさん:2014/12/24(水) 01:08:44.57 ID:Y7j7WALA
mouse_eventでマウス選択をエミュレート
keybd_eventでctrl+cなどのクリップボードコピーのショートカットキーを合成
63デフォルトの名無しさん:2014/12/24(水) 01:14:30.06 ID:tVM9CYMM
VBSでWindowsのアクティブウィンドウの"XXX.exe"やPIDを取得する方法ありますか?
WMIのWin32_Processテーブルで実行中アプリ一覧は取得できたんですけど、
アクティブなのかとかウィンドウの順序がわかりませんでした。
VBSを実行するとVBSがアクティブになるようなので、直前にアクティブだったモノを取得したいです。
64デフォルトの名無しさん:2014/12/24(水) 02:47:17.94 ID:Xbr7BZOu
>>54
スタティックコントロールならGetWindowsTextで出来るし
TextOutや画像の場合はOCRで判別しないとだめな事は分かるが
ブラウザやメーラーのどんな機能を求めてるのかがいまいちわからない
オープンソースで沢山あるから求めるものを探してみては?

>>63
いろいろやり方あるけど
CUIオンリーで作るか
GUIでやるならGUI生成前にアクティブなウィンドウを保持すればいい
65デフォルトの名無しさん:2014/12/24(水) 11:33:52.81 ID:mx5B7sKs
非MFCな簡単なDialog(STATICテキストとボタンのみ)を作ったのですが、
STATICテキストに文字列を改行を含めて複数行書きこんだら、Dialogの
高さが足りなくて、下のほうが表示出来ないのですが、STATICテキスト
全体が丁度うまく入るようにDialogの高さを自動的に調整するには、
どういう手法がありますか?使うフォントやサイズから必要な高さを
計算するしかないでしょうか?
66デフォルトの名無しさん:2014/12/24(水) 12:11:28.08 ID:GkceODzb
リソースで用意したダイアログボックスをDialogBoxで呼び出す分には行数だけ意識してりゃ良いと思うんだけど、
CreateWindowでダイアログボックスっぽいウインドウを自作してるのか、それともフォントを動的に変更したいのか?
フォントが固定なら、あらかじめサイズ測ってそれが収まるサイズで作れば良いんじゃね
67デフォルトの名無しさん:2014/12/24(水) 12:18:20.64 ID:mx5B7sKs
>>66
レスありがとうございました。
リソースで用意したダイアログボックスをDialogBoxで呼び出しています。
CreateWindowは使っていません。
フォントが固定です。
この場合には、この使っているフォントの高さを予め測っておいて、それに
行数を掛ければよいのでしょうか?
68デフォルトの名無しさん:2014/12/24(水) 12:22:58.34 ID:mx5B7sKs
>>66
良く考えたら、横方向も、一番長い行に合わせてウインドウ幅を
広げないといけないように思うのですが、それも自前で実装する
必要ありますか?
69デフォルトの名無しさん:2014/12/24(水) 12:23:48.12 ID:mX/5YedW
>>67
リソースは何で作ってんの
リソースエディタなら最初から必要な分だけ高さ持っとくではダメなん?
70デフォルトの名無しさん:2014/12/24(水) 12:25:35.17 ID:mx5B7sKs
>>69
ああ、書き忘れていました。フォントは固定ですけれど、
表示する文字列は、状況に応じて変えたいのです。
71デフォルトの名無しさん:2014/12/25(木) 00:57:35.40 ID:lIKku1jt
MessageBoxをやりたいのでは?
72デフォルトの名無しさん:2014/12/25(木) 01:11:18.47 ID:hIjBmD/A
CreateSymbolicLinkで作られたリンクの
リンク先パスってどうやって取ればいい?
73デフォルトの名無しさん:2014/12/25(木) 01:20:46.64 ID:g3diUBPe
>>71
MessageBoxって、表示する文字列に応じて、縦横サイズは
自動で調整されたっけ?
確か、横幅は勝手な値になったような気がする。
74デフォルトの名無しさん:2014/12/25(木) 01:28:01.75 ID:hWcCZ3d4
>>72
「Junctions と Symbolic Links を見分ける」って記事で、参考になりそうな情報が載ってた

>>73
ある程度は可変だけど、横の長さは限界があったような
75片山博文MZ ◆T6xkBnTXz7B0 :2014/12/25(木) 06:02:25.32 ID:gEw73of1
GetTextExtent32
DrawText
使えば、洗濯中のフォントでテキストの大きさが計算できる
76デフォルトの名無しさん:2014/12/25(木) 07:21:41.79 ID:iVu6887z
>>72
DeviceIoControlを使う
77デフォルトの名無しさん:2014/12/25(木) 07:48:06.58 ID:hIjBmD/A
>>74, >>76
DeviceIoControlのFSCTL_GET_REPARSE_POINTで取れそうだね
ありがとう
78片山博文MZ ◆T6xkBnTXz7B0 :2014/12/25(木) 15:02:58.41 ID:gEw73of1
choosefontでarialフォントが出てこない。何でやねん!
79片山博文MZ ◆T6xkBnTXz7B0 :2014/12/25(木) 15:52:04.46 ID:gEw73of1
自己解決。フォントの非表示になってた。
80サトラレ3:2014/12/25(木) 17:34:46.20 ID:EHIgPikd
メモリバッファオーバーフローする関数を使うなよ、下のページを見てね。

CRT 関数のセキュリティが強化されたバージョン
http://msdn.microsoft.com/ja-jp/library/wd3wzwts.aspx
81デフォルトの名無しさん:2014/12/25(木) 17:51:52.84 ID:sOzYbLID
移植性皆無のゴミか
82デフォルトの名無しさん:2014/12/25(木) 19:31:42.18 ID:g3diUBPe
>>80
visual studioが自動的に_s関数に置き換えてくれると
嬉しいんだけどなあ。
83デフォルトの名無しさん:2014/12/25(木) 19:42:12.64 ID:/AazF+Ck
パラメーターあるのに
84デフォルトの名無しさん:2014/12/25(木) 19:45:23.74 ID:g3diUBPe
>>83
それを考慮して自動的に変換するくらい
やれば出来るだろ。
85片山博文MZ ◆T6xkBnTXz7B0 :2014/12/25(木) 19:51:05.09 ID:gEw73of1
>>84
templateでできそうだな。GitHubにアップップしてくれよ。
86デフォルトの名無しさん:2014/12/25(木) 19:53:16.23 ID:TNXAHmr6
プルリクエストで他人をタダでコキ使う
87デフォルトの名無しさん:2014/12/25(木) 20:03:52.00 ID:DUSQtRDS
Windowsのバッファオーバーフロー芸(脆弱性)の頻度を見るに
効果があるのか疑わしい
88デフォルトの名無しさん:2014/12/25(木) 22:08:24.76 ID:WcNb3TxT
VC expressってめっちゃリンクエラー出るな。professionalなら出ないみたいな記事多いけど本当なのだろうか
89デフォルトの名無しさん:2014/12/25(木) 22:32:06.97 ID:hWcCZ3d4
いつの時代のExpressだよ
90デフォルトの名無しさん:2014/12/26(金) 02:51:46.48 ID:9kx5MszT
PlgBltでマスク付きで回転させると、180度の時だけマスクだけ回転されません
原因と対策が知りたいです
91デフォルトの名無しさん:2014/12/26(金) 07:37:15.32 ID:MY2qGPtA
バッファーオーバーランだろうがww
92デフォルトの名無しさん:2014/12/26(金) 07:45:39.55 ID:E/d/nF+F
突然どうしたの?発作?
93デフォルトの名無しさん:2014/12/27(土) 07:37:15.02 ID:1yD8UlHJ
>>80 スレチ
94デフォルトの名無しさん:2014/12/28(日) 18:48:47.92 ID:6Z3FAnif
もうスタックをcall/ret 用とデータ用にわけようよ‥
95デフォルトの名無しさん:2014/12/28(日) 18:52:59.69 ID:vTsBbpaJ
ハーバードか
96デフォルトの名無しさん:2014/12/28(日) 20:08:19.98 ID:AQDitcxr
>>95
違う、ハーバードアーキテクチャは命令とデータが別になってる
戻り番地は命令じゃない
97デフォルトの名無しさん:2014/12/29(月) 11:35:57.58 ID:5nnfxQgp
>>94
イイネ!
98デフォルトの名無しさん:2014/12/29(月) 14:20:58.47 ID:S3K6lQ9W
win32じゃないけどここが一番詳しそうだから知ってたら教えてくれ

HDDのドライブにautorun.infを撒くウィルスに掛かった。
消しても消しても直ぐ新しく作成される。中身はこんな感じ

> [AutoRun]
> ;QtgJy DWVOd
> oPEn = qlthe.pif
>
> ;
> sHell\ExplOre\command= qlthe.pif
> ;
> sHeLL\oPEN\DEFaUlt=1
> ;UNOVNAKwaqR
> sheLL\Open\coMMANd =qlthe.pif
> sHell\AuTOplAy\cOMmaNd =qlthe.pif

レジストリでAutoRunはdisableにしたけど、根本解決出来ていない。

よくわからないまま初めて使ったプロセスモニターで見てると、
消す時と作られる時、svchostからDLLhost.exeが呼ばれてるみたいなのは分かったけど、
レジストリ検索しても、それらしいトリガーが見つからなかった。

イベントドリブンで動いてるのは分かるんだけど、どこに仕掛けられてるか分からない。

教えて欲しいのは、仕掛けられてる可能性としてはどの辺なんだろうか?というのと
ファイル作成イベントを拾ってトレースする方法です。

説明を書きこむのもメンドーだと思うけど、知ってる人が居たらお願いします。
99デフォルトの名無しさん:2014/12/29(月) 14:31:14.30 ID:/fu+2Q3X
環境によって違うかも試練が
こっちじゃないの
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
100デフォルトの名無しさん:2014/12/29(月) 14:33:53.40 ID:z3+ydwsT
>>98
ファイル作成イベントを監視するより、作成先のパスにアクセスしてる奴を探したほうが良いのでは?

>>99
それ、起動時に実行されるパスを記述するとこだろ
101デフォルトの名無しさん:2014/12/29(月) 14:35:16.58 ID:MO2YxmqX
それは罠だ気をつけろw
その仕組みを無効にしたら時限爆弾のスイッチが入るかもしれんぞww

おとなしくまっさらにしてOSを入れ直しとけ
102デフォルトの名無しさん:2014/12/29(月) 14:45:29.22 ID:/fu+2Q3X
>>100
起動時にウィルスが実行されるんじゃないの
103デフォルトの名無しさん:2014/12/29(月) 15:15:51.18 ID:S3K6lQ9W
みんな有難う。入れ直すかぁ・・・
104デフォルトの名無しさん:2014/12/29(月) 15:49:07.15 ID:OoIX/QSt
何故このスレでその質問を・・・?
105デフォルトの名無しさん:2014/12/29(月) 17:28:39.53 ID:D8f+V+OM
>>104
>>98でここが一番詳しそうだからと書いてあるよ
106デフォルトの名無しさん:2014/12/29(月) 21:43:29.71 ID:l6t0xFiE
詳しい奴も常にここ見てるとは限らんしなあ
107デフォルトの名無しさん:2014/12/29(月) 22:22:06.28 ID:OjECgY52
>>103
タスクスケジューラとスタートアップは見たのかな?
108デフォルトの名無しさん:2014/12/30(火) 00:15:47.68 ID:smW2R/O9
msconfigで確認
109デフォルトの名無しさん:2014/12/30(火) 00:17:44.22 ID:smW2R/O9
svchostの実行ユーザーがSYSTEM/Administratorなら変なサービス登録されてるだろうし
一般ユーザーならどこかに実態があるな
110デフォルトの名無しさん:2014/12/30(火) 00:31:13.33 ID:xDBp8ctI
自動起動は
・レジストリのAutoRunとAutoRunOnce(HKCUとHKLMの両方に存在)
・スタートメニューのスタートアップ
・コントロールパネルの管理メニューのサービス
・アクセサリのシステムツールのタスクスケジューラ
がある
特にタスクスケジューラに登録されたプログラムは起動タイミングが多様に設定できる
111デフォルトの名無しさん:2014/12/30(火) 00:39:49.88 ID:eN0LA0SP
>>110
>AutoRunとAutoRunOnce
RunとRunOnceではなくて?

あと、スタートメニューのスタートアップとmsconfig(Win8の場合はタスクマネージャ)で設定出来るスタートアップは別だよね
112デフォルトの名無しさん:2014/12/30(火) 00:47:11.64 ID:xDBp8ctI
>>111
そうRunとRunOnce
前のレスのほうでのAutoの文字につられてしまった

msconfigで見れるスタートアップはレジストリのRunとスタートメニューのスタートアップの列挙じゃね
113デフォルトの名無しさん:2014/12/30(火) 01:49:40.88 ID:si9v+Xxr
なんのスレだよ
114デフォルトの名無しさん:2014/12/30(火) 01:57:12.63 ID:JWtJz6A1
どさくさに紛れてウィルスの作り方をこっそり教えるスレ
115デフォルトの名無しさん:2014/12/30(火) 02:28:36.54 ID:8Geo16ji
クラス内の2つの関数がテキストファイルにログを出力するようになってて
プロジェクトによって出力内容が少し変わるような場合ってどうしてる?

そのクラスは機能毎に分けられてる小さなクラスで
将来プロジェクトAとBに使用された場合ログ出力部分だけが
プロジェクトAとBで違う動作になる感じ
116デフォルトの名無しさん:2014/12/30(火) 02:29:29.57 ID:8Geo16ji
C++スレと間違えたからそっち行くごめん
117デフォルトの名無しさん:2014/12/30(火) 08:20:02.76 ID:z/APKETI
>>115
条件付きコンパイル
118デフォルトの名無しさん:2015/01/02(金) 12:53:58.03 ID:3QN74PF7
BOOL WINAPI FileTimeToSystemTime(
_In_ const FILETIME *lpFileTime,
_Out_ LPSYSTEMTIME lpSystemTime
);
で入力のFILETIME構造体の中身が0の場合、
1601/01/01 00:00:00
が帰って来るようなのですが、これはそういう仕様でしょうか?
119デフォルトの名無しさん:2015/01/02(金) 13:02:54.04 ID:s3wWdubz
仕様です。
120デフォルトの名無しさん:2015/01/02(金) 13:13:58.61 ID:9DuwxUct
その日時から100ns単位での経過時間を64bitで表したものが
FILETIME構造体だから、そりゃそうだろって感じではある。
121デフォルトの名無しさん:2015/01/02(金) 13:28:24.30 ID:gE/lARkH
徳川幕府が開かれた記念に開始年を合わせているのです
122デフォルトの名無しさん:2015/01/02(金) 13:58:51.17 ID:3QN74PF7
>>119
仕様ですか。マイクロソフトのサイト見ても仕様だとは書いていないのですが。
どこかに情報ありますか?
一方、大きな値を与えた場合には
FILETIME の値が 0x8000000000000000 以上の値である場合、この関数は失敗します。
という説明はありますが、確かにこれ以上の値を与えるとエラーしました。
でも、戻り値のSYSTEMTIME構造体の中には、非常に大きな年月日が入っていて、いつも
同じ値なのですが、これも仕様でしょうか?エラーの場合に戻り値が異なる可能性ありますか?
123デフォルトの名無しさん:2015/01/02(金) 14:10:26.44 ID:WWxidtQA
失敗した場合にlpSystemTimeに何が返るかなんて保証されんだろう。
124デフォルトの名無しさん:2015/01/02(金) 15:05:12.79 ID:hrliGDH8
>>122
http://msdn.microsoft.com/ja-jp/library/x3399a54.aspx
>FILETIME の構造は、1601 年 1 月 1 日 1 時以降の 100 ナノ秒間隔の数値を表す 64 ビットの値です。

http://support.microsoft.com/kb/188768/ja
>FILETIME 構造体は 1601 年 1 月 1 日以降の 100 ナノ秒間隔の数を表します。構造を組み合わせて 1 つの 64 ビット値を形成する 2 つの 32 ビット値で構成されます。
125デフォルトの名無しさん:2015/01/02(金) 15:08:09.17 ID:hrliGDH8
>>122
>仕様ですか。マイクロソフトのサイト見ても仕様だとは書いていないのですが。

MSのサイトの何処かには書いてるんだが、それがMSDNマガジンの中にしか無いってこともあるし。
まとめて書いてくれてたりハイパーリンクがあったりはしなくて情報は分散してる。
126デフォルトの名無しさん:2015/01/02(金) 15:16:26.95 ID:hrliGDH8
>>122
何故 1601年なのか?
http://blogs.msdn.com/b/oldnewthing/archive/2009/03/06/9461176.aspx

ちゃんとMSのサイトの中にある。見つけにくいがw
127デフォルトの名無しさん:2015/01/02(金) 15:29:57.96 ID:9gyWW7Zh
ところで、なんで経過時間になってるの?
サイズを最小に収めようとしたから?
128デフォルトの名無しさん:2015/01/02(金) 15:37:36.86 ID:3QN74PF7
どうも私の質問の意図が伝わっていないようなのですが、何故1601年から数えるのかを聞いているのではありません。
私の質問は、systemtimeの
1601/01/01 00:00:00をfiletimeに変換すると二つの32bit正整数が得られると思いますが、それはゼロではありません。
それにもかかわらずにfiletimeのゼロを
systemtimeに変換すると何故1601/01/01 00:00:00
になるのかが疑問なんですが?仕様ですか?
129デフォルトの名無しさん:2015/01/02(金) 15:45:04.62 ID:hrliGDH8
>>127
time_t の発案者に聞いてみないと分かんね
130デフォルトの名無しさん:2015/01/02(金) 15:45:28.67 ID:C0yW4Jjr
131デフォルトの名無しさん:2015/01/02(金) 15:47:04.02 ID:hrliGDH8
>>128
ん? 何時の間にか変換が逆になってない?
132デフォルトの名無しさん:2015/01/02(金) 15:51:02.77 ID:9BexYNG0
>>124
> http://msdn.microsoft.com/ja-jp/library/x3399a54.aspx
> >FILETIME の構造は、1601 年 1 月 1 日 1 時以降

翻訳間違えてるな
原文には 1時なんて書いてないのに
133デフォルトの名無しさん:2015/01/02(金) 15:53:42.93 ID:C0yW4Jjr
SYSTEMTIME構造体は最小単位がミリ秒
FILETIME構造体は最小単位が100ナノ秒
SYSTEMTIME構造体からFILETIME構造体に変換した際に100ナノ秒の位の値を弄らないだけじゃね
134デフォルトの名無しさん:2015/01/02(金) 16:04:40.76 ID:hrliGDH8
>>132
>この記事は翻訳者によって翻訳されたものです。

誰かが機械翻訳に手を入れて間違えたのをMSがまんま承認したんだろな
135デフォルトの名無しさん:2015/01/02(金) 16:05:40.80 ID:hrliGDH8
>>128
SystemTimeToFileTime のソースコード見れば解決するw
136デフォルトの名無しさん:2015/01/02(金) 16:11:22.40 ID:WWxidtQA
書くたびに言うこと違うから、そりゃ意図が伝わらんわな。
137デフォルトの名無しさん:2015/01/02(金) 17:02:21.26 ID:ibIo6Doo
>>128
> 私の質問は、systemtimeの
> 1601/01/01 00:00:00をfiletimeに変換すると二つの32bit正整数が得られると思いますが、それはゼロではありません。

再現しない(普通に 0, 0 になる)
コード晒してみなよ
138デフォルトの名無しさん:2015/01/03(土) 00:30:12.85 ID:FOthHXBB
Windowsプログラミング学ぶ上で参考にした書籍ある?
139デフォルトの名無しさん:2015/01/03(土) 01:11:31.96 ID:TeAjaTLz
AdvancedWindowsくらいかな
140デフォルトの名無しさん:2015/01/03(土) 01:31:24.07 ID:ekZNF4RP
::Sleepについておしえて
1秒寝る場合

std::this_thread::sleep_for(std::chrono::milliseconds(1000));

::Sleep(1000);

では相対的な意味でどちらのほうが高精度なんですか?
141デフォルトの名無しさん:2015/01/03(土) 05:27:44.21 ID:Cj8CgFQv
前者は最終的に
concurrency::wait
を呼んでいて精度はmilliseconds
なのでどっちも同じ
142デフォルトの名無しさん:2015/01/03(土) 08:46:05.08 ID:zznC6x/d
>>137
わざわざテストして頂いてありがとうございました。
私の勘違いでした。1601/1/1は0,0になりました。失礼しました。
でも、不思議なのは、
FileTimeToSystemTimeは
FILETIME の値が 0x8000000000000000 以上の値である場合、この関数は失敗します。
とあるので、0x7FFFFFFFFFFFFFFFで試したら成功したのですが、これは良いのですが、
それで得られたsystimeの値を、逆にSystemTimeToFileTime
で逆変換したらエラーしました。不思議です。
143デフォルトの名無しさん:2015/01/03(土) 09:20:56.59 ID:X+rqV4BU
>>142
有効範囲が違うだけだろ
SYSTEMTIME の wYear の最大値は 30,827 だけど、0x7FFFFFFF, 0xFFFFFFFF の FILETIME を SYSTEMTIME に変換すると wYear は 30,828 になる
有効範囲を合わせるという考え方もあるけど、範囲チェックのやり易さとかを優先したんだろ
144デフォルトの名無しさん:2015/01/03(土) 09:55:50.41 ID:g9tk+6B8
>>142
そんな未来の話してたら鬼が笑いすぎて死ぬ
145デフォルトの名無しさん:2015/01/03(土) 13:12:33.23 ID:zznC6x/d
>>143
30,827や30,828という数字が最大値になっているのは、何か意味があるのでしょうか?
32767とか65536みたいな数字なら分るんですが。
146デフォルトの名無しさん:2015/01/03(土) 13:28:02.85 ID:/mlvjoc5
すこしは自分の頭を使えば?
147デフォルトの名無しさん:2015/01/03(土) 13:34:30.45 ID:uW6/ZV96
>>145
0x7F...F を SYSTEMTIME に変換したら 30,828年の途中の月日になってるから、年を 30,827年までにしたんじゃね?
そうすりゃ、月日をどう指定されても 0x7F...F を越えないから
148デフォルトの名無しさん:2015/01/03(土) 13:49:29.60 ID:2aVYf00S
1ミリも頭を使う気がないんだろうか
149デフォルトの名無しさん:2015/01/03(土) 14:05:18.45 ID:g9tk+6B8
>>145
それが世界滅亡の年だから、MSの技術者はそれより先は不要と考えた
150デフォルトの名無しさん:2015/01/03(土) 15:37:38.64 ID:TeAjaTLz
Y10K問題のRFCもあるというのに・・・ッ
151デフォルトの名無しさん:2015/01/03(土) 15:49:38.39 ID:6GQPH0ED
gdgd過ぎる質問者
クレーマー気質だな
152デフォルトの名無しさん:2015/01/03(土) 17:02:48.26 ID:ltaLXIWr
人工無脳のテスト中なんだろ。
153デフォルトの名無しさん:2015/01/03(土) 22:47:59.25 ID:zznC6x/d
registry editorの画面はF5で表示を更新
出来ますが、それをプログラム的に
行えるようなWIN32API有りますか?
154片山博文MZ ◆T6xkBnTXz7B0 :2015/01/03(土) 22:51:42.29 ID:XgnEofgF
>>153
InvalidateRect
TranslateAccelerators
155片山博文MZ ◆T6xkBnTXz7B0 :2015/01/03(土) 22:56:01.13 ID:XgnEofgF
>>153
レジストリー関数、
ツリービューコントロールの更新、
リストビューコントロールの更新
156デフォルトの名無しさん:2015/01/04(日) 00:51:37.92 ID:VkrGGUiZ
>>153
レジストリ情報を表示する処理をルーチン化して、
アプリ起動時の初期表示とF5が押された時にそれを呼び出す
157デフォルトの名無しさん:2015/01/04(日) 00:52:53.28 ID:OnSb2bmJ
>>154-156
www
158デフォルトの名無しさん:2015/01/04(日) 01:14:46.04 ID:lS1m/u6U
keybd_eventで。あーでもUAC効いてると送出側もUAC昇格してないといけないか
159デフォルトの名無しさん:2015/01/04(日) 02:36:02.78 ID:KhFc6V4y
SendMessageでF5送ればいいやん
160デフォルトの名無しさん:2015/01/04(日) 04:36:56.74 ID:Se//G/Gl
SendMessageでコマンドID648を送るのがいいでないかな。
UAC昇格が必要っぽいけど。
161デフォルトの名無しさん:2015/01/04(日) 05:27:09.82 ID:45GcCJJQ
SendInputも?
162デフォルトの名無しさん:2015/01/04(日) 08:30:09.06 ID:xLQUt7ms
いろいろ試したのですがどうやってもRegistry Editorの画面が更新
出来ません。どうすれば出来ますか?
163デフォルトの名無しさん:2015/01/04(日) 09:50:40.02 ID:eaSAVEXU
グダグダ言わず、黙って動くソースコード寄越せという事ですか。
164デフォルトの名無しさん:2015/01/04(日) 10:06:12.02 ID:+b+eo/V4
本当はWEBブラウザにでも使用してカウンター上げたいのかね
165デフォルトの名無しさん:2015/01/04(日) 11:07:44.66 ID:iACTx4eq
キーボードに爪楊枝でもはさんでおけばいいよね。
166デフォルトの名無しさん:2015/01/04(日) 18:49:49.23 ID:jxWL1hkj
むかし家庭用ゲームでも連射パッドってあったよな
ストUでしゃがみ小キックを連打とか
F5キー連打キーボードっての作ればバカ売れじゃね?
韓国あたりで
167デフォルトの名無しさん:2015/01/04(日) 20:10:44.38 ID:9gg44y73
168片山博文MZ ◆T6xkBnTXz7B0 :2015/01/04(日) 22:02:10.33 ID:izkph8nP
>>162
操作アプリ側のmanifest設定でUAC昇格しろ
169デフォルトの名無しさん:2015/01/05(月) 05:03:36.91 ID:W+aVkjp4
うるせ、カス
170デフォルトの名無しさん:2015/01/05(月) 20:11:15.00 ID:c3CM6ukt
教えてくんBOTのお相手ご苦労
171片山博文MZ ◆T6xkBnTXz7B0 :2015/01/06(火) 14:28:33.60 ID:hDnOTpqT
DoWonders98 (Win32 API Database Project)
https://github.com/katahiromz/DoWonders98

よろしく。
172片山博文MZ ◆T6xkBnTXz7B0 :2015/01/06(火) 14:52:45.97 ID:hDnOTpqT
スクリプト言語でWin32 APIを直接たたくのが難しいという話が
あったので、Win32 APIのデータベースを作ることにした。
興味があったら開発に参加して下さい。
173デフォルトの名無しさん:2015/01/06(火) 14:58:57.69 ID:/3+lVyCt
OLEのドラッグアンドドロップやってるんだけど、
ドラッグしてるファイルを他のファイルにドロップする方法が分かりません

フォルダへのドロップにらSHFileOperationで、実行ファイルへのドロップならCreateProcessで何とかなりますが、
ZIPファイルへのドロップとか、エクスプローラーなら圧縮ファイル内に追加したりできるのでそれを再現したいんです
後、IDropTargetのDragOverのタイミングでそれがドロップ出来るファイルなのか判別する方法も出来れば
174デフォルトの名無しさん:2015/01/06(火) 18:13:47.26 ID:vIVMYKnQ
175デフォルトの名無しさん:2015/01/06(火) 18:16:30.34 ID:F2LheoCu
あれはシェルというよりエクスプローラーの機能だからなぁ
適当なライブラリ使って実装したほうがいい
176デフォルトの名無しさん:2015/01/06(火) 18:42:55.32 ID:/3+lVyCt
>>175
いや、それがxfinderとか一部のファイラーでは出来るものがあるんですよ、
ソースの公開されてるexplorer++では残念ながら出来ないので参考にならず…
177デフォルトの名無しさん:2015/01/06(火) 18:51:24.99 ID:/3+lVyCt
ソースの公開されてるファイラーを検索してみましたが、xfinderと同じ作者さんのtablacusexplorerがソース公開されてて再現できるようですね
これでどうにか解決できそうです
178デフォルトの名無しさん:2015/01/06(火) 19:38:22.42 ID:fuOYowxU
だからさ、適当なライブラリで自前でやってるんだろうよ。
179デフォルトの名無しさん:2015/01/06(火) 19:40:23.59 ID:W2F4pWSu
だからもくそもない
180デフォルトの名無しさん:2015/01/06(火) 21:14:47.07 ID:RodQ+aTP
だからもくそもあるんだよ
181デフォルトの名無しさん:2015/01/06(火) 21:17:40.45 ID:Q7R46vB5
いえいらないです
182デフォルトの名無しさん:2015/01/06(火) 21:23:32.55 ID:nQ44NX4P
>>173
ファイルからIDataObject作って(SHCreateDataObject api等)
それをターゲットのIDropTargetにDragEnter&Dropする

DragOverで正しい引数を渡してやればeffectにドロップできるかどうかが入ってるでしょ
183デフォルトの名無しさん:2015/01/06(火) 22:32:22.60 ID:/3+lVyCt
>>182
(=゚ω゚)ノ 大体分かりました。どもです。
184デフォルトの名無しさん:2015/01/07(水) 09:01:46.88 ID:GreZiodL
SHCreateDataObjectのMSDNのコメントに、得られるDataObjectにはCF_HDROPなデータがないと書いてある
まあ自分でSetDataすればいいな
185デフォルトの名無しさん:2015/01/08(木) 20:31:36.79 ID:cV2um/1t
>>182さんのいうようにドロップ先のファイルのIDropTargetを作って、
DragEnter/DragOver/Dropでドラッグされてるファイルや状態のデータが送られてくるので、
それを作ったドロップ先のドロップターゲットで処理させることで目的のeffectを受け取ったりドロップすることが出来ました

DragOverだけは効率を理由?にIDataObjectが受け取れないのでDragEnterのタイミングでとっておいたポインタを利用
マウスの入力はDropのタイミングでは当然ボタンが離されているので何も押されていない状態を受け取ってしまう
こちらはDragEnterのタイミングで左右どちらのドラッグか取得しておき、最後に入力状態に結合すればイイだけですね

これで問題なさそうです
本当に助かりました、感謝します
186デフォルトの名無しさん:2015/01/09(金) 09:22:24.41 ID:+YxGEmiz
32bitの実行ファイルから64bitの実行ファイルをウィンドウを表示させずに起動して、終了待ちにしたいのですが

調べたところこのような感じのことがネットに出ていたのですが、間違いないでしょうか
・systemではウィンドウを非表示にできない。
・ShellExecuteでは終了待ちができない。
・CreateProcessでは32bitから64bitを呼び出せない。
395 名前: デフォルトの名無しさん [sage] 投稿日: 2015/01/
187デフォルトの名無しさん:2015/01/09(金) 09:45:14.13 ID:50+lIvWd
まず、64bitモード用プログラムは64bitモードでしか実行できないし、32bitモード用プログラムは32bitモードでしか起動できません。
従って起動するコマンドの実行ファイルが64bitモードで作られていれば自動的に64bitモードで実行されると思いますけど。
32bit用と64bit用で同名のコマンドがある場合でも64bitの実行ファイルをフルパス指定すれば良いだけだと思います。
188デフォルトの名無しさん:2015/01/09(金) 09:53:04.76 ID:7W6E51j5
コピペの応酬?
189デフォルトの名無しさん:2015/01/09(金) 09:53:33.44 ID:50+lIvWd
FAQ
190デフォルトの名無しさん:2015/01/09(金) 10:42:48.54 ID:Y0WqIXzk
>>186
試してないけど ShellExecuteEx なら終了待ちができるそうな
http://www.codeproject.com/Articles/1842/A-newbie-s-elementary-guide-to-spawning-processes
> ShellExecuteEx(&ShExecInfo);
> WaitForSingleObject(ShExecInfo.hProcess,INFINITE);
191デフォルトの名無しさん:2015/01/09(金) 10:45:49.02 ID:50+lIvWd
192デフォルトの名無しさん:2015/01/09(金) 11:09:12.19 ID:+YxGEmiz
ShellExecuteExの終了待ちは失敗することがあると出ていたのですが
まれなのでしょうか
193デフォルトの名無しさん:2015/01/09(金) 11:21:48.80 ID:Y0WqIXzk
>>192
どこでだよ? そもそも「ShellExecuteExの終了待ち」なんて処理は存在しない。
あるのは「プロセスの終了待ち」だ。 それに失敗することがあるのなら、その詳細を洗えば良いだけだ。
194デフォルトの名無しさん:2015/01/09(金) 11:46:14.62 ID:+YxGEmiz
ShellExecuteExにチャレンジしてみます。
ありがとうございます
195デフォルトの名無しさん:2015/01/09(金) 12:38:25.21 ID:+YxGEmiz
>>190-193
できました。ありがとうございます
196デフォルトの名無しさん:2015/01/09(金) 17:09:44.37 ID:JoT/J+XX
年始
197デフォルトの名無しさん:2015/01/14(水) 11:02:50.08 ID:H5VD+o7q
Win7で非MFCで簡単なdialogを作ったのですが
リソースではdialogのフォントをMeiryo 9 にしていて、Win7ではいい感じに
表示されるのですが、XPで実行するとアホみたいに大きなフォントで表示されて
しまいます。これをXPでもWin7を同じがそれに近い見栄えにする方法
教えて下さい。
198デフォルトの名無しさん:2015/01/14(水) 13:01:42.75 ID:EnBoJmyV
いやよ
いやいや
199デフォルトの名無しさん:2015/01/14(水) 13:41:37.70 ID:H5VD+o7q
>>198
早く教えなさいよ
200デフォルトの名無しさん:2015/01/14(水) 13:41:54.76 ID:zAqxDv6g
XPにMeiryo入れたらええがな。
それがダメなら7でMSゴシで作れや。
201デフォルトの名無しさん:2015/01/14(水) 14:21:03.25 ID:0jHyb9lO
馬鹿には大きく見えるフォントですって書いとけ
202デフォルトの名無しさん:2015/01/14(水) 14:21:13.77 ID:Jf8EXx2H
もういいかげんXPやめろや
203デフォルトの名無しさん:2015/01/14(水) 14:23:45.85 ID:H5VD+o7q
>>200
XPは他人のPCなのでMeiryoを入れられないのよ。
XPでMeiryo 9に近いフォントを教えなさいよ。
204デフォルトの名無しさん:2015/01/14(水) 14:32:24.37 ID:IApMgqT8
フォント入れられないなら無いから諦めろ
205デフォルトの名無しさん:2015/01/14(水) 15:54:27.58 ID:/jk0RY/v
愛と希望と勇気の日
206デフォルトの名無しさん:2015/01/14(水) 16:19:18.59 ID:YWWt0yf5
OSの種類調べてWM_SETFONTで変えればイイ
207デフォルトの名無しさん:2015/01/14(水) 16:35:44.94 ID:/jk0RY/v
>>197
pygameのひとか
208デフォルトの名無しさん:2015/01/14(水) 16:36:24.61 ID:t7e5aa/v
Tahoma 8ptでええやん
209デフォルトの名無しさん:2015/01/14(水) 16:39:53.75 ID:ALs4owf5
Tahoma 8ptは本当にお世話になりました
210デフォルトの名無しさん:2015/01/14(水) 17:03:00.45 ID:H5VD+o7q
Meiryo 9とTahoma 8で割といい感じに出来たわよ。
208には感謝するわ。
でも複数行の文字列だと、Tahoma 8のほうが改行幅が
少ないのよね。行が詰まった感じ。どうしたら改行幅を
増やせるのか教えなさいよ。
211デフォルトの名無しさん:2015/01/14(水) 17:20:55.37 ID:0jHyb9lO
きめえんだよ殺すぞ
212デフォルトの名無しさん:2015/01/15(木) 10:55:50.96 ID:WLm8ZLzH
はい
213デフォルトの名無しさん:2015/01/16(金) 19:29:37.64 ID:49OvZmoV
.Netのフォームとか唯のWin32APIのラッパーって感じであんま興味なかったんだけど、
WPFはいい感じなんだよな。いろんなパーツが入れ子に出来るし、
ハードウェアアクセラレーションも効くし、ベクタグラフィックもあるし。
ついにWin32APIを置き換える本命が来たって感じ。移行しようかなぁ。
あれを体験すると、オーナードローとかマジ糞ってかんじ。
214デフォルトの名無しさん:2015/01/16(金) 19:31:35.22 ID:3LWExJuS
WPFはオワコンなんじゃない
215デフォルトの名無しさん:2015/01/16(金) 21:09:39.44 ID:+s1rBzQ5
WPFってすでに9歳なんですけど
9年経っても全く普及しない時点で
何かおかしいと感じるくらいのアンテナ感度が欲しいところです
216デフォルトの名無しさん:2015/01/16(金) 21:31:06.96 ID:49OvZmoV
たぶんそれは今までWPFのポトペタ環境が無かったりアレだったりしたからだと思うんですよ。
ところが最近のVSではデザイナが結構まともになってるようで、
自分的にはこれからはWPFかなと思うのですが。
何でもかんでも入れ子に出来るのがステキかなぁと。
http://www.atmarkit.co.jp/ait/articles/0904/03/news104_4.html
217デフォルトの名無しさん:2015/01/17(土) 00:27:48.05 ID:VtVVV8DK
見えます、見えますぞ
昔同じようななことがありましたぞ

何でもかんでも継承できるC++って素敵→スパゲッティクラスのできあがり
218デフォルトの名無しさん:2015/01/17(土) 05:03:11.42 ID:Lt89vwb8
とりあえずWPFでボタン貼り付けて、
ボタンの中にStackPanel作ってListViewとTextBoxとEllipseを放り込んでみた。
http://fast-uploader.com/file/6976993736312/
こんなことWin32APIだけでやるのはもう無理な領域だな。
殆ど自前でUIパーツを作らなければならないだろう。
そんで最新のVS入れるとBlendってツールが勝手についてきて、
これ使うとUIをかなりエキセントリックにカスタマイズできるっぽい。
http://codezine.jp/article/detail/2354?p=4
219デフォルトの名無しさん:2015/01/17(土) 05:15:07.27 ID:Lt89vwb8
せっかく最新のVSを入れたので、最新のMFCはどんなものかと
ウィザードつかってビルドしてみてビックリした。
すげーオシャレッティーなVS風のドッキングウィンドウに対応しているのな。
動作は丸々VSそのもの。ドッキングするし、ツールバーはフローティングするし、
これはこれで凄いんだけど、吐き出されたソースコードがかなりカオスってて、
これを理解するのは骨が折れるので今更MFCは無いなと。
ツールバーにコンボボックスを表示するにはどうしたらいいのかなーとか思って
CMFCToolBarのソースコード見たけど、どうも昔ながらのビットマップとボタンベースな感じの
メソッドがずらりと並んでいたので、どうせハックじみたことをしないといけないのなら
もうWin32APIでいいやって感じ。まーMFCは無いわ。
220デフォルトの名無しさん:2015/01/17(土) 06:53:00.14 ID:wcQ46Ted
独り言でも流行ってんの?
221デフォルトの名無しさん:2015/01/17(土) 09:29:43.56 ID:VtVVV8DK
MFCですら使えない可哀想な人なんだから
そうっとしておこうよ。
222デフォルトの名無しさん:2015/01/17(土) 10:42:58.44 ID:Myj9loPB
>>218
最近はpython使ってます

>>219
同意します
223デフォルトの名無しさん:2015/01/17(土) 10:51:57.65 ID:ZprTe1JK
どこぞの挙手厨みたいだ
224デフォルトの名無しさん:2015/01/17(土) 15:07:29.95 ID:kMbky/jO
>>218
そんなGUIが必要になるケースはまれだから必要なときは手描きでOK
225デフォルトの名無しさん:2015/01/17(土) 16:31:40.05 ID:Lt89vwb8
でもツールバーにいろんなパーツを載せたりとか、
リストボックスのアイテムに複合的なコントロールを載せたりとか、
夢が広がリングじゃね?Win32APIでそういうことをするのはマジで鬼畜だからねー。
何でもかんでも入れ子に出来るWPFはそれなりに魅力あると思う。

そんでちょっとMFCについてもいろいろ調べたんだけど、どうもバグの宝庫みたいだな。
Win32APIは枯れているのか、バグ自体はそんな無い感じだし、MFC使う意味はマジ無いな。
バッドノウハウが山のように引っかかる。
というか、MS自体ももうMFCを自社ソフト使ってないだろうから、
バギーでもうちは関係ねーって感じなんだろうけど。
最初ちょっと見た目の華やかさに引かれたけど、
よくよくコードを見ると旧態依然って感じで、MFC使うくらいならWin32APIで十分って思った。
226デフォルトの名無しさん:2015/01/17(土) 16:51:04.89 ID:ZprTe1JK
噂になることより悪いことは
噂にすらならないこと
それがWPF
227デフォルトの名無しさん:2015/01/17(土) 16:55:22.07 ID:gnkFi13Q
長いからさっきのコピペだとばかり。
Wikipediaの記述にでも毒されて、スレタイすら読めなくなったか?
228デフォルトの名無しさん:2015/01/17(土) 17:21:11.88 ID:kMbky/jO
>>225
ツールバーにこだわる必要ある?
普通にウインドウにいろんなコントロール並べりゃ変わんないと思うんだが

リストボックスも、リストボックスやめてリストビューでオーナードローすりゃ何でも出来るでしょ
何ならリストを手描きにしちゃうとか

そもそも利用者はそんな凝ったUI望んでないと思うけどね
229デフォルトの名無しさん:2015/01/17(土) 17:32:22.93 ID:sqhqU9t5
最初に教わったのが
ListBox は使ってはいけない
だからな
230デフォルトの名無しさん:2015/01/17(土) 17:55:34.39 ID:ZprTe1JK
Connectで提示されたWPFのロードマップについて
元WPF開発者が「こんなものお為ごかしでロードマップでもなんでもない」とコメントするくらいなので
231デフォルトの名無しさん:2015/01/17(土) 18:01:39.39 ID:AnR/lVu0
>>229
なんで?
232デフォルトの名無しさん:2015/01/17(土) 19:45:05.38 ID:VtVVV8DK
>>225
>何でもかんでも入れ子に出来るWPFはそれなりに魅力あると思う。

MFCができたころも、そういういうオナニー画面を作る奴が続出したなあ
233デフォルトの名無しさん:2015/01/18(日) 01:20:37.86 ID:6QGj4g4i
http://www.resedit.net/
↑ここからリソースエディタダウンロードして使おうとしたら怪しいインストーラで、
そんなはずないなぁと思いつつインストールしたら、めっちゃたくさん広告インストールされて、
RedEditを必死にスタートメニュから探したけどインストールされてなかったorz

インストールされたやつ全部アンインストールして、chromeの設定初期化して、ウィルスソフトで
フルスキャンかけてるわ

超ムカつくから、どうにか仕返ししたいんだけど、何かいい方法ない?
234デフォルトの名無しさん:2015/01/18(日) 01:29:42.69 ID:3n+OvDNp
>>233
OSをきれいさっぱりインストールし直した方が良さそうだがなあ、
君の能力的にw
235デフォルトの名無しさん:2015/01/18(日) 01:48:34.84 ID:6QGj4g4i
>>234
今、それやるかどうかかなり迷ってる
OSをクリーンインストールしてまだ1週間くらいしか経ってないんだよ
だから、余計ムカつく
236デフォルトの名無しさん:2015/01/18(日) 02:08:55.57 ID:6QGj4g4i
窓の杜にはどうせインストーラしかないんだろうって思って、本家のサイトからポータブル版探してくるようにしてたから、
今回も本家のサイトから落としたんだけど
インストーラになってて、「?」って感じだったから、本家のサイト見直してみて、他にダウンロードできるファイルなさそうだし、
窓の杜のファイルサイズみても同じくらいだったから、インストーラしかないと思ってしまった

もう絶対インストーラなんか信じねー
必要もないのにインストーラで配布している奴は、サイトが乗っ取られて、
インストーラをすり替えられるとこまで想像できないんだよ
237デフォルトの名無しさん:2015/01/18(日) 04:08:29.95 ID:vlONSagO
まともな開発者なら
インストーラーと一緒に
md5とかのhash値も置いてるはず
238デフォルトの名無しさん:2015/01/18(日) 04:24:16.07 ID:6QGj4g4i
そのmd5とかのhash値も書き換えられてたら分からねーだろ
サイト自体を改ざんしてるんだから、インストーラをすり替えられるんだったらhtmlを少し書き換えるのも余裕だろ
239デフォルトの名無しさん:2015/01/18(日) 04:30:22.27 ID:VBkFi4Oh
>>238
そこまで気にするならvsのdvd買って来いよw
240デフォルトの名無しさん:2015/01/18(日) 04:33:48.74 ID:vlONSagO
>>238
同じサーバーに置くなよ
241デフォルトの名無しさん:2015/01/18(日) 04:42:33.41 ID:cyPihoPR
>>233
まじでウイルスなの?怖いなぁ…
そんなん疑いなく入れるわ
242デフォルトの名無しさん:2015/01/18(日) 04:43:36.39 ID:6QGj4g4i
>>240
hash値だけ別のサーバに置くなんてしてるとこある?
確かにそこまでやればセキュリティは十分だと思う
243デフォルトの名無しさん:2015/01/18(日) 04:49:41.77 ID:mjlEj2zR
>>238
Downloadボタンを模した広告に引っかかったのか。
かわいそう(
244デフォルトの名無しさん:2015/01/18(日) 04:56:51.19 ID:6QGj4g4i
>>243
ちげーよ、サイトが改ざんされてるんだよ

↓このURL自体はいろんなサイトからリンク貼られてるから間違いない
http://www.resedit.net/
↓これがダウンロードリンクのURL。このサイト内だし名前もおかしくないから、どう見ても配布ファイルへのリンク
http://www.resedit.net/ResEdit-win32.zip
ファイル名に関しては、窓の社から落とせるファイルと同一
ファイルサイズも、700KB弱で本物と同じくらい
245デフォルトの名無しさん:2015/01/18(日) 05:04:06.27 ID:mjlEj2zR
>>244
あー、すまん。確かにお前さんの言うとおりだわ。
246デフォルトの名無しさん:2015/01/18(日) 05:05:41.06 ID:EJiYTgCC
Webサイト改竄してまで広告しこむ輩が本当にいるのかにわかに信じがたいのだが。
だれか落として人柱になってみてよ。
247デフォルトの名無しさん:2015/01/18(日) 05:05:59.57 ID:7m1yfQlP
インストーラを起動したら、hao123を入れるチェックボックスがあるなw

uniextractで展開してもreseditの実体が見つからんから、たしかに改竄されてるかも知れん。

面倒くさいからそれ以上調べなかったが。
248デフォルトの名無しさん:2015/01/18(日) 05:08:15.72 ID:mjlEj2zR
言語ファイルが入っているはずのtranslation.7zも変なxlsxファイルが
入ってるみたいだし、あかんな。
249デフォルトの名無しさん:2015/01/18(日) 05:10:22.32 ID:7m1yfQlP
で、窓の杜からreseditダウソしたけど、ポータブル版じゃん。
こっち使えよw
250デフォルトの名無しさん:2015/01/18(日) 05:12:10.46 ID:6QGj4g4i
そうなんだよw そっち落とせばよかったのに、めっちゃ悔しいわー
251デフォルトの名無しさん:2015/01/18(日) 05:14:17.86 ID:7m1yfQlP
まあ、迷惑ソフトの類が入ってるだけならadwcleaner辺りで削除しとけば。
252デフォルトの名無しさん:2015/01/18(日) 05:23:46.89 ID:6QGj4g4i
>>251
なるほど、これいいな。thx
253デフォルトの名無しさん:2015/01/18(日) 05:33:28.01 ID:EJiYTgCC
単に作者がResEdit本体を入れ忘れたって可能性も。
広告が入ったのはチェックボックスクリアするの忘れたID:6QGj4g4iのポカで。
こんなマイナーメジャーなソフト狙ってわざわざWeb改竄してまで
利益の薄い広告ソフト仕込んでくるとはちょっと考えられないしなー。
今となってはMS謹製のリソースエディタがタダになったので、
ResEditもお役御免って感じだし。
254デフォルトの名無しさん:2015/01/18(日) 05:54:55.64 ID:6QGj4g4i
これインストールしてみると分かるけど、チェックボックスがあるのは最初のページだけで、そのあとは選択肢がない
5〜7ページくらいAcceptを押すと(この時点で明らかにおかしいんだが)
「バックグラウンドでインストールします」とか言ってインストーラの画面非表示にして
インストールしていくんだよね
そうするとchromeで普通にブラウジングするのも困難なほどアドウェアがインストールされる
255デフォルトの名無しさん:2015/01/18(日) 05:58:18.94 ID:mjlEj2zR
>>253
> 単に作者がResEdit本体を入れ忘れたって可能性も。
ないな。
256デフォルトの名無しさん:2015/01/18(日) 06:41:00.03 ID:EJiYTgCC
これは何か関係があるのかな。

http://lab.planetleaf.com/windows/development-win/free-visualcpp-extra-env.html
> ?2014.11.12 ResEditのリンクを作者のサイトから窓の杜のページへ変更しました。
> 作者の用意したインストーラーにはアドウェアが含まれるようになったようです。
> 配布も7z形式が削除され、インストーラー形式だけに絞られたようです。
> 善意のカンパに頼った開発には限界があると言うことを察してあげるべきかと思います。
257デフォルトの名無しさん:2015/01/18(日) 06:46:42.07 ID:EJiYTgCC
これも引っかかった。
http://datezou.blog.fc2.com/blog-entry-32.html

>まず、作者のページからダウンロードできる最新版は、Adwareを導入します。
>4種類の良くわからないスポンサーのプログラムの導入をスキップして導入開始すると、
>バックグラウンドでインストールを開始します。
>でも、実際には、裏でPCの情報を外に送信してます・・・
258デフォルトの名無しさん:2015/01/18(日) 06:52:56.24 ID:EJiYTgCC
もうこんなキモイ作者の作ったソフト使うのは止めたほうがよいだろうね。
素直にVSCommunityインストールすれ。リソースエディタ付いてくるから。
259デフォルトの名無しさん:2015/01/18(日) 07:10:01.81 ID:s5LGz3LP
>>254
左下に小さくDeclineってあるだろバカか
260デフォルトの名無しさん:2015/01/18(日) 07:14:59.15 ID:s5LGz3LP
>>254
それとResEditはインストール先の指定が無くて
ルートにインストールされてると思う
261デフォルトの名無しさん:2015/01/18(日) 07:29:54.24 ID:s5LGz3LP
ResEditインストール注意点
・最初にいくつか広告が入りDeclineが小さく表示されている
・インストール先を指定できずルートにインストールされる
1ページ目 ttp://i.imgur.com/9qn75TR.jpg
2ページ目 ttp://i.imgur.com/HBajxao.jpg
3ページ目 ttp://i.imgur.com/Bowds3d.jpg
4ページ目 ttp://i.imgur.com/irH6Wx1.jpg
5ページ目 ttp://i.imgur.com/DIVwXN3.jpg

Declineを押していれば広告のインストールはされないので
検索で出てくるAdwareという指摘は勘違いや思い込みに過ぎない
262デフォルトの名無しさん:2015/01/18(日) 08:01:05.78 ID:sNaTaheH
漢は黙って XN Resource Editor
263デフォルトの名無しさん:2015/01/18(日) 08:09:02.85 ID:U80lDlYB
ResEdit-win32 を作者のサイトからダウンロードして
VMWare上のwin7ゲストOS上でインストールし始めると、インストーラーの最初の画面が
http://neo.vc/uploader/src/neo16980.png
こんなんで、Decline するチェックボックスなんてなかった。
最近のAdは仮想PCかどうか見分けるらしいから、実機とは違う挙動なのかもしれないけど。
264デフォルトの名無しさん:2015/01/18(日) 08:22:11.66 ID:sNaTaheH
そろそろ Win32API の話しようぜ
265デフォルトの名無しさん:2015/01/18(日) 08:25:54.29 ID:s5LGz3LP
>>247,254,263
1ページ目のチェックボックスは入れるかどうかではなく
ブラウザ起動した時の初期ページにするかどうかだからな

プログラム板でこうもひっかかりそうな奴ばかりなのは驚きなんだが
266デフォルトの名無しさん:2015/01/18(日) 10:05:03.39 ID:ENvWPWHO
というかさあ、VS Community入れたら済む話じゃね?
267デフォルトの名無しさん:2015/01/18(日) 11:48:56.69 ID:3n+OvDNp
バカは素直に窓の杜から落とせばいいのに
厨二なのかなんだかわからんけど、かっこつけるから。
268デフォルトの名無しさん:2015/01/18(日) 12:21:36.93 ID:s5LGz3LP
>>266
vistaなんじゃね?
269デフォルトの名無しさん:2015/01/18(日) 12:37:28.88 ID:FrxzlsYx
>>243
漏れもそれだと思ってた

馬鹿はこっちの想像以上に馬鹿だと認識を新たにした
270デフォルトの名無しさん:2015/01/18(日) 13:24:52.28 ID:6QGj4g4i
>>261
マジか。俺の英語力が未熟だったようだ。これインストールするの難易度高すぎじゃね

これインストールしてもスタートメニューに登録されないし、デスクトップにショートカットが作られるわけでもない
それで、インストール先も選択できなくてルートに展開されるだけ
やっつけ作っただけじゃねーか、作者もう開発する気ないだろ

開発を継続しているならギリギリ許せるが、開発をやめてこういうインストーラに変えてくるって、
アドウェア認定されても文句は言えない
ちゃんとインストールはされるから、ウィルスソフトとかが反応しないし、たち悪すぎだわ
271デフォルトの名無しさん:2015/01/18(日) 13:33:17.72 ID:6QGj4g4i
>>266
VSはPro持ってるけど、コンパイル済みのexeのリソースが見たかったんだよ。VSで見れる?
>>267
今回は結果的に窓の杜から落とせば問題なかったが、普通、インストーラーとポータブル版両方配布しているソフトだと、
窓の杜にはインストーラー版しかないから、本家のサイトからポータブル版探すようにしてた
インストーラーだと、OSクリーンインストールしたら消えちゃうから面倒なんだよ
272デフォルトの名無しさん:2015/01/18(日) 13:33:27.86 ID:xTVffeg8
未熟なのは英語力だけなんでしょうか()
273デフォルトの名無しさん:2015/01/18(日) 13:52:15.78 ID:6QGj4g4i
>>263
マジだ。Win8.1の実機だと>>261のようになるけど、Hyper-V上の2008R2だと>>263の画面になるな
>>272
何が何でも叩きたいのかな
今回の件、ちゃんと分かってたのってID:s5LGz3LP1人だけなのに、なんでエラそうにしてんのか分からん
274デフォルトの名無しさん:2015/01/18(日) 14:01:47.94 ID:6QGj4g4i
あ、スマン、>>257の人が最初に見つけて来てくれだんだね
Declineでスキップしても裏でPC情報送信か。完全にアドウェアじゃねーか
275266:2015/01/18(日) 14:34:52.35 ID:ENvWPWHO
>>271
大丈夫だ、問題ない。
一番良いのでなくてもいける。
276デフォルトの名無しさん:2015/01/18(日) 14:40:44.04 ID:FrxzlsYx
馬鹿には無理ですね
判ります
277デフォルトの名無しさん:2015/01/18(日) 14:46:51.01 ID:xTVffeg8
何がなんでもっていうか、お前は叩きたい確かに
278デフォルトの名無しさん:2015/01/18(日) 14:51:33.21 ID:6QGj4g4i
>>275
あ、ほんとだ。普通に編集できるな
ファイル→開く→ファイル で結構何でも開けるんだな
exe開こうと思ったことなかったから知らなかった
279デフォルトの名無しさん:2015/01/18(日) 17:06:23.54 ID:cyPihoPR
VC6のリソースエディタが最強
280デフォルトの名無しさん:2015/01/18(日) 18:23:46.91 ID:3n+OvDNp
>>271
VC++6.0でも見れたぞ?
281デフォルトの名無しさん:2015/01/18(日) 19:18:55.17 ID:6QGj4g4i
そんな化石バージョンまだ使ってんの?
282デフォルトの名無しさん:2015/01/18(日) 20:13:03.11 ID:cyPihoPR
>>281
ずっとメインで使ってるよ
283デフォルトの名無しさん:2015/01/18(日) 20:38:31.95 ID:MSgZJjrE
Open Watcom C++のリソースエディタじゃダメなん?知らんけど
284デフォルトの名無しさん:2015/01/18(日) 22:50:49.49 ID:1aKmdwrF
リソースエディタなんていらないだろ
男なら黙ってリソーススクリプト手書きだろ
285デフォルトの名無しさん:2015/01/18(日) 23:07:07.73 ID:ev6gB9KS
CreateWindowで書きまくれよ
286デフォルトの名無しさん:2015/01/19(月) 15:27:24.31 ID:G7rK5Vbu
2ch人減ったな・・・。
287デフォルトの名無しさん:2015/01/19(月) 18:02:39.72 ID:IywTVsIe
WindowsのProcess ID ってDWORD(unsigned long)ですよね。
この場合、
0〜4294967295 までの値が可能だと思うのですが、
何らかのプロセスのIDがこの最大値4294967295を取るなんて言う
可能性はありますか?Win7 64bitの場合、タスクマネージャで見る限りは
0〜1万数千番台のIDばかりなので、IDの上限があるのかなと思いまして。
何か知っている人、教えて下さい。
288デフォルトの名無しさん:2015/01/19(月) 18:39:51.00 ID:IyMzAKva
予約されてる範囲があるんじゃね
289デフォルトの名無しさん:2015/01/19(月) 19:22:52.70 ID:MmQiAK43
>>287
0xFFFFFFFF を「特定の意味」にして利用したいのか?

ProcessIDだけじゃなくその空間でThreadIDも管理されるらしい。
要するにProcessIDで使われていなくてもThreadIDで使われている可能性もある。

OSを起動しっぱなし、アプリケーションの起動、終了を繰り返すのでなければ
そうそう大きな数値が割り当てられることは無いと思う。
ただ、目に見えないスレッドの作成、破棄でもIDが利用されると思うから注意。
重複させない、再利用を控えるための広大な範囲だと思うので「利用されない」というのは保証されないかと。

すべてのプロセスとスレッドがその数まで行くことは滅多にないだろうけど、
そういう使い方は万一のときに見つけにくいバグになると思うから辞めたほうが良いと思うよ。
290デフォルトの名無しさん:2015/01/19(月) 19:54:23.94 ID:nizA7YRt
System Idle ProcessがPID0で固定だからこれを特定の意味として利用するのはどうよ
291デフォルトの名無しさん:2015/01/19(月) 20:14:51.32 ID:MmQiAK43
GetProcessIDを使う場合は注意が必要だけど
292デフォルトの名無しさん:2015/01/19(月) 22:05:02.14 ID:kDSoR0IX
Win9xのプロセスIDはこんな感じだった。
http://www.atmarkit.co.jp/fwin2k/special/win9xorwin2k/win2kprocess_3.html
まあ、勝手な前提条件を付けても碌なことにはならないな。
293デフォルトの名無しさん:2015/01/19(月) 22:39:07.29 ID:RMIFPdrB
仕様で明確に定義されていない上限を仮定してプログラムを組むなんてのは
基礎の段階で「絶対にするな」と釘を刺されるレベルの話だと思うんだけどな
294デフォルトの名無しさん:2015/01/20(火) 01:46:34.43 ID:b0WvEVmq
-1には別の意味があるだろ。
ドキュメント嫁や。
295デフォルトの名無しさん:2015/01/20(火) 07:29:44.51 ID:vL4d8jBj
AllowSetForegroundWindow の ASFW_ANY とか?
296デフォルトの名無しさん:2015/01/20(火) 08:42:58.91 ID:F6HHv4j5
-1を禁止にしたところで
-2を使う香具師は絶対出て来る
297デフォルトの名無しさん:2015/01/20(火) 09:15:21.65 ID:Y4m7VuCx
馬鹿は死ねばいい
298デフォルトの名無しさん:2015/01/20(火) 14:44:42.94 ID:oo8ddG28
真の馬鹿は他人を巻き込んで死ぬ
299デフォルトの名無しさん:2015/01/20(火) 23:02:40.12 ID:xTVoTmEb
全員バカ
300デフォルトの名無しさん:2015/01/21(水) 01:40:32.30 ID:JwcfpdWP
てか、底辺職業のマにバカ以外いるのか
バカだから室内底辺職業のドカタになったん(なるしかなかった)だからな
301デフォルトの名無しさん:2015/01/21(水) 09:06:16.59 ID:KNee88yz
マ板じゃなくてム板だから
趣味の人も来るから
302デフォルトの名無しさん:2015/01/22(木) 17:54:32.21 ID:26vbf8jb
タスクトレイのアイコン取得をしたいのですが
vista 32bitでは問題ないのですが8 64bitでは・・・

SendMessage(hTrayWnd, TB_BUTTONCOUNT, 0, 0);
で数の取得はできるのですが
SendMessage(hTrayWnd, TB_GETBUTTONINFO, i, (LPARAM)btnInfo);
ができないです

Build95に同じような質問があって
そこでは解決してたみたいだけど
UACの確認や64bitでコンパイルしてもむりぽ

アドバイスお願いします
303デフォルトの名無しさん:2015/01/22(木) 18:12:41.69 ID:v3r7Cfk9
エラーは返ってないのかな
304デフォルトの名無しさん:2015/01/22(木) 18:54:49.21 ID:QOe1Cpix
自作のアプリでウインドウを開いて、その中に他のアプリを子ウインドウと
して取りこむことは可能でしょうか?
例えば、ウインドウを開いて、その中にnotepad.exeを取りこんでしまうとか、
あるいは、chrome.exeを取りこむとか。
305デフォルトの名無しさん:2015/01/22(木) 19:57:21.01 ID:cZyCjZEx
>>304
WS_CHILD
SetParent
306デフォルトの名無しさん:2015/01/22(木) 21:41:49.73 ID:d3EdR03l
>>302
TB_GETBUTTONINFOのwPrarmはインデックスじゃなくてidのようだが
そこらへんは大丈夫か
307デフォルトの名無しさん:2015/01/22(木) 23:11:36.48 ID:26vbf8jb
>>303
-1が返ってくる、GetLastErrorはなし

>>306
実際にはTB_GETBUTTONでidCommandを取得してからやってるから大丈夫
TB_GETBUTTONも問題ないからTB_GETBUTTONINFOだけどうにかならないかなあ
308デフォルトの名無しさん:2015/01/23(金) 01:48:36.97 ID:/OdWQWeb
やりとりするポインタがプロセス間で共有できないから
相手のプロセス空間にメモリを確保するAPIで確保した
ポインタを使う
309デフォルトの名無しさん:2015/01/23(金) 19:11:05.05 ID:o8k8FNHO
>>308
VirtualAllocExで確保しているので大丈夫かと
310デフォルトの名無しさん:2015/01/24(土) 10:52:26.66 ID:hVWhGn4s
子出しイクナイ
311デフォルトの名無しさん:2015/01/24(土) 12:23:16.07 ID:XGtAEOPl
中出し
子だし
312デフォルトの名無しさん:2015/01/25(日) 04:07:58.18 ID:/1Pjh8Oi
313デフォルトの名無しさん:2015/01/28(水) 22:49:55.78 ID:Rh7TkJwS
>>312
黒っ!
314デフォルトの名無しさん:2015/01/29(木) 06:39:09.09 ID:KP4aMXE3
こうみえても20代なんだろうか
315デフォルトの名無しさん:2015/01/31(土) 17:34:15.17 ID:HR7qMAjg
http://stackoverflow.com/questions/25267272/win32-enable-visual-styles-in-dll
のAnswerにあるコードをWin7Pro64のVS2013 C++で実行すると正常動作するのですが、
XP向けにv120_xpでビルドしてWinXP32bitで実行すると
hActCtx = CreateActCtx(&actCtx);
if (hActCtx != INVALID_HANDLE_VALUE)

でエラーして、INVALID_HANDLE_VALUE になります。GetLastErrorを見ると、
このコマンドを実行するのに十分は記憶域がありません。0x08
なんです。ディスクもメモリも十分積んでいるのですが。
いろいろググルと英語で同じエラーの
CreateActCtx error 0x00000008 (Not enough disk space available)
みたいなページは幾つかヒットするのですが、肝心のWinXPでエラーする原因が見つけられませんでした。
何かご存知でしたら教えて下さい。
316デフォルトの名無しさん:2015/02/01(日) 09:33:13.03 ID:Gotp+xwX
>>315
MSDNのAPIのコメントに、XPだとlpSourceも必要だったって書いてあるから、
それでもう一度試してみては?
317デフォルトの名無しさん:2015/02/01(日) 13:15:51.86 ID:a7daD80f
>>316
レスありがとうございました。
ご指摘の方法で上手く行きました。
何時間もググったのですが
>MSDNのAPIのコメント
を発見出来なかったのですが、もし可能ならそのアドレス教えて下さい。
318デフォルトの名無しさん:2015/02/01(日) 19:12:09.43 ID:ULsgfN/L
モーダルダイアログ上にレポートタイプのリストビューを配置しています。
リストビューヘッダーも表示していますが、このヘッダーのカラムの間にマウスを持って行き
ドラッグするとカラムサイズが変更できますよね。

このサイズ変更中、境界線のみ描画されるのですが、カラム全体もリニアにサイズ変更・描画
するにはどうすればいいでしょう?

Windowsの設定で、ウィンドウサイズの変更の際に枠のみ描画して処理を軽くするテクニックが
昔からあったと思いますが、動作としては似たような感じに見えます。
しかし、現環境ではそのような設定は行っていません。
(ウィンドウサイズ変更に対してリニアに再描画されている)
319デフォルトの名無しさん:2015/02/01(日) 20:07:50.82 ID:5WStzBZM
ListViewのStyleとMaskは何にしてる?
320デフォルトの名無しさん:2015/02/01(日) 20:28:55.23 ID:ULsgfN/L
>>319
styleはリソースからコピペすると、
CONTROL "", IDC_LIST, WC_LISTVIEW, WS_GROUP | WS_TABSTOP | WS_BORDER | LVS_ALIGNLEFT | LVS_SHOWSELALWAYS | LVS_SINGLESEL | LVS_REPORT, 5, 5, 440, 200, WS_EX_LEFT

追加で
LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT

をやっています。

カラム追加時は
LVCFMT_LEFT | LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM

です。
321デフォルトの名無しさん:2015/02/02(月) 03:32:28.41 ID:mSRFIK7l
ヘッダーにHDS_FULLDRAG
Vista以降はmanifestでCommon-Controls v6の指定も必要
322デフォルトの名無しさん:2015/02/02(月) 06:02:17.09 ID:okdaZ/Vp
>>321
manifest追加で解決しました。ありがとうございます。
323デフォルトの名無しさん:2015/02/03(火) 07:35:13.18 ID:2zuqa7HE
マウスホイールの関数で下記のものとボタンを結びつけて実行しているのですが
ボタンを一回押したら一回だけ関数を実行してほしいのですが、何回も実行しているようなのですが
SLEEPなどを入れるしかないでしょうか
void setMouseWhl(int whl)
{
INPUT data;
data.type = INPUT_MOUSE;
data.mi.mouseData = whl;
data.mi.dwFlags = MOUSEEVENTF_WHEEL;
data.mi.time = 0;
data.mi.dwExtraInfo = 0;
::SendInput(1, &data, sizeof(INPUT));
}
324デフォルトの名無しさん:2015/02/03(火) 08:10:05.21 ID:AqPQb7sP
>>323
whl いくつになってるのよ?
> One wheel click is defined as WHEEL_DELTA, which is 120
になってるが 120ptの移動がwhl回発生するのか、(whl % 120) 回のイベントが発生するのかよくわかんない。

ただ、1回のイベントでの移動量は120pt固定だと思うよ。
WM_MOUSEWHEELごとに常に1行スクロールするクソコードが氾濫しているから
大きな移動量でもメッセージをまとめるようなことは避けているんじゃないかな。
325デフォルトの名無しさん:2015/02/03(火) 08:15:17.91 ID:FgNHFzEr
https://msdn.microsoft.com/ja-jp/library/cc410921.aspx
>1 回のホイールクリックは、WHEEL_DELTA として定義されていて、この値は 120 です。
326デフォルトの名無しさん:2015/02/03(火) 08:17:49.98 ID:FgNHFzEr
https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms645617(v=vs.85).aspx
>The high-order word indicates the distance the wheel is rotated, expressed in multiples or divisions of WHEEL_DELTA, which is 120.
327デフォルトの名無しさん:2015/02/03(火) 08:19:49.17 ID:FgNHFzEr
https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms645617(v=vs.85).aspx
>The wheel rotation will be a multiple of WHEEL_DELTA, which is set at 120.
>This is the threshold for action to be taken, and one such action (for example, scrolling one increment) should occur for each delta.

>The delta was set to 120 to allow Microsoft or other vendors to build finer-resolution wheels (a freely-rotating wheel with no notches) to send more messages per rotation, but with a smaller value in each message.
328デフォルトの名無しさん:2015/02/03(火) 08:27:13.11 ID:qs6+LCRH
WHEEL_DELTAの120ptってのもよくわからないのですが、120行一回の実行で飛ばすという意味でしょうか
実機のマウスでホイールを一回カチっとなる時に一回だけ発生してほしいのですが
329デフォルトの名無しさん:2015/02/03(火) 08:33:39.72 ID:AqPQb7sP
120は何かしらの基準であって、行数でもピクセル数でもない。
ホイール1回相当のために data.mi.mouseData に指定すべき値は WHEEL_DELTA(=120) か 1 かどっちかだと思うが、試してみて。
あと、念のため setMouseWhl() がボタン1回ごとに1回だけ呼ばれているかも確認して欲しい。
330デフォルトの名無しさん:2015/02/03(火) 08:34:07.52 ID:uSJof6v6
deltaの数だけ呼ぶんでなく
deltaが0でないときに1回呼べばいいんだよ
deltaの意味分かってるのか
331デフォルトの名無しさん:2015/02/03(火) 08:38:41.83 ID:qs6+LCRH
少し実験をしてみます。
332デフォルトの名無しさん:2015/02/03(火) 08:48:21.43 ID:AqPQb7sP
そういえば、マウスホイールって1回1回がカチっとなるタイプと
連続的にぬるぬる回るタイプがあるけど、メッセージの発生の仕方が違うのかな?
ぬるぬる系でもアプリが対応してなければ、結局はWHEEL_DELTAの粒度でしか反応しないんだろうか。
333デフォルトの名無しさん:2015/02/03(火) 08:51:39.75 ID:qs6+LCRH
>>329
何回も実行されているのを確認しました。
334デフォルトの名無しさん:2015/02/03(火) 10:06:07.55 ID:00JNNVea
それは良かった
335デフォルトの名無しさん:2015/02/03(火) 11:04:46.95 ID:qs6+LCRH
ぐぐってるとこういうのが出てくるんですがこれは関係ありますか?
zDelta = GET_WHEEL_DELTA_WPARAM(wParam);
336デフォルトの名無しさん:2015/02/03(火) 17:37:03.46 ID:qFGvzx1u
とりあえず一回実行したらフラグ立てて二回目を実行しないようにします。
337デフォルトの名無しさん:2015/02/03(火) 21:04:14.59 ID:nEdye6fG
質問です
::CreateWindowEx( 0, REBARCLASSNAME〜
で作ったレバーコントロールの高さが変更されたとき、
親ウィンドウに何のメッセージが通知されますか?
338デフォルトの名無しさん:2015/02/03(火) 21:14:45.58 ID:AqPQb7sP
RBN_HEIGHTCHANGE
339デフォルトの名無しさん:2015/02/03(火) 21:32:19.74 ID:nEdye6fG
サンクス
340デフォルトの名無しさん:2015/02/07(土) 23:58:52.84 ID:4Op8wAUL
c++でwindowsサービスプログラムを作りたいのですがATLプロジェクトからしか作れませんか?
windowsAPIを駆使して作るのに参考になるサイトや書籍はありますか?
341デフォルトの名無しさん:2015/02/08(日) 01:30:51.46 ID:xOTX+lB0
駆使とか言うほど大したものじゃないよ。
MSDNライブラリのサービスの所にあるサンプルコードを
参考にするだけで十分じゃないかな。
342デフォルトの名無しさん:2015/02/08(日) 03:27:22.65 ID:ZysdttaW
>>340
VC++Expressのがデフォルトで吐くコードとりあえず眺めてみたらいいと思う
343デフォルトの名無しさん:2015/02/08(日) 08:01:38.27 ID:tUjKNEQ0
>>340
サービスだけならめっちゃ簡単
COMサーバーもサポートするなら面倒鴨試練
面倒なだけであって「出来ない」と言うつもりはない
344デフォルトの名無しさん:2015/02/08(日) 21:25:02.27 ID:0qESbCiR
本当に理解したいなら古くからある本だけどWin32システムサービスプログラミングって本
345デフォルトの名無しさん:2015/02/08(日) 21:51:27.15 ID:PVb3uKzn
皆様ありがとうございます。
COMサーバーと言われてもよくわかってないレベルなので本を買うことにします。
346デフォルトの名無しさん:2015/02/09(月) 03:34:33.98 ID:RHlYdffT
Windows10にすればずっと使えそうだな

http://internet.watch.impress.co.jp/docs/news/20150122_684843.html
Windows10は「サービス」になる
 Windows 10は、Windows 8.1/7およびWindows Phone 8.1のユーザーに対し、
リリース後1年間は無料アップグレードとして提供されることが発表された。
また、一度アップグレードした機器は「端末が寿命を終えるまで」
無料でサポートされるとしている。
 MicrosoftのOS担当エグゼクティブバイスプレジデントであるTerry Myerson氏は「Windowsはサービスになる」と説明。
インターネットのサービスでバージョンを気にする人がいないことを例に挙げ、
それと同じように「Windowsのどのバージョンを使っているかという質問には
意味がなくなる」と述べた。
347デフォルトの名無しさん:2015/02/09(月) 04:38:32.52 ID:j6Bs3lE+
Windows8にて、GetDC(0)でデバイスコンテキストを取得し、BitBltにてデスクトップを
キャプチャしようとしています。
(半)透明ウィンドウは除外したく、ネット上を見ているとSRCCOPYのみの指定でそれが
可能とあったのですが、映り込んでしまいます。
透明ウィンドウもしくは指定ウィンドウを除外したデスクトップキャプチャの取り方につい
て教えていただけないでしょうか。
348デフォルトの名無しさん:2015/02/09(月) 04:59:17.65 ID:3wWvs3Zu
無理じゃね
349デフォルトの名無しさん:2015/02/09(月) 05:16:47.72 ID:G+w3BN0W
ウィンドウを列挙して、透明ウィンドウを一時的に非表示にしてキャプチャ
350デフォルトの名無しさん:2015/02/09(月) 05:38:25.64 ID:g8/r6g2w
これの話か?
http://dobon.net/vb/dotnet/graphics/screencapture.html
>そのため、Opacityプロパティで半透明にしたフォームや、TransparencyKeyプロパティで一部を透明にしたフォームを正しくキャプチャすることができません。
>下で紹介するWin32 APIの方法では、BitBltの最後のパラメータを「SRCCOPY Or CAPTUREBLT」(C#では「SRCCOPY | CAPTUREBLT」)とすることで、これらのフォームも正常にキャプチャできます。詳しくは、
351デフォルトの名無しさん:2015/02/09(月) 06:17:36.32 ID:3wWvs3Zu
>透明ウィンドウもしくは指定ウィンドウを除外したデスクトップキャプチャ
352デフォルトの名無しさん:2015/02/09(月) 07:43:46.07 ID:Z/OgJqfR
>>347
Aero世代 (Vista) 以降なら DWM を使ってキャプチャを取るのが推奨なんじゃないの?
古いやり方なら WM_PRINT が使えるかもしれない。
まぁ、>>349 で十分な気はするが。
353デフォルトの名無しさん:2015/02/09(月) 08:46:42.20 ID:iJdyGTL3
Microsoft、オープンソースの.NET実行エンジン「CoreCLR」を公開 | スラッシュドット・ジャパン オープンソース
http://opensource.slashdot.jp/story/15/02/08/0721252/
354デフォルトの名無しさん:2015/02/09(月) 10:43:01.17 ID:ra7crE5d
C#の最新バージョンか?
355347:2015/02/09(月) 20:48:21.80 ID:j6Bs3lE+
色々とご助言有り難うございます。
リアルタイムに処理したいため、ウィンドウを列挙して云々の方法は無理
そうなのでDWM APIの方を勉強してみたいと思います。
同じ関数でもWinバージョンによって挙動が変わるなら、MSもきちんと
明記して欲しいですよね。。。
356デフォルトの名無しさん:2015/02/10(火) 01:19:59.95 ID:6CiTLKPy
VC++でMessageBox()でMB_ICONEXCLAMATIONで音を鳴らすと
Win7だと『ホワーン』という優しい感じの音ですが、XPだと『パン!』っていう
ちょっと耳障りな音ですが、このXPの音もWin7の『ホワーン』に出来ますか?
357デフォルトの名無しさん:2015/02/10(火) 01:59:59.04 ID:gDj6m/g3
wav入れ替え
358デフォルトの名無しさん:2015/02/10(火) 03:24:18.27 ID:cTe8RJyk
>>356
Windows側のサウンド設定
359デフォルトの名無しさん:2015/02/10(火) 13:35:11.32 ID:Yis/lrEO
自分のPC1台の話か
それともアプリからそれを使うユーザのマシン設定を勝手に書き換えたいという話か
360デフォルトの名無しさん:2015/02/10(火) 15:52:53.36 ID:j2mjRCPi
音声自作してリソースで持って再生すればいい
361デフォルトの名無しさん:2015/02/12(木) 10:47:44.82 ID:5O+Dt9At
CreateFontで作ったフォントを使ってDrawTextで描画すると勝手にアンチエイリアスがかかります。
高さだけ指定して幅を指定しなければアンチエイリアスがかからない幅に自動調整してくれますが、幅は指定したいです。
幅を指定しなくてもFW_BOLDを指定したときとしないときの幅が同じになればいいのですが、それもなりません。
何がしたいか分かりにくいと思いますが、まとめると以下の通りです。

■太字かどうかに関わらず、全ての文字を同じ幅・高さで描画したい(日本語は2文字分)
■アンチエイリアスが嫌だ
■文字幅の値も把握していたい(自分が指定、もしくは自動で設定された幅を取得)

コマンドラインみたいに升目に入ったような、アンチエイリアスもかかってないような表示が理想です。
そこに太字も使えるようになったのが理想です。
CreateFontで一番可能性の高そうな設定、フォントはMS ゴシック、クオリティはDEFAULT_QUALITY、ピッチとファミリーにFIXED_PITCHを設定しましたが無理でした。
他にも色々試しましたが昨日一日中あれこれ試していたので何が何だか分からなくなって覚えていません。

解決方法を教えてください。
362デフォルトの名無しさん:2015/02/12(木) 11:23:49.74 ID:EUdaAQEa
クオリティをNONANTIALIASED_QUALITYにしたらどうかな?試してないけど。
363361:2015/02/12(木) 11:46:19.61 ID:5O+Dt9At
>>362
できました。
ありがとうございます。
364デフォルトの名無しさん:2015/02/13(金) 10:35:40.23 ID:f9ZjIrV9
何も動かしてなくてもWM_PAINTが呼ばれまくってCPU食いまくる
なんだこれ
365デフォルトの名無しさん:2015/02/13(金) 11:36:18.32 ID:f9ZjIrV9
俺の糞コードが原因だったわ
366デフォルトの名無しさん:2015/02/13(金) 13:51:03.68 ID:dpVVOxpY
報告GJ
367デフォルトの名無しさん:2015/02/13(金) 20:16:25.43 ID:f9ZjIrV9
InvalidateRectで更新する領域を指定できるけど、実際WM_PAINT受け取ったときはWPARAMにもLPARAMにもクケイ情報がないから分からない
必要な領域だけ再描画すれば高速化できるかと思ったけど肝心のWM_PAINTで領域が分からないなら結局クライアント領域全部再描画しなければならない
領域をグローバル変数に入れようかと思ったけど、WM_PAINTを受け取るタイミングが不確定だから無理っぽい
1回目のInvalidateRectと2回目のInvalidateRectの領域が同じならグローバル変数でもいけるけど、
違った場合は、2回目のInvalidateRectの後で1回目のInvalidateRectによるWM_PAINTを受け取ると破綻する

まんこ
368デフォルトの名無しさん:2015/02/13(金) 20:28:46.06 ID:hioZiCGH
beginpaint
369デフォルトの名無しさん:2015/02/13(金) 21:05:41.95 ID:lpJSL/lf
指定されたpathが
 C:\〜\test\test.exeならC:\〜\test\を取得
 C:\〜\test1\test2ならC:\〜\test1\を取得
こんな関数はどんな名前つける?
GetUpperDirectory?
370デフォルトの名無しさん:2015/02/13(金) 22:00:24.41 ID:30iXf5oS
>>369
PathRemoveFileSpec

っていうAPIがあるけど、敢えて自分で作るならって話か?
371デフォルトの名無しさん:2015/02/13(金) 22:11:22.26 ID:f9ZjIrV9
>>368
BeginPaint何となく使ってたけどこいつが自動で設定してくれるだな
まさかこいつがやってるとは思わなかった
ありがとう
372デフォルトの名無しさん:2015/02/13(金) 22:33:56.31 ID:AeHfWfSt
ExtractFilePath
373デフォルトの名無しさん:2015/02/13(金) 22:53:10.88 ID:MTb8V7o7
GetBackToWhereYouOnceBelong
374デフォルトの名無しさん:2015/02/13(金) 22:55:28.51 ID:f9ZjIrV9
俺だったら引数はファイル・ディレクトリ両対応にして
GetParentDirectory
375デフォルトの名無しさん:2015/02/14(土) 00:55:03.82 ID:e+2FaUan
ありがとう

PathRemoveFileSpecは知らんかった
けど最後に\付いてほしいから結局部品プロジェクトとして作る事になるわ
376デフォルトの名無しさん:2015/02/14(土) 01:05:19.76 ID:XFzbLFgN
\付いてほしい理由はなんだ?
Path関連のAPIはたくさんあるから、目的によっては\無しでも問題ないかも知れんぞ
377デフォルトの名無しさん:2015/02/14(土) 01:14:15.23 ID:avu/sf60
GetRandomRgn,GetMetaRgn,GetClipRgn
378デフォルトの名無しさん:2015/02/14(土) 06:37:11.60 ID:coEfqUtE
>>374
ファイルにたいして ParentDirectory は違和感あるから却下
379デフォルトの名無しさん:2015/02/14(土) 06:54:18.21 ID:Xj7ivxhb
Scripting.FileSystemObjectでは GetParentFolderName ってメソッド名だね
380デフォルトの名無しさん:2015/02/14(土) 07:40:14.24 ID:xzkKcWkn
os.path.dirname(path)
パス path のディレクトリ名を返します。これは split(path) で返されるペアの最初の要素です。

os.path.split(path)
パス名 path を (head, tail) のペアに分割します。
tail はパスの構成要素の末尾で、 head はそれより前の部分です。
tail はスラッシュを含みません;
もし path の最後にスラッシュがあれば、 tail は空文字列になります。
もし path にスラッシュがなければ、 head は空文字列になります。
path が空文字列なら、 head と tail のどちらも空文字列になります。
head の末尾のスラッシュは、 head がルートディレクトリ (1つ以上のスラッシュのみ) でない限り、取り除かれます。
join(head, tail) の結果は常に path と同じ場所を示すパスになりますが、文字列としては異なるかもしれません。
381デフォルトの名無しさん:2015/02/14(土) 08:57:11.78 ID:4tVx2rNF
Pythonなど持ち出さなくても <filesystem> 使っておけばええねん
382デフォルトの名無しさん:2015/02/14(土) 09:27:31.50 ID:uz36DEeO
つーかディレクトリ名の取得なんてPerlの正規表現使えば1行で済む話だろ
コーディングも1分もかからないし関数にするまでもないし何を悩んでるのか意味不明
2chブラウザ立ち上げてこのスレ開いてレス打つのと同程度の時間あればできるのに本物の馬鹿なんだろうか
383デフォルトの名無しさん:2015/02/14(土) 09:30:31.92 ID:Be2NMpD8
なんでWin32APIと無関係な話を続けるの?馬鹿なの?死ぬの?(´・ω・`)
384デフォルトの名無しさん:2015/02/14(土) 10:16:54.17 ID:4tVx2rNF
C/C++ライブラリってこのスレ的にはアウトなのか?
Win32とC/C++ライブラリに同じ機能がある場合、使い分けの指針ってあるんけ?
自分はVC付属って時点であまり区別してないんだが
385デフォルトの名無しさん:2015/02/14(土) 10:27:52.62 ID:ocCjNIfb
話題がそれてスレ違い、ってのは個人的には気にならないが、
はなから区別しないってのはねーわ。
386デフォルトの名無しさん:2015/02/14(土) 10:28:41.92 ID:xzkKcWkn
*sprintf とか *wsprintf とか wstring とか文字コード変換も一緒にやってくれればいいのにと思うときはある
387デフォルトの名無しさん:2015/02/14(土) 11:23:57.72 ID:uz36DEeO
>>385
そんなジャンル別の縦割り思考だからお前はいつまで経ってもうだつがあがらないんだよ
時代遅れの縦割り思考は回線切って一人で分類ごっこでもしてろ
388デフォルトの名無しさん:2015/02/14(土) 11:27:54.03 ID:XFzbLFgN
>>387
うるせーばか
389デフォルトの名無しさん:2015/02/14(土) 12:57:25.81 ID:tVbUKrnU
言語の話し始めたらVB、C#で埋まるに決まってんだろ
すでにサーチエンジンはWin32API関連で検索してもそればっかで埋まってんだから
390デフォルトの名無しさん:2015/02/14(土) 13:29:08.25 ID:avu/sf60
文字関連はWin32APIを使うべし
391デフォルトの名無しさん:2015/02/14(土) 16:13:10.51 ID:gIUI7HnG
>>384
Win32はWindowsだけだけど
C/C++ライブラリはWindowsだけじゃないし。
392デフォルトの名無しさん:2015/02/14(土) 17:32:24.20 ID:hL4wbJFm
どっちも見てるから違和感なく見てたけど、命名の話ならこっちだろ。

クラス名・変数名に迷ったら書き込むスレ。Part25
http://peace.2ch.net/test/read.cgi/tech/1416550677/
393デフォルトの名無しさん:2015/02/14(土) 18:46:09.31 ID:RLjpPyN4
まずwin32APIでしかできないことって何?
.netじゃ駄目なんですか?
394デフォルトの名無しさん:2015/02/14(土) 18:55:21.43 ID:XFzbLFgN
C#で全部出来て、Win32APIが一切不要なら、C#のDLLImportっていらないよね
395デフォルトの名無しさん:2015/02/14(土) 18:56:34.74 ID:FsRJ7H3A
Javaじゃダメなんですか?
VBじゃダメなんですか?
396デフォルトの名無しさん:2015/02/14(土) 19:08:31.10 ID:zmAFSOP/
海は死にますか
山は死にますか  
397デフォルトの名無しさん:2015/02/14(土) 19:18:36.15 ID:uz36DEeO
ウインドウクラス登録するときにLoadCursorでカーソル設定してもクライアント領域でしか有効にならないんだけど?
ツールバーとかタイトルバーの上では普通のカーソルに戻る
398デフォルトの名無しさん:2015/02/14(土) 19:29:27.46 ID:4tVx2rNF
>>397
WM_SETCURSOR
399デフォルトの名無しさん:2015/02/14(土) 19:29:55.92 ID:FsRJ7H3A
>>397
偉そうなこと言いながら、こんな低レベルなことを
400デフォルトの名無しさん:2015/02/14(土) 19:32:13.72 ID:Yj+zQwIv
>>393
LoadLibraryで呼び出せるDllが作れないとか
これのせいでプラグインなんか作れないじゃん
401デフォルトの名無しさん:2015/02/14(土) 19:51:07.13 ID:uz36DEeO
>>398
ありがとう

>>399
消えろゴミクズ
402デフォルトの名無しさん:2015/02/14(土) 19:59:07.53 ID:ocCjNIfb
ネイティブのLoadLibraryはもちろんできないけど、.netベースのプラグインならむしろ簡単だろ。
403デフォルトの名無しさん:2015/02/14(土) 20:31:12.26 ID:ReAFsxko
プレイヤーの再生時間についてですが
曲の全体がduration
再生中の位置がposition
とすると残り時間は何でしょうか?
404デフォルトの名無しさん:2015/02/14(土) 20:31:18.94 ID:Yj+zQwIv
>>402
そんなもん誰も使わんよ
405403:2015/02/14(土) 20:31:55.21 ID:ReAFsxko
すみません誤爆しました…
406bti:2015/02/14(土) 22:13:21.42 ID:hFs/AfD2
ビットコインをはじめよう
このリンクからビットコイン購入・販売所bitFlyerにご登録すると
1000円分のビットコインがもらえます!

https://bitflyer.jp/gift/fn0tlipl

とにかく一応もらっておくといいです。
ビットコイン関係の開発にしよう
407デフォルトの名無しさん:2015/02/14(土) 23:00:19.23 ID:/VrDBIQD
>>399
ワロタwwww
LoadCursorwwwwwww
408デフォルトの名無しさん:2015/02/14(土) 23:02:49.49 ID:e+2FaUan
>>392
ありがとう

次からそっちのスレで聞くわごめんよ
409片山博文MZ ◆T6xkBnTXz7B0 :2015/02/15(日) 13:19:53.66 ID:YOxjOULg
Win32 APIのほとんどの型情報が抽出できた!
これで、Win32 APIが使えない言語へのWin32 APIの移植が容易になるぞ!!!

https://github.com/katahiromz/DoWonders
410デフォルトの名無しさん:2015/02/15(日) 14:04:54.01 ID:uxAoEDAd
今時FFIすら使えない言語あるんです?
411デフォルトの名無しさん:2015/02/15(日) 15:56:37.27 ID:ergtEwn7
すでに存在するウィンドウに対してリソースのダイアログボックステンプレートから
コントール(ボタンなど)を作ってくれるWin APIってありますか?
CreateDialogのウィンドウを新規に作るじゃなくて、すでにウィンドウが存在する際につかえるAPIが知りたいです
412デフォルトの名無しさん:2015/02/15(日) 16:10:07.40 ID:bX6frV1s
>>409
さっさとCOMのTypeLibrary対応してない言語で使えるようにしろ
413デフォルトの名無しさん:2015/02/15(日) 17:27:24.64 ID:ergtEwn7
>>411ですが自己解決しました。ネットでソースありました
リソースからLoadResourceでメモリ上に構造体DLGITEMTEMPLATEなどの形で取り出してCreateWindowするようです
414デフォルトの名無しさん:2015/02/15(日) 18:31:24.51 ID:bWgf/6Xs
>>409
nm *.dll -> typeid -> boostデマングリング
のが手っ取り早そう
415デフォルトの名無しさん:2015/02/15(日) 20:05:59.81 ID:kipyhe5B
>>409
すいません。何するソフトなのか、簡単に解説して頂けませんか?
416片山博文MZ ◆T6xkBnTXz7B0 :2015/02/15(日) 20:35:21.43 ID:kru9NTLv
>>415
Win32コンパイラからWin32 APIの情報を抽出して、データベースを作成するソフト。
素人にはまだ使いこなせない。
417デフォルトの名無しさん:2015/02/15(日) 20:56:23.86 ID:kipyhe5B
>>416
解説ありがとうございました。
理解できるように精進したいと思います。
418デフォルトの名無しさん:2015/02/15(日) 23:46:43.13 ID:65bKNNn8
片山と取り巻きの馴れ合いスレかよ
気色わる
419デフォルトの名無しさん:2015/02/16(月) 00:30:46.08 ID:oJNvAL6Z
片山MZはわりあいに有用な情報を流すからね自然と手下が多くなる確かQZも
420デフォルトの名無しさん:2015/02/16(月) 02:11:51.65 ID:Zn9bWbFW
片山MZは色々と試行錯誤するので、
見ているだけで、反面教師となって有益

自分が同じ間違いをしなくて済む

この板は他にも、QZ、ピラフなど、
何らかの情報を発信する、有益なコテハンが多い。
この板は有益なコミュニティだ
421デフォルトの名無しさん:2015/02/16(月) 03:43:59.12 ID:N4N5sFFI
客寄せパンダ
422デフォルトの名無しさん:2015/02/16(月) 06:31:55.11 ID:gRhA7X2Y
烏合の衆
423デフォルトの名無しさん:2015/02/16(月) 09:31:03.98 ID:FO5Gq4fD
>>420
反面教師しかいないのは、それはそれで…
424デフォルトの名無しさん:2015/02/16(月) 09:38:43.55 ID:F7oc1qZ/
むしろ人払いしてるよな
425デフォルトの名無しさん:2015/02/16(月) 10:04:35.86 ID:McaEaMoK
そいつら全員同一なんだろ?
同時に現れたところを見たことないしw
426デフォルトの名無しさん:2015/02/16(月) 19:44:57.19 ID:jN3tDTOq
EXCELの表計算の部分ってDataGridViewみたいな感じですが、そういう既存の
APIで作られているのでしょうか?
それとももっとLow Levelな手法で
作られているのでしょうか?
427デフォルトの名無しさん:2015/02/16(月) 22:28:24.82 ID:PFbU5qB1
片山っていつも質問者に嘘回答してるクズじゃん
初心者騙して喜んでるただの荒らし
428デフォルトの名無しさん:2015/02/16(月) 22:40:46.76 ID:PFbU5qB1
プログラム初心者に片山の嘘の例を示そうかと思ったけど、
プログラム初心者は大前提の知識が不足してて説明してもなかなか理解できないからな・・・

と思ったらちょうどいい例が見つかったわ
http://peace.2ch.net/test/read.cgi/tech/1388933972/4-5

これなら初心者でもどの程度の嘘か分かるだろ
これに限らず片山の回答はどこのスレでもこのレベルの嘘ばかり
初心者はとりあえず片山をNGワードに入れとけ
429片山博文MZ ◆T6xkBnTXz7B0 :2015/02/16(月) 23:08:57.62 ID:jO7bZY/k
毎晩、酔っ払いの説教を聞いてると、こんな思考回路になるとじゃけんねん。しゃーねえ。
430片山博文MZ ◆T6xkBnTXz7B0 :2015/02/16(月) 23:57:47.01 ID:jO7bZY/k
・同僚にだまされて腐った鯛を持って帰る
・ご飯に勝手にアルコールを入れる
・毎晩酔っ払った状態で説教
・その上、タバコをべらんぼうに吸う
・肺が病気になってもやめない、逆に精神論で返す
431片山博文MZ ◆T6xkBnTXz7B0 :2015/02/17(火) 00:09:55.19 ID:J4a0mND/
・その上、パチンカスで給料の2/3を溶かす
・飲酒運転常習犯で自分は運転が上手いと考えている
・撮ったビデオをAVに放流する
・盗聴器や手錠や洗脳の本を持っている
・複数の宗教を手当たり次第に子供にやらせる
432片山博文MZ ◆T6xkBnTXz7B0 :2015/02/17(火) 00:22:13.02 ID:J4a0mND/
匿名だったら犯罪者は攻撃できないから安心だよ
433片山博文MZ ◆T6xkBnTXz7B0 :2015/02/17(火) 00:34:56.17 ID:J4a0mND/
犯罪者は根絶やしにしなければならない。
434デフォルトの名無しさん:2015/02/17(火) 02:11:12.28 ID:52Ru56el
>>428
んでもキミはそういう分かり易い嘘以外では嘘だ嘘だとしか言わないだろ
その行為は、実は一見片山が正しいように見せる行為ですらある

…つまり、ハタから見ればキミは片山本人ってことになる
435デフォルトの名無しさん:2015/02/17(火) 04:33:03.17 ID:NGo27G1P
レス番がすごい飛んだけどキチガイが暴れたの?
436デフォルトの名無しさん:2015/02/17(火) 04:43:30.96 ID:Q4rBePsy
そんなことをわざわざ確認するとか
お前なんのためにNG機能とか使ってんの?アホなの?
437デフォルトの名無しさん:2015/02/17(火) 09:14:33.07 ID:ZaoCuCHY
NG使ってる本人がNG使って書き込んで
反映されないので二重三重に投稿連投
ですねわかります
438デフォルトの名無しさん:2015/02/17(火) 15:35:18.35 ID:cYnsHhOG
お前ら頭いいんだから、いい加減スレチなの止めてくれな。
439デフォルトの名無しさん:2015/02/17(火) 23:18:00.44 ID:DwStm3jD
Win7(IME10.1)で日本語の品詞一覧を取得しようとしたんですが、ImmGetRegisterWordStyleの戻り値がゼロになります
GetKeyboardLayoutによるHKLの取得には成功していて、一応第3引数のポインタも指定しています
元々不具合のあった関数でもあるみたいなので、同環境の情報が欲しいので検証してもらえませんか?
440デフォルトの名無しさん:2015/02/17(火) 23:21:29.21 ID:DwStm3jD
補足。nItemに0を指定して品詞の取得に必要なバッファサイズを得る段階です
441デフォルトの名無しさん:2015/02/18(水) 00:03:03.29 ID:fxWFvcN5
めんどくさいから
int main()
{
...
}
でコピペして実行できるやつ貼ってくれ
そしてprintfで出た結果をここに貼るわ
442デフォルトの名無しさん:2015/02/18(水) 01:51:49.28 ID:aOiIdSCQ
ありがとうございます。マイナー言語で書いてるのでC++に移植してきます。VSを起動するの超久々ですが
443デフォルトの名無しさん:2015/02/18(水) 01:53:53.03 ID:Qs6pA21t
>>442
というかそのマイナー言語でまずは書け
マイナーすぎて誰にも分からないときに移植コードで
444デフォルトの名無しさん:2015/02/18(水) 02:07:38.06 ID:aOiIdSCQ
>>443
HSP3.32です。sdimは文字列バッファの確保、varptrはそのバッファのアドレス、statは直近の戻り値です

#uselib "user32.dll"
#cfunc GetKeyboardLayout "GetKeyboardLayout" int
#uselib "imm32.dll"
#func ImmGetRegisterWordStyle "ImmGetRegisterWordStyleA" int, int, int
#define STYLE_DESCRIPTION_SIZE $00000020

hkl = GetKeyboardLayout()
mes "GetKeyboardLayoutの結果: " + hkl

; http://gaiji.jjworkshop.com/cgi-bin/topic/topic.cgi?4を参考
sdim dummybuf, 256 * (4 + STYLE_DESCRIPTION_SIZE)
ImmGetRegisterWordStyle hkl, 0, varptr(dummybuf)
style_max = stat
mes "取得した品詞の数: " + style_max
445デフォルトの名無しさん:2015/02/18(水) 02:35:51.13 ID:aOiIdSCQ
VS2012でエラーが起きまくったもののVC++2010で何とか作成できたので貼ります

#pragma comment(lib, "imm32.lib")
#include <windows.h>
#include <imm.h>
#include <iostream>
using namespace std;
int main(int argc, char** argv) {
STYLEBUFA stylebuf;
HKL hkl = ::GetKeyboardLayout(0);
int style_max = ::ImmGetRegisterWordStyleA(hkl, 0, &stylebuf);
cout << "hkl:" << hkl << endl;
cout << "style_max:" << style_max << endl;
getchar();
return 1;
}
446デフォルトの名無しさん:2015/02/18(水) 06:13:26.44 ID:YhMVzleA
GetKeybordLayoutする前にテキストボックスなんかにSetFocusしなきゃダメだったと思うわ
447デフォルトの名無しさん:2015/02/18(水) 07:21:07.85 ID:SGYOmPlm
x64Win8.1で試してみたけど0しか返ってこないな。
決め打ちでバッファを用意しても中身空のままだし。
448デフォルトの名無しさん:2015/02/18(水) 10:07:37.02 ID:0oFqPaUt
ユーザーが自分で登録した分しか出ないんちゃう?
449デフォルトの名無しさん:2015/02/18(水) 16:20:23.22 ID:fxWFvcN5
>>445
ほらよ
単語に何も登録してない状態

hkl:04110411
style_max:0

単語に語句「OH! Manko」を読み「おまんこ」として登録した状態

hkl:04110411
style_max:0

結果は変わらなかった
450デフォルトの名無しさん:2015/02/18(水) 17:22:40.58 ID:lVKX5epf
LoadKeyboardLayoutとか使ってみてもダメだったね。
ググっても、昔のこのスレでも同じ質問があって解決レスは無かったw
451デフォルトの名無しさん:2015/02/18(水) 17:49:01.30 ID:aOiIdSCQ
>>446-450
わざわざ検証していただいてありがとうございます
ひとまず再現性があり自分の責任ではないようで安心しました
>>446さんのご指摘を受けてフォームアプリケーション用に書き変えてやってみましたが特に結果は変わりませんでした

一応試したコードも貼っておきます
http://codepad.org/t67U4cDb
452デフォルトの名無しさん:2015/02/18(水) 18:02:06.96 ID:lVKX5epf
フォーカスの有無やIMEのON/OFFも試したけどダメだったわ。>450時点で試してたことだけど。
なお、Win8Pro64bit ATOK2015

第2引数に0を入れてるのに、第3引数に有効ポインタ入れとかなきゃいけないって仕様がおかしいって
情報も見つかってたので、そもそもこのAPIが怪しい気はする。
453デフォルトの名無しさん:2015/02/18(水) 18:47:37.18 ID:aOiIdSCQ
>>452
事細かに試していただいて感謝します

ATOKとMS-IMEが成功可否に影響するというような情報も見つけた気がしますが、
今回の例ではたぶん根本的に原因が共通しているのでこちらでやっても同じ結果になると思います
こちらの環境を再掲しておくと、MicrosoftIME 10.1 on Windows7 HomePremium 32bitです

元々、辞書ツールから単語登録するのが面倒だから、
専用のTSVファイルをパッと開いて書き換えたらパッと単語登録されるようなツールが作りたかったんですが、
同じように列挙も登録もできず、周辺のAPIが全滅という有様でした

仮に単語登録が成功したとしても、ImmRegisterWordにはメモリリークもあるらしいですよ
454デフォルトの名無しさん:2015/02/18(水) 19:09:18.69 ID:9ZeaK8N0
チョンに外注したのか
455デフォルトの名無しさん:2015/02/18(水) 19:36:03.78 ID:YhMVzleA
メモリーリークって昔でしょ
今IMM32 APIってTSFのラッパーだからこっちに何か代わりになるものあるかも
Text Services Framework
https://msdn.microsoft.com/en-us/library/windows/desktop/ms629032%28v=vs.85%29.aspx
456デフォルトの名無しさん:2015/02/18(水) 20:50:09.74 ID:aOiIdSCQ
>>455
それは知りませんでした。有益な情報をありがとうございます
なるほど、Vista以降ぐらいでラッパー関数になっているんですね

一見、TFSには単語登録や取得のメソッドが無いように見えます
imm32のAPIで単語を弄れない理由もここにあるのかも

反面、MS-IMEの辞書ツールで単語登録できているのは、専用のCOMを利用しているからだと推察しました
予想が当たれば少なくともMS-IMEについては解決できそうです。他のエンジンも多分専用のAPIがあるはず

参考にしたサイト
http://www.kanazawa-net.ne.jp/~pmansato/net/net_tech_ime.htm
https://social.msdn.microsoft.com/Forums/vstudio/ja-JP/4c8aebfa-caa7-47a8-988a-f3c252ec37c0/vistaime?forum=vcgeneralja
457デフォルトの名無しさん:2015/02/19(木) 07:55:11.67 ID:rlVE8baN
単語登録だけで登録画面出てもいいならこれかな?
今動いてるコード

std::wstring text(L"登録単語");
REGISTERWORD regword = {0};
regword.lpWord = const_cast<LPWSTR>(text.c_str());

(void)::ImmConfigureIME(
 ::GetKeyboardLayout(0),
 hWnd, //ダイアログの親になるウィンドウのHWND
 IME_CONFIG_REGISTERWORD,
 &regword);
458456:2015/02/19(木) 09:43:09.44 ID:GozftCKZ
>>457
わざわざありがとうございます。TSFにもそれらしいものがあり、登録画面ならこちらでも出せるっぽいです
本来の目的とは違いますが、ホットキーからクリップボードの内容をさっと登録する機能なんかに使えそうですね
459デフォルトの名無しさん:2015/02/19(木) 13:33:25.45 ID:F2+DwIhl
指定したexeを起動してその起動したexeのハンドル取るAPI教えてんこ
460デフォルトの名無しさん:2015/02/19(木) 13:41:27.72 ID:YKDWyqEz
>>459
自分で起動したなら簡単にハンドルは取れるはず
起動中のexeを列挙して探すなら Process32First / Next
461デフォルトの名無しさん:2015/02/19(木) 16:39:54.11 ID:rlVE8baN
HANDLE hProcess = NULL;
DWORD processId = 0;

PROCESS_INFORMATION pi = {0};
STARTUPINFO si = {0};
si.cb = sizeof(si);
if(::CreateProcess(
 prog.c_str(),
 const_cast<LPWSTR>(param.c_str()),
 NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS,
 NULL, NULL, &si, &pi))
{
 ::CloseHandle(pi.hThread);
 hProcess = pi.hProcess;
 processId = pi.dwProcessId;
}

if(hProcess) ::CloseHandle(hProcess);
462デフォルトの名無しさん:2015/02/20(金) 11:42:43.98 ID:f+GBkftj
>>460-461
ありがとうございます。
両方ともプロセスハンドルはあるけどウィンドウのハンドルは無いっぽいですが
プロセスのハンドルでウィンドウ操作できませんよね?
463デフォルトの名無しさん:2015/02/20(金) 11:47:11.05 ID:SdYWKWEv
条件後出しすんなボケ
464デフォルトの名無しさん:2015/02/20(金) 11:54:24.97 ID:f+GBkftj
>>463
知らないならレスしないで下さい、ウザイだけです。
465デフォルトの名無しさん:2015/02/20(金) 11:58:44.76 ID:fEal40kx
ひさびさに聞いたなそれ
では死ね
466デフォルトの名無しさん:2015/02/20(金) 12:09:40.51 ID:ahptq4t6
>>462
ウィンドウを操作するのにプロセスのハンドルは要らないんじゃないか?
単にウィンドウを列挙するなら EnumWindows / EnumThreadWindows
ウィンドウを列挙した後、どのプロセスに属するか調べるなら GetProcessHandleFromHwnd
467デフォルトの名無しさん:2015/02/20(金) 12:32:58.72 ID:rRCvJJFn
ウィンドウ操作はプロセスハンドルじゃなくHWNDだろがJK
468デフォルトの名無しさん:2015/02/20(金) 12:40:09.76 ID:ahptq4t6
>>466
追加。 プロセスに属するか調べるのは GetWindowThreadProcessId でも可
469デフォルトの名無しさん:2015/02/20(金) 12:45:33.80 ID:C0yfY/Rk
exeのハンドル=ウィンドウハンドルだと思いこんでる時点でお察し
470デフォルトの名無しさん:2015/02/20(金) 14:33:18.61 ID:XfKuwL2S
トップレベルウィンドウを列挙
各ウィンドウのプロセスIDを調べる
目当てのプロセスIDが見つかったら、そのウィンドウのウィンドウハンドルを返す
http://d.hatena.ne.jp/yu-hr/20100323/1269355469

ただし、トップレベルウィンドウ(親ウィンドウがない普通の窓)が、複数あるようなアプリケーションでは、
Zオーダーが上の窓(より前面にある窓)が返されます。
なのでIEのような、1つのプロセスで複数のウィンドウが開くアプリケーションに対して実行する場合は要注意。
471デフォルトの名無しさん:2015/02/20(金) 15:31:15.51 ID:7c/Woly0
こんなやつにちゃんと答えてあげるなんてお前らやさしいな

464 名前:デフォルトの名無しさん[] 投稿日:2015/02/20(金) 11:54:24.97 ID:f+GBkftj [2/2]
>>463
知らないならレスしないで下さい、ウザイだけです。
472デフォルトの名無しさん:2015/02/20(金) 15:35:47.64 ID:XfKuwL2S
少なからず本人が自分で考える力や検索する力を奪ってるので優しい訳ではない
473デフォルトの名無しさん:2015/02/20(金) 15:45:48.23 ID:CB/nIcnB
どう考えてもコピペ
474デフォルトの名無しさん:2015/02/20(金) 19:40:06.37 ID:++UFdJqE
おまえらバカ、とくに 461
> exeのハンドル取るAPI教えてんこ
これで気づけよ
475デフォルトの名無しさん:2015/02/20(金) 20:49:39.41 ID:gADPfhrw
そいつのためだけじゃねえんだよ
476デフォルトの名無しさん:2015/02/20(金) 20:58:31.21 ID:CB/nIcnB
>>474
むしろ「指定したexe」から補えない方がどうかしてる
477デフォルトの名無しさん:2015/02/21(土) 02:18:05.13 ID:ujrM5Woq
https://msdn.microsoft.com/en-us/library/windows/desktop/ms670081%28v=vs.85%29.aspx
>but does not actually perform a search.

なんですかこれ。
478デフォルトの名無しさん:2015/02/21(土) 07:04:26.76 ID:DGU3n6av
検索タブをアクティブにするよ、だけど検索を実際に実行はしないけどね

って書いてあるだろ
中学出たのか?
479デフォルトの名無しさん:2015/02/21(土) 08:04:32.80 ID:ujrM5Woq
なんで検索してくれませんか。
480デフォルトの名無しさん:2015/02/21(土) 14:32:51.83 ID:TG3Ky+4O
ウィンドウを管理するクラス作って、そこにウインドウプロシージャも入れようとすると、staticにしなきゃいけないけど、こういうやり方って普通なの?
何か気持ち悪いんだけど俺が慣れてないだけ?
それとも普通はウインドウの管理をするクラスなんか作らないとか?
481デフォルトの名無しさん:2015/02/21(土) 14:43:19.67 ID:Qj5PkULS
staticで作ってインスタンス毎にウィンドウハンドルとclassdataで管理
482デフォルトの名無しさん:2015/02/21(土) 14:48:50.66 ID:JB1czYZt
MFCとかWTLならstaticにしなくてもクラスのインスタンスごとに管理できる
483デフォルトの名無しさん:2015/02/21(土) 14:50:05.09 ID:hXObCDYb
不特定多数に公開するライブラリを作るんでもなければ、クラスにするメリットないよね
プロシージャをstaticにしたらメソッドにアクセスすんのめんどくさいし
484デフォルトの名無しさん:2015/02/21(土) 14:50:12.04 ID:b3TAXLfH
GWLP_USERDATA or SetWindowSubclass
485デフォルトの名無しさん:2015/02/21(土) 15:11:43.45 ID:JFEpwQ1f
俺は、GWLP_USERDATAでthisを登録して、メンバ関数でウィンドウプロシージャを定義できるようにしたけど、
CreateWindowの中でもウィンドウプロシージャ呼ばれるから注意な
結局、CreateWindow呼ぶ前にstatic変数にthisを入れてCreateWindowの中でウィンドウプロシージャが呼ばれたときは、
static変数のthisを使うようにしたけど、気持ち悪いな。もっといい方法あるんだろうか
486デフォルトの名無しさん:2015/02/21(土) 15:14:54.14 ID:QT8x93qN
WTLはインラインアセンブラを使ってたような
487デフォルトの名無しさん:2015/02/21(土) 15:24:47.02 ID:hXObCDYb
>>485
CreateWindowのlpParam
488デフォルトの名無しさん:2015/02/21(土) 15:35:27.96 ID:q8r+DySB
実はWM_CREATEの前にもメッセージ飛んでるので
厳密にはCREATESTRUCTでは不十分だったりするのよね

GWLP_USERDATA等の属性すら一切使わないWTLの実装が最強
489デフォルトの名無しさん:2015/02/21(土) 15:37:56.11 ID:kwW1PPRV
>>488
WM_CREATEの前のメッセージで処理したいことって何ある?
490デフォルトの名無しさん:2015/02/21(土) 15:47:24.94 ID:JFEpwQ1f
>>488
WTLはどうやってるの?
491デフォルトの名無しさん:2015/02/21(土) 15:58:48.77 ID:JFEpwQ1f
>>487
こんな感じか。こっちのほうがだいぶいいね
LRESULT CALLBACK WindowBase::RealWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
 WindowBase* pThis = (WindowBase*)GetWindowLongPtr(hWnd, 0);
 if(pThis == NULL) {
  if(msg == WM_CREATE || msg == WM_NCCREATE) {
   CREATESTRUCT* ptr = (CREATESTRUCT*)lParam;
   SetWindowLongPtr(hWnd, 0, (ULONG_PTR)ptr->lpCreateParams);
   pThis = (WindowBase*)ptr->lpCreateParams;
   pThis->m_hWnd = hWnd;
  }
 }
 if( pThis ){
  _ASSERT( pThis->m_hWnd == hWnd );
  return pThis->WndProc(msg, wParam, lParam);
 }
 return 0L;
}
492デフォルトの名無しさん:2015/02/21(土) 16:07:44.95 ID:q8r+DySB
>>489
WM_GETMINMAXINFOがWM_NCCREATEの前に飛んでくるから
CreateWindowで指定する初期サイズにWM_GETMINMAXINFOハンドラが対応できない

確認した限りじゃそのくらいなので実用上はCREATESTRUCT渡しでも全然問題ないよ

>>490
http://hp.vector.co.jp/authors/VA022575/c/msgmap.html
493デフォルトの名無しさん:2015/02/21(土) 16:28:16.67 ID:JFEpwQ1f
>>492
これは面白いなw
まじめにやろうとするとコード生成まで必要になるとか、Win APIどんだけアホな設計なんだって思う(まぁ古いから仕方ないんだが)

つまり、最初(CreateWindowで呼ばれた時)は、スレッドごとのグローバル変数にインスタンスへの参照を持っていおいて、
最初にウィンドプロシージャが呼ばれた時に、ウィンドウプロシージャをコード生成で生成した関数に置き換えるってことだな

WTLはCreateWindowのlpParamじゃなくて、static変数のほうだったか。やっぱりコード戻すわ
494デフォルトの名無しさん:2015/02/21(土) 17:27:26.58 ID:qCqW+14K
うーん、そういうのは UI スレッドにお任せだ‥
495デフォルトの名無しさん:2015/02/21(土) 19:47:01.43 ID:eA3VAGwd
キーボード/タッチパネル等でマウスを操作するアプリを作りたいのですが、
マウスが繋がっていない環境(windows8タブレット)などで、マウス表示の方法がわかりません。

ShowCursor(TRUE); を使えばいいかと思ったんですが、
この関数は、 カーソルを表示するかどうかを決める内部的な表示カウントを設定します。
カーソルは、 表示カウントが0以上のときに表示されます。マウスがインストールされているときには、
初期表示カウントは0になります。マウスがインストールされていないときには、 −1になります。

ということなので、頭抱えています。
なにかいい方法ありませんか?
496デフォルトの名無しさん:2015/02/21(土) 19:48:02.30 ID:xSRhDEOz
497片山博文MZ ◆T6xkBnTXz7B0 :2015/02/21(土) 19:52:19.52 ID:swM6o0zc
>>495
すぐ思い付くやり方は透過ウィンドウを使う方法だな。
SetWindowRgn
498デフォルトの名無しさん:2015/02/21(土) 19:56:50.45 ID:eA3VAGwd
>>497
なるほど。。簡単そうなのは、透過ウインドですかねぇ。。?
ちょっと思いついたのは、マウスの仮想ドライバー作るとか?証明関連で悩みそうです;;
なんか簡単に、偽物じゃないOSのマウスが表示できればいいのですが・・
499デフォルトの名無しさん:2015/02/22(日) 00:08:41.99 ID:qxC/WEu2
狂気に満ちたやり取りで頭が混乱しているが
なぜマウスが繋がっていない環境で、マウス表示をしなけりゃならんのか
500デフォルトの名無しさん:2015/02/22(日) 00:11:21.25 ID:Z38HTJ9G
タブレットPCでスクリーンキーボードを使ってピクセル単位の操作がしたい、とか?
501デフォルトの名無しさん:2015/02/22(日) 00:12:14.56 ID:+Vs0TRtQ
>>499
Win8タブレット前提で、タッチパネル上でマウス・キーボードを操作するアプリを作りたいからですよ?
既にそういうアプリはあるのは知っています。
502デフォルトの名無しさん:2015/02/22(日) 00:14:31.50 ID:Z38HTJ9G
もうあれよ、既存のマウスを操作するアプリじゃなくて、キーボードで操作する仮想マウスドライバ書け
503デフォルトの名無しさん:2015/02/22(日) 00:21:58.79 ID:+Vs0TRtQ
>>502
とりあえず、>>497 さんの SetWindowRgn で作ってみて、不具合出て対処出来そうもない場合は、
これ参考にしようかと思うのですが、ドライバー証明関連で詳しいサイトどなたか知りませんか?
ttp://riosu.hateblo.jp/entry/2013/09/08/013420
504デフォルトの名無しさん:2015/02/22(日) 00:58:23.39 ID:+WCHq4X5
セキュリティホールにしかならないから止めてくれ
505デフォルトの名無しさん:2015/02/22(日) 01:31:59.12 ID:uJK2QFdc
SuperFishの証明書発行しとけ
506デフォルトの名無しさん:2015/02/22(日) 03:03:47.82 ID:ewsgN8fY
ウィンドウやビットマップを1000個作って明示的に解放せずに(強制)終了させたとき、
それらのリソースはOSが勝手に解放してくれるんですか?
507デフォルトの名無しさん:2015/02/22(日) 03:06:21.19 ID:U+g4RZck
>>506
解放されるよ
508デフォルトの名無しさん:2015/02/22(日) 03:10:25.86 ID:ewsgN8fY
>>507
ありがとう
509デフォルトの名無しさん:2015/02/22(日) 07:16:57.24 ID:uX3Bvmht
されないものもある
510デフォルトの名無しさん:2015/02/22(日) 13:44:25.32 ID:o1GxeALa
詳しい人教えてください。

Windows環境で実装しています。
DLL AとDLL Bが有るとします。

DLL Aで、
void Func_A(FILE* pFP) {
fprintf_s(pFP, "%d", 123);
}
と実装し、Func_Aはエクスポートされていて、DLL Bから利用可能な状態となっているとします。

またDLL Bでは、以下のような関数を実装しているとします。
void Func_B() {
FILE* pFP = NULL;
fopen_s(&pFP, "./hoge.txt", "w"); //もしくはfopen()を使う
Func_A(pFP);
fclose(pFP);
}

この時、VCの「マルチスレッドデバッグ(MTd)」でビルドした上で、
DLL BのFunc_Bを実行すると、Func_A内のfprintf_sで、エラーになります。
※エラー内容:「要求した操作で必要なオブジェクトの種類と要求に指定したオブジェクトの種類が一致しません」
(DLLをまたいだ、内部的な、ファイルポインタ関係のメモリ操作違反?!)
なおVCの「マルチスレッドデバッグDLL(MDd)」でビルドすると、エラーは出ません(共通のCRTを使うため?!)。

MTdでビルドする際に、DLL BのFILE* pFPを、DLL Aに安全に渡して引き継がせる方法ってないんでしょうか。
511デフォルトの名無しさん:2015/02/22(日) 13:49:19.79 ID:jAanobMm
512片山博文MZ ◆T6xkBnTXz7B0 :2015/02/22(日) 13:49:33.80 ID:vD6PHArE
DLL AとDLL Bを同じ種類のCRTライブラリー使うようにしろ
513デフォルトの名無しさん:2015/02/22(日) 14:17:07.73 ID:o1GxeALa
ありがとうございます。

>>511
リンク先のCausesと、ファイルハンドルのExampleによると、オプションMT(d)は無理みたいですね。
リンク先のページを教えてもらって助かりました。

>>512
オプションMD(d)を使うしかないんですね。
514デフォルトの名無しさん:2015/02/23(月) 00:25:08.56 ID:umJpzUJj
>>513
ソースをいじれるなら、OS側のハンドルに変換して渡す方法もあるかと
(FILE系関数を使わずに全部APIでやる方法もあるが…)
こんな流れで

[ Func_B ]
FILE*からfd(ファイル記述子)へ変換:_fileno()
fdからhandleへ変換:_get_osfhandle()

[ Func_A ]
handleからfdへ変換:_open_osfhandle()
fdからFILE*へ変換:_fdopen()
出力後はfflush()してから戻ること
515デフォルトの名無しさん:2015/02/23(月) 05:13:35.71 ID:QqJCIrI1
ノートPCのバッテリへの電気供給をON/OFFに出来るAPIってある?ACPIってやつの制御?よくわからないけど
516デフォルトの名無しさん:2015/02/23(月) 08:18:05.67 ID:u+Zi8bbf
アクティブウインドになる前のアクティブウインドを調べる方法は有りますか?
517516です:2015/02/23(月) 08:36:14.15 ID:u+Zi8bbf
case WM_ACTIVATE:
{
HWND hBack = SetActiveWindow(GetActiveWindow());
return 0;
}
これはだめでした。。

スレッドやSetTimerなどで、GetActiveWindow()を動かして監視するしかないかな?
518デフォルトの名無しさん:2015/02/23(月) 08:47:10.65 ID:AjFb9vvE
hookやね
519デフォルトの名無しさん:2015/02/23(月) 09:05:38.07 ID:xos6Ur9w
うむ。 WH_CBT が最初に思い浮かんだが、
Alt+Tabででてくるリストを取得する方法があれば常駐しなくて済むかも。 後者の手段は知らない。
520516です:2015/02/23(月) 09:30:22.21 ID:u+Zi8bbf
GetActiveWindow()だめでした。ヘルプ読んだら、関連付けされているスレッドのみ有効><
タイマーかスレッドで、GetForegroundWindow()使えばいいのかなと思いました。
EnumWindowsでアクティブウインドウを調べようかと思ったんですが、不具合出てきたら、フックのほうが正確かもしれませんね。
521デフォルトの名無しさん:2015/02/23(月) 11:42:03.06 ID:Pw6BfwZP
WM_ACTIVATEのlParamに入ってなかったっけ
522デフォルトの名無しさん:2015/02/23(月) 16:17:37.64 ID:dq6RfWKT
入ってるよ
523デフォルトの名無しさん:2015/02/23(月) 21:03:41.95 ID:u+Zi8bbf
>>521
なんと!
lParamに入ってましたか!
ありがとう!
524デフォルトの名無しさん:2015/02/23(月) 23:28:59.37 ID:hhR2xhyg
メッセージ処理する時にwParam lParamの意味を調べるのは基本
525デフォルトの名無しさん:2015/02/24(火) 10:37:18.28 ID:Er3xweuT
主要メッセージのlParam,wParam,戻り値の一覧みたいなの無かったっけか
前にどっかで見た気がするんだが
526デフォルトの名無しさん:2015/02/24(火) 14:11:42.07 ID:fS9qUf3C
一覧にする必要性を感じない
何が便利になるんだ?
527デフォルトの名無しさん:2015/02/24(火) 14:46:11.67 ID:oePtv8Lt
子ウインドウAのリストビューの項目をクリックしたら、子ウインドウBにそのマンコを表示してアクティブにしたいんだけど、子ウインドウBがアクティブにならない
SetFocusもSetActiveWindowも両方試したけど駄目だった
リストビューをクリックして子ウインドウBに表示されたマンコをキーボードの矢印で上下左右に動かしたいんだけど、
フォーカスが移ってくれないからキーボードの矢印を押すとリストビューの選択が動く
子ウインドウBをクリックすればちゃんとフォーカス移ってキーボードで操作できるけど、いちいちクリックしてるとマンコの損失がでかい
ちなみに、なぜか子ウインドウAの項目をキーボードの矢印で選択したときはちゃんと子ウインドウBにフォーカスが移る
何だろうな、こういうことでも起こってんのかね

子ウインドウAでマウスダウン→子ウインドウBにマンコ表示→子ウインドウBアクティブ→子ウインドウAでマウスアップ→子ウインドウAアクティブ
528デフォルトの名無しさん:2015/02/24(火) 20:41:45.91 ID:4wRlIK+Y
NM_CLICKのタイミングでフォーカス移しても駄目か?
529デフォルトの名無しさん:2015/02/24(火) 21:39:42.01 ID:oePtv8Lt
>>528
ありがとう
でも駄目だった
結果は変わらず
530デフォルトの名無しさん:2015/02/25(水) 01:55:31.82 ID:2mLZHhyU
モードレスDialogでタイトルバーに
---------------------------
                [-][□][x]
---------------------------
最小化、最大化、閉じるボタンの三つがありますが、
そのうち最大化のみ消して

---------------------------
                  [-][x]
---------------------------
にできますか?方法教えて下さい。
531デフォルトの名無しさん:2015/02/25(水) 02:44:45.76 ID:FoI0Rp8s
>>527
マウスボタンを押して離すまでがクリックですよ!
離すまで待ってみないと、本当にクリックなのかそれともドラッグするか
おっと操作ミスった!でキャンセルするかわからんからな

リストビューでも、押した時点で選択は変わるけど
離すまでの間はマウスをキャプチャした状態になるみたいだ
だからマウス離したところでフォーカス移せばいいんでね?
532デフォルトの名無しさん:2015/02/25(水) 04:49:48.53 ID:kAr5BbQr
>>530
スタイル
533デフォルトの名無しさん:2015/02/25(水) 05:46:40.57 ID:PhSX1vqX
> 子ウインドウBがアクティブ
MDIか?
534デフォルトの名無しさん:2015/02/25(水) 06:47:27.22 ID:2mLZHhyU
>>532
disableには出来たんですが非表示に出来ないんです。それと最小化ボタンをクリックしてもイベントが飛んで気ません。どうしたらいいですか?
535デフォルトの名無しさん:2015/02/25(水) 07:38:21.31 ID:nKN7f0Au
>disableには出来たんですが非表示に出来ないんです。

知ってるよ
536デフォルトの名無しさん:2015/02/25(水) 10:48:14.06 ID:2mLZHhyU
>>535
教えてけろ
537デフォルトの名無しさん:2015/02/25(水) 11:21:20.24 ID:d0ie9jrP
ダイアログで良くね?
538デフォルトの名無しさん:2015/02/25(水) 11:22:25.66 ID:69PZJRAE
>>530
自分でタイトルなしのウインド作ってほしいボタン貼り付けたら?
最小化ボタンは、SendMessage(hWnd,WM_SYSCOMMAND,0xF020,0); とか使って実装すればいいと思うよ?
539デフォルトの名無しさん:2015/02/25(水) 12:56:42.77 ID:d0ie9jrP
style = WS_POPUP | WS_BORDER | WS_CAPTION | WS_SYSMENU | DS_MODALFRAME;
で作ったらタイトルとXボタン付きで最小化ボタンと最大化ボタンの両方が消えた

style = WS_POPUP | WS_BORDER | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | DS_MODALFRAME;
で作ったら最大化ボタンが一緒に出て来てしまう(無効にはされてるが)

なので >>538 さんの言うように
style = WS_POPUP | WS_BORDER | WS_CAPTION | WS_SYSMENU | DS_MODALFRAME;
で作って最小化ボタンだけ自分で描く 👀
540デフォルトの名無しさん:2015/02/25(水) 12:58:58.35 ID:d0ie9jrP
最近自分のレスの末尾に
��
が付くことが多いんだけど
これってなんなの?
入れた覚えないんだが
541デフォルトの名無しさん:2015/02/25(水) 13:52:29.92 ID:2mLZHhyU
みなさんレスありがとうございました。
アドバイスに従っていろいろ試したんですが、結局、難しいので諦めました。それで、
モードレスダイアログをCreateDialogで作り、[-][□][x]の三つのボタンを付けました。
でも、[-]や[□]を押しても何も起こりません。[x]を押すとWM_CLOSEが来るのですが。
どうすれば[-]や[□]を検出できますか?
542デフォルトの名無しさん:2015/02/25(水) 14:07:28.82 ID:E85DqTH1
なんで諦めたのにダイアログにしたの?
何も起きないのはダイアログのウィンドウプロシージャがそのメッセージを拾ってないからでしょ
WM_SYSCOMMANDを受けてwParamに応じてCloseWindowかなんかすればいいと思うけど
543デフォルトの名無しさん:2015/02/25(水) 15:27:50.11 ID:2mLZHhyU
>>542
モードレスダイアログを作りたいのです。
追加で質問なんですが、
SendMessage(hDlg, DM_SETDEFID, IDC_BUTTON, 0);
とするとデフォルトボタンを設定できますけれど、IDで指定するのではなく
ボタンのhwndを指定してデフォルトボタンを設定する方法ありますか?
544デフォルトの名無しさん:2015/02/25(水) 16:10:56.29 ID:E85DqTH1
さあ
ただGWLP_IDかなんかで手動でリソースIDを設定できた記憶があるからその延長でできる気がする
545デフォルトの名無しさん:2015/02/25(水) 18:11:54.28 ID:uRiqOZSm
>>541
本体のウィンドウのメッセージループで
IsDialogMessage() チェックして
モードレスダイアログ宛てのメッセージはスキップして
ウィンドウ側で処理せずダイアログに渡す必要がある
546デフォルトの名無しさん:2015/02/25(水) 18:22:43.02 ID:uRiqOZSm
試したコード
http://codepad.org/lTZ2hgkK
547デフォルトの名無しさん:2015/02/25(水) 19:41:38.08 ID:2mLZHhyU
545さん!物凄い分り易いサンプルプログラム大変有難うございました。
早速試させていたいだいたのですが、
私の場合、最小化ボタンを付けたいので、サンプルのDlgProc()を変更して

case WM_INITDIALOG:
  SetWindowLong(hDlg, GWL_STYLE, GetWindowLong(hDlg, GWL_STYLE) | WS_MINIMIZEBOX);
  return TRUE;

のようにしたら、最小化ボタン出たのですが、これで最小化ボタン押しても何も反応しません。
これが私が最初の質問だったのですが、この最小化ボタンを押して最小化するにはどうすればいいのでしょうか? 
そもそも追加した行は、ググッて見付けたものを適当にコピペしたので、これで良いのかどうかも分っていません。
よろしくお願いします。
548デフォルトの名無しさん:2015/02/25(水) 19:50:24.61 ID:uRiqOZSm
WndProc 中の
tpl.dlg.style |= WS_MINIMIZEBOX;
の行をコメント外して

DlgProc()を変更して
case WM_INITDIALOG:
SetWindowLong(hDlg, GWL_STYLE, GetWindowLong(hDlg, GWL_STYLE) & ~WS_MAXIMIZEBOX);
return TRUE;
としたら最小化できたよ
549デフォルトの名無しさん:2015/02/25(水) 21:34:40.70 ID:2mLZHhyU
>>548
サンプルプログラムで無事に最小化出来ました。
一方、私の場合、テンプレートではなくてリソースでダイアログを作っていました。
それで
case WM_INITDIALOG:
  SetWindowLong(hDlg, GWL_STYLE, GetWindowLong(hDlg, GWL_STYLE) | WS_MINIMIZEBOX);
  return TRUE;
としたら最小化ボタンが出たのですが、これが無反応でした。それでリソースのプロパティの設定でMinimize box=Falseになっていたの
に気付いて、trueにしたら、無事に最小化できました。この場合、WM_INITDIALOGでの設定は不要でした。
ということは、リソースでMinimize box=FalseにしてWM_INITDIALOGでSetWindowLongで有効化しても、
確かに最小化ボタンは現れますが、クリックに反応しないんですね。リソースでtrueにする必要があるんですね。
一体両者で何が違うんでしょうか?
いずれにしましても、今回は、大変分り易いサンプルを作って頂きまして大変有難うございました。
大変感謝です。
550デフォルトの名無しさん:2015/02/25(水) 22:01:28.25 ID:RgCL3LuA
リソースから造ってもテンプレから造っても同じ動きをしているね
551デフォルトの名無しさん:2015/02/25(水) 23:05:31.32 ID:2mLZHhyU
もし分れば、もう一つ教えて下さい
546さんのプログラムで、ダイアログがキー入力を受け付けるように
するにはどうすればよいでしょうか?私のプログラムも同じく、
キーを押すとピンという音が鳴って、キーを受け付けてくれません。
552片山博文MZ ◆T6xkBnTXz7B0 :2015/02/25(水) 23:23:20.19 ID:mKx2rGPv
__alignof(IMAGE_DOS_HEADER)が2になるのはなぜ? LONGがあるから4じゃねーの?
553デフォルトの名無しさん:2015/02/25(水) 23:33:43.90 ID:flmNpp9d
>>552
#pragma pack(push,2) されている。16bit時代との互換性だろう。
メモリ上にコピーするぶんには4byte alignで問題ないだろうが、
mmapする場合には2byte alignされているのを考慮しないとbus errorの恐れがあるな。
554デフォルトの名無しさん:2015/02/26(木) 06:54:52.12 ID:YbvsbeHP
>>551
質問が曖昧過ぎるので、具体的に万人が分かるように、もう少し噛み砕いてから質問してください。
どういうことを伝えたいのか理解できません。

キー入力を受け付けるとは、DlgProc内で、WM_KEYDOWNなどのイベントを取りたいってことか?
似た質問はこっちかな?
ttp://rarara.cafe.coocan.jp/cgi-bin/lng/vc/vclng.cgi?print+200301/03010053.txt
サブクラス化関連はこっちを参考にするといいぜ。
ttp://www.kumei.ne.jp/c_lang/sdk/sdk_36.htm

キー入力を受け付けるとは、TABキーで他のボタンとかにフォーカスを移動すること?
SetFocusとか、WS_TABSTOP関連調べたらいいんじゃね?

ダイアログになにかコントロールは張ってあるの?
エディットボックスを配置してあってそのエディットボックスの内容を処理したいの?
キー入力の受け入れは、ダイアログで処理を前提とした内容なの?
555デフォルトの名無しさん:2015/02/26(木) 09:47:57.41 ID:MDOnKL5v
名前欄に「エスパー求む」と書いておいてほしいな
556デフォルトの名無しさん:2015/02/26(木) 12:03:53.28 ID:hCLRjR6a
Win32APIスレってこんなに穏やかだったっけ
う〜ん、泣ける
557デフォルトの名無しさん:2015/02/26(木) 13:10:31.37 ID:8ZdwsKpC
>>556
ID出るようになった辺りが転換期かと
558エスパー求む:2015/02/26(木) 15:30:17.95 ID:cGnKpNs3
誰かKB3008273を常に監視しておいてKB3008273が更新に入っていたら
無効にしてくれるソフト作ってくれないかな・・・

C:\Windows\SoftwareDistribution\DataStore\DataStore.edb
http://stackoverflow.com/questions/20601018/how-to-read-windows-edb-file
https://msdn.microsoft.com/en-us/library/windows/desktop/gg269259%28v=exchg.10%29.aspx
http://managedesent.codeplex.com/SourceControl/latest#Esedb/
559デフォルトの名無しさん:2015/02/26(木) 15:59:19.04 ID:hCLRjR6a
>>557
そういや前はID無かったんだっけ
IDがここまで治安に関わるとはなぁ…
560デフォルトの名無しさん:2015/02/26(木) 16:19:07.58 ID:Oz6S5H7y
穏やかにはなったけど有益なレスが極端に減ったよね
2chで議論したり質問したりするメリットがほとんどなくなった
惰性で見てる奴がほとんどだろう
561デフォルトの名無しさん:2015/02/26(木) 16:25:49.53 ID:Oz6S5H7y
ここまで有益なレスがレスが極端に減ると代償は大きすぎたんじゃないかとは思う
最底辺を這いずり回ってる人から見ればレスの質の違いはほとんど感じられないのだろうけど
562デフォルトの名無しさん:2015/02/26(木) 16:45:57.44 ID:RfmB+Emb
んじゃ有益なレスをどーぞ
563デフォルトの名無しさん:2015/02/26(木) 17:32:00.05 ID:8ZdwsKpC
有益なレスはむしろ増えたと感じるよ
と言うか前はノイズそのものしか存在しなかった
564デフォルトの名無しさん:2015/02/26(木) 17:44:55.38 ID:vBjTX7Yd
このスレを荒らしてたのとアンチhogeで荒らしてたのは同一IDだったな。
ついでにID導入に反対して自治スレ荒らしてたのも同じ奴だろう。
565デフォルトの名無しさん:2015/02/26(木) 20:08:15.17 ID:cJpbHW1d
>>560
このスレに限らず、2ch 全体の傾向
特に技術系のスレは軒並み衰退してる
566デフォルトの名無しさん:2015/02/26(木) 21:02:24.97 ID:WnrsjYVG
>>564
そうそう、seikyo さんだったっけ‥
567デフォルトの名無しさん:2015/02/27(金) 16:03:44.83 ID:oi7CjQpo
>>514
OS側のハンドルに変換して渡す方法を教えていただき、ありがとうございます。

実は、アプリの構成が以下の様になってます。
 exe本体
 DLL_1 ツール
 DLL_2 出力フロー制御、出力サブA
 DLL_3 出力サブB
 DLL_4 出力サブC

DLL_2が出力の流れをコントロールしており、
DLL_2の出力フロー制御を行う関数の手続きに沿って、最初にDLL_1でfopen_sして、DLL_2〜4で出力したいと考えてます。
教えてもらった方法に基づいて色々試してみた所、MTdでもエラーが出ずに出力できたのですが、
exe終了時に、DLL_3でエラーが出てしまいます。

工夫が必要なようなので、自分でちょっと考えてみます。
568デフォルトの名無しさん:2015/02/27(金) 20:51:49.92 ID:r3kgyrtk
>>567
なんでそんなにDLLがあるのにライブラリと静的リンクしにゃきゃいけないんだ?
569デフォルトの名無しさん:2015/02/27(金) 22:17:19.45 ID:Ip5cIlNH
winAPI でまとめたほうがいいよ‥
570デフォルトの名無しさん:2015/02/27(金) 23:08:24.96 ID:1tbgoJAT
各dllにはファイルに直接出力させずにバッファに書き出させてから呼び元一カ所でファイルに書けばいいのでは?
571デフォルトの名無しさん:2015/02/27(金) 23:54:54.98 ID:iW29o0bD
>567
オープンも書き出しもクローズも一箇所にする
書式指定の書き出しはこんなふうにまとめる
void hoge(FILE *fp, char *function, char *format, ...) {
va_list arg;
va_start(arg, format);

vfprintf(fp, format, arg);

va_end(arg);
}
あとはそれぞれ呼び出すようにする

で、どうですかね
572デフォルトの名無しさん:2015/02/28(土) 05:53:03.42 ID:7qcAqGEp
mallocしたのを別のDLLからfreeするのはいいんだっけ?(CRTと静的リンク時)
573 ◆QZaw55cn4c :2015/02/28(土) 06:14:35.70 ID:WGZr43/X
よくわからないが、自信がなければ
#define malloc(size) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, (size));
#define free(p) HeapFree(GetProcessHeap(), 0, (p));
に置き換えれば問題ないだろう
574デフォルトの名無しさん:2015/02/28(土) 06:25:17.86 ID:YX39mL1t
そもそも別のDLLからfreeする必要性がわからん
575デフォルトの名無しさん:2015/02/28(土) 07:27:47.03 ID:kDCn/ge4
いらなくなったらそっちで解放してねーってありえへんの?
576デフォルトの名無しさん:2015/02/28(土) 07:33:44.88 ID:dohjXiRJ
専用の解放関数もエクスポートする。 Win32API なら CoTaskMemFree() が標準的に使われている。
operator delete をオーバーロードしてもいい。
577デフォルトの名無しさん:2015/02/28(土) 10:31:09.77 ID:/TOKC6AH
素人のクライアントが頑張って考えてくれた糞仕様的でとてもよい
578デフォルトの名無しさん:2015/02/28(土) 11:08:19.31 ID:/hvue7cx
メモリ確保処理と解放処理は、必ず同じものがしなさいと教わりました。
これは、正しいですか?
579デフォルトの名無しさん:2015/02/28(土) 11:09:40.45 ID:O3IcVn8Y
全て同じプログラムがしているので正しい
580デフォルトの名無しさん:2015/02/28(土) 11:13:51.22 ID:VNSN4Y6t
>>578
「同じもの」とは何を示してますか。日本語で宜しく。
581デフォルトの名無しさん:2015/02/28(土) 11:54:14.21 ID:nexQhfCQ
あえてこのスレで聞くということは
↓みたいな組み合わせを変に混ぜて使うなという意味かな それなら正しい

new と delete
malloc と free
GlobalAlloc と GlobalFree
582デフォルトの名無しさん:2015/02/28(土) 12:29:40.19 ID:o5qWQGmA
横からだが、

>>581
それなら「同じものを使いなさい」という表現じゃないかな。
「同じものがしなさい」なら
・呼び元が確保したなら呼び元が開放しなさい
・呼び先が確保したなら呼び先が開放しなさい
という意味だと思うが
583デフォルトの名無しさん:2015/02/28(土) 12:33:51.19 ID:MySCamNG
アプリ終了時にOSがやってくれる
584デフォルトの名無しさん:2015/02/28(土) 13:51:47.78 ID:7qcAqGEp
>>574
例えばSTLのvectorをDLL境界を超えて渡すとか
CRTと動的リンクしてれば問題ないんだけどね
585デフォルトの名無しさん:2015/02/28(土) 14:00:36.15 ID:0w0p4VdY
shared_ptrに包んで渡せば問題ない
586デフォルトの名無しさん:2015/02/28(土) 14:14:44.93 ID:7qcAqGEp
>>585
vector自体の解放はそれでいいけど、push_backとかしたらアウトじゃん
587デフォルトの名無しさん:2015/02/28(土) 15:28:10.11 ID:JFYCQWYV
vectorなんざ使ってるのは女子供だけだからどうでもいい
588デフォルトの名無しさん:2015/02/28(土) 16:08:14.51 ID:rpQR9Pv+
https://msdn.microsoft.com/ja-jp/library/k1sf4cx2.aspx
BYTE bmPlanes;
BYTE bmBitsPixel;
↑これBYTEじゃなくてWORDじゃねえかくそバグったわ氏ね
589デフォルトの名無しさん:2015/02/28(土) 16:28:45.10 ID:ODdhY4Z/
590デフォルトの名無しさん:2015/02/28(土) 16:28:57.87 ID:8VFhE8v6
intのところもLONGだな
591デフォルトの名無しさん:2015/02/28(土) 16:38:24.51 ID:ODdhY4Z/
16bitのときのまま直し忘れかな
592デフォルトの名無しさん:2015/02/28(土) 17:00:53.56 ID:g3yXT3ce
あるあるネタ
593デフォルトの名無しさん:2015/02/28(土) 17:10:28.11 ID:G6B671t8
OS2のbitmapだとBYTEみたいね
594デフォルトの名無しさん:2015/02/28(土) 17:11:22.44 ID:8VFhE8v6
msdnが間違ったままなのは論外として、それはそうとしてもバグる前に
ビルド時点で気付かんものか?
595デフォルトの名無しさん:2015/02/28(土) 17:15:16.73 ID:ODdhY4Z/
コンパイルが成功するケースとして
気付かないアクセス方法を使ってたり
BMPHEADERのサイズを数え間違ったりする原因にはなるな
596デフォルトの名無しさん:2015/02/28(土) 17:24:47.32 ID:rpQR9Pv+
スクリプトで構造体を弄るときは自分でアドレス計算しなくちゃならないからな
597デフォルトの名無しさん:2015/02/28(土) 17:30:58.75 ID:O3IcVn8Y
そもそもドキュメントなんか信用するからだ
598デフォルトの名無しさん:2015/02/28(土) 17:34:34.44 ID:g3yXT3ce
まあな。うちの会社もドキュメントが無くて、ソースが仕様書って言われたしw
599デフォルトの名無しさん:2015/02/28(土) 18:11:25.69 ID:rpQR9Pv+
最終的にはVSのインテリセンスで確認して気づいたのも確か
猫以下の公式は信用できないな
600デフォルトの名無しさん:2015/02/28(土) 18:15:02.36 ID:st/D/r/c
昔はまって原因判らなくて困って別の方法とったことがある気がするんだがコレだったのか
601デフォルトの名無しさん:2015/02/28(土) 18:28:12.04 ID:eag/Tohr
おかしいのはMFCATLカテゴリの日本語版だけで英語版やWin32APIの方は正しい
単にメンテされてないんだろう
602デフォルトの名無しさん:2015/02/28(土) 19:19:52.82 ID:WGZr43/X
>>588
あいかわらず翻訳はだめだな
https://msdn.microsoft.com/ja-jp/library/cc413950.aspx
603デフォルトの名無しさん:2015/02/28(土) 20:57:16.77 ID:JFYCQWYV
つーか英語読めないヴァカはプログラミングするな
604デフォルトの名無しさん:2015/02/28(土) 21:25:47.21 ID:JFYCQWYV
>>822
おいらは逆だなw
女子高生においらのスカートの中を盗撮してほしいwww
イメクラとか行ったらそういうプレイやってくれるかな?ww
605デフォルトの名無しさん:2015/02/28(土) 21:27:11.32 ID:JFYCQWYV
>>604は関係ないから読まなくていい
606デフォルトの名無しさん:2015/02/28(土) 23:56:23.39 ID:in6rjNY5
>>578
同じ「階層」に位置する場所でやるのが一番いいと思うな
関数呼び出しの深度、と言い換えてもいい
607デフォルトの名無しさん:2015/03/01(日) 00:45:57.37 ID:Mu8lfqrn
>>606
それは無理がある
例外の発生とかで解放処理を行なう場合、階層を合わせるのは難しい。
608デフォルトの名無しさん:2015/03/01(日) 00:52:57.33 ID:68G9IfEz
>>607
デストラクタで解放すれば例外が発生しても同じ関数の中で解放できるだろ
何が難しいんだ?
609デフォルトの名無しさん:2015/03/01(日) 01:02:31.74 ID:JUHHhof8
>>608
解放処理は1箇所でもできる。
確保は1箇所(例コンストラクタ)とは限らない。
むしろ、Createなんちゃら、とかOpenなにがし、とかの個別関数で行なう場合が多い。
610デフォルトの名無しさん:2015/03/01(日) 01:27:16.04 ID:68G9IfEz
>>609
何が言いたいのか分からん
> 確保は1箇所(例コンストラクタ)とは限らない
当たり前。そのクラスのメンバ関数で確保したものは、そのクラスのデストラクタで解放するのが普通
同じ階層で確保・解放できるじゃん
611デフォルトの名無しさん:2015/03/01(日) 01:43:59.47 ID:anadyXDv
>>610
初心者か?
すべてのメンバ関数の階層が1層しか無いのなら可能ではある。
ただ、余程小さなクラスでもない限りメンバ関数が階層構造になるのが普通。
オブジェクト指向といえど構造化プログラミングの原則は変わらない。
メモリ確保などの詳細処理は、それを管理する側(処理)から呼び出して利用する。
612デフォルトの名無しさん:2015/03/01(日) 02:06:32.35 ID:68G9IfEz
>>611
メンバ関数の階層構造なんかどうでもいいんだよ
確保したものをメンバ変数に入れておけばデストラクタで解放されるんだから同じ階層ってことでいいだろ
そんな小さい話じゃねーよ
613デフォルトの名無しさん:2015/03/01(日) 02:13:32.79 ID:gHP/P/bi
>>612
主張している論理が破綻してるぞ
>>606で自分自身が書き込んだ内容見直してみろ
614デフォルトの名無しさん:2015/03/01(日) 02:15:42.08 ID:ciqMShcX
>>611
Cしかやったこと無いんじゃないのかな
例外だのRAIIだのGCだの知らない人に見える
615デフォルトの名無しさん:2015/03/01(日) 02:17:43.55 ID:68G9IfEz
>>613
>>606は俺じゃねーよ。何勝手に勘違いしてんだよ
616デフォルトの名無しさん:2015/03/01(日) 02:33:00.57 ID:eo22pC4p
>>615
勘違いしていた。失礼した。
しかし言葉の上とは言え、メンバ変数に入れておけばどのメンバ関数で扱っても同じ階層と見なすという主張は乱暴に過ぎる。
強いて言えば、階層というより同じインスタンスで扱うといったところかな。
617デフォルトの名無しさん:2015/03/01(日) 02:47:49.01 ID:68G9IfEz
>>616
同じインスタンスって継承とかしてたらおかしくならないか
基底クラスが確保したものを派生クラスが解放するのはおかしい
そういう意味で階層の方が適切だと思う
618デフォルトの名無しさん:2015/03/01(日) 02:54:47.52 ID:ciqMShcX
>>616
スコープの寿命ってだけの話?
619デフォルトの名無しさん:2015/03/01(日) 02:58:15.99 ID:46tsY+o2
>>617
確かにそうだが。
もともとが関数の呼び出し階層のことを言っていたからな。
言わんとしていることは分かるが、正直 適当な言葉が見つからない。
620デフォルトの名無しさん:2015/03/01(日) 03:55:28.27 ID:KGIv2ag3
結論としては
メモリの確保と解放を、同じ関数呼び出し階層で行なうことに意味はない。
解放は1ヶ所(デストラクタ)で行ない、確保した階層に拘るべきではない。
ということでよろしいか?
621デフォルトの名無しさん:2015/03/01(日) 04:33:03.03 ID:LYwpGVQL
スレチ
622デフォルトの名無しさん:2015/03/01(日) 05:43:06.37 ID:pTcVnBAb
同クラスのメンバ関数で起こった確保を同クラスのメンバ関数で解放することを
同じ階層と呼ぶことに特に違和感はなかったけど、メンバ関数が階層構造になるってどういう意味?
はぁ〜Win32API、いいじゃない
623デフォルトの名無しさん:2015/03/01(日) 08:11:52.06 ID:xHJpp+wq
>>617
なんで1確保1解放になる前提なんだ?
確保
→解放⇔確保
→確保されてたら解放
ってのもありえるだろう
624デフォルトの名無しさん:2015/03/01(日) 09:05:05.83 ID:6ijce9uo
スレチ+1
625デフォルトの名無しさん:2015/03/01(日) 09:32:27.00 ID:Z2A424Jm
>>622
C++は関数型言語ではないため、関数そのものを第一級オブジェクトとしては扱えない。
厳密な意味での関数の階層構造、いわゆる高階関数はあり得ない。
まあこの場合は、単純に呼び出し階層のことを階層構造と言っているんだと思う。
626デフォルトの名無しさん:2015/03/01(日) 09:39:40.78 ID:nomKHzfb
>>625
C++11(C++0x)からはラムダ式をサポートしているから高階関数も記述できる。
627デフォルトの名無しさん:2015/03/01(日) 18:26:41.59 ID:3UdH+o3p
スレチ++;
if (スレチ > 1) exit(0);
628デフォルトの名無しさん:2015/03/01(日) 18:48:36.09 ID:LYwpGVQL
unsigned int スレチ = 0;
if (--スレチ < 0) exit(0);
629デフォルトの名無しさん:2015/03/02(月) 20:37:41.90 ID:AZdlh9F+
2ちゃん終わるってね、さようなら
630デフォルトの名無しさん:2015/03/02(月) 21:09:54.74 ID:/ZttR8id
やっとできそうだぞ
http://gigazine.net/news/20150302-ikea-qi-wireless-charging-furnishing/

19 :デフォルトの名無しさん:2012/09/05(水) 17:16:26.07
当然のことだけどプロバイダ契約とシンクライアントの契約は同時に行うことになる。
通信環境も劇的に向上するから、無線のインターネットでも論理値10Gbps、実測値8Gbps程度になる。
そしてすべての家庭からモデムやルーターが消える。
さらに多くの一般家電製品ががインターネットに直線接続するようになる。
今スマートホンで操作できる炊飯器やオーブンレンジがあるが、あれはスマートホンを炊飯器などにかざす必要がある。
しかし2014年にはそれらがインターネットに直線接続されるため、スマートホンをかざさなくても操作が可能になる。

グラフィックも大幅に改良され、タブレット端末でありながらリフレッシュレートが400Hz近くになる。
内臓GPUも高性能でかなり重い3Dゲームでも200fps程度で普通に動く。
電力消費も心配する必要はない。
現在のスマートホンなどに利用されている非接触型の充電設備が至るところに作られる。
飲食店やホテルや旅館の机、電車やバスの車内の壁、駅のロッカー内、トイレの鏡の前にある荷物を置くスペースなど、
ありとあらゆるところが非接触型充電器となる。
そんなコストのかかる話を多くのところが導入するはずかないとおもかもしれないが、それは間違いだ。
非接触型充電の可能なテーブル等は意識しないほど当たり前の存在となる、今で言えば照明設備のようなものだ。
照明設備のない飲食店やホテルを見たことがあるだろうか?日本中探せばないことはないだろうがかなり珍しいレベルだし、
照明がある店を見ても気にならない。
気にならないというよりむしろ意識に入ってこないほど当たり前の状況だ。
2013年後半にはそのレベルで非接触型充電設備がいたるところに導入される。
当然家庭のテーブルやベッドも、非接触型充電機能のついたものが今とほとんど変わらない値段で売られるようになる。

そんな時代がもう目の前なんだよ。
631デフォルトの名無しさん:2015/03/03(火) 00:22:00.50 ID:CY26UHsq
そうか
あと10年か
632片山博文MZ ◆T6xkBnTXz7B0 :2015/03/04(水) 12:32:41.43 ID:wAAd8cV7
サニタイズ完了。
https://github.com/katahiromz/DoWonders
633デフォルトの名無しさん:2015/03/04(水) 13:07:36.31 ID:tgLNzxz5
VariantInit(&x)した変数xは、使い終わったら必ず
VariantClear(&x)する必要ありますか?
634デフォルトの名無しさん:2015/03/04(水) 13:16:28.70 ID:4pfVor2U
Initしただけなら要らないし、整数とかの値型でも要らない。
ただ普通はVARIANTをラップしたクラスを使うのではないか。
635デフォルトの名無しさん:2015/03/04(水) 13:25:32.16 ID:tgLNzxz5
>>634
レスありがとうございまし。
>VARIANTをラップしたクラス
CComVariantというやつでしょうか?
使っていません。もう一つ質問なのですが、BSTRを
SysAllocStringでxに入れた場合、解放はSysFreeStringでもVariantClearでも
どっちでもいいんですよね?
636デフォルトの名無しさん:2015/03/04(水) 14:32:25.29 ID:4pfVor2U
>>635
どっちでも一緒だが、VARIANTに入れたならVariantClearが自然だと思うが。

あと、使っていません、じゃなくて、使うべきだということだ。
まぁ、pure-Cで書きたいならリークしないようがんばれ。
637デフォルトの名無しさん:2015/03/04(水) 16:35:21.60 ID:CGrRsA9r
サブクラス化するときにわざわざCallWindowProcを使う理由って何ですか?
そのままWndProcを呼び出せばいいような気がしますが
638デフォルトの名無しさん:2015/03/04(水) 16:40:26.58 ID:1ms42xKS
他の誰かがフックしてたら?
639デフォルトの名無しさん:2015/03/04(水) 16:47:31.58 ID:kF2z/wHc
他の誰かがフックしてたらどうすんだって聞いてんだよ!!
640デフォルトの名無しさん:2015/03/04(水) 17:15:40.48 ID:CGrRsA9r
すみません。チェインを繋ぐときにCallWindowProcの第一引数に元々あった関数ポインタを指定しますが、
それと同じものをCallWindowProcを使わずに手動で呼び出したらどういう不都合があるのかという意味です
641デフォルトの名無しさん:2015/03/04(水) 17:31:14.35 ID:m8Ib0gvC
どっかにWin32APIの関数と引数と定数をCSV形式にまとめたものない?
ないなら自作するから別にいいんだけど
642片山博文MZ ◆T6xkBnTXz7B0 :2015/03/04(水) 17:37:25.07 ID:+D050Nsw
>>641
TSVなら>>632のリンクをたどればあるよ
643デフォルトの名無しさん:2015/03/04(水) 19:48:53.75 ID:4pfVor2U
>>640
まずは先にMSDNに当たろう。
> Windows NT/2000:CallWindowProc 関数は、Unicode から ANSI への変換を行います。ウィンドウプロシージャを直接呼び出した場合は、このような変換は行われません。
A系とW系が混ざったときに意味がある。
ただ、いまや全てがNT系になっているから、おそらく何もしていないとは思う。
644デフォルトの名無しさん:2015/03/04(水) 20:14:41.63 ID:CGrRsA9r
>>643
ごめんなさい。見落としていたみたいです
あまり混ざる状況が想像できませんね
645デフォルトの名無しさん:2015/03/04(水) 22:44:03.39 ID:+D050Nsw
printf("DoWonders、これは事件だ!\n");
646デフォルトの名無しさん:2015/03/04(水) 23:03:00.23 ID:FBGUNvyY
最後改行するならputsじゃあかんの?
647デフォルトの名無しさん:2015/03/05(木) 09:58:20.60 ID:3wyFIaYr
DLL(自作)
EXE(他作,ソース変更できない。 DLL使う)
の場合にEXEを複数起動したとして、DLL間で構造体を一個共有したいのですが、
どんな方法がお勧めですか?キーワード教えて下さい。
648デフォルトの名無しさん:2015/03/05(木) 10:50:26.88 ID:OANpNxqp
CreateFileMapping
649デフォルトの名無しさん:2015/03/05(木) 11:11:26.47 ID:3wyFIaYr
>>648
レスありがとうございます。
質問した後ぐぐって調べて
CreateFileMapping
CreateNamedPipe
などを使えば出来るのかなと思ったのですが、どっち使ってもできますか?
650デフォルトの名無しさん:2015/03/05(木) 11:31:51.71 ID:GDG3LDPk
1から10まで聞くつもりか
651デフォルトの名無しさん:2015/03/05(木) 11:38:06.57 ID:3wyFIaYr
>>650
教えてください
652片山博文MZ ◆T6xkBnTXz7B0 :2015/03/05(木) 11:55:31.35 ID:rUbEobY5
CreateFileMapping は共有メモリー作成に使える。
CreateNamedPipe は、他のプロセスとの通信に使える。
653デフォルトの名無しさん:2015/03/05(木) 12:00:11.48 ID:NOA7K+lC
654デフォルトの名無しさん:2015/03/05(木) 12:03:17.13 ID:3wyFIaYr
>>652
解説ありがとうございました。少し分ってきました。今回はCreateFileMapping
を使うのが良さそうな気がしますのでそれで試してみます。
もしCreateNamedPipeを使ってDLL同志でプロセス間通信をした場合、EXEの動き
と関係なく勝手に通信してもEXEの動きがおかしくなるとか、そういうことは
ありませんか?
655デフォルトの名無しさん:2015/03/05(木) 12:48:19.42 ID:6vcov9qd
>>654
パイプ内のデータ量に注意が要るだろう。 空なら読み側がブロックされるし、一杯なら書き側が。
メモリマップの場合は排他処理が要るだろう。 マップしたデータの更新中に読み取ろうとするとおかしくなることも。
656デフォルトの名無しさん:2015/03/05(木) 15:28:53.17 ID:FqBn4bE2
具体的にやりたいことが分からんけどDLLDLLと連呼するからにはシェルとの親和性は考えてないんでしょ
パイプにするメリットはないでしょ
657デフォルトの名無しさん:2015/03/05(木) 16:40:12.83 ID:3wyFIaYr
みなさん有難うございました。
CreateFileMappingでどうにか出来ました。(たぶん)
排他制御はしていません。
>>653さんの
#pragma data_seg("hogehoge")
の方法は、ビルドは出来たのですが実行するとEXEが異常終了しましたが
何が悪いのか良く分らなかったです。
658デフォルトの名無しさん:2015/03/05(木) 16:50:32.22 ID:wT1PXWMM
頭が悪い
659641:2015/03/05(木) 18:09:03.90 ID:gcFJJov5
1件もレスが来ないということは恐らくないんだろうな
しゃーない、スクリプト書いてmsdnから生成するか
660デフォルトの名無しさん:2015/03/05(木) 18:31:10.65 ID:a7rJlVmw
>>659
そういうアピールいらないから
661デフォルトの名無しさん:2015/03/05(木) 18:31:37.01 ID:lwDUotw+
真面目にレスしそうになったじゃん
やめろよそういうの
662デフォルトの名無しさん:2015/03/06(金) 00:40:32.17 ID:ci1Iacgw
DialogBoxWで作ったダイアログにPictureControlを一個貼り付けて
32x32 24bitのアイコンを貼り付けると、周囲がギザギザになるんです。
アイコンの絵柄は円形です。その円の縁がギザギザになります。
どうすればスムーズに描けますか?Win7です。
663デフォルトの名無しさん:2015/03/06(金) 01:47:07.71 ID:JmsQNHVX
クリップボード系関数ってめんどくさい構造してんな〜
664デフォルトの名無しさん:2015/03/06(金) 01:48:28.33 ID:dcg9agNJ
VB臭がする
665デフォルトの名無しさん:2015/03/06(金) 02:05:43.30 ID:TPaNSGwi
PictureControlの色とギザギザの色を近くしてごまかす
666デフォルトの名無しさん:2015/03/06(金) 15:27:26.95 ID:/f5vJIs8
>>660
意味不明
アピールって何?
お前の意味不明なレスは迷惑だから書き込まないほうがいいよ
667デフォルトの名無しさん:2015/03/06(金) 15:34:04.06 ID:7hSPkkPD
ダイアログはドットとピクセルが 1:1 じゃないんだっけ
668デフォルトの名無しさん:2015/03/06(金) 16:40:13.01 ID:TPaNSGwi
>>666
>>659がアピールじゃないというなら無駄な独り言と言う事になるが
669デフォルトの名無しさん:2015/03/06(金) 18:09:00.40 ID:/f5vJIs8
>>668
2ch自己解決してるレス全てに言ってこいよ
言ってこなければお前は煽りたいだけのただの荒らしということになるが
670デフォルトの名無しさん:2015/03/06(金) 18:26:56.10 ID:JmsQNHVX
反省しないタイプかよ
671デフォルトの名無しさん:2015/03/06(金) 20:50:27.44 ID:oEtb/vlp
>>669
ほんとに分かってないんだなwww
ヒント >>642
672デフォルトの名無しさん:2015/03/06(金) 21:18:15.26 ID:Utx2vhNJ
片山うぜー
673デフォルトの名無しさん:2015/03/06(金) 21:50:32.27 ID:LSRPy5GR
片山をNGにしてる可能性
674デフォルトの名無しさん:2015/03/06(金) 22:13:38.35 ID:oEtb/vlp
クソコテNGアピールかと思ったら天然だった
675デフォルトの名無しさん:2015/03/06(金) 22:39:00.57 ID:TPaNSGwi
>>669
論点ずらして口調真似るしか思いつかなかったんかな
676デフォルトの名無しさん:2015/03/07(土) 15:54:02.79 ID:axQ1bDXB
サブクラス化というのを勉強中で、他のウインドウの
ウィンドウプロシージャを取得したいのですが、調べたら
(1) GetWindowLongPtr
(2) GetClassLongPtr
で取得出来そうですが、あるいは、
(3) SetWindowLongPtr
でも変更前のウィンドウプロシージャのアドレスが戻り値で得られるようですが、
結局どれを使えばいいのでしょうか?
試したところ取得した値は(1)!=(2)==(3)でした。
なぜ(1)は値が違うのでしょうか?それにも関らず、どのアドレスを使ってもサブクラス化の実験
はうまく行きました。ますます分りません。初心者に簡単に解説お願いします。
677デフォルトの名無しさん:2015/03/07(土) 15:55:36.36 ID:axQ1bDXB
訂正

誤 (1)!=(2)==(3)でした。
正 (1)==(2)!=(3)でした
678デフォルトの名無しさん:2015/03/07(土) 15:56:43.99 ID:axQ1bDXB
訂正
(1)==(3)!=(2) でした。
たびたび間違ってすみません。
679デフォルトの名無しさん:2015/03/07(土) 16:19:19.89 ID:Dpuz2Uog
とりあえず普通の用途ではWindowLongPtrの方を使う
ウィンドウはハンドルごとに動的にプロシージャを書き換えられるけど、
ウィンドウクラスごとの既定のプロシージャの読み書きをするのがClass系だと思う
推測が正しければ、buttonクラスをCreateしたあとにSetClassLongPtrしても既存のボタンは無変化
680デフォルトの名無しさん:2015/03/07(土) 17:45:03.56 ID:Rnf8iriw
動的サブクラス化はSetWindowSubclassの一択。 他はもう忘れろ。
681デフォルトの名無しさん:2015/03/07(土) 18:44:01.73 ID:Dpuz2Uog
ああ、その通りだな。SetWindowSubclassを使ってくれ
682デフォルトの名無しさん:2015/03/07(土) 18:46:41.97 ID:nqIUQWMv
目的が果たせりゃ手段なんてどうでも良いんだよ
683デフォルトの名無しさん:2015/03/07(土) 19:17:49.24 ID:axQ1bDXB
>>679>>680>>681>>682
レスありがとうございます。SetWindowSubclassも試してみましたところ上手く行きました。
いろいろ試しているうちに分らなくなって来たのですが、サブクラス化してMyWndProc()に置き換えたとして、
関数の末尾で
return CallWindowProc(DefWindowProc, hWnd, msg, wp, lp); //(1) SetWindowLongPtrの場合
return DefSubclassProc(hWnd, uMsg, wParam, lParam); //(2) SetWindowSubclassの場合
などどしますよね。
例えば(1)の場合に、DefWindowProcを呼び出していますが、この関数の代わりに、予め
auto WndProcOrg = GetWindowLongPtr(hWnd, GWLP_WNDPROC);
で取得しておいた関数を
return CallWindowProc(WndProcOrg , hWnd, msg, wp, lp); //(3)
としても同じ動きをします。
MyWndProc()の末尾で呼び出すべき関数はDefWindowProcかWndProcOrgのどちらが良いのでしょうか?
SetWindowSubclassの方法でやる場合も同じ疑問があります。良く分りません。
684デフォルトの名無しさん:2015/03/07(土) 19:47:22.98 ID:Dpuz2Uog
サブクラス化が二重に起こる可能性があるならDefじゃない方
685デフォルトの名無しさん:2015/03/07(土) 19:50:34.61 ID:Dpuz2Uog
そのWndProcがサブクラスになりうる(最下層でなくなる)場合と言った方が適切かな
686デフォルトの名無しさん:2015/03/07(土) 19:57:24.30 ID:X8MnyI4n
autoとか久々に見た気がする
687デフォルトの名無しさん:2015/03/07(土) 20:00:36.83 ID:Dpuz2Uog
度々連レスしてすまんがSetWindowSubclassはDefSubclassProcとセットでこれで全部解決する
俺が言ったのはそれ以外の関数によるサブクラス化の話な
688デフォルトの名無しさん:2015/03/07(土) 21:13:31.10 ID:6R+vjf4I
>>686
そのautoは、もう昔のautoじゃないんだぜ。
689デフォルトの名無しさん:2015/03/07(土) 21:18:02.58 ID:axQ1bDXB
>>687
たびたびレスありがとうございます。
結論としては、SetWindowSubclassとDefSubclassProcの組み合わせ
使っておけばどんな場合でもこれでサブクラス化が出来るという
理解で良いですか?>>680さんの言うようにSetWindowLongPtrなど
は一切忘れて良いという理解で。
690デフォルトの名無しさん:2015/03/07(土) 21:19:05.80 ID:Dpuz2Uog
OK
691デフォルトの名無しさん:2015/03/07(土) 21:20:25.52 ID:udrejifJ
型推測のautoもあんま見ないな
メリットがよくわからん
692デフォルトの名無しさん:2015/03/07(土) 21:23:18.10 ID:Dpuz2Uog
しかし、SetWindowSubclassのサポートはXP以降だから「どんな場合でも」ではないな
まぁそこまでの前方互換性は切ることを勧めるけど
693デフォルトの名無しさん:2015/03/07(土) 21:36:32.00 ID:HLCui/DQ
「上位互換」と「下位互換」ですらどっちがどっちか分からなくなるのに「前方互換」とかあるのかよ
もう嫌だ
694デフォルトの名無しさん:2015/03/07(土) 22:22:04.19 ID:k/mf99aT
後方互換と上位互換は簡単だ

後方互換は、時系列で新しく出た製品が、古い製品の機能をカバーしていること
上位互換は、上位の製品が下位の製品の機能をカバーしていること

問題は前方互換と下位互換

前方互換は、多くの説明を見る限り、
新しく出たデータフォーマットなどが古いシステムでも読み込めるなどの場合だな。
これは例えば、既存の古いフォーマットに新しいオプションをつけたフォーマットなどが相当するかと。→ビットマップ構造体など。
旧システムは古いフォーマット部分だけを読み込むので追加されたフォーマット部分の機能は使えないが限定的に読み込むことは可能。
新しい製品が古いデータフォーマットで保存することが出来る、なんてのも前方互換らしいけど。

古い製品で保存→新しい製品で開く ==> 後方互換
新しい製品で保存→古い製品で開く ==> 前方互換

下位互換も前方互換とほぼほぼ似たようなものだろう。

ライト版で保存→プロ版で開く ==> 上位互換
プロ版で保存→ライト版で開く ==> 下位互換

ただし前方・下位互換は一部機能が制限されている場合もあるということだ。
695デフォルトの名無しさん:2015/03/07(土) 22:47:27.43 ID:k/mf99aT
ソフトウェアとOSの関係。
あるソフトウェアがあるOSをターゲットに作られた場合、

古いOSで新しいソフトウェアを動かせる。
新しいOSのAPIを利用して作られている。
既存の(古くからある)API部分は動くが、新規に追加されたAP部分は利用できない。
==> 前方互換

新しいOSで古いソフトウェアが動く。
これは新しいOSのAPIが古いOSのAPIと同じ動きをすること。
もしくは新しいOSとしては不要だが、廃止せずに残していること。
古いAPIで廃止されたものがあると動かない。
MSは互換性維持のため、古いAPIを残している場合がある。
==> 後方互換

>>692は新しいOS(XP以降)のAPIを利用して作ることで
古いOSで動かなくなるということになり前方互換性が無くなる、ということだ。
696デフォルトの名無しさん:2015/03/07(土) 22:51:32.27 ID:ydBH9dlO
互換互換って未来永劫同じコードを使いまわしたいってことかよ
697デフォルトの名無しさん:2015/03/07(土) 22:53:55.38 ID:zjzHBwlq
win32api 自体が‥winFX はどうなった?
698デフォルトの名無しさん:2015/03/07(土) 23:07:46.17 ID:k/mf99aT
>>696
ユーザ的にはそのほうが楽。

けど。
新しいOSが出ても古いソフトウェアを使い続けられると困ります。
新しいソフトウェアが出ても古いOSを使い続けられると困ります。

MSはサポートの終了という形で新しいOSを売り込める。
ソフト屋さんは新しいOS対応という形で新しいソフトを売り込める。
Win-Winやね、Windowsだけにw
699デフォルトの名無しさん:2015/03/07(土) 23:18:41.42 ID:beSd+1t5
>>571
ありがとうございます。
教えてもらった方法も検討してみます。
700デフォルトの名無しさん:2015/03/07(土) 23:33:39.49 ID:axQ1bDXB
その後、またいろいろ試していて、
>>684
>サブクラス化が二重に起こる可能性があるならDefじゃない方
に関して疑問なのですが、これは
SetWindowLongPtrの方式でサブクラス化すると、
MyWndProc->DefWindowProc
のように呼び出すようになりますよね。
それをさらにMyWndProc2でサブクラス化すると、やり方によって、以下の二通りの場合が起こると
いうことでしょうか?
MyWndProc2->DefWindowProc (1) GetWindowLongPtrを使わない場合
MyWndProc2->MyWndProc->DefWindowProc (2) GetWindowLongPtrでやる場合
という理解で良いでしょうか?もしそうなら、同じ事を
SetWindowSubclass & DefSubclassProcの方式でやると、この(1)(2)のどっちになるのでしょうか?
701デフォルトの名無しさん:2015/03/08(日) 01:07:37.32 ID:r6bOUE6y
そもそもサブクラス化に複数のやり方があるってより、SetWindowLongPtrが古くて穴があって非推奨。
それを解決したのがSetWindowSubclass。という話。
これ以上のテストは必要か?
702デフォルトの名無しさん:2015/03/08(日) 07:55:31.45 ID:tlWR3Gzm
>>700
もちろん(2)。そうでないと全部解決なんて言わない

>You do not need to call the default window procedure; this function calls it automatically.
703デフォルトの名無しさん:2015/03/08(日) 09:25:09.97 ID:Zdg2LulN
他ウィンドウのサブクラス化のみならず、
thisをHWNDに結びつけるためだけにSetWindowSubclassを使ってもいい。
これを使うだけでGWLP_USERDATAもATL::CWindowもいらない。
704デフォルトの名無しさん:2015/03/08(日) 15:26:44.09 ID:UaA2rqzA
CComPtr<IStream> strm = SHCreateMemStream(buf, length);
これで参照カウント2になってスコープ抜けても解放されないのって罠すぎじゃない?
705デフォルトの名無しさん:2015/03/08(日) 16:51:33.89 ID:Zdg2LulN
>>704
SHCreateMemStreamは明らかにMSが公開する気がなかったAPIだからしゃーない。
普通ならHRESULTとIStream**で返すはずだしな。
おとなしくAttachしとけ。
706デフォルトの名無しさん:2015/03/08(日) 21:06:15.16 ID:rbSb1MSq
サブクラス化でまだ悪戦苦闘しているのですが、
RemoveWindowSubclassをする場合は、
http://eternalwindows.jp/control/controlbase/controlbase06.html
の例を参考に
case WM_DESTROY:
RemoveWindowSubclass(hWnd, SubclassProc, 1);
PostQuitMessage(0);
return 0;
としたのですが、Debugモードでステップ実行したらPostQuitMessageしたあたりで例外が出てしまいます。
ステップではなくて普通に実行したら問題なく終わります。このサンプルの方法は良くないのでしょうか?
EternalWindowsさんのHPは情報が多くていつも頼りにしているのですが。
707デフォルトの名無しさん:2015/03/08(日) 21:19:59.45 ID:YRhnmZWz
>>706
WM_CLOSEのタイミングでRemoveWindowSubclassやってみて
708デフォルトの名無しさん:2015/03/08(日) 23:27:42.75 ID:r6bOUE6y
え?WM_NCDESTROYじゃないの?
709デフォルトの名無しさん:2015/03/08(日) 23:31:49.82 ID:tlWR3Gzm
WM_CREATEのタイミングでShowWindowとか色々やろうとして失敗するのは誰もが通る道だよな
710デフォルトの名無しさん:2015/03/09(月) 07:37:08.04 ID:ewisVoGf
そもそもこれから破棄されるのにわざわざサブクラス解除する必要はあるのかね?
解除後も生存するならともかく、作法としてはいきすぎな気がする。
711デフォルトの名無しさん:2015/03/09(月) 08:11:50.25 ID:d8cjeDnQ
そもそもこれからプログラム終了するのにわざわざメモリ解放する必要はあるのかね?
712デフォルトの名無しさん:2015/03/09(月) 08:28:20.19 ID:CRFMLrc+
Windowsのメモリ管理はザルだからアプリでちゃんと解放しといた方が安心
713デフォルトの名無しさん:2015/03/09(月) 12:15:56.71 ID:NnzyOe/j
w8.1 の OS レベルのメモリリークは本当にひどい
なんなのこれ
714560:2015/03/09(月) 12:52:48.05 ID:R+XoG9o+
>>713
具体的に書いてみ
715デフォルトの名無しさん:2015/03/09(月) 13:36:07.10 ID:NnzyOe/j
開いてるウィンドウのメニューのプルダウンが全部出て来なくなった
タスクバーで右クリックしても何も出て来なくなった
しばらくしたらタスクバーが消えたので
エクスプローラー全部(シェルになってる分も)再起動したけど
結局右クリックするとまた何も出なくてしばらくするとタスクバーが消える
716デフォルトの名無しさん:2015/03/09(月) 13:53:55.84 ID:JefS5wtF
512MBのメモリでVistaを動かしてたときはよくコンテキストメニューが表示されなくなったわ
717デフォルトの名無しさん:2015/03/09(月) 14:37:13.92 ID:NnzyOe/j
もれも 8GB の w8.1 で目にするとは思わんかった
718デフォルトの名無しさん:2015/03/09(月) 16:45:43.84 ID:rihTBotw
>>709
PostMessageでWM_USERにぶん投げたらどうかな?
こんなのだけど有りかな?
case WM_CREATE:
PostMessage(hWnd,WM_USER,0,0);
break;
case WM_USER:
ShowWindow(hWnd,TRUE);
break;
719デフォルトの名無しさん:2015/03/09(月) 19:18:14.64 ID:JefS5wtF
>>718
switch文で完結する野暮用ならそれも有りだな
720デフォルトの名無しさん:2015/03/10(火) 00:42:10.77 ID:DI4sqVG3
タスクバンド関連の基礎で質問。

http://eternalwindows.jp/shell/shellex/code/shellex13.html
のページでは、タスクバンドに文字列を出すという例があるのだけれども、
文字列ではなく、画像を出したいのだけれども、
どうもどうやっても上手くいかない。

case WM_PAINT:
の中や、WM_CREATE, WM_DESTROY等を加えて、
「通常のフォーム系のウィンドウ」と同じような記述をしても、
全く描画がされないのだけれども、なぜでしょう。
デスクバンドならでわの何か制限があります?

こうすれば画像が出るよ! という例があればありがたいです。
画像ボタンでもOKです。
721デフォルトの名無しさん:2015/03/10(火) 07:33:50.59 ID:AEOJo20z
>>710
http://blogs.msdn.com/b/oldnewthing/archive/2003/11/11/55653.aspx
> you must remove your window subclass before the window being subclassed is destroyed.
722デフォルトの名無しさん:2015/03/10(火) 22:16:22.19 ID:NHsqpG/8
ちょっと教えてください。

DrawTextでテキストを描画するんですが、
ピッタリ収まる領域の高さ、というか
行数を事前に知る方法はありますか?
723722:2015/03/11(水) 00:10:01.29 ID:1/cfAzG2
ちゃんと読んでませんでした。
DT_CALCRECTですね。
724デフォルトの名無しさん:2015/03/11(水) 04:18:31.79 ID:1djAj2bo
DT軽くレクチャー
725デフォルトの名無しさん:2015/03/11(水) 08:20:38.38 ID:xaw482vH
山田君、 ID:1djAj2boの家の座布団全部持って行きなさい
726デフォルトの名無しさん:2015/03/11(水) 13:11:39.34 ID:9dJwmqGq
ボタンをクリックしてもそのウィンドウがアクティブにならないようにしたくて、
サブクラス化してWM_MOUSEACTIVEの戻り値をMA_NOACTIVATEに指定してみたんですが変わりありませんでした
ボタンの配置されているウィンドウでも同じことをしていますがこっちは上手くいきました
たぶん望みの挙動は.NETでいうところのControlStyles.Selectable==falseだと思うのですが、
Win32APIではどのように実装するんですか?
727デフォルトの名無しさん:2015/03/11(水) 14:01:09.26 ID:XNQDoSm9
ワシが仮想キーボード作ったときは、WM_MOUSEACTIVEでMA_NOACTIVATEANDEATを返したが。
728デフォルトの名無しさん:2015/03/11(水) 14:13:30.36 ID:9dJwmqGq
>>727
MA_NOACTIVATEANDEATも試したんですが、アクティブにはならないもののプッシュもできなくなるんですよね
マウスホバーのアニメーション以外は何も起こらない感じです
729デフォルトの名無しさん:2015/03/11(水) 14:30:44.32 ID:XNQDoSm9
ああ、そうだよ。
WM_MOUSEACTIVEではWindowFromPointで実際にどのボタンが押されたのかを調べ、
ボタンを凹ませる処理から自分でする。
リピートとか全て自分で実装。
730デフォルトの名無しさん:2015/03/11(水) 14:40:21.75 ID:9dJwmqGq
>>729
なるほど、そこからやればいいんですね
BM_SETSTATEで凹凸が表現できました。これならできそうです
ありがとうございました
731デフォルトの名無しさん:2015/03/11(水) 17:38:18.33 ID:1/cfAzG2
APIのMouse Wheelイベントを捕らえて
ゆっくり回したときはヌルヌル、
速く回したときはサクッとスクロールして
惰性でさらにスクロールする
スマホアプリみたいな挙動を実現できます?

そもそもDeltaって何?
732デフォルトの名無しさん:2015/03/11(水) 17:43:25.19 ID:8MeoENMQ
OK
733デフォルトの名無しさん:2015/03/11(水) 18:50:40.12 ID:B0uxeYZf
そういう風なコードを書いてあげればそういう風になる。
734デフォルトの名無しさん:2015/03/11(水) 19:31:02.76 ID:GG+mbF6g
>>731
できようができまいがお前には関係ないだろ

馬鹿にはどのみち無理
735デフォルトの名無しさん:2015/03/11(水) 19:34:10.40 ID:GG+mbF6g
>>731みたいなゴミカスが実装したところで
今度は滑らかにスクロールしないと言い出して
ここでまたゴミみたいな質問を投下するのは目に見えてる
迷惑
できないと言っておくのがゴミの>>731にとっても回答者にとって幸せ
736片山博文MZ ◆T6xkBnTXz7B0 :2015/03/11(水) 19:54:17.43 ID:cFDo18bs
WM_MOUSEWHEELで出来る。
deltaは差分(difference)を表すギリシャ文字。
737デフォルトの名無しさん:2015/03/11(水) 20:34:11.90 ID:1/cfAzG2
>>736
ありがとう。

調べたところ、hParamをWHEEL_DELTA(120)で割ると
回転速度が分かるという記述もあったんですが、
試した結果、本当にそうかなと思ったもんで...

実は先週末から思い立って自分専用の2chブラウザを作ってて
(datではなく)htmlからの読み込みや投稿の部分の実装は終わったんですが
再整形したhtmlをWebBrowserで表示してたものの、これがメモリ喰いで
自前の描画エンジンを作ろうとしてるところです
738片山博文MZ ◆T6xkBnTXz7B0 :2015/03/11(水) 20:39:10.04 ID:cFDo18bs
>>737
「Win32 自作コントロール」で検索。
APIを使わない2ちゃんねるスクレイピングは
違法になったのでは?
739デフォルトの名無しさん
>>738
違法ではない、勝手にやるぶんには問題ない