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

Win32API質問箱 Build120©5ch.io

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん 転載ダメ©2ch.net2015/04/09(木) 18:16:02.24ID:Rhj0QTuK
Win32APIについての質問はこちらへどうぞ。

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

■過去スレ
Win32API質問箱 Build118
http://peace.2ch.net/test/read.cgi/tech/1407006123/
Win32API質問箱 Build11 (119らしい)
http://peace.2ch.net/test/read.cgi/tech/1418181169/
0002デフォルトの名無しさん2015/04/09(木) 18:16:46.84ID:Rhj0QTuK
スレの立て方すっかり忘れてたわ
0003デフォルトの名無しさん2015/04/09(木) 18:30:18.88ID:V62mLZFy
MessageBox(NULL, ">>1 乙", "Win32API質問箱", MB_OK);
0004デフォルトの名無しさん2015/04/09(木) 22:23:50.28ID:rJtjnWq0
SetRect(NULL,1,2,3,4);
0005デフォルトの名無しさん2015/04/10(金) 00:25:10.63ID:hFniQxda
OSシャットダウンを中断させる方法を教えて下さい。
WindowsXP
0006デフォルトの名無しさん2015/04/10(金) 00:31:07.08ID:JpfDZLA2
スタート->終了オプション->キャンセル
0007デフォルトの名無しさん2015/04/10(金) 01:48:29.89ID:jthFc112
WM_QUERYENDSESSIONでぐぐる
0008デフォルトの名無しさん2015/04/10(金) 09:16:30.09ID:V6osEzlj
あらかじめ起動してるアプリから待ったをかけるのか
それともタスクバーなりデスクトップなりからツールを立ち上げるつもりなのか
0009デフォルトの名無しさん2015/04/10(金) 17:49:05.02ID:TAiFPTdh
前スレでヒントくれた二人ありがとうございました。おかげて自分で直せました
でも・・コンパイルできませんよ??
わたしが直したところが悪かったのかなって思って、
前すれ>>969でコテの人が書いてくれたコードをそのまま直さないでコンパイルしてもfatal errorって。
どういうことですか><
0010デフォルトの名無しさん2015/04/10(金) 17:51:02.10ID:sPfz1KCP
>>9
死ね
0011デフォルトの名無しさん2015/04/10(金) 20:10:23.65ID:AgT+3q87
>>9
条件1 アドレス1 xx & アドレス2 yyならLeftDownでyyをzzに
条件2 アドレス1 xx以外 or アドレス2 zz以外になったらLeftUp
なのか
条件1から条件2になるまでLeftDownのままなのか
その他なのか整理してレスしてみ
0012デフォルトの名無しさん2015/04/10(金) 23:10:56.92ID:tcwpax/F
explorerでフォルダを開く(変更する)イベントをキャッチして、
場合によっては正規処理をキャンセルして独自処理を実行させたいです。

ひと通りフック系は調べてみたのですが、該当するものが見つけられず。。。
(shellexecutehooksだとexplorerからフォルダを開く際に拾えなかったです)

何か方法ありましたら教えていただきたく。
0013デフォルトの名無しさん2015/04/10(金) 23:26:32.09ID:TAiFPTdh
>>11
ありがとうございます。でも、どうにか自分で出来ました。
コンパイルが通らなかったのはコードの最後の中括弧を見落としてコピーし忘れていたからでした。
>>10
ごめんなさい。これで最後にするので許してください><

答えてくれた人達ありがとうございました。特にコテの人。
もし、また来る事があったらよろしくです。
0014デフォルトの名無しさん2015/04/10(金) 23:31:40.76ID:UXaEjvcw
超初心者質問で申し訳ありません
MSDNで.NET Framework クラス ライブラリは日本語でも資料が充実していて
サンプルソース(といっても全体ではないですが)も載っていますが、
WinSDKに関しては例えば調べたい関数の詳細については載っていても
探し方が悪いのかサンプルソースが見当たらず...
やはり書籍などを購入するのが良いのでしょうか?
0015デフォルトの名無しさん2015/04/10(金) 23:33:54.86ID:WBKzV1HP
>>12
俺も知りたいです。

https://support.microsoft.com/ja-jp/kb/310749
>再解析ポイント: プログラムは、ファイル システム内のオブジェクトに対するオープン操作をトラップし、
>ファイル データを返す前に独自のコードを実行します。データの読み取りし、を別のボリュームまたは
>物理フォルダーからの書き込みをリダイレクトすることができます、マウント ポイントなどのファイル システムの
>機能を拡張するこの機能を使用することができますディスクです。
0016デフォルトの名無しさん2015/04/10(金) 23:36:11.49ID:WBKzV1HP
>>14
猫のサイトとかWisdomSoftとかあるだろ。
グーグルで検索すればすぐ見つかるのに、何故それをしない。
0017デフォルトの名無しさん2015/04/10(金) 23:41:12.31ID:UXaEjvcw
>>16
一応既に猫のサイトは一通り勉強させてもらいました
(ちなみに猫でもわかるwindowsプログラミングは全部写経したんですが笑)が
肝心のMSDNでサンプルソースを探そうとしても
.NETのほうは実際に動くソースが載っているのにWinSDKのほうは
探し方が悪いのかサンプルがなかなか見つからないんですが...(何故
0018デフォルトの名無しさん2015/04/11(土) 00:10:08.75ID:j7Y/pu4p
>>12
それはAPIからの方向じゃなくて
エクスプローラの機能拡張でどこまでやれるかという話じゃないの

それともイベントを受ける側は別のアプリなのかしら
0019デフォルトの名無しさん2015/04/11(土) 00:12:40.07ID:j7Y/pu4p
>>14
MSDN の外の野良解説を探せばたくさん出てくる
ちなみにMSDNの方の日本語訳はかなりひどいので英語版で確認すべき
0020デフォルトの名無しさん2015/04/11(土) 00:22:34.50ID:dDVvge2W
>>19
ということはMSDNにWinSDKの方のサンプルがあまり載ってないのは
仕様ということなのでしょうか
確かにMSDN外の野良解説はたくさんありますし詳しいですよね
やはり調べたい情報が欲しい場合はWinAPI関連の書籍を購入するのが
一番良い方法でしょうかね。
0021122015/04/11(土) 00:24:33.46ID:rd1rB1JO
>>18
元々は別アプリでイベントを監視できるかと考えていたのですが、
方法がなくエクスプローラーの機能拡張の方向でも調査しておりました。

結果的に挙動を実現できればどちらでも問題はなかったのですが、
何分手詰まり感があり参っております。
(所謂ファイラーなどはフォルダに関連付けて自アプリを開いたりしているので、
実現は可能だと思ってはいるのですが。。)
0022デフォルトの名無しさん2015/04/11(土) 00:28:13.50ID:LbK5Z9ys
WinSDKのサンプルってこれと違うの?

C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples
0023デフォルトの名無しさん2015/04/11(土) 01:16:34.56ID:yiXu9fzw
>>20
>>1 > APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう
とあるが実際には読まなくてもそこらへんのHP色々見て断片的な情報を自分なりに繋げれば本無くても実現は出来る
0024デフォルトの名無しさん2015/04/11(土) 02:51:15.30ID:j7Y/pu4p
なんでやねん
通して体系的に理解するなら書籍がいいけど
やりたいことが具体的にわかってるならネットで検索するのが早い

ただし blog の落書きに近い奴は前提が噛み合わなかったりするからそこはきちんと確認
0025デフォルトの名無しさん2015/04/11(土) 07:13:27.27ID:6QBeTfwQ
>>21
自分で言ってる通り
フォルダーウィンドウ内でフォルダアイコンをダブルクリックorEnterキー押下した場合は
関連付けが発動するだけだわ

独自関連づけをデフォルトにしておいて
自分で処理しないときはIShellBrowserなりIExplorerBrowserなりICommDlgBrowserなりに開かせる

もしくは泥臭い方法だけどキーとマウスにフックしかけちゃう方向もある

QTTabBarとかがそんな処理してそう
0026デフォルトの名無しさん2015/04/11(土) 10:04:13.49ID:ijD8XqjA
>>12
IExecuteCommandを実装したCOMを作ってシステムに登録して
HKEY_CURRENT_USER\Software\Classes\Folder\shell\open\command
のDelegateExecuteにさっき作ったCOMのGUIDを登録する
フォルダを開こうとするとIExecuteCommand::Executeが呼ばれるので好きにする
0027デフォルトの名無しさん2015/04/11(土) 10:19:13.12ID:dDVvge2W
ありがとうございます
ぼちぼち頑張ってみます
0028デフォルトの名無しさん2015/04/12(日) 02:47:00.25ID:sQ6L0dTF
失礼。STATICコントロールをCreateWindowでつくる際なんだが、
SS_BLACKRECTって効いてなくないか?
vs2010expressのwin32プロジェクトで出て来るWinProc関数んとこに
case WM_CREATE:
hStatic = CreateWindow(
TEXT("STATIC"), NULL ,
WS_CHILD | WS_VISIBLE | SS_BLACKFRAME |SS_BLACKRECT ,
0,200, 200, 200,
hWnd, (HMENU)3,
((LPCREATESTRUCT)(lParam))->hInstance , NULL
);
とやっても黒枠は出るが塗りつぶしがされないのだ。
教えてくん。
0029デフォルトの名無しさん2015/04/12(日) 12:20:53.11ID:SDNlNHK7
教えて君はNG
0030Office & Gamers ◆G144Hzgh2.0e 2015/04/12(日) 12:23:36.12ID:kx9iDNgY
汚いプログラム(笑)
0031デフォルトの名無しさん2015/04/12(日) 12:49:27.67ID:y8PA+brm
http://www7b.biglobe.ne.jp/~makandat/jurapun/Tutorial/VC/Group4/Static.htm
このページではちゃんと表示されているみたいだけど。
SS_BLACKFRAMEとは一緒に指定できないんじゃね?
それぐらい試したよね?
0032282015/04/12(日) 17:33:06.50ID:sQ6L0dTF
むー、てことはみなの環境ではちゃんと黒くなるのか。
もっといろいろ試してみまふ。
>>30
プログラム板なんて五年ぶりくらいなんでインデントが消えることも忘れてたすまん。
コード自体はどっかの入門サイトのコピペなんであたしゃしらん。
>>31
SS_BLACKFRAMEをつけてるのはSS_BLACKRECTもちゃんと黒のはずってことを示すためでした。

教えてくんでゴメンネ
0033デフォルトの名無しさん2015/04/12(日) 20:49:44.98ID:2B83nDoZ
#define SS_BLACKRECT 0x00000004L
#define SS_BLACKFRAME 0x00000007L
0034デフォルトの名無しさん2015/04/12(日) 22:13:22.82ID:8ClUnIS/
>>32
後々他の色もできるように

WM_CREATE: hbrush = CreateSolidBrush(color);

WM_CTLCOLORSTATIC:
if((HWND)lParam == hwnd) {
return hbrush;
}

WM_DESTROY: DeleteObject(hbrush);

の方がいい気がする
0035デフォルトの名無しさん2015/04/12(日) 23:52:09.97ID:y8PA+brm
いやなんか、SS_BLACKRECTでいろんな色に出来る風なこと書いてあったような。
0036教えて君2015/04/14(火) 08:02:18.57ID:XDZ3Jlf4
borland C++ 5.5.1を使って小さなwinアプリを作っている者ですが、
タスクバーアイコン(16x16)の表示がオカシくて困っています。

・使用OSはwindows8
・コンパイル直後1回だけは正しくタスクバーアイコンは表示される。
・その後exeを立ち上げるとアイコンが全然別のものが表示される。
・WNDCLASSEXのhIconSmやLoadImageを試してみたが改善されず。
・brc32をやめbrcc32にしresファイルをilink32してみたが改善されず。
・windows8の.dbキャッシュを削除したりブートで起動したりしたが改善されず。
・.dbキャッシュは空で作成したり読み取り専用や隠しファイルにしたが改善されず。
・MAKEINTRESOURCEやLR_DEFAULTCOLORやIMAGE_ICONを設定してみたが改善されず。

困っています。windows8の問題なのかbcc5.5.1の問題なのか解る方。
或はこのような質問と解答のあるスレ、サイトを知っている方教えて下さい。
0037アイコンキャッシュ 化ける win32api(教えて君)2015/04/14(火) 08:28:46.97ID:XDZ3Jlf4
自己解決しました。
MAKEINTRESOURCEをやめ、w.hIcon=LoadIcon(i,"ICO");でちゃんと表示されるようになりました。
0038:アイコンキャッシュ 化ける win32api(教えて君)2015/04/14(火) 08:40:36.11ID:XDZ3Jlf4
やっぱりだめですね…上の表記だとウィンドウのアイコンが表示されなくなります。
0039デフォルトの名無しさん2015/04/14(火) 09:41:47.32ID:85cAVwi8
>・WNDCLASSEXのhIconSmやLoadImageを試してみたが改善されず。

hIconにLoadIconすればいいんじゃないの
0040デフォルトの名無しさん2015/04/14(火) 09:45:05.20ID:85cAVwi8
ああ、それがダメで試行錯誤してるのか?

SetClassLong(hWnd, GCL_HICON, (LONG)LoadIcon(hInst, MAKEINTRESOURCE(IDI_Ico)));

これでもダメなら、リソースに入ってないかリソースIDが何かと重複してると思う。
0041教えて君2015/04/14(火) 10:19:18.90ID:XDZ3Jlf4
早速の解答ありがとうございます。SetClassLongだめですねぇ変化ありません。
windows8のアイコンキャッシュがおかしいんだと思います
0042教えて君2015/04/14(火) 10:21:20.90ID:XDZ3Jlf4
リソースIDも"ICO"から"ICO0"にしてみましたがだめでした
0043デフォルトの名無しさん2015/04/14(火) 10:26:59.03ID:58Lr8u5B
なんで自分のクソプログラムを棚に上げてOSを疑うのか?
他の何百何千というプログラムは正常に表示できている状況で
そう考える事ができるというのは驚きである。
0044教えて君2015/04/14(火) 10:27:17.93ID:XDZ3Jlf4
ちなみに同じリソースファイルから全く別の.bmp画像は読み込めてます。
0045デフォルトの名無しさん2015/04/14(火) 10:27:19.64ID:FfurPzHR
      ,一-、
     / ̄ l |   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ■■-っ < んなーこたーない
    ´∀`/    \__________
   __/|Y/\.
 Ё|__ | /  |
     | У..  |
0046教えて君2015/04/14(火) 10:29:22.03ID:XDZ3Jlf4
>>43全くその通りです。ググってみましたが中々解決に至っていません。
ちなみに他のアプリは正常に表示されています。
0047教えて君2015/04/14(火) 10:31:05.87ID:XDZ3Jlf4
>>43見当付きますでしょうか?
0048デフォルトの名無しさん2015/04/14(火) 10:33:30.22ID:jz1OLtV7
>>36
vs2013使ったら?条件付で無料じゃなかったかな?
0049デフォルトの名無しさん2015/04/14(火) 10:49:59.76ID:85cAVwi8
>>42
なんかちゃう。定義の方を見て。

#define ICO_xxx 100

とかなってるはずだが、数字部分が他の定義と被ってるかもって書いた。

でもまあ、単にリソースがリンクされてないだけだと思うけど。
0050教えて君2015/04/14(火) 11:11:54.58ID:XDZ3Jlf4
>>48良いですよねvs2013小さいexeが作りたいんですよ。2013はoption98とか設定できなくて
サイズ最適化がわかんないんですよね。MinGWもgcc入れて専用のコマンドプロンプトみたいなのでパス設定とか
わけがわからくて使ってないんですよね。(連続投稿に引っ掛かってしまいました)

>>49 数字も1008にしてみましたがだめでした。

ちなみにLoadImageのLR_DEFAULTSIZE| LR_SHAREDもだめでした。
0051デフォルトの名無しさん2015/04/14(火) 11:17:53.68ID:85cAVwi8
そのexeをResEditなりで開いて、ちゃんとリソースが存在するか見てみたら。
あとはそのアイコンがそもそも、アイコンなのかどうか。アイコンとしての条件を満たしてるかどうか。
0052教えて君2015/04/14(火) 11:22:11.60ID:XDZ3Jlf4
>>51ResEditでexeを開いてみました…アイコンありますねぇ「Icon>18[日本語(日本)]」32x32と
16x16がちゃんと入ってます。
0053アイコンキャッシュ 化ける win32api(教えて君)解決!2015/04/14(火) 11:27:05.03ID:XDZ3Jlf4
>>51 解決しました!お騒がせしました!的確なアドバイスありがとございます。

モノクロbmpでアイコンを作っていましたが、24bit bmpでアイコンを作り直すと
各箇所に正しく表示されました。
0054デフォルトの名無しさん2015/04/14(火) 20:57:08.74ID:y/I7sbAh
余談だけど、ResEditは入れるとき気をつけた方が良いようですね。

ResEdit危険インストーラから同意ボタンで広告表示アドウェア感染被害?
http://blogs.yahoo.co.jp/fireflyframer/33222019.html
0055デフォルトの名無しさん2015/04/14(火) 21:43:13.39ID:IRWLYaw5
>>54
ResEditはもう完全に悪意のあるソフトウェアだよ
VSが無料になった今RedEditの必要性は皆無
0056デフォルトの名無しさん2015/04/14(火) 21:58:42.50ID:8TR3GPc6
Windowsエラー「問題が発生したため、(アプリ名)を終了します。」が発生したことを、他のアプリよりリアルタイムに検出する手段はありますか?

また、そのエラーメッセージを、他のアプリより閉じる手段は、どのようなものがありますか?winndowを列挙してSendKeyするしかないのでしょうか?
0057デフォルトの名無しさん2015/04/14(火) 22:04:06.57ID:4FPwD7PA
>>54
ttp://peace.2ch.net/test/read.cgi/tech/1418181169/261
> 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という指摘は勘違いや思い込みに過ぎない
0058デフォルトの名無しさん2015/04/14(火) 22:26:05.39ID:IRWLYaw5
> ・インストール先を指定できずルートにインストールされる
もうこの時点でインストーラとしての体をなしていない。マルウェア
0059デフォルトの名無しさん2015/04/15(水) 19:38:08.96ID:jr652CyU
VCで指定されたキー(左クリック)の離された瞬間を検出して、
printf("左クリックを離さないでください\n")と表示させたいんですが
どうすればできますか><?
0060デフォルトの名無しさん2015/04/15(水) 20:00:09.63ID:rSJ1Mqrv
そもそもクリックとは「押して離す」動作
つまり離さないのはクリックとは呼ばない
0061デフォルトの名無しさん2015/04/15(水) 20:08:55.02ID:OBp2TzOF
GetAsyncKeyState(); かな
0062デフォルトの名無しさん2015/04/15(水) 20:33:46.75ID:YYpYNbny
WM_LBUTTONUP?
0063デフォルトの名無しさん2015/04/15(水) 21:02:00.70ID:e7criVwj
>>59
クライアント領域限定か
+ ウィンドウ領域含むか
+ 領域外も含むか
どれだ?
0064デフォルトの名無しさん2015/04/15(水) 21:04:56.43ID:jr652CyU
>>60
じゃあ訂正して、マウスの左ボタンを押下 って言うことにします!
>>61
GetAsyncKeyStateでどうやるんですか??
キーが押されてるか、押されてないかを検出できても
離された瞬間って検出できないですよね?
0065デフォルトの名無しさん2015/04/15(水) 21:13:51.39ID:jr652CyU
>>63
対象とするプログラム上で、マウスの左ボタンが離された瞬間を検出したいので、
たぶん、クライアント領域です。?
0066デフォルトの名無しさん2015/04/15(水) 21:19:37.85ID:e7criVwj
>>65
>>62
0067デフォルトの名無しさん2015/04/15(水) 22:08:38.93ID:pxhrK6tL
>>64
WM_LBUTTONUP:は簡単に実装するなら正解
GetAsyncKeyStateでもできるが?GetForegroundWindowとか組み合わせがいるかもな。
押したときにフラグ立てて、離されたときにフラグが立ってるか見て判断すればよかろうint bLeft=0;
void OnTimer(){
if(GetForegroundWindow() == hMyWnd) // 自分のウインドと判別
if(GetAsyncKeyState(VK_LBUTTON)) bLeft=1; else if(bLeft){
bLeft=0;
// 離された直後の処理(クリックと一緒)
}}
0068デフォルトの名無しさん2015/04/15(水) 22:11:36.84ID:jr652CyU
>>66
WM_LBUTTONUP ってだけ言われても意味がわかんないです。

if (GetAsyncKeyState (WM_LBUTTONUP)){
printf("左クリックを離さないでください\n");

動かないじゃないですか><
0069デフォルトの名無しさん2015/04/15(水) 22:36:15.69ID:jr652CyU
>>67のサンプルで試しにコンパイルしたら、
error C2601: 'OnTimer' : ローカル関数の定義が正しくありません。
error C2065: 'hMyWnd' : 定義されていない識別子です。
error C2065: 'bLeft' : 定義されていない識別子です。
error C2065: 'bLeft' : 定義されていない識別子です。
C2065: 'bLeft' : 定義されていない識別子です。

何をすればいいですか?
0070片山博文MZ ◆T6xkBnTXz7B0 2015/04/15(水) 22:57:12.19ID:Be/6smJn
>>69
C言語とWin32APIの基礎がなっていない。「イベント駆動」と「ウィンドウプロシージャーの書き方」を勉強する必要がある。
WM_で始まる定数はウィンドウメッセージであり、ウィンドウプロシージャーで処理する。
0071デフォルトの名無しさん2015/04/15(水) 22:57:29.11ID:MncDCMB0
あ
0072デフォルトの名無しさん2015/04/15(水) 23:02:46.06ID:Q1p7nIrk
ユーザーの動きを監視したいわけだからまずはWebカメラとかから映像が取得できないと無理だな
0073デフォルトの名無しさん2015/04/15(水) 23:23:12.58ID:e7criVwj
>>68
メイン関数はmainかWinMainかどっち?
0074デフォルトの名無しさん2015/04/15(水) 23:40:48.45ID:YYpYNbny
>>69
こんな感じ。
http://codepad.org/Zk27gysv
0075デフォルトの名無しさん2015/04/16(木) 00:01:32.25ID:niirhvYM
>>94
Upがどこにも表示されません><
ってくるぞw
0076Office & Gamers ◆G144Hzgh2.0e 2015/04/16(木) 01:15:58.27ID:sQiZAhF+
>>70
んじゃついでにマルチスレッドの書き方についても論じてくれw
0077デフォルトの名無しさん2015/04/16(木) 01:46:02.12ID:r89rtGYR
>>70
前スレで書いてくれたコードあるじゃないですか?
それに>>67のLEFTUP検出を追加しようとしてるんですが>>69が出てできないんです。
プロシー?を覚えれば解決するんでしょうか? がんばります。
だけど、まだC入門書のIF文やってるところですけど・・
>>73
int mainです。
>>74
複雑すぎて何してるのかよく分かりません><
>>67みたいな感じでGetAsyncKeyState使ってシンプルにしたいです
0078デフォルトの名無しさん2015/04/16(木) 02:06:00.46ID:1cAUYc2L
Win32API以外の話は他でしろ
0079672015/04/16(木) 04:55:33.87ID:xHp1mspF
C言語とWindowsの基本の勉強不足ですねぇ。猫でもわかる系のサイトでもいって基本を学習したほうがいいかも
#include <windows.h>
int main(int argc, char * argv[]){
bool bLeft=0;HWND hMyWnd =GetForegroundWindow();
while(1){if( hMyWnd == GetForegroundWindow()){
if(GetAsyncKeyState(VK_RBUTTON)) break; // マウス右ボタンを押したら停止
if(GetAsyncKeyState(VK_LBUTTON)) bLeft=1;else if(bLeft){bLeft=0;
printf("左クリックを離さないでください\n");
}}Sleep(30);}return 0;}
0080Office & Gamers ◆G144Hzgh2.0e 2015/04/16(木) 06:30:00.49ID:sQiZAhF+
>>79
while( hMyWnd == GetForegroundWindow())でいいんじゃないの?w

while(1)がムダw
0081デフォルトの名無しさん2015/04/16(木) 06:43:05.17ID:niirhvYM
>>80
そんなネタ投下して楽しい?
0082Office & Gamers ◆G144Hzgh2.0e 2015/04/16(木) 06:53:11.05ID:sQiZAhF+
こういう感じか…w”

#include "stdafx.h"
#include <windows.h>

int main(int argc, char * argv[])
{
    bool bLeft=0;
    HWND hMyWnd =GetForegroundWindow();
    while( (hMyWnd == GetForegroundWindow()) && !GetAsyncKeyState(VK_RBUTTON))
    {
        if(GetAsyncKeyState(VK_LBUTTON))
            bLeft=1;
        else
            if(bLeft)
            {
                bLeft=0;
                printf("左クリックを離さないでください\n");
            }
        Sleep(30);
    }
    return 0;
}
0083Office & Gamers ◆G144Hzgh2.0e 2015/04/16(木) 06:59:10.65ID:sQiZAhF+
while() {} sleep();でもいいかw

プログラムが汚いとダメw

プログラムが汚いとダメw

プログラムが汚いとダメw

プログラムが汚いとダメw

プログラムが汚いとダメw
0084デフォルトの名無しさん2015/04/16(木) 07:00:02.73ID:niirhvYM
なんだネタか
0085Office & Gamers ◆G144Hzgh2.0e 2015/04/16(木) 07:01:19.02ID:sQiZAhF+
while(1)がムダw
0086デフォルトの名無しさん2015/04/16(木) 07:35:59.21ID:GQj/zmtf
五度刺しても誰も介錯してくれないとか哀れすぎる
0087672015/04/16(木) 07:41:32.80ID:xHp1mspF
>>85
初心者が読みやすいように、あえてwhile(1)のループにして、必要な処理は、if文で分岐するんだぜ!
と理解しやすく例題つくってみたんだが、式で省略して複雑にしてどーするww
69の質問する人の理解力で、while内で&&や、!とか書かれても混乱するだけじゃね?
switch(msg){case WM_LBUTTONUP:}が分かりませんだぞ?
0088Office & Gamers ◆G144Hzgh2.0e 2015/04/16(木) 08:23:26.48ID:sQiZAhF+
>>87
それなら

loop:
goto loop;

の方が見やすいだろw
0089デフォルトの名無しさん2015/04/16(木) 08:24:58.79ID:kE101whD
>>88
(笑)
0090Office & Gamers ◆G144Hzgh2.0e 2015/04/16(木) 08:43:08.53ID:sQiZAhF+
while(1)なんてのはプログラミング作法として逝ってる証拠w
0091デフォルトの名無しさん2015/04/16(木) 12:32:20.77ID:6zGepQEU
while(1) だと警告されるので for( ; ; ) ってやる
0092デフォルトの名無しさん2015/04/16(木) 16:47:32.48ID:tXtzH4xO
while(1) を憎んでいるようだが何かあったのか
while(1) と書いているプログラマにいじめられたのか

Cのプログラマってなんか文系タイプが多いよな
なんかのアンチにすぐになるという
だれそれのやっている何かが憎いから新しく何かをやるという感じの奴

プログラミングをやっても結局頭が良くならないんだろうな
普通プログラミングを継続するとだんだん理系思考になってそういうのが冷めてくるはずだが
0093デフォルトの名無しさん2015/04/16(木) 16:54:10.38ID:r89rtGYR
>>79
勉強不足なのは分かってます。。追々学んでいきますが、
今作ってるのだけはすぐ完成させないと不味いんです。
元ソースの原型は前すれ>>969のやつです。
このソースの文末に>>79さんに教えてもらったGetAsyncKeyStateのサンプルを
くっつけたんですがコンパイルエラーいっぱい出ます><
Sleep(30);}return 0;} を消したらエラー無くなったですけど
プログラムがヘンになりました・・。

これが終わったら本格的に勉強して、
初歩的な事聞かなくても大丈夫にするので、
今回だけお願いします。助けてください><
0094Office & Gamers ◆G144Hzgh2.0e 2015/04/16(木) 17:04:28.31ID:djFvfTCc
つ イベント処理w
0095Office & Gamers ◆G144Hzgh2.0e 2015/04/16(木) 17:05:48.79ID:djFvfTCc
C/++使う前にJavaScriptとかBASICとかやり直した方がよくね?w
0096Office & Gamers ◆G144Hzgh2.0e 2015/04/16(木) 17:11:09.35ID:djFvfTCc
なんかこう、8bit系のオヤジがムリしちゃってよォ〜w、みたいな感じするよなw
0097デフォルトの名無しさん2015/04/16(木) 17:11:52.61ID:ktYqo1R5
前スレでチートツール作ってたクズか
0098Office & Gamers ◆G144Hzgh2.0e 2015/04/16(木) 17:12:29.59ID:djFvfTCc
>>92
フツーにgoto文付ければいいんだよ♪(アハ♪”
0099デフォルトの名無しさん2015/04/16(木) 17:34:45.27ID:DUQ4ImO1
ウィンドウハンドルからそのウィンドウが落ちてるかどうか判断できる?
応答無しのソフトのウィンドウハンドルからGetWindowRectとかしても普通にOKが返るので
何かそういうの判別するAPIないですかね
0100デフォルトの名無しさん2015/04/16(木) 17:41:28.20ID:YCHaL8K8
>>99
まず「落ちてる」って何?
どういう状況を指しているの?

>応答無しのソフトのウィンドウハンドルからGetWindowRectとかしても普通にOKが返るので
そりゃ応答無しってのはメッセージキューの処理がなんらかの理由で止まってしまっているから起こる。
だからメッセージキューとは無関係に処理されるものは当然応答がある。
0101デフォルトの名無しさん2015/04/16(木) 17:55:22.50ID:GQj/zmtf
適当なメッセージをpostしてメッセージキューを除けばいい
0102デフォルトの名無しさん2015/04/16(木) 17:55:31.72ID:DUQ4ImO1
>>100
知らないならレスしないで下さい。ウザいだけです。
0103デフォルトの名無しさん2015/04/16(木) 18:14:53.68ID:VRneRw3s
MSさまがご自身のヘッダファイルに #define TRUE 1 と定義なされたのだから while(TRUE) だろこのスレ的に
0104片山博文MZ ◆T6xkBnTXz7B0 2015/04/16(木) 18:16:42.45ID:euCOAHsL
>>99
IsWindow
0105デフォルトの名無しさん2015/04/16(木) 18:58:43.65ID:Wbz2Z132
フォントを作るのに、アンチエイリアスが効いたほうが良いので、
Meiryoを使っていますが、英語圏のWindowsでは、どうなりますか?
Meiryoが入っているんですか?それとも他のフォントに置き換えられるんですか?
もし、置き換わるのでしたら、何に置き換わりますか?
その置き換わったフォントは、アンチエイリアスが効いていますか?
そもそも、置き換わるのでしたら、その置き換わり先のフォント名を元から指定しておけば、
日本語の場合はMeiryoに置き換わって日本語も綺麗に表示されたりしますかね。
どうなんですか?
0106デフォルトの名無しさん2015/04/16(木) 21:22:35.75ID:niirhvYM
>>93
いま自分が書いてるソースをここにでも上げてみて
ttps://ideone.com/
0107672015/04/16(木) 23:21:43.69ID:xHp1mspF
前スレの969のコードをざっくり読んできました。
969のは、すでに完成しているので、仕様変更は知識があれば簡単ですね。
>>93
チート系ツールを他人に作らせようとするのはどうかと思うのだけれど?
この板はチート系ツール作成板ではありません。
時間がないとかそういうのは、あなたの勝手な都合を板の住人に押し付けないでもらえる?
あなたは、まずは、基本を学びなさい。
今の段階で、コピペでプログラム組むとか、なにかと間違っていると思うのだけれど?
WINDOWSのシステムや、ロジック、Win32APIの意味を理解して、ちゃんと設計してからプログラム組なさい。
0108Office & Gamers ◆G144Hzgh2.0e 2015/04/16(木) 23:26:14.26ID:djFvfTCc
難しいコトは後回しwできりゃ何だっていいんだよw

簡単なものを難しく見せようとするのが間違いw
0109デフォルトの名無しさん2015/04/16(木) 23:53:11.47ID:r89rtGYR
違います><チートじゃないです。なんで変なこというんですか
0110デフォルトの名無しさん2015/04/17(金) 00:04:49.02ID:u6kt2Ekt
>>109
やましい事がないのなら言えると思うから教えて
LEFTUP検出時に何をするのか
0111Office & Gamers ◆G144Hzgh2.0e 2015/04/17(金) 00:10:29.37ID:dW7xxEmp
チャララ〜ん♪”
0112デフォルトの名無しさん2015/04/17(金) 00:17:56.88ID:8xw27FV+
>>110
printfでメッセージ出した後に、
PrintScreenキーを押して画面の保存です・・
>>107
ごめんなさい。
あなたの言うとおりです。
でもちート云々はわたしが言い出したことじゃなくて
他の人が勝手に言ってることです。
今の自分じゃ調べても分からないから詳しい人に聞きたかったんです。
0113デフォルトの名無しさん2015/04/17(金) 00:46:11.75ID:u6kt2Ekt
>>112
>>11
> 条件1 アドレス1 xx & アドレス2 yyならLeftDownでyyをzzに
> 条件2 アドレス1 xx以外 or アドレス2 zz以外になったらLeftUp
> なのか
> 条件1から条件2になるまでLeftDownのままなのか
このどれか + LeftUpでスクリーンショットか
頻度によっては「覗き見」になるから自分で全てできないとな
0114デフォルトの名無しさん2015/04/17(金) 00:46:43.27ID:8xw27FV+
詳しくかきます。
ソースの最後のトコ、
/* マウス操作をエミュレートする */ の部分だけ違ってて、
if (abBuffer1[0] == xx && abBuffer2[0] == yy) {
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
}
if (abBuffer1[0] == aa && abBuffer2[0] == bb) {
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
}
になってます。
アドレスxx,yyの値は一定時間経過後、aa、bbになるんです。
値が aa、bbになったらLEFTUPさせるんですが、
LEFTUPした瞬間を検出して、printfでメッセージを出して、PrintScreenキーを押す
って仕組みです。

知識があって簡単に仕様変更できる人に聞きたいって思うのはダメなんですか?
いちお、猫でも分かるっていうサイトの第4章やったけど
勉強すること多すぎて何からやったらいいのかわかんないです。
0115デフォルトの名無しさん2015/04/17(金) 00:49:09.70ID:w/dpiMO4
>>93
コンパイルエラーは、ソースコードの上の行から順に、
一つずつ解決していくこと

必ず上から直すこと! なぜなら、上のエラーを直すと、
下のエラーは自然に直ることも多いから

よく知らんが、VC++を使っているのなら、
IDEが左側に、電球の形をした、
解決するヒントを示してくれるのでは?


君は59の質問者かね?
誰が書いているのかわかりにくいので、
名前欄に、59と最初のレス番号を入れろ

そもそも素人が、Win32APIを直接使うのは無理。
WM_LBUTTONUP などのGUIのメッセージも知らないんだろ?
画面のイベントを知らないなら、画面を作れない
0116デフォルトの名無しさん2015/04/17(金) 00:54:50.78ID:u6kt2Ekt
>>114
if (abBuffer1[0] == aa && abBuffer2[0] == bb) {
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
// ここでメッセージを出して同様にPrintScreenを押す
}

じゃダメなん?
0117デフォルトの名無しさん2015/04/17(金) 01:16:12.40ID:w/dpiMO4
>>69
error C2601: 'OnTimer' : ローカル関数の定義が正しくありません。
error C2065: 'hMyWnd' : 定義されていない識別子です

.h の拡張子はヘッダファイルで、このファイルに型宣言を書く。
.c, .cpp の拡張子は実装ファイルで、このファイルに定義を書く。

実装ファイルで、関数名や変数名などの識別子を使う前に、
まずそれらの型を宣言しないと、コンパイラが型チェックできない

識別子の宣言は、以下のように実装ファイルで行うか、
型名 識別子; int a;

皆が使うような関数などは、
ヘッダファイルに型宣言してあるので、
実装ファイルの冒頭で、以下のどちらかで、
ヘッダファイルをインクルードする

標準ライブラリのヘッダファイルなら、#include <ファイル名.h>
自分で作ったヘッダファイルなら、#include "ファイル名.h"


まあ、こんな初歩的なことも知らないのに、
プログラミングは無理。まず本を読め
0118672015/04/17(金) 01:28:19.13ID:GgWweP1w
>>112
プリントスクリーンねぇ。。それだけで済みそうにないと思うんだが。
PS後の画像をファイルに保存とか、PSの画像と、保有する画像が一致したら、
マウスクリックとかそういう処理増えていったりするんじゃね?
知らんけど。

C言語の入門や、WindowsのAP関連の入門サイトを初めから読み飛ばさず基礎から勉強するか、
仕様をちゃんと固めて、2000円払って、MZの人に続きを作ってもらえば、あっさりできちゃうかもよ?

ここの板は、こういうことできるAPI知りませんかー?っていう質問する板だと思うのだけれど?
0119デフォルトの名無しさん2015/04/17(金) 01:54:23.92ID:6/UQT6bn
そろそろスルー検定
0120デフォルトの名無しさん2015/04/17(金) 01:55:56.45ID:w/dpiMO4
素人に教えることは出来ない。
1つ教えると、バグが3つ出て、
そのバグ1つについて教えると、またバグが3つ出る

何かを教えても、それを知らないから、
またそれについて教えなければならないので無理

まず本などで、基本的なことは習得してからやらないと、
結局、他人に聞いても理解しないまま、進めていくので、
また繰り返し聞いてくる。時間の無駄

答えを聞いても無理なんだよ。
その通りにしても、新たなバグが出るから、
そのバグをまた修正しても、また新たなバグが出る

答えではなく、なぜなのか理由を聞け!
そしてその理由がわからなければ、
わかるレベルまで、さかのぼって勉強せよ。
何が・どこがわからないか、言えるようにせよ。

急がば回れ!
じっと本を読んで、力を貯めよ!
結局、その方が速くて、高品質
0121デフォルトの名無しさん2015/04/17(金) 02:23:16.87ID:w/dpiMO4
>>114
if (abBuffer1[0] == aa && abBuffer2[0] == bb) {
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);

3秒間、スリープする
printfで、メッセージを出力する
PrintScreen キーを押す(キーイベント)

}
0122デフォルトの名無しさん2015/04/17(金) 04:10:17.30ID:NAku5IxH
質問です。
RichEditコントロールのFINDTEXTメッセージに渡すものとして、ググるとFR_DOWNや
FR_MATCHCASEなどなどが出て来るのですが、おいらの環境VS2010 Expressについてきた
SDKのヘッダファイル....Microsoft SDKS/Winodws/v7.0A/Include/Richedit.h
には定義されてません。当然コンパイルエラーが出ますしVSにも赤線引かれて怒られます。
なにか別な方法でも出来ているのでしょうか。
0123デフォルトの名無しさん2015/04/17(金) 04:12:32.55ID:NAku5IxH
ちなみにおらっとこのRichedit.hでFR_*な定義はこれだけでした。
// Additional EM_FINDTEXT[EX] flags
FR_MATCHDIAC
FR_MATCHKASHIDA
FR_MATCHALEFHAMZA
0124デフォルトの名無しさん2015/04/17(金) 04:19:31.06ID:6/UQT6bn
grep使ってもないんかね?
CommDlg.h

なお、単にインクルードするだけでいいのかは知らない。
0125デフォルトの名無しさん2015/04/17(金) 05:41:11.87ID:GgWweP1w
>>122
vs2015だけど、grepしたらこんなとこにあったよ。
Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include\CommDlg.h(585): #define FR_MATCHCASE 0x00000004

たぶん、この2つ追加でいいんじゃないかな?
#include <commdlg.h>
#pragma comment(lib,"comdlg32.lib")
0126デフォルトの名無しさん2015/04/17(金) 07:09:06.75ID:u6kt2Ekt
>>122
同じの使ってるけど
c:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\CommDlg.h
ここにあったよ

フラグだけなら#pragmaは無くていいみたい
0127デフォルトの名無しさん2015/04/17(金) 10:03:57.26ID:8xw27FV+
>>118
済みます! 絶対にこれ以上処理は増えないです。
スレには"Win32APIについての質問はこちらへどうぞ"って書いてあります。
使い方について聞いてもいいじゃないいですか・・。

>仕様変更は知識があれば簡単
ってことは
67の人はマウス離した瞬間を検出して、PrintScreenキーを押す、ってわたしには難しいことが、簡単にできるんですよね?
知識が十分なのにこのスレに居るって事は誰かを助けるために来てくれてるんですよね?
演習用のじゃなくて、ちゃんとしたプログラム作るのはこれが初めてなんです。
元はほとんどコテの人のコードだけど、それでも、最初って肝心じゃないですか?
最初に上手くいかないとやる気なくなります。
逆に最初のプログラムが出来ればめっちゃやる気出てたぶん勉強も捗ります。

ソース上げてみてって言ってくれて、コードまで読んできてくれたんですよね?
それなのに・・見捨てないでください><

>>121
mouse_eventの後に処理をさせるだけなら聞かなくても出来ますしapiスレに来ません。
わたしが出来ないのは"Win32API"のGetAsyncKeyStateを使って、
マウスの左クリックを離した瞬間を検出して、その処理を実行させることです。
無意味に見えるかもしれませんがとても重要なことです。

調べててもわかんなくて、風邪引いて、ガッコやすんだんですよ。
可哀想だと思いませんか? 思いますよね?
助け合いの精神が大切だと思います。
0128デフォルトの名無しさん2015/04/17(金) 10:22:05.00ID:jWFJYotG
ってか、教えてもらったことGoogleで検索してみたことある?

MSDNのmouse_eventのページ見てればPrintScreenの押し方とかふつー聞かなくね?
0129デフォルトの名無しさん2015/04/17(金) 10:55:29.98ID:PQTjmfWn
学校休んで2chとかばっかじゃねーのwwww
0130デフォルトの名無しさん2015/04/17(金) 10:55:57.65ID:95OY7iuD
煽れば答えてくれると思ってる40代無職のオサーンが書いてると思うと香ばしいな
0131デフォルトの名無しさん2015/04/17(金) 11:48:50.51ID:PQTjmfWn
名探偵コナン 701-725 + ルパン三世VS名探偵コナン THE MOVIE
0132デフォルトの名無しさん2015/04/17(金) 12:17:45.40ID:AqenIXcN
>>127
> >>118
> 済みます! 絶対にこれ以上処理は増えないです。
> スレには"Win32APIについての質問はこちらへどうぞ"って書いてあります。
> 使い方について聞いてもいいじゃないいですか・・。

使い方は聞いてください。
しかし、

> わたしが出来ないのは"Win32API"のGetAsyncKeyStateを使って、

ここまではいいです。

> マウスの左クリックを離した瞬間を検出して、その処理を実行させることです。

ロジックの話であり、Win32APIの話ではありません。
他のスレでお願いします。

ここは貴方のスレではないのです。
0133デフォルトの名無しさん2015/04/17(金) 12:37:09.89ID:e01JbLz6
WebMoneyは未成年でもコンビニで買えるから素直に片山に2000円払え
0134デフォルトの名無しさん2015/04/17(金) 12:41:38.03ID:8xw27FV+
>>128
検索してますけど?
別にPrintScreenの押し方を聞きたいんじゃないんです。
それは>>110が検出時の処理を教えてって言うから書いただけです。

わたしが知りたいのは
GetAsyncKeyStateでどうやって、マウスの左クリックを離した瞬間を検出するのかってことです。

そしてそれをどうやって、↓の元ソースに組み込めばいいのか。
ttp://codepad.org/0E6iybtA

ってことです。
0135デフォルトの名無しさん2015/04/17(金) 12:55:58.67ID:6/UQT6bn
スルー検定実施中
0136672015/04/17(金) 13:25:01.19ID:GgWweP1w
>>134
ここの板は、「魚を与えるのではなく、魚の釣り方を教える」住人がいる場所だと思ったほうがいい。
魚の釣り方といっても、あくまでもアドバイス、それ以上でもそれ以下でもない。
住人はアドバイスしたくないと思えば教えないし、教える義務もない。

既に、あなたの知りたいコードのサンプルは板に上げられているんだから、それをコンパイルして動かす。
コピペ結合とかだめ。
上げられている数行のサンプルは、どのように動くのか考えなさい。
また、使われているAPIを一つ一つしらべ、意味を全部調べ理解しなさい。
MSDNや、Googleで検索すれば、解説はすぐに見つかる。
すべて理解できれば、結合もできる。

それでも、理解できないなら、あなたは教わる基礎知識が不足しているので、
プログラムの基礎からはじめなさい。
ここでは、WIN32APIのスレッドであって、基礎を教える板ではないことは理解しなさい。

学生なら、ブラウザーのメモリー変化を監視するプログラムを作るよりも、本業の学業を優先しなさい。
0137デフォルトの名無しさん2015/04/17(金) 14:02:07.73ID:e01JbLz6
ひまちんだからちょこっとだけ教えてやる
前回のループではキーが押されていたのに今回のループでは押されていなかったときこそが離された瞬間だ
一個前の状態をメモれる変数があるといいな
0138デフォルトの名無しさん2015/04/17(金) 14:31:40.82ID:YO6Tc0D6
学校PCにキーロガー代わりに仕込んでリンククリックした瞬間スクショ撮ってfacebookにうぷか
捗るな
01391222015/04/17(金) 19:53:54.07ID:NAku5IxH
#include <CommDlg.h>
#include <Richedit.h>
でいろいろきちんと動作するようになりました。
どもどもでした。
0140デフォルトの名無しさん2015/04/17(金) 23:27:18.16ID:8CLn8QdX
    ヽ|              \    r'     ヽ、    |


             「 ̄ `ヽ、   ______
             L -‐ '´  ̄ `ヽ- 、   〉
          /           ヽ\ /
        //  /  /      ヽヽ ヽ〈
        ヽ、レ! {  ム-t ハ li 、 i i  }ト、
         ハN | lヽ八l ヽjハVヽ、i j/ l !
         /ハ. l ヽk== , r= 、ノルl lL」
        ヽN、ハ l   ┌‐┐   ゙l ノl l
           ヽトjヽ、 ヽ_ノ   ノ//レ′
    r777777777tノ` ー r ´フ/′
   j´ニゝ        l|ヽ  _/`\
   〈 ‐ 知ってるが lト、 /   〃ゝ、
   〈、ネ..         .lF V=="/ イl.
   ト |お前の態度が とニヽ二/  l
   ヽ.|l         〈ー-   ! `ヽ.   l
      |l気に入らない lトニ、_ノ     ヾ、!
      |l__________l|   \    ソ
0141デフォルトの名無しさん2015/04/18(土) 00:11:33.12ID:d+XtVUDX
>>134
所々スルーしてるレスがあるから本気で完成させたいのかが謎
0142デフォルトの名無しさん2015/04/18(土) 00:28:13.73ID:j/wjXDDU
>>134
「getasynckeystate sample code」で検索すれば?

漏れは今、JavaScriptのゲームエンジン、
enchant.js の本を読んでいるけど、例えば、
Bボタンが放された時に、発生するイベントは、
Event.B_BUTTON_UP

Win32APIにも、これによく似たイベントがあるはず

君は59の質問者かね?
誰が書いているのかわかりにくいので、
名前欄に、59と最初のレス番号を入れろ

君は、学校のPCに何かを仕掛けて、
何か悪いことをしようとしているのかね?
0143Office & Gamers ◆G144Hzgh2.0e 2015/04/18(土) 00:48:00.49ID:yZFnrc/6
>漏れは今、JavaScriptのゲームエンジン、
>enchant.js の本を読んでいるけど、例えば、

ワロタw
01441422015/04/18(土) 01:09:29.14ID:j/wjXDDU
漏れ的には今時、Win32API・C/C++でプログラミングって、
気ちがいとしか思えんw

ましてや素人が何で、そんな難しいことをする必要がある?
今日日ブラウザで、ゲームプログラミングで十分やろ?
0145Office & Gamers ◆G144Hzgh2.0e 2015/04/18(土) 01:10:48.20ID:yZFnrc/6
今時ならVC++&インラインアセンブルがトレンドだなwwww”
0146デフォルトの名無しさん2015/04/18(土) 01:24:09.63ID:Pxa1HN8F
おれもワロタ
そのガイキチの住む世界を知らない斜め上なご高説w
こいつこそなんでこんなとこ覗きに来るんだろうな
0147デフォルトの名無しさん2015/04/18(土) 01:24:41.48ID:d+XtVUDX
>>144
とりあえずそいつは他スレに誤爆したり余計な事を言うだけの奴だ

興味持った人が
自分の作業を効率化させる目的で
ってのもあるでな
かゆい所に手が届く
0148Office & Gamers ◆G144Hzgh2.0e 2015/04/18(土) 01:27:11.05ID:yZFnrc/6
宗教活動はよそでどうぞw
0149デフォルトの名無しさん2015/04/18(土) 09:52:22.94ID:QuJhi9bL
だって javascript つまらないんだも〜ん
0150Office & Gamers ◆G144Hzgh2.0e 2015/04/18(土) 11:44:37.40ID:yZFnrc/6
ここフツーにVC++かVC#だろw
0151デフォルトの名無しさん2015/04/18(土) 13:21:44.86ID:Slei64Ty
まともに日本語が打てない奴がいっぺんに現われるとカオスだな
0152デフォルトの名無しさん2015/04/18(土) 15:13:27.56ID:j/wjXDDU
>>137
の意味はこういう事かも

ループ処理 {

// 今回のキー状態を、取得する
curr_KS = GetAsyncKeyState(調べたいキー);

// もし前回のキー状態が押されていて、
// 今回、放されたのなら
if(prev_KS & 0x8000 && !(curr_KS & 0x8000)){ 処理 }

// 前回のキー状態を、更新する
prev_KS = curr_KS;

}
0153デフォルトの名無しさん2015/04/18(土) 23:15:29.25ID:R28h8IPA
>>152
ループ処理に入る前に
prev_KS = 0x0000;
で初期化といた方が良いかもね
0154デフォルトの名無しさん2015/04/22(水) 20:39:17.69ID:NZ8QzlQ5
☆ 日本の核ブ装は絶対に必須ですわ。☆
http://www.soumu.go.jp/senkyo/kokumin_touhyou/index.html

☆ 日本国民の皆様方、2016年7月の『第24回 参議院選挙』で、改憲の参議院議員が
3分の2以上を超えると日本国憲法の改正です。皆様方、必ず投票に自ら足を運んでください。
私たちの日本国憲法を絶対に改正しましょう。☆
0155デフォルトの名無しさん2015/04/22(水) 20:43:27.62ID:AcUbjFWF
>>144
なんでそんなに難しく感じるのかが理解できん
0156デフォルトの名無しさん2015/04/22(水) 22:24:23.10ID:ugIcL2/v
むしろ初心者的には覚える概念が少なくて良いかと。
シンプルイズベスト
0157デフォルトの名無しさん2015/04/22(水) 23:59:32.01ID:Op4eKru/
難しくはないな。面倒くさいだけで。
0158デフォルトの名無しさん2015/04/23(木) 15:10:02.80ID:atwBzKak
名言だな
0159デフォルトの名無しさん2015/04/23(木) 17:23:33.80ID:E8mzZpiJ
自分が使いやすいようにラップしようとすると車輪の再発明みたいになるしな
0160デフォルトの名無しさん2015/04/23(木) 20:14:51.80ID:t7P1w7fr
どんな環境でも動くように全てのライブラリは自作です。
0161デフォルトの名無しさん2015/04/23(木) 21:26:19.91ID:82Kg6BW/
質問っす。
コントロールをメインウインドウに配置して、WM_SIZE:でレイアウトする関数を呼んでますが、
起動する
→レイアウトがズレている。
マウスでメインウインドウをリサイズする。
→意図したレイアウトになる。
という現象が起きて困ってます。
レイアウトのための関数をWM_SIZE:だけでなくWM_CREATE:から呼んでもダメ。
(リサイズすりゃまともになるんだからレイアウトの関数自体はちゃんとしてる。)
起動時から意図したレイアウトにならないのはどんな理由が考えられますか?
0162片山博文MZ ◆T6xkBnTXz7B0 2015/04/23(木) 21:35:17.38ID:rgdBbObh
WM_CREATEが来た直後には、ウィンドウハンドル変数にハンドルが代入されていない。
ウィンドウプロシージャの第一引数使え。
0163デフォルトの名無しさん2015/04/23(木) 21:49:51.66ID:82Kg6BW/
レスどもっす。
代入されてないハンドルというのはコントロールのハンドルってことですよね。
レイアウトの関数はWndProc()の第一引数で呼んで、関数内部でGetDlgItem()を使って
コントロールのハンドルを指定してました。
それでもダメです。なんか画面全体が下にズレて配置されて下が隠れてます。
メニューとかステータスバーとかの高さぶんくらいのズレです。
0164片山博文MZ ◆T6xkBnTXz7B0 2015/04/23(木) 21:55:54.12ID:rgdBbObh
子ウィンドウかポップアップウインドウかで座標系が異なる。ウィンドウのスタイルは何か?
0165デフォルトの名無しさん2015/04/23(木) 22:12:40.19ID:dR4qRq19
めんどいからまずWM_CREATEじゃなくてmain関数でやってみれば
0166デフォルトの名無しさん2015/04/23(木) 22:20:13.53ID:82Kg6BW/
情報小出しで申し訳ない。
hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
で、VS2010Expressの「Win32プロジェクト」が生成したまんまです。
あとはRichEdit(Multilineが二つ)とStaticが縦に並んでます。
0167片山博文MZ ◆T6xkBnTXz7B0 2015/04/23(木) 22:26:51.98ID:rgdBbObh
WS_OVERLAPPEDWINDOWならクライアント座標系だな。
あまり知られていないことだが、WM_CREATEの前にWM_SIZEが来ることがある。
0168デフォルトの名無しさん2015/04/24(金) 00:01:17.23ID:p+NZUOcD
>>161
WM_CREATE::
PostMessage(hWnd,WM_SIZE, 自分で必要なパラメータセットしてね。);を呼び出してリサイズさせるのはだめなん?
もしくは、
WM_CREATE:
PostMessage(hWnd,WM_USER,0,0); // ウインドが作られた後、すぐに処理したい場合
break;
WM_USER:
SetWindowPos(自分で必要なパラメータセットしてね。); // ウインドの位置や、サイズなどを設定しなおす(リサイズ)
0169デフォルトの名無しさん2015/04/24(金) 00:24:45.89ID:belF3Fjq
>>156
そういう意味ではC/C++って両極端すぎ。
C++は覚えることが多すぎてキツくて面白いわ。
0170デフォルトの名無しさん2015/04/24(金) 00:26:34.57ID:l7nNbXLH
>>164-168
いろいろどもっす。
なんか釈然とせず「空のプロジェクト」から始めて昔書いたWinMainとかを貼り付けた後
同じレイアウト関数を同じ呼び方で呼んだら普通に動き、ますます釈然としなくなりますた。
原因が分かったらまたカキコします。ちなみに
>>168さんのWM_USERでのSetWindowPosできちんと動きはしています。

なんだかいろいろもうしわけない。
01711682015/04/24(金) 01:22:51.93ID:vwT5rXE6
>>170
ウインドが作成されてWM_USER が呼ばれるまでの間のメッセージをprintfしてみた(16進)
24,81,83,93,94,94,
1, <--- #define WM_CREATE 0x0001
18,46,46,1c,86,93,7f,7f,7f,93,91,92,92,6,282,281,7,85,93,93,91,92,92,14,47,93,5,3,f,e,7f,7f,7f,d,31f,
400 <--- #define WM_USER 0x0400
WM_CREATEが動く前に、WM_GETMINMAXINFO,WM_NCCREATE,WM_NCCALCSIZEや、
その他のメッセージが走ってるのと、WM_USERまでに、多くのウインドメッセージが動くので、
間でサイズに関して初期化時に不具合があるんじゃないかな。
何のメッセージが動いているかは、#include <winuser.h> とかと見比べればいいかも

WM_USERで、解決できたならあまり深く考えないでもいいかもだけど、がんばって。
0172デフォルトの名無しさん2015/04/24(金) 03:05:43.50ID:cnXdh8tn
ダイアログにメニューを追加した場合、メニューの高さ分ボタン類が下に移動しますが、
ウィンドウサイズは拡大されないために最下部に配置していたボタン類が
ウィンドウに収まりませんよね。

そのためウィンドウサイズの拡大が必要になりますが、メニューの高さ(フォントサイズ)
はwindowsの設定で変化しますから、この辺を考慮してウィンドウサイズを
変更する必要があると思います。

これは一々自前で実装する必要があるのでしょうか?
もっと簡単に対応する方法があるのでしょうか?
0173Office & Gamers ◆G144Hzgh2.0e 2015/04/24(金) 03:07:09.38ID:gsh3Hj5N
実装w
01741682015/04/24(金) 03:48:08.49ID:vwT5rXE6
GetSystemMetricsとかで計算しよう。
0175デフォルトの名無しさん2015/04/24(金) 03:54:40.79ID:cnXdh8tn
ちょっと、質問し直します。

メニューを追加すると既存のボタン類は自動的にメニューの高さ分下に移動しますが、ウインドウサイズは変わりません。
ウインドウサイズも自動的に大きくはならないのですか?
0176デフォルトの名無しさん2015/04/24(金) 04:33:58.09ID:xfJFJ7Nc
>>175
処理が完了するまでウィンドウが動かないものとして
メニュー追加前のクライアント座標0, 0をウィンドウ座標に変える
→メニュー追加後のクライアント座標0, 0をウィンドウ座標に変える
→その差分ウィンドウサイズを変更する
じゃダメなん?
01771682015/04/24(金) 04:41:10.43ID:vwT5rXE6
>>175
参考になるか?
ttp://sumishiro.blogspot.jp/2010/03/blog-post_13.html
0178デフォルトの名無しさん2015/04/24(金) 05:13:29.62ID:cnXdh8tn
ん〜、意図がなかなか伝えられなくてすみません。
GetSystemMetricsなどでメニューサイズの取得やSetWindowPosでのウインドウサイズの変更方法などは分かっているのですが、
最初に書いたようにダイアログベースのウインドウをリソースエディタで作成すると
メニューの有無でボタン類の位置は勝手に上下に動きますが、ウインドウサイズは変わりません。
これは、プログラムでサイズ変更するしかないのかというのが質問です。
0179デフォルトの名無しさん2015/04/24(金) 06:13:30.70ID:vwT5rXE6
>>178
vs2013の自動生成コード利用して、ABOUTBOXダイアログに、メニューの追加でサンプルを作ってみたが、
RCのダイアログって、クライアントサイズは固定で、メニュの有無で、ウインドサイズは異なるので正常だと思うが、
ダイアログのウインドサイズを固定で作りたいの?
ダイアログのクライアントサイズを固定で作りたいの?
メニューの追加って、RCのプロパティでmenuってとこで設定するようにしてるよね?
0180デフォルトの名無しさん2015/04/24(金) 06:44:25.47ID:6TulMhAx
出来るか出来ないかで言えば当然出来る訳だが
糞仕様
0181デフォルトの名無しさん2015/04/24(金) 08:29:32.10ID:ci039+n8
>>178
「メニューの有無で」の部分をもっと正確に言わないと回答つかないのでは?
エスパーして例を挙げるなら、表示されているウィンドウにSetMenuなどで
メニューを付けてあげる場合は勝手にリサイズされないから自前でやる必要がある。
0182デフォルトの名無しさん2015/04/25(土) 08:59:49.51ID:QgsvYozO
言語バーの作成方法って作り方分かる人いませんか?
0183デフォルトの名無しさん2015/04/25(土) 09:06:53.19ID:QgsvYozO
ドッキングウィンド関連探せばいいのだろうか。。?
0184デフォルトの名無しさん2015/04/27(月) 21:27:22.01ID:QwoO9IPF
基本的なこと申し訳ありませんが、教えてください。

メッセージループは1つのアプリケーションに一つ?
それともそのアプリケーション内のウィンドウごとにおのおの存在するの?
0185デフォルトの名無しさん2015/04/27(月) 21:35:52.54ID:6f9FfEFl
一つ
0186デフォルトの名無しさん2015/04/27(月) 21:39:44.80ID:eeUDpTg4
ぶっちゃけスレッドごと
ドラッグで範囲選択するときのWM_LBUTTONDOWNなどで独自にループすることもある
0187デフォルトの名無しさん2015/04/27(月) 21:47:49.17ID:nicG1Io0
メインスレッド以外をCreateThreadしてから
そのスレッド内でGetMessageすれば新しいメッセージループが作られるけど
取り立てて役だったことはない
0188122015/04/28(火) 01:05:17.00ID:/B/rl701
とても遅くなりましたが、>>26さんの方法で実装出来ました!
大変助かりました。ありがとうございます。
0189デフォルトの名無しさん2015/04/28(火) 18:13:27.82ID:W6RHswum
SendInput()関数と同様の動作をするタブレットをタッチするAPIって何かありますか?
01901892015/04/28(火) 18:26:37.13ID:W6RHswum
InjectTouchInput functionっていうの見つけたんですが、WM_TOUCHで分岐で、自分でタッチしているタッチIDを、タッチアップ状態にすることができるのかな?
01911892015/04/28(火) 23:01:18.23ID:W6RHswum
windows8で、タッチパネルを操作している時に、マウスが内部で連動して動きます。
タッチ操作中に、マウスを動かさない方法ってありますか?
一部の処理で、マウスカーソルの位置をアプリ側で操作する処理で障害になります。
WM_TOUCHでタッチ処理をしているのですが、GetCursorPos();で調べると値が変化しています。
01921892015/04/29(水) 02:05:01.53ID:S40E4Ihk
グローバルフックで試してみますぅぅ。。
0193デフォルトの名無しさん2015/04/29(水) 12:08:54.67ID:No5D67KY
意識しなくてもCreateできるウィンドウクラス BUTTONとかはどこに定義されてるの?
0194デフォルトの名無しさん2015/04/29(水) 12:53:06.13ID:pThgOoLO
リソース
0195デフォルトの名無しさん2015/04/29(水) 13:15:05.63ID:UdtGh3gm
user32.dll
0196デフォルトの名無しさん2015/04/29(水) 14:16:13.91ID:No5D67KY
ありがとう
0197デフォルトの名無しさん2015/04/29(水) 16:24:35.52ID:1y0sk+YZ
すみませんがCOM作成にあたり分からない点があり、もう一度質問させてください。

DelegateExecute等から呼び出させるCOMを作成する際、既存COMの動作を
適宜実行させたい場合、どうするべきなのでしょうか。
既存COMのDLLを参照して、コクラスの継承とかが出来るのかと思いましたが、
よくわからないでおります。

HKCU\Software\Classes\Folder\shell\open\commandの場合、
ExecuteFolder(ExplorerFrame.dll)が既存アクションのようなのですが、
こいつをどう呼び出す/継承させるかがわからずにいる状態です。
(そもそもスタンスがあってるのかさえ。。)
0198デフォルトの名無しさん2015/04/29(水) 18:05:09.67ID:lb5eDrrL
CoCreateInstance( ExecuteFolderのCLSID ... できたら
IExecuteCommand IInitializeCommand IObjectWithSelection IObjectWithSite
ここらへんのインターフェイスのメソッドで正しい情報を与えてやってExecuteFolderをエミュレートすればできそうな気がするけど

面倒くさそうだから自分なら既得のsiteからIShellBrowserをQueryInterfaceして
IShellBrowser::BrowseObjectで普通にフォルダ開かせちゃうのがいいと思うがどうか
0199デフォルトの名無しさん2015/04/29(水) 18:38:32.74ID:Bg6ZLegt
今時COMなんて・・・
10年ぶりに聞いたなw
0200デフォルトの名無しさん2015/04/29(水) 19:59:29.55ID:Ih1x52O1
モーダルダイアログボックスを表示すると
メッセージループがぐるぐる開始する。
ダイアログ中のプッシュボタンをマウスで押すと
このメッセージループがWM_LBUTTONDOWNを受け
WM_LBUTTONDOWNのハンドラ中で別のメッセージループを開始する。

メッセージループはいくつある。
0201デフォルトの名無しさん2015/04/29(水) 20:23:23.77ID:MPDoLmFP
今時って言われても Excel とか細かく制御するなら COM しかないし
0202デフォルトの名無しさん2015/04/29(水) 20:58:21.71ID:Bg6ZLegt
つドトネ
0203デフォルトの名無しさん2015/04/29(水) 21:22:01.08ID:pThgOoLO
DirectX
0204デフォルトの名無しさん2015/04/29(水) 23:20:13.57ID:zwED2fT3
.netもCOM呼んでるだけだから
02051972015/04/30(木) 00:27:47.26ID:IOp/sxLA
>>198
IShellBrowser::BrowseObject実装して、今のところ既存の動きを再現できました。
ありがとうございます!
IShellBrowser::BrowseObjectなんぞ知りも知らなかったので、
ここらへん辿れるようになりたいですね。
0206デフォルトの名無しさん2015/04/30(木) 07:57:48.27ID:75MO5jun
シェルインターフェイスは掘ると楽しいぞ
0207デフォルトの名無しさん2015/04/30(木) 11:21:09.79ID:ztKwqMYg
ウインドメッセージの一覧って、winuser.hに書かれていない内容はどこで調べればよいですか?
0x91,0x92,0x93のメッセージは何をやっているかわかりません。
Vs2015ってSpyツールありましたっけ?
02082072015/04/30(木) 11:23:04.24ID:ztKwqMYg
VS2013の間違いです。。
02092072015/04/30(木) 11:25:21.36ID:ztKwqMYg
スパイ見つけました。。\Common7\Toolsにあるとは。。
0210デフォルトの名無しさん2015/04/30(木) 13:51:06.64ID:iDcC+qzm
VS2013なら、メニューの「ツール」から起動できるだろ。
0211デフォルトの名無しさん2015/04/30(木) 21:45:33.01ID:acewAU+4
>・.NET やWin32 デスクトップアプリもストア配布可能に。エンタープライズ向けの仮想化技術を応用した
>サンドボックス環境で動き、ネイティブデスクトップアプリの力をそのままにシステムへの影響を減らす。
>アンインストール時にゴミを残さない。ステージでは PhtoShop Elements をデモ。

サンドボックス化は歓迎だけどこんなんストアがマルウェアの万国博覧会になりそうなんだけど
0212デフォルトの名無しさん2015/04/30(木) 22:36:39.51ID:z7JbgbHO
別に一元化なんて望んでねえけどな
パッケージマネージャーつけろとは前々から思っていたが

chocolatey?
おもちゃに用はないよ
0213デフォルトの名無しさん2015/04/30(木) 22:54:56.41ID:uI857xi4
Nugetは?
0214デフォルトの名無しさん2015/05/01(金) 01:12:16.84ID:/Mtkjhpa
ファイルに関連付けられたアイコン (エクスプローラで表示されるやつ) の、
大きいのが取得したいんだけど、どうすればよい?
ExtractAssociatedIcon と IExtractIcon を試したんだけど、
両方とも48x48が最高みたい。
256x256の綺麗なアイコンはどうやったら取得できますか?
02152142015/05/01(金) 01:30:39.80ID:/Mtkjhpa
ごめん。
解決しました
0216デフォルトの名無しさん2015/05/01(金) 16:17:44.56ID:mcLYTm8y
複数行richeditで一行の高さをピクセルで得たいのですが、
CHARFORMAT構造体のdw.yHeightはtwip単位。
twipからpixelへの間には各環境のdpiが絡んでらっしゃると。
てことはGetDeviceCapsとかを呼んでアレコレするしかないってことなんでしょうか。
現フォントの大きさ高さをピクセル単位で保存してるプロパティ的なものって
ないんでしょうか。
昔はだいたい96dpiだったと知りましたが、実際計ってみると確かに
96dpiではおかしい大きさで表示しとりますです。
0217デフォルトの名無しさん2015/05/02(土) 18:04:37.67ID:wQLon+fD
gw真っ只中ですが、教えてください
Ctrl+FunctionKeyを捕まえたいのですが、どんなメッセージ飛んでくるのですか?
0218デフォルトの名無しさん2015/05/02(土) 18:43:22.99ID:wQLon+fD
できました
0219デフォルトの名無しさん2015/05/02(土) 19:22:52.25ID:P8FpGVi1
XPから久々にWindowsネイティブアプリ作ろうとしたら
グローバルフック周り地味に面倒になってそうだな・・・
0220デフォルトの名無しさん2015/05/03(日) 01:12:27.12ID:DpPxqG4c
ツールチップを好きなタイミングで複数表示したり非表示にしたいと思っています
しかし、CreateWindowでtooltips_class32を指定したものをShowWindowで表示してみても影しか表示されません
何かしら抜けている手順があったら教えてください
0221デフォルトの名無しさん2015/05/03(日) 01:20:14.65ID:DGVNwvpl
つShowWindowsAtAnyTime
0222デフォルトの名無しさん2015/05/03(日) 08:38:00.25ID:y99enrox
グローバルフックなどで、ウインドメッセージの内容を書き換えて適用させようと思ったらどうすれば良いですか?
ウインドメッセージ、WM_WINDOWPOSCHANGING:の値を書き換えたいのですが、ご教授お願いします。
0223デフォルトの名無しさん2015/05/03(日) 10:46:37.20ID:jQdh0BE6
ローレベルインプット系のグローバルフック以外は書き換えできないよ
やりたいなら対象プロセスに潜り込んでWndProcを上書きするしかない
対象プロセスに潜り込む方法はグローバルフックでもいいけどね
0224デフォルトの名無しさん2015/05/03(日) 10:50:29.30ID:jQdh0BE6
他にもメッセージを変更可能なフックはあったような気がするが
確実にWH_CALLWNDPROCではない
ジャーナル何とかだったかな
0225デフォルトの名無しさん2015/05/03(日) 11:04:16.54ID:p3er52Mk
とりあえずWH_DEBUGで受け取れるか見てみたらいいんじゃね
0226デフォルトの名無しさん2015/05/03(日) 11:47:58.30ID:y99enrox
対象ウインドを、グローバルフックで、case WM_SYSCOMMAND:、case SC_MOVE: の開始のタイミングで、
CreateRemoteThreadとか使う感じになるのでしょうか?

case SC_MOVEのタイミングで、SetWindowSubclass(p->hwnd, SubclassProc, 0, 0);だとダメでした。
自分のウインドのみは書き換えは成功していたみたいです。
SetWindowLongは試してないですが、古いAPIなので、使うと不具合ありそうですねよね?
SetWindowLongは、動作しているスレッドが違う場合ので動かないのかな?

WH_CALLWNDPROC 読み出しのみっぽいのでダメ
WH_CBT+HCBT_MOVESIZE 動かしたい内容に近いが、ダメでした。
WH_DEBUG 試してない
WH_GETMESSAGE WM_WINDOWPOSCHANGING:読み出しできず
WH_MOUSE、WH_MOUSE_LL ウインド移動ではだめっぽい。

このあたりは読みましたが…解決してないです。
https://social.msdn.microsoft.com/Forums/vstudio/ja-JP/05e13534-8964-4626-b056-06e93a2154d5?forum=vcgeneralja
0227デフォルトの名無しさん2015/05/03(日) 11:58:39.70ID:DpPxqG4c
>>221
ググってもヒットしないんですが、それは何なんでしょうか?
0228デフォルトの名無しさん2015/05/03(日) 18:17:35.43ID:LlABLTEl
>>226
なんか不穏な感じ
0229デフォルトの名無しさん2015/05/04(月) 05:27:30.11ID:LYeSXt0A
コードに不吉な臭いが所々ありそう
0230デフォルトの名無しさん2015/05/04(月) 08:56:17.68ID:80QzrQPL
呪いのプログラム
0231デフォルトの名無しさん2015/05/04(月) 09:36:46.19ID:sKsouBLL
悪魔召喚プログラムの方が好きです
02322262015/05/04(月) 18:02:24.32ID:q56zhT2A
グローバルフック中のSetWindowLong だと問題なく動きますねぇ。
SetWindowSubClassだとうまく動きませんねぇ。なんでだろ?

Win7以降向けで、CreateRemoteThreadEx+LoadLibrary で、サブクラス化のテストはしました。
XPだとCreateRemoteThreadじゃないとだめですね。
とりあえず、CreateRemoteThreadExだと、カスペル先生とかが誤動作しそうなので、
グローバルフック中にSetWindowLongのを使おうかと考えています。

ウインド移動前提で、サブクラス化した場合、
SetWindowLong(サブクラス化)の解除のタイミングは、WM_DESTROY 以外だと、
どのメッセージがよいでしょうか?

WM_EXITSIZEMOVE,WM_DESTROY で破棄コードを動かすようにはしています。
02332262015/05/04(月) 18:26:03.85ID:q56zhT2A
動いているアプリの、ウインドハンドルが64Bitか32Bitの判断ってどうすればよいでしょうか?
なにかAPIありましたっけ?
02342262015/05/04(月) 18:35:31.12ID:q56zhT2A
多分自己解決、これでいいのかなぁ?
DWORD processID;
DWORD thID;
BOOL bIsWow64 = FALSE;
thID = GetWindowThreadProcessId(hWnd,&processID);
IsWow64Process(processID, &bIsWow64);
は。。64ビットめんどくさー
02352262015/05/04(月) 20:26:27.96ID:q56zhT2A
IsWow64Processの第一引数、HANDLEだったorz
0236デフォルトの名無しさん2015/05/04(月) 20:58:25.12ID:VqP+6wea
32bitOS上でもIsWow64Process関数はFALSEを返すが大丈夫か?
作っているアプリ自体が64bitっていうなら良いけど。
02372262015/05/04(月) 21:25:39.18ID:q56zhT2A
>236
32Bitの環境は、IsWow64Process関数が存在するかどうか調べて判断すれば。。と思ったんですが、甘いかなぁ。。
この辺り参考にしようかとは思ってますがどうなんでしょう。
http://blog.monoweb.info/blog/2009/09/13/64bit-hook/
0238デフォルトの名無しさん2015/05/04(月) 21:53:00.00ID:MYTXHyrO
32bitOS上に64bitアプリは存在しないんだから result が FALSE なら 32bit アプリということで
事足りるんじゃないの?
0239デフォルトの名無しさん2015/05/04(月) 23:36:23.21ID:VqP+6wea
>>237
Windows XP SP2以降はこの関数が存在しているらしい。
「関数が存在していなければ32bitOS」という判断は出来るが「関数が存在していれば64bitOS」という判断は出来ない。
また実機(WindowsXP SP2)でも過去に検証済み。

MSDN
https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms684139.aspx

>If the process is running under 32-bit Windows, the value is set to FALSE.
>If the process is a 64-bit application running under 64-bit Windows, the value is also set to FALSE.

そのサイトに書かれている方法は以下の文が肝。
>始めに利用者が起動するのは32bit版のプログラムです。
32bitアプリ実行環境においてIsWow64ProcessがFALSEを返すということは、ネイティブで実行されている。
逆にIsWow64ProcessがTRUEを返したならそれはWOW64の下で動いているということになる。
だから「必ず最初は32bitアプリを起動させて・・・」という方法を取れるならそのブログのようにIsWow64Processだけで判断も出来る。

>>238
result が FALSEってのがどのレベルで言っているのか分からんが
( IsWow64Processの戻り値ということなら)64bitOSで64bitアプリケーションでも IsWow64Process はFALSE を返す。

つまり32bitOSか64bitアプリなら関数はFALSEを返すので
アプリが何bitかを判断するにはOSが何bitかを知らないといけない。
0240デフォルトの名無しさん2015/05/04(月) 23:45:54.58ID:VqP+6wea
というかあれだな。
32bitアプリを作っているなら「最初に起動するのは32bitアプリ」なのは当然か。
フック対象が64bitならフックしないか、64bit版を起動させるっていうブログの方法で問題ないな。

ただ「関数が存在するかどうか」だけじゃ不十分だから気をつけてね。
0241デフォルトの名無しさん2015/05/05(火) 00:15:04.99ID:HP7XiSqu
あれ?なんか違うな。
>>240は若干訂正。

自分が32bitアプリだとしても、
・相手が32bitOSで32アプリ → IsWow64Process はFALSEを返す
・相手が64bitOSで32アプリ → IsWow64Process はTRUEを返す
・相手が64bitOSで64アプリ → IsWow64Process はFALSEを返す

OSが何bitかを知りたいだけならそのブログの方法だけでいいが、
相手が何bitかを知りたいなら組み合わせないとダメだな。

自分が32bitアプリだから、自分にIsWow64Processを使いFALSEなら32bitOSでTRUEなら64bitOS。
32bitOS環境なら相手も当然32bitアプリ。
64bitOS環境だと相手が32bitアプリか64bitアプリかの判断が必要なので相手もIsWow64Processで調べる。
FALSEなら64bitアプリ、TRUEなら32bitアプリ。

「動いているアプリの」ってのが相手のことならこうしないとダメだな。
あとは相手が64bitアプリならフックしないか、64bitアプリを立ち上げてフックするか。
0242デフォルトの名無しさん2015/05/05(火) 00:55:10.80ID:JPFk61nl
64bit cpuで
int a = 0xffffffffffffffff;

でなぜ警告がでるの?
0243デフォルトの名無しさん2015/05/05(火) 01:08:32.87ID:WXcigvGr
今Windowsで使えるメジャーなC/C++コンパイラは
intを32ビットで扱っているから

整数型のサイズはCPUのビット数に合わせなければならない
とかいう規定があるわけではない

shortのサイズ以上であればintが2048ビットでも
24ビットでもそれはコンパイラの自由なんだよ
0244デフォルトの名無しさん2015/05/05(火) 01:16:06.47ID:q10zsNFn
intの上限が 0x7FFFFFFF だから
0245デフォルトの名無しさん2015/05/05(火) 01:21:24.52ID:AH7UBQjv
>>242
sizeof(int) がいくつになるか試してみたら
0246デフォルトの名無しさん2015/05/05(火) 05:07:51.68ID:V9xQwQO9
デスクトップってダブルバッファリングは行っていないんでしょうか?
マウス入力などを遮らないアニメーションをデスクトップ上に表示したいんですが
0247デフォルトの名無しさん2015/05/05(火) 09:29:14.26ID:8cBYwRXK
DWM compositionが有効な限り常時バッファリング描画やで
02482262015/05/05(火) 09:29:18.47ID:20DP2R/2
>>241
サンキュー助かります。
最初に32ビット版で起動して、64ビットOSであれば、
64ビット版を起動して、ウインド情報を調べてフックするようにするつもりです。
実行ファイル2つと、DLLが2つになるのは仕方ないですね。
メモリー共有って32ビットと64ビットの混合ってできましたっけ?
32ビットウインドと64ビットのウインド間のメモリー共有って
CreateFileMappingでできるのかな?
SendMessage(WM_USER や WM_COPYDATAでやりとりしたほうがいい?
0249デフォルトの名無しさん2015/05/05(火) 10:51:06.10ID:V9xQwQO9
>>247
ありがとうございます
確かにAeroの処理を考えるとダブルバッファリングが必須ですね
よく考えたらやりたいこととダブルバッファリングはあまり関係がありませんでした

すでに知っているのはGetDC+BitBltで書き換えるやり方ですが、
描画した画像の下に無効リージョンが発生すると
勝手に塗り直されてちらつきが発生するのでそれを防ぐ方法が知りたいです

デスクトップの内部バッファが後は反映するだけというところまで描画を終える
↓
そこにすかさず割り込んで表示したいアニメを描き足す
↓
その後OKサインを送ったらようやく実際にデスクトップが描画される

具体的に書くときっとこういう流れになると思うんですが、特に真ん中を実現するためのAPIがあったら教えてください
0250デフォルトの名無しさん2015/05/05(火) 10:59:46.29ID:qvOIJ9mb
これってさ自前でダブルバッファリングやってるのもさらにダブルバッファリングかかるわけ?
02512262015/05/05(火) 11:04:35.43ID:20DP2R/2
>>249
自分でダブルバッファーしてるんであれば、あとはやることといえば、NULLブラシの設定くらいか?
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);を
wcex.hbrBackground = (HBRUSH)NULL;にしてみたら?改善しないか?
0252デフォルトの名無しさん2015/05/05(火) 11:17:14.87ID:kyGf+mJm
WM_ERASEBKGNDは?
0253デフォルトの名無しさん2015/05/05(火) 11:21:04.64ID:V9xQwQO9
>>250-252
これが実現できるならダブルバッファリングは一回で済むんじゃないかと思います

自分ではウィンドウは作らずにデスクトップに直描きしたいってことです
理由は最前面になっている他のウィンドウを非アクティブにしたくないのが一つと
カーソル下にウィンドウがあるときにマウス入力が遮られて邪魔になるのが一つ
(例えばスタートボタンの上に画像が被さっていても意に介せずホバーやクリックの反応をしてほしい)

協力してくださってありがとうございます
02542262015/05/05(火) 11:24:14.70ID:20DP2R/2
HANDLE hShare = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE,0, sizeof(MyShareData), strShareName);
LPDATA pData = MapViewOfFile(hShare, FILE_MAP_WRITE, 0, 0, sizeof(MyShareData));
32/64ビット間のメモリー共有ですが、特にコードいじることなく共有できました。
0255デフォルトの名無しさん2015/05/05(火) 12:56:34.32ID:kyGf+mJm
>>253
デスクトップのハンドルからプロシージャのアドレス得て>>252だけ捕まえるとか
02562262015/05/05(火) 13:46:31.14ID:20DP2R/2
>>253
デスクトップの直書きって、WM_PAINT直後に描画するてこと?
試してないけど、デスクトップのウインドハンドルをフックしたとして、
WM_PAINTを先に描画させて、任意の画像を上からBitBltとかする感じかな?
普通にちらつきそうではあるが。。?
0257デフォルトの名無しさん2015/05/05(火) 14:07:36.70ID:q10zsNFn
アニメーションコントロール作ってAVI再生させたほうが早いかも (笑)
0258デフォルトの名無しさん2015/05/05(火) 14:39:05.37ID:3fPyNIFJ
フックして、プロセス開いて本来のこーどの
wm_paintのendpaintの直前に描画命令を割り込ませられれば。。。あるいは。。。
0259デフォルトの名無しさん2015/05/05(火) 16:58:43.47ID:PARG4dys
素直に透過ウインド作ったほうがよくね?
02602262015/05/05(火) 18:36:30.71ID:20DP2R/2
>>253
これ通るか不明ですが。
case WM_PAINT:を動かす時って、通常、hdc = BeginPaint(hWnd, &ps);EndPaint(hWnd, &ps);がセットですよね?
と、いうことは、hWndのhdcの値を任意の情報に書き換えられれば、バッファリングできるかもしれないですよね?
だめで元々と思ってください。
予め、自分のウインドハンドルに、hdc=GetDC(hWnd);でHDC取得して、 バッファに、SelectObject(hdc,hMyBmp);で関連付けしておく
それと、ダブルバッファ用のメモリーDC(myDC)を作っておく
んで、GetDesktopWindow() とか必要に応じて、グローバルフック+サブクラス化して、 WM_PAINTの本来受け渡す、HookPrc( hWnd,rParam,lParam); のhWndを書き換えてバッファリングして描画するっていう方法はどうでしょうか?
case WM_PAINT:
myWndDC =GetDC(hMyWnd); // 自分のウインドハンドルのDCを取得
// myBmpはCreateCompatibleBitmapで本来のhWndのDC, 所属のhBitmapなどからサイズとか取得したほうが良いと思う
hdc =GetDC(hWnd);myBmp = 略;ReleaseDC(hdc);
oBmp=(HBITMAP)SelectObject(myWndDC,myBmp); // myWndDCにバッファ用のビットマップをセット
// 先に描画、描画対象を自分のウインドのhDCに描かせることが成功すればチラツキは抑えられるはず?
HookPrc(hMyWnd,wParam,lParam);
hdc = BeginPaint(hWnd, &ps);
BitBlt(myDC,略,myWndDC,略); // 背景として、本来の描画内容をmyDCに転送(バッファリング)
SelectObject(hMyDC,oBmp); // 本来のビットマップに戻す
ReleaseDC(hMyWnd, myWndDC); // リリース
DeleteObject(myBmp); // myBmpを破棄
FillRect(myDC,略)など // ここで自分で上書き描画
BitBlt(hdc,略,myDC); // 実際のウインドに描画する
EndPaint(hWnd, &ps);return 0;
02612262015/05/05(火) 18:38:32.93ID:20DP2R/2
書いててふと思ったんですが、DirectXやら、OpenGLとかで動いてるアプリには、上記の方法は効果なさそうですね
0262デフォルトの名無しさん2015/05/05(火) 23:47:02.11ID:V9xQwQO9
>>260
とても親切に説明していただいて恐悦至極です。ありがとうございます!
BeginPaintが返却するhdcを自分のメモリDCに挿げ替えるなんてのは思いつかなかったので非常に参考になりました

背景, アニメABCDコマがあるとすると(背景はGetDC(NULL)で取得できる内容そのもの)

1, 背景が描画される(表示状態:背景のみ)
↓
2, Aコマを描画する(表示状態:背景+Aコマ)
↓
3, 次のコマを表示するために背景を再描画させる(表示状態:背景のみ)
↓
4, Bコマを描画する(表示状態:背景+Bコマ)

となり、AコマとBコマの間に一瞬だけ背景のみの状態になることがちらつきの原因と思われるので、
1と2,3と4を同一のタイミングで描画するための何かしらの方法を探していましたが、
皆さんの書き込みを拝見する限りではBeginPaintやEndPaint等のAPIフックが必須っぽいので、
それで試して上手く行かなかったらそのときは諦めようかと思います
ありがとうございました
0263デフォルトの名無しさん2015/05/06(水) 22:24:13.55ID:OlUhBFHF
VS2013のC++で
MessageBoxIndirectを使ってダイアログを表示する際に、例えば
IDCANCELボタンを表示すると、日本語Windows7なら[キャンセル]、
英語Windows7なら[Cancel]と表示されますが、それをOSの言語と関係無く
自分で好きな文字列を指定して表示させたいのですが、どうやっても
出来ません。どうにかして出来ませんか?
0264デフォルトの名無しさん2015/05/06(水) 22:35:05.51ID:ROM3ZfOK
>>263
(1)自分でダイアログを自作する。
(2)メッセージボックスをフックする。
0265デフォルトの名無しさん2015/05/06(水) 22:46:36.25ID:OlUhBFHF
>>264
レスありがとうございます。
(2)の方法でやりたいのですが、どうすれば自作のcallback関数に
置き換えられるのか分りませんでした。
0266デフォルトの名無しさん2015/05/06(水) 22:51:27.95ID:ROM3ZfOK
>>265
SetDlgItemText
0267デフォルトの名無しさん2015/05/06(水) 22:55:01.18ID:lk9KI/Ea
::SetWindowsHookEx(WH_CBT, CBTProc,...);

LRESULT CALLBACK CBTProc(int nCode, WPARAM wParam, LPARAM lParam)
{
  if(nCode == HCBT_ACTIVATE)
  {
    HWND hWnd = reinterpret_cast<HWND>(wParam);
0268デフォルトの名無しさん2015/05/06(水) 23:54:06.74ID:OlUhBFHF
>>266>>267
情報ありがとうございました。
試してみたいと思います。
0269デフォルトの名無しさん2015/05/07(木) 00:56:21.78ID:CSFF77Jn
自分が分かることは得意げに書くけど、
分からないことはヤフレカスってのは常套手段ですねw
0270デフォルトの名無しさん2015/05/07(木) 01:05:23.21ID:xpfh09H0
自分がわからないことをヤフレばわかるって、どの口から言えるんだろうな
0271デフォルトの名無しさん2015/05/07(木) 03:35:20.66ID:+yI4RSPE
しばらく誰も検索しろなんて言ってないような気がするが…
どこのスレで口喧嘩に負けてきたんだ?
荒らしてきてやるから書け
0272デフォルトの名無しさん2015/05/07(木) 22:56:17.61ID:uDHc9Yu6
例えば、自作のC++アプリの中から、他のアプリの中にあるButtonのhwnd
が取得出来たとして、
Postmessage(hwnd, , ,) ;
で何かメッセージを送って、そのボタンの背景色を赤色に変えるなど
できますか?
0273デフォルトの名無しさん2015/05/07(木) 23:10:50.13ID:XdEP7Lb2
例えば ツリービューコントロールの TVM_SETBKCOLOR みたいなメッセージが
用意されていればいいのだが、あいにくボタンにはそういうメッセージがない。

なので、他のアプリのボタンの背景色を変えようと思えば、そのボタンのスタイルを変え、
なおかつプロシージャを乗っ取って WM_DRAWITEM なりを処理する必要があると思う。

ゆえに答えは否。

自分の作ったアプリのボタンの背景色を変えるにはどうすればいいか。
まずはそのあたりを考えてみるといいよ。
0274デフォルトの名無しさん2015/05/07(木) 23:17:47.32ID:uDHc9Yu6
>>273
レスありがとうございました。

>他のアプリのボタンの背景色を変えようと思えば、そのボタンのスタイルを変え、
>なおかつプロシージャを乗っ取って WM_DRAWITEM なりを処理する必要があると思う。
なかなかややこしそうですね。

>ゆえに答えは否。
そうですか。困った。

>自分の作ったアプリのボタンの背景色を変えるにはどうすればいいか。
>まずはそのあたりを考えてみるといいよ。
その場合は、
SetBkColor
でやるんですよね?
0275デフォルトの名無しさん2015/05/07(木) 23:52:51.04ID:hWWp4HfH
>>自分の作ったアプリのボタンの背景色を変えるにはどうすればいいか。
>>まずはそのあたりを考えてみるといいよ。
>その場合は、
>SetBkColor
>でやるんですよね?

全く理解してなくてワロタ
0276デフォルトの名無しさん2015/05/07(木) 23:54:43.21ID:uhpkEIt4
オーナードローで検索
0277デフォルトの名無しさん2015/05/08(金) 00:05:10.49ID:D5f67YQT
他人のアプリに配置されているボタンがCreateWindowの"BUTTON"で作られたボタンならスタイルうんぬんという議論は分かるが
何らかのGUIツールキットで作られたボタンならスタイルうんぬん以前の問題
0278デフォルトの名無しさん2015/05/08(金) 00:07:56.26ID:D5f67YQT
ツールキット使わずボタンを自作してる可能性もあるし
Windowという実体を作らず画像処理だけでボタンを再現してる奴もいるかもしれん
後者ならボタンのハンドルもメッセージも存在しないw
0279デフォルトの名無しさん2015/05/08(金) 00:30:30.98ID:wauI//yZ
お前も全く理解してなくてワロタ
0280デフォルトの名無しさん2015/05/08(金) 01:03:34.39ID:JNS4Z5xc
「他のアプリの中にあるButtonのhwndが取得出来たとして」という前提での話だから
>>277-278 は議論うんぬん以前の問題
0281デフォルトの名無しさん2015/05/08(金) 01:04:28.80ID:2/9eM7ZL
会社にも頭でっかちの奴いるわ
自分は全く書けないのに、正論だけ押し付けてくる奴

「きちんと設計すれば動かないはずが無い」が口癖w
そりゃそうだろうけどw
0282デフォルトの名無しさん2015/05/08(金) 02:25:25.99ID:semA39SH
そうなんだよ
0283デフォルトの名無しさん2015/05/08(金) 05:53:15.38ID:rtQrrRIy
そのとおり
0284デフォルトの名無しさん2015/05/08(金) 08:24:18.65ID:Yhmm5THU
>>281
暗にお前の設計がタコだって言われてるんだろ
0285デフォルトの名無しさん2015/05/08(金) 08:42:21.41ID:oCL66D4S
>>274
他のアプリってのが「もし自作なら」ユーザーメッセージで解決できるけどな
0286デフォルトの名無しさん2015/05/08(金) 11:15:26.01ID:1gJibIV9
>自作のC++アプリの中から、他のアプリの中にあるButtonのhwnd
>が取得出来たとして


これって異なる自作アプリ同士でプロセス間通信したいって話じゃないの?
0287デフォルトの名無しさん2015/05/08(金) 11:25:32.49ID:JgJK5K7B
int* a, b;
0288デフォルトの名無しさん2015/05/08(金) 12:19:18.43ID:Gm54KlG7
>>286
>これって異なる自作アプリ同士でプロセス間通信したいって話じゃないの?
ええっと、そうではなくて
自作アプリから、他作アプリのコントロールの背景色を変更したい
と思いました。やり方が分りません。
0289デフォルトの名無しさん2015/05/08(金) 12:24:41.65ID:Yhmm5THU
>>273 で回答出てるだろ
0290デフォルトの名無しさん2015/05/08(金) 14:12:02.64ID:qF/v14b/
他人様のアプリの実装なんてどうなってんのか分からんのにどうやって中身を弄るってんだよ
0291デフォルトの名無しさん2015/05/08(金) 14:21:43.73ID:Iyiixb5X
>>290
Spy++みたいにではないでしょうか。
0292デフォルトの名無しさん2015/05/08(金) 14:31:02.25ID:semA39SH
まずSpy系のツールで対象のコントロールがちゃんと窓のハンドルなのか調べることからだな
>>273の工程は専門的に言うとオーナードローとサブクラス化ね
その辺は1から体系的に学んでおかないとやっていけない
0293デフォルトの名無しさん2015/05/08(金) 14:34:59.04ID:semA39SH
おっとミスった
他プロセスだからメッセージフックだったな
0294片山博文MZ ◆T6xkBnTXz7B0 2015/05/08(金) 14:49:49.46ID://zzhYF7
バージョン情報がないプログラムは動かなくなるって。ソースは俺
0295デフォルトの名無しさん2015/05/08(金) 19:49:37.43ID:5bS680Kq
>>294
マジで?!リソースファイルの.RCのStringFileInfoを適当に記載しておけばいいのかな?
WIN7以前、以降とか、記述なしで、実行制限ありましたっけ?
0296片山博文MZ ◆T6xkBnTXz7B0 2015/05/08(金) 20:18:23.68ID://zzhYF7
>>295
SmartScreenがソフトのバージョン情報をチェックしているらしい。
バージョン情報を付けた方が良さそうだ。
0297片山博文MZ ◆T6xkBnTXz7B0 2015/05/08(金) 20:26:10.33ID://zzhYF7
このscreenは、画面という意味ではなく、「選別」を意味するらしい。
0298片山博文MZ ◆T6xkBnTXz7B0 2015/05/08(金) 21:20:40.18ID://zzhYF7
SmartScreenとSecurity Essentialsにより、世界中のソフトウェアの情報が一元管理されて、発行元や人気の高さ、
クラッシュの回数までマイクロソフトが把握するようになったんだよ。
0299デフォルトの名無しさん2015/05/08(金) 23:55:30.38ID:5bS680Kq
>>298
なるほど。。クラッシュ回数まで把握ですか。デバッグはしっかりやっておきたいですね。

#pragma data_seg( で質問です。
A.exe +a.dll とB.exe + b.dll があったとします。
a.dllで #pragma data_seg("MY_DATA") int share_a=0; #pragma data_seg()
void setData(int n) {share_a =n;}
int getData() {return share_a;}

b.dllで #pragma data_seg("MY_DATA") int share_a=0; #pragma data_seg()
void setData(int n) {share_a =n;}
int getData() {return share_a;}
このとき、A.exe 内で setData(10)とした場合 B.exe getData()の値は 10になるのでしょうか?

別プロセスで、share_aが共有できるのであれば、メモリーマップドファイル使わないでいいのかな?
0300デフォルトの名無しさん2015/05/09(土) 00:06:21.40ID:f+X1Lw0k
A.exe が呼んでる a.dll と B.exe が呼んでる b.dll は別モノだろ
0301デフォルトの名無しさん2015/05/09(土) 11:00:55.20ID:OWlYoivl
初歩的な質問ですいません。
文字セットはマルチバイトとUNICODEのどちらで開発した方が良いのでしょうか?

http://blogs.msdn.com/b/japan_platform_sdkwindows_sdk_support_team_blog/archive/2011/12/29/unicode-vc.aspx
ちょっと古いのですが上記の記事ではUNICODEを推奨しています。
しかし現在の主流はUTF-8だと思うのでマルチバイトの方がいいでしょうか?
0302デフォルトの名無しさん2015/05/09(土) 11:01:57.68ID:4IoY+00I
dllを呼ぶって・・・
イミフ
0303デフォルトの名無しさん2015/05/09(土) 11:08:04.81ID:2HKbgDAs
いやーTCHARでしろっていわれてるじゃん
0304デフォルトの名無しさん2015/05/09(土) 12:02:57.99ID:5NEoo1tP
>>301
TCHARかUNICODE文字セットを使う
マルチバイト文字セットは環境依存で日本語のWindowsだとcp932
これをutf8に切り替えるオプションなんてもちろんないし
そもそもAPIがcp932のインターフェースしか無いので
現代の主流が云々など考えるだけムダ
モダンなプログラミングがしたければモダンなOS使え
0305デフォルトの名無しさん2015/05/09(土) 12:48:51.86ID:PwWAAfZb
おいらはwchar_tやwstringを使う
ようにしている。charは滅多に使わない。
なのでcharと言えばwchar_tを意味するようにしたいくらいだ。

typedef char wchar_t
とか
#define wchar_t char
ってやったらどうなるんだろう。
0306デフォルトの名無しさん2015/05/09(土) 13:19:26.21ID:cx7dem6B
コンパイラ持ってるならやってみればいいのに
0307デフォルトの名無しさん2015/05/09(土) 13:43:09.74ID:QFYNEVBc
Java厨だね
0308デフォルトの名無しさん2015/05/09(土) 14:56:09.74ID:dHKI9IMf
以前、utf8でモダンなプログラミングをしようとしたけど、windowsではやめたほうがいいよ
visual studioでデバッグするときも、utf8なstringは読めないからね
結局全部cp932になった
0309デフォルトの名無しさん2015/05/09(土) 15:13:06.28ID:x1xiQQNi
,s8ってつければ読めるよ
0310デフォルトの名無しさん2015/05/09(土) 15:37:00.89ID:qZm7gFud
windowsのunicodeってutf8なんだったっけ?
0311デフォルトの名無しさん2015/05/09(土) 15:44:31.24ID:CtUg1jEA
めんどくせえ、ずっとcp932じゃ
0312デフォルトの名無しさん2015/05/09(土) 15:48:36.60ID:x1xiQQNi
>>310
UTF16
0313デフォルトの名無しさん2015/05/09(土) 16:02:46.51ID:2HKbgDAs
utf8は可変長だからワイド文字ではない
0314デフォルトの名無しさん2015/05/09(土) 17:12:39.66ID:dHKI9IMf
>>309
あ、設定いじればできるのか。何の問題もなかったわ
API呼び出すときだけutf16に変換すればいいんだね
0315デフォルトの名無しさん2015/05/09(土) 17:19:35.65ID:dHKI9IMf
utf16はワイド文字なのに可変長というクソエンコーディングだけどね
0316デフォルトの名無しさん2015/05/09(土) 17:27:42.10ID:qeICslx9
どうせ基本多言語面しか使わんだろ
0317デフォルトの名無しさん2015/05/09(土) 19:03:16.99ID:gxvtiy3r
>>312
LE?
0318デフォルトの名無しさん2015/05/11(月) 23:30:14.93ID:o2fecJta
う〜ん、別にLinuxでもbsdでもWindowsでもstd::wstring使うならUCSで読み込んで処理することになるから一緒。
0319デフォルトの名無しさん2015/05/12(火) 12:20:59.31ID:ylqMkeqf
すみませんDirectShowの質問はここでいいんでしょうか?

【C++】 DirectX初心者質問スレ Part39 【C】
はスレ違いらしいので
0320デフォルトの名無しさん2015/05/12(火) 12:55:25.71ID:mcS0y+j7
10年前ならスレ違いじゃなかったんだけどね
0321デフォルトの名無しさん2015/05/12(火) 13:17:16.94ID:ZZfAUy1V
> 2004年10月、DirectShowはDirectXから外されDirectX Extraに含まれるようになり、
> さらには2005年4月、DirectShowはDirectXから完全に取り除かれ、
> 当時Windows Server 2003 SP1版だったPlatform SDKに移管された[2]。
> ただし、現在でもDirectShowのサンプルプログラムのビルドには依然としてDirectX SDKが必要である[11]。

スレチとか言い出したらめんどくせえ立ち位置だな。
0322デフォルトの名無しさん2015/05/12(火) 13:38:00.46ID:ylqMkeqf
移管されていたんですね、でもビルドにDXSDKが必要とは…

質問させていただきます。
WindowsXPでDirectShowを使い .wmaや.mp3 を高速に.wavに変換する機能を作りたいと思っています。
手始めにNULLレンダラを使い、 .wavファイルをIMediaControl::Run で再生して
ISampleGrabberCBのSampleCB、BufferCB メソッドで高速にサンプルを取得する事ができました。

.wavファイルの読み込みができたので、次は.wmaや.mp3を読み込もうとしたところ
なぜかわからないのですがSampleCB、BufferCBが呼ばれません。

試しにNULLレンダラを追加せず、IMediaControl::RenderFile で追加されるレンダラを使い
IMediaControl::Runで再生したところ、等速で音が再生されながら
ISampleGrabberCBのSampleCB、BufferCB メソッドでサンプルを取得する事ができました。

なんとか音を再生せずに高速で.wmaや,mp3のサンプルを取得したいのですがどうしたらいいのでしょうか?
0323デフォルトの名無しさん2015/05/12(火) 15:06:35.12ID:Z/MhgXt8
将来ディスプレイの解像度がすっごく上がって、
6万5千以上が有り得る状況になったら、
Win32APIはどうなってしまうのでしょうか。
有り得ないって?まぁそうかもしれませんが。
0324デフォルトの名無しさん2015/05/12(火) 15:09:08.77ID:mcS0y+j7
関数名の後ろにExがつくだけだろ
ExExExかもしれんがw
0325デフォルトの名無しさん2015/05/12(火) 15:18:10.11ID:Z/MhgXt8
いやいや、LPARAMのサイズが32bitで、これを幅と高さで二分割して16bit幅・・・
0326デフォルトの名無しさん2015/05/12(火) 15:20:40.89ID:yK9QlxPH
LPARAMは32bit固定じゃない
LONG_PTRだったはず
0327デフォルトの名無しさん2015/05/12(火) 16:20:35.40ID:Z/MhgXt8
そうなんだけど、64bit環境でWPARAMが64bitなのは当たり前なんだけど、
HIWRODやGET_X_LPARAMといったマクロは、32bitでも64bitでも同じもの。
64bit環境でも、WM_SIZEなんかで渡されるLPARAMは、
64bit幅を有効活用せず、上位32bitは使われない。
つまり64bit環境でもWM_SIZEのLPARAMで扱えるウィンドウサイズの上限は、0xFFFFまで。
内部仕様として無理って言うんじゃなくて、インターフェイス的に無理って言うのがなんとも残念。
将来的には、wp,lp使わずに、GetCursorPosやGetClientRectを使ってくれってなるんかね。
0328デフォルトの名無しさん2015/05/12(火) 16:44:48.43ID:yK9QlxPH
別メッセージになるんじゃね
0329デフォルトの名無しさん2015/05/12(火) 16:47:10.58ID:Z/MhgXt8
更に言えば、WM_LBUTTONDOWNなんかで渡されるLPARAMは、
符号ありなんで、0xFFFFの更に半分の0x7FFFまでしか扱えないんだよね。
4kディスプレイを横に9枚並べるとアウト。
今はまだぜんぜん余裕だけど、将来どうなるかは分からんよね。
たぶん特定のウィンドウスタイルを追加しないと、ウィンドウサイズが制限されるような事態になるのかね。
そんで専用のAPIで取得してくださいみたいな。

ただ、今のretinaクラス以上にDPIを上げても、人間の視力の限界だし、
retinaのDPIを維持したまま(300dpiとして)、0x7FFFをインチに換算すると、
109インチ(2.8m)なんで、考えるだけ意味無いかも。
0330デフォルトの名無しさん2015/05/12(火) 17:20:28.36ID:32yYIcwZ
初歩的な質問だと思いますが、
・RegisterClassでウィンドウクラスの登録
・CreateWindowでウィンドウの表示
・登録されたウィンドウプロシージャで各種処理

という最も基本的な流れでプログラムが動いていますが、作業中ウィンドウから
例えば「新規」を選ぶともう一枚ウィンドウが開いて全く別の作業ができるように
したい場合、単にCreateWindowすれば良さそうですが、同じウィンドウプロシージャ
だとこれまで使っていたデータと競合してしまいます。
かといって、ウィンドウごとにウィンドウプロシージャを別に用意って普通しないのでは?
と思います。

複数のウィンドウでウィンドウプロシージャは同一、データは別としたい場合、
一般的にはどうしているんでしょうか?
0331デフォルトの名無しさん2015/05/12(火) 17:31:08.89ID:yK9QlxPH
Get/SetWindowLongPtr+GWLP_USERDATA
0332デフォルトの名無しさん2015/05/12(火) 17:33:59.79ID:yK9QlxPH
じゃなかったらSetProp/GetProp/RemovePropとかかもね
0333片山博文MZ ◆T6xkBnTXz7B0 2015/05/12(火) 17:34:05.47ID:fncYevaL
>>330
GetWindowLongPtr/SetWindowLongPtrかハンドルマップを使って、
ウィンドウとデータを関連付ける。
0334デフォルトの名無しさん2015/05/12(火) 17:39:18.76ID:32yYIcwZ
>>331-333
なるほど、よく分かりました!
ありがとうございます。
0335デフォルトの名無しさん2015/05/12(火) 18:39:40.95ID:Z/MhgXt8
SetWindowSubclassを使っても良いぞ。
0336デフォルトの名無しさん2015/05/12(火) 20:43:51.58ID:P8yXA8AP
>>322
DirectShowは知らんがMedia FoundationにSource Reader/Sink Writerというまんまの機能があるで
標準のmp3デコーダがWin7からしか備わってねえからちと厳しいけど
0337デフォルトの名無しさん2015/05/12(火) 20:52:00.24ID:ylqMkeqf
Media Foundationでできるんですね。知りませんでした。
情報ありがとうございます。
0338デフォルトの名無しさん2015/05/13(水) 02:03:21.43ID:VzW8YhOf
VC++ でタスクマネージャを表示して、タブを切り替えることは
可能でしょうか?
0339デフォルトの名無しさん2015/05/13(水) 02:14:12.20ID:VzW8YhOf
もう少し具体的に言うと、
Win8でタスクマネージャ出して、
パフォーマンスタブを開いて、
右クリックメニューの
  [グラフを変更]の中の
    [論理プロセッサ]
表示にしたいのですが、VC++のプログラムで出来ますか?
0340デフォルトの名無しさん2015/05/13(水) 09:23:17.27ID:hDqQQ4M8
はい
0341デフォルトの名無しさん2015/05/13(水) 10:32:07.23ID:VzW8YhOf
>>340
ヒント教えてくれよ
0342デフォルトの名無しさん2015/05/13(水) 11:46:47.39ID:jTT2yS9m
キーボード(ALT+TABなど)・マウス操作などで、ウインドがアクティブになった瞬間での、メインウインドがどれかを調べたいです。
GetForegroundWindowで取得するhWndですが、GetForegroundWindowを使わずにグローバルフックで処理したい場合、
どのようにすればよいでしょうか?
試しに、WM_ACTIVEを拾って、表示してみたのですが、同様のメッセージが複数送られて来て判断がつきません。
0343デフォルトの名無しさん2015/05/13(水) 12:30:27.51ID:hDqQQ4M8
>>341
キーボード操作だけで>>339をやってみる
それを実装する

>>342
LOWORD(wParam)
0344デフォルトの名無しさん2015/05/13(水) 13:12:04.72ID:VzW8YhOf
>>343
ヒント、サンキュウ!
>キーボード操作だけで>>339をやってみる
>それを実装する
なるほど。試してみたいのだが、今、他の作業で超忙しくて手が離せない。
だれか暇な人がいたらサンプルを作ってくれるとうれしい。
0345デフォルトの名無しさん2015/05/13(水) 13:27:42.36ID:jTT2yS9m
>>343
ログ見る限り、うまく動いてませんね。。
// Dll
HWND hookWnd(){return ghookWnd;}
LRESULT CALLBACK fix32HookProc(int nCode, WPARAM wParam, LPARAM lParam){
if ( nCode < 0 ) return CallNextHookEx(hHook, nCode, wParam, lParam);
CWPSTRUCT* const p = (CWPSTRUCT*)lParam;
case WM_ACTIVE:
ghookWnd=p->hwnd;
SendMessage(gMainWnd,WM_USER,p->wParam,p->lParam);
break;
-------------------------------
// main
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){
switch(message){case WM_USER:
switch(LOWORD(wParam)){
case WA_ACTIVE: printf("%p WA_ACTIVE マウスクリック以外の方法でアクティブ化された %p\n",hookWnd(),(HWND)lParam); break;
case WA_CLICKACTIVE: printf("%p WA_CLICKACTIVE マウスクリックによってアクティブ化された %p\n",hookWnd(),(HWND)lParam); break;
case WA_INACTIVE: printf("%p WA_INACTIVE 非アクティブ化された(新しいハンドル%p)\n",hookWnd(),(HWND)lParam); break;
}
printf("GetForegroundWindow() %p\n",GetForegroundWindow());
}
GetForegroundWindow()の値とhookWnd(),(HWND)lParamの値が一致しないです。
WA_INACTIVEのとき、lParamには適正値が入るのは知ってます。
DLLのグローバルフック上のcase WM_ACTIVE:で、GetForegroundWindow()を呼び出してそれ使ったほうがよい?
0346デフォルトの名無しさん2015/05/13(水) 14:22:04.41ID:dI4ahC8f
なんでlParamと比べてるの?
hWndと比べるんじゃねえの?
0347デフォルトの名無しさん2015/05/13(水) 14:23:33.95ID:dI4ahC8f
あ、hookWnd()がhWndか
0348デフォルトの名無しさん2015/05/13(水) 14:32:38.40ID:qFyXwJnh
>>345
WH_SHELLでフックして HSHELL_WINDOWACTIVATED を拾えば?
0349デフォルトの名無しさん2015/05/13(水) 14:41:26.04ID:jTT2yS9m
>>348
ありがとう。試してみますね。
03503492015/05/13(水) 15:05:15.31ID:jTT2yS9m
>>348
試しましたが、デバッグ用のコンソールのウインドがアクティブになった場合、
そのウインドのイベントが発生せず。。うーん。。WH_CALLWNDPROCでフックして、WM_ACITVE内で、
GetForegroundWindow()使ったほうがいいのかもしれないorz
03513492015/05/13(水) 16:23:00.40ID:jTT2yS9m
開発環境が、64bit版のWin7で32ビットベースアプリでコンパイルしていたので、気が付きませんでしたが、
WIN8の32ビット版では、正しくHSHELL_WINDOWACTIVATEDは、GetForegroundWindow()の値と同じものが取得できました。
32Bit側のアプリ呼び出しの、AllocConsole();が、64BitOSだと、64Bitで動いていた可能性あり?
64BitDLL作って、調べてみます。
03523492015/05/13(水) 16:44:23.87ID:jTT2yS9m
64BIT版フックのDLL作って調べました。予想通り、AllocConsole()の窓は、64Bitウインドでした。
0353デフォルトの名無しさん2015/05/13(水) 17:37:17.83ID:hDqQQ4M8
>>344
それを丸投げという
0354デフォルトの名無しさん2015/05/13(水) 17:55:53.05ID:fE4vsJH4
マルウェアでも作るのか?
0355デフォルトの名無しさん2015/05/13(水) 18:26:26.64ID:I7FDspWM
<危険度対決!>
マルウェア vs 丸投げウェア
0356デフォルトの名無しさん2015/05/13(水) 18:45:24.92ID:jTT2yS9m
マルウェア?だと?!
0357デフォルトの名無しさん2015/05/13(水) 18:47:31.55ID:cKVTGKhm
秀まる?
0358デフォルトの名無しさん2015/05/13(水) 20:28:45.56ID:5e3tU8d3
>>344
おまえが暇になったらやればいいんじゃね?
0359デフォルトの名無しさん2015/05/14(木) 15:20:59.18ID:+nIQtAtr
長くてすみません。

ダイアログにタブコントロールを配置し、タブの切り替えに応じて
複数の子ダイアログを表示・非表示しています。

この子ダイアログにリストビューがあるのですが、マウスによって
ホイールに反応するものとしないものがあります。

恐らくマウスドライバの作りの差かと思いますが、プログラム側で
なにか工夫すれば対応できるようになるものでしょうか?

ホイールが反応しないケースでは、どうも親ダイアログに対して
スクロールさせるような命令が飛んできている感じではあります。
親ダイアログに直に配置したリストビューはマウスの種類に関係なく
ホイールに反応します。

この挙動から、親に来るメッセージ類を補足して現在表示中の
子ダイアログ下のマウスカーソルが下のリストビューのスクロール処理
をすれば理論的には良さそうです。

しかし、ここまでやらないといけないでしょうか?
0360デフォルトの名無しさん2015/05/14(木) 15:58:44.50ID:mCvwdOKM
>>359
ログ取って「リストビューにフォーカスがあるかどうか」調べてみるのは?
0361デフォルトの名無しさん2015/05/14(木) 16:05:44.65ID:7SdMC+6R
>>360 と同意見。当該子ダイアログを表示するときにリストビューに SetFocus() する
0362デフォルトの名無しさん2015/05/14(木) 16:44:59.33ID:+nIQtAtr
私も最初はフォーカスを疑いましたが、入力フォーカスは当たっています。

試行錯誤している内に、単にマウスドライバの問題ではないかという気がしてきました。

どうもありがとうございました。
0363片山博文MZ社外取補 ◆T6xkBnTXz7B0 2015/05/14(木) 21:40:41.08ID:opb9h0b1
HTML Helpは、デフォルトでブロックされて見れない。
落とし穴。絶対使うな。
0364デフォルトの名無しさん2015/05/14(木) 21:48:10.79ID:7SdMC+6R
インストーラ使えば問題ない
0365デフォルトの名無しさん2015/05/15(金) 06:41:01.84ID:w0X/ZpcK
WinMainの中で
AllocConsole();
してprintf出力しているのですが、
別スレッドを作成して、その中でもprintfしたところ、
このコンソールには出ませんでした。
どうすれば別スレッドからもこのコンソールに出せますか?
0366デフォルトの名無しさん2015/05/15(金) 12:35:19.68ID:0PkDPPO5
>>366
それは単純にはいかない
複数のスレッドから、からくりはどうであれ、一つのところに出力したいのなら、それなりの仕掛けが必要。

根本的に、各スレッド間で独立しているものはなに?共通なのはなに?
0367デフォルトの名無しさん2015/05/15(金) 13:09:13.22ID:nIpJir9o
>>365
文字列送信時、WM_COPYDATA を使ったらどうだろ?
メッセージを受信したら、その文字列をprintfすればいいんじゃね?
0368デフォルトの名無しさん2015/05/15(金) 13:22:09.71ID:hBLf1mma
>>365
http://www.f13g.com/%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0/C_C++/Windows/GUI%A4%C8CUI%A4%F2%BA%AE%BA%DF%A4%B5%A4%BB%A4%EB/
0369デフォルトの名無しさん2015/05/15(金) 13:31:24.00ID:nIpJir9o
>>365
// 受信用
case WM_COPYDATA: printf("%s",((COPYDATASTRUCT*)lParam)->lpData );
// 送信向け
void myprintf (HWND hWnd,HWND hWndTarget,char *format , ... )
{
char strbuf[2048]; // バッファサイズは適当に〜
va_list args; // printf っぽいくstrbufに文字列を加工する
memset(strbuf,0,sizeof(strbuf));
va_start( args, format);
vsprintf( strbuf, format, args);
va_end( args );
COPYDATASTRUCT cds;
cds.dwData = 0;
cds.cbData = sizeof(strbuf); / /送る文字列データの長さ。
cds.lpData = strbuf; // 送る文字列データのポインタ
SendMessage(hWndTarget,WM_COPYDATA,(WPARAM)hWnd,(LPARAM)&cds);
}
// ヘッダーを追加
#include <stdio.h>
#include <locale.h>
#pragma warning(disable:4996)
// winmain とかに追加してね
AllocConsole();
FILE *stream = freopen("CON", "w", stdout); // 標準出力の再割り当て
_tsetlocale(LC_ALL, _T("Japanese_Japan.932")); // wprintfとか使うなら!

// winmainのメイン メッセージ ループを抜けた最後の付近で後始末
fclose(stream);FreeConsole();
0370デフォルトの名無しさん2015/05/15(金) 18:44:45.43ID:WZ+HCGJP
>>359
タブを親窓にせず、メイン窓を親にする。
たしか入力メッセは、デフォルトプロシージャがフォーカスあるやつに送りつけたはず
タブは孫に渡さず使い捨てたと思う
0371デフォルトの名無しさん2015/05/15(金) 19:00:03.80ID:WZ+HCGJP
>>365
その別スレッド、全角文字をだしているとみた。
メインはASCIIのみ
0372デフォルトの名無しさん2015/05/15(金) 19:22:08.01ID:sCqaJb0K
コンボボックスのオーナードローで質問です。

これまでオーナードロー無しでコンボボックスを使っていましたが、今回オーナードローにするため
CBS_OWNERDRAWFIXED を付加して CreateWindow し、WM_DRAWITEM を処理するように追加しました。

すると、コンボボックスに設定されている文字列が文字化けしておかしくなります。
正確には、ComboBox_GetLBText でコンボボックス文字列が正しく取得できません。

コンボボックスは以下のように作っており、CBS_OWNERDRAWFIXEDを付加しない場合、なにも問題は出ません。
{
hComboWnd = CreateWindowEx(WS_EX_CLIENTEDGE, "ComboBox", "",
    WS_CHILD | WS_VISIBLE | CBS_DROPDOWNLIST | WS_VSCROLL | CBS_OWNERDRAWFIXED,
    0, 0, 100, 500, hWnd, (HMENU)1, GetWindowInstance(hWnd), NULL);
ComboBox_ResetContent(hComboWnd);
ComboBox_AddString(hComboWnd, "text A");
ComboBox_AddString(hComboWnd, "text B");
ComboBox_AddString(hComboWnd, "text C");
}
0373デフォルトの名無しさん2015/05/15(金) 19:25:12.49ID:sCqaJb0K
オーナードロー部分はざっくり以下のように簡単に作り直しましたが、文字化けします。
どこかおかしいところがありますでしょうか?

static void DrawItemProc(
  HWND  hWnd, int iId, LPDRAWITEMSTRUCT  drawitem
)
{
変数宣言略
  if (iId != 1)  return;
  ComboBox_GetLBText(drawitem->hwndItem, drawitem->itemID, szbuf);
  if (drawitem->itemState & ODS_SELECTED) {
    rgbText = RGB(255, 255, 255);
    rgbBack = RGB(0, 0, 200);
  } else {
    rgbText = 0;
    rgbBack = RGB(255, 255, 255);
  }
  hPen = CreatePen(PS_SOLID, 1, rgbText);
  hBrush = CreateSolidBrush(rgbBack);
  SelectObject(drawitem->hDC, hPen);
  SelectObject(drawitem->hDC, hBrush);
  Rectangle(drawitem->hDC, drawitem->rcItem.left, drawitem->rcItem.top, drawitem->rcItem.right, drawitem->rcItem.bottom);
  TextOut(drawitem->hDC, 0, 0, szbuf, lstrlen(szbuf));
}

WndProc(
略
    case WM_DRAWITEM:
      DrawItemProc(hWnd, (UINT)wParam, (LPDRAWITEMSTRUCT)lParam);
0374片山博文MZ社外取補 ◆T6xkBnTXz7B0 2015/05/15(金) 19:28:57.49ID:hBLf1mma
ComboBoxは古くてUnicodeに未対応。ComboBoxEx使え。
0375デフォルトの名無しさん2015/05/15(金) 19:40:42.30ID:WZ+HCGJP
コモンコントロールなんか捨てちまえ
自分で書いた方が、実装が早い。あれは人に使わせるように書いたものじゃない

あと最近気になるのは、
多分、コモンコントロールはDirect2Dを使っていない。
0376デフォルトの名無しさん2015/05/15(金) 19:46:23.99ID:w0X/ZpcK
>>369
サンプルプログラム有難うございました。
無事にうごきました。別スレットからConsoleに出力できました。
大変助かりました。感謝です。

本件とは無関係ですが、この自作プログラムの中で
printfやcoutしている箇所がいくつかあるのですが、プログラムを
実行していると、ある時点から改行されずに、横につながって出力
されてしまうおかしな症状が出て悪戦苦闘しています。
printf("\n");や cout<<endl;でも
改行しなくなるなるんです。
こんな症状は初めてで、何がおかしいか心当たりが全くありません。
今回の別スレッドプリント機能を追加する前からそうなっていました。
もし何か解決のヒントありましたらアドバイスよろしく。
0377片山博文MZ社外取補 ◆T6xkBnTXz7B0 2015/05/15(金) 19:51:35.16ID:hBLf1mma
>>376
CriticalSectionで排他制御、または入出力の同期
0378デフォルトの名無しさん2015/05/15(金) 20:01:24.06ID:AZhRVSC1
>>373
TextOut(drawitem->hDC, drawitem->rcItem.left, drawitem->rcItem.top, szbuf, lstrlen(szbuf));
じゃないのか?

それと、ComboBox_AddString() では文字列を指定せず、
描画したい文字列へのポインタを ComboBox_SelectItemData() して保持するほうがラク

保持した文字列へのポインタは drawitem->itemData にあるので、それをDrawText() する
(NULL で終わる文字列の場合に文字数を指定しなくていいので、TextOut()するよりラク)
0379デフォルトの名無しさん2015/05/15(金) 20:02:42.29ID:AZhRVSC1
×ComboBox_SelectItemData()
○ComboBox_SetItemData()
0380デフォルトの名無しさん2015/05/15(金) 20:30:49.43ID:w0X/ZpcK
>>377
片山さん、
レスありがとうございます。
さっそく
CriticalSectionでググッて、たまたま見つけた
http://bituse.info/winapi/16
のサンプルをみて、
InitializeCriticalSection()
EnterCriticalSection()
LeaveCriticalSection()
などを追加してみましたが改善されません。
サブスレッドは、
std::packaged_task
std::thread
を使って作成しています。
も少し何かチェックすべき点などありましたらご指導お願いします。
0381片山博文MZ社外取補 ◆T6xkBnTXz7B0 2015/05/15(金) 20:34:20.00ID:hBLf1mma
sync_with_stdioかな?
03823692015/05/15(金) 20:38:08.04ID:nIpJir9o
>>376
動いてよかったね。

マルチスレッド系なら、>>377のアドバイス通り、CriticalSectionの処理忘れずに。

あと、マルチスレッドのチェックを入れておくこと。
VS2013であれば、
構成プロパティ->C/C++ ->コード生成->ランタイムライブラリー
->マルチスレッド/mt か マルチスレッド/mtd
この設定しておかないと、CRT系のライブラリーで不具合出た記憶がある。
0383デフォルトの名無しさん2015/05/15(金) 22:12:36.63ID:sI8inuS2
VC2005あたりから、MT/MTdだけになったんじゃないか?
03843692015/05/15(金) 23:02:43.90ID:nIpJir9o
>>383
たしかに。。VS6から2013に移ったので気付かなかったw
0385デフォルトの名無しさん2015/05/15(金) 23:04:15.12ID:sCqaJb0K
>>378
> TextOut(drawitem->hDC, drawitem->rcItem.left, drawitem->rcItem.top, szbuf, lstrlen(szbuf));
> じゃないのか?

そこは仰る通りです。後で気付きました。


> それと、ComboBox_AddString() では文字列を指定せず、

あれから CBS_HASSTRINGS ウィンドウスタイルを追加して問題が一旦解決していたのですが、
なんでこんなものがあるのかと調べているところでした。(他に別の問題が出てきて・・)

ComboBox_SetItemData で別のデータをセットしていたので、この辺を踏まえて
構造体ポインタでもセットした方が良さそうですね。

どうもありがとうございました。
0386デフォルトの名無しさん2015/05/21(木) 12:41:57.14ID:iDqwREQX
  
0387デフォルトの名無しさん2015/05/23(土) 03:46:59.36ID:Xep2wRPy
マウスの位置の下のウインドハンドルを調べたい場合どうすればよいですか?
WindowFromPointだと、拾えないハンドルがあるみたいです。
APIの解説読むとChildWindowFromPoint使えと書いてあったのですが、親ウインドを調べる場合はどうすれば?
EnumWindowsとChildWindowFromPointの組み合わせとかになるんでしょうか?
一番上にあるウインドのハンドルが知りたいです。
0388デフォルトの名無しさん2015/05/23(土) 08:37:51.43ID:Henr8hEj
EnumWindowでハンドルもらってGetWindowRectちゃうか
0389デフォルトの名無しさん2015/05/23(土) 09:31:52.27ID:Xep2wRPy
>>388
Zオーダーとかも考慮する必要があるので複雑になると思うのですが。。?
0390片山博文MZ ◆T6xkBnTXz7B0 2015/05/23(土) 10:01:44.26ID:ojXlCtK2
ChildWindowFromPointの第一引数にNULL。
GetParentを繰り返し呼ぶ。
0391デフォルトの名無しさん2015/05/23(土) 11:00:20.06ID:dJKu3sZC
自分のウィンドウならマウスホバーメッセージが飛んでくる
この辺りの基本は、日本語でMSDNにハウトゥが書いてあるぞ
他プロセスのウィンドウを調べる方法もあるが、普通は要らない
なんかストークソフトの技術質問ばかりだな、ここ
0392デフォルトの名無しさん2015/05/23(土) 11:39:31.72ID:e7q+dZJt
>親ウインドを調べる場合はどうすれば?
GetAncestor()
0393デフォルトの名無しさん2015/05/23(土) 11:48:13.91ID:EdDrIok9
(^^)
http://livedoor.blogimg.jp/sytsyt/imgs/9/1/9128060f.png
0394デフォルトの名無しさん2015/05/23(土) 14:02:41.96ID:LbQhEyX4
spy とか inspect のツールじゃダメなん?
ちなみに inspect は UI Automation とかいう開発者向けの I/F を使ってるらしい
0395デフォルトの名無しさん2015/05/23(土) 16:17:09.12ID:N5mcUzwL
マウスフックじゃあかんの?
0396片山博文MZ ◆T6xkBnTXz7B0 2015/05/23(土) 17:44:15.28ID:ojXlCtK2
コントロールパネルやアンインストール情報を表示するのに二分もかかるシステムは、淘汰されるべきだ。#Microsoft
0397デフォルトの名無しさん2015/05/23(土) 18:06:16.36ID:e7q+dZJt
それはPCがおかしい
0398デフォルトの名無しさん2015/05/23(土) 18:38:18.33ID:YAXRIJCD
お前が淘汰されないユルい世界に感謝しな
0399デフォルトの名無しさん2015/05/23(土) 21:36:40.32ID:SD28Qaym
なーんで、Process32FirstやらNextはフックできないんだろう。
これシステムでなにかロックされてる?
0400片山博文MZ ◆T6xkBnTXz7B0 2015/05/23(土) 22:08:05.87ID:ojXlCtK2
>>399
Process32*フックできたら、存在するプロセスを隠せるセキュリティ上の問題が発生する
0401デフォルトの名無しさん2015/05/23(土) 22:59:40.12ID:aSQ4opfb
DirectXでフルスクリーンからウィンドウモードに戻すとウィンドウスタイルがAero GlassからAero Basicになっているのですが再度Aero Glassに戻すにはどうしたらいいのでしょうか?
0402デフォルトの名無しさん2015/05/24(日) 00:17:54.61ID:r97vly3l
DwmEnableCompositionで手動で戻してみたら?
本来必要のない手続きだから環境かプログラムのどちらかがおかしいけど
0403デフォルトの名無しさん2015/05/24(日) 01:48:20.80ID:/8p/6XEk
Aeroとか言うウンコが早く死にますように(-人-)
0404デフォルトの名無しさん2015/05/24(日) 01:52:56.76ID:qlvppzxo
Aeroがウンコなんじゃなくて、お前のPCのスペックがウンコなんだろ
0405デフォルトの名無しさん2015/05/24(日) 02:38:12.25ID:fc/UFx7b
どこからスペックの話が出てきたのか
04064012015/05/24(日) 03:01:23.80ID:4hOp25cH
>>402
ありがとうございます

SetWindowLongの第二引数をGWL_EXSTYLEとしていたのが原因でした
GWL_STYLEでできました
0407デフォルトの名無しさん2015/05/24(日) 10:25:17.19ID:y1MgTLvO
スペックが低いと頼みもしないのに自動切り替えが起きる
のも知らんアフォはともかく
http://it.srad.jp/story/11/09/17/0527253/
0408デフォルトの名無しさん2015/05/24(日) 10:41:11.74ID:G2/oGA6A
話の通じない人って困るよね(´・ω・`)
0409デフォルトの名無しさん2015/05/24(日) 13:52:42.90ID:xY4KxC2+
頭がウンコなんだろ
0410デフォルトの名無しさん2015/05/24(日) 16:04:21.97ID:riQhXw9m
WINDOWSの右クリック時で開かれるポップアップメニューなどがあった場合、
他のウインドにフォーカスが移動したときに、ポップアップメニューが勝手に消えますよね。
それを自分のウインドにフォーカスが移った場合、ポップアップメニューを閉じないようにするには、
どうすればよいでしょうか?
0411デフォルトの名無しさん2015/05/24(日) 16:15:06.24ID:tHPLTcxB
ポップアップメニューを自作のポップアップウィンドウにする
0412デフォルトの名無しさん2015/05/24(日) 16:17:51.47ID:riQhXw9m
フックとかそーいったの使ってでも制御したいので、ヒントがほしいです。
ちーたんタッチボードとかは、ポップアップメニューについて、ポップアップ維持の処理が制御できているみたいです。
0413デフォルトの名無しさん2015/05/24(日) 16:50:29.70ID:GWZDfR0O
自身のウィンドウが「フォアグラウンドでない場合」にポップアップメニューを表示すると
他のアプリケーションがフォアグランドになっても、表示したポップアップメニューは消えない。
0414デフォルトの名無しさん2015/05/24(日) 23:33:23.28ID:riQhXw9m
この辺試してみたけどうまくいかないです。。
LockSetForegroundWindow(LSFW_LOCK);
CreateWindowEx(WS_EX_NOACTIVATE, ...
case WM_NCACTIVATE: return DefWindowProc(hWnd, message, 1, lParam);

ポップアップウインドのサブクラス化ってできませんよね?
WM_CLOSEをフォーカスが自分のウインドにあった場合、キャンセルさせようかと思ったんですが
ポップアップメニューってウインドハンドルないのかな?
0415デフォルトの名無しさん2015/05/24(日) 23:54:34.27ID:JmEJu+yH
>>414
WM_CLOSEじゃなくShowWindow(hwnd, SW_HIDE)ならフックになるな
0416デフォルトの名無しさん2015/05/25(月) 00:12:22.08ID:Y4roGc/9
>>415
WM_ACTIVE:と、WM_NCACTIVE:のタイミング両方で、
SetActiveWindow( hBackupWnd );SetForegroundWindow(hBackupWnd);を動かしてみたんですけど、
ウインドの状態は前のウインドで保持されてはいますが、ポップアップメニューが閉じてしまいます。
WM_NCHITTESTを戻り値を0にしてもだめです。。
ポップアップメニューのウインドハンドル調べてみたのですが、ハンドルを得ることできそうもないです。
困った。。
0417片山博文MZ ◆T6xkBnTXz7B0 2015/05/25(月) 00:18:26.56ID:LQzNccs7
Win32のメニューはウィンドウではない。
ただメニューと同じ動作のウィンドウは作ることはできる。
自作のポップアップウィンドウをメニューに見せるのが一番。
0418デフォルトの名無しさん2015/05/25(月) 00:26:32.69ID:8Crjy0ou
ウィンドウじゃないとか嘘つくなよ
ポップアップメニュー表示中に
FindWindow("#32768", NULL)でウィンドウハンドル取れるだろ
0419デフォルトの名無しさん2015/05/25(月) 00:28:30.28ID:Y4roGc/9
片山さん、自分のポップアップメニューではなく、他者のアプリのポップアップメニューですが、同じようなものは作成できるんでしょうか?
やりたいことは、ちーたんタッチボードや、TouchMousePointerなどの入力系ツールの作成です。
もしくは、マウスのイベントを無効にして、自分のウインドにフォーカスが移らないようにすることはできますか?
0420デフォルトの名無しさん2015/05/25(月) 00:31:17.45ID:n6K4TpsH
いちばん簡単な方法は>>411の

「ポップアップウィンドウを作って、ポップアップメニューに見せかける」
0421デフォルトの名無しさん2015/05/25(月) 00:36:33.73ID:Y4roGc/9
>>418
FindWindow("#32768", NULL)は知りませんでした助かります。ありがとうございます。
0422デフォルトの名無しさん2015/05/25(月) 00:48:07.44ID:Y4roGc/9
FindWindow("#32768", NULL)試してみたのですが、OS固有のポップアップメニューは処理できそうな感じですが、
他のアプリが作ってる一部のポップアップメニューのハンドルは取れそうもないっぽいです。
例:フラッシュアプリで右クリックなどのポップアップなど
マウスフック試してみるか。。
0423デフォルトの名無しさん2015/05/25(月) 00:53:05.46ID:xFjitowq
フックできるならTrackPopupMenuのフックは?
0424デフォルトの名無しさん2015/05/25(月) 01:03:47.42ID:Y4roGc/9
>>423
さきほどのFindWindow("#32768", NULL)とグローバルフック経由からのサブクラス化など使えば
PopupMenuのフックはいけそうですね。

マウスフックのAPI眺めてみたのですが、それっぽいメッセージの処理ができそうもなかったので、
WH_CBTフックで、アクティブ拒否ができるか試してみます。
こっちのほうが簡単かな?
0425デフォルトの名無しさん2015/05/25(月) 01:39:07.50ID:Y4roGc/9
WH_CBTフックで、アクティブ拒否したのですが、ポップアップメニュー消えちゃうぅぅ。
0426片山博文MZ ◆T6xkBnTXz7B0 2015/05/25(月) 06:20:25.54ID:LQzNccs7
>>418
私の間違いでした。懺悔します。
0427デフォルトの名無しさん2015/05/25(月) 09:52:54.90ID:5Xzz88z5
へー
メニューってウィンドウなんだー

じゃあ逆に、普通のウィンドウをOSのメニューと完全に同じにフワッと表示したり選択項目だけがフェイド・アウトしたり
みたいな効果つけれるかね?
0428デフォルトの名無しさん2015/05/25(月) 11:00:17.64ID:7nFkPzEN
えっ!? できないと思ってるの??
ヒント: WS_EX_LAYERED
0429デフォルトの名無しさん2015/05/25(月) 13:49:31.31ID:5Xzz88z5
なにがヒントじゃハゲ
0430デフォルトの名無しさん2015/05/25(月) 14:02:59.81ID:7nFkPzEN
悪いかデブ
0431デフォルトの名無しさん2015/05/25(月) 14:08:24.82ID:JYCHMnRj
あの有名なトム・ジェリー氏も仲良くデュエルしろと言ってるし良いんじゃないか。
0432デフォルトの名無しさん2015/05/25(月) 17:29:27.21ID:2/V0nnt+
ホックなんかしなくても LayeredWindow で transparent 属性にしたら常に最前面が可能
0433デフォルトの名無しさん2015/05/25(月) 17:42:38.61ID:QP0bivbh
富むとジェリぃ
なっかっよーくジェノサイど
0434デフォルトの名無しさん2015/05/25(月) 20:24:07.83ID:Y4roGc/9
情報ありがとうございます。
transparent属性にしたらそのウインドでのタッチイベント(WM_TOUCH)発生するんでしょうか?
WS_EX_TRANSPARENTの属性をつけると、ヒットテストそのものが起きないとMSDNのサンプルに乗ってるんですが。。

https://msdn.microsoft.com/ja-jp/library/ms997507.aspx
hwnd = CreateWindowEx(WS_EX_LAYERED | // レイヤード ウィンドウ
WS_EX_TRANSPARENT | // このウィンドウをヒット テストしない

後ほど試して見ます。
0435デフォルトの名無しさん2015/05/26(火) 08:43:02.67ID:pOYKgSOy
こういうの見ると良く出来てると思う
http://show-dc.info/desktop-clock-gallery/simple-clock/5-colors-round-clock
0436デフォルトの名無しさん2015/05/26(火) 08:45:21.28ID:pOYKgSOy
こっちだった
http://www.vector.co.jp/soft/cmt/winnt/personal/se361316.html
04374342015/05/26(火) 18:10:23.25ID:8e2ytTC5
WS_EX_TRANSPARENT属性つけましたが、予想通りWM_TOUCHイベント発生せず。。
ポップアップメニュー保持したまま自分のウインドをタッチ操作することってどうすればいいんだろう?

実現しているソフトをSPY使ってウインドクラスのスタイルと拡張スタイルを見たのですが、同じようにウインドを生成しましたが、
ポップアップメニュー保持はできませんでした。
実現しているソフトのウインドスタイルがこんな感じです。
WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_RIGHTSCROLLBAR | WS_EX_TOPMOST | WS_EX_CONTROLPARENT
WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_OVERLAPPED | WS_MAXIMIZEBOX
0438デフォルトの名無しさん2015/05/26(火) 18:22:12.43ID:JdoiEwqA
そもそも自前のポップアップメニューを実現すること自体が難しい。
ポップアップメニュー以外の部分をクリックしたときに、ポップアップメニューを消すのが難しい。
そこで、アプリ毎に、あの手この手で実現しているので、
全てに対応するのは無理だと思うのね。
0439デフォルトの名無しさん2015/05/26(火) 18:42:11.63ID:s2c/IHjz
Firefoxのブックマークのメニューでも
たまにサブアイテムが複数開いたままになったりするしな
0440デフォルトの名無しさん2015/05/26(火) 19:07:09.30ID:yWiUgxdI
メニュー表示を保持しているソフトの、そのメニューはSpyしてみたの?

・・・メニューじゃなかったりしてw
04414342015/05/26(火) 19:10:40.34ID:8e2ytTC5
ポップアップメニューを表示したまま、スパイにフォーカスを当てると、
ポップアップメニューが消えてしまい、スパイで監視することができません;;
0442デフォルトの名無しさん2015/05/26(火) 19:12:11.53ID:yWiUgxdI
何もフォーカスあてなくても、そのソフトのツリーをたどりゃいいじゃん (^_^;
0443デフォルトの名無しさん2015/05/26(火) 19:13:43.31ID:yWiUgxdI
あ、Spy をアクティブにした時点で消えるってことかな
04444342015/05/26(火) 19:16:07.64ID:8e2ytTC5
実現しているソフト(ちーたんタッチボード)では、
マウス操作の場合、ポップアップメニュを開いた状態から、アプリのウインドにフォーカスを移すと、ポップアップは消えます。
タッチパネルで操作する場合、上記条件で、アプリのウインドにフォーカスを移した場合、
ポップアップは維持されていて、ファイヤーフォックスやら、Googleクロームやらのポップアップメニューも
表示されたまま操作できています。
0445デフォルトの名無しさん2015/05/26(火) 19:29:45.63ID:Wubd1VRv
>>438
つWM_KILLFOCUS
0446デフォルトの名無しさん2015/05/26(火) 19:49:21.15ID:yWiUgxdI
FireFox ってオープンソースじゃなかったっけ? :-P
0447デフォルトの名無しさん2015/05/26(火) 20:09:52.82ID:JdoiEwqA
>>445
それがあんまうまくいかんのよ。
全てのウィンドウがフォーカスを受け取るとは限らんので。
マウスクリックしてもフォーカスイラネーってウィンドウがあると、
そこでクリックしてもKILLFOCUSが発生しない。
例えばツールバーとかはフォーカスを受け取らない。
04484342015/05/26(火) 20:12:54.79ID:8e2ytTC5
秀丸や、OS標準のnotepadとか、開いて、右クリックのポップアップメニューとかも普通に処理できているので、
自前でポップアップメニューを生成しているわけではなさそうです。
0449デフォルトの名無しさん2015/05/26(火) 20:14:18.14ID:PeUEmaw1
メニューだしたら、マウスイベントをグローバルフック
ヒットテストしてメニューでなければ消す
これで終わりだろ
04504342015/05/26(火) 21:22:50.67ID:8e2ytTC5
>>449
マウスのグローバルフックで、自分のウインドに関して、
すべてlp->wHitTestCode = HTTRANSPARENT;で処理無効にしましたが、効果なしでした。
LRESULT CALLBACK HookMouseProc(int nCode, WPARAM wParam, LPARAM lParam){
MOUSEHOOKSTRUCT *lp = (MOUSEHOOKSTRUCT*)lParam;
if( nCode == HC_ACTION){
if( lp->hwnd == hMainWnd){
lp->wHitTestCode = HTTRANSPARENT;return 1;
}
}
return CallNextHookEx(g_hHookMouse, nCode, wParam, lParam);
}
0451デフォルトの名無しさん2015/05/26(火) 21:41:44.94ID:yWiUgxdI
「自身のアプリにフォーカスが移動しても、他のアプリが出したポップアップメニューを
消さない方法があれば教えてください」

・・・という質問であることがやっとわかった。orz
04524342015/05/26(火) 21:46:41.89ID:8e2ytTC5
>>451
私の説明が下手で申し訳ない。そのとおりです。
04534342015/05/27(水) 06:12:50.61ID:cNWj5KEM
自己解決しました。WM_TOUCHが原因でした。さらばWIN7 orz
Process touch input with Direct Manipulation sampleをダウンロードして一部を書き換えたら問題が解決できました。
いろいろ有難うございました。
0454デフォルトの名無しさん2015/05/27(水) 09:24:46.64ID:kMgatPrw
何が問題だったのか

全く参考にならないゴミレスの山だけが残った。
04554342015/05/27(水) 10:23:05.35ID:cNWj5KEM
>>454
Win7以降をターゲット機とし、WM_TOUCH前提でトラックパットのアプリを作っていました。
トラックパット内で、右クリック同等のボタンを、デスクトップ上で押した場合、
ポップアップメニューが表示されるのですが、トラックパットにフォーカスが移ると
ポップアップメニューが消えてしまいトラックパットの操作ができません。
アプリとしては致命的なので、451さんが書かれている質問をしました。
前スレッドの781さんが書かれていたWin8向けのAPIを使ったら上記の問題が解消できたという内容です。
いろいろと言葉足らずですみません。
前スレッドの781さん有難うございました。
0456デフォルトの名無しさん2015/05/27(水) 12:41:25.80ID:A76Dyx8a
454に指摘されてもなお、解決方法を具体的に書けない434であった
0457デフォルトの名無しさん2015/05/27(水) 14:50:16.35ID:elZ3FXt4
肩パットのアプリも作ってくれ
0458デフォルトの名無しさん2015/05/27(水) 15:18:24.34ID:N+gURrK4
肩パァン
04594342015/05/27(水) 15:31:52.16ID:cNWj5KEM
>>456,454
WM_TOUCH以外のやり方は、まだ、理解していないので、自分のコードはかけませんが、解決だと思ったコードは次のとおりです。
MSDNから、Process touch input with Direct Manipulation sampleをダウンロードして、
AppWindow.cppの80行目のCreateWindowを、拡張スタイルでCreateWindowEx(WS_EX_NOACTIVATE, に置き換えたら上記の問題は解決できました。
Process touch input with Direct Manipulation sampleは、781の紹介されたWin8 APIのページからたどったら出てきます。
WM_TOUCHの代わりのAPI、WM_POINTERDOWN:関連はこれから調べる感じです。
このような感じでいいですか?勉強不足ですみません。
0460デフォルトの名無しさん2015/05/27(水) 16:38:01.80ID:jmeRjzK/
よくできまちた
0461デフォルトの名無しさん2015/05/27(水) 17:51:53.06ID:dJYLVBc0
>>459
次からはちゃんと「具体的に書いて下さいお願いします」って言わせなきゃダメだよ
0462デフォルトの名無しさん2015/05/27(水) 18:34:50.13ID:kMgatPrw
んー?
WS_EX_NOACTIVATEウィンドウでWM_TOUCHが来ないのが問題だったけど、WM_POINTERDOWN関連なら来るから解決しました。
なのか?

別に具体的に細かく説明しろって言ってんじゃなくて、要点を説明して欲しいだけなんだけどな。
04634342015/05/27(水) 19:19:31.11ID:cNWj5KEM
ちょっと違う。
要点としては、WS_EX_NOACTIVATE前提でプログラムをWM_TOUCHのメッセージをスパイでみると、
指でタッチした場合、WM_TOUCHの後に、WM_MOUSEMOVE、WM_LBUTTONDOWN、WM_LBUTTONUPなどが勝手に走ります。
WM_POINTERDOWNのみで処理した場合、WM_MOUSEMOVE、WM_LBUTTONDOWN、WM_LBUTTONUPは走りません。
この特性があるみたいです。

今回の不具合の現象は、上記の特性を見ると、WM_TOUCH経由は、マウスメッセージ連動されているので、
他のアプリで、ポップアップメニューが開いている場合、自分のウインド(WS_EX_NOACTIVATE)をタッチしたら、
マウスがポップアップメニュではない、どこかの座標をクリックしたと認識して、
ポップアップメニューが閉じちゃう現象が起きていたと思われます。
0464デフォルトの名無しさん2015/05/28(木) 17:00:30.45ID:lhfHDjjO
質問です。
CreateWindowで異なるアプリケーションのウインド上に、子ウインドは作成できるのでしょうか?
0465デフォルトの名無しさん2015/05/28(木) 17:04:17.89ID:BPOchcgZ
>>464
作れる。スクリーンセーバーのプレビューみたいに
0466デフォルトの名無しさん2015/05/28(木) 17:07:43.26ID:06Vv4FJt
風が語り掛けます
0467デフォルトの名無しさん2015/05/28(木) 17:36:24.01ID:lhfHDjjO
早速テストしました。
他のウインドに自分の子ウィンドを貼り付けられました。
不具合が出ました。
ターゲットとなる実行名 ChildTest1 ウインド名のクラス名 ChildTest1 子ウインドのクラス名 MyChild
[ChildTest1]
+--- MyChild
があったとします。
自分の子を貼り付けたい子ウインドのクラス名 MyChildEx
hTarget = FindWindow(L"ChildTest1",NULL);
hChild=CreateWindow(L"MyChildEx",L"MyChildEx",WS_CHILD | WS_OVERLAPPEDWINDOW | WS_VISIBLE,0,0,200,200,hTarget,0,hInst,0);
[ChildTest1]
+--- MyChild
+--- MyChildEx
と表示はできたのですが、MyChildExまたはMyChildのウインドウを動かすとMyChildなどの画面が崩れたりします。

これは、異なるスレッドが原因なのでしょうか?
それとも、ウインドスタイルのオプションが足りないということでしょうか?
0468デフォルトの名無しさん2015/05/28(木) 17:46:06.79ID:9DjcQz3v
ウィンドウスタイルじゃね
https://github.com/andanteyk/ElectronicObserver/blob/master/ElectronicObserver/Window/Integrate/FormIntegrated.cs#L303
0469デフォルトの名無しさん2015/05/28(木) 17:51:33.44ID:BPOchcgZ
>WS_CHILD | WS_OVERLAPPEDWINDOW

組み合わせが間違えてる。ウィンドウスタイルの勉強からやり直し。
0470デフォルトの名無しさん2015/05/28(木) 17:59:08.51ID:Dc/ggFvR
Unicodeで決め打ちなら CreateWindowWしようぜ。
今のままじゃ、#define UNICODE 外したらコケるぞ
0471デフォルトの名無しさん2015/05/28(木) 18:04:16.41ID:lhfHDjjO
>>469
あ、そうですね。手抜きコードしてたらそのようでした。
0472デフォルトの名無しさん2015/05/28(木) 18:33:07.81ID:nbjUOWor
ここはスパイウェア技術の質問スレみたいだな
0473デフォルトの名無しさん2015/05/28(木) 19:57:37.48ID:s/u4gtlI
こんなショボい話題でスパイウェア?
0474デフォルトの名無しさん2015/05/28(木) 20:06:02.00ID:Dc/ggFvR
東北弁だよ、たぶん。スパイ(失敗)ウェア
0475デフォルトの名無しさん2015/05/28(木) 23:08:49.45ID:N7liwE7G
似非東北弁うぜー
0476デフォルトの名無しさん2015/05/29(金) 03:04:11.67ID:YObp/eEX
Windows8の場合、メトロスタイルに移動時、デスクトップに復帰時、ウインドウメッセージは、何がくるのでしょうか?
WM_なんだろう?
0477デフォルトの名無しさん2015/05/29(金) 05:29:37.46ID:YObp/eEX
WM_メッセージなんてなかったorz
https://social.msdn.microsoft.com/Forums/ja-JP/21fde3c7-30a5-4b38-8711-5086c591694c/windows81-win32-?forum=windowsgeneraldevelopmentissuesja
0478デフォルトの名無しさん2015/05/29(金) 12:27:23.52ID:cPU9CNQ0
そんなメッセージは見たことも必要性も感じないな
ユーザが何してようがしったこっちゃない
0479デフォルトの名無しさん2015/05/29(金) 12:31:46.95ID:cPU9CNQ0
てか、ブラウザのテキストボックスの上に自分のテキストボックスを貼り付けて、入力をフックしたいんだろ
0480デフォルトの名無しさん2015/05/29(金) 13:14:52.12ID:41ckpjjx
お前の脳みそ、フックされてるぞ?
0481デフォルトの名無しさん2015/05/29(金) 13:52:33.02ID:cPU9CNQ0
自分のプログラムから、他人のウィンドウの上に子ウィンドウを乗せるシチュエーションが想像できない
自分のソフトなら、そっちでやればよい
IMEなら、そっちの仕組みを使えばよい

WMSIZEが飛んでこないだろ
0482デフォルトの名無しさん2015/05/30(土) 17:41:29.50ID:AsLlcQ98
FindFirstFileでディレクトリ内のフォルダを取得しようとしたんですが、Program Filesのようにパスにスペースが入ると取得できないようになりました
(""で括ったりスペースを~で置き換えたりしてもダメでした) こういう場合はどうすれば良いんですかね・・・


HANDLE hFind;
WIN32_FIND_DATA win32fd;
char m_cFind[MAX_PATH];
int bank_max = 0;
string bank_name[99];

::strcpy_s(m_cFind, MAX_PATH, "D:\\\"Program Files\"");   //D:\\test なら問題なく取得できた
::strcat_s(m_cFind, MAX_PATH, "\\");
::strcat_s(m_cFind, MAX_PATH, "*");

hFind = FindFirstFile(m_cFind, &win32fd);
do {
 if (hFind != INVALID_HANDLE_VALUE) {
  if (strcmp(win32fd.cFileName, ".") && strcmp(win32fd.cFileName, "..")){
   if (win32fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
    bank_name[bank_max] = win32fd.cFileName;
    bank_max++;
   }
  }
 }
} while (FindNextFile(hFind, &win32fd));
FindClose(hFind);
0483デフォルトの名無しさん2015/05/30(土) 17:53:27.81ID:j4YY/rva
>::strcpy_s(m_cFind, MAX_PATH, "D:\\\"Program Files\"");

探そうとするファイルは「D:\"Program Files"」にあるの?
0484デフォルトの名無しさん2015/05/30(土) 18:08:52.77ID:AsLlcQ98
>>483
最初は「D:\\Program Files」でやったんですけど、ダメだったんで「D:\\Program~Files」とか「D:\\\"Program Files\"」とか
色々試してみたんです
0485デフォルトの名無しさん2015/05/30(土) 18:12:59.70ID:Cqishw4w
UACに引っかかってるだけじゃないでしょうか
0486デフォルトの名無しさん2015/05/30(土) 18:18:48.75ID:MWyagaYk
\"D:\\Program Files\"
じゃないのか
0487デフォルトの名無しさん2015/05/30(土) 18:36:56.59ID:AsLlcQ98
>>485
Dドライブに自分で作ったProgram Filesだからそれは無いはづ・・・

\"D:\\Program Files\"でもダメですなぁ。別の関数じゃないとアカンのだろうか
0488デフォルトの名無しさん2015/05/30(土) 18:41:08.39ID:j4YY/rva
「Program Files」じゃなくて「Program Files」というオチじゃないよな?
0489デフォルトの名無しさん2015/05/30(土) 18:55:11.66ID:AsLlcQ98
>>488
エクスプローラからちゃんとコピペしてもダメですねぇ・・


スペース無いパスで""入れてみたんだけどアクセスできなくなった。""が対応してないって事かなぁ

アクセスできる  D:\\LTspice
アクセスできない \"D:\\LTspice\"
0490デフォルトの名無しさん2015/05/30(土) 18:55:53.77ID:YkyYlSQN
>>487
そもそも:strcpyもstrcatもただの文字列操作だぞ

::strcpy_s(m_cFind, MAX_PATH, "D:\\\"Program Files\"");   //D:\\test なら問題なく取得できた
::strcat_s(m_cFind, MAX_PATH, "\\");
::strcat_s(m_cFind, MAX_PATH, "*");

実行した結果の
D:\"Program Files"\*
こんなディレクトリ名ありえんだろ

自作フォルダなら実際のフォルダ名が半角じゃなくて全角になっているとか気づきにくいミスをしている可能性があるから
手入力じゃなくてコピペするようにするとかしてみたらどうだ?
0491デフォルトの名無しさん2015/05/30(土) 19:06:27.28ID:YkyYlSQN
>>489
"" が必要になるのはコマンドラインなどのように、空白で文字列の分割が行われてしまう場合だけ。

例えばCreateProcessのlpszImageNameかlpszCommandLinのいずれかでコマンドラインを指定する場合など。

とりあえず試したが(_s付きのほうは試してなくて_s無しのほうで)
空白ありでもちゃんとディレクトリ内のフォルダ名を取得できる。

ちなみにUAC効いてるProgram FilesとProgram Files (x86)で、だ。
0492デフォルトの名無しさん2015/05/30(土) 19:11:52.43ID:gEFTPVJN
>>489
LTspice仲間発見!
0493デフォルトの名無しさん2015/05/30(土) 19:18:47.35ID:j4YY/rva
「括弧でくくってみました」とか「スペースを~に変えてみました」とか、
自分のやっていることをちゃんと理解できていないご様子。

:: FindFirstFile() が INVALID_HANDLE_VALUE を返すなら、::GetLastError() でもしたほうがまだ賢い。
0494デフォルトの名無しさん2015/05/30(土) 19:21:05.30ID:AsLlcQ98
>>491
これでバッチリいけたわありがとナス!やっぱネットのソースコピペだけじゃ嵌るね・・

::strcpy(m_cFind, "D:\\Program Files");
::strcat(m_cFind, "\\");
::strcat(m_cFind, "*");
hFind = FindFirstFile(m_cFind, &win32fd);


>>492
アナログ回路屋さん乙
0495デフォルトの名無しさん2015/05/30(土) 19:29:42.57ID:YkyYlSQN
>>494
ってことは_s付きの関数に問題があったってことでね?

::strcpy_s(m_cFind, MAX_PATH, "D:\\Program Files");
::strcat_s(m_cFind, MAX_PATH, "\\");
::strcat_s(m_cFind, MAX_PATH, "*");

これ実行後の m_cFind はどうなっているんだ?

可能性としては MAX_PATH の定義がおかしくなっているためすべてをコピーしきれないとか。
0496デフォルトの名無しさん2015/05/30(土) 19:31:52.41ID:j4YY/rva
すでに文字列が代入されているから残っているバッファは MAX_PATH じゃないというオチ
0497デフォルトの名無しさん2015/05/30(土) 19:49:30.64ID:AsLlcQ98
>>495
やり直してみたら全く一緒や・・ なんかもっと分からんくなってきたw

::strcpy(m_cFind, "D:\\Program Files");
::strcat(m_cFind, "\\");
::strcat(m_cFind, "*");

::strcpy_s(m_cFind2, MAX_PATH, "D:\\Program Files");
::strcat_s(m_cFind2, MAX_PATH, "\\");
::strcat_s(m_cFind2, MAX_PATH, "*");

ofstream OUTOOO("aaa.txt");
OUTOOO << m_cFind << endl << m_cFind2 << endl;
OUTOOO.close();


結果
D:\Program Files\*
D:\Program Files\*
0498デフォルトの名無しさん2015/05/31(日) 07:25:39.10ID:EvgAS0zw
>最初は「D:\\Program Files」でやったんですけど、ダメだったんで

なんだ
ただの嘘つきか
0499デフォルトの名無しさん2015/05/31(日) 17:43:49.58ID:JnLugUH0
せんぱい、プログラミングおしえて?
0500デフォルトの名無しさん2015/05/31(日) 18:08:10.82ID:t8jPrrOm
>>499
最新版のVisual Studioをインストールしろ。
printfでHello, worldを表示する次のようなプログラムhello.cppを作れ。
#include <stdio.h>
int main(void) {
printf("Hello, world\n");
return 0;
}
できたら、MessageBoxでHello, worldを表示するプログラムにしろ。
0501デフォルトの名無しさん2015/05/31(日) 18:25:50.43ID:AQY7I4dQ
なにも teratail のキャッチコピーにレスしなくても
0502デフォルトの名無しさん2015/05/31(日) 18:46:44.54ID:t8jPrrOm
>>501
キャッチに反応しなくてもいいとはおかしい。
ロボットに変なこと教えるなよ。
helloもhelp meもキャッチコピーだ。
0503デフォルトの名無しさん2015/05/31(日) 18:59:10.57ID:t8jPrrOm
この世界では知的ロボットが混乱するようなキャッチコピーは禁止されている。
0504デフォルトの名無しさん2015/05/31(日) 19:38:43.33ID:HdJipRY3
鳥を外すな鬱陶しい
0505デフォルトの名無しさん2015/05/31(日) 20:25:38.58ID:JnLugUH0
えっ・・・
日本語で質問できるん?
0506デフォルトの名無しさん2015/05/31(日) 21:31:40.03ID:aHKj8Hug
あ、リトル。
0507デフォルトの名無しさん2015/05/31(日) 23:03:10.09ID:jHkPthzb
おいQZお前にはこのスレは敷居が高すぎるから入ってくるなよ自演豚
0508デフォルトの名無しさん2015/06/01(月) 10:15:47.22ID:/nRdew/3
GetMessageの定義では戻り値がBOOLとなっているのにMSDNを見ると「0以外の値または0または-1を返す」と書いてあります
矛盾している気がするのですがどういうことですか?
0509デフォルトの名無しさん2015/06/01(月) 10:17:05.15ID:/nRdew/3
すみません
typedef int BOOL
って見つけました
失礼しました
0510デフォルトの名無しさん2015/06/01(月) 10:55:26.91ID:hih5o8Kt
BOOL は true/false じゃないことを頭に叩き込むべし

(b == TRUE) と書いてやられるのは誰もが通る道
0511デフォルトの名無しさん2015/06/01(月) 11:00:24.48ID:H7Yr0w9V
b == FALSE
b != FALSE
にすべし
0512デフォルトの名無しさん2015/06/01(月) 11:04:54.39ID:Q3ianLBA
やられたことないなあ

b != FALSE なら b でいいし
b == FALSE なら !b でいいだろ?
0513デフォルトの名無しさん2015/06/01(月) 11:13:04.14ID:H7Yr0w9V
0 != or 0 or -1に矛盾を感じるって事は
TRUE == or FALSE == と明示的に書きたいんだろうしって事ね
0514デフォルトの名無しさん2015/06/01(月) 11:23:30.93ID:Q3ianLBA
GetMessageの戻り値はイカれてるが
BOOLは比較する必要ないだろ
0515デフォルトの名無しさん2015/06/01(月) 12:08:18.51ID:gkan/OPI
いつからこの糞仕様引きずってんだろ
9xの頃もこうだったか?
0516デフォルトの名無しさん2015/06/01(月) 12:13:04.93ID:Lw3ov3gq
GetMessage() の戻り値が -1 になるのは「関数が失敗した」ときだけだから大目に見てやれw
0517デフォルトの名無しさん2015/06/01(月) 12:25:21.88ID:H7Yr0w9V
>>514
必要かどうかを言ってるんじゃないんだが
0518デフォルトの名無しさん2015/06/01(月) 14:38:57.15ID:hih5o8Kt
>>515
多分その頃は BOOL とか型名そのものをみんな無視してたんじゃないかな
他言語から逆輸入・再発見された感がある
0519デフォルトの名無しさん2015/06/01(月) 14:43:08.35ID:s3ZcdtNu
でもBOOLなのに0、1以外を返すこともあるって・・・
なんでintにしなかったんだろう。
0520デフォルトの名無しさん2015/06/01(月) 14:57:00.38ID:Lw3ov3gq
Windows3.0 の時代には 関数に失敗しても 戻り値は 0 だった。

>BOOLなのに0、1以外を返すこともある
「0、1以外」ではなく「0, 0以外」
「1以外」なんて考えてると、510 の書いているように (b == TRUE) なんてコトを平気でやっちゃうぞ
0521デフォルトの名無しさん2015/06/01(月) 16:23:37.99ID:s3ZcdtNu
何言ってんの?
BOOLには0、1以外入れちゃダメだろ。
「Cでは非0が真だから、BOOLに2入れちゃお」ってどんな判断だよ。
そんなの、BOOLは実はintだから-1返しても良いよね!っていう、
件のMSの発想と同じじゃねーか。わざわざそんないたずらする意味あるか?
BOOLの真に1を使うのはそれなりの根拠があるよ。
まず、TRUEが1に定義されていること。でもこれはMSが勝手にやっていることでしかないんだがな。
それでもWin32APIを使う上ではMSの流儀にあわせるべきだよね。
つぎに、Cは比較や論理演算の結果が真になった場合、1を返すと規格で決まっている。
また、C++のboolをintにキャストすると0、1になる。
これらをふまえると、BOOLに2や3を入れようという発想は生まれないはずだ。
>でもBOOLなのに0、1以外を返すこともあるって・・・
なるほど、問題ない文章じゃないか。
0522デフォルトの名無しさん2015/06/01(月) 16:29:06.59ID:TGyjCQFp
>>520
日本語勉強してからまた来い
0523デフォルトの名無しさん2015/06/01(月) 16:29:28.74ID:s3ZcdtNu
それじゃなくてもMSはTRUEを1に定義するという無茶をやってのけているわけだから、
その上で戻り値がBOOLのAPIで真に1以外が使われたりしたら、
もうやっていることが無茶苦茶だよね。何がしたいんだと。
戻り値がBOOLなのに0、1以外が返ったら、批判してよい。
0524デフォルトの名無しさん2015/06/01(月) 16:30:17.37ID:TGyjCQFp
>>521
>BOOLには0、1以外入れちゃダメだろ。

入れてもいい

>>520 の言うように
BOOL に許される値は 0 と 0以外の任意の数 の二通り
0525デフォルトの名無しさん2015/06/01(月) 16:37:23.84ID:0D/a6Ypk
boolじゃないんだから別にいいがな
BOOLなのにTRUEかFALSE以外が入ってる
のはあんまりよくないんじゃないかなとは思うけど
0526デフォルトの名無しさん2015/06/01(月) 16:40:04.79ID:Lw3ov3gq
>>522
どっか日本語ヘンだった?
0527デフォルトの名無しさん2015/06/01(月) 16:57:05.84ID:TGyjCQFp
>>526
きみの読解力
0528デフォルトの名無しさん2015/06/01(月) 16:57:45.60ID:TGyjCQFp
>>525
BOOLなら-1はTRUEだよ
0529デフォルトの名無しさん2015/06/01(月) 17:19:42.51ID:Lw3ov3gq
難癖つけられただけか
0530デフォルトの名無しさん2015/06/01(月) 17:55:03.05ID:o6FjTESK
>>528
TRUE == 1 なんだからそれはおかしくね?
BOOL型の値にどんなビット表現があっても別に問題ないっしょ?

BOOLなら-1は真だよ は正しいと思うけど
0531デフォルトの名無しさん2015/06/01(月) 18:33:23.14ID:5bGybq2H
>>522
>Cは比較や論理演算の結果が真になった場合、1を返すと規格で決まっている。
でも入力は零か非零でみるんだよね‥
0532デフォルトの名無しさん2015/06/01(月) 19:31:09.47ID:IvVhkElP
この流れ、20年前にも見た。
またやってんのお前ら。
0533デフォルトの名無しさん2015/06/01(月) 19:34:41.03ID:4i959FGz
ハゲは黙ってろ
0534デフォルトの名無しさん2015/06/01(月) 19:54:53.91ID:s3ZcdtNu
だからさーお前らの言ってるのはAPIを呼び出す側の姿勢の問題だろ。
BOOLはintだから0、1以外の何が入ってるか分からんから、
そういう場合にも対応した安全なコード書けって観点だろ。
でも俺はそんなこと一言も言及してねーんだよ。

俺は戻り値がBOOLのAPIで、0、1以外が返るのは糞だ、と言ってるだけ。
こんなことは当たり前で、荒れる要素は全くない。
APIを設計する側のMSに文句を言っているだけで、
それを使うお前らに文句を言っているわけではない。
真の値にあえて1以外が使われる意味はあるか?
MS「今日は2にしてみよう。明日は3にしてみよう。」 おかしいだろ。
MSは自らTRUEを1に定義してるんだよ。だったら真の値に1を使うのは当たり前だろ。
あえて他の値を使う必要性もないから、当然だよな。
どこに反論の余地があるの?
0535デフォルトの名無しさん2015/06/01(月) 20:18:56.34ID:s3ZcdtNu
それともあれか?お前らはMSにBOOLが戻り地のAPIで、
真の値に1以外を使って欲しいのか?何の目的で?
別に1で構わないなら、俺の発言に文句ないはずだよな。

それに世の中にはif( ret == TRUE )とかいう糞みたいなコードだって散らばってるわけ。
TRUEを1と定義したのはMSなので、これはMSの責任でもあるわけ。
MSはこういった糞コードでもプログラムがクラッシュしないようにAPIの仕様を定めなければならない立場。
今回のケースでは、単に真の値に1を使うようにするというだけのことなので、そうするのは当たり前。
他の値を使う意味が全くないからな。2や3じゃなく、1を使えばそれで済む話。ノーコスト。
この場面で、あえて他の値を使ったとしたら、糞だろ。
そういう消極的な観点からも、戻り値がBOOLのAPIで0、1以外を返すのは
糞仕様なわけ。お前らがif( ret == TRUE )と書かないのと全く同じ理由で、
逆にMS側はif( ret == TRUE )と書かれている糞コードでもクラッシュしないように勤めるの。
可能な限り無意味なトラブルを避けるのは、使う側もMSも同じ。
0536デフォルトの名無しさん2015/06/01(月) 20:21:09.10ID:4i959FGz
長いよハゲ
0537デフォルトの名無しさん2015/06/01(月) 23:10:00.30ID:cqscK3va
週刊報道Bizストリート
0538デフォルトの名無しさん2015/06/02(火) 00:48:43.31ID:opKMSndu
BOOLもあれだがそれよりも、いまだに戻り値がintで成功時に0を返すなどという
糞仕様の関数書く奴をどうにかしてくれ。
0539デフォルトの名無しさん2015/06/02(火) 03:23:52.68ID:B/m18j7i
保存ダイアログ出そうと思ってコード拾ってきたんですが、
一番下のよくわからない2行がないとダイアログが出ないんですけどそういうモンなんですかね・・・
普通に動いているからまぁ良いんだけど謎すぎて・・

char InBuf[256];
OPENFILENAME ofn;

memset(&ofn, 0, sizeof(OPENFILENAME));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = (HWND)frame->getSystemWindow();
ofn.lpstrFilter = "Preset File {*.aaa}\0*.aaa\0\0\0";
ofn.lpstrFile = InBuf;
ofn.nMaxFile = MAX_PATH;
ofn.nMaxFileTitle = MAX_PATH;
ofn.lpstrDefExt = "aaa";
ofn.lpstrInitialDir = (char *)((VstPlugin*)effect)->preset_dir.c_str();
ofn.Flags = OFN_OVERWRITEPROMPT;
if (GetSaveFileName(&ofn)) ((VstPlugin*)effect)->export_preset(InBuf);

char buf[256];  //なぜかこれが無いとダイアログが出ない
sprintf(buf, "%s", ofn.lpstrFile);  //なぜかこれが無いとダイアログが出ない
0540デフォルトの名無しさん2015/06/02(火) 04:27:05.27ID:GiY1la32
試してないけどだいたい原因になりそうなのは想像付くよ

>lpstrFile
>「ファイル名」エディットコントロールを初期化するのに使用されるファイル名を格納したバッファのアドレスを指定します。初期化が必要ない場合には、バッファの先頭にヌル文字を格納しておきます。

これに従ってInBufを初期化してください
あとMAX_PATHは260バイトなのでInBufをその分確保してください
0541デフォルトの名無しさん2015/06/02(火) 04:54:10.97ID:B/m18j7i
>>540
おおほんとだ。char InBuf[256]; → char InBuf[MAX_PATH] = { NULL }; に変えたら最後の2行消してもダイアログ出たw
これで安心して使えるよありがとう
0542デフォルトの名無しさん2015/06/02(火) 07:37:04.28ID:3K9K5nvj
>>541の作ったアプリのユーザーは安心して使えないだろうが
0543デフォルトの名無しさん2015/06/02(火) 07:57:16.19ID:grfnvhLc
ワロタ
0544デフォルトの名無しさん2015/06/02(火) 08:13:50.44ID:a3qlL/7f
馬鹿には無理
0545デフォルトの名無しさん2015/06/02(火) 08:16:29.73ID:a3qlL/7f
>>538
strcmp
0546デフォルトの名無しさん2015/06/02(火) 08:17:37.90ID:a3qlL/7f
>>538
main もあったわ
0547デフォルトの名無しさん2015/06/02(火) 08:18:11.25ID:23FH/Mb/
ここって質問スレだよな
いつから素人が駆け出しを叩くスレになったんだ
0548デフォルトの名無しさん2015/06/02(火) 08:34:51.25ID:grfnvhLc
質問スレに戻ったのは最近のことで
Part90あたりからPart110くらいまでは
「知らないならレスしないでください。ウザイだけです」
に代表される、煽りと罵倒のスレでしたよ
0549デフォルトの名無しさん2015/06/02(火) 10:33:03.90ID:c7PbY7Ns
ウィンドプロシージャとWinMainって別々のファイルに分けた方が見やすいよね?
0550デフォルトの名無しさん2015/06/02(火) 10:49:58.79ID:qFTxEdTq
好きにしろ
0551デフォルトの名無しさん2015/06/02(火) 10:51:25.21ID:QEt0ogBL
いや、ウインドウが幾つになろうと一つのソースにまとめるべき
0552デフォルトの名無しさん2015/06/02(火) 11:25:48.48ID:4AmpqNUq
オレの .cpp には _tWinMain しかない
0553デフォルトの名無しさん2015/06/02(火) 12:17:09.92ID:O9gETs5A
>>545
一致が成功って決まってる訳じゃなかろ
0554デフォルトの名無しさん2015/06/02(火) 12:21:29.62ID:Y5fGC49j
この続きは言語スレでやれ
0555デフォルトの名無しさん2015/06/02(火) 12:26:28.11ID:4q1LDLUC
>>553
負論理だとFalseが成功ってこともある罠
0556デフォルトの名無しさん2015/06/02(火) 17:20:53.79ID:d2/EM2sA
>538
つhttp://ir9.jp/prog/ayu/win32err.htm
0557デフォルトの名無しさん2015/06/02(火) 18:40:52.51ID:csi1IGCv
int型関数で戻り値で成功か失敗かを
返すなら
0 成功
1 失敗
でいいんじゃないか?
失敗の場合の色んな情報を返すなら
0〜FFFFまで自分で好きなようにエラーコードを割り当てればいいんじゃないか?
0558デフォルトの名無しさん2015/06/02(火) 18:45:05.41ID:eq8fi9nB
0以上が成功0未満が失敗で
0559デフォルトの名無しさん2015/06/02(火) 18:48:01.13ID:csi1IGCv
成功か失敗かを返すなら
成功は0だろ。
0560デフォルトの名無しさん2015/06/02(火) 19:17:58.20ID:grfnvhLc
もういいよハゲ
0561デフォルトの名無しさん2015/06/02(火) 19:20:11.22ID:d2/EM2sA
Windows用のドライバやってたころ、カーネルからのエラーコードを
戻り値にしてたから成功は0、失敗はエラーコードとかよくやってた
0562デフォルトの名無しさん2015/06/02(火) 20:18:08.17ID:w3C6933l
負論理つーてもIOL>IOHなわけでもねえんだが今どきは
0563デフォルトの名無しさん2015/06/03(水) 09:32:03.99ID:fBuP9Jsx
>>557
天才 ktkr
0564デフォルトの名無しさん2015/06/03(水) 09:32:48.88ID:fBuP9Jsx
>>559
その通り
成功に理由はいらない
0565デフォルトの名無しさん2015/06/03(水) 09:49:05.70ID:Q+LF6TWf
僕の関数が失敗した5つの理由
0566デフォルトの名無しさん2015/06/03(水) 10:05:48.60ID:4f4dm0TI
新書のタイトルみたいだな
0567デフォルトの名無しさん2015/06/03(水) 10:11:25.13ID:Mg6w8zFx
>>564-565
色々勉強になったわ
ありがとう
http://seiko-forever.seesaa.net/article/406028395.html
https://www.youtube.com/watch?v=KJa9ViwcLtc
0568デフォルトの名無しさん2015/06/03(水) 10:16:58.19ID:Mg6w8zFx
ごめん1個目のリンクはゴミです
0569デフォルトの名無しさん2015/06/03(水) 14:01:43.28ID:oCZofESS
これじゃね
http://uchidak.cocolog-nifty.com/blog/2011/04/post-f092.html
0570デフォルトの名無しさん2015/06/03(水) 14:16:15.93ID:u1dB80rd
>>568
2個めもゴミだろがハゲ
0571デフォルトの名無しさん2015/06/03(水) 14:28:37.02ID:oCZofESS
Failure makes success.
0572デフォルトの名無しさん2015/06/05(金) 15:36:47.82ID:Cf1vS3sG
COPYRECT
0573デフォルトの名無しさん2015/06/06(土) 02:46:17.61ID:GYjDajMQ
C言語Win32APIだけで乱数
http://geoserver.sak ura.ne.jp/blog/c%e8%a8%80%e8%aa%9e/c%e8%a8%80%e8%aa%9ewin32api%e3%81%a0%e3%81%91%e3%81%a7%e4%b9%b1%e6%95%b0/


これを使って短時間で乱数量産するとエラーで止まるから、プログラムの最初で初期化
CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT);

して、プログラムの最後で解放
CryptReleaseContext(hProv, NULL);

しようと思ったんですが、こういうのって初期化〜解放の間隔が何日何週間とかになっても大丈夫なんですかね
0574デフォルトの名無しさん2015/06/06(土) 10:21:43.72ID:selLq9/m
質問があります。

特定の範囲に収まるフォントサイズを逆算するAPIってありますか?

あるならその関数名称を教えていただきたいですが…

うまく探しきれなくて、申し訳ありません。
0575デフォルトの名無しさん2015/06/06(土) 10:51:01.18ID:DXSt7rl7
つGetFontSizeInRect()
0576デフォルトの名無しさん2015/06/06(土) 10:57:49.54ID:0CBA8Axe
>>574
高さはすぐに計算できるけど、可変ピッチなフォントだと同じフォントでも文字の幅が違うから、
DT_CALCRECTをつけたDrawText()をフォントサイズ変えてforなりwhileでぶんまわして、
特定の範囲(RECT)に収まるかどうかチェックすれば?
0577デフォルトの名無しさん2015/06/06(土) 11:06:52.77ID:selLq9/m
>>576
ありがとうございます。

やはり、範囲内に収まるかチェックするんですね…
0578デフォルトの名無しさん2015/06/06(土) 11:24:04.60ID:selLq9/m
ナウレッジになんかあったー

皆様ありがとう
https://support.microsoft.com/en-us/kb/200262
0579デフォルトの名無しさん2015/06/06(土) 11:32:09.11ID:9TAyXKx2
>>573
というか毎回hProvを初期化しなければ止まらなくなるの?
もしそうならエントロピープールをシードにしか使ってないんだろうか…
Crypt系関数って詳しい仕様をぜんぜん公開してないから疑わしく見えて仕方がない

ちなみに俺の環境だと256bitで4000万回実行しても止まらなかったので再現は諦めた
Win7 x64
0580デフォルトの名無しさん2015/06/06(土) 11:55:27.98ID:xKO3x+L2
>>573
最初に与えられた事実は真実と錯覚していないか?
俺もこの現象に遭遇したことがないな
0581デフォルトの名無しさん2015/06/06(土) 14:56:55.03ID:GYjDajMQ
>>579-580
コメントアウトしてたのを戻してもっかいやってみたら今度は再現しませんでした
何かの偶然だったという事にしようと思います・・・
仕様が公開されてないなら判断しようが無いですね。。
0582デフォルトの名無しさん2015/06/08(月) 23:35:39.81ID:DpcdWlc7
ディスプレイの物理サイズを正確に調べる方法ってありますか?GetDeviceCaps関連でしょうか?
Windows8とかだとスケーリングとか任意で設定できるっぽいので、スケーリングの値など、関連する情報を取得できる方法が知りたいです。
0583デフォルトの名無しさん2015/06/08(月) 23:42:21.16ID:nfC7C2fa
GetSystemMetric
0584デフォルトの名無しさん2015/06/09(火) 00:24:50.62ID:jnEs2kjX
自己解決
こっちで書いてあった。
https://social.msdn.microsoft.com/Forums/ja-JP/97b142ce-f394-4c4b-ae8b-28dc9b547520?forum=vcgeneralja

Windows8.1API
GetDPIForMonitor
0585デフォルトの名無しさん2015/06/09(火) 00:36:54.36ID:BYQG69VH
物理サイズを調べるならモノサシ
0586デフォルトの名無しさん2015/06/09(火) 08:36:21.58ID:yWuzViB0
このさゆりってアカウント
よく見かけるな
0587デフォルトの名無しさん2015/06/09(火) 20:05:19.25ID:L65shhvt
EnumWindows の成功とは、
コールバック関数が FALSE を返さずに全トップレベルウィンドウの列挙を終えるという意味でしょうか?
0588デフォルトの名無しさん2015/06/09(火) 20:17:50.75ID:BYQG69VH
コールバック関数にウィンドウのハンドルとLPARAM値を渡した時点で成功だろう
0589デフォルトの名無しさん2015/06/09(火) 20:22:30.18ID:M4GdbwfJ
英語版にはEnumWindowsProcが0を返すとEnumWindowsも0を返すって書いてあるな
その場合はSetLastErrorで理由を示しなさいだって
大抵は自分自身でEnumWindowsProc書いてるだろうから不要な気がするがなあ
0590デフォルトの名無しさん2015/06/09(火) 20:32:16.40ID:D/MCT83A
>>589
それはEnumWindowsの呼び出し側とEnumWindowsProcは違うから、
EnumWindowsProcでの列挙の中止をEnumWindows 呼び出し側に伝えるためのものでしょ。

自分で実装するならエラー(列挙の中止)の理由ぐらい分かるだろってのは分かるけど。
05915872015/06/09(火) 20:44:33.10ID:L65shhvt
>>588-590
ありがとうございます
確かに英語版の方がもう少し踏み込んで書いてましたね
読んだつもりだったのですが・・・

EnumWindows でウィンドウを探して、
見付けたらコールバック関数で FALSE を返して打ち切ってたんですが、
見付けた場合に戻り値が FALSE になってて、小一時間悩んでました
「列挙する関数だから、途中で終了したら失敗」
って言われたら納得はできるんですが、いまいち曖昧ですね・・・
0592デフォルトの名無しさん2015/06/09(火) 21:03:00.42ID:D/MCT83A
途中で終了したら失敗というよりかは「失敗か中止」で0が返るって感じじゃないかな。

EnumWindowsProcが0を返す以外では EnumWindows は 0 を返さない(失敗とならない)っていうなら別だけど。
おそらくEnumWindowsProcが0を返す以外にも EnumWindows が失敗することはあるはずだから。
で、0が返ってきた原因として、関数が失敗したのかユーザコードによって中止されたのかは GetLastError で判断してねって。
0593デフォルトの名無しさん2015/06/11(木) 00:31:56.40ID:9SjF1U/3
画面の解像度をユーザーが変更した場合、解像度の変化を取得する方法ってありませんか?
タイマーなどでデスクトップのウインドサイズの変化を常に監視する以外のやり方が知りたいです。
通知メッセージってなにかあるのでしょうか?
0594デフォルトの名無しさん2015/06/11(木) 00:39:09.69ID:b7rcev9j
WM_DISPLAYCHANGE
LPARAMに解像度
0595デフォルトの名無しさん2015/06/11(木) 01:47:20.43ID:9SjF1U/3
>>594
感謝です。
0596デフォルトの名無しさん2015/06/11(木) 08:44:41.69ID:tkWwvfmc
こう言うのは探しにくいよな
メッセージ名が分かれば探せるが、目的からの逆引きは、辞書から言葉を探す行為
全ページ読んでも無かったりする
0597デフォルトの名無しさん2015/06/12(金) 00:23:50.34ID:vn7j7Ubu
二つのwindowがあって片方のwindowはもう片方のwindowの常に前面に配置するってどうすればいいでしょうか?
0598デフォルトの名無しさん2015/06/12(金) 00:31:00.20ID:VFN7XLRp
>>597
SetWindowPosで、HWND_TOPかHWND_TOPMOSTを設定
必要なら、CreateWindowEx(WS_EX_TOPMOSTとかじゃね?
0599デフォルトの名無しさん2015/06/12(金) 00:34:21.62ID:p+jKebyn
>>597
そのふたつのウィンドウが親子なら子は親の前面に表示されるが、そういう話かな?
それとも SetWindowPos( hWnd, HWND_TOPMOST,...) という話かな?
0600デフォルトの名無しさん2015/06/12(金) 04:54:29.01ID:w5GunMY6
32bitと64bitのプログラムって具体的に何を変えてるの
32bit環境でコンパイルすれば32bitで、64bit環境でコンパイルすると64bitなん?
0601デフォルトの名無しさん2015/06/12(金) 05:10:18.42ID:Qvm3BcbJ
32bit 0x00000000 - 0xFFFFFFFF
64bit 0x0000000000000000 - 0xFFFFFFFFFFFFFFFF
0602デフォルトの名無しさん2015/06/12(金) 05:13:57.92ID:XoMzVDAf
APIとかリンク先のDLLも変わる
0603デフォルトの名無しさん2015/06/12(金) 05:59:12.68ID:w5GunMY6
ワケワカメすぎる・・ とりあえず両方の環境で動けばいいって事ですね・・(思考放棄)
0604デフォルトの名無しさん2015/06/12(金) 06:05:05.04ID:Qvm3BcbJ
何を聞きたいのかがよくわからない
64bit環境でも32bitアプリケーションは作成も実行も可能
0605デフォルトの名無しさん2015/06/12(金) 06:09:52.20ID:w5GunMY6
>>604
よく32bitと64bitのソフトって分かれてるんで、プログラミング上では何を変えてるんだろうと疑問に思っただけっす
0606デフォルトの名無しさん2015/06/12(金) 07:32:10.86ID:Qvm3BcbJ
ソース上って意味?
なら>>601-602
0607デフォルトの名無しさん2015/06/12(金) 10:15:18.76ID:/09Ghvah
そもそもの32bitと64bitの意味も分かってないっぽい
0608デフォルトの名無しさん2015/06/12(金) 12:36:31.37ID:p+jKebyn
>>605

プログラミング上における、32bitと64bitのソフトの差異の一例

int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE, LPTSTR, int)
{
    return ::DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG), NULL, DialogProc);
}

上記コードは、64bitでビルドすると ワーニング C4244 になる。
理由:DialogBox() の戻り値である INT_PTR の定義が32bitと64bitで異なるため。
0609デフォルトの名無しさん2015/06/13(土) 09:32:43.61ID:jqTzSEpl
>>600
ポインタのビット数を無理やり増やしただけ
プロセスあたり4GBを超える必要性は皆無に近いし
物理メモリの4GB超えは32bitでもPAEでできる

x64の本質はクロック信仰と同じ
営業呼称上の数値が増えれば高級感がつくというだけ
それと「32bitではできない(嘘)」8GB以上のメモリを
売りつける口実で、案の定、情弱漁でニシン御殿みたいになった
0610デフォルトの名無しさん2015/06/13(土) 11:00:36.74ID:xw9tZLHx
そりゃクライアントでチマいプログラム作ってればそうだろよ
0611デフォルトの名無しさん2015/06/13(土) 11:06:14.20ID:aSPFED4z
最適な設計しなけりゃそうだろうな
せめて、今の動画や音声は24ビットが基本でそれ以上幅を広げても再生できる装置もないし、再現しても人の知覚を越えてしまい意味がない!
とか、尤もらしい嘘を交えろ
0612デフォルトの名無しさん2015/06/13(土) 11:13:11.55ID:FQeTzdta
仮想マシンでいろいろテストするようになったから、4GB じゃ全然足らん
0613デフォルトの名無しさん2015/06/13(土) 11:16:47.70ID:AmgidL1k
DBとマシンラーニングくらいしか思いつかない
RHEL(CentOS)は既に32bit捨てたんだっけ
0614デフォルトの名無しさん2015/06/13(土) 11:17:48.55ID:AmgidL1k
>>612
一番身近なはずのそれを忘れてたわ
そろそろボケ始めてるな
0615デフォルトの名無しさん2015/06/13(土) 11:20:20.10ID:aSPFED4z
32ビットの時は文字の扱いで無駄が多いと騒がれたが、64ビットの時はみんなガン無視
0616デフォルトの名無しさん2015/06/13(土) 11:35:27.68ID:NUKk6CPY
IPv6にはまだ足りない
0617デフォルトの名無しさん2015/06/13(土) 13:22:28.61ID:vX+O9mW6
>「32bitではできない(嘘)」8GB以上のメモリ

8GB以上と言うあたりに風刺が効いてるなw
0618デフォルトの名無しさん2015/06/13(土) 15:20:18.97ID:P6q2Jefi
Win32APIスレだから32bitが価値あると思い込んでても仕方がないよね?(´・ω・`)
まあ、いまや64bitが普通で32bitは貧乏人の乗り物と認定された軽自動車ほどの
価値もないけどね?(´・ω・`)
0619デフォルトの名無しさん2015/06/13(土) 16:05:23.44ID:KSn5zbP7
目的を達することができれば別に何bitでもいいんだよ
今は過渡期の終盤にさしかかってるけど
32/64bit両対応のコストと比較して,32bitだけで行くという結論もまだもちろんアリ
0620デフォルトの名無しさん2015/06/15(月) 06:00:07.52ID:/ZXirDuW
マシンの一意の値を知りたいと思ってGUIDというものに辿り着いたのですが

http://www7a.biglobe.ne.jp/~tsuneoka/win32tech/11.html
>また,GUIDを何回取得しても Data4 は変化しないため Data4 はマシンを特定するため のIDと推測されます.
>このため,ネットワークアダプタを持たないマシンでも GUIDのData4メンバを利用 すれば,マシンを一意に特定するIDを得ることができるようになると思われます.


実際に下記コードで取得してみたのですが、やるたびにData4の値が変わるんですけど、どっちが正しいんですかね・・

GUID guid;
::CoCreateGuid(&guid);
ofstream OUF("a.txt");
OUF << guid.Data4 << endl;
OUF.close();
0621デフォルトの名無しさん2015/06/15(月) 06:57:40.21ID:shu87Eme
>>620
HDDのGUIDとかを特定条件にするのはどーだろうか?と思ったので、ちょっと調べてみたらこんなのでたよ。
http://www.hsp.tv/play//pforum.php?mode=pastwch&;amp;num=57169
06226212015/06/15(月) 07:03:02.20ID:shu87Eme
>>620
追記:GetVolumeNameForVolumeMountPoint を使えばいいっぽい?
参照:http://www.wabiapp.com/WabiSampleSource/windows/get_volume_name_for_volume_mount_point.html
0623デフォルトの名無しさん2015/06/15(月) 07:19:37.93ID:vOuaGBoo
バグってるので貼り直し
http://www.hsp.tv/play/pforum.php?mode=pastwch&;amp;num=57169
0624デフォルトの名無しさん2015/06/15(月) 07:25:19.80ID:/ZXirDuW
>>621
おーなんかできたっぽい!
無いボリュームはNULLになるんですね。あざす!


A:\

B:\

C:\
\\?\Volume{97487739-fbd7-11e0-b5b0-806e6f6e6963}\
D:\
\\?\Volume{fe2da690-fbe2-11e0-9107-f0bf97d827ff}\
E:\
\\?\Volume{9748773c-fbd7-11e0-b5b0-806e6f6e6963}\
F:\
\\?\Volume{9748773c-fbd7-11e0-b5b0-806e6f6e6963}\
(以下略)
0625デフォルトの名無しさん2015/06/15(月) 07:28:00.88ID:vOuaGBoo
まだ可笑しいので
http://www.hsp.tv/play/pforum.php?mode=pastwch&;num=57169
0626デフォルトの名無しさん2015/06/15(月) 07:34:27.25ID:/ZXirDuW
GetVolumeInformation()に変えるとDWORD値で返ってきますね
こっちの方が加工しやすいかも


A:\
0
B:\
0
C:\
3094313688
D:\
173317027
E:\
3658528371
F:\
3658528371
06276212015/06/15(月) 08:14:03.21ID:shu87Eme
トークンを { x - x - x - x - x } で分解してGUID型に格納したほうが確実じゃないかな?
DWORDのみでマシン特定が足りるなら問題なしw
後々、鯖に登録して判定とか考えるなら、GUID型のがいいかも?そのときはMACアドレス取ればいいかw
0628デフォルトの名無しさん2015/06/15(月) 08:32:52.69ID:/ZXirDuW
>>627
そっか被る恐れもあるのか
それでいきますわw
06296212015/06/16(火) 04:02:04.42ID:2xa4wOmH
質問です。
アプリ内の設定ファイルを保存する場合、どこのフォルダー又はレジストリー?に保存するのいいのでしょうか?
UACがよくわかっていないのですが、書き込み制限?とか回避できる方法などが知りたいです。
現在、実行しているフォルダーで、WritePrivateProfileStringとかでiniファイル作ってますが、
そのうちインストーラー経由で、Program Filesなどの保存先を考えています。
たぶんUACとかの問題に直面すると思うのです。
管理者権限?とかあまり気にしないで処理できませんか?
ユーザーに権限を上げてもらうっていうのは最後の手かなーと思ってます。
0630デフォルトの名無しさん2015/06/16(火) 04:06:01.72ID:lLEFDpN4
%appdata%以下にフォルダ作ってそこへ保存する
0631デフォルトの名無しさん2015/06/16(火) 07:32:35.24ID:2xa4wOmH
>>630
有難うございます。
0632デフォルトの名無しさん2015/06/16(火) 08:18:45.96ID:UOlL6/Es
そんだけの質問レス書いたのに1行のあたりまえレスに納得しちゃうのん?
0633デフォルトの名無しさん2015/06/16(火) 08:29:57.46ID:24vrHag8
うちはD:\Program FilesにしてるからUACフリーだぜ
0634デフォルトの名無しさん2015/06/16(火) 08:33:42.99ID:550Q7INi
一応マルチユーザーOSと名乗ってるだけあるな(もちろん皮肉)
0635デフォルトの名無しさん2015/06/16(火) 12:37:13.13ID:g0IXFg/4
鞭とは私服の喜びだな
0636デフォルトの名無しさん2015/06/16(火) 14:02:14.26ID:6j6Aca1F
ところで、UACって役に立ってるのかねえ
0637デフォルトの名無しさん2015/06/16(火) 14:28:59.73ID:VgG0Ipqw
折角処理速度が速くなっても確認ウィンドウ挟むせいでテンポ悪くなってるしな
0638デフォルトの名無しさん2015/06/16(火) 16:33:15.01ID:VSSCDRv8
UACのはい(Y)の後ろのYが意味わからねぇ、Y押しても反応ないし
0639デフォルトの名無しさん2015/06/16(火) 16:37:32.96ID:c0G3gdyl
(・_・)alt...
0640デフォルトの名無しさん2015/06/16(火) 19:52:06.79ID:UOlL6/Es
まあ一般ユーザーなら分からないのも仕方ないな。
プログラムやろうって人が分からないのは……しかもWin32スレに書き込んだりして……




ま、あんま気にすんなよ
0641デフォルトの名無しさん2015/06/16(火) 22:44:24.03ID:2xa4wOmH
ユーザーが、画面を回転した場合、ウインドウメッセージってなにかありましたっけ?
0642デフォルトの名無しさん2015/06/16(火) 23:29:37.34ID:2xa4wOmH
WM_SETTINGCHANGEだけでいいのかな。。?
wParam..18hって数値着てますが、なにかマクロあるのだろうか・・?
0643デフォルトの名無しさん2015/06/16(火) 23:59:16.13ID:c0G3gdyl
画面が回転する→画面が変わる→WM_DISPLAYCHANGE
一週間ほど前にここに書いた

タブレッドを回転しても届く
0644デフォルトの名無しさん2015/06/17(水) 00:08:14.39ID:suyL5/S9
タブレッド
0645デフォルトの名無しさん2015/06/17(水) 00:10:18.59ID:5vGZBvAI
タブレット orz
0646デフォルトの名無しさん2015/06/17(水) 05:08:36.70ID:dvJyZHFB
>>640
そもそも管理者アカウントでログインしてんだから確認なんていらないだろってのと
昇格が必要なら管理者アカウントじゃなければ実行できなくすればいいだけじゃね?
0647デフォルトの名無しさん2015/06/17(水) 05:16:27.55ID:jg0++sTs
>>646
そういう動作にしたいんだったらオフにすればいいだけじゃん。何言ってんの?
0648デフォルトの名無しさん2015/06/17(水) 05:28:23.84ID:dvJyZHFB
>>647
論点はそこじゃないんだが何言ってんの?
0649デフォルトの名無しさん2015/06/17(水) 05:39:27.81ID:7KhQ6AFD
確認はいるだろ
0650デフォルトの名無しさん2015/06/17(水) 05:41:18.62ID:jg0++sTs
>>648
お前がアンカしてるレスはAlt+Yについてなんだが何が言いたいのかさっぱり意味不明
0651デフォルトの名無しさん2015/06/17(水) 05:42:03.89ID:8hoNHvZR
>>643
解像度変更と、縦・横変更を、printfで両方出力して試しました。
WM_DISPLAYCHANGEと、WM_SETTINGCHANGE両方のメッセージが届きますね。
メッセージは、WM_DISPLAYCHANGE → WM_SETTINGCHANGE の順で着てるみたいです。
WM_DISPLAYCHANGE使えばいいみたいですね。
ありがとう。
0652デフォルトの名無しさん2015/06/17(水) 12:15:01.49ID:8E4BKlvE
>>646
Vista以降は管理者アカウントは昇格する権利を有するアカウントのこと
普段は一般ユーザーと考えれば良い

管理専門アカウントが欲しければUAC切ったアカウント作れ
0653デフォルトの名無しさん2015/06/17(水) 12:23:57.77ID:r8wPWfB2
コンビニでの年齢確認並みの無意味さを感じるUAC
0654デフォルトの名無しさん2015/06/17(水) 12:32:26.76ID:7KhQ6AFD
確認を怠るのは馬鹿な店員
0655デフォルトの名無しさん2015/06/17(水) 14:43:37.84ID:bzhJxhFF
UACは明らかに不要なのにもかかわらず無頓着に管理者権限が必要な操作を行い
システムを荒らす要因にもなっていた開発者への牽制の意味もあるけどな
0656デフォルトの名無しさん2015/06/17(水) 16:04:28.54ID:suyL5/S9
ユーザーが意味も分からず「はい」を連打して次に進んだり
毎度やるのが面倒だとUACを切ることもできてしまうあたり
本質的なセキュリティ対策にはなっていないあたり、
コンビニレベルと言わざるを得ない。
0657デフォルトの名無しさん2015/06/17(水) 17:41:30.52ID:JyK9RGRB
>>656
セコムしていても、家主には「施錠しない自由」があるんだよ?
オートロック機能つきのマンションでもオートロック機能を解除することもできるんだよ?
管理者がセキュリティなんて不要だと判断したのならそれは管理者の問題なんだよ?
0658デフォルトの名無しさん2015/06/17(水) 17:56:45.67ID:jg0++sTs
>>656
自分が起動してるプログラムが何かすら判断できないようなユーザにセキュリティとか求めても無駄

UACがなかったらいちいち別ユーザに切り替えるのにパスワード入力してたんだから、
それがクリック一発になって楽になっただろ
どんなアプリも管理者権で立ち上げるのに抵抗がないようなセキュリティ意識の欠けたやつには
無駄に見えるかもしれないがな

まぁ本来不要なのに管理者権を求めてくるお行儀の悪いプログラムがあるのは問題だが、
それは開発者側の問題。つまりここにいるお前らの問題でOSの問題ではない
0659デフォルトの名無しさん2015/06/17(水) 18:40:19.66ID:8hoNHvZR
マルチユーザー前提のOSを、企業向けやら、一般向け、ごちゃ混ぜで販売している。
個人に管理者権限やら、マルチユーザーなどの概念を押し付けて売ってるのが間違い。
個人向け、一台のパソコンに一人を前提であれば、アカウント1つのみでそういうエディションで売ればいいのにな。
ユーザー切り替え無くなったら、横暴だ!とか大騒ぎしそうだがw

現状は、UACのルールに従うしかない。
0660デフォルトの名無しさん2015/06/17(水) 18:52:06.36ID:bzhJxhFF
UACを切っちゃ駄目なんてルールあったっけ?
0661デフォルトの名無しさん2015/06/17(水) 19:53:04.95ID:0ZkWpzGy
>>659
DOS でも使ってろよ
0662デフォルトの名無しさん2015/06/17(水) 21:10:01.47ID:suyL5/S9
>>657-658
論点つーか立場が違うんだよな。
玄関に鍵と鍵穴付きのドア付けてるのに、これの意味を理解していない原始人が多すぎる
この世の中において、意味をなしてないって言ってるわけ。

サポートの仕事もしてたらよく分かる。

電話かけてくる奴漏れなくUACの意味が分かってない。分かってる奴にお目見えした例しがない。
こういう奴ほど管理者権限を与えちゃいけないし「はいいいえ」の選択肢も与えちゃイカンわ。
まあPCも与えちゃイカンのだがな。
0663デフォルトの名無しさん2015/06/17(水) 21:36:12.20ID:jPcAGT10
馬鹿に話題を与えるな
0664デフォルトの名無しさん2015/06/17(水) 21:50:46.75ID:3PxLF6kl
>>663
そんな事よりさ、今さっきNEWSAYSに行ったんだけどさ、
レジで東京駅100周年記念Suicaを出したらバイトの店員が慌てて
「これは東京駅100周年記念Suica!しょ、少々お待ちください!只今オーナーを呼び付けます!」
って電話をかけだしたんだよ。すると5分もしない内にオーナーと店長とエリアマネージャーが駆けつけるなり俺の目の前にひれ伏して
「高い地位と身分を証明するステータスカードである東京駅100周年記念Suicaをお持ちのお客様に御来店頂けるとは光栄です」
って汚い床に額を擦りつけてもてなされたよ。
店内の他の客も
「マジかよ!東京駅100周年記念Suicaなんて凄いよな!」
って大騒ぎ。俺の後ろで自慢気に東京ルネッサンス記念Suicaを出して並んでたオヤジも顔を赤くして恥ずかしそうに財布にコッソリ戻してたよ。
店の奥に通されて高級ブランデーまで出された。
高級菓子の詰まった菓子折り持たされて帰りはリムジンで家まで送ってくて最高だったよ。
改めて東京駅100周年記念Suicaのステータスを実感したよ。
ホントどえらいカードだよ。
0665デフォルトの名無しさん2015/06/17(水) 21:57:51.15ID:bzhJxhFF
俺もサポートの仕事したことあるけど(電話より対面が主)、UACの意味は知らんでもジジババだって
突然画面暗転して是非を問われたら「なんかやべえな」くらいの注意を払ってる人は意外と居る印象だったな
結果、メーカー製PCによく入ってるJavaやAdobeの更新をまったく実行してないこともザラだが

ちゅーか電話でジジババの相手は駄目だ、言ってることと理解してることと見てることと実行してることが全部違う
0666デフォルトの名無しさん2015/06/17(水) 21:59:55.31ID:4yO7Si26
> NEWSAYS
0667デフォルトの名無しさん2015/06/17(水) 22:11:07.14ID:F5lqhd8J
ニューデイズは嫌いだ
0668デフォルトの名無しさん2015/06/17(水) 22:37:24.20ID:07HUceCZ
サポセンて、自分の頭で考えていい範囲を決められてしまってるんだな
UACの存在自体がまず正しくて、理解していないことが絶対悪なわけか
0669デフォルトの名無しさん2015/06/17(水) 22:54:25.86ID:JyK9RGRB
>>662
>玄関に鍵と鍵穴付きのドア付けてるのに、これの意味を理解していない原始人が多すぎる
住人が意味を理解していないのはセコムが悪いと?

というかさ、理解している人間がサポートに頼ったりすると思うのか?
分かっている人は自力で解決する。
自力で解決できないからサポートを頼るんだろ?

立場が違うと、誰の立場で言っているのかが良く分からないがw
とりあえずサポートの立場であるなら、UACの意味が分かってない原始人がいるからお仕事になるんじゃねーの?w
0670デフォルトの名無しさん2015/06/17(水) 22:56:14.67ID:5vGZBvAI
「そのソフトを使うならそのソフトの定めたルールに従え」というのがサポセンの前提。
正しいとか正しくないとか、善とか悪とかは、そのルールを変えろという話なので、また別のお話。

というわけでここは「Win32API質問箱」というスレなので、UACの話は他でやれ。それがルール。
0671デフォルトの名無しさん2015/06/18(木) 05:43:45.06ID:4nFQxAQO
UACの画面って2種類くらいあるけど何が違うん?
使用してるAPI?
ttp://image.itmedia.co.jp/ait/articles/0703/09/wi-859scr01.png
ttp://furi-sofuto.com/uac.png
0672デフォルトの名無しさん2015/06/18(木) 07:57:59.11ID:MLPf1LVb
まず色が違うな
0673デフォルトの名無しさん2015/06/18(木) 08:01:28.05ID:aPbhwQoO
下はドライバインストールで良く見かけるな
0674デフォルトの名無しさん2015/06/18(木) 11:14:59.51ID:59fiPw7n
>>669
ドヤ語ってるところ悪いが、おまえUAC理解してない原始人並みだな。
そりゃ原始人が闊歩してるのもうなずけるわ。
0675デフォルトの名無しさん2015/06/18(木) 11:39:18.83ID:MLPf1LVb
>>674
スレ違いだ
よそでやれよペキネンシス君
0676デフォルトの名無しさん2015/06/18(木) 12:11:46.85ID:EqdgCPQw
自演乙
0677デフォルトの名無しさん2015/06/18(木) 12:18:17.88ID:yshh0B6q
>>653
7はUACが必要最低限だしな。笊にも見える。
サイト毎にコード署名が貼付出来るようになれば、有り難みがわかるさ

今は判子屋がコード署名で儲けるため、如何にユーザによるコード署名を技術的に潰すかが必死に検討されているフェーズ
0678デフォルトの名無しさん2015/06/18(木) 16:07:36.67ID:jZrPxUY1
こういうアホなメッセージ出されても困るんだよ
http://www.dotup.org/uploda/www.dotup.org374222.gif
0679デフォルトの名無しさん2015/06/18(木) 16:32:29.29ID:Werb1Cdz
どこがアホ?
0680デフォルトの名無しさん2015/06/18(木) 16:38:38.30ID:0BafisnI
ドヤ語ってるという表現は始めて見た
0681デフォルトの名無しさん2015/06/18(木) 17:15:11.13ID:T2+a71RK
ドヤ語りとは何か?

それは>>680のような状態である。
0682デフォルトの名無しさん2015/06/18(木) 17:30:25.95ID:0BafisnI
>>681じゃなくて?
0683デフォルトの名無しさん2015/06/18(木) 17:42:01.10ID:i9Z3PO5v
>>682
+1
0684デフォルトの名無しさん2015/06/18(木) 17:49:38.79ID:T2+a71RK
>>682
それも考えたんだけど、やめといた。
0685デフォルトの名無しさん2015/06/18(木) 20:55:43.32ID:2mZuV/5h
ドヤ語スィティーニ♪
0686デフォルトの名無しさん2015/06/18(木) 22:44:00.80ID:MWSLdAtQ
>>678
確かにアホだな
サル用OSのくせにサル語で書かれていない

さすがサル嫌いなサル飼育員をサポセンに飼ってる会社だ
0687デフォルトの名無しさん2015/06/18(木) 23:12:49.11ID:IMENc0gC
>>671
何でAPIだと思ったん?
0688デフォルトの名無しさん2015/06/19(金) 06:56:14.88ID:P4SCySD/
>>687
Crypt系でダイアログだすやつあるからかな?
0689デフォルトの名無しさん2015/06/19(金) 14:07:52.43ID:+wRSfm4C
>>686
面白いと思ったの?なんでそう思った?
0690デフォルトの名無しさん2015/06/19(金) 14:11:07.17ID:r/oYBuQO
国分太一みたいな煽りやめろ
0691デフォルトの名無しさん2015/06/19(金) 15:01:04.52ID:9hebRpBD
てす
0692デフォルトの名無しさん2015/06/19(金) 20:23:18.93ID:9HLt/WoY
>>689
おまえサルか? それともサル飼育員か? どっちだ?
0693デフォルトの名無しさん2015/06/19(金) 21:35:35.88ID:n/vW9NWY
>>692
面白いと思ったの?なんでそう思った?
0694デフォルトの名無しさん2015/06/19(金) 21:41:08.25ID:9HLt/WoY
壊れたレコードの真似するしかないのはわかった
次もまた同じこと言うよな、サル未満のジャンク野郎
0695デフォルトの名無しさん2015/06/19(金) 21:51:36.96ID:gqE3zcth
×壊れたレコード
○壊れた蓄音機
0696デフォルトの名無しさん2015/06/19(金) 22:01:51.41ID:PbyfPj3O
ツマンネと文句を言うよりも
すすんでIDをNGしましょう
0697デフォルトの名無しさん2015/06/19(金) 23:10:41.59ID:n/vW9NWY
面倒くさいからコピペしたんだけど、何が面白いのか話してくれよおっさん。
0698デフォルトの名無しさん2015/06/19(金) 23:25:12.36ID:7Jz9enLP
>>695
レコードの傷でなるんだから、壊れたレコードが正解
0699デフォルトの名無しさん2015/06/19(金) 23:27:37.97ID:8yXOnJ5m
>>698
さすがです!なんといってもIDがLPなのには感服致しました!
0700デフォルトの名無しさん2015/06/20(土) 00:03:33.34ID:YoMZLH3/
さすがに寒い
0701デフォルトの名無しさん2015/06/20(土) 00:33:36.82ID:m/GPi3MC
×壊れたCDプレイヤー
×壊れたMDプレイヤー
×壊れたMP3プレイヤー
×壊れたiTunes
×壊れたiPod

○プレイヤーは良く壊れる
0702デフォルトの名無しさん2015/06/20(土) 00:49:27.08ID:kFeRRq5I
>>671
権限を必要とするAPI等を使う実行ファイルの入手経路の違いじゃねーの
0703デフォルトの名無しさん2015/06/20(土) 00:52:36.99ID:RdU0NHX6
「発行元」ってどうやってわかるの?
0704デフォルトの名無しさん2015/06/20(土) 09:03:10.72ID:xDd8VCyD
は?
コードサイニング署名の話?
0705デフォルトの名無しさん2015/06/21(日) 08:48:02.96ID:s2U9J1ut
質問です。
Win32APIでOpenTypeフォントを使う場合どうすればいいのでしょうか?
CreateFontで作れるのでしょうか?GDI+使う感じなのでしょうか?
なにかサンプルコードなどないですか?
0706デフォルトの名無しさん2015/06/21(日) 10:57:56.35ID:RGV/Ctvq
どないですか?ってwwwwww
0707デフォルトの名無しさん2015/06/21(日) 11:22:27.99ID:PrHd//Rt
DirectWrite
0708デフォルトの名無しさん2015/06/21(日) 11:27:11.38ID:6MCS1TVm
あきまへんな
0709デフォルトの名無しさん2015/06/21(日) 12:43:22.07ID:qOkHT/Po
コンパイル
0710デフォルトの名無しさん2015/06/21(日) 14:26:01.26ID:s2U9J1ut
高DPI対応のフォントは、DirectWrite以外で実現する場合どうすればいいですか?
CreateFontIndirectExっていうAPI見つけてみたのですが、使用例が見つからなくて困ってます。
DirectWrite使うべきか?
0711デフォルトの名無しさん2015/06/21(日) 14:47:07.73ID:18zFj96O
API使う前に日本語5W1Hを磨きなさい
0712デフォルトの名無しさん2015/06/21(日) 15:07:00.68ID:toO9zloq
GDI描画でHighDPIに対応する時フォントに関して必要なのはDPIを取得してフォントサイズを計算することだけ
0713デフォルトの名無しさん2015/06/21(日) 15:16:11.12ID:s2U9J1ut
>>712
コンパネのディスプレイ設定、150%などのスケーリングだと、
HDC screen = GetDC(0);
dpiScaleX_ = GetDeviceCaps(screen, LOGPIXELSX) / 96.0f;
dpiScaleY_ = GetDeviceCaps(screen, LOGPIXELSY) / 96.0f;
とか計算して、フォントサイズ調整すればいいと思うんだけど、
フォントの描画をきれいにしたい場合はどうすればよい?
上記通りにDirectWriteつかうってこと?
DirectWrite使わずに、Win32APIでなんとかならないかなぁ。
0714片山博文MZ ◆T6xkBnTXz7B0 2015/06/21(日) 15:24:15.94ID:szDYpocA
ANTIALIASED_QUALITY
0715デフォルトの名無しさん2015/06/21(日) 21:51:49.65ID:s2U9J1ut
片山さんありがとう。
DirectWriteとANTIALIASED_QUALITY 見比べたのですが、ディスプレイ150%だと
DirectWriteのほうがきれいに見えましたorz
手軽さはANTIALIASED_QUALITYのほうがありますよねぇ。。
0716デフォルトの名無しさん2015/06/21(日) 22:05:19.51ID:mTVvjbYS
それ本当にhighDPIのモニタで見てんの?
4kモニタで見ないとキレイかどうかは分からんよ
0717デフォルトの名無しさん2015/06/21(日) 22:44:41.86ID:iA5cm4E7
DirectWrite使えない環境はもうすぐになくなるから
素直にDirectWrite使っておけ
0718デフォルトの名無しさん2015/06/22(月) 07:53:59.38ID:Jo3Uu3lv
Windows 10、XP/Vistaユーザーへも条件付きで無償アップデート提供へ
http://ggsoku.com/2015/06/windows-insider-program/
0719デフォルトの名無しさん2015/06/22(月) 08:43:07.31ID:wPKyeAMT
つーかインスコして動きませんでしたってのが頻発しそう
0720デフォルトの名無しさん2015/06/22(月) 09:38:27.63ID:4zqB2xFW
insider programに参加できるPC使ってるんだから
それはないだろう
0721デフォルトの名無しさん2015/06/22(月) 09:51:06.35ID:Jo3Uu3lv
もう何度も騙されてて
次も騙されるのはほぼ確実なのに
どうして手が出てしまうのは何故?
0722デフォルトの名無しさん2015/06/22(月) 09:56:55.51ID:QXqLXD7b
何度も騙されるとかオレオレ詐欺に騙されるボケ老人かな
0723デフォルトの名無しさん2015/06/22(月) 11:26:51.83ID:kJni3XZO
どうしてこうなった
ttp://www.winbeta.org/news/microsoft-backtracks-free-windows-10-insiders-again
0724デフォルトの名無しさん2015/06/22(月) 14:40:54.58ID:NZ6EkxzL
>>718
一旦撤回ってことかい
0725デフォルトの名無しさん2015/06/22(月) 15:21:03.30ID:kJni3XZO
>>718
追記されたなω
0726デフォルトの名無しさん2015/06/23(火) 09:02:11.36ID:LQs/3Np0
バルマーまだいたんか
0727デフォルトの名無しさん2015/06/25(木) 01:51:12.41ID:YKv+aflv
脳裏に浮かんだ単語をその瞬間にグーグル検索かけてサーチし最も近いヴィジョンの画像を保存するAPI教えろ
0728デフォルトの名無しさん2015/06/25(木) 05:04:32.91ID:/j6tmhxB
そのヴィジョン取得と比較をどうするかだな
0729デフォルトの名無しさん2015/06/25(木) 07:54:52.07ID:tqVIvEYY
pixivとかtwitterとかtumblerのAPIでよくね
0730デフォルトの名無しさん2015/06/25(木) 10:55:11.76ID:duzWPGDS
スレッド名を設定するAPIを探してたら
https://msdn.microsoft.com/ja-jp/library/xcb2z8hs.aspx
こんなのが見つかったのですがなぜAPI化しないのでしょうか?
0731デフォルトの名無しさん2015/06/25(木) 12:10:03.56ID:ni30MNzk
さあな
作者の心情を答えなさいって国語の教師かお前
本人に聞けよ
Connectにいるだろ
0732デフォルトの名無しさん2015/06/25(木) 13:32:38.12ID:WAzNpY4B
test
0733デフォルトの名無しさん2015/06/25(木) 14:13:35.00ID:LgsbVB/f
'test' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

C:\Win32Api2ch>
0734デフォルトの名無しさん2015/06/25(木) 14:53:12.19ID:/OYmKyKQ
diskpart disk 0 partition 0 clean format fs=fat32 quick
0735デフォルトの名無しさん2015/06/25(木) 20:25:48.55ID:gnR3qgHj
画像の女の子を可愛いかどうか判定して顔面偏差値を算出するAPI教えろ
0736デフォルトの名無しさん2015/06/25(木) 20:34:41.26ID:LOTicnb/
for(;;) MessageBox(NULL , TEXT("ぶっさwwww");
0737デフォルトの名無しさん2015/06/25(木) 20:45:36.18ID:DA6pej+T
>>736
コンパイルエラー
0738デフォルトの名無しさん2015/06/25(木) 20:48:44.72ID:b0Ef420M
>>736
Warning:ループを脱出しません。breakが抜けていませんか?
0739デフォルトの名無しさん2015/06/25(木) 20:52:48.83ID:2iFFcEMc
>>735
そのAPIとDNAから将来の顔を予想するAPIが完成したら
生まれる前に殺処分されまくりだろ
0740デフォルトの名無しさん2015/06/25(木) 20:57:20.27ID:DA6pej+T
生まれてないのに殺すとな?
0741デフォルトの名無しさん2015/06/25(木) 21:02:16.75ID:LOTicnb/
>>737
(しまった3,4引数抜けてるやんけ)
0742デフォルトの名無しさん2015/06/25(木) 21:34:15.42ID:LgsbVB/f
CWnd::MessageBox 使ったんだよ、ってなぜそこで嘯かないんだ?
0743デフォルトの名無しさん2015/06/25(木) 22:21:02.54ID:DA6pej+T
どっちにせよ ) が足りないのです。
0744デフォルトの名無しさん2015/06/25(木) 23:33:13.02ID:LgsbVB/f
あ、ほんとだ。カッコ悪い
0745デフォルトの名無しさん2015/06/25(木) 23:39:19.36ID:L8cWAkwK
ギャツビー付けてカッコ付けて
0746デフォルトの名無しさん2015/06/26(金) 01:08:26.72ID:k6ZmRQxF
ヘアジャムじゃない
0747デフォルトの名無しさん2015/06/26(金) 03:45:07.92ID:FoKgBXHj
API自作できない素人は引っ込んでろ
0748デフォルトの名無しさん2015/06/26(金) 20:24:10.87ID:yrtFON1m
>>744
座布団一枚
0749デフォルトの名無しさん2015/06/26(金) 22:30:59.10ID:O5RxHheG
体臭検知するAPI教えろ
0750デフォルトの名無しさん2015/06/26(金) 23:27:11.85ID:Dyy+uFg3
BOOL WINAPI DetectBodyOdor(LPBODYODOR bodyodor);
0751デフォルトの名無しさん2015/06/27(土) 04:58:01.24ID:8NDoKwy7
損なAPIがあったとは
驚いーた
0752デフォルトの名無しさん2015/06/27(土) 11:47:26.62ID:ZCoIcdRW
>>750
インターフェース設計がいまいちだな
ヒューマンハンドルと部位列挙子が必須だろ
構造体を複雑にするとバカが変数に未初期化与えてくる
0753デフォルトの名無しさん2015/06/27(土) 11:53:19.61ID:iDD3CLpV
言ってほしいのか?


ツマンネ
0754デフォルトの名無しさん2015/06/27(土) 12:04:48.58ID:ZCoIcdRW
構ってくれて有難う
飛沫ぷしだからな
0755デフォルトの名無しさん2015/06/27(土) 14:40:59.99ID:f57Tnoer
>>753みたいなゴミ野郎を楽しませるためにレスしてるわけじゃないからな
0756デフォルトの名無しさん2015/06/27(土) 15:05:17.65ID:32dsCv8V
お前の目的なんてどうでもいい
ゴミが喜んだという結果がすべてだ
ゴミに餌を与えるな
0757デフォルトの名無しさん2015/06/27(土) 18:30:37.69ID:tjNOYrXg
最強のAPI教えろ
0758デフォルトの名無しさん2015/06/27(土) 18:45:20.15ID:waGkIkkD
void WINAPI Valse(NULL);
0759デフォルトの名無しさん2015/06/27(土) 18:47:12.03ID:NGa5WpI/
SendMessage
0760デフォルトの名無しさん2015/06/27(土) 21:58:12.79ID:ogdHqDPf
氏ね雑魚失せろ
0761デフォルトの名無しさん2015/06/27(土) 22:34:35.43ID:RP+B0MK9
this->か?
0762デフォルトの名無しさん2015/06/28(日) 18:56:15.64ID:TzgnuxBg
UpdateWindowとRedrawWindowの対決の勝者
0763デフォルトの名無しさん2015/06/28(日) 20:26:25.68ID:0jIFNkRO
WM_SETREDRAWさんの方が強いだろ
0764デフォルトの名無しさん2015/06/29(月) 00:24:28.74ID:QHv2z3oI
最強は、PostQuitMessageさんじゃーねーのか?ラピュタでいうところのバルス的な意味で!
0765デフォルトの名無しさん2015/06/29(月) 00:34:22.40ID:ETSNtk0o
>>764
>>758

マジレスすると最強のAPIは・・・o_ _)o ドテッ
0766片山博文MZ ◆T6xkBnTXz7B0 2015/06/29(月) 00:42:00.21ID:w5c3Mch/
GetProcAddressは強いよ。APIの中のAPI。何しろAPIを実現するAPIだからね。
0767デフォルトの名無しさん2015/06/29(月) 10:55:12.11ID:RBuJiewE
それを言うなら
CoCreateInstance
0768デフォルトの名無しさん2015/06/29(月) 13:44:50.13ID:ZS1C/3AC
>>767
どのあたりが強いんですか?
0769デフォルトの名無しさん2015/06/29(月) 16:17:16.84ID:RBuJiewE
ふぐりの脇とか
0770デフォルトの名無しさん2015/06/29(月) 16:42:18.29ID:k+90EXgh
どちらも動的というか遅延リンクだけど
>>767 は
GetProcAddressはアドレス固定とかexe作成時に色々確定しちゃうけど
COMは実質なんでもありになる
って言いたいんだろうけど
>>786 は GetProcAddress はおそらくフックの意味で言ってるから
>>767 の意見は微妙に的を外してる
0771デフォルトの名無しさん2015/06/29(月) 17:04:27.25ID:2tX/Gwc0
abort で
0772デフォルトの名無しさん2015/06/29(月) 17:59:42.87ID:kT4YJ0UX
ExitWindows
0773デフォルトの名無しさん2015/06/29(月) 18:39:46.51ID:QHv2z3oI
ExitWindowsExさんも強そうだね。EWX_POWEROFF/EWX_SHUTDOWNとかできるし!
0774デフォルトの名無しさん2015/06/29(月) 19:12:00.54ID:ETSNtk0o
WM_QUERYENDSESSION で FALSE を返して妨害する
0775デフォルトの名無しさん2015/06/29(月) 23:34:04.50ID:QHv2z3oI
>>774
ExitWindowsExさんには、EWX_FORCE という強制力の強いオプションがあるので、このフラグを付けておけば、たぶん妨害できないだろう。
知らんけど。
0776デフォルトの名無しさん2015/06/30(火) 06:10:10.98ID:HavR6+Ou
)))))))))))))))(´・ω・`)b
07777772015/06/30(火) 06:10:38.86ID:HavR6+Ou
777げっち(´・ω・`)b
0778デフォルトの名無しさん2015/06/30(火) 08:52:35.10ID:joix9/cZ
test
0779デフォルトの名無しさん2015/07/01(水) 01:04:39.82ID:n8YBgiaB
アクセスバイオレーション発生時に特定の関数を呼び出すことはできますか?
0780デフォルトの名無しさん2015/07/01(水) 02:08:24.73ID:zEAl+94d
>>779
構造化例外を使うとか

http://www.ne.jp/asahi/hishidama/home/tech/vcpp/seh.html
0781デフォルトの名無しさん2015/07/01(水) 15:28:40.09ID:WR8QWr5f
例外は好かん
舐めんなカス
0782デフォルトの名無しさん2015/07/01(水) 15:31:47.45ID:UI7Zb7Dp
>>781
なら氏ね
0783デフォルトの名無しさん2015/07/01(水) 16:02:57.25ID:WrSpGcQO
習志野市
0784デフォルトの名無しさん2015/07/01(水) 18:31:44.53ID:8R1ww0k2
奈良市ね
0785デフォルトの名無しさん2015/07/01(水) 23:01:56.90ID:n8YBgiaB
>>780

その方法だとtryでブロック内でのことしか知ることはできませんよね
発生する箇所が特定できているのであれば、その理由を修正すればいい
0786デフォルトの名無しさん2015/07/02(木) 18:28:52.20ID:nNjASfin
例外とかクズが使うもの
0787デフォルトの名無しさん2015/07/02(木) 21:35:29.72ID:+04Fwkxz
アクセスバイオレーション発生時に特定の関数を呼び出すことを考える前に、プログラムの設計を見直せよ。
メモリー周りのバグ持ちだろ?ポインタの操作ミスや、開放済みのヒープにアクセスとか原因じゃねーの?
さっさと、デバッガーで、原因なる箇所を特定してプログラム修正したほうが幸せになれるよ?
0788デフォルトの名無しさん2015/07/02(木) 21:36:47.65ID:RvX8MGmG
面倒だからAPIで一発解決するんだよ無能
0789デフォルトの名無しさん2015/07/02(木) 21:48:00.03ID:+04Fwkxz
設計見直すか、これでも試してみろ無能
https://msdn.microsoft.com/ja-jp/library/1deeycx5.aspx
こんな例外使ったことないで、知らんけど。
0790デフォルトの名無しさん2015/07/02(木) 21:49:52.96ID:Hn8L5g/m
漢は黙ってHRESULT
0791デフォルトの名無しさん2015/07/02(木) 22:02:46.27ID:VH1uyxJY
>>786
仮想記憶も使わないんだな。修行僧みたいな奴。
0792デフォルトの名無しさん2015/07/02(木) 22:33:36.25ID:XpxJdW9h
マジレスするとメイン関数全体をtryブロックにすればいい
__exceptのフィルタ式は例外発生時に呼ばれるから目的は達成
0793デフォルトの名無しさん2015/07/02(木) 22:39:40.65ID:XpxJdW9h
>>789
使ったことないのか、お前の方が無能だな
デバッガアタッチするのが面倒もしくは不可能な場合はこれ便利だから使い方を覚えたほうがいいぞ
0794デフォルトの名無しさん2015/07/02(木) 22:55:27.52ID:+04Fwkxz
アクセスバイオレーションが発生するポンコツなプログラム書いたことないんだ。
優秀すぎてごめんな。
0795デフォルトの名無しさん2015/07/02(木) 23:14:50.48ID:XpxJdW9h
アクセスバイオレーションが発生するポンコツなプログラム書いたことないんだ(キリッ
wwwwwwwwww
0796デフォルトの名無しさん2015/07/03(金) 00:55:16.12ID:ryU5iGHB
>>794より優れたプログラマはこの世に存在しないからw
0797デフォルトの名無しさん2015/07/03(金) 08:43:02.38ID:OZHQEleK
>>794
0798デフォルトの名無しさん2015/07/03(金) 08:47:08.74ID:jZs8Gwbi
ロボコンの方がポンコツだと自覚しているだけ可愛げがある
0799デフォルトの名無しさん2015/07/03(金) 10:37:05.05ID:K0nlnxJc
世界一のhello world
0800デフォルトの名無しさん2015/07/03(金) 10:42:35.05ID:OZHQEleK
>>798
こういうドジロボットはWindowsCEでコントロールされているのか?
http://www.cnn.co.jp/business/35066855.html
http://www.bbc.co.uk/newsbeat/article/33359005/man-crushed-to-death-by-robot-at-car-factory
0801デフォルトの名無しさん2015/07/04(土) 15:06:15.48ID:WvwJxr10
サクセスby俺
0802デフォルトの名無しさん2015/07/05(日) 03:01:25.79ID:18u325sL
http://jbbs.shitaraba.net/bbs/read.cgi/study/2246/1279896594/534
  ↑ ↑ ↑ ↑ ↑ ↑ 
0803デフォルトの名無しさん2015/07/06(月) 02:47:46.17ID:9XDhx0xw
アクセスバイオレーションを発生させるAPI教えろ
0804デフォルトの名無しさん2015/07/06(月) 07:25:29.60ID:MZduqVAI
つRaiseAccessViolation
0805デフォルトの名無しさん2015/07/06(月) 08:37:54.20ID:fhp0P+BJ
>>803
API 要らん
0806デフォルトの名無しさん2015/07/06(月) 08:51:00.97ID:PmLO0F5+
マジレスするとメイン関数全体をtryブロックにすればいい
__exceptのフィルタ式は例外発生時に呼ばれるから目的は達成
0807デフォルトの名無しさん2015/07/06(月) 10:37:34.67ID:2AmbnSO3
RaiseException
0808デフォルトの名無しさん2015/07/06(月) 18:28:45.25ID:aMdG5cmX
int* hage=nullptr;
int mokon=0;
*hage=mokon;
0809デフォルトの名無しさん2015/07/08(水) 03:45:19.45ID:YPGA1F9a
>>805
アクセスバイオレーションが発生するポンコツなプログラム書いたことないんだ
優秀すぎてごめんな
0810デフォルトの名無しさん2015/07/08(水) 07:30:14.50ID:9UDndsjQ
アクセスバイオレーションが発生しない優秀なプログラムも書いたことないくせに
0811デフォルトの名無しさん2015/07/08(水) 07:44:00.09ID:rW6o/Qq/
同じことを繰り返すのは頭がポンコツ(痴呆)の兆候らしいゾ
0812デフォルトの名無しさん2015/07/08(水) 09:08:16.60ID:2QulqvWg
while( true )
{
 char str[128];
 cout << "名前を入力してください>";
 cin >> str;
 cout << "ようこそ " << str << " さん";
}
0813デフォルトの名無しさん2015/07/08(水) 09:12:42.39ID:Ln73JLk2
さんの後に改行入れてくれや
0814デフォルトの名無しさん2015/07/08(水) 09:24:10.20ID:9UDndsjQ
\nか、それともendlか?
0815デフォルトの名無しさん2015/07/08(水) 10:58:19.34ID:U80w5CD7
>>809
VB6 しか使えないロートルは早く絶滅しろよ
0816デフォルトの名無しさん2015/07/08(水) 18:31:53.70ID:TD6H53ox
アクセスバイオレーション発生させるポンコツは早くPC投げ捨てろよ
0817デフォルトの名無しさん2015/07/08(水) 20:15:23.74ID:PAkk6Hqa
>>815
今時そんな人いるんですか?
VB6なんて売ってないでしょ?
0818デフォルトの名無しさん2015/07/08(水) 20:28:45.36ID:t0H2tWbI
>>817
MSDN でダウンロードできる
0819デフォルトの名無しさん2015/07/08(水) 21:22:45.68ID:K3Unqfxi
去年Excel97を目撃したからな
まだ現役でもおかしくあるめえ
0820片山博文MZ ◆T6xkBnTXz7B0 2015/07/08(水) 21:41:19.88ID:73Ug3Wex
明日VB6をダウンロードしてみるか
0821デフォルトの名無しさん2015/07/08(水) 23:09:10.75ID:z3zUBBg1
いまだにVC6で仕事しているやつって居るのか?
0822デフォルトの名無しさん2015/07/08(水) 23:11:07.71ID:Fvcu1Ghj
悪い
言語問わずアクセスバイオレーションが発生するポンコツなプログラム書いたことないんだ
優秀すぎてごめんな
0823デフォルトの名無しさん2015/07/08(水) 23:25:58.93ID:B+dWeTkM
言語問わずHelloWorldしか書いたこと無い自慢はもういいですよ
0824デフォルトの名無しさん2015/07/08(水) 23:36:27.81ID:K3Unqfxi
不射の射みたいなものかもしれんぞ
0825デフォルトの名無しさん2015/07/09(木) 00:21:29.50ID:5bcW9mp8
>>821
某コンパイラはVC6で開発してるな。
あまりにも巨大すぎて移行できないんだろう。
0826デフォルトの名無しさん2015/07/09(木) 01:53:20.78ID:g6fEFdH+
>>823
頭悪いやつ馬鹿にしてごめんな
0827デフォルトの名無しさん2015/07/09(木) 07:02:04.30ID:yvZx6GXv
>>825
どのコンパイラですか?
0828デフォルトの名無しさん2015/07/09(木) 12:07:18.75ID:p7UoE0Xe
vc6 mfcつこうとるで
0829デフォルトの名無しさん2015/07/09(木) 12:11:44.20ID:7g9w6aL6
スレチ
0830デフォルトの名無しさん2015/07/09(木) 17:47:18.76ID:c0tzkZ6m
のびーるのびーるすとっぷ
0831デフォルトの名無しさん2015/07/09(木) 17:50:42.34ID:7g9w6aL6
オタワ
マイクロソフトは「スマホ」から撤退するのか -製造販売部門の大リストラを発表-
http://toyokeizai.net/articles/-/76331
0832デフォルトの名無しさん2015/07/09(木) 19:56:26.49ID:n0IdOdTN
>>821
保守とかならいるかも
でも C++ はバージョンアップ重ねてるから大抵の Visual Studio に移行してると思う
VB6 はいきなり切られたから、VB.NET/C# についていけない >>822 みたいなロートルが泣きながら仕事しているらしい w
0833デフォルトの名無しさん2015/07/09(木) 19:56:55.97ID:yvZx6GXv
>>828
何でvs2013使わないんですか?タダなのに。
0834デフォルトの名無しさん2015/07/09(木) 20:16:09.51ID:vgLfGCMi
VC6は20年前のマシン向けなので超軽快
最新のを使っても利点を生かせなければクソ重いだけ
0835デフォルトの名無しさん2015/07/09(木) 20:19:49.88ID:yvZx6GXv
>>834
なるほど。
ちなみにですが、主にどんなアプリ作っているんですか?
0836デフォルトの名無しさん2015/07/09(木) 20:24:14.04ID:f3titK1c
>>834
20年前のマシン使ってんならそうだろうが
現行のマシンなら重いとかなくね 
0837デフォルトの名無しさん2015/07/09(木) 20:27:35.85ID:aXzlg7or
VC6ってサービスパックあてていくと
突然ルートディレクトリに大量にファイル作りやがる
0838デフォルトの名無しさん2015/07/09(木) 23:45:09.30ID:iEWXCywy
2010だかもそうだったような
%TMP%くらい満足に使いこなして欲しいな
0839デフォルトの名無しさん2015/07/10(金) 18:08:59.61ID:LUw9Kp5I
女にモテなくなるAPI教えろ
女が寄って来てうざい
0840デフォルトの名無しさん2015/07/10(金) 18:42:14.59ID:Yv19xyy0
if文の実装部はいいからさ‥
0841デフォルトの名無しさん2015/07/10(金) 19:25:51.10ID:k4W3SF84
VOID WINAPI AsYouAre(VOID);
0842デフォルトの名無しさん2015/07/10(金) 19:30:08.09ID:DCa/3nZ3
VOID WINAPI LetItBeNaked(VOID);
0843デフォルトの名無しさん2015/07/11(土) 14:56:24.84ID:jgnuth+z
脳波を読み取って、読み取った脳派から、画面上にその人好みのエロ画像を表示するAPIを教えろ
0844デフォルトの名無しさん2015/07/11(土) 15:45:07.97ID:wDiLgvvw
BOOL WINAPI BakahaKiero(VOID);
0845デフォルトの名無しさん2015/07/11(土) 16:29:04.41ID:Vyaa6yc0
面白いと思って続けてるんですかねえ?
0846デフォルトの名無しさん2015/07/11(土) 16:44:46.30ID:uKki+Yew
年を取るとオヤジギャグを言いたくなる傾向と同じなのだろうか
0847デフォルトの名無しさん2015/07/11(土) 16:53:35.40ID:jgnuth+z
脳裏に浮かんだのがブスだったら消去するAPI教えろ
0848デフォルトの名無しさん2015/07/11(土) 19:30:31.76ID:SvdcMd32
VOID Kill(>>847, Forced, Immediate)
0849デフォルトの名無しさん2015/07/11(土) 20:17:46.31ID:coKbQ2xf
BAN(>>848);
hehe(^^);
0850デフォルトの名無しさん2015/07/12(日) 00:47:29.54ID:ijGXRf9p
ImmortalObject()
0851デフォルトの名無しさん2015/07/12(日) 01:14:26.18ID:FRFJl4lk
APIを作るAPI下さい
0852デフォルトの名無しさん2015/07/12(日) 01:58:25.70ID:bNKEejS1
おとこわります
0853デフォルトの名無しさん2015/07/13(月) 09:21:30.26ID:JZVSQPVK
>>851-852
http://www.unchi-time.com/variety
0854デフォルトの名無しさん2015/07/13(月) 14:45:24.72ID:vELytWdS
HANDLE型を返す関数が失敗した場合に
INVALID_HANDLE_VALUEを返すものとNULLを返すものがあって
分かりづらいのでどちらかに統一して欲しいのですが。
0855デフォルトの名無しさん2015/07/13(月) 16:14:06.02ID:VD4KavgG
>>854
もう手遅れです
0856デフォルトの名無しさん2015/07/13(月) 17:38:08.57ID:UxTEJ+9t
GetLastError()
0857デフォルトの名無しさん2015/07/13(月) 18:19:23.97ID:FYGRXR4u
エラーを調べるには関数を使います。
0858デフォルトの名無しさん2015/07/13(月) 20:02:07.71ID:A8Ot3jfM
GetLastErrorOfGetLastError()
0859デフォルトの名無しさん2015/07/13(月) 21:43:44.20ID:c4ofviqJ
>>854
NULL なんて返す奴あったっけ?
そもそもポインタじゃないし
まあ、MS のやることだからあっても不思議はないか w
0860デフォルトの名無しさん2015/07/13(月) 22:04:33.05ID:009JjLRI
むしろ極めてまれに INVALID_HANDLE_VALUE が出てきてやられるというイメージだが
0861デフォルトの名無しさん2015/07/13(月) 22:45:48.63ID:oy7UoxZD
むしろ
SetLastError()
0862デフォルトの名無しさん2015/07/13(月) 23:11:16.60ID:cxTds9wU
>>861
APIフック
0863デフォルトの名無しさん2015/07/14(火) 03:29:01.99ID:/TaTU2Zl
>>859
確かあったな、メモリマップトファイルとかじゃなかったか?
0864デフォルトの名無しさん2015/07/14(火) 03:29:10.64ID:myrBvFFH
>>857
それな
0865デフォルトの名無しさん2015/07/14(火) 10:02:05.35ID:aQ7CHF0E
>>856がエラーチェックにGetLastError使ってそう
0866片山博文MZ ◆T6xkBnTXz7B0 2015/07/14(火) 18:13:59.16ID:2KYZ+h7+
WM_TIMERってマルチスレッドになってるのかな
0867デフォルトの名無しさん2015/07/14(火) 22:13:11.77ID:HOS5JxSe
>>863
おお、ほんとだ
CreateFileMapping( ) とかは NULL を返すんだな
しかも第一引数も HANDLE 型で INVALID_HANDLE_VALUE 云々とか...
何をどう考えたらこんな設計になるんだろう?
0868デフォルトの名無しさん2015/07/15(水) 08:52:22.07ID:RUlladwo
その手の謎は大抵Old New Thingsで説明されてる
http://blogs.msdn.com/b/oldnewthing/archive/2004/03/02/82639.aspx
0869デフォルトの名無しさん2015/07/15(水) 12:43:05.08ID:87IId9CT
>>867
mallocに合わせたんじゃね
0870デフォルトの名無しさん2015/07/15(水) 19:06:29.05ID:TqiY1lgM
せやな
0871デフォルトの名無しさん2015/07/15(水) 20:31:28.97ID:GwyaNqFE
せやろか
0872デフォルトの名無しさん2015/07/15(水) 20:37:32.89ID:KRGDXVVB
せやせや
0873デフォルトの名無しさん2015/07/15(水) 21:29:18.71ID:2t4VwR8U
>>869
malloc( ) が返すのはポインタだからねぇ
0874デフォルトの名無しさん2015/07/15(水) 21:40:45.35ID:GwyaNqFE
GlobalAlloc
0875デフォルトの名無しさん2015/07/21(火) 10:02:35.99ID:tCWoA/Ex
ウィンドウが最小化されるときにSetWindowPosで設定される位置(-32000,-32000)になんか意味あんの?
0876デフォルトの名無しさん2015/07/21(火) 11:04:01.49ID:CRPPOL9n
風来のシレンでエーテルデビルの肉を食ったときみたいな感じ?
0877片山博文MZ ◆T6xkBnTXz7B0 2015/07/21(火) 16:40:23.46ID:PRXZAEwH
>>875
2バイト整数で小さい数を選んだだけとちゃう?
実際、その位置にあったら見えないし
0878デフォルトの名無しさん2015/07/21(火) 21:18:04.44ID:MZjkxTxw
4Kディスプレイを10枚横に並べて、それらを
メインディスプレイの左側に配置したらどうなるんだろうね。
最小化したはずのウィンドウが、-32000に集まって表示されてたら笑えるんだが。
というかその前に4Kディスプレイを横に10枚並べると、
short int の範囲を超えるわけだが、Windows的にはどうなるんだろう。
0879デフォルトの名無しさん2015/07/22(水) 02:37:38.64ID:wwLVthBa
新しい問題になりそうな
そういえば、bitmapのファイルフォーマットとかも縦横のサイズが2バイトしかとられてなかったな
0880デフォルトの名無しさん2015/07/22(水) 04:20:59.50ID:drU6njtJ
-32000は今内部でそうなっているというだけで
APIを使う側でマジックナンバーとして用いられる物ではないので
変えようと思えばいつでも変えられる数字だ
またビットマップのサイズはLONGだ
0881デフォルトの名無しさん2015/07/22(水) 07:20:55.54ID:gO2ya5VL
bmpのヘッダー内のサイズがshortなのは古い形式みたいだな
0882デフォルトの名無しさん2015/07/22(水) 09:51:46.52ID:FCe8t7wt
Windows 2.xとかOS/2 1.xで使われてたヘッダね
Windows 9xは最小化時に3000,3000に配置されるので最小化されたウィンドウが見えたりする
http://blogs.msdn.com/b/oldnewthing/archive/2004/10/28/249044.aspx
メッセージとかでサイズや座標を16ビットで扱ってるところがいっぱいあるから問題になるとすればそっちだが
0883デフォルトの名無しさん2015/07/22(水) 16:52:16.53ID:DzvVxqVc
ビットマップのサイズじゃなくて、ウィンドウサイズのほうが問題。
GET_X_LPARAMとかの引数のlParamは32bitで、
これを二つに分けて使っているので、16bit幅しかない。
0884デフォルトの名無しさん2015/07/22(水) 18:10:35.27ID:gO2ya5VL
64bit環境では64bitだけど互換性なくなるしな
0885デフォルトの名無しさん2015/07/26(日) 23:34:20.25ID:m4Er4LcO
WS_EX_ACCEPTFILESを設定して、spy++で設定されていることが確認できてるのに
dropしようとしても、カーソルが進入禁止のままってなんでですか?

ほかになにか必要ですか?
0886デフォルトの名無しさん2015/07/26(日) 23:40:25.43ID:gM3hZclC
>>885
ない
0887デフォルトの名無しさん2015/07/26(日) 23:42:53.64ID:kbQtFiQ+
DragAcceptFilesは試してみた?
0888デフォルトの名無しさん2015/07/26(日) 23:49:49.06ID:nMu2ki+q
>>885
>>887だけでWS_EX_ACCEPTFILEXいらんで
0889デフォルトの名無しさん2015/07/28(火) 11:48:08.72ID:+s6a8TfC
エスパーするとドラッグ元と先のプログラムの権限が違う
0890デフォルトの名無しさん2015/07/28(火) 20:58:01.70ID:+BTdJW4u
>>885
http://www.geocities.jp/midorinopage/Beginner/beginner24.html
case WM_CREATE:
DragAcceptFiles(hWnd,TRUE); // D&D を許可する
0891デフォルトの名無しさん2015/07/28(火) 21:26:09.25ID:sFAhL5HY
そんなクソAPIは
至高のRegisterDragDrop様に跪くべきだよね?
0892デフォルトの名無しさん2015/07/28(火) 22:03:28.60ID:iGgxwEKd
API一つで済むならそれに越したことはない
まあIDropTarget実装しないとドラッグイメージすら描けないけど
0893デフォルトの名無しさん2015/07/28(火) 23:02:51.80ID:dCM9/1ij
IDropTargetってメモリリークしない?
RevokeDragDrop呼んでも、参照カウンタが-1されないんだが。
鬱陶しいんで、強制的にdeleteしている。
0894デフォルトの名無しさん2015/07/29(水) 02:56:54.02ID:m35CSydP
は? しねーよカス低能失せろ
0895デフォルトの名無しさん2015/07/29(水) 06:10:32.63ID:ozMfiNSe
ちゃんとデータオブジェクトをReleaseしないとだめよ
0896デフォルトの名無しさん2015/07/29(水) 08:37:39.33ID:yPzqCl4K
>>890
WS_EX_ACCEPTFILESを指定すればDragAcceptFilesの呼び出しは不要
逆にDragAcceptFilesを呼ぶならWS_EX_ACCEPTFILESは不要
つまりそのサイトの記述は間違い
0897デフォルトの名無しさん2015/07/29(水) 09:00:30.59ID:yPzqCl4K
よく見たらそのページ

> TCHAR szDropFile[MAX_PATH + 1];

MAX_PATHに+1してるのもおかしいし

> if((lstrcmp(PathFindExtension(szDropFile),TEXT(".bmp")) == 0) ||
> (lstrcmp(PathFindExtension(szDropFile),TEXT(".BMP")) == 0))

なぜlstrcmpiを使わないのか…
.Bmpとかだったらどうなるのかと
0898デフォルトの名無しさん2015/07/29(水) 09:41:27.14ID:2NWQ7kCA
Windows 10 SDKってまだ?
0899デフォルトの名無しさん2015/07/29(水) 10:23:44.49ID:c3o2n8R7
>>897
+1するといけないのか?
0900デフォルトの名無しさん2015/07/29(水) 10:39:41.59ID:r60oeVP/
俺様の流儀に反するコードはすべてクソです
0901デフォルトの名無しさん2015/07/29(水) 11:11:35.12ID:GXftD+7W
+1はどうせ\0の分を考慮してるんだろうが、MAX_PATHには既に含まれている。
0902デフォルトの名無しさん2015/07/29(水) 11:17:29.49ID:5YdTwoj1
パスの最大長って、本当にMAX_PATHで良いんでしょうかね。
パスの頭に\\?\か何か付け加えると、32000文字までOKとか言うのもあるし。
MAX_PATHを超えるパスを持つファイルは、コマンドラインとかからだと作れるし。
でも、そういうファイルはエクスプローラだとバグるんで、やっぱり気にする必要ないんですかね。
0903デフォルトの名無しさん2015/07/29(水) 11:18:48.72ID:RzPhPosx
仕様をちゃんと読んでないんだなあということで信用度-1
0904デフォルトの名無しさん2015/07/29(水) 11:24:29.52ID:RzPhPosx
>>902
https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx
0905デフォルトの名無しさん2015/07/29(水) 11:31:46.27ID:5YdTwoj1
てことは、他所のパソコンの共有ファイルなんかにアクセスする可能性も考えると、
MAX_PATHでは不十分ってこと?
0906デフォルトの名無しさん2015/07/29(水) 13:42:05.84ID:c3o2n8R7
>>902
俺は用心深いのでパス格納用の領域は毎回mallocで必要サイズを確保するぞ。
0907デフォルトの名無しさん2015/07/29(水) 14:55:59.27ID:xy7GgrmF
>>900
大文字小文字を考慮してるのにもかかわらず全ての可能性までは考慮していないクソコード

>>906
用心深いと言う事は
p = malloc()
if(p == NULL)
と毎回やってるのか確保用関数でも作ってんのか
0908デフォルトの名無しさん2015/07/29(水) 14:57:19.72ID:c3o2n8R7
>>907
>p = malloc()
>if(p == NULL)
>と毎回やってるの
はい。
0909デフォルトの名無しさん2015/07/29(水) 14:57:28.73ID:xy7GgrmF
>>897
TCHAR, TEXT("")使ってんのにlstrcmpもおかしいよな
_tcscmpにしろと
0910デフォルトの名無しさん2015/07/29(水) 15:00:49.43ID:xy7GgrmF
>>908
そんなあなたに
try {
p1 = NULL
p2 = NULL
p1 = new
p2 = new
p3 = new
}
catch(const std::bad_alloc &) {
// 失敗時の処理
delete p2;
delete p1;
}
0911デフォルトの名無しさん2015/07/29(水) 15:04:45.93ID:c3o2n8R7
>>910
俺だったらdeleteしたあとNULL代入するよ。
0912デフォルトの名無しさん2015/07/29(水) 15:06:23.98ID:RzPhPosx
std::vector<TCHAR>でいいやん
VS2013以降ならstd::stringもバッファとして使用できる
0913デフォルトの名無しさん2015/07/29(水) 15:20:39.60ID:xy7GgrmF
>>911
deleteを重複させるような事になるならそうだな
0914デフォルトの名無しさん2015/07/29(水) 15:28:15.78ID:eAAheHcV
ものすげえ低レベルな会話してんな…
昨日今日C++を知ったのか?
0915デフォルトの名無しさん2015/07/29(水) 15:31:21.63ID:c3o2n8R7
>>914
じゃあ高レベルなネタを頼む。退屈なんで。
0916デフォルトの名無しさん2015/07/29(水) 15:34:08.72ID:KIQD62Zp
Direct2Dの質問ってどこで聞けばいい?
0917デフォルトの名無しさん2015/07/29(水) 16:57:48.19ID:1zEW+9y+
>>915
このスレでやることじゃない
0918片山博文MZ ◆T6xkBnTXz7B0 2015/07/29(水) 17:24:26.11ID:8zhTwlQ7
>>916
こっちだよ

【C++】 DirectX初心者質問スレ Part39 【C】 [転載禁止]・2ch.net
http://peace.2ch.net/test/read.cgi/tech/1418438785/
0919デフォルトの名無しさん2015/07/29(水) 19:38:49.56ID:5YdTwoj1
ファイルオープンダイアログに渡す、
結果を返してもらうためのバッファってどれぐらい必要なんですかね。
やっぱ32000?それともMAX_PATHで十分?
0920デフォルトの名無しさん2015/07/29(水) 19:48:44.80ID:7PHxXKam
バッファサイズを指定するフィールドがある時点で察しろよ
最低256文字、上限は不定だ
嫌ならWindowsでプログラム書くのやめろ
0921片山博文MZ ◆T6xkBnTXz7B0 2015/07/29(水) 19:58:16.70ID:8zhTwlQ7
複数選択可の場合は相当大きくしないと全部開けないだろうな。
いっぺんに100個のファイルを開くユーザーも居るだろうし。
0922片山博文MZ ◆T6xkBnTXz7B0 2015/07/29(水) 20:02:43.21ID:8zhTwlQ7
アプリ側があらかじめ確保した固定バッファを使う仕様はWin32の欠陥だろうな。
OS側が動的に確保するのが理想的。
0923デフォルトの名無しさん2015/07/29(水) 20:09:20.43ID:ozMfiNSe
なんでパス文字列前提なんだよ
石器時代かよ
IShellItemArrayとかで返すんだろ
0924片山博文MZ ◆T6xkBnTXz7B0 2015/07/29(水) 20:37:50.03ID:8zhTwlQ7
ここかな?
http://www.codeproject.com/Articles/16678/Vista-Goodies-in-C-Using-the-New-Vista-File-Dialog
0925デフォルトの名無しさん2015/07/29(水) 20:56:41.63ID:7PHxXKam
GetOpenFileNameなんてwin3.1からあるわけで
0926デフォルトの名無しさん2015/07/29(水) 23:12:05.83ID:CRqVMe5R
4096にしてる
256ではとても足りない
SUSIEとか古いアプリがパス長すぎると死ぬるのが辛い
0927片山博文MZ ◆T6xkBnTXz7B0 2015/07/29(水) 23:20:24.49ID:8zhTwlQ7
Susieってあの画像関係の? 古いよ古すぎるよ。Windows95時代じゃね?
いい加減代わりのものを誰かが新しく作り直さないと。
0928デフォルトの名無しさん2015/07/29(水) 23:27:16.85ID:eAAheHcV
MagickWandでも使えば
死ぬほど対応形式多いぞ
0929片山博文MZ ◆T6xkBnTXz7B0 2015/07/29(水) 23:44:49.69ID:8zhTwlQ7
基本設計が間違っているプロジェクトは長続きしない。
0930デフォルトの名無しさん2015/07/30(木) 23:04:49.15ID:3aeaJx+C
Windowsの基本設計は完璧だから長続きしてるんだよね。
0931デフォルトの名無しさん2015/07/31(金) 16:20:53.11ID:Dkg4afbG
プロセス間通信やVirtualAlloc辺りの仕様が変わってないのが助かる
パス名とか固定長データ型扱うAPIは仕方ないんじゃないかな
0932デフォルトの名無しさん2015/07/31(金) 20:36:22.17ID:ueomFH8Y
パス操作系のAPIって、文字列の長さがMAX_PATHを超えたら
エラーになるもんな。
0933デフォルトの名無しさん2015/07/31(金) 20:46:29.01ID:fRz1WIXA
>>930
APIは「〜Ex」で建て増しだらけなわけだが...
0934デフォルトの名無しさん2015/07/31(金) 21:21:12.37ID:D+nD3a7O
COMも

IFoo
IFoo2
IFoo3
...

とかあるもんな
拡張してるなーとか思ってたらあっさり新OSでサポートなくなるかもよー?とか警告されたり
実際にサポートぶち切られるのはあんまり聞かないけど
0935デフォルトの名無しさん2015/07/31(金) 21:22:00.27ID:D+nD3a7O
サポートは切られなくても
E_NOTIMPLが帰ってきたりはするか
0936デフォルトの名無しさん2015/08/01(土) 09:44:31.69ID:406fNIXp
人口知能に使えるapi教えろ
0937デフォルトの名無しさん2015/08/01(土) 10:17:58.43ID:ofIED9A/
CreateFile
0938デフォルトの名無しさん2015/08/01(土) 11:08:26.38ID:ejRhEGfZ
bluetooth通信できますか
0939デフォルトの名無しさん2015/08/01(土) 13:20:33.78ID:/YTF1HLD
>>923
その手のCOMは、必要十分なメソッドがなかったりするからな

少し外れたことをやるには、結局ネイティブAPIに落とすことになる。
パワーシェルを使うシステム担当が使うもので、真面目にソフトウェアを開発するから、ネイティブを使った方がテストが楽で、保証できる品質も最低限までは向上できる。

使い捨てのソフトウェア用
0940デフォルトの名無しさん2015/08/01(土) 14:00:35.06ID:oNQPgTQj
APIを極めたい
APIの作り方を教えろ
0941デフォルトの名無しさん2015/08/01(土) 14:14:02.06ID:N1liDq/U
まずMicrosoftに入社します
0942デフォルトの名無しさん2015/08/01(土) 15:49:52.69ID:4mrxGYsr
作り方って言ってんだろカス
0943片山博文MZ ◆T6xkBnTXz7B0 2015/08/01(土) 16:09:14.50ID:EYue673y
DLLの作り方を学べ。
0944デフォルトの名無しさん2015/08/01(土) 16:32:09.71ID:4mrxGYsr
うるせーなAPI作れればそれでいいんだよ
余計なもん学んでる暇はない
俺は最短コースでAPIを作る必要迫られてる
0945片山博文MZ ◆T6xkBnTXz7B0 2015/08/01(土) 16:52:17.88ID:/RIOF0J6
Win32 APIのほとんどがDLLで出来ている。
Web API作りたいならJavaScriptを勉強しろ。
0946デフォルトの名無しさん2015/08/01(土) 19:45:44.71ID:waGA91Tw
javascriptでWin32APIを叩きたい
0947デフォルトの名無しさん2015/08/01(土) 19:48:30.36ID:4mrxGYsr
JavaScriptとかガキのお遊びだろ
学ぶ気にならんな
0948デフォルトの名無しさん2015/08/01(土) 19:50:05.26ID:4FytA4pZ
俺達は最短コースでお前ををおちょくる必要に迫られてるんだ
0949デフォルトの名無しさん2015/08/01(土) 20:27:07.14ID:aojbSuUF
イタリア人の知人が2・3年前にMSのIEチームに就職したそうな
今頃どうなってるんだろうな
0950デフォルトの名無しさん2015/08/01(土) 20:30:46.58ID:4mrxGYsr
オブジェクト指向とかガキのお遊びに興味はないんだ
0951デフォルトの名無しさん2015/08/02(日) 18:42:33.69ID:Q52Atkvt
おいおい、Windows10でVerifyVersionInfoがおかしな値を返してこないか?
0952デフォルトの名無しさん2015/08/02(日) 18:48:15.13ID:q/ikqjRA
マニフェストいじらないとダメだってさ

VerifyVersionInfo is deprecated for Windows 10
https://msdn.microsoft.com/en-us/library/windows/desktop/ms725492(v=vs.85).aspx
0953デフォルトの名無しさん2015/08/02(日) 19:07:18.07ID:dTRZmQiN
さすが最後のバージョンだけあるな
0954デフォルトの名無しさん2015/08/02(日) 19:36:54.84ID:USeAoY49
Win64APIにスレタイ改名しろや
32bit使ってる化石はしね
0955デフォルトの名無しさん2015/08/02(日) 20:16:26.16ID:SLv/zRdd
win64 で HWND も HINSTANCE も 8バイトになったの?
0956デフォルトの名無しさん2015/08/02(日) 20:29:42.24ID:5wrdjVlg
うるせえな
お前は口答えせず言われたことをやってりゃいいんだよ
0957デフォルトの名無しさん2015/08/02(日) 21:06:23.41ID:ROYi8F/F
デスクトップレコーディングのソフトを作りたいんですけど、
音声のキャプチャに、サウンドカードのステレオミックスを使用しない方法って何かないでしょうか?
0958デフォルトの名無しさん2015/08/02(日) 21:48:15.72ID:MF9TQU9s
音関係はDTM関係で調べればバイパスするツールが沢山あると思う
0959デフォルトの名無しさん2015/08/02(日) 22:20:13.59ID:HOry/lAS
>>955
なったけど上位4バイトは空なんじゃなかったっけ
0960片山博文MZ ◆T6xkBnTXz7B0 2015/08/02(日) 23:14:37.59ID:/jG0U/Tz
Win32 APIで暗号化仮想ドライブの作り方を教えて下され、お願いぴょん☆
0961デフォルトの名無しさん2015/08/03(月) 02:43:55.92ID:TVbEWMpV
どんな暗号化でも復号化については

1.暗号復号のアルゴリズムがわかること
2.鍵がわかること

の両方が破られることが条件

AESは「1.をわざわざ公開してる」ということが問題
つまり鍵をしらみつぶしで総当たりすればいつかは解けることが保証される

本来の暗号のキモは「1.が不明であること」なんだよな
0962デフォルトの名無しさん2015/08/03(月) 02:45:31.44ID:fJ/F2Qaa
お前最高にアホだろ
0963デフォルトの名無しさん2015/08/03(月) 05:58:38.44ID:vbPvRk2A
>本来の暗号のキモは「1.が不明であること」
今まで考案されてきた暗号の中には,
暗号鍵がわからなくても簡単に解かれてしまう
場合があった.オレオレ似非暗号を排除するため
あえて暗号方法を公開して検証のフィルタを通している.

運用において AES をつかっているとか towfish, RC5 とか
そういうのを公開しないことは,ありだとうは思うが
まあそういうのを秘密にする努力を払う必要もない

鍵だけ秘密にすれば十分
0964デフォルトの名無しさん2015/08/03(月) 08:58:18.55ID:j8uLMTyN
独自アルゴリズムに拘る奴ってこういう思考をしてたのか
なるほど、話が通じないわけだ
0965デフォルトの名無しさん2015/08/03(月) 10:10:35.22ID:r+fa7m6A
頭悪い奴って話通じないって言葉好きだよね
0966デフォルトの名無しさん2015/08/03(月) 11:34:59.16ID:scYGV4Wn
何かトラウマでもほじくられましたか?
0967デフォルトの名無しさん2015/08/03(月) 12:14:33.23ID:TzOErtto
喰い付き良杉
0968デフォルトの名無しさん2015/08/03(月) 15:19:46.84ID:Q+4RHReL
>>966
何かトラウマでもほじくられましたか?
0969片山博文MZ ◆T6xkBnTXz7B0 2015/08/03(月) 17:38:55.94ID:/P0N0OgP
TypicalWindowsApp --- a template project of Win32 Window application
https://github.com/katahiromz/TypicalWindowsApp

よろしくね!!!
0970デフォルトの名無しさん2015/08/03(月) 22:43:42.64ID:9Adfwx+a
OutputDebugStringがスレッドセーフでないようなのですが…。
自分で排他制御しなきゃならんのでしょうか?
0971デフォルトの名無しさん2015/08/03(月) 22:52:59.42ID:PIBA7Cur
>>970
んなアホな!
0972デフォルトの名無しさん2015/08/03(月) 22:59:06.61ID:VaWxuZf6
>>970
どう呼んだらどう出力されたかね
(スレッドセーフでないバッファ/ポインタを渡しちゃったりしてないかね)
0973デフォルトの名無しさん2015/08/03(月) 23:43:45.56ID:9Adfwx+a
すいませんアホでした。
OutputDebugStringを拡張して書式文字列版を自作してたのですが
そこで使ってる一時バッファが原因でした。
0974デフォルトの名無しさん2015/08/03(月) 23:58:25.28ID:PIBA7Cur
>>973
俺も昔同じ失敗したよ。
文字列長に応じてmallocする作戦で対応したわ。毎回malloc/freeって言うのもなんだけどなあ。
0975デフォルトの名無しさん2015/08/04(火) 00:14:42.86ID:G/ht5QpM
>>970
何を見てスレッドセーフでないと判断したんだ?
(まあ、だいたい想像できるけど w)
0976デフォルトの名無しさん2015/08/04(火) 08:12:33.10ID:FXpRAemv
>>975
何かトラウマでもほじくられましたか?
0977デフォルトの名無しさん2015/08/04(火) 10:55:07.29ID:3xU88wGi
>OutputDebugString
ってどうしてprintfと同じ可変引数関数にしなかったんだろう?
そっちのほうが使い易いと思う。
0978デフォルトの名無しさん2015/08/04(火) 11:19:14.05ID:TW35b31Y
可変長引数は、WINAPIじゃ無理なんで、よろしく
0979デフォルトの名無しさん2015/08/04(火) 14:58:01.68ID:U/H7c7WN
PC固有情報としてMACアドレスを取得するため、GetIfTable を使って情報を取得しました。
MACアドレス(ネットワークアダプタ)は複数あるので、その中から有線LANアダプタを調べるべく
MIB_IFROW の各値から以下の条件で絞り込みました。
 dwType == MIB_IF_TYPE_ETHERNET
 dwMtu == 1500
 dwSpeed == 10 で割り切れる値

おおよそ期待できる結果になったのですが、VMwareの仮想ネットワークアダプタも引っかかってしまいます。
何かいい方法はないでしょうか?
0980デフォルトの名無しさん2015/08/04(火) 15:07:56.61ID:U/H7c7WN
連投失礼。

Win7以降(?)のネットワークと共有センターで表示される「ネットワーク」と
「識別されていないネットワーク」というのがありますが、この後者に
VMwareのアダプタが表示されていますので、意図した動作を得るためには
この情報が取れたらいいような気はしています。

先の書き込みでは有線LANアダプタとは書きましたが、それが存在しないで
他の手段でインターネットに接続しているケースもあるでしょうから、
なおさら先述の情報が取れた方がいいような気がします。

この情報はどこから取れるでしょうか?
0981デフォルトの名無しさん2015/08/04(火) 18:20:31.80ID:wPc1LIE6
dwMtuなんて決め打ちしちゃってええのか?ええのか?
0982デフォルトの名無しさん2015/08/04(火) 19:09:04.41ID:XYxgq3dx
質問に質問で返すなやハゲ
いいからはよ答えろ
0983デフォルトの名無しさん2015/08/04(火) 19:49:12.54ID:U/H7c7WN
>>981
ええんです。今のところは。
>980の情報が取れたら MTU での判定は無くせそうかなと。

>>982
ハゲ
0984デフォルトの名無しさん2015/08/04(火) 20:01:25.12ID:B++mZrPl
>>978
Win16のPASCALのことをいいたいのか
そうだとしても、wsprintfはあったのだが
0985デフォルトの名無しさん2015/08/04(火) 20:20:56.35ID:wPc1LIE6
名前でVMWareってあったら除外すればいいんじゃね?
0986デフォルトの名無しさん2015/08/04(火) 20:22:48.18ID:TW35b31Y
wsprintfはランタイムライブラリでゲス
OutputDebugStringはAPIでゲズ
0987デフォルトの名無しさん2015/08/04(火) 20:26:49.69ID:mWLd8l1I
次スレは
0988デフォルトの名無しさん2015/08/04(火) 20:47:15.53ID:U/H7c7WN
>>985
最悪はそうしようかと思いますが、よりいい方法があれば。
0989デフォルトの名無しさん2015/08/04(火) 21:07:11.36ID:g8Wyj7Bw
>>980
お前980踏んどいて逃走かよ。はやく次スレ立てろ
0990デフォルトの名無しさん2015/08/04(火) 22:33:26.18ID:U/H7c7WN
無理でした。他の方お願いします。

Win32APIについての質問はこちらへどうぞ。

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

■過去スレ
Win32API質問箱 Build120
http://peace.2ch.net/test/read.cgi/tech/1428570962/
0991デフォルトの名無しさん2015/08/04(火) 22:35:24.51ID:tKzV+rUu
次スレ
Win32API質問箱 Build121
http://peace.2ch.net/test/read.cgi/tech/1438695290/
0992デフォルトの名無しさん2015/08/05(水) 07:11:26.39ID:8R5fikiq
>>991
乙乙
0993デフォルトの名無しさん2015/08/05(水) 09:45:04.30ID:nxXw/daG
wsprintfだけcdeclで定義してんだっけ
安易な発想だ
0994デフォルトの名無しさん2015/08/05(水) 11:08:15.36ID:QXzoL0Ts
>>990-991
よくやった。ほめてやろう
0995デフォルトの名無しさん2015/08/05(水) 12:11:14.99ID:bXDjutxr
細かいことだがテンプレがAdvenced Windowsになってるな。
次立てるとき覚えてたら直してや。
0996デフォルトの名無しさん2015/08/06(木) 00:38:14.88ID:a5tvGPbj
うめうめ
0997デフォルトの名無しさん2015/08/06(木) 08:10:35.31ID:OUOpOK/l
うめめ
0998デフォルトの名無しさん2015/08/06(木) 11:54:36.84ID:FEpHvzaw
めめこ
0999デフォルトの名無しさん2015/08/06(木) 17:18:54.97ID:4xD13DN7
梅沢
1000デフォルトの名無しさん2015/08/06(木) 17:19:41.20ID:4xD13DN7
とどめを刺す!
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。