Win32API質問箱 Build63

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

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

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

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

【前スレ】
http://pc11.2ch.net/test/read.cgi/tech/1202060403/
2デフォルトの名無しさん:2008/03/04(火) 12:16:20
3デフォルトの名無しさん:2008/03/04(火) 12:16:42
- Google
http://www.google.com/
- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
- Win32 API入門
http://wisdom.sakura.ne.jp/system/winapi/
- Win32 プログラミング入門
http://www7.plala.or.jp/keny01/

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

-おまけ
Build19が見たい人で余裕のある人は●でも買ってくれ。
4デフォルトの名無しさん:2008/03/04(火) 12:17:28
5デフォルトの名無しさん:2008/03/04(火) 12:18:14
6デフォルトの名無しさん:2008/03/04(火) 12:19:01
7デフォルトの名無しさん:2008/03/04(火) 12:21:11
8デフォルトの名無しさん:2008/03/04(火) 12:29:05
>>1乙です
9デフォルトの名無しさん:2008/03/04(火) 13:32:15
前スレ、ベジエに回答してくれた人ありがとうございます><
10デフォルトの名無しさん:2008/03/04(火) 15:08:52
WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, OL, OL, hInstance,
NULL, NULL, NULL, NULL, _T("My Window"), NULL};

某参考書で勉強しているんですが、サンプル通りに打つと↑のOLが識別子が登録されていない、ということでエラーになってしまいます。
MSDNで調べてとりあえず0に置き換えてみたら動いたんですが、OL=0という認識で良いんでしょうか?
参考書の環境はVisualC++2005で、自分は2008を使っているので。その差なのかと思っているんですが、、、


似たようなもので
PeekMessage(&msg,NULL,OU,OU,PM_REMOVE))

ここでのOUも0に置き換えないと識別子のエラーで動きませんでした。

OUとかOLとか検索しても解説が見つからないので、誰か説明頂けるとありがたいです、、、
11デフォルトの名無しさん:2008/03/04(火) 15:09:44
>>10
たぶん オー じゃなくて ゼロ
12デフォルトの名無しさん:2008/03/04(火) 15:09:50
前スレのCONIMEはタスクマネージャに表示されるしCreateWindow呼んでるぽいけど
ウインドウないの?
13デフォルトの名無しさん:2008/03/04(火) 15:09:53
>>10
数字の後ろのL はlong のL Uはunsigned のU
14デフォルトの名無しさん:2008/03/04(火) 15:11:19
>>9
× OL
○ 0L

× OU
○ 0U
1510:2008/03/04(火) 15:13:37
うお、、なんという早い返答。

あー、そういうことだったのか、これは非常に見づらい。

とりあえずややこしい話にならなくて安心しました、どうもありがとうございましたー。
16デフォルトの名無しさん:2008/03/04(火) 15:38:22
jpgやpngファイルの画像の幅と高さを取得したいんだけど、
画像全体を読み込まずに、幅と高さを取得するAPIやお手軽な方法ってありますか?
17デフォルトの名無しさん:2008/03/04(火) 15:58:31
>>12
Message-Only Windowってやつだよ。
18デフォルトの名無しさん:2008/03/04(火) 16:03:24
MDIフレームのデフォルト処理::DefFrameProcってMDIクライアントが作られるまでは、::DefWindowProcでもいいの?

ごめん、なんか無茶苦茶変な質問になっちまった...orz
でも知りたいの...orz
19デフォルトの名無しさん:2008/03/04(火) 16:15:46
>>16
あります。どちらもヘッダ部分に書かれているのでそこだけ解析すれば、全部を読む必要はありません。
とは言え、面倒ですが。
20デフォルトの名無しさん:2008/03/04(火) 16:59:08
>>19
JPGの場合は・・・、とかPNGの場合は・・・、とかTIFFの場合は・・・、とか処理分けて自分で読むしかないでしょうか?
21デフォルトの名無しさん:2008/03/04(火) 17:26:05
>>20
そうです。それが嫌なら既存のライブラリで済ませるしかないでしょう。
例えばImageMagickならその辺りは全部サポートしています。
22デフォルトの名無しさん:2008/03/04(火) 17:34:32
でもその手のライブラリを使うとなると、
大抵データ全体を読み込むことになると思う。
23デフォルトの名無しさん:2008/03/04(火) 17:38:22
libpngやjpeglibならヘッダだけ読む関数もある
24デフォルトの名無しさん:2008/03/04(火) 17:45:38
でもその手のライブラリを使うとなると、
大抵フォーマットごとに処理を分けることになると思う。
25デフォルトの名無しさん:2008/03/04(火) 17:50:23
全部で読んで成功したやつを採用、とか
26デフォルトの名無しさん:2008/03/04(火) 18:22:15
>>18
OKだが、普通は常にDefFrameProcに投げる
27デフォルトの名無しさん:2008/03/04(火) 18:27:36
Jpegの場合は、ヘッダの構造上、ファイルを全部読んだ方が処理は簡単です
GifやPngは、画像サイズの位置が固定されているので一部だけ読んで処理しても問題は無いです
28デフォルトの名無しさん:2008/03/04(火) 18:31:26
>>26
ありがとう!!!
今、ウインドウズのプログラムの勉強がてら、クラスライブラリ作ってて
ウインドプロシージャ見てたら統一できそうだなぁと思ってたんです
これで心置きなく統一できます!!!
29デフォルトの名無しさん:2008/03/04(火) 18:35:41
その考え方は危険すぐる
30デフォルトの名無しさん:2008/03/04(火) 18:53:13
// ウインドハンドルデータベース
std::map<HWND, pUBaseWindow> WndToPointer;

/*******************************************************************************/
// ウインドプロシージャ
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
LPCREATESTRUCT lpcs;
pUBaseWindow pWindow = WndToPointer[hwnd];

if (!pWindow){
if (msg == WM_CREATE){
lpcs = (LPCREATESTRUCT)lParam;
pWindow = (pUBaseWindow)lpcs->lpCreateParams;
pWindow->SetHandle(hwnd);
WndToPointer[hwnd] = pWindow;
} else {
return ::DefWindowProc(hwnd, msg, wParam, lParam); // この部分が::DefFrameProcになる
}
}
if (msg == WM_DESTROY){
WndToPointer.erase(hwnd);
}

return pWindow->WndProc(msg, wParam, lParam);
}

こんな感じっす
31デフォルトの名無しさん:2008/03/04(火) 18:59:52
>>30
それだったら、俺はDefWindowProcにする。
ちなみに、WM_CREATEより前にWM_NCCREATEが送られてきて、
そっちでもlParamからCREATESTRUCTへのポインタが得られる。

現在のWindowsでは、WM_NCCREATEの前に
WM_GETMINMAXINFOが送られるということが知られている。
逆に言えば、それしかやってこないということ。
だから、俺はDefWindowProcで済ます。

ついでに言えば、WM_DESTROYのあとにはWM_NCDESTROYがやってくる。
eraseはそっちでやればいいと思う。
32デフォルトの名無しさん:2008/03/04(火) 19:29:21
Win32使わずにEMFファイル作りたくてEMFの仕様書を読んだんだが、
EMR_HEADERとEMR_EOFの間にどのレコードを作ればいいかわかりません。
具体的には、
 任意の色、サイズをもった文字列、四角形、線がかければ良いんですが?



33デフォルトの名無しさん:2008/03/04(火) 19:51:09
>>31
アドバイスありがとう!!!
34デフォルトの名無しさん:2008/03/04(火) 22:09:31
ぽまいらSTLとか使ってますか?

35デフォルトの名無しさん:2008/03/04(火) 22:56:36
>>34
stringは絶対に使わない
36デフォルトの名無しさん:2008/03/04(火) 22:57:51
MFC だと CString のが親和性高いからまあ使わなくてもいいかもな。
たまに使うけど。
37デフォルトの名無しさん:2008/03/04(火) 22:58:46
え、std::stringはSTLなの?
38デフォルトの名無しさん:2008/03/04(火) 23:03:16
ど  っ  ち  で  も  い  い

強いて言うならC++標準。
つまんないことにこだわらんでも良いよ。

頻出ネタの上に面白くない議論にしかならないのでスルー。
39デフォルトの名無しさん:2008/03/04(火) 23:12:47
apiじゃない
40デフォルトの名無しさん:2008/03/04(火) 23:51:28
ウィンドウが生きてるかどうか、どうやって調べたらいいですか?
ちなみにタイトルバーのキャプションは刻々と変化するかもしれず、また存在しないかもしれないです。
41デフォルトの名無しさん:2008/03/04(火) 23:54:10
>>40
IsWindow
42デフォルトの名無しさん:2008/03/04(火) 23:54:21
IsWindow
IsHungAppWindow
とか?
43デフォルトの名無しさん:2008/03/05(水) 00:24:43
>>41-42
トンクス!!
44デフォルトの名無しさん:2008/03/05(水) 03:05:52
ダイアログボックスでWM_KEYDOWNを受けるにはどうしたらいいですか?
45デフォルトの名無しさん:2008/03/05(水) 11:27:24
SendDlgItemMessage?関数の使い方がわかりません。
最後の引数2つがわからないのです。(あとはわかります)
最後の二つの引数はwpalam lpalamとか設定する?いったいなにを
設定すべきなの?
46デフォルトの名無しさん:2008/03/05(水) 11:30:40
自分で好きなもの
47デフォルトの名無しさん:2008/03/05(水) 11:31:16
>>45
あなたが伝えたいと思う熱いメッセージの内容を
48デフォルトの名無しさん:2008/03/05(水) 11:31:40
>>45
SendDlgItemMessage(hDlg, nIDDlgItem, Msg, wParam, lParam)
 = SendMessage(GetDlgItem(hDlg, nIDDlgItem), Msg, wParam, lParam)

これで分からなかったらCとWin32を勉強しなおせ
49デフォルトの名無しさん:2008/03/05(水) 14:39:51
FindFirstFileでファイルの存在をチェックしているのですが、ロングファイルネームだと
Run-Time Check Failure #2 - Stack around the variable が出てしまいます。

> + cAlternateFileName 0x0013e578 "????200712~2.JPG" wchar_t [14]

ググってもFindFirstFileでこんなレベルのエラーが出た人は居ない様です…orz
何をミスっているのでしょうか?

環境はXP SP2、VC++ 2008EE、後はDirectX9 2007Novを入れている位です。
50デフォルトの名無しさん:2008/03/05(水) 14:44:09
> FindFirstFileでファイルの存在をチェックしているのですが
その程度なら PathFileExists で良かろう
51デフォルトの名無しさん:2008/03/05(水) 14:50:59
>>49
>何をミスっているのでしょうか?

配列の長さ
52デフォルトの名無しさん:2008/03/05(水) 15:05:40
>>50
そうですね、PathFileExistsを使う様にします。
それと後出しになって申し訳ないのですが、フォルダの中身をなめる事も
別の個所でやっていました。
元の問題についてもアドバイス頂けませんか?

>>51
具体的にはどこを修正すれば良いのでしょうか?
53デフォルトの名無しさん:2008/03/05(水) 15:16:16
>>52
デバッガの使い方でも覚えたらどうかね?
54デフォルトの名無しさん:2008/03/05(水) 15:17:44
WIN32_FIND_DATAがANSIになってんじゃね?
55デフォルトの名無しさん:2008/03/05(水) 16:07:10
>>54
定義を手繰るとFindFirstFile、WIN32_FIND_DATA共にW付きでした。

16文字帰ってきている様に見えるのですが、そういうものなのでしょうか?
56デフォルトの名無しさん:2008/03/05(水) 16:23:21
そういう妄想は最少のコードで検証してから。
wmainにFindFirstFileだけ書いて動かしてみればいい。
57デフォルトの名無しさん:2008/03/05(水) 16:46:47
コード1行も貼らないでどこを修正、とか聞かれてもなー
58デフォルトの名無しさん:2008/03/05(水) 18:56:10
         |;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ノ|
         |丶、 ;;; __;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;_,,: ィ";;_|
         ト、;;;;;;;;;;;;;;;` ` '' ー -- ‐ '' ";;;;;;;;;,:ィ;:;!
        ,';:``' ‐ョ 、 ,_ ;;;;;;;;;;;;;;;;;;;;;;;;;;; , - '"l;:;:;:;:l
        l;:;:;:;:;:;:;ミ   ` ` '' ー -‐ '"    ,リ;:;:;:l
        l;:;:;:;:;:;:;:ゝ   く三)   (三シ  `ヾ;:t、
       fミ{;:;:;:;:f'´  , -−-_,, _,ィ 、_,,ィ,.-−、  };f }
       l トl;:;:;:;:l  、,ィ或tュ、゙:ミ {,'ィt或アチ l:l,/
       ゙i,tヾ:;:;:!  `ヽ 二ノ   ト ` ‐''"´  l:l:f
        ヽ`ー};:l       ,r'、   ヽ      リ_)
         `"^l:l      ,/゙ー、  ,r'ヽ    l
           ゙i    ,ノ    `'"  丶.   ,'    コードを貼らずして修正とな!?
             ゙l、   ′ ,, ィrェェzュ、,_ 〉 } /
            ',ヽ  ヘヾ'zェェェッ',シ' //ヽ
             } 丶、 ` ー--‐ '"'´,/ノ:.:.:ヽ
            /l   丶、      ,.イ:.:.:.:.:.:.:.:丶、、
          ,r'"^l !    ` ー‐;オ´:.:.:.:.:.:.:.:.:.,ノ  ,}、
     ,. -ァ=く(:.:.:.l  l      //:.:.:.:.:.:., - '"  ,/ ヽ、
  , - '"´ / ,/`>'t、_」___,ィ'゙,ィ,.: -‐ '" ,. -‐ '"    \
/    ヽ-(  / / f   }li,     ,. -‐ '"          \
59デフォルトの名無しさん:2008/03/05(水) 21:26:32
じゃあ、張りますね。

int _tmain(int argc, _TCHAR* argv[])
{
WIN32_FIND_DATA fileDataBuff;
HANDLE hFind;

hFind = FindFirstFile(_T("C:\\20051215105022.png"), &fileDataBuff);
if (hFind != INVALID_HANDLE_VALUE)
FindClose(hFind);

return 0;
}
60デフォルトの名無しさん:2008/03/05(水) 23:27:52
>>59
このコードでランタイムエラーが起きると?
61デフォルトの名無しさん:2008/03/06(木) 00:23:14
ウィンドウプロシージャ内でSleepすると、
他のスレッドも一緒に止まってしまっているようなのですが、
止まらないようにするにはどうすればいいのでしょうか。
62デフォルトの名無しさん:2008/03/06(木) 00:26:56
win32apiとjavaのSWTとではどちらの方が2D描画が高速ですか
63デフォルトの名無しさん:2008/03/06(木) 00:32:22
win32apiだろ?
64デフォルトの名無しさん:2008/03/06(木) 01:15:22
SWTのほうが実は早かったりする
65デフォルトの名無しさん:2008/03/06(木) 01:29:21
まじかよ
66デフォルトの名無しさん:2008/03/06(木) 01:32:14
wavデータをバイナリ化するにはどうしたらいいですか
67デフォルトの名無しさん:2008/03/06(木) 01:35:57
wavデータはバイナリデータです
68デフォルトの名無しさん:2008/03/06(木) 01:36:27
wavデータをリソースとして実行ファイルに埋め込むにはどうしたらいいですか
69デフォルトの名無しさん:2008/03/06(木) 01:41:35
リソースコンパイラかIDEのリソースエディタを使う
70デフォルトの名無しさん:2008/03/06(木) 02:04:48
SWTってDirectXみたいにハードウェア資源を利用して描画速度を上げたりしてるの?
71デフォルトの名無しさん:2008/03/06(木) 02:31:10
>>64
いや、まじで

>>70
Yes
HALのハード寄りの低位なところをVMが使ってるらしいよ
意外と知られてない事実
72デフォルトの名無しさん:2008/03/06(木) 02:38:22
前提となる条件が明示されていないのに、速い遅いの議論はナンセンス。
73デフォルトの名無しさん:2008/03/06(木) 02:41:43
>>61
本当にスレッド分けてるのか?
74デフォルトの名無しさん:2008/03/06(木) 06:25:18
>>61
別スレッドからメッセージをSendしているからじゃね?
7561:2008/03/06(木) 08:05:08
簡単にコードを書くと、やってるのはこんな感じです。

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){
CreateThread(スレッド処理);
while(GetMessage(&msg, NULL, 0, 0)){
DispatchMessage(&msg);
}
return 0;
}

LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam){
switch(uMsg){
case WM_CLOSE:
StopFlg = TRUE;
Sleep(100); //ここでスレッドも止まる
FreeApp();
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
76デフォルトの名無しさん:2008/03/06(木) 08:30:34
スレッド側の処理を書かないのは本当は解決したくないからだよな。
だったら出ていけ。
77デフォルトの名無しさん:2008/03/06(木) 09:14:32
情報後出し野郎はスルー汁
78デフォルトの名無しさん:2008/03/06(木) 10:07:14
俺も>>74だと思う
79デフォルトの名無しさん:2008/03/06(木) 13:25:41
ファイルのプロパティの詳細タブの情報ってどうやって取得するの?
文字列と値を取得したいです。
80デフォルトの名無しさん:2008/03/06(木) 14:58:56
IShellFolder2.GetDetailsOf/GetDetailsEx
81デフォルトの名無しさん:2008/03/06(木) 16:48:20
>>59
その内容だけで
> + cAlternateFileName 0x0013e578 "????200712~2.JPG" wchar_t [14]
みたいにはならんぞ。????には実際に何が入ってる?
82デフォルトの名無しさん:2008/03/06(木) 16:49:00
デバッグ中にfileDataBuffウォッチして確認してみてくれ
83デフォルトの名無しさん:2008/03/06(木) 17:18:53
そもそもてめぇのC:\のファイル構成が分からんのに
hFind = FindFirstFile(_T("C:\\20051215105022.png"), &fileDataBuff);
で何が返ってくるかなんて知るかぼけ
84デフォルトの名無しさん:2008/03/06(木) 17:27:16
タイトルバー左のアイコンを表示しないようにするにはどうすれば出来ますか?
85デフォルトの名無しさん:2008/03/06(木) 18:07:23
コード貼れとかスルー汁とか、このスレの住人の愛情の裏返しだから誤解すんな。
おまいさんが当たり前のことをしなかったから、それを戒めただけ。
おまいさんが本当に困ってるという前提で、それぞれ反応しただけ。
コードが貼れない理由もあるんだろうけど、このスレの住人のこと信頼してるなら
きちんとコードを示してな。ここは困った人に知識を分け与えてくれる住人が
いるから続いてるわけだ。それに比べおまいさんの書き込みからは問題を解決
したいという真っ直ぐな気持ちが伝わってこないんだよ。俺の言いたいことは
それだけ。

激しくスレ違いなのでさげ
86デフォルトの名無しさん:2008/03/06(木) 20:22:25
どうでもいいけどFindCloseをCloseHandleと間違えてしまうことがよくあるw
なんでFind系だけ違うのだろう・・・
87デフォルトの名無しさん:2008/03/06(木) 22:31:55
見つけて欲しいからさ。
8861:2008/03/06(木) 22:36:40
でかくてコード全部貼れないから、一部だけ貼ったんですが。
アプロダにソース上げたら、見てくれるというなら、
見てもらいたいです。

Sleepで止まっていたのは、
スレッド処理にあるDirectXの、
IDirect3DDevice9::EndScene();が原因でした。
この1行を抜けば止まらないんですが、
理由はまだよく分かりません。

DirectXの問題のようなので、DirectXスレで聞いてみます。
89デフォルトの名無しさん:2008/03/07(金) 02:56:48
EndSceneする時に描画サーフェイスからウィンドウに転送してるからじゃねえの
んで転送先のウィンドウがロックされてるから止まる
90デフォルトの名無しさん:2008/03/07(金) 03:59:15
>>80
ありがとう。
プロパティの文字列(値ではなく表題)を取るには、IShellFolder2::MapColumnToSCIDで取得するしかないでしょうか。
これだと200ぐらいループが回るw

SHCOLUMNIDのGUID fmtidに対応した文字列と、
GUID fmtid + DWORD pidの組み合わせに対応した文字列を取得する方法はありませんか?
91デフォルトの名無しさん:2008/03/07(金) 12:31:50
>>59
その名前のファイル置いてやってみたけど特に問題ないな。
XP SP2 で NTFS のパーティション。

デジカメでフォーマットしたSDとか、そういう変なボリュームを相手にしてない?
(だからってバッファオーバーランは困るけど)
92デフォルトの名無しさん:2008/03/07(金) 12:47:17
C:\がSDカードとかあり得なくね?
93デフォルトの名無しさん:2008/03/07(金) 13:15:09
うちのB:\はsubstしたデスクトップフォルダ
94デフォルトの名無しさん:2008/03/07(金) 14:16:30
いやC:\以外はどうにでも出来るだろw
95デフォルトの名無しさん:2008/03/07(金) 17:11:47
学校にD:にOS入ってて、USBメモリとか挿すとC:として表示されるPCが1台あるんだが
96デフォルトの名無しさん:2008/03/07(金) 17:21:56
>>95
やめときなされ
事実を語っても推奨される環境云々って自説に固執するオバカが騒ぎ出すだけだから
無知は無知のまま放って置けばよいのだ
97デフォルトの名無しさん:2008/03/07(金) 18:08:02
そういえばPC-98とかでC:がFDDだと動作しないソフトがあったな
98デフォルトの名無しさん:2008/03/07(金) 18:12:02
98はAから始まってたし、どーなんだろ
99デフォルトの名無しさん:2008/03/07(金) 21:48:01
>>90
IPropertyUI
100デフォルトの名無しさん:2008/03/08(土) 00:48:20
98 もなにも、今でもフロッピーは A だっしょ。
A, B がフロッピー用に空けられていて、
HDD が C からなのが通例。
あくまで通例であってそうしないといけないわけじゃないが。
101デフォルトの名無しさん:2008/03/08(土) 00:51:26
                |
                |
                |
                |
     /V\        ,J>>100
    /◎;;;,;,,,,ヽ
 _ ム::::(;;゚Д゚)::| ジー
ヽツ.(ノ::::::::::.:::::.:..|)
  ヾソ:::::::::::::::::.:ノ
   ` ー U'"U'
102デフォルトの名無しさん:2008/03/08(土) 00:53:25
103デフォルトの名無しさん:2008/03/08(土) 00:57:35
>>100
ネタなのかPC-98を知らないゆとり世代なのか
104デフォルトの名無しさん:2008/03/08(土) 01:06:31
>>103
あの時代は HDD はそんな一般的じゃなくて、
フロッピー2枚差しが普通だっただろ?
その時代、ドライブレターは頭から A, B と振ってた。
そこに HDD がやってきて、それがフロッピーの次の C から振られるようになって、
その後フロッピーが1つしかなかったりそもそも無くなったりすることが増えたけど、
結局 HDD のドライブレターは C から振られるので定着してしまっていた、
という流れだと思っていたのだが。
105デフォルトの名無しさん:2008/03/08(土) 01:12:14
PC/AT互換機はABドライブがフロッピー用に予約されてて
テープメディア等を繋ぐとC以降が割り当てられた。
拡張FDDをつければCがFDDにもなる。
その後、テープメディア等からHDDに変わったけど
ABドライブは相変わらずフロッピー用に予約されてる。

そんな事知らないNECが作ったPC-98は起動ドライブが無条件でAになる。
こっちの方が分かり易いとでも思ったんだろうな。
だから、HDDから起動すればHDDがAドライブになる。
Cドライブに固定するのは確か出来なかった気がするけどもう忘れた。
106デフォルトの名無しさん:2008/03/08(土) 01:18:05
そうだったっけ。
もう記憶があやふやだな・・・。
107デフォルトの名無しさん:2008/03/08(土) 01:31:44
PC98のせいでPC普及が遅れたのか
PC98のおかげでPCが普及したのか

どちらにせよPC98独自ルールになれてた漏れは
Win95からAT互換機移るときに苦労した思い出がある
DOSゲーやりたいがためにWindows95が出た後もPC98買ってた馬鹿がここに一人いますよ
108デフォルトの名無しさん:2008/03/08(土) 01:38:43
DOSの頃はNEC PC98の方がVRAMいじり易くて好きだったな。
109デフォルトの名無しさん:2008/03/08(土) 01:40:10
0番地弄くりまくれる
110デフォルトの名無しさん:2008/03/08(土) 01:43:06
VALUESTAR 買ったな。
当時はまだ PC98 買う人はいた気はする。
111デフォルトの名無しさん:2008/03/08(土) 01:50:08
PC98じゃなくてPC-98だろ
112デフォルトの名無しさん:2008/03/08(土) 01:58:51
昭和61年生まれの俺だってPC-98ぐらい知ってるよ。
ゆとり世代馬鹿にすんな。
113デフォルトの名無しさん:2008/03/08(土) 02:02:13
そこら辺は突っ込んだら負けかなと思った
114デフォルトの名無しさん:2008/03/08(土) 02:02:39
平成元年生まれだがPC-98知ってるぞ
実機は見たことないが
ゆとり世代馬鹿にすんな。
115デフォルトの名無しさん:2008/03/08(土) 02:23:50
昭和生まれなので、amiga使ってました
ビデオトースターとか
116デフォルトの名無しさん:2008/03/08(土) 02:50:29
馬鹿はいつまでたっても馬鹿
馬鹿はいつの時代にもいる
馬鹿は量産される
117デフォルトの名無しさん:2008/03/08(土) 03:10:58
そろそろお別れのお時間となりましたのでドライブレターの話は終了
118デフォルトの名無しさん:2008/03/08(土) 03:13:16
もう終わってるのだが。
119デフォルトの名無しさん:2008/03/08(土) 03:14:49
ここまで誰もスレ違いと指摘していないことに驚きを禁じ得ない
120デフォルトの名無しさん:2008/03/08(土) 03:34:44
お題に沿った話は「ググれば?」「思い違いだよ」のパターンで固定化されちまってるから・・
121デフォルトの名無しさん:2008/03/08(土) 03:43:58
ちなみにPC/ATのFDDはドライブが1台しかなくても
A:/B:どちらでもアクセスできるようになっていた
PC-98の場合は・・・
122デフォルトの名無しさん:2008/03/08(土) 03:46:05
USB-HDとかネットワークドライブとかを
いっぱいマウントしてD〜Z使い果たしているPCで
さらにマウントするとBにマウントされたのに感動
123デフォルトの名無しさん:2008/03/08(土) 04:56:50
うるせーだまれRAIDぶっ壊すぞ
124デフォルトの名無しさん:2008/03/08(土) 09:39:06
>>105
PC-98でも、Windows 2000を新規インストールすると、
起動するHDDパーティションがC:になるって聞いたことがある。
125デフォルトの名無しさん:2008/03/08(土) 10:19:31
質問スレは雑談を始める奴が出たしたら終わり。
そしてそれを咎める奴を無視したり叩いたりしたら再起不能。
126デフォルトの名無しさん:2008/03/08(土) 10:57:04
>>124
初期のPC-98と最近の(今でもあんのか知らんが)PC98は違うよ
127デフォルトの名無しさん:2008/03/08(土) 11:58:20
エロゲーなどで、
フルスクリーン時にマウスカーソルをウィンドウ上部に持ってくると、
上からタイトルバーがにょきっとスライドして出てくるものがありますが、

にょきっと出現させるAPIがあるのでしょうか?
それとも自前のプログラムですか。
128デフォルトの名無しさん:2008/03/08(土) 12:04:45
>>127
SetMenuNyoki
129デフォルトの名無しさん:2008/03/08(土) 12:11:25
そんなのあるんですね、調べてみます。
130デフォルトの名無しさん:2008/03/08(土) 12:15:20
むりやりAPIの話に戻した感が否めない
131デフォルトの名無しさん:2008/03/08(土) 12:23:55
>>128
パラメータkwsk
132デフォルトの名無しさん:2008/03/08(土) 12:29:21
DirectGDI+の話?
133デフォルトの名無しさん:2008/03/08(土) 12:39:49
SetMenuNyoki( HWND hParentWnd,HWND hMenuWnd,BOOLEAN bOpenHide,LPVOID pVoid )

ParentWnd 親ウインドウハンドル
hMenuWnd メニューのハンドル
bOpenHide TRUE:メニュー表示、FALSE:メニュー隠す
pVoid     拡張のための予約。NULLに設定。
134デフォルトの名無しさん:2008/03/08(土) 12:43:17
オンマウスオーバー処理は?
135デフォルトの名無しさん:2008/03/08(土) 12:47:17
ああいうアニメーションてどうやってるんだろう
動いてる間UIスレッド止まったりしないし
VistaのスクロールバーからMouseLeaveで徐々に色が消えるやつとか
136127:2008/03/08(土) 12:47:26
>>128
ちょっと本気でググってしまいました。

>>132
DirectXでできるんでしょうか?

素人考えですが、
タイトルバーが上からスライドしてくるということは、
その分、押し出される感じでクライアント領域が下にずれるから、
画面の描画内容が動かないようにするためには、
描画位置をその分上にスライドしないといといけないのかなと、
思うんですが、どうなんでしょうか。
137マジレスでごめん:2008/03/08(土) 12:53:35
138デフォルトの名無しさん:2008/03/08(土) 12:55:35
へーこんなのあるんだ
>>127じゃないけどためになった

ただゲーム以外でどこで使うのか思いつかない
139デフォルトの名無しさん:2008/03/08(土) 12:59:21
そのエロゲー作ってる会社に入って技術盗んでくればいいだけの話
ここで聞くな
140127:2008/03/08(土) 13:11:27
>>137
ありがとうございます。
こんなAPIがあるとは。
タイトルバーだけに適用できるんでしょうか。
141デフォルトの名無しさん:2008/03/08(土) 13:37:33
対象はウィンドウ。流行らなかったけど画面のはじにカーソルを持ってくるとにょきっとタスクバーが
表示されるようなアプリケーションで使われる。
142デフォルトの名無しさん:2008/03/08(土) 13:52:59
タイトルバーだけのウィンドウを作っておくとか
143デフォルトの名無しさん:2008/03/08(土) 13:59:42
エロゲー会社の技術力って半端ないな
IT業界みんなの憧れだわ
144127:2008/03/08(土) 14:25:04
思い返すと、にょきっと出るゲームはごく一部で、
多数のゲームは単純にタイトルバーを表示していただけかもしれません。

タイトルバーだけのウィンドウと、
クライアント領域だけのウィンドウを作って、
AnimateWindow(hTitleWnd, 600, AW_SLIDE | AW_VER_POSITIVE);で、
タイトルバーウィンドウだけ、にょきっと出してみようと思います。

>>143
初心者が2chで質問して、2時間であたりがつく技術。
半端ないですね。
145デフォルトの名無しさん:2008/03/08(土) 15:08:55
IEの全画面表示でもSetMenuNyoki使われてるね。
146デフォルトの名無しさん:2008/03/08(土) 15:16:01
Nyoki言うなw
147デフォルトの名無しさん:2008/03/08(土) 16:34:25
Visual Studioで各種ツールバーを自動的に隠す、の設定にしてる時のあれでないの?
148デフォルトの名無しさん:2008/03/08(土) 17:21:17
#define SetMenuNyoki(hParentWnd, hMenuWnd, bOpenHide, pVoid) \
    AnimateWindow(hMenuWnd, 200, (bOpenHide) ? AW_SLIDE : AW_HIDE)
149デフォルトの名無しさん:2008/03/08(土) 17:45:03
Windows98の出荷年以前までは実際Koeiも真っ青ってなエロゲメーカがゴロゴロしてたんだけどねぇ
150デフォルトの名無しさん:2008/03/08(土) 19:50:21
BOOL WINAPI DllMain(HINSTANCE hInst, WORD wReason, LPVOID lpReserved)
{
switch(wReason)
{
case DLL_PROCESS_ATTACH:
VERBOSE(DLLTEXT("Process attach.\r\n"));
break;

case DLL_THREAD_ATTACH:
VERBOSE(DLLTEXT("Thread attach.\r\n"));
break;

case DLL_PROCESS_DETACH:
VERBOSE(DLLTEXT("Process detach.\r\n"));
break;

case DLL_THREAD_DETACH:
VERBOSE(DLLTEXT("Thread detach.\r\n"));
break;
}
ユニドライバの最初にこうあるのですが、それぞれのメッセージは
どのようなときにおくられてくるのですか?またVERBOSEとはなんでしょうか?
151デフォルトの名無しさん:2008/03/08(土) 19:53:54
もうググレカスとしかいえない
152デフォルトの名無しさん:2008/03/08(土) 20:01:09
かもく or うざったモード
153デフォルトの名無しさん:2008/03/08(土) 21:21:06
いいから説明しろよカス
154デフォルトの名無しさん:2008/03/08(土) 21:36:13
それぞれのメッセージは
Process attach.のときにおくられてくる
Thread attach.のときにおくられてくる
以下略
155デフォルトの名無しさん:2008/03/08(土) 21:45:20
>>150
お前ってさ自己中で友達とかいないだろw
156デフォルトの名無しさん:2008/03/08(土) 23:36:13
ビットマップ画像のサイズを調べるときに、以下のような処理をしてるんですが、
描画するわけでもないのに、画像読込、解放してるのが凄く無駄な気がします。
サイズ取得用のAPIなど、もっといい方法ってないでしょうか?

BITMAP bmp;
HBITMAP hbmp = (HBITMAP)LoadImage(hInst, <画像のパス>, IMAGE_BITMAP, 0,0, LR_LOADFROMFILE);
GetObject(hbmp, sizeof(BITMAP), &bmp);
width = bmp.bmWidth; //画像幅取得
height = bmp.bmHeight; //画像高さ取得
DeleteObject(hbmp);
157デフォルトの名無しさん:2008/03/08(土) 23:47:01
ビットマップならヘッダに書いてると思うけどそういう事じゃなくて?
158デフォルトの名無しさん:2008/03/08(土) 23:47:43
CreateFileして24バイト読み込む

最初の14バイトがBITMAPFILEHEADER
以降がBITMAPINFOHEADER
159デフォルトの名無しさん:2008/03/08(土) 23:48:24
ごめんw
24じゃなくて54バイトw
160デフォルトの名無しさん:2008/03/08(土) 23:49:32
http://www.umekkii.jp/data/computer/file_format/bitmap.cgi
ここ見て必要なデータを直読みするといいよ
161デフォルトの名無しさん:2008/03/09(日) 00:00:06
どうもありがとうございます。
ヘッダから読み込むことにします。
162デフォルトの名無しさん:2008/03/09(日) 00:41:35
ここで質問するべきなのか迷いましたが、該当するようなスレがないようなので質問させていただきます

指定のフォント、フォントサイズで文字列の画面上でのサイズを計算したいのですが、
どんなAPIを使えばできますか?
163デフォルトの名無しさん:2008/03/09(日) 00:47:04
GetTextExtentPoint32
164デフォルトの名無しさん:2008/03/09(日) 00:48:46
>>163
即レスありがとうございます!
助かりました
165デフォルトの名無しさん:2008/03/09(日) 01:47:55
なんか2つとも同じ質問が最近出たような・・・
166デフォルトの名無しさん:2008/03/09(日) 01:48:57
気にするなよ( ´_ゝ`)
167デフォルトの名無しさん:2008/03/09(日) 10:39:25
main()で開始したコンソールに対して、
プログラム内部からSetWindowLongを試みたところ

GetLastErrorで5番のアクセス拒否が返ってきたのですが
これはやっちゃいけないことなんでしょうか
168デフォルトの名無しさん:2008/03/09(日) 10:45:29
コンソールはcmd.exeの所有なんじゃね
169デフォルトの名無しさん:2008/03/09(日) 10:48:39
システムのメッセージを間借りして、自分の送りたい情報をSendMessageで送ってもいいものでしょうか?

例えば、
::SendMessage(hParent, WM_PARENTNOTIFY, MAKEWPARAM(WM_NCDESTROY, id), (LPARAM)hWindow);
の様な感じで
170デフォルトの名無しさん:2008/03/09(日) 10:51:53
と言うことはコンソールに拡張スタイルを適用するのは難しいですか
ありがとうございました
171デフォルトの名無しさん:2008/03/09(日) 10:53:42
>>169
なんでもおkという訳ではないけど、そういう使い方をするものは存在する

WM_HITTESTとか
172デフォルトの名無しさん:2008/03/09(日) 10:57:07
いやWM_APPでも使えば良いだけの話だろ
173デフォルトの名無しさん:2008/03/09(日) 11:17:11
>>171
ウインドウの終了を親ウインドウで捕まえたいのですが、POPUPスタイルだったり、MDIの子ウインドウだったりした場合
WM_PARENTNOTIFYを捕まえることが出来ないので自分で明示的に送ろうかと思ったのですが問題がでたらいやだなぁと思い
質問させていただきました

>>172
たしかに、WM_APPを使うのが楽でいいのですが...
オリジナルのWindows用クラスライブラリで使うので、WM_APPの使用は極力避けたいのです
174デフォルトの名無しさん:2008/03/09(日) 12:13:34
RegisterWindowMessage
175デフォルトの名無しさん:2008/03/09(日) 15:38:16
_beginthreadex を使用したプログラムで、MSDNには

abort、exit、_exit、または ExitProcess を呼び出したスレッドがあると、
すべてのスレッドが終了します。

と書かれていたのですが、明示的に終了関数を呼ばない場合
スレッドは生きたままになるのでしょうか?
176デフォルトの名無しさん:2008/03/09(日) 15:58:32
>endthread や endthreadex は、パラメータとして渡されたルーチンからスレッドが戻ると自動的に呼び出されます。
177デフォルトの名無しさん:2008/03/09(日) 16:09:46
>>175
普通に組むと、
エントリポイント - CRTのスタートアップ関数 - main/WinMain
という構造になる。
VC2005のCRTだと、main/WinMainから帰ってきた後で_exitが呼ばれているので、
その結果他のスレッドも終了させられる。

微妙にスレ違いなネタの気がしなくもないな。
178175:2008/03/09(日) 17:44:51
>>176,177
とんくす。それが知りたかった。
179デフォルトの名無しさん:2008/03/10(月) 00:21:01
サイズ復元ボタンを持っているけれど、
クライアント領域がないタイトルバーだけのウィンドウって、
どうやって作ればいいんでしょうか。
180デフォルトの名無しさん:2008/03/10(月) 00:31:23
ttp://www.google.com/search?q=%22%E3%82%B5%E3%82%A4%E3%82%BA%E5%BE%A9%E5%85%83%E3%83%9C%E3%82%BF%E3%83%B3%22

> "サイズ復元ボタン" に一致する日本語のページ 1 件中 1 - 1 件目
181デフォルトの名無しさん:2008/03/10(月) 00:32:33
リサイズ禁止にした上でウィンドウの高さをタイトルバーの高さに合わせれば
182デフォルトの名無しさん:2008/03/10(月) 00:37:07
>>180
「元のサイズに戻す」ボタンでした。
183デフォルトの名無しさん:2008/03/10(月) 00:52:39
ウインドウ作成するときに
ウインドウサイズを指定できるけど
クライアントサイズから
ウインドウサイズを算出することはできない?
184デフォルトの名無しさん:2008/03/10(月) 00:54:50
AdjustWindowRect
185デフォルトの名無しさん:2008/03/10(月) 00:57:02
NyokiWindowRect
186179:2008/03/10(月) 01:00:10
>>181
最大化も最小化もしていないので
「元のサイズに戻す」ボタンが表示されなくて、
でも、最大化してしまうとクライアント領域ができてしまいます。

>>183
なんか丁度10分前くらいに作ったので。どうぞ。
void getWindowSize(WORD clientW, WORD clientH, WORD* pWindowW, WORD* pWindowH, DWORD style) {
RECT rect = {0,0,clientW, clientH};
AdjustWindowRect(&rect, style, FALSE);
*pWindowW = (WORD) (rect.right - rect.left);
*pWindowH= (WORD) (rect.bottom - rect.top);
}
187デフォルトの名無しさん:2008/03/10(月) 01:04:01
メニューバーやスクロールバー等を考慮するとAdjustWindowRectでは対処出来ないので、
実際に表示してから目的の状態になるまでリサイズを繰り返すしかない。
188デフォルトの名無しさん:2008/03/10(月) 01:10:23
メニューはAdjustWindowRectExである程度考慮してくれる。
これだって完璧にやってくれるわけではないけど。
189デフォルトの名無しさん:2008/03/10(月) 01:26:03
>>186
なぜWORDなのか理由を聞きたい
190デフォルトの名無しさん:2008/03/10(月) 01:27:55
NyokiWiki希望
191デフォルトの名無しさん:2008/03/10(月) 01:40:22
>>189
深い理由はないけど、
サイズ4294967296みたいなウィンドウを作る予定はなかったので。
192デフォルトの名無しさん:2008/03/10(月) 02:13:14
特に理由がないときはintにしておくのが一番効率がいいってばっちゃがいってた
193デフォルトの名無しさん:2008/03/10(月) 02:13:54
コンピューターおばあちゃん乙
194デフォルトの名無しさん:2008/03/10(月) 02:27:21
ウォーウ、ウォウ、ウォウ、ウォウォウオウ
195デフォルトの名無しさん:2008/03/10(月) 02:31:48
さてはおまいら同世代だなw
196デフォルトの名無しさん:2008/03/10(月) 02:42:07
古い世代なの?スプーンおばさんなら知ってる。
197デフォルトの名無しさん:2008/03/10(月) 02:42:46
コンピュータ、おばあちゃんときたらアビバしか思いつかない
198デフォルトの名無しさん:2008/03/10(月) 02:42:51
short main(short argc, char **argv)

こんなソースに噴いた事あるw
199デフォルトの名無しさん:2008/03/10(月) 02:52:55
なんだその滅茶苦茶な引数www
200デフォルトの名無しさん:2008/03/10(月) 02:54:02
と戻り値の型
201デフォルトの名無しさん:2008/03/10(月) 02:59:34
sizeof(short int)==sizeof(int)な処理系なんだろ
202デフォルトの名無しさん:2008/03/10(月) 03:28:03
>>191
サイズの小さい変数を使ったら速くなると思ったら大間違い。
WORDなんて中途半端に混ぜるとかえって遅くなる。
そこはRECTのメンバがLONGだから、LONGにするのが普通。
203デフォルトの名無しさん:2008/03/10(月) 03:54:48
速くしたいからなんて書いてないな
最後の一行は同意
204デフォルトの名無しさん:2008/03/10(月) 11:06:34
コンピューターおばあちゃんも明治生まれだから
もうobsoleteだな
205デフォルトの名無しさん:2008/03/10(月) 12:32:40
>>203
じゃあ遅くしたいのか
206デフォルトの名無しさん:2008/03/10(月) 12:43:23
おながいサミヤどん
207デフォルトの名無しさん:2008/03/10(月) 13:18:40
ちと質問なんですが、キーボードメッセージがどのデバイスから送られてきたかを調べて
デバイスごとに処理を振り分けるということは可能なのでしょうか?

具体的にはPS/2とUSB接続の2種類のキーボードが接続されているPCで、
PS/2キーボードでEnterキーが押された場合と、
USBキーボードでEnterキーが押された場合で処理を振り分けたいのです。
208デフォルトの名無しさん:2008/03/10(月) 13:21:08
やったことないので糞レスですまないが
そんなことを実現しているアプリはあるのでできるはず
209デフォルトの名無しさん:2008/03/10(月) 13:27:54
>>207
XP以降ならRaw Inputで区別できる。
210207:2008/03/10(月) 13:58:00
>>208-209
RawInputでぐぐったらそれらしい情報が見つかりました。
これで何とかなりそうです。ありがとうございました
211デフォルトの名無しさん:2008/03/10(月) 15:23:09
できるが、WM_***よりもっと上位の部分に食い込まないと無理だろうな
212デフォルトの名無しさん:2008/03/10(月) 17:46:42
プログラム多重起動防止のため、mutexを使うことがよくありますけど、
OpenMutexでミューテックスが開けた場合、そのミューテックスハンドルを元に
ミューテックスを持っているプロセス(≒前のインスタンス)のプロセスハンドル
又はプロセスIDを得る方法ってあるんでしょうか?

頻繁に起動・終了するタイプのプロセスなので、可能ならそれを使って
WaitForSingleObjectしたいのです。
213デフォルトの名無しさん:2008/03/10(月) 17:50:13
212です。
よく考えたら開いたミューテックス自体を使って同期すればいいのか・・・
214デフォルトの名無しさん:2008/03/10(月) 18:02:59
Mutexとか面倒くせえなあ
WinMainの第二引数が使えりゃいいのに
215デフォルトの名無しさん:2008/03/10(月) 19:16:01
多重起動禁止したいときにOpenMutex()が出てくるコードは、やり方を間
違っているので注意。
216デフォルトの名無しさん:2008/03/10(月) 21:00:44
そこまで教えるならCreateMutexを使えと教えてやれよ
217デフォルトの名無しさん:2008/03/10(月) 23:32:49
多重起動禁止といえば、俺はいつもCreateMutex→CreateWindowの順で
やっていたが、CreateWindow→CreateMutexにしないと穴があるな。

既に起動しているインスタンスがあれば、そっちをアクティブにするんだけど
CreateWindowの前に多重起動の判定していると、Mutexはあるがウインドウが
ないという状況が存在するね。
218デフォルトの名無しさん:2008/03/10(月) 23:40:01
ウィンドウがあってもアクティブにできるかどうかわからんぞ
終了直前かもしれんし
219デフォルトの名無しさん:2008/03/11(火) 00:33:30
面倒くさいから、多重起動できちゃったら
「あたり。今日はちょっといいことあるかも」
ってことにしよう。
220デフォルトの名無しさん:2008/03/11(火) 00:49:27
そもそも本当に多重起動を防止すべきソフトなんて限られてると思うが
221デフォルトの名無しさん:2008/03/11(火) 01:19:00
Mutexハケーンしたらタイマー掛けてWindow探せばイイだけじゃないの?
222デフォルトの名無しさん:2008/03/11(火) 02:22:57
>>217
「Win32/C++マルチスレッドプログラミング詳説」
CreateMutexでOwnerを設定し、ウィンドウができたらReleaseMutex
別スレッドはWaitFor
223デフォルトの名無しさん:2008/03/11(火) 06:38:37
普段は多重起動できないのに肝心な時に腐るほど大量に起動してしまうタスクマネージャw
224デフォルトの名無しさん:2008/03/11(火) 09:55:07
あるある
225デフォルトの名無しさん:2008/03/11(火) 10:39:18
Winampって普通多重起動しないじゃんか。
曲を開く度にWinampが起動したら困るっしょ。
だけど、Vistaのエクスプローラで複数選択してコマンドバーから
Winampのアイコン押すと、選択した数だけWinampが起動する。凄い。ヤバい。
226デフォルトの名無しさん:2008/03/11(火) 10:41:01
そうだね。宇宙ヤバイね。
227デフォルトの名無しさん:2008/03/11(火) 11:26:54
他プログラムがファイルに書込んでるんですが、
この書込みが終了したことを知るAPIってありますか?
228デフォルトの名無しさん:2008/03/11(火) 11:38:34
APIレベルじゃムリじゃねーかな
229デフォルトの名無しさん:2008/03/11(火) 12:32:35
書込禁止共有でオープンできるか否か
230デフォルトの名無しさん:2008/03/11(火) 16:03:08
RegSaveKey でレジストリをファイルに落としたのですが、出力するファイルがバイナリのレジストリでした。
レジストリをテキストのレジストリファイルする API などありませんでしょうか。
231デフォルトの名無しさん:2008/03/11(火) 16:34:25
そのテキストの形式は?
regedit.exe互換にしたいということ?
232デフォルトの名無しさん:2008/03/11(火) 16:39:46
>>231
そうです。regedit.exe 互換にしたいと思ってます。
233デフォルトの名無しさん:2008/03/11(火) 17:10:35
特定のプロセスがエラーで死ぬとき、エラーメッセージ(このプログラムは不正な処理云々)を
出さずにそのままプロセス消滅とさせる方法はあるでしょうか?

とあるシェルエクステンションで外部プラグインDLLを利用可能としたとき、プロセス分離させてある
ので出来の悪いプラグインが落ちてもシェルは巻き込まないけど失敗時にエラーが出るのは避け
たい・・・という用途です。
234デフォルトの名無しさん:2008/03/11(火) 17:11:54
233の追記です。
普通のエラー類ならプラグイン呼び出し部だけWin32例外ハンドラで捕まえられますが、
DirectShowモジュール等を使うと例外ハンドラだけではエラーが捕捉しきれないようなのです。
235デフォルトの名無しさん:2008/03/11(火) 18:42:49
まずはその出来の悪いプラグインの作者に文句言って直して貰うんだ
236デフォルトの名無しさん:2008/03/11(火) 18:50:34
StartPage を実行するの前のページで設定していた CreatePen での設定は
引き継がれないdえ初期化されてしまうものなのでしょうか?
237デフォルトの名無しさん:2008/03/11(火) 19:22:14
すいません。win32apiを使って、低解像度(320x240)のフルスクリーンでビットマップを描画すると、
ぼやけた感じになるのですが、これを1ドットずつくっきりと表示させるにはどうしたらいいですか
238デフォルトの名無しさん:2008/03/11(火) 19:23:50
ちなみにdirectXのsprite描画でも同じ結果でした。
低解像度ではぼやけるものなのでしょうか。
239デフォルトの名無しさん:2008/03/11(火) 19:34:37
液晶が悪いって落ちじゃないよな?
240デフォルトの名無しさん:2008/03/11(火) 20:35:21
>>232
http://itaya.corso-b.net/TIPS/TIPS015.html
regeditに引数をつけて呼び出すとか。
241デフォルトの名無しさん:2008/03/11(火) 20:40:09
>>230
受け取ったレジストリ情報を自分でテキストとして出力すればいいだけだろ。
242デフォルトの名無しさん:2008/03/11(火) 20:59:21
>>237一切拡大とかせずに表示してるんだろうな?
243デフォルトの名無しさん:2008/03/11(火) 21:16:39
>>242
はい。BitBltで表示してます。
ていうか、マウスポインタもぼやけて表示されます。
244デフォルトの名無しさん:2008/03/11(火) 21:20:33
>>243
CRTモニタ使うといいんじゃない?
245デフォルトの名無しさん:2008/03/11(火) 21:32:36
だから液晶のディザリングだろうが
246デフォルトの名無しさん:2008/03/11(火) 22:53:22
液晶 ぼやける の検索結果 約 80,800 件
247デフォルトの名無しさん:2008/03/11(火) 23:13:39
液晶 Nyoki の検索結果 約 94 件
248デフォルトの名無しさん:2008/03/11(火) 23:16:09
>>233
SetUnhandledExceptionFilter使えば規定の処理を上書きできるのかなあ?
よくわからん。ごめん。
Advanced Windowsに何か書いてあったような気もするけど…。
249デフォルトの名無しさん:2008/03/11(火) 23:43:46
>>240
Vistaだと管理者パスワードが必要。
>>241のように自分でregedit互換のテキストにするほうがいいんじゃ?
ユーザーに面倒をかけるよりは自分が面倒くさいほうがまし。
250デフォルトの名無しさん:2008/03/12(水) 00:18:09
>>249
その程度でUACなの?
251デフォルトの名無しさん:2008/03/12(水) 00:21:44
regedit.exeそのものがUACに引っ掛かるっしょ
252デフォルトの名無しさん:2008/03/12(水) 00:36:49
不便だなぁ。仕方ないのかも知れないけど。
253デフォルトの名無しさん:2008/03/12(水) 00:43:50
ビッとブリッと屁をこいた
254デフォルトの名無しさん:2008/03/12(水) 12:23:06
>>243
ノートPCならBIOSで拡大表示時の設定が出来るものがある。
デスクトップPCなら液晶のOSDで拡大補完レベルを設定できるものがある。
↑俺のシャープの液晶がこれ
255デフォルトの名無しさん:2008/03/12(水) 12:25:33
>>237
画面の解像度と液晶の解像度が一致しているか確認する。
256デフォルトの名無しさん:2008/03/12(水) 12:28:00
老眼鏡の度があっているか確認する。
257デフォルトの名無しさん:2008/03/12(水) 13:28:00
>>255
PCに繋げられるQVGAの液晶なんてあるのか?
258デフォルトの名無しさん:2008/03/12(水) 13:43:27
>>257
PCから出力されてるドットとディスプレイ上のドットを1対1に対応させることのできる液晶はある
259デフォルトの名無しさん:2008/03/12(水) 19:32:19
低レベルすぎだろw
260デフォルトの名無しさん:2008/03/12(水) 21:37:24
ドラッグ&ドロップしたファイルのパスの取得にはDragQueryFileを使えば良さそうってことはわかったんだけど、どうにもうまくできません
wParamが”値が割り当てられていないローカルな変数”とか警告が出てままだし、
何か根本的な部分で理解できていないようなんですが、どこがおかしいのか教えていただければ幸いです
使っているのはVC++6.0です

HANDLE wParam;

char szFn[256] ;
//DragAcceptFiles(hWnd,TRUE);
//UINT iCount = DragQueryFile((HDROP)wParam, 0xFFFFFFFF, NULL, 0);
DragQueryFile((HDROP)wParam, 0, szFn, 256);
printf("%s",szFn);

これで実行するとszFnの中身がフフフ…でまったく機能してませんでした

真空波動研からflvファイルの画像サイズを取得して、FLVPのiniのウィンドウサイズを書き換えて
等倍で再生されるFLVPの支援ツールを作っていて、ネットのソースを色々流用してflvのパスの取得以外はちゃんと動作するものが
できたんですが、あと一歩なんです
261デフォルトの名無しさん:2008/03/12(水) 21:39:53
APIを使うなら該当部分のヘルプぐらい読めよ。
262デフォルトの名無しさん:2008/03/12(水) 21:56:32
> これで実行するとszFnの中身がフフフ…でまったく機能してませんでした
変数に笑われているようではあと一歩どころでは無かろう

つうかその程度のツールならvbsで作れそうな気もするが
263デフォルトの名無しさん:2008/03/12(水) 22:04:55
 なんか適当だわ
case WM_CREATE:
 DragAcceptFiles(hWnd, TRUE);
 return 0;

case WM_DROPFILES:
 {
  int len = DragQueryFile((HDROP)wParam, 0, NULL, 0);
  char* p_strBuf = (char*)malloc(len+1);
  DragQueryFile((HDROP)wParam, 0, p_strBuf, len+1);

  MessageBox(hWnd, p_strBuf, "message", MB_OK);

  free((void*)p_strBuf);
  DragFinish((HDROP)wParam);
 }
 return 0;
264デフォルトの名無しさん:2008/03/12(水) 22:24:10
>>263
適当にも程がある
265デフォルトの名無しさん:2008/03/12(水) 22:33:42
あと一歩が山あり谷ありで距離も足元の道さえも見えない
これが仕事ならデスマーチ
266デフォルトの名無しさん:2008/03/12(水) 22:48:54
ひいぃぃ・・・!!
267デフォルトの名無しさん:2008/03/12(水) 22:49:50
>>261-265
ありがとうございました
よくわからないので諦めます
確かに後1歩どころではなかったようです
せっかくなんでソース置いときます
ttp://kissho.xii.jp/1/src/1jyou29678.txt

CreateProcess()はネットに合ったのをそのまま使ったので全然わかってません
268デフォルトの名無しさん:2008/03/12(水) 23:36:13
>>267
真空波動研やらFLVPについては関知しないが、
ざっとコード見た感じDragAcceptFiles()やDragQueryFile()じゃなく
コマンドライン引数使えって話のように思える。
269デフォルトの名無しさん:2008/03/12(水) 23:40:18
スクロールバーやツールバーをマウスでクリックすると、そちらにフォーカスが移ってしまうのですが、
使い終わった場合(例えばスクロールが終わったり、ツールバーのボタンを押した後)に
もともとフォーカスを持っていたウィンドウにフォーカスを返すにはどうしたら良いのでしょうか?
270デフォルトの名無しさん:2008/03/12(水) 23:52:43
固定幅のフォントの文字の幅と高さを取得するのに、
デスクトップのDCを使って GetTextExtentPoint32() しても
問題ありませんか?
文字を描画するのは作ったウィンドウなんですが。
271デフォルトの名無しさん:2008/03/13(木) 01:01:58
>>268
ありがとうございます!
出来そうな気がしてきました
272デフォルトの名無しさん:2008/03/13(木) 02:12:20
基本的には思い通りのプログラムができました
ありがとうございました
後は細かい設定をつけていきます
273デフォルトの名無しさん:2008/03/13(木) 02:15:35
こんなもんvbsとかのスクリプトで作った方が早かろう
274デフォルトの名無しさん:2008/03/13(木) 03:42:02
>>270
デスクトップで使われてるフォントで描画した場合の高さと幅が返ってくる
それでも良ければそうしたまえ

>>269
WM_SETFOCUSを見て頑張れ
この場合スクロールバーは子ウィンドウでないと駄目かもな
275デフォルトの名無しさん:2008/03/13(木) 04:38:38
>>267のソースが滅茶苦茶すぎて噴いた
276デフォルトの名無しさん:2008/03/13(木) 06:22:02
printf使ってるからコンソールアプリだろうとは思ったけど
コンソールアプリだとするとDragQueryFileをどうやって呼んでるか謎だった
277デフォルトの名無しさん:2008/03/13(木) 09:47:08
>>274
同じフォントなのにデスクトップと自ウインドウで描画時に幅かわることがあるのですか?
278デフォルトの名無しさん:2008/03/13(木) 11:18:45
>>277
なんでよそさまのアプリであるデスクトップ=explorer.exeを使うか理解できない
自前でDCつくればいいだろ?
279デフォルトの名無しさん:2008/03/13(木) 11:21:44
デスクトップと自ウインドウのDCが互換である保証はなかったはず
280デフォルトの名無しさん:2008/03/13(木) 12:01:14
あれか文字のサイズにあわせてウインドウつくるのか?
281デフォルトの名無しさん:2008/03/13(木) 12:01:34
アプリケーション毎にウィンドウのDPIが変わるってことなかったっけ?
282277:2008/03/13(木) 22:00:55
どうもよろしくなさそうなので、きちんと自ウィンドウ生成してから関数呼び出すことにしました。
ありがとうございました。
283デフォルトの名無しさん:2008/03/14(金) 00:29:13
いや、わざわざウィンドウを作らなくてもCreateCompatibleDCしたメモリDCを使えばいいのだが
284デフォルトの名無しさん:2008/03/14(金) 12:11:50
要するに、クラスか何かつくってて、フォントの幅計算してキャッシュしておくのにDC必要で、
自ウィンドウのDC渡す変わりに、互換あればGetDC(0)でやりたかったってことだろ。
285デフォルトの名無しさん:2008/03/14(金) 12:18:20
テキストボックスコントロールでTABを入力したいのですが、
どうすれば可能ですか?
286デフォルトの名無しさん:2008/03/14(金) 12:22:56
メモ帳に入力したタブをコピペする
287デフォルトの名無しさん:2008/03/14(金) 13:59:27
"\t"
288デフォルトの名無しさん:2008/03/14(金) 15:42:49
Cで作る時、いつもはWebにある雛形のWindowプログラムをコピペして、ウィンドウプロージャやCreateWindowの引数だけいじっていたのですが、
C++を最近学び始めて、GUIを作ってみようと思ったんですが、Webの雛形はCで書かれているので、このまま使うのも・・と思っています。
もちろん、cppでもコンパイルできたのですが、C++を生かした作り方があるのかなと悩んでいます。
Windowプログラミングの仕組みはある程度は分かっているのですが、やはり分からない部分もあるので自分で1から作るというのも不安です。
C++で作る時は、C++用の雛形を作ったほうが良いのでしょうか?
289デフォルトの名無しさん:2008/03/14(金) 15:50:26
MFCかSDKか迷ってるってこと?
それとも初期化やら描画関連やらプロシージャから全て1から作ろうとかってこと?
290デフォルトの名無しさん:2008/03/14(金) 15:57:39
全て1からということです。
291デフォルトの名無しさん:2008/03/14(金) 16:01:28
ウィンドウ周りはCと同じように書くか、規模のでかいフレームワークに
なるかの二択だと思う。
292デフォルトの名無しさん:2008/03/14(金) 16:01:34
c++はcのスーパーセットなので別にcの奴を引き継いでもかまわないんじゃね
MFCやATL/WTLを使用しないならそれこそスタンスの問題
293デフォルトの名無しさん:2008/03/14(金) 16:09:30
ありがとうございました。
かなり難しいことになりそうなのでCのを引き継ぐことにします。
294デフォルトの名無しさん:2008/03/14(金) 16:36:33
>>288
wxWidgets とか GTKmm とか
295デフォルトの名無しさん:2008/03/14(金) 16:50:07
case WM_PAINT:
BitBlt( hDC, 100, 100, 256, 256, hCompatDC, 0, 0, SRCCOPY ); // bitmap表示
hdc=BeginPaint(hwnd, &ps);
draw(hdc,&drg); // LineToを使ったたくさんの線の描画
EndPaint(hwnd, &ps);
break;

こうすると、bitmapの上にLineが引かれると思ったのですが、
Lineのうえにbitmapがあるように表示されます。
これはなぜですか?
296デフォルトの名無しさん:2008/03/14(金) 16:55:02
BeginPaintする前にどこに書いてるの?
297デフォルトの名無しさん:2008/03/14(金) 17:06:44
hDC==NULLだとするとルートウィンドウ(=デスクトップ)じゃないか
298デフォルトの名無しさん:2008/03/14(金) 17:07:16
hwndの中のつもりなんですけど。
(お察しのとおり初心者です)

PAINTSTRUCT ps;
HDC hdc;
static HBITMAP hBitmap, hPrevBitmap; // ビットマップのハンドル
static HDC hDC, hCompatDC; // デバイスコンテキストハンドル
(中略)
case WM_CREATE:
(中略)
// ビットマップをファイルからロードする
hBitmap = (HBITMAP)LoadImage( NULL, "xxx.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE );
if( hBitmap == NULL )
{
MessageBox( hwnd, ("ビットマップのロードに失敗しました"), ("エラー"), MB_OK | MB_ICONWARNING );
return 0;
}

// ウィンドウのデバイスコンテキストハンドルを取得する
hDC = GetDC( hwnd );
// メモリデバイスコンテキストを作成する
hCompatDC = CreateCompatibleDC( hDC );
// ロードしたビットマップを選択する
hPrevBitmap = (HBITMAP)SelectObject( hCompatDC, hBitmap );
return 0;
break;
299デフォルトの名無しさん:2008/03/14(金) 17:08:58
いちおう、bitmapもアプリのウィンドウ内には出てます。
300デフォルトの名無しさん:2008/03/14(金) 17:10:44
どうしてそうなるのかを聞くよりやりたいことを聞いた方が建設的だと思うんだけど
301デフォルトの名無しさん:2008/03/14(金) 17:10:47
なんで、線はちゃんとhdcに書いてるのに、BitmapはhDCに書いているんだ。

というか、この二つの変数名なんとかしろよ。
302デフォルトの名無しさん:2008/03/14(金) 17:15:09
GdiFlush?
303デフォルトの名無しさん:2008/03/14(金) 17:17:02
えー、やっていることは、ですね、
もともとある(本のCDについてた)たくさんのLineを書くプログラムに
WEBサイトに載っていたbitmapを表示させるコードをくっつけてみた、
というところです。
どちらもそれぞれちゃんと表示されているのですが、
bitmapの上に線が描かれると思った予想が外れたので
聞いてみました。

hdcとhDCの件、どう統一させたらよいのでしょうか。
(片方の変数名の変更だけということでよいということでは
なさそうですよね?)
304デフォルトの名無しさん:2008/03/14(金) 17:18:46
>>303
BeginPaintの吐くhdcでBitBltすればいいだけ
305デフォルトの名無しさん:2008/03/14(金) 17:20:02
おお、すいません、変数名変更しただけで、ちゃんと
bitmapの上に線が載りました!!

大変お騒がせしました。どうもありがとうございました。
306デフォルトの名無しさん:2008/03/14(金) 17:23:25
>>304
すれ違いになりました。
これでもうまく行きました。
もうちょっと勉強しますです。
ありがとうございました。
307デフォルトの名無しさん:2008/03/14(金) 23:20:49
VS2005 のダイアログボックスに EditBox を追加して使おうとしたときに;
表示してEditBox で左クリックをするとダイアログが閉じてしまうんです。

もともと VC6 で作成してあった EditBox(TextBox) は問題なくつかえるのですが;
新たにそこに追加した場合もだめになるんです。

そのついかした EditBox に WM_INITDIALOG で文字列を設定しようとすると
ダイアログ自体が開かないんです。VS2005 で何か変わったのでしょうか?
.RC をみても以前と変わらなく見えるのですが?
308デフォルトの名無しさん:2008/03/14(金) 23:51:15
マニフェストファイル追加したらツールバーのチェックボタンの文字色が白色になってしまい
見辛くなってしまったのですが、色を変更するにはオーナードローするしかないんでしょうか?
309デフォルトの名無しさん:2008/03/15(土) 00:02:09
どうして魔乳笛素屠ファイルを削除しないんだ
310デフォルトの名無しさん:2008/03/15(土) 00:17:07
今時ヴィジュアルスタイルに対応してないソフトなんてダサくて使えねーよ
311デフォルトの名無しさん:2008/03/15(土) 00:23:16
今日1日、本当に疲れています(笑)

VS2005 で EditBox を追加すると全く使えないんです。既存のは動くんですけど
それをコピーしたものはうごかない。 .RC 見てもそっくりなんですけど;

なんとかヒントをお願いします。
312デフォルトの名無しさん:2008/03/15(土) 00:46:23
>>307 & >>311
VC6から移行したときに何かの拍子で
リソースのIDがバッティングしてしまってるんじゃないか?
とぐらいしか言えないな。
とにかくソースを持ってるのは自分だけなんだから
ブレークポイント置くなりして調べないとな。
313デフォルトの名無しさん:2008/03/15(土) 00:50:02
Unicodeの罠
314デフォルトの名無しさん:2008/03/15(土) 00:58:45
>>311
ヒント:ソース晒せ
315デフォルトの名無しさん:2008/03/15(土) 01:40:55
311 です。

動きました。
どうやら、コンパイラかリンカーのバグのようです。ちょっとひどいバグでした。

最初から Unicode がらみとか、ダイアログのフォントからみかと思ったのですが;
動くダイアログを動かない場所で呼び出すと動かないので、スタックかと悩んだり
していました。

結局リソースもいじらず、ソース位置(呼び出し場所、方法)も変えずになおりました。
コンパイルオプションもリンクオプションもいじらずに。。

ソース上はなんの問題もありませんでした。
巨大なプログラムではないのですが;
(単一exe 非mfc 12万行ぐらい)

1日、無駄でした。

VS2008 を買おうか検討します。
316デフォルトの名無しさん:2008/03/15(土) 02:17:31
どう見ても>>311の脳味噌のバグ
317デフォルトの名無しさん:2008/03/15(土) 02:52:26
脳味噌を買い換えるべきだな
318デフォルトの名無しさん:2008/03/15(土) 03:55:07
スペアの脳欲しいんだけどどこにも売ってないみたい。
319デフォルトの名無しさん:2008/03/15(土) 07:57:14
そんなバグがあるなら今頃大騒ぎにw
320デフォルトの名無しさん:2008/03/15(土) 18:46:20
おまえらのバグによる虫食いだらけの人生を先にどうにかしたほうがよろし。
321デフォルトの名無しさん:2008/03/15(土) 18:51:55
もうすでにリリースされちゃってるので修正は不可能だ。
SPをあてるという手もあるが、たいていの場合はそのSP自体が輪をかけてクソなうえ、
こっちの各種のプライベートコンポーネントを破壊していく。
アンインストールなんざしようもんなら、恒久的にリソースリークを引き起こす始末。
最低だな。
322デフォルトの名無しさん:2008/03/15(土) 18:55:22
そもそもまだβリリースです
323デフォルトの名無しさん:2008/03/15(土) 19:17:21
最新のWindows SDKって6.1でいいのか?

糞でかいから古いの落としてたら悲惨だわ
324デフォルトの名無しさん:2008/03/15(土) 20:13:49
>>323
YES
325デフォルトの名無しさん:2008/03/15(土) 20:28:49
thx
やっとインストールおわったんだが、
どうやらDirectX SDKも必要なようだ
326デフォルトの名無しさん:2008/03/15(土) 20:32:51
VCEE、WSDK、DXSDK
これだけあればウインドーズアポリはほぼ作れる。イヤッホウ!
327デフォルトの名無しさん:2008/03/15(土) 20:34:01
あとはWin32APIの知識だけだな!
328デフォルトの名無しさん:2008/03/15(土) 20:35:02
>>327
それは違う
>>326に必要なのはWin32APIの知識
329デフォルトの名無しさん:2008/03/15(土) 20:48:44
C/C++の知識も必要だな
330デフォルトの名無しさん:2008/03/15(土) 20:50:39
Dでもおk
331デフォルトの名無しさん:2008/03/15(土) 20:57:36
Dでないとダメ
332デフォルトの名無しさん:2008/03/15(土) 21:40:39
細かいなw
333デフォルトの名無しさん:2008/03/15(土) 21:52:43
>>328
見てて気持ち悪いw
334デフォルトの名無しさん:2008/03/16(日) 10:47:07
CreateCompatibleDC() に CreateCompatibleBitmap() を SelectObject() して
オフスクリーンで描画して、元のDCの BITMAP と切り替えるなんてことはOK?
BitBlt するより早くなると思うんだけど。

SelectObject() の説明に

「この関数は、指定されたのと同じタイプで、それまで選択されていたオブジェクトを返します。
アプリケーションは新しいオブジェクトを使い終えたら、必ず元の(既定)オブジェクトに置き換えるべきです。」

と書いてあるから駄目かな?
335デフォルトの名無しさん:2008/03/16(日) 10:52:10
やってみればわかるけど物凄く無駄な行為
336デフォルトの名無しさん:2008/03/16(日) 11:03:01
BitBltすればええやん
337デフォルトの名無しさん:2008/03/16(日) 11:09:14
>>334
ビットマップを選択できるのは、メモリDCだけ。
338デフォルトの名無しさん:2008/03/16(日) 11:51:21
>>334
DCを物凄く誤解してる。
DCがビットマップデータを持っているわけじゃないよ。
339デフォルトの名無しさん:2008/03/16(日) 21:22:16
>>334
ならないよ。
てかね、Windowsの製作者はお前さんより数段上だと思っときな。
そんなこた考慮済みで作ってんだよ。

ちなみにならない理由は物理的な問題なんでどうやっても回避不可よ。
OSの癖で多少の違いは出るかもだけど。
340デフォルトの名無しさん:2008/03/17(月) 01:03:01
ツリービューコントロールで、チェックボックスがチェックされたときに
その hItem ハンドルを取得するにはどうすればよいのでしょうか?
341デフォルトの名無しさん:2008/03/17(月) 01:23:50
>>340
How To Know When the User Clicks a Check Box in a TreeView Control
http://support.microsoft.com/kb/261289
342デフォルトの名無しさん:2008/03/17(月) 02:00:38
>>340
WM_NOTYFYを受け取ったら通知IDをチェックする
343デフォルトの名無しさん:2008/03/17(月) 02:33:36
>>341
そのサンプル、TVN_KEYDOWNへの応答が抜けてるし
Spaceキーを押してチェックマーク付けた時はスルーかよ
相変わらずいい加減だなぁ

そういや昔VirtualPC2004で設定ダイアログのリストビューを↑↓キーで行き来するとバグってたのを思い出した
最近は直ってるのかな。もう使ってないから知らんけど
344デフォルトの名無しさん:2008/03/17(月) 16:41:31
恥を忍んで質問させていただきます。
UNICODE文字がアルファベットか数値かなどを調べる方法が分かりません。
GetStringTypeWという関数を見つけたのですが、デバッグしてみたところ
第4引数のLPWARDに格納されたのは644という数値で16進表記でもC1_DIGITなどに
の定数の値に当てはまりません。教えてください。
お願いします。
345デフォルトの名無しさん:2008/03/17(月) 16:56:02
iswdigit と iswascii とかどうかな
346デフォルトの名無しさん:2008/03/17(月) 16:58:13
WideCharToMultiByteでASCIIに戻して文字コードを調べるとか
347デフォルトの名無しさん:2008/03/17(月) 16:59:00
>>345
早々とありがとうございます!
348デフォルトの名無しさん:2008/03/17(月) 16:59:15
ASCIIに戻さなくてもそのまま文字コード調べればいい
iswasciiの実装がそれ
349デフォルトの名無しさん:2008/03/17(月) 17:00:59
644=0x284=C1_DEFINED | C1_XDIGIT | C1_DIGIT
GetStringTypeWの説明ぐらい嫁
350デフォルトの名無しさん:2008/03/17(月) 17:02:08
>>346>>348
こんな関数が搭載されているとは思いませんでした。
mbstowcs_sとかUNICODE企画ってうざいですね。
351デフォルトの名無しさん:2008/03/17(月) 17:08:37
>>349
すみませんでした。たくさん定数あったんで読み逃してましたorz
352デフォルトの名無しさん:2008/03/17(月) 17:09:21
むしろ俺はMBCS捨てたいよ
まぁしばらく無理だけど
353デフォルトの名無しさん:2008/03/17(月) 17:10:40
>mbstowcs_sとかUNICODE企画ってうざいですね。
恥を忍んだ割には随分な物言いだな。
354デフォルトの名無しさん:2008/03/17(月) 17:12:51
お前らに言ったわけじゃないだろハゲタコが
355デフォルトの名無しさん:2008/03/17(月) 17:18:39
恥を忍んだというよりは、恥を晒したようだな。
356デフォルトの名無しさん:2008/03/17(月) 17:33:18
恥を忍んでるんだから、恥なのは判るってるだろユデダコが
357340:2008/03/17(月) 17:34:26
>> 341 のサンプルを参考に、以下のようにしてみましたが...
lpnmh->idFrom の値が 0 になってしまいます? ちなみに BCC32 なのですが
分かる方いますか?

  case WM_NOTIFY:    /* TreeView control からの通知メッセージ */
    lpnmh = (LPNMHDR)lp;
    if((lpnmh->code == NM_CLICK) && (lpnmh->idFrom == IDC_MYTREEVIEW))
    {
      .
      .
      .
358デフォルトの名無しさん:2008/03/17(月) 17:42:00
>>356
だから、忍んでねぇじゃん。
359デフォルトの名無しさん:2008/03/17(月) 17:45:14
"晒した"に突っ込んでんだろタコ。恥は元々晒してんだよ。
360デフォルトの名無しさん:2008/03/17(月) 17:48:38
だから、恥を忍んでないんだから嘘を書くなよ。
361デフォルトの名無しさん:2008/03/17(月) 17:49:06
はいはい落ち着きたまえ
362デフォルトの名無しさん:2008/03/17(月) 17:57:46
>>357
IDC_MYTREEVIEWが0って落ちはないよね?
lpnmh->codeはちゃんとNM_CLICKになってる?
363デフォルトの名無しさん:2008/03/17(月) 19:01:30
>>357
バグのあるソースを参考にするのは(ry
364デフォルトの名無しさん:2008/03/17(月) 22:27:29
typedef std::map<std::string, std::vector<std::string>> > data;

なんでVC6は > を一個多く付けないと怒られるんだぜ?
VC7は普通にエラーと申しておるし、どういうことですか?
365デフォルトの名無しさん:2008/03/17(月) 22:29:35
スレタイを見て深呼吸
366デフォルトの名無しさん:2008/03/17(月) 22:31:12
>>365
すまん、>>363見てた。
367デフォルトの名無しさん:2008/03/17(月) 22:54:45
>>364
typedef std::map<std::string, std::vector<std::string> > data;とするとどう?
テンプレートを閉じるときには>>と書けない。>>という1つの字句と解釈されるから。
C++0xで改善されるみたいだけど。
368デフォルトの名無しさん:2008/03/17(月) 23:09:17
>>367
スレ違いに回答する阿呆はお帰りください。
369デフォルトの名無しさん:2008/03/17(月) 23:10:58

    _, ._
  ( ・ω・) now shibakaring ...
  ○={=}〇,
   |:::::::::\, ', ´
、、、、し 、、、(((.@)WWWWWWWWWWWWWWWWWWWWWWW (26%)
370デフォルトの名無しさん:2008/03/17(月) 23:12:26
>>369
激しくワロタ
371デフォルトの名無しさん:2008/03/17(月) 23:12:47
>>370
自演はお帰りください。
372デフォルトの名無しさん:2008/03/17(月) 23:13:40
お帰りなさいませ、ご主人様
373デフォルトの名無しさん:2008/03/17(月) 23:14:08
>>371
そうだよね。
374デフォルトの名無しさん:2008/03/17(月) 23:15:06
>>373
自演乙w
375デフォルトの名無しさん:2008/03/17(月) 23:15:13
>>371
だから帰ってきたのさ。このスレに。
376デフォルトの名無しさん:2008/03/17(月) 23:18:18
なにこれ
377デフォルトの名無しさん:2008/03/17(月) 23:19:22
>>376
これはね…


    お前を食べるためだぁ〜〜
378デフォルトの名無しさん:2008/03/17(月) 23:20:57
自演UZEEEEEEEEEEEEEEEEEEEEEEEEE
379デフォルトの名無しさん:2008/03/17(月) 23:22:47
>>378
激しく同意
380デフォルトの名無しさん:2008/03/17(月) 23:23:47
自演だと思われるから俺にレスつけるんじゃねえよ
381デフォルトの名無しさん:2008/03/17(月) 23:25:50
>>380
自演必死だなw
382デフォルトの名無しさん:2008/03/17(月) 23:27:50
以下日付が変わるまで書き込み禁止
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
383デフォルトの名無しさん:2008/03/18(火) 00:06:05
>>367
言ってみるものだ、地味に助かったわ。 d
384デフォルトの名無しさん:2008/03/18(火) 00:47:42
>>383=>>364-383
解決できて良かったね^^
385デフォルトの名無しさん:2008/03/18(火) 00:52:49
自演 The End
386デフォルトの名無しさん:2008/03/18(火) 01:26:23
dじゃねーよそんなのC++やってりゃ常識だろうが
軽口叩く前にベッドの中で入門書でも読んでろよこのHP3の雑魚グラマが
387デフォルトの名無しさん:2008/03/18(火) 01:29:50

           _, ._
          (・ω・ ) now shibakaring ...
          ○={=}〇,
           |:::::::::\, ', ´
wwwwww、、、、、、し 、、、(((.@)wwwwwwwwwwwwwwwwwwwwwww (19%)
388デフォルトの名無しさん:2008/03/18(火) 01:58:36
>>383
お前は俺か

俺も丁度コンパイルエラーで悩んでいた所だったから助かったよ。
389デフォルトの名無しさん:2008/03/18(火) 02:48:39
なにこの自演地獄

とレスすると自演だと思われる地獄
390デフォルトの名無しさん:2008/03/18(火) 02:51:17
いい加減自演うざい
391デフォルトの名無しさん:2008/03/18(火) 02:52:29
>>389
>>390
自演乙
392デフォルトの名無しさん:2008/03/18(火) 03:33:35
自演がキモイのでやめてもらえません?
393デフォルトの名無しさん:2008/03/18(火) 03:45:12
自演ど
394デフォルトの名無しさん:2008/03/18(火) 06:32:19
>>393
ワロタw
395デフォルトの名無しさん:2008/03/18(火) 06:49:31
>>393-394
>>385で相手にされなかったので今度は自演でフォローとは情けない
396デフォルトの名無しさん:2008/03/18(火) 09:21:58
ちんこ
397デフォルトの名無しさん:2008/03/18(火) 13:03:39
何書き込んでも自演になると聞いて飛んできました
398デフォルトの名無しさん:2008/03/18(火) 13:05:40
インプレースアクティベーションがさっぱり分からん。
クライアント側はどうやって実装すりゃ良いの?
399デフォルトの名無しさん:2008/03/18(火) 13:05:54
そうですかお帰りください
400デフォルトの名無しさん:2008/03/18(火) 14:31:11
パソコンの前でしかいきがることができない人がいるスレはここですか?
401デフォルトの名無しさん:2008/03/18(火) 15:25:21
超伸びてるなと思ったらなんだこれwww
402デフォルトの名無しさん:2008/03/18(火) 17:56:35
ダイアログに List ボックスを貼り付けて LB_ADDSTRING した場合
ダイアログ破棄時に LB_DELETESTRING しないと メモリーリーク
するのでしょうか?
403デフォルトの名無しさん:2008/03/18(火) 17:59:35
しない
404デフォルトの名無しさん:2008/03/18(火) 18:37:58
実は std;;string の文字列を
.c_str() で LB_ADDSTRING していると、メモリーリークするようです。
ダイアログ破棄時に、ちゃんと LB_DELETESTRING すると直るんです。
405デフォルトの名無しさん:2008/03/18(火) 19:28:55
>>404
:と;を間違えるぐらいだから他の部分でトチ狂った事してるんだろ
406デフォルトの名無しさん:2008/03/18(火) 22:42:27
>>400
「しかいきがる」って何?
そんな日本語ねーよ。
国 へ 帰 る ん だ な。 お 前 に も 家 族 が い る だ ろ う。
407デフォルトの名無しさん:2008/03/18(火) 22:45:12
>>406
司会気軽
鹿息がる
しか、粋がる
408デフォルトの名無しさん:2008/03/18(火) 22:46:31
つまらんレスしてる奴はVIPあたりに帰ってくれないか
409デフォルトの名無しさん:2008/03/18(火) 22:53:02
>>406
そんな品詞分解する日本人いねーよ。
国 へ 帰 る ん だ な。 お 前 に も 家 族 が い る だ ろ う。
410デフォルトの名無しさん:2008/03/18(火) 22:54:37
>>409
> お 前 に も 家 族 が い る だ ろ う。

いません… orz
411デフォルトの名無しさん:2008/03/18(火) 22:56:53
Win32APIがこの先生きのこるには
412デフォルトの名無しさん:2008/03/18(火) 23:14:25
ひらがなの句読点問題は十分認識されているから気にしないのだが
分かち書きしないハングルとか何故普通に読めるのかナゾ杉る
413デフォルトの名無しさん:2008/03/18(火) 23:16:51
How should Win32API mushroom this teacher?
414デフォルトの名無しさん:2008/03/18(火) 23:35:03
    _, ._
  ( ・ω・) now shibakaring ...
  ○={=}〇,
   |:::::::::\, ', ´
、、、、し 、、、(((.@)WWWWWWWWWWWWWWWWWWWWWWW (26%)
415デフォルトの名無しさん:2008/03/18(火) 23:38:19
now mowing
416デフォルトの名無しさん:2008/03/19(水) 00:07:41
おい、>>364以降ネタスレ化してるじゃねーか
責任取れ>>364
417デフォルトの名無しさん:2008/03/19(水) 00:09:15
>>412
実は普通に読めてないようだが。
つ 機能性文盲
418デフォルトの名無しさん:2008/03/19(水) 00:14:04
それは別の問題なんだよ
419デフォルトの名無しさん:2008/03/19(水) 01:37:02
>>412
ハングルは、日本語のカナと違って漢字一文字で一文字だからな。
勿論、同音異義語は山の数。
420デフォルトの名無しさん:2008/03/19(水) 01:48:34
じゃ別に漢字そのまま使ってりゃ良いじゃん
なんでわざわざ暗号化したんだろ?
421デフォルトの名無しさん:2008/03/19(水) 01:59:10
表音文字の方が覚える文字の数が少なくて済むからだよ。
仮名もアルファベットも同じ趣旨の元に生まれた文字。
422デフォルトの名無しさん:2008/03/19(水) 04:20:41
当時の愚民は漢字教育なんて受けられなかったからな。
419の言う様にそのまま置き換えたから、表音文字の癖に縦横に
組み合わせないといけないややこしい物になっちまってるが。
423デフォルトの名無しさん:2008/03/19(水) 07:03:45
3月18日 「自演は誰だ?」
3月19日 ハングル講座 -歴史編-

もはやWin32APIスレとは言えないな・・・
424デフォルトの名無しさん:2008/03/19(水) 07:44:38
ハングルはまぁ機能障害云々や簡略化した筈が一万文字出来たニダ等で問題外としても
カナ文字ってかなり変な仕組みな文字だと思わね?
425デフォルトの名無しさん:2008/03/19(水) 07:59:13
他所でやれ
426デフォルトの名無しさん:2008/03/19(水) 08:37:25
嫌です
427デフォルトの名無しさん:2008/03/19(水) 08:42:13
他所でやれ
428デフォルトの名無しさん:2008/03/19(水) 08:48:02
いい加減にしろ
429三木支:2008/03/19(水) 08:51:03
「ハングル」板へいらっしゃ〜い。
430デフォルトの名無しさん:2008/03/19(水) 09:31:34
SetRectとかCopyRectって何のためにあるんですか?
わざわざ専用の関数用意しなくてもいいような気がするんですが…
こういうのがあるってことは、できる限りこれらを使った方がいいんですか?
431デフォルトの名無しさん:2008/03/19(水) 10:00:41
Win95からあるみたいだから昔は使ってたんじゃないか?
今は知らんけど。

別にわざわざ使う必要も無いと思う。
432デフォルトの名無しさん:2008/03/19(水) 10:03:02
>>430
まったく同じ処理するんだったら使った方が分かりやすいかな
433デフォルトの名無しさん:2008/03/19(水) 10:25:16
>>430
C言語用だろ、たぶん
434デフォルトの名無しさん:2008/03/19(水) 10:38:10
InflateRectはよく使いそうな気がする
そうすると他のも使う
435デフォルトの名無しさん:2008/03/19(水) 12:18:41
>>430
lstrlenとかlstrcpyって何のためにあるんですか?
わざわざ専用の関数用意しなくてもいいような気がするんですが…
こういうのがあるってことは、できる限りこれらを使った方がいいんですか?
436デフォルトの名無しさん:2008/03/19(水) 12:40:29
世の中の開発言語がなんでもC/C++ではないってことよ
437デフォルトの名無しさん:2008/03/19(水) 12:46:47
>>430>>435
Win16の頃、機械語の量を減らすのに役立ったと聞いたことがある。
438デフォルトの名無しさん:2008/03/19(水) 12:54:47
ステップ数がどうたらとかマニアックな話になりそうですね
439デフォルトの名無しさん:2008/03/19(水) 12:58:40
ゆでたまご切り機みたいなもんだと思ってる。
包丁一本で何でもできる人には不要だけど、そうじゃない人には手軽。
440デフォルトの名無しさん:2008/03/19(水) 14:15:32
描画処理で使うから高速化が目的かもね
441デフォルトの名無しさん:2008/03/19(水) 14:59:00
>>440
ハァ?
442デフォルトの名無しさん:2008/03/19(水) 15:06:34
>>440
おいw
すごい方向へ飛んで行ったぞw
443デフォルトの名無しさん:2008/03/19(水) 18:44:47
某流出コードみたらWindowsの中の人も使ってる
444デフォルトの名無しさん:2008/03/19(水) 19:33:26
>>443
Windowsの中の人が必要と思ってるから、APIがあるんじゃないのか?
445デフォルトの名無しさん:2008/03/19(水) 20:22:29
InternetOpen→InternetOpenUrlで指定したurlのページの容量を知るにはどうすれば
できますか?
446デフォルトの名無しさん:2008/03/19(水) 20:23:45
実際にデータを受信してサイズを確認するか、エスパーになるかすればいいと思うよ。
447デフォルトの名無しさん:2008/03/19(水) 20:48:59
Windows の中の人が必要と思っても、隠し API にしかならないこともあるんじゃないかな。
448デフォルトの名無しさん:2008/03/19(水) 21:10:18
>445
ヘッダ
449デフォルトの名無しさん:2008/03/19(水) 21:16:05
隠しAPI(笑)
450デフォルトの名無しさん:2008/03/19(水) 21:54:51
hotplug.dllとか隠しAPIは山ほどあるがさっぱり公開が進まないな
EUにもっと暴れてもらわないと
451デフォルトの名無しさん:2008/03/19(水) 22:31:29
隠しAPI(笑)
452デフォルトの名無しさん:2008/03/19(水) 22:33:05
何かキチガイのツボにハマるんだろうか。隠しAPIって。
453デフォルトの名無しさん:2008/03/19(水) 22:45:39
>>416
正直スマンカッタ 些細な疑問だったんだ。 反省してる。


だが謝らない。
454デフォルトの名無しさん:2008/03/19(水) 22:47:09
非公開とかundocumentedって書くのが玄人 
そうでないのは語彙が乏しくてガキっぽいよねww とか

ってここ何のスレだっけな
455デフォルトの名無しさん:2008/03/19(水) 22:49:36
そもそも今後消える可能性があるから非公開なんじゃねーの

ベータ(SONY)みたいな
456デフォルトの名無しさん:2008/03/19(水) 23:03:31
隠しというの表現は不公正に隠蔽しているというニュアンスだろ
457デフォルトの名無しさん:2008/03/19(水) 23:12:21
シェル関係でなんのために公開されているのか分からないAPIをよく見かける。
Windows 2000あたり限定(XPやVistaでは使えない)で、ほかの公開APIで代替が効く。
例えばSHFlushClipboardとか。
458デフォルトの名無しさん:2008/03/19(水) 23:29:50
MS嫌いのヨーロピアンが
「非公開API使って競合企業を出し抜いてるよ!ずるいよ!」
って訴えるためにあるAPI
459デフォルトの名無しさん:2008/03/20(木) 00:09:38
リパースポイントやハードリンク関連は隠されてるな
460デフォルトの名無しさん:2008/03/20(木) 00:15:11
>>458
…なんかGPL厨みたいな言い分だ
MSを擁護する気はさらさらないがこういうのも好きじゃないなあ
461デフォルトの名無しさん:2008/03/20(木) 00:15:44
>>457
SHFlushClipboardならXPにもあるみたいだが

で、2000の奴を逆汗してみたら
jmp OleFlushClipboard
の一行だけw 何の為にあるんだww
462デフォルトの名無しさん:2008/03/20(木) 00:17:02
別名作りたかっただけじゃないかな。
463デフォルトの名無しさん:2008/03/20(木) 00:23:51
エクスポートテーブルでフォワードできるのに
464デフォルトの名無しさん:2008/03/20(木) 00:35:43
SHFlushClipboardの他にもole32.dllに飛ばすだけの非公開関数があるようだ

shell32!SHRegisterDragDrop → ole32!RegisterDragDrop
shell32!SHRevokeDragDrop → ole32!RevokeDragDrop
shell32!SHFreeUnusedLibraries → ole32!CoFreeUnusedLibraries

どうやら95時代のshell32.dllが、対応するole32.dllのAPIをLoadLibrary/GetProcAddressで
遅延ロードしてアクセスする為のヘルパ関数として用意していたのを後方互換で残しているだけらしい
だから2000以降では全く意味が無いようだ

だったら最初からそう書いとけっつーの
465デフォルトの名無しさん:2008/03/20(木) 00:59:39
たしか、win95には、ole32.libをロードしなくてもすむ、
Shell用の軽量疑似OLEシステムがあったとかなんとか
466デフォルトの名無しさん:2008/03/20(木) 01:32:15
機器の抜き差しの検知方法について質問します。
VS2005のVC++でMFCを使ってプログラムしています。

USB機器の抜き差しについては、ぐぐったら
WM_DEVICECHANGE
DBT_DEVTYP_HANDLE
RegisterDeviceNotification
などのキーワードが出てきたので、それらを試して検知できることを確認しました。
結局、DBT_DEVTYP_HANDLE構造体のdbch_handleには
HIDデバイスのハンドルを渡したら上手くいきました。

しかし、DVI-Dで接続されたモニターの抜き差しを検知する方法がわかりません。
WM_DEVICECHANGEは飛んできます。
しかし、wParamにはDBT_DEVNODES_CHANGEDしか入ってきません。
USBと同じやり方でできないか、と思ったのですが
dbch_handleに何をセットすれば良いのかがわかりません。
EnumDisplayMonitorsで取得できるモニターハンドルではダメでした。

すみませんが、WM_DEVICECHANGEの中から、DVI-Dの抜き差しだけを検知する
やり方をぜひお教え下さい。
それとも、そのようなことは不可能なのでしょうか・・・?
467デフォルトの名無しさん:2008/03/20(木) 01:39:18
>>464
それを知るためにはThe Old New Thingを読まなければならないってどうなのかね
468デフォルトの名無しさん:2008/03/20(木) 02:09:24
俺はあれの邦訳本高くてまだ買ってないや
しかしなんであんな邦題なんだろう
469デフォルトの名無しさん:2008/03/20(木) 02:17:46
>>467
いや、>>464の内容は自力で解析してみただけなんだがw
The Old New Thingに書いてあるか?
470デフォルトの名無しさん:2008/03/20(木) 03:20:54
>>469
直接>>464に対応する関数ではないが、ほぼその解析が正しいことを裏付ける記事を
http://blogs.msdn.com/oldnewthing/archive/2004/07/05/173226.aspx
で読んだことがあったのでてっきりこれを見ていたのかと思った
471デフォルトの名無しさん:2008/03/20(木) 03:22:53
``its own miniature drag-drop loop, ''
ってことで言及はされてるけどね
472デフォルトの名無しさん:2008/03/20(木) 08:04:02
EDITやBUTTONなどの子ウインドウは、WM_COMMANDやWM_NOTIFYを親ウインドウに送ると思いますが、
親じゃなくて、特定のプロシージャに送ることはできますか?
473デフォルトの名無しさん:2008/03/20(木) 08:12:17
WTLのメッセージマップでも使え
474デフォルトの名無しさん:2008/03/20(木) 11:56:36
このスレの住人なら知っていますね、あの糞開発ツールのことを

・自分のプログラムのバグなのかコンパイラのバグなのかわからない
・他の仕事に応用できない糞開発ツールの独自世界を必死に学習している
・テキストエディタで書いたほうが効率的なのに糞UIツールを懸命に使っている
・糞開発ツールを批判すると「性格が悪いから糞ツールを批判するんだ」と言われる

糞だけど、政治的な理由で無理やり使わされているんですよね。
もう、あんな厨の作った糞ツールを我慢して使うのはやめましょう。

・糞開発ツールを部下に押し付ける上司の命令は無視しましょう。
 上司は糞開発ツールが使われる実績を作ることであの会社のごきげんをとっているのです。
・あの糞開発ツール提供会社には「おたくの糞開発ツールは話にならない」と突き放しましょう。
 バグレポートなどしてはいけません。改善要求などもってのほかです。
 あの会社はあなたたちのことをテスター/モルモットとしか思っていません。
・あの会議で「糞開発ツールを使ったら生産性がxx%アップしました」
 なんて話が出たら力強く机を叩き、会議室を出ましょう。
 あの人たちは糞開発ツールをマンセーすることで立場を確保しているのです。

糞な開発ツールを糞だと言える、そんな当たり前の環境をみんなの力で取り戻しましょう。
475デフォルトの名無しさん:2008/03/20(木) 11:58:58
こんな風に病みたくはないのものだ
476デフォルトの名無しさん:2008/03/20(木) 12:04:38
>>474
つまり、自分が納得できる物を、自分で作って使えと言うことか?
477デフォルトの名無しさん:2008/03/20(木) 12:05:36
コピペだからシカトしとけ
478デフォルトの名無しさん:2008/03/20(木) 13:02:00
Windows系はそうでもないが組み込み系は未だに
糞開発ツール多いよな
479デフォルトの名無しさん:2008/03/20(木) 13:25:42
競争がないからな
480デフォルトの名無しさん:2008/03/20(木) 13:45:08
そういえばWindows95のころはいろいろ糞開発ツールあったね
特に「簡単に画面が作れます」系が糞でダメだった
481デフォルトの名無しさん:2008/03/20(木) 13:51:45
delphiとかbcbとかだな
482デフォルトの名無しさん:2008/03/20(木) 14:00:33
.NET1.1のWindows.Formsより糞な物は見た事がない
483デフォルトの名無しさん:2008/03/20(木) 14:13:26
あまいよ
組み込み系なんか遥かに糞な開発ツールが今でも使われてる
484デフォルトの名無しさん:2008/03/20(木) 14:13:42
いや、そういうのいいから
485デフォルトの名無しさん:2008/03/20(木) 14:20:31
スレッドタイトルも読めないようなゆとりの知能レベルに相応の開発ツールしか
提供されてないわけだw
486デフォルトの名無しさん:2008/03/20(木) 14:44:57
DeviceCapabilities() についてです。
ざっと調べたのですが、どうもDEVMODE構造体を渡す場合の正しい使い方が確信できません。
わからないのは、

・pDevMode は、それが指す構造体の値を関数に渡すために使われるのか、
 構造体に関数が値を書き込むために使われるのか、
 あるいはその両方なのか(そうだとしてどれがreadでどれがwriteなのか)
・もし pDevMode の dmField メンバが取得する値を決めるとしたら、
 その場合 fwCapability は無視されるのかどうか、
 また要求する値は pDevMode に書き込まれるとして戻り値はどうなるのか

です。お願いします。
487デフォルトの名無しさん:2008/03/20(木) 14:54:25
一点目
>・pDevMode は、それが指す構造体の値を関数に渡すために使われるのか、
> 構造体に関数が値を書き込むために使われるのか、

入力オンリーです
MSDNを読めば宣言にconstが付いてるのが分かります

二点目
>・もし pDevMode の dmField メンバが取得する値を決めるとしたら、
> その場合 fwCapability は無視されるのかどうか、

fwCapabilityの値でpDevModeを無視するかどうか決めているので、fwCapabilityは必須

↓を見ると分かるがdmFieldメンバは構造体中の有効メンバを示すマスク
http://www.winapi-database.com/Struct/DEVMODE.html

穴があくまでMSDNを読みましょう
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpgdi/html/_win32_devicecapabilities.asp
488デフォルトの名無しさん:2008/03/20(木) 15:00:13
完璧にconstを見落としてました、失礼しました。
要するにDevice〜()はpDevModeの中身を吐き出すだけなのですね。

ではDEVMODE構造体に目的の値を得るにはいったい何の関数を使えばよいのでしょうか。
デバイスコンテキストに値を渡すにはResetDC()を使えばよいというのは分かるのですが、
逆にデバイスコンテキストから値を引っ張り出す関数がわかりません。
489488:2008/03/20(木) 15:34:06
DocumentPropertiesって一番下に書いてました。すみませんでした。
490デフォルトの名無しさん:2008/03/20(木) 16:00:29
MP3の再生もできない上に音の重ね合わせもできない上にJPEG画像の表示もできないなんてWIN32APIって糞杉wwww
491デフォルトの名無しさん:2008/03/20(木) 16:03:43
そうですね
ホビープログラマは大変ですね
492デフォルトの名無しさん:2008/03/20(木) 17:28:10
エディットコントロールから
改行まで文字列を取り出そうとしているのですが、
\r\nがなぜか見つかりません。
これはなぜなのですか?
493デフォルトの名無しさん:2008/03/20(木) 17:50:13
>>490
・MP3再生
 DirectShow、ACM
・音の重ね合わせ
 MIDIでも鳴らしとけ
・JPEG
 OleLoadPicture、GDI+
494デフォルトの名無しさん:2008/03/20(木) 18:26:03
>>490はエロゲスクリプターだと思われ
もしくはHSPとかTTSナントカとかひまわり

>>492
エディットコントロール内と検索文字列の文字コード違うんじゃない?としか言いようがないわぁ
コード貼ってよ
495デフォルトの名無しさん:2008/03/20(木) 19:17:01
>>492
\nだけでやってみそ
496デフォルトの名無しさん:2008/03/20(木) 19:57:53
#define Write(s) SendDlgItemMessage(hWnd,IDC_EDIT,EM_RELACESEL,0,(LPARAM)((LPSTR)s))
Write("test");
Write("\r\n");
という具合です。
497デフォルトの名無しさん:2008/03/20(木) 23:40:06
>>494
自己解決しました
498デフォルトの名無しさん:2008/03/21(金) 01:50:38
C++でWindowsXPのプログラムを作ってるんですが、
intのサイズってどこで決まるんでしょうか?
OSのバージョン?CPU?
WindowsXPだと普通intは32ビットでしょうか?
499デフォルトの名無しさん:2008/03/21(金) 01:52:40
>>498
コンパイル時に決まる。
500498:2008/03/21(金) 01:59:48
intを使いたいのは、速度と移植性のためです。
LONGやDWORDでも、スピードがほとんど変わらないなら、
intは使わないでもいいかなと思いますが。
501デフォルトの名無しさん:2008/03/21(金) 02:01:06
LONGやDWODなんてただのtypedefなんだから何かなるわけないだろ。
502498:2008/03/21(金) 02:01:42
そうなんですか。ありがとうございます。
503デフォルトの名無しさん:2008/03/21(金) 02:01:52
>>500
移植性のためなら LONG や DWORD をどうぞ
504デフォルトの名無しさん:2008/03/21(金) 02:03:25
そんな事がわからんレベルでスピードがどうの言ってもしょうがない
505デフォルトの名無しさん:2008/03/21(金) 02:16:25
確かWin64だとintは32ビットのままでINT_PTRが64ビットになるんだっけ
506デフォルトの名無しさん:2008/03/21(金) 02:51:15
VC++ならsize_tとポインタ以外は32/64関係なくサイズ固定だったと思う。
プラットフォームで切り替えたいなら、プリプロセッサで定義変わるようにしとくといい。
とりあえず64bit環境を準備するんだな。実際作って動かしてみればわかる。
507デフォルトの名無しさん:2008/03/21(金) 09:19:43
64ビットのint型ってなんかたくさんない?
俺は__int64っての使ってるんだけど
何が標準なのか判らない。
508デフォルトの名無しさん:2008/03/21(金) 09:49:21
__int64 はVC++などの独自拡張
C/C++の標準ならC9Xならstdint.h に int64_t があるかも知れないが無いかもしれない
標準というわけではないがWin32APIスレとしてはbasetsd.hのINT64やUINT64が無難だと思う
509デフォルトの名無しさん:2008/03/21(金) 09:50:35
そうだったのか
510デフォルトの名無しさん:2008/03/21(金) 10:04:53
DWORDとULONGでいちいちキャストしなきゃいけないのがうざい
中身同じだろ
511デフォルトの名無しさん:2008/03/21(金) 10:22:16
どっちも元を辿ればunsigned long (32ビット)なんだから、
キャストしなくても警告なしでコンパイルできると思う。
お前が個人的にそれを気持ち悪いと思ってキャストしているというのならともかく。
512デフォルトの名無しさん:2008/03/21(金) 10:46:35
漢字の第一バイトを識別するAPIを教えてください
513デフォルトの名無しさん:2008/03/21(金) 10:50:47
今時SJISとか使うの?
514デフォルトの名無しさん:2008/03/21(金) 10:53:14
IsDBCSLeadByte
515デフォルトの名無しさん:2008/03/21(金) 10:54:35
>>513
知らないならレスしないで下さい。うざいだけです。
>>514
ありがとうございます。
516デフォルトの名無しさん:2008/03/21(金) 11:38:38
Unicodeにすると単純計算でメモリを2倍食うことになるのがなぁ
サロゲートペアとか考慮するとMBCS程ではないが面倒には変わりないし

とか言いつつ最近は殆どUnicodeビルドだしサロゲートペアなんて全然考えてない俺w
517デフォルトの名無しさん:2008/03/21(金) 12:22:22
>>515
しね
518デフォルトの名無しさん:2008/03/21(金) 12:23:11
てめーが死ね
519デフォルトの名無しさん:2008/03/21(金) 12:24:49
お前はもう死んでいる
520デフォルトの名無しさん:2008/03/21(金) 12:48:24
おれももう死んでいる
521デフォルトの名無しさん:2008/03/21(金) 13:04:11
Vistaのタスクマネージャのコマンドライン列と同じようなものを作りたいのですが、
プロセスのIDかハンドルを元に、起動引数を取得するAPIは無いのでしょうか?

過去スレでは

1、CreateRemoteThreadで対象プロセスにdllを注入し、
2、GetCommandLineで引数を取得。
3、その情報をプロセス間通信などで送信

という方法が示されていましたが、
1の処理がLoadLibraryのカーネル上でのアドレスが全プロセスで共通であることに依存しており
もし、LoadLibraryのアドレスが異なれば対象プロセスを異常終了させてしまうという危険なものでした。

できれば、この方法はとりたくないので、APIが用意されていればいいのですが・・・。
522デフォルトの名無しさん:2008/03/21(金) 13:11:54
> LoadLibraryのカーネル上でのアドレスが全プロセスで共通である

確か決まってたはず
523デフォルトの名無しさん:2008/03/21(金) 15:57:07
>>522
Vistaでもそうなんだっけ?
524デフォルトの名無しさん:2008/03/21(金) 16:48:08
VistaはOS(notプロセス)を起動するごとに変わるんだっけ?256パターンで。
525デフォルトの名無しさん:2008/03/21(金) 17:54:29
1. 最初にDLLがロードされたときに決まる
2. 1つでもそのDLLをロードしているプロセスがある間、他のプロセスがロードしてもアドレスは変化しない
3. 全プロセスからアンロードされたら、次にロードされたときにまたランダムに変わる(1.へ)

こんな感じだったと記憶している
526デフォルトの名無しさん:2008/03/21(金) 18:09:39
1の処理をLoadLibraryのカーネル上でのアドレスが全プロセスで共通であることに依存させる必然性がない
527デフォルトの名無しさん:2008/03/21(金) 18:31:58
黙れブタ野郎!
528デフォルトの名無しさん:2008/03/21(金) 19:04:44
うるせーばかどっかいけ
529デフォルトの名無しさん:2008/03/21(金) 19:54:28
Vistaではセッションごとに異なる。
つまり別ユーザがリモートデスクトップとかで入ってきた時のプロセスはロードアドレスが異なるものになる
530529:2008/03/21(金) 20:42:28
PEBから取れそうだなーとかおもって調べたらずばりのが出てきた
http://www.codeproject.com/KB/threads/GetNtProcessInfo.aspx

NtQueryInformationProcessでPROCESS_BASIC_INFORMATION拾ってきて
PROCESS_BASIC_INFORMATION::PEB::RTL_USER_PROCESS_PARAMETERS::ImagePathName.Buffer
(要するにプロセスがコマンドラインを保存しているアドレス)をReadProcessMemoryするっぽ

ただPEB構造体はDDKでも非公開だった気がするからそこは注意
531デフォルトの名無しさん:2008/03/21(金) 20:51:41
なんでそんなに頭いいの
532デフォルトの名無しさん:2008/03/21(金) 20:53:13
実装に必要な部分はちゃんと公開されてる罠 orz
533521:2008/03/21(金) 20:53:56
>>530
今後仕様変更があるかも、とは書かれていますが、一応公開されてますね。

http://msdn2.microsoft.com/en-us/library/aa813706(VS.85).aspx

もし、仕様変更があったとしても、他のプロセスにダメージを与えることはなさそうなので
>>512の方法よりずっと安全なコードが書けそうです。

ありがとうございました。
534デフォルトの名無しさん:2008/03/21(金) 21:29:20
>>521の質問ってスレが立つたびに見かけるね

他プロセスのコマンドライン文字列を取得して何に使うのか知らないけど、MSもいい加減
DWORD GetCommandLineEx(HANDLE hProcess, LPTSTR pszBuffer, UINT cchBuffer);
を用意すればいいのに
535デフォルトの名無しさん:2008/03/22(土) 00:23:05
何に使うんだよ
536デフォルトの名無しさん:2008/03/22(土) 00:33:48
ウイルス作りたくて
537デフォルトの名無しさん:2008/03/22(土) 00:37:13
悪用するなヤメレ
538デフォルトの名無しさん:2008/03/22(土) 00:38:43
本気で言ってるならやめれ
冗談で言ってるなら面白くないよ
539デフォルトの名無しさん:2008/03/22(土) 01:11:57
明日も朝から出勤なのでむしゃくしゃして書いた
今は寝る準備をしている
ttp://www.hsjp.net/upload/src/up14021.txt
540デフォルトの名無しさん:2008/03/22(土) 01:13:35
うわーすげー
流し読みじゃ何のことかさっぱりわからん
541デフォルトの名無しさん:2008/03/22(土) 01:14:48

でもなんでこんなに読みにくいんだろ?
542デフォルトの名無しさん:2008/03/22(土) 01:19:43
>>539
とりあえず適当に突っ込んでみる。

・pszBufferにNULLを渡すと落ちる。
 必要な文字長(終端の'\0'を含む)を返すべき。
・NtQueryInformationProcessに失敗したときにRtlNtStatusToDosError/SetLastErrorしてない気がする。
・というか所々SetLastErrorすべき所が抜けてる。
543r:2008/03/22(土) 10:18:47
質問させてください。最近純粋なC言語を勉強して

はじめて VisualC++ 2005 Express Edition(無償配布なアレです) に手を出した者です。

デバッグ用に MessageBox使うのが嫌だったのでOutputDebugStringを使おうと思い

PSDKもいれinclude や lib などのパスの設定もし
#include <windows.h>として

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
    //this->button1->Text = "てすと"; /* これは今まで使ってた応急処置的な出力 */
    OutputDebugString("test");
}

試しにこのように ボタンをクリックしたらデバッグ画面に出力するようにしたのですが、ボタンを押下しても何も表示されません。なぜでしょうか?(エラーもまったくでません 押しても反応なしといった状態です)

もしかしたらリアルタイムに対応していないのでは?とも思いましたが、×で閉じた後もやはり何も出力されていません。もしこの方法で意図通りのことができないのであれば他に何か方法はありますでしょうか?

イメージ的には#のConsole.WriteLine();のようなことがしたいです。よろしかったらご教授ください m(_ _)m
544デフォルトの名無しさん:2008/03/22(土) 10:36:02
過去ログ読んでもよくわからなかったので質問します
EDITコントロールの背景透過表示はできないのでしょうか?
WM_CTLCOLOREDITで
SetBkMode(((HDC)wp), TRANSPARENT);
return (LRESULT)GetStockObject(NULL_BRUSH);
とすれば一応背景透過になりますが、スクロールした場合など、文字部分が再描画されません
545デフォルトの名無しさん:2008/03/22(土) 10:50:17
>>543
.Netで書いてるなら、.Netでデバッグ出力すればいいかと
System.Diagnostics.Debug.WriteLineじゃダメなのか?
546デフォルトの名無しさん:2008/03/22(土) 11:00:44
>>545
仰る通りSystem.Diagnostics.Debug.WriteLineで意図通りのことができました。
ありがとうございました^^
547デフォルトの名無しさん:2008/03/22(土) 13:10:09
Win32APIスレで.NETの質問をする馬鹿と誘導せずその質問に真面目に答える馬鹿(笑)
548デフォルトの名無しさん:2008/03/22(土) 13:42:39
OutputDebugStringはWin32API
549デフォルトの名無しさん:2008/03/22(土) 15:33:08
しかしなぜVC8なんだ。
すでにVC9が、もちろんタダで出ているというのに。
550デフォルトの名無しさん:2008/03/22(土) 15:34:23
W2k で使えたっけ?
551デフォルトの名無しさん:2008/03/22(土) 16:04:09
DialogBoxでキーコンフィグを作っているんですが、
エディットコントロールって言うんですか?あのテキストが入力できるやつにフォーカスが合ってるときに
システムキー以外の何かしらのキーが押されたら、そのコントロールに対応してるキーの値を
変更しようと思ってるんですが、WM_KEYDOWNみたいなメッセージは受け取れないんでしょうか?
それと他のコントロールにフォーカスを自動で切り替えるには何を使えばいけるでしょうか?

できればジョイパッドの入力も使いたいのですが、ダイアログボックスでメッセージ以外の
処理をする時は別スレッドでも作って何とかするしかないんでしょうか?
552デフォルトの名無しさん:2008/03/22(土) 16:19:46
素直にサブクラス化してくれ
553デフォルトの名無しさん:2008/03/22(土) 16:42:05
ここでそれが出てくるわけですか・・・
むずい><!頑張る!
554デフォルトの名無しさん:2008/03/22(土) 17:14:22
他のプロセスのウィンドウの上部のメニューの一部を書き換えたいのですが見当が付きません。
ヒント等いただければ幸いです。
555デフォルトの名無しさん:2008/03/22(土) 17:16:06
ヒント ウイルス
556デフォルトの名無しさん:2008/03/22(土) 17:33:12
メニューの実装は一様じゃないから汎用的な実装ができるとは思えない

557デフォルトの名無しさん:2008/03/22(土) 18:22:53
メニューに見えてるだけの可能性もあるしね…
558デフォルトの名無しさん:2008/03/22(土) 18:26:49
まずスパイで解析しる
559デフォルトの名無しさん:2008/03/22(土) 18:27:18
すこし調べてみたら希望の動作をすることが出来ました。
お騒がせすみません。どうもありがとうございました。
560デフォルトの名無しさん:2008/03/22(土) 19:48:20
>>542
>pszBufferにNULLを渡すと落ちる。
Win32APIでもNULLを渡すと落ちる関数があるから別に関数側でやらなくてもよくね?
561デフォルトの名無しさん:2008/03/22(土) 19:51:53
APIってどうやって作るのかな?
やっぱWindowsを作った男たちでないと
作れないのかな。
FindWindowと同じの作れと言われても仕組みがわからんし
562デフォルトの名無しさん:2008/03/22(土) 19:54:15
FindWindowならEnumWindowsやGetWindowでつくれるんでない?
563デフォルトの名無しさん:2008/03/22(土) 19:56:15
逆汗してコード調べれば何してるかはわかるよ
たぶん途中でカーネルオブジェクトのハンドルテーブル見に行ってるんだろうけど
それと同じコード書けば良いだけ

単にAPI作りたいってんならDLL吐けばヨロシ
564デフォルトの名無しさん:2008/03/22(土) 20:16:25
なんでWin32APIと同じ関数を作る必要があるんだ?
バグがあって仕方なく、というなら分からなくはないが
565デフォルトの名無しさん:2008/03/22(土) 20:19:32
バグがあるんじゃね。脳に。
566デフォルトの名無しさん:2008/03/22(土) 20:20:32
それは湧いているという
567デフォルトの名無しさん:2008/03/22(土) 20:50:19
ロードしたDLLってプロセスごとにメモリ上に展開されるの?
それとも同じDLLロードしたら同じ物理メモリを参照するのかな
568デフォルトの名無しさん:2008/03/22(土) 20:52:59
される
569デフォルトの名無しさん:2008/03/22(土) 20:54:31
Copy on write
570デフォルトの名無しさん:2008/03/22(土) 20:56:25
初期は共有してたけど、
色々問題があったからプロセスごとに展開するように変更されたと記憶している。
571デフォルトの名無しさん:2008/03/22(土) 20:56:48
されるけどそういう考え方はしない方がいい
572デフォルトの名無しさん:2008/03/22(土) 20:59:39
Win95 あたりは共有されてなかったっけ?
573デフォルトの名無しさん:2008/03/22(土) 21:13:17
NTカーネルが分離で95カーネルは共有

Meがどうだったかはしらんけど98SEは共有
574デフォルトの名無しさん:2008/03/22(土) 21:17:13
じゃあDLLを使ってデータの共有はできひんのか
575デフォルトの名無しさん:2008/03/22(土) 21:24:02
ファイルマッピングオブジェクトでも使え
他にもWM_COPYDATA、グローバルアトム、レジストリなど
576デフォルトの名無しさん:2008/03/22(土) 21:24:05
FMOでおk
577デフォルトの名無しさん:2008/03/22(土) 21:24:06
OSが上手くやってくれるから気にすんな
578デフォルトの名無しさん:2008/03/22(土) 23:12:39
#pragma data_seg的な

DLL 内のデータをアプリケーションまたはほかの DLL と共有する方法
http://msdn2.microsoft.com/ja-jp/library/h90dkhs0(VS.80).aspx
579デフォルトの名無しさん:2008/03/22(土) 23:50:49
#pragma data_seg (".myseg")
int i = 0;
char a[32]n = "hello world";
#pragma data_seg()


char a[32]n ←この n の意味がわからないんだけど
580デフォルトの名無しさん:2008/03/23(日) 01:26:05
>>579
試せば分かるが n を書かないと共有されない。
581デフォルトの名無しさん:2008/03/23(日) 01:56:26
>>580
C言語的にはどんな意味があんの?
582デフォルトの名無しさん:2008/03/23(日) 02:24:00
誤植
583デフォルトの名無しさん:2008/03/23(日) 02:32:50
MS の独自拡張としか言えない
584デフォルトの名無しさん:2008/03/23(日) 02:43:27
エイプリルフールネタとしては秀逸な気がする。
585デフォルトの名無しさん:2008/03/23(日) 02:46:03
どっちなのー
586デフォルトの名無しさん:2008/03/23(日) 09:25:47
どこ探しても見つからないのでここで質問

SDKでレジストリを監視する方法とディレクトリツリー、またはファイルを監視して変更(名前の変更や内容の変更)を禁止する方法の2つを探しています
後者は変更を通知するAPIならあったんだけど変更をさせないで通知する方法とかないんかなと
どなたかわかる方いましたらよろしくお願いします
587デフォルトの名無しさん:2008/03/23(日) 09:28:26
>>586
アクセス権つければ禁止できるんじゃないかな。
588デフォルトの名無しさん:2008/03/23(日) 09:29:23
そういうときにNTFSのアクセス制御というものがあるんじゃない?
589デフォルトの名無しさん:2008/03/23(日) 09:47:18
>>587
読み取り専用にするって事??別に読み取り専用にして他のプロセスが属性変更したら再度読み取り専用にするって感じでもいいんだけど、ほぼ完全にアクセスを遮断してみたい
>>588
今調べてみたけどよくわからんから、ちょっと試してみます
ありがとうww
590デフォルトの名無しさん:2008/03/23(日) 10:20:14
完全にアクセスを遮断、なんてサービスかドライバを作らないと無理だろう
ACLを書き換えてもExplorerやRegEditで弄れるし
591デフォルトの名無しさん:2008/03/23(日) 10:25:11
なんかマルウェアくさい
592デフォルトの名無しさん:2008/03/23(日) 10:43:05
そりゃAdministratorsかCREATOR_OWNER(だっけ)使えば弄れるけどさ
593デフォルトの名無しさん:2008/03/23(日) 11:35:30
APIフックでできへんのか
594デフォルトの名無しさん:2008/03/23(日) 11:57:50
>>591
万が一質問者がマルウェアの類を作っているとしたら、この手の質問に回答すると共犯とか幇助って事になるのかな
595デフォルトの名無しさん:2008/03/23(日) 12:52:07
犯罪行為だとして、フツーあの質問からは予知できないから
共犯関係は成り立たないはず。
596デフォルトの名無しさん:2008/03/23(日) 14:48:04
ここがマルウェア作成スレだったら微妙
597デフォルトの名無しさん:2008/03/23(日) 15:17:58
今の日本の法律ではマルウェアの作成で罪に問われることはない。
598デフォルトの名無しさん:2008/03/23(日) 15:25:55
ウイルス作成罪ってまだ成立してなかったっけ?
599デフォルトの名無しさん:2008/03/23(日) 15:31:00
まだ。
CLANNAD ウィルスも罪状は著作権法違反。
600デフォルトの名無しさん:2008/03/23(日) 15:34:09
基本的な質問です、メニューからどんどんウィンドウを開いてゆく場合などは
どうするのでしょうか? 最初のメニューから関数呼んで新しいウィンドウくらすを
どんどん登録して処理するのですか? 全体的な流れとして??
601デフォルトの名無しさん:2008/03/23(日) 15:37:30
>>599
そうみたいだなぁ

仮に成立したとして、システムに介入するタイプのソフトがワクチンのヒューリスティック検知に引っかかるとか
シェアウェアのロジックボムとかもマズいのかな
602デフォルトの名無しさん:2008/03/23(日) 16:05:59
フォーマット シー
って書いたらタイホです
603デフォルトの名無しさん:2008/03/23(日) 18:14:24
format ℃は器物損壊か
604デフォルトの名無しさん:2008/03/23(日) 18:34:01
さすがに善意の提供者は対象外だろう。
悪意がないことを証明するために捜査を受ける必要があるかもしれないが。
605デフォルトの名無しさん:2008/03/23(日) 19:22:39
それを判断するのは裁判所ということになっていましてね
そして被告==犯罪者というのが日本の社会通念でして
606デフォルトの名無しさん:2008/03/23(日) 19:41:36
このスレに書き込むと犯罪者になりますので注意
607デフォルトの名無しさん:2008/03/23(日) 20:24:40
>>606=犯罪者
608デフォルトの名無しさん:2008/03/23(日) 20:40:33
>>607=犯罪者
609デフォルトの名無しさん:2008/03/23(日) 20:41:05
>>608=犯罪者
610デフォルトの名無しさん:2008/03/23(日) 20:41:54
    _, ._
  ( ・ω・) now shibakaring ...
  ○={=}〇,
   |:::::::::\, ', ´
、、、、し 、、、(((.@)WWWWWWWWWWWWWWWWWWWWWWW (26%)
611デフォルトの名無しさん:2008/03/23(日) 21:10:44
ここの質問って、右も左も分からない初心者か、ウイルス作ってるんじゃねーのという内容か
どちらか一方に当てはまる質問しか出てない気がするw
612デフォルトの名無しさん:2008/03/23(日) 22:00:14
フックの質問は多いな
613デフォルトの名無しさん:2008/03/23(日) 22:40:51
アッパーを教えてください
614デフォルトの名無しさん:2008/03/23(日) 23:29:21
高橋ジョージにでも聞け
615デフォルトの名無しさん:2008/03/23(日) 23:30:44
リソーススクリプトでは、標準のコントロールを配置する
ようなダイアログボックスを設計できます。

同じようにメインのウィンドウに対してリソーススクリプト
で標準のコントロールを配置することはできないのでしょうか?
616デフォルトの名無しさん:2008/03/23(日) 23:32:51
IDEでも使って下さい
環境スレで
617デフォルトの名無しさん:2008/03/23(日) 23:36:58
>>616
IDEを使いたくないのです。

できないということでしょうか?
618デフォルトの名無しさん:2008/03/23(日) 23:38:41
メモ帳でも出来るがダルイぞ
619デフォルトの名無しさん:2008/03/23(日) 23:41:22
ダイアログをメインのウィンドウにすればいいじゃん
620デフォルトの名無しさん:2008/03/23(日) 23:44:25
MFCのフォームビューが出来てるんだから出来るんじゃね
621デフォルトの名無しさん:2008/03/23(日) 23:45:21
APIスレならCreateWindowExでコリコリ行くべき
622デフォルトの名無しさん:2008/03/24(月) 05:56:16
ファイルをディスクキャッシュに乗せないように読み込む方法教えてください。
623デフォルトの名無しさん:2008/03/24(月) 06:44:49
システムキャッシュならAPIでできるが、
ディスクキャッシュは、そもそもできるのか?
624デフォルトの名無しさん:2008/03/24(月) 06:47:17
つ FFC
625デフォルトの名無しさん:2008/03/24(月) 08:48:40
CreateFileでFILE_FLAG_NO_BUFFERING?
626デフォルトの名無しさん:2008/03/24(月) 09:50:50
>>613
CharUpper / CharUpperBuff
627デフォルトの名無しさん:2008/03/24(月) 19:53:44
強烈なアッパーを放つ事ができました!
628デフォルトの名無しさん:2008/03/24(月) 19:54:52
クスリでもやってるの?
駄目だよ手出しちゃ…
629デフォルトの名無しさん:2008/03/24(月) 21:30:24
LoadCursorやLoadIconが更迭されてLoadImageを使うようになった理由を誰か知ってたら教えてくれ
630デフォルトの名無しさん:2008/03/24(月) 21:56:35
派閥争いだろ
631デフォルトの名無しさん:2008/03/24(月) 22:30:02
LoadCursorはともかく、
LoadIconは小サイズのアイコンが読み込めない時点で明らかに機能不足。
だが、通常サイズのアイコンにわざわざLoadImage使うことも絶対にないな。
632デフォルトの名無しさん:2008/03/24(月) 22:40:46
じゃあ逆にフックを防ぐ方法を聞くのは合法か?
633デフォルトの名無しさん:2008/03/24(月) 22:44:57
キーフック無効にするソフトとかあったら
キーロガー怖くなくて嬉しいかもしれない
634デフォルトの名無しさん:2008/03/24(月) 22:53:07
nProtect GameGuard
635デフォルトの名無しさん:2008/03/24(月) 22:55:53
hookguardってのがあってSetWindowsHookExのグローバル呼び出しフックを検出するコードを公開されてる
どっちかってーと概念実証のにおいがしたり、解説サイトがロシア語だったりするけど
636デフォルトの名無しさん:2008/03/24(月) 22:56:53
変な日本語になった('A`)
637デフォルトの名無しさん:2008/03/24(月) 22:58:54
ピーカブースタイルでダッキングでフックをかいくぐり華麗にアッパーをお見舞いしてやれ
638デフォルトの名無しさん:2008/03/24(月) 23:54:20
>622
FILE_FLAG_SEQUENTIAL_SCANも必要かも?
639デフォルトの名無しさん:2008/03/25(火) 00:12:53
>>638
それはキャッシュマネージャ用のヒントなのでFILE_FLAG_NO_BUFFERING使ってるときは関係ないはず。
まあ単なるヒントなので付けておいて悪いということもないけれど。
今後最適化に利用される可能性がないとも言えないし。
640デフォルトの名無しさん:2008/03/25(火) 00:33:47
>>622
ライトスルー属性で書いてね。
641デフォルトの名無しさん:2008/03/25(火) 03:23:26
今日、自分がどの仕事にどれぐらい時間を使ってるか
知りたかったからキーロガーで計ってやれとダウンロードしようとしたら
圧縮ファイルを落としてきた時点でNortonに削除された
642デフォルトの名無しさん:2008/03/25(火) 06:13:39
もし、キーロガ作ったらやっぱ削除しやがるのか?Norton先生
フォルダ除外とかできるんだろうけどさ
643デフォルトの名無しさん:2008/03/25(火) 06:16:40
フック検出かあ

自分自身が依存してるモジュールのリストを持っておけば
PSAPIで列挙してフック用のモジュールを検出できるかも
644デフォルトの名無しさん:2008/03/25(火) 06:27:57
んでもWH_KEYBOARD_LLのフックは侵入型じゃないからそれだと検出できないし。
645デフォルトの名無しさん:2008/03/25(火) 06:38:20
やろうと思えばキー状態監視でも拾える。
646デフォルトの名無しさん:2008/03/25(火) 09:02:33
APIフックならある程度検出できるがキーフックの検出は難しそうだなあ
Raw Inputを使えばSetWindowsHookExの影響を受けさせないことは可能?
647デフォルトの名無しさん:2008/03/25(火) 12:38:51
>>631
48ドットアイコンがロードできないんで最近は「通常サイズ」といっても微妙。
通常では32ドットアイコンを見かけないVistaでもいまだに32ドットだからなぁ。
648デフォルトの名無しさん:2008/03/25(火) 13:21:02
>>645
相当高速でループ回さないと取りこぼしちゃうよね
649デフォルトの名無しさん:2008/03/25(火) 15:19:28
>>648
ごくあたりまえのPCのCPUなら、キーボードをスキャンしてるチップが
マトリクスをスキャンするよりずっと速くループできると思う。
650デフォルトの名無しさん:2008/03/25(火) 15:21:43
アプリレベルとOSレベルじゃ・・・
651デフォルトの名無しさん:2008/03/25(火) 15:26:13
そもそも取りこぼすほどのタイピング速度なんて人間には不可能だろ
652デフォルトの名無しさん:2008/03/25(火) 15:26:24
アプリだってスレッドのプライオリティを上げればかなりリアルタイムに近い処理できるよ。
マウスカーソルさえ動かないくらいにCPUタイムを奪い撮れる。
キーロガー作ろうとすると、どこでどううまくSleepしてユーザに気付かれないかが難しそうだけど。
653デフォルトの名無しさん:2008/03/25(火) 16:30:00
CPU使用率なんて見てる奴なら(≒タスクマネージャの類を常駐させてる奴なら)
変なプロセスが起動してる時点でバレるだろ
654デフォルトの名無しさん:2008/03/25(火) 16:35:59
うるさいブタ野郎が
655デフォルトの名無しさん:2008/03/25(火) 16:43:36
フック後にフックdllの被フックプロセス側で自分自身をLoadLibraryするとフック解除後も居座る事が可能だから
タスクマネージャを眺めていても気付かないかも
656デフォルトの名無しさん:2008/03/25(火) 16:45:51
>>651
そういう安易な考えで作った糞アプリが
キーマクロを取りこぼして迷惑をかけるんだよ。反省しろ。
657デフォルトの名無しさん:2008/03/25(火) 16:46:23
もうまるっきりスパイウェアの王道行ってますね

むしろ逝ってるか
658デフォルトの名無しさん:2008/03/25(火) 17:47:10
659デフォルトの名無しさん:2008/03/25(火) 17:48:39
655が言ってるのはタスクマネージャで気付けるかだから>>643を持ち出しても意味無い
660デフォルトの名無しさん:2008/03/25(火) 17:52:22
つ ProcessExplorer
661デフォルトの名無しさん:2008/03/25(火) 18:38:14
ProcessExplorer はタスクマネージャーじゃないし
662デフォルトの名無しさん:2008/03/25(火) 18:49:46
SetWindowsHookExをフックすりゃよくね
663デフォルトの名無しさん:2008/03/25(火) 18:55:34
UserModeでどう頑張って隠蔽してもバレるから無駄
664デフォルトの名無しさん:2008/03/25(火) 18:56:43
素人さんが気付かないレベルならいいじゃん

って物騒だから。その辺にしとき
665デフォルトの名無しさん:2008/03/25(火) 19:17:20
入力補助アプリとか使ってたりするとMakeとBrakeがほぼ同時で単純スキャンじゃ確実に取りこぼすと思う。
666デフォルトの名無しさん:2008/03/25(火) 19:38:47
全部きっちり取らなきゃいけないものでもないしな
取りこぼしはサンプリングが多けりゃカバーできる
667デフォルトの名無しさん:2008/03/25(火) 20:23:09
LoadLibraryしたDLLの中DllMainとかで
VirtualAlloc→WriteProcessMemoryで実行コード埋め込んじゃえばモジュールも残らないよ
668デフォルトの名無しさん:2008/03/25(火) 21:19:53
その場合埋め込み先は(DLLから見て)自プロセスの中だから
わざわざ監視されてる可能性の高いWriteProcessMemoryを使う必要ないだろ
669デフォルトの名無しさん:2008/03/25(火) 21:29:32
> LoadLibraryしたDLL
これ自体CreateRemoteThreadなんかで仕込んでたら普通にセキュリティソフトが警告してくるだろう
670デフォルトの名無しさん:2008/03/25(火) 21:30:12
ライトプリンセス☆メモリー
671デフォルトの名無しさん:2008/03/26(水) 00:30:59
クスリでもやってるの?
ダメだよ手出しちゃ…
672デフォルトの名無しさん:2008/03/26(水) 00:42:56
誰か、>>466に答えられる人はいませんか?
673デフォルトの名無しさん:2008/03/26(水) 00:55:18
いません
674デフォルトの名無しさん:2008/03/26(水) 00:56:29
>>672
そもそもホットプラグ対応じゃないだろ
675デフォルトの名無しさん:2008/03/26(水) 08:45:16
WM_DEVICECHANGED がきたら、全部スキャンし直す。
676デフォルトの名無しさん:2008/03/26(水) 17:00:43
ファイルにエロ動画、3P、評価Sといったタグをつけるのはどうすればいいの?
ファイル名につけるの以外で。
677デフォルトの名無しさん:2008/03/26(水) 17:10:39
こっそりヘッダに埋め込む
678デフォルトの名無しさん:2008/03/26(水) 17:14:11
IPropertySetStorage
エクスプローラのファイルのプロパティの概要。

ファイルが構造化ストレージならファイル内に、
そうでないけどNTFSドライブ上のファイルなら副ストレージに情報を保管する。

679デフォルトの名無しさん:2008/03/26(水) 17:46:28
副ストレージ???

代替データストリームとか副次ストリームじゃないの?
680デフォルトの名無しさん:2008/03/26(水) 17:53:38
ああ、すまん。ごっちゃにしちまった。
681デフォルトの名無しさん:2008/03/26(水) 21:00:40
キーコードを文字列に変換してくれる関数なんてあります?
表だけでもあると助かるんですが
682682:2008/03/26(水) 21:08:48
事故解決
683683:2008/03/26(水) 21:25:02
>>682
684デフォルトの名無しさん:2008/03/26(水) 21:50:50
ConvertINetStringの使い方がよくわかりません。
685デフォルトの名無しさん:2008/03/26(水) 21:53:39
WINAPIの勉強始めましたが、
下記サイトのツリービューの例をコンパイルしましたが、
「未定義のシンボル item(関数 AddItem )」
とエラーが返ってきます・・・。

コモンコントロールの準備「comctl32.libをプロジェクトに加える」とありますが、
もしかしてilink32.cfgに「-L"C:\borland\bcc55\Lib\PSDK"」(←comctl32.libがあった場所)
を追加するのではなかったのでしょうか?
それ以外に間違ってそうな箇所はないきがするのですが。
どうすればコンパイルがとおるか教えてもらえないでしょうか。

環境:BCC
http://www.kumei.ne.jp/c_lang/sdk2/sdk_111.htm
686デフォルトの名無しさん:2008/03/26(水) 22:02:33
未定義のシンボルならコンパイル以前の問題
687デフォルトの名無しさん:2008/03/26(水) 22:07:46
>「未定義のシンボル item(関数 AddItem )」

俺には

「AddItemという関数内でitemというシンボルが未定義のまま使われている」

という意味にしか取れないんだが。
少しでもエラーの意味を考えたか?
688672:2008/03/26(水) 22:08:58
>>674

アナログ接続ではWM_DEVICECHANGEは飛んできませんが、
デジタル接続の時だけは飛んできます。
これはホットプラグ対応ということなのでは?

>>675

全部スキャンし直す、ということですが
デバイスマネージャのツリーに表示されるような
接続機器情報を事前と事後に取得して比較する、という理解で合っていますか?
その情報を取得するためのAPIを見つけられませんでしたので
名前など手がかりを教えてもらえませんか?
689デフォルトの名無しさん:2008/03/26(水) 23:14:38
Sysinternalsのwinobjのようにオブジェクトマネージャの名前空間の
中身(当座は\Deviceディレクトリ)を列挙したいのですが、方法がわかりません。
ネイティブAPIを使うこと、ユーザモードで可能であるということは
winobjのドキュメントからわかるのですが、具体的なアプローチやサンプルなどご存知であれば教えてください
690685:2008/03/26(水) 23:30:34
TV_INSERTSTRUCTというcommctrl.hで定義されている構造体の、
itemってのが未定義って返ってきてるのですが・・・。
commctrl.hにはTV_INSERTSTRUCTとTVITEMのどちらも定義されていそうでした。
定義ってそういう意味じゃないのでしょうか?
691デフォルトの名無しさん:2008/03/26(水) 23:35:20
>>690
エラーメッセージをコピペしてください
肝心の部分が端折られてて訳分かりません
692デフォルトの名無しさん:2008/03/26(水) 23:37:08
現実問題ファイルのフルパスがMAX_PATH超えることってあるの?
固定長バッファで組むとバグる?
693デフォルトの名無しさん:2008/03/26(水) 23:39:57
\\.\記法で64Kくらいまで長くできるとか何とか。
694デフォルトの名無しさん:2008/03/26(水) 23:43:48
(ヌル文字分引いた)259文字って結構長い。
第一エクスプローラもそれを超えるパスをまともに扱えない。
それに俺は大したものを作っているわけではないので、
だからGetOpenFileNameとかだとMAX_PATH固定で作っている。
GetSystemDirectoryみたいに予め必要なバッファの長さを問い合わせられるときには、
問い合わせて必要な分だけ確保するけど。
695685:2008/03/27(木) 00:04:49
>>691
何故か解決しました。
拡張子がcだったのを、cppに変えたらコンパイル出来ました。
C++じゃないとコンパイル出来ないってことだったのでしょうか。

とりあえずの、メッセージすべて
bcc32 -W treevw01.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
treevw01.c:
警告 W8057 treevw01.c 29: パラメータ 'hPrevInst' は一度も使用されない(関数 WinMain )
警告 W8057 treevw01.c 29: パラメータ 'lpsCmdLine' は一度も使用されない(関数 WinMain )
エラー E2451 treevw01.c 132: 未定義のシンボル item(関数 AddItem )
エラー E2451 treevw01.c 134: 未定義のシンボル item(関数 AddItem )
エラー E2451 treevw01.c 137: 未定義のシンボル item(関数 AddItem )
エラー E2451 treevw01.c 140: 未定義のシンボル item(関数 AddItem )
エラー E2451 treevw01.c 144: 未定義のシンボル item(関数 AddItem )
エラー E2451 treevw01.c 146: 未定義のシンボル item(関数 AddItem )
エラー E2451 treevw01.c 149: 未定義のシンボル item(関数 AddItem )
警告 W8019 treevw01.c 150: コードは効果を持たない(関数 AddItem )
エラー E2451 treevw01.c 152: 未定義のシンボル item(関数 AddItem )
警告 W8019 treevw01.c 153: コードは効果を持たない(関数 AddItem )
エラー E2451 treevw01.c 155: 未定義のシンボル item(関数 AddItem )
警告 W8019 treevw01.c 156: コードは効果を持たない(関数 AddItem )
エラー E2451 treevw01.c 158: 未定義のシンボル item(関数 AddItem )
警告 W8019 treevw01.c 159: コードは効果を持たない(関数 AddItem )
警告 W8004 treevw01.c 161: 'hChild2' に代入した値は使われていない(関数 AddItem )
*** 10 errors in Compile ***
696デフォルトの名無しさん:2008/03/27(木) 00:11:39
構造体のコンストラクタとかもC++じゃないとプリプロセッサで定義されないよ
697685:2008/03/27(木) 00:15:06
>>696
ありがとでした
698デフォルトの名無しさん:2008/03/27(木) 00:23:44
>>693,694
なるほど。どっちみち相手のマシンも似たような制限がありそうなもんだけどマシン名含めるとぎりぎり超えそうだな。
とりあえず問題出るまでMAX_PATH固定にしとくか。サンクス。
699デフォルトの名無しさん:2008/03/27(木) 00:26:06
>>689
よくわかんないけど、dependsにかけたら関数のアタリついたりしないかな
700デフォルトの名無しさん:2008/03/27(木) 00:43:38
>>692
余裕
NTFSではパスは最長32767文字まで
701デフォルトの名無しさん:2008/03/27(木) 01:01:37
CだとNONAMELESSUNIONが発動して、
#define DUMMYUNIONNAME u
typedef struct tagTVINSERTSTRUCTA {

#if (_WIN32_IE >= 0x0400)
union
{
TVITEMEXA itemex;
TV_ITEMA item;
} DUMMYUNIONNAME;

になるとか。
702デフォルトの名無しさん:2008/03/27(木) 05:05:55
LocalFree()のことだけど、FormatMessage()でバッファ確保させたときってこれで解放するよね。
で、MSDNのLocalFreeの項見ると
>この関数は、16 ビット版 Windows との互換性のために提供されています。
と書いてあるんだけど、深く気にする必要ないの?

というか最近の窓プログラムに普通に利用しても無問題?
703デフォルトの名無しさん:2008/03/27(木) 06:08:11
>>699
使ってるAPIはごく知られたもので、
ntdll.dllからGetProcAddressしていると思われるAPI(バイナリに文字列として保存されてる関数)も
そのものずばりというのはないようです

それでも臭いのが2・3あるにはあるんですが(たとえばNtQueryObject)
調べても名前空間の調査に関する情報って全然ないので、
臭い関数をどう組み合わせるのか、とかで先に進めないという感じです
704デフォルトの名無しさん:2008/03/27(木) 08:51:06
>>702
Windowsには、Win16時代からあるAPIがたくさんあるんだよ。
既にそういう仕様にしてしまった以上、いまさら変更はできない。
そもそも、LPTSTR型の引数に、PVOID *型を渡すこと自体が、
おかしいと思わないか?

だから一番いい方法は、FORMAT_MESSAGE_ALLOCATE_BUFFER自体を使わないことだな。
705デフォルトの名無しさん:2008/03/27(木) 09:10:08
文字コード変換にmlang.dllを使用したいのですが、
サンプルコード等ありましたら
教えて頂きたいです。
706デフォルトの名無しさん:2008/03/27(木) 13:33:14
>>684
>>705
ググれカス
707デフォルトの名無しさん:2008/03/27(木) 13:36:31
>>706
知らないならレスするなカス
708デフォルトの名無しさん:2008/03/27(木) 14:07:17
>>705
普通に探せばあるよ
昔使った覚えがある
709デフォルトの名無しさん:2008/03/27(木) 14:46:55
>>707
質問するならエラそーにするなカス
710デフォルトの名無しさん:2008/03/27(木) 14:50:28
>>709
知らないならレスするなカス
711デフォルトの名無しさん:2008/03/27(木) 15:06:21
>>710
知らないなら質問するなカス
712デフォルトの名無しさん:2008/03/27(木) 15:09:55
>>710
知らないなら質問するなカス
713デフォルトの名無しさん:2008/03/27(木) 15:16:41
>>711-712
知らないならレスするなカス
714デフォルトの名無しさん:2008/03/27(木) 15:18:44
>>713
知らないならレスするなカス
715デフォルトの名無しさん:2008/03/27(木) 15:22:33
>>714
知らないならレスするなカス
716デフォルトの名無しさん:2008/03/27(木) 15:23:25
>>709
その人は俺じゃないすよ
717デフォルトの名無しさん:2008/03/27(木) 15:29:08
>>716
ヒント:春休み
718デフォルトの名無しさん:2008/03/27(木) 16:35:57
>>717
だから何?
719デフォルトの名無しさん:2008/03/27(木) 16:40:06
>>718=わかっていない可愛そうな子
720デフォルトの名無しさん:2008/03/27(木) 16:40:49
春休みだからその人は俺じゃないすよ てこと
721デフォルトの名無しさん:2008/03/27(木) 16:45:19
夏休みならその人は俺になるのか?
722デフォルトの名無しさん:2008/03/27(木) 16:48:40
逆や裏は真とは限らないだろ?
723デフォルトの名無しさん:2008/03/27(木) 17:44:42
いや、限るね
724デフォルトの名無しさん:2008/03/27(木) 17:47:59
>>723
俺は貧乏だ
>>723 は俺じゃないから貧乏じゃない

なんかいいもん奢ってくれ
725デフォルトの名無しさん:2008/03/27(木) 18:31:26
まずは>>723>>724じゃないという証明をしろ
726デフォルトの名無しさん:2008/03/27(木) 18:34:07
春休みにまでプログラミングの勉強しようなんて逆にえらいと思う
727デフォルトの名無しさん:2008/03/27(木) 18:59:57
別ウインドウの表示内容を自ウインドウに表示させたいのですが、うまくいきません
何か根本的に間違っているのでしょうか?
このソースではデスクトップの(0,0)-(100,100)までを自ウインドウに貼り付けようとしているつもりです

// 自ウインドウを非表示にする
rgn = CreateRectRgn(0, 0, 0, 0);
SetWindowRgn(wnd, rgn, true);
// 別ウインドウの内容をメモリにコピー
HDC hdc_src = GetDC(GetDesktopWindow());
HDC hmdc_src = CreateCompatibleDC(hdc_src);
BitBlt(hmdc_src, 0, 0, 100, 100, hdc_src, 0, 0, SRCCOPY);
// 自ウインドウを元に戻す
SetWindowRgn(wnd, NULL, true);
HDC hdc_dest = GetDC(wnd);
// メモリ→自ウインドウ
BitBlt(hdc_dest, 0, 0, 100, 100, hmdc_src, 0, 0, SRCCOPY);
728デフォルトの名無しさん:2008/03/27(木) 19:02:39
CreateCompatibleDCで作ったDCは、
ビットマップを選択させないと使い物にならない。
729デフォルトの名無しさん:2008/03/27(木) 19:04:04
>>727
つくったばかりのCompatibleDCには、たしかモノクロ1x1ビットマップしか選択されてないので
そのままビットマップの転送バッファとして使うことはできない
CreateCompatibleBitmapかなんかで必要なバッファを作ってSelectObjectする必要がある
(当然、選択したものは後で選択解除して、作ったものは後で破棄するべき)
730デフォルトの名無しさん:2008/03/27(木) 19:04:09
>>727
メモリDCは、CreateCompatibleDCだけでは作れない。
CreateCompatibleBitmap で bitmap も作って SelectObject して
あげないといけない。

それから非表示にした直後にコレやっても、先方のウィンドウ等が
まだ再描画されていない可能性が高いよ。適当にSleepするとか
WM_PAINTをSendしてみるとか、何か対策が必要。
731デフォルトの名無しさん:2008/03/27(木) 19:05:21
>>728-730
即レスありがとうございます
732デフォルトの名無しさん:2008/03/27(木) 19:06:35
WM_PAINTはSendしちゃだめだろ。
せめてInvaridateRectとかWM_PRINTとかにしようよ。
733デフォルトの名無しさん:2008/03/27(木) 19:15:17
>>732
SendしたりPostしたりするものではないのは確かなんだけど、
実用的にはこれで不自由しないというか・・・
UpdateWindow が無難かも知れない。
734デフォルトの名無しさん:2008/03/27(木) 19:18:09
>>728-730 >>732-733
なんとかできました
本当にありがとうございます
735デフォルトの名無しさん:2008/03/27(木) 19:24:41
>>733
ユーザがWM_PAINTを投げたことを検出して、
正規の再描画のプロセスが行われるようにしているなんてことをやっていそうだな。
736デフォルトの名無しさん:2008/03/27(木) 19:28:07
UpdateWindowって結局WM_PAINTをSendしてるだけじゃないの?
737デフォルトの名無しさん:2008/03/27(木) 19:30:53
>>736
MSDNライブラリには「更新リージョンが空でなければ」という但し書きが付いている。
738デフォルトの名無しさん:2008/03/27(木) 19:31:26
SDKのドキュメントには、まさにそう書いてあるな。
流石に更新領域がなければ送信しないけど。
739デフォルトの名無しさん:2008/03/28(金) 00:21:48
VistaでIMEについての質問です。

DirectXのサンプルのバグで、VistaでIMEの変換ウィンドウが表示されない問題があったそうですが、
同じ症状で悩んでます。

case WM_IME_SETCONTEXT:
lParam &= ~ISC_SHOWUIALL;
return DefWindowProc(hWnd, msg, wParam, lParam);

WM_IME_SETCONTEXTメッセージが来たときに、ISC_SHOWUIALLフラグを
クリアしてDefWindowProcに渡せばいいと聞いたのですが、
間違いなのでしょうか。
どこかにVistaで独自変換ウィンドウが動くサンプルがあれば教えてください。
740689:2008/03/28(金) 00:25:23
自己解決した

NtQueryDirectoryObject がファイルシステムのディレクトリではなくて
オブジェクトマネージャのディレクトリ用だったみたい
解ればしょぼいけど報告まで
741デフォルトの名無しさん:2008/03/28(金) 00:53:34
nyaruruセンセによるとDirectXのCustomUI+αで良いという話みたいだけど
http://d.hatena.ne.jp/NyaRuRu/20070308
742デフォルトの名無しさん:2008/03/28(金) 00:56:56
>>704
サンクスコ
型なんて突き詰めれば同じようなポインタや数値なんだから気にしません><

とか言ってるから進歩しないんだけども
使うときは気をつけます
743デフォルトの名無しさん:2008/03/28(金) 04:12:02
自分よりも下にあるウインドウの色で判断してリージョンを作成することは可能でしょうか?
例えばRGB(0,0,0)以外の部分のリージョンを作成するなど
744デフォルトの名無しさん:2008/03/28(金) 11:39:57
WM_PAINTは優先順位が低いからな。
イメージとしては、UpdateWindowはキューにあるWM_PAINTをつかんで直接投げるイメージ
InvalidateRectでWM_PAINTを発生させ、直後にUpdateWindowで描画させる、というのはよくやる。
745デフォルトの名無しさん:2008/03/28(金) 12:02:01
ConvertINetStringを使おうとすると、
未解決の外部シンボルが参照されました、と出ます。
Mlang.hをインクルードするだけじゃ駄目なのでしょうか?
746デフォルトの名無しさん:2008/03/28(金) 12:10:40
優先順位が低いわけじゃなくて、WM_PAINTは通常キューには存在せず、
キューが空で、かつウィンドウに更新領域があるときに GetMessage が
呼び出されると、おもむろに発生する。

自前で Post したり Send したり UpdateWidnow すれば、通常のウィンドウ
メッセージと同じように動作する。同一スレッド内からの Send に至っては
キューにも入らずWindow プロシージャへの呼び出しになる。
747デフォルトの名無しさん:2008/03/28(金) 12:13:03
>>745
mlang.lib がないなら、↓のように動的に解決するとか。
http://nsoft.blog60.fc2.com/blog-entry-646.html
748デフォルトの名無しさん:2008/03/28(金) 12:13:12
>>744
RedrawWindowを使えばいいじゃない
そんな事ぐらいにわざわざ2つもAPIを呼び出すなんて面倒で馬鹿げてる
749デフォルトの名無しさん:2008/03/28(金) 12:53:26
>>745
mlang.libをプロジェクトに追加しる
750デフォルトの名無しさん:2008/03/28(金) 13:19:17
>>749
mlang.libはVS2005にはありませんでした。
751デフォルトの名無しさん:2008/03/28(金) 13:37:09
>>750
そうですか
752デフォルトの名無しさん:2008/03/28(金) 13:39:41
そのくらい自分でつくれよ
753デフォルトの名無しさん:2008/03/28(金) 13:41:00
BCBでの作り方ならありましたが、
VSでの作り方を今探しています。
754デフォルトの名無しさん:2008/03/28(金) 13:51:21
VSってなんですか?
755デフォルトの名無しさん:2008/03/28(金) 13:53:30
Visual Sourcesafe
756デフォルトの名無しさん:2008/03/28(金) 14:00:21
Vidal Sassoon
757デフォルトの名無しさん:2008/03/28(金) 14:05:46
758デフォルトの名無しさん:2008/03/28(金) 14:07:34
VisualStudio
759デフォルトの名無しさん:2008/03/28(金) 14:09:28
ウインドウプロシージャで処理しなかったメッセージをDefWindowProcで処理しないとどんな不具合があるんでしょうか?
760759:2008/03/28(金) 14:10:12

Dialogのプロシージャで処理しなくてもいいので気になったので書きました。
761デフォルトの名無しさん:2008/03/28(金) 14:21:50
ちなみに試してみましたか?
762デフォルトの名無しさん:2008/03/28(金) 14:24:42
ダイアログプロシージャとウィンドウプロシージャは違う
763デフォルトの名無しさん:2008/03/28(金) 14:59:45
ダイアログプロシージャで処理しなかったメッセージはDefDlgProcに送ると面白いよ
764デフォルトの名無しさん:2008/03/28(金) 15:39:10
送ってはいけません
765デフォルトの名無しさん:2008/03/28(金) 16:14:16
mlang.dllからmlang.libを生成出来ました
#pragma comment(lib,"mlang.lib")
としても解決出来なかったのですが、
766デフォルトの名無しさん:2008/03/28(金) 16:31:48
そのlibをどこに置いたの?
解決できないというのは、何がどうなってできないとわかったの?
767デフォルトの名無しさん:2008/03/28(金) 17:11:28
testという名前のプロジェクトのtestフォルダに入れました。
エラー内容は
未解決の外部シンボル _ConvertINetStrimg@28が関数mainで参照されました。
error LNK1120 外部参照1が未解決です。
と出ます。
768デフォルトの名無しさん:2008/03/28(金) 17:25:46
とりあえずSDKをフルインスコしろ
769デフォルトの名無しさん:2008/03/28(金) 17:29:20
って、よく見たらConvertINetStri`m'gかよww

お前がスペルミスしてるからだろ
770デフォルトの名無しさん:2008/03/28(金) 17:37:41
書き込む時に間違えただけです。
すみません。
771デフォルトの名無しさん:2008/03/28(金) 17:40:08
多くのサイトでGetProcAddressして使ってるんだから、それに倣えばいいと思うけど。
772デフォルトの名無しさん:2008/03/28(金) 17:53:34
>>768
ところがMSDNライブラリでConvertINetStringを引くと、
Import library: Noneなんだな。
773デフォルトの名無しさん:2008/03/28(金) 18:08:09
/* cl /LD mlang.c */ /* mlang.lib 生成 */
#include <windows.h>
#define STDAPI extern __declspec(dllexport) HRESULT
STDAPI IsConvertINetStringAvailable(DWORD dwSrcEncoding, DWORD dwDstEncoding) { return 0; }
STDAPI ConvertINetString(LPDWORD lpdwMode, DWORD dwSrcEncoding, DWORD dwDstEncoding, LPCSTR lpSrcStr, LPINT lpnSrcSize, LPSTR lpDstStr, LPINT lpnDstSize) { return 0; }
STDAPI ConvertINetMultiByteToUnicode(LPDWORD lpdwMode, DWORD dwEncoding, LPCSTR lpSrcStr, LPINT lpnMultiCharCount, LPWSTR lpDstStr, LPINT lpnWideCharCount) { return 0; }
STDAPI ConvertINetUnicodeToMultiByte(LPDWORD lpdwMode, DWORD dwEncoding, LPCWSTR lpSrcStr, LPINT lpnWideCharCount, LPSTR lpDstStr, LPINT lpnMultiCharCount) { return 0; }
774デフォルトの名無しさん:2008/03/28(金) 18:09:21
#include <windows.h> のに
#undef STDAPI
が必要だった
775デフォルトの名無しさん:2008/03/28(金) 18:09:25
普通にDEF作ってLIB..EXEでlib作ってリンクできたけどな
776デフォルトの名無しさん:2008/03/28(金) 18:29:14
>>772
すまん、Web系の方に付いてくるのかと思ったが最初から無いのか

それにしても、プロトタイプ宣言があるのにインポートライブラリが付いてないって謎だな
英語版Windowsとかでdllが入ってない環境があるのかな
777デフォルトの名無しさん:2008/03/28(金) 19:13:04
lib /def:mlang.dll
ひょっとして間違ってますか?
778デフォルトの名無しさん:2008/03/28(金) 19:28:15
ひょっとしても何もw
779デフォルトの名無しさん:2008/03/28(金) 19:29:16
Windows95のIEが無い初期版ならmlang.dllが存在しない可能性もありえるかな
780デフォルトの名無しさん:2008/03/28(金) 19:32:26
それならimm32.dllの方がよっぽど無いとおもうけどなー
781デフォルトの名無しさん:2008/03/28(金) 19:46:54
MSDNライブラリによれば、問題の関数は、要IE 5.5以上。
ただ、中でIMultiLanguage::ConvertStringを呼んでいると書いてあり、
IMultiLanguageはIE 4以上となっている。
782デフォルトの名無しさん:2008/03/28(金) 19:50:28
IEのバージョンは6でした。
783デフォルトの名無しさん:2008/03/28(金) 20:05:18
EnumWindowsでタスクトレイに入っているウィンドウってどう列挙すればいいんですか?
条件をオーナーかつ非表示にすると余計なウィンドウが混ざりまくりでうまくいきません。
784デフォルトの名無しさん:2008/03/28(金) 20:12:54
>>778
間違ってますか?
785デフォルトの名無しさん:2008/03/28(金) 20:16:42
うん
786デフォルトの名無しさん:2008/03/28(金) 20:27:14
そういえばThe Old New Thingの人も書いてたが、
通知領域ってなんでタスクトレイって呼ばれるのだろう?
787デフォルトの名無しさん:2008/03/28(金) 20:29:19
トレイっぽくへっこんでるからじゃね?
788sage:2008/03/28(金) 20:32:19
以下のサイトの動的2次元配列のソース(http://homepage2.nifty.com/c-labo/Array2D.h)、
http://homepage2.nifty.com/c-labo/STL_Array2D.html
を実行したのですが、
「'vector' は 'std' のメンバーではない」とエラーメッセージが返ってきました。
他のサイトを見る限りは「標準C++ライブラリが提供」とあるので実行出来ない理由がわかりません。
わかる方がおられれば答えてもらえないでしょうか?
789デフォルトの名無しさん:2008/03/28(金) 20:39:51
スレ違い<vector>をインクルードしろ
790788:2008/03/28(金) 20:47:46
>>789
あ、ごめんなさい。
WINAPIでプログラム作成中だったのでうっかりしてました。
回答、ありでした。
791デフォルトの名無しさん:2008/03/28(金) 20:57:39
>>785
どうやればLIBファイルを作成出来るのですか?
792デフォルトの名無しさん:2008/03/28(金) 21:30:59
>>791
まずはGoogleの使い方を覚えよう。話はそれからだ。
793デフォルトの名無しさん:2008/03/28(金) 21:36:50
>>792
まずはDEFファイルを生成すればいいんですかね?
(´・ω・`)
794デフォルトの名無しさん:2008/03/28(金) 21:37:27
スレ違いなので他所でやってください
795デフォルトの名無しさん:2008/03/28(金) 21:40:41
>>791
LIB
796デフォルトの名無しさん:2008/03/28(金) 21:40:42
>>794
どこのスレッドなら大丈夫なのですか?
(´・ω・`)
797デフォルトの名無しさん:2008/03/28(金) 21:45:08
知ったことか
798デフォルトの名無しさん:2008/03/28(金) 21:48:57
>>796
答えが出てるじゃないか >>795を穴があくほど見れ
799デフォルトの名無しさん:2008/03/28(金) 22:39:17
LIB /DEF:mlang.def /out:mlang.lib
したんですが
『ステートメントはターゲット プラットフォームでサポートされていません。』
と出ます。
何でなのですか?
(´・ω・`)
800デフォルトの名無しさん:2008/03/28(金) 22:42:45
みなさん、穴の準備ができましたよ

* * * *  *       * * * * **
 * * * ** *      ** * **  *
* * * * * *. ∧_∧ * ** * * *
* * * * * * (´・ω・`) * * * * * *
* * * * * *.  (o  o ) * * * * * *
*  * * * * *. `u *u'  * * ** * **
801デフォルトの名無しさん:2008/03/28(金) 22:43:40
何この糞スレw
802デフォルトの名無しさん:2008/03/28(金) 23:14:26
>>800
4行目、右から2番目の穴は俺のな
803デフォルトの名無しさん:2008/03/28(金) 23:42:05
イライラしてきた・・・・
804デフォルトの名無しさん:2008/03/28(金) 23:50:58
>>803
何に?
(´・ω・`)
805デフォルトの名無しさん:2008/03/29(土) 00:41:00
745 名前:デフォルトの名無しさん[] 投稿日:2008/03/28(金) 12:02:01
750 名前:デフォルトの名無しさん[] 投稿日:2008/03/28(金) 13:19:17
753 名前:デフォルトの名無しさん[] 投稿日:2008/03/28(金) 13:41:00
765 名前:デフォルトの名無しさん[] 投稿日:2008/03/28(金) 16:14:16
767 名前:デフォルトの名無しさん[] 投稿日:2008/03/28(金) 17:11:28
770 名前:デフォルトの名無しさん[] 投稿日:2008/03/28(金) 17:37:41
777 名前:デフォルトの名無しさん[] 投稿日:2008/03/28(金) 19:13:04
782 名前:デフォルトの名無しさん[] 投稿日:2008/03/28(金) 19:50:28
784 名前:デフォルトの名無しさん[] 投稿日:2008/03/28(金) 20:12:54
791 名前:デフォルトの名無しさん[] 投稿日:2008/03/28(金) 20:57:39
793 名前:デフォルトの名無しさん[] 投稿日:2008/03/28(金) 21:36:50
796 名前:デフォルトの名無しさん[] 投稿日:2008/03/28(金) 21:40:42
799 名前:デフォルトの名無しさん[] 投稿日:2008/03/28(金) 22:39:17
804 名前:デフォルトの名無しさん[] 投稿日:2008/03/28(金) 23:50:58


春休み中の糞餓鬼ですよね
あなたにプログラミングは向いていないので諦めたらどうですか?
(´・ω・`)
806デフォルトの名無しさん:2008/03/29(土) 00:41:54
お前がうざい
807デフォルトの名無しさん:2008/03/29(土) 00:45:05
何がですか?
(´・ω・`)
808デフォルトの名無しさん:2008/03/29(土) 00:49:02
>>806
理由くらい言ってくれよ
(´・ω・`)
809デフォルトの名無しさん:2008/03/29(土) 00:50:21
>>806
お前の方がうざい
(´・ω・`)
810デフォルトの名無しさん:2008/03/29(土) 00:51:34
解決出来ない
(´・ω・`)
811デフォルトの名無しさん:2008/03/29(土) 00:54:17
早く教えろクズども
(´・ω・`)
812デフォルトの名無しさん:2008/03/29(土) 00:55:16
ID無しのスレで何をしているwww
813デフォルトの名無しさん:2008/03/29(土) 00:58:40
DLLからDEFファイル出力

DEFファイルからLIBファイル出力

#pragma comment()使う。
mlang.libが2KBしかない…
自分が間違ってるっぽい。
(´・ω・`)
814デフォルトの名無しさん:2008/03/29(土) 01:03:25
>>813
いい加減スレ違いだからVisualStudioのスレにでも行け
(´・ω・`)
815デフォルトの名無しさん:2008/03/29(土) 01:04:37
>>814
わかった
(´・ω・`)ノシ
816デフォルトの名無しさん:2008/03/29(土) 07:41:34
無駄な100レスでした
817デフォルトの名無しさん:2008/03/29(土) 14:06:51
さっさと誘導しないからだろ
カスが
818デフォルトの名無しさん:2008/03/29(土) 15:36:28
やっぱLoadLibraly+GetProcAddressが手っ取り早いんじゃない?
819デフォルトの名無しさん:2008/03/29(土) 16:12:54
Libraly(笑)

英語が出来ない日本人の典型例だな
820デフォルトの名無しさん:2008/03/29(土) 16:18:39
まぁそんな事はどうでもいいんじゃね
821デフォルトの名無しさん:2008/03/29(土) 16:56:39
どうでもいいならレスするな
822デフォルトの名無しさん:2008/03/29(土) 17:07:03
何言ってんの。ばっかでー
823デフォルトの名無しさん:2008/03/29(土) 17:09:28
馬鹿はお前だ
824デフォルトの名無しさん:2008/03/29(土) 17:11:10
はいはいは
825デフォルトの名無しさん:2008/03/29(土) 17:42:29
>>819
そういうことは一度LibralyをLibraryと書いたものとみなしてその後で「で、Libralyって何?(笑)」とか書いたほうがいいですよ

>>820-824
だからID無しの板で何を(ry
826818:2008/03/29(土) 17:52:15
orz

>>820-824
惨めだからやめてくれ
827デフォルトの名無しさん:2008/03/29(土) 18:10:02
桜満開
828デフォルトの名無しさん:2008/03/29(土) 18:12:11
NHK様の公認用語なるぞ!
http://www.nhk.or.jp/special/libraly/05/l0011/l1105.html
829デフォルトの名無しさん:2008/03/29(土) 18:31:10
中身は流石にちゃんと書いてあるな。
ttp://www.nhk.or.jp/special/libraly/
830デフォルトの名無しさん:2008/03/29(土) 19:06:50
registoryとか?
831デフォルトの名無しさん:2008/03/29(土) 19:55:17
directry
832デフォルトの名無しさん:2008/03/29(土) 20:02:56
VOID CALLBACK TimerProc(HWND, UNIT, UINT, DWORD);

型名が必要 というエラーが出ます。
何故でしょうか?
833デフォルトの名無しさん:2008/03/29(土) 20:14:01
こうしたら?
void CALLBACK TimerProc(void*,unsingned int,unsingned int,unsingned int)
834デフォルトの名無しさん:2008/03/29(土) 20:20:14
同じエラーが出ました;
本の通りに書いてるのですが・・
835デフォルトの名無しさん:2008/03/29(土) 20:23:43
じゃCALLBACKの定義がないんじゃないの?
836デフォルトの名無しさん:2008/03/29(土) 20:29:33
>>833
×unsingned
○unsigned
837デフォルトの名無しさん:2008/03/29(土) 20:30:22
VOID CALLBACK TimerProc(HWND hWnd, UNIT uMsg, UNIT idEvent, DWORD dwTime)
{
//処理
}

case WM_CREATE:
SetTimer(hWnd, ATIMER, 100, TimerProc);

こんな感じなのですが、定義されてますよね?
838デフォルトの名無しさん:2008/03/29(土) 20:33:14
Cを勉強せずにCでWindowAPIを使おうとするあたりがいじらしい
839デフォルトの名無しさん:2008/03/29(土) 20:36:53
'void (__stdcall *)(void *,unsigned int,unsigned int,unsigned int)' 型は
'void (__stdcall *)(HWND__ *,unsigned int,unsigned int,unsigned long)' 型に変換できない(関数 __stdcall WndProc(HWND__ *,unsigned int,unsigned int,long) )

パラメータ 'lpTimerFunc' は void (__stdcall *)(HWND__ *,unsigned int,unsigned int,unsigned long) 型として定義されているので
void (__stdcall *)(void *,unsigned int,unsigned int,unsigned int) は渡せない(関数 __stdcall WndProc(HWND__ *,unsigned int,unsigned int,long) )

unsignedに直して、>>833にしてみると、エラーが上記のものに変わったので、
void CALLBACK TimerProc(HWND__ *,unsigned int, unsigned int, unsigned long)
にするとコンパイルできました
ありがとうございました

>>838
Cは勉強したつもりなのですが、足りないみたいです
すみませんでした
840デフォルトの名無しさん:2008/03/29(土) 20:40:27
DWORDってunsigned longだったんだ・・・
841デフォルトの名無しさん:2008/03/29(土) 20:56:14
>>840
なんだと思ってたんだ
842デフォルトの名無しさん:2008/03/29(土) 21:01:16
double word
843デフォルトの名無しさん:2008/03/29(土) 21:05:00
LibralyとかUNITとかunsingnedとか
スペルミスして遊ぶのが流行ってるのか?
844デフォルトの名無しさん:2008/03/29(土) 21:06:44
>>839
それってincludeするものが足りてないか、defineがおかしいってことでしょ?
本人がいいなら別にいいけど、正常な環境じゃないような。
845デフォルトの名無しさん:2008/03/29(土) 21:08:04
じゃあWORDって32bitなん?
846デフォルトの名無しさん:2008/03/29(土) 21:11:36
>>844
質問したものですが、>>843を見て>>832のUNITをUINTにするとコンパイルできました
unsigned int だからUINTなんですね・・・
これからは気をつけます・・
847デフォルトの名無しさん:2008/03/29(土) 21:13:45
>>846
そういうオチだったのか
848デフォルトの名無しさん:2008/03/29(土) 21:17:12
釣りだったと言ってくれw
と言いたいがプログラミング始めた頃なんてそんなもんだわ
849デフォルトの名無しさん:2008/03/29(土) 21:18:46
でも第3引数はあってる不思議
850デフォルトの名無しさん:2008/03/29(土) 21:51:45
>>837ではどっちもUNITになってる
851デフォルトの名無しさん:2008/03/29(土) 21:56:50
多分そのうちインテリセンスがGoogleみたいに「もしかしてUINT?」とか出してくれる時代がきっと来るさ
852デフォルトの名無しさん:2008/03/29(土) 21:58:31
>>851
想像したらペプシ吹いたwww
853デフォルトの名無しさん:2008/03/29(土) 22:38:47
もしかしてLibrary?
854デフォルトの名無しさん:2008/03/29(土) 23:03:42
開発コード名: yutori
855デフォルトの名無しさん:2008/03/29(土) 23:15:33
シュミレーションとか?
856デフォルトの名無しさん:2008/03/30(日) 00:52:01
UINTをキーワード登録して着色しとけばタイプミスなんてすぐに分かるだろ
857デフォルトの名無しさん:2008/03/30(日) 04:53:50
今のインテリセンスからして
頑張れば未定義のシンボルぐらい検出できる気がするがな
858デフォルトの名無しさん:2008/03/30(日) 07:12:46
それ何てVB?
859デフォルトの名無しさん:2008/03/30(日) 08:12:59
一方ロシアはlintを使った。
860デフォルトの名無しさん:2008/03/30(日) 14:11:58
//typo.h
typedef int itn;
typedef int nit;
typedef UINT IUNT;
typedef UINT UNIT;
typedef UINT UITN;
    :

//test.c
#include <windows.h>
#include "typo.h"

VOID CALLBACK TimerProc(HWND hWnd, UNIT uMsg, UNIT idEvent, DWORD dwTime);

こうやってタイプミスしそうな別名を大量に定義しておけばいい
861デフォルトの名無しさん:2008/03/30(日) 14:17:09
凄く頭が悪そうな解決方法でワロタw
862デフォルトの名無しさん:2008/03/30(日) 14:35:12
typo.h ってのが実にいいな
863デフォルトの名無しさん:2008/03/30(日) 14:41:55
どのあたりがいいのかわからん。
864デフォルトの名無しさん:2008/03/30(日) 15:02:20
つまんね
865デフォルトの名無しさん:2008/03/30(日) 15:47:23
ねんどまつ
866デフォルトの名無しさん:2008/03/30(日) 16:09:44
ねんどろいど見たけどスゲー
867デフォルトの名無しさん:2008/03/30(日) 16:27:17
typo.h ぐはぁぁぁぁwwwwww
868デフォルトの名無しさん:2008/03/30(日) 16:29:54
C言語で複数のDLLを呼び出す時のテクニック、みたいなものはありますか?
869デフォルトの名無しさん:2008/03/30(日) 17:06:52
LoadLibraryを呼びまくる
870デフォルトの名無しさん:2008/03/30(日) 17:19:26
テクニックって。
どういうのを期待してるのか書けよ。

普通に呼び出すしかねーだろ。
871デフォルトの名無しさん:2008/03/30(日) 18:23:26
HINSTANCE handles[4];
if (!LoadMultipleLibrary(4, &handles, "advapi32.dll", "comctl32.dll", "shell32.dll", "shlwapi.dll")) {
 exit(-1);
}

こういうAPIが欲しいんじゃね?
872デフォルトの名無しさん:2008/03/30(日) 18:30:20
いらね。
873デフォルトの名無しさん:2008/03/30(日) 18:47:23
template <UINT N>
struct LoadMultipleLibraryA
{
  HMODULE* modules;
  LoadMultipleLibraryA(HMODULE* modules)
    : modules(modules)
  {}
  LoadMultipleLibraryA<N-1> operator ()(const char* dllname)
  {
    if (!(this->modules[N-1] = ::LoadLibraryA(dllname)))
      exit(N);
    return LoadMultipleLibraryA<N-1>(this->modules);
  }
};

template <>
struct LoadMultipleLibraryA<0>
{
  LoadMultipleLibraryA(HMODULE*)
  {}
};

int main()
{
  HMODULE modules[4];
  LoadMultipleLibraryA<RTL_NUMBER_OF(modules)>(modules)
    ("ntdll.dll")("kernel32.dll")("user32.dll")("gdi32.dll");
  return 0;
}

練習
874デフォルトの名無しさん:2008/03/30(日) 18:48:15
(^ิ౪^ิ)kimoiyo
875デフォルトの名無しさん:2008/03/30(日) 18:53:15
もう遅延読込でいいよ。
876デフォルトの名無しさん:2008/03/30(日) 18:55:36
>>873
#define _ILFree_Ordinal  155
FARPROC funcs[4];
if (!GetMultipleProcAddress(hShell, 4, funcs, "SHGetFileInfoA", "SHGetSpecialFolderPathA", "SHGetPathFromIDListA", _ILFree_Ordinal)) {
 exit(-1);
}

さあ次はGetProcAddressも作るんだ
サンプルのような序数渡しにも対応すべし
877デフォルトの名無しさん:2008/03/30(日) 19:59:03
...使えば楽勝、とおもったけど、それでは64bitに対応出来ないことに気づく(w
878818:2008/03/30(日) 20:10:08
> &handles
アウト
879デフォルトの名無しさん:2008/03/30(日) 20:29:08
880デフォルトの名無しさん:2008/03/30(日) 21:58:44
ちょっとMicrosoft Visual C++ 2008 Express EditionでAPI使ってる人に聞きたいんだけどWPARAMにカーソル置いて
右クリック->定義に移動
でWinDef.hに移動した後、WPARAMの定義にあるUINT_PTRで右クリックしたらVC++がハングアップする人いる?
UINT_PTR以外でもなるけど絶対ハングアップするから再インストールしたけど意味なかった。。。
それに普通に使ってても右クリックでハングする事もあるしww
これ、なんていう仕様?
881デフォルトの名無しさん:2008/03/30(日) 22:01:45
SPが出てないIDEなんてそんな物だろ
882デフォルトの名無しさん:2008/03/30(日) 22:30:42
>>880
やってみたけどハングしなかった。ほかに条件があるみたいだな。
883デフォルトの名無しさん:2008/03/30(日) 22:31:39
>>880
2008StdのC++/CLIプロジェクトにて現象は確認できず。
x64のXPとか使ってない? あれとVS2008の組み合わせは入力周りが鬼門らしいぜ。
884デフォルトの名無しさん:2008/03/30(日) 22:32:41
Boostの型でそういうことが起こったことがあるけど、
複雑にテンプレートを使っているほうが悪いと諦めている。
885デフォルトの名無しさん:2008/03/30(日) 23:06:39
>>880
"IntelliSenseを更新してます"って表示してる時だったらある
886880:2008/03/30(日) 23:27:29
>>881-885
情報ありがとう
俺もつい最近ハングが頻繁に起こるようになったから何か原因があると思うんだけど…ぐぐっても関連した情報とかないし
ちょっと調べてみたらハング時にタスクマネージャーで実行中のアプリケーションを見たらVC++が2つあってプロセスを確認すると1つはVCExpress.exeで1つはexplorer.exeなんだよな…
とりまexplorer.exeが怪しいからもうちょっと状態調べてみます
レスくださった人達ありがとうww
887デフォルトの名無しさん:2008/03/30(日) 23:47:21
名前付きパイプの転送速度が遅く、
1000BASE-Tで接続したLAN上の別のPCに10MB送るのに5秒くらいかかっています。

これを1秒くらいに短縮したいのですが、名前付きパイプを使うのをやめる前に、
名前付きパイプの速度を調べたことのあるかたにお伺いします。

10MBを5秒というのは普通ですか? それとも遅いほうですか?
888デフォルトの名無しさん:2008/03/30(日) 23:59:51
>>887
1000BASE-Tの規格に対してはすこぶる遅いが、
データをハードディスクから読み出す時間がかかってるんじゃないか?
ハードディスクから読み込まないでデタラメなデータを送信してみ?
889デフォルトの名無しさん:2008/03/31(月) 00:34:46
>>888
今時のHDDなんて80MB/s出るぜ
890887:2008/03/31(月) 00:37:21
>>888
メモリ→メモリです。

同一PC上でも
\\hostname\pipe\pipename
だと4秒くらいかかります。

\\.\pipe\pipename
だと一瞬です。
891デフォルトの名無しさん:2008/03/31(月) 01:22:23
hostnameの解決に時間掛かってるとか?Wiresharkあたりでネットワークパケットをキャプってみれば?
892887:2008/03/31(月) 02:36:18
結果から先に。
0.3秒に短縮できました。
ありがとうございました。

Windows Server付属のネットワークモニタで確認したところ、
Read要求への返答は即座に返ってきているが、次のRead要求を出すまでに妙な間がありました。
また、一回にRead要求するサイズが4292バイトと中途半端でした。

ふと思いついて、↓のコードのようにReadFileの第三引数の値を小さく制限してみたら、速くなりました。

*lpNumberOfBytesRead = 0 ;
DWORD dwRemainSize = nNumberOfBytesToRead ;
BYTE* p = (BYTE*)lpBuffer ;

while(dwRemainSize != 0) {
DWORD dwThisTimeReadDoneSize ;
// if (ReadFile(hFile, p, dwRemainSize, &dwThisTimeReadDoneSize, NULL)) { // 変更前
if (ReadFile(hFile, p, __min(dwRemainSize, 4096), &dwThisTimeReadDoneSize, NULL)) { // 変更後
dwRemainSize -= dwThisTimeReadDoneSize ;
p += dwThisTimeReadDoneSize ;
*lpNumberOfBytesRead += dwThisTimeReadDoneSize ;
} else {
return FALSE ;
}
}
893デフォルトの名無しさん:2008/03/31(月) 02:59:55
自分のウインドウを表示させたまま下にあるウインドウの画像はどうやったら取得できますか?
894デフォルトの名無しさん:2008/03/31(月) 04:07:23
PrintWindow
895デフォルトの名無しさん:2008/03/31(月) 05:33:12
>>894
それだと特定のウインドウしか取得できませんよね?
896デフォルトの名無しさん:2008/03/31(月) 05:42:35
なんとキレイな条件のあとだし
897デフォルトの名無しさん:2008/03/31(月) 05:51:37
EnumWindowsで列挙→GetWindowPlacementして自分で合成

シラネ
898デフォルトの名無しさん:2008/03/31(月) 06:21:37
>>893
一瞬だけ自分のウィンドウを非表示にする、ってわけにはいかんの?
899デフォルトの名無しさん:2008/03/31(月) 10:20:51
>>898
それだと一瞬ちらつきますよね?
900デフォルトの名無しさん:2008/03/31(月) 10:23:53
DWMサムネイルAPI

Vista以降のDWM有効になっている環境でしか使えない
901デフォルトの名無しさん:2008/03/31(月) 11:09:13
EnumWindows→PrintScreen
じゃできないのかな
902デフォルトの名無しさん:2008/03/31(月) 11:23:27
>>901
見本作ってよ
903デフォルトの名無しさん:2008/03/31(月) 12:03:34
APIで組むのめんどくさい
MFCでもめんどくさいけど
904デフォルトの名無しさん:2008/03/31(月) 12:18:40
MFCはプログラムが長くなるとデバッグしんどい。全体像がつかみにくい。
コード量が少ない分、生産性は上がるかもしれないが、融通が利かないプログラムになる。
俺ははAPIの方が好きだ。プログラム量は多くなるけど。
905デフォルトの名無しさん:2008/03/31(月) 12:19:34
そこでWTLですよ
906デフォルトの名無しさん:2008/03/31(月) 12:23:55
>>902
EnumWindows+コールバックで目的のウィンドウ探して
コンパチブルDCとビットマップ作って
PrintWindowで描画する

これをC言語で書くだけ
907デフォルトの名無しさん:2008/03/31(月) 12:33:39
>>868はwinstlあたりを見てみるといいんでないかと
908デフォルトの名無しさん:2008/03/31(月) 13:10:35
>>900
>>893じゃないけど、ちょっと興味を持ったので試してみたが、これ面白いな。
DirectXで描画されているゲームのウインドウを別のウインドウで隠してみても、問題なく表示できるし、
しかも、ゲームもサムネイルも、一切フレーム落ちしない。
いい時代になったもんだ。

でも、トップレベルウインドウじゃないとダメって制限はちょっと気に食わないな。
予想だけど、サムネイルの実装が、DWMの各ウインドウごとのサーフェイスに直接描画しているからなんだろうか。
909デフォルトの名無しさん:2008/03/31(月) 13:14:20
2k/XPでもレイヤードウィンドウにするとDWMとほぼ同じ状態になるけど意外と知られていないのかな?
910デフォルトの名無しさん:2008/03/31(月) 13:15:42
他人のウィンドウをレイヤードにするわけにいかんだろ。
911デフォルトの名無しさん:2008/03/31(月) 13:20:01
なんで?
勝手にレイヤードウィンドウにすると動かないソフトなんてAeroGlassでもまともに動かないと思うが
912デフォルトの名無しさん:2008/03/31(月) 13:23:00
テキストを選択状態にしたときの青いフォーカスの色をAPIからゲットする方法が分かりません。どなたか教えていただけないでしょうか?
913デフォルトの名無しさん:2008/03/31(月) 13:23:48
GetSysColor
914デフォルトの名無しさん:2008/03/31(月) 14:32:05
Vistaで出るのはタスクバーのサムネイル用なのか
915デフォルトの名無しさん:2008/03/31(月) 14:38:05
で?
916デフォルトの名無しさん:2008/03/31(月) 14:40:59
DWMのサムネイルAPIは、アプリ側で処理を実装して中身を差し替えることもできる
(プレーヤソフト等で描画内容だけ返すようにするとか)
から、ウィンドウ全体のキャプチャとして必ず使えるわけでもないんで注意
917デフォルトの名無しさん:2008/03/31(月) 15:21:22
>913
どうもありがとうございました。
918デフォルトの名無しさん:2008/03/31(月) 15:57:10
hBitmap=(HBITMAP)LoadImage(hInstance,
"C:\\Program Files\\DevStudio\\MyProjects\\test\\test.bmp",
IMAGE_BITMAP,0,0,LR_LOADFROMFILE);

これだとOK ファイルから画像が読み込める。
だけど、

hBitmap=(HBITMAP)LoadImage(hInstance,
"IDB_BITMAP1",IMAGE_BITMAP,0,0,
LR_CREATEDIBSECTION);

これだとリソースから画像が読み込めない。
#include "resource.h" も入れてあるし
  IDB_BITMAP1  というリソースも
入ってる。

LR_CREATEDIBSECTIONを 0 にしたり
"IDB_BITMAP1" の前に TEXTとか書いたりもしたが駄目。
何でだろう? (VC++ 5.0)
919デフォルトの名無しさん:2008/03/31(月) 16:04:57
> VC++ 5.0
こんな古いコンパイラ使ってる奴がそんな初歩的な事も知らないなんて
どういう訳なのか小一時間問い詰めたい
920デフォルトの名無しさん:2008/03/31(月) 16:08:50
MAKEINTRESOURCE
921918:2008/03/31(月) 16:16:27
hBitmap=(HBITMAP)LoadImage(hInstance,
MAKEINTRESOURCE(IDB_BITMAP1),
IMAGE_BITMAP,0,0,0);

って事でいいのかな?
ちなみに、エラーや警告は0です。
くだらん質問ですまん。
922918:2008/03/31(月) 16:17:58
921でやってみたが
やっぱり if(hBitmap==NULL)
で調べるとロード出来てないみたいだ
923デフォルトの名無しさん:2008/03/31(月) 16:18:13
>#include "resource.h" も入れてあるし
>  IDB_BITMAP1  というリソースも
>入ってる。

"IDB_BITMAP1" というリソースが入ってないのが原因です。
"IDB_BITMAP1"で作るか、IDB_BITMAP1のままなら >>920

ほんとに初歩的な質問
924デフォルトの名無しさん:2008/03/31(月) 16:22:52
VC++5でWin32入門(笑)
10年前からタイムスリップしてきたのか?w
925デフォルトの名無しさん:2008/03/31(月) 16:25:10
NULLが返ってきてたらGetLastErrorで見てみては
926デフォルトの名無しさん:2008/03/31(月) 16:29:56
Cで
モジュール化の際、何か注意すべき事はありますか?
927デフォルトの名無しさん:2008/03/31(月) 16:31:07
>>921はコンパイル完了直後か。
で実行してから>>922のレス、と。

その間2分足らず。もう少し考えてみろと言いたい。
928デフォルトの名無しさん:2008/03/31(月) 16:31:13
>>926
ネタにしてはくだらん
マジならスレ違い
929デフォルトの名無しさん:2008/03/31(月) 17:35:37
VC++5.0でWindowsプログラミング入門
とかいう類いのタイトルの糞本を手にして、
がんばってVC++5.0をピーコしてきたんじゃね?

タイトルやサブタイトルに
特定のVCのバージョンを書いてるような
そういう本は十中八九、糞本だ。
930デフォルトの名無しさん:2008/03/31(月) 17:37:09
コンソールアプリはどうしてウインドウを共有(というかコマンドプロンプト上で動作)することが出来るんですか?
931デフォルトの名無しさん:2008/03/31(月) 17:44:15
そこにアプリはいません。共有してなんかいません。
932デフォルトの名無しさん:2008/03/31(月) 18:00:08
>>930
PEヘッダにコンソールって書いてあって、
与えられたコンソールを握ってるから。
933デフォルトの名無しさん:2008/03/31(月) 18:09:42
>>931
コンソールアプリの中でコンソールアプリを呼び出しても新しいウインドウは現れないじゃないですか、あれが不思議で・・・。
>>932
PEヘッダですか、調べてみます。
ありがとうございました。
934デフォルトの名無しさん:2008/03/31(月) 18:56:05
「新しいウインドウ」とかそういう概念が存在する以前からの仕組みだから・・
935デフォルトの名無しさん:2008/03/31(月) 19:02:22
>>933
コンソールのウィンドウ=昔のパソコンのディスプレイ
他のプログラム起動するたびにディスプレイそのものがいくつも出ては来ないだろ
そういう挙動(って言うほどのもんじゃないが)をシミュレーションしてんだろ
936デフォルトの名無しさん:2008/03/31(月) 19:30:35
スタートアップルーチンのソースを読んでみ。

mainあるいはWinMainはエントリポイントではなく、
エントリポイントにはスタートアップルーチンがあり、
OSではなくアプリケーション側で、
様々な初期化を行った後に、
mainあるいはWinMainを呼び出している。

そのスタートアップルーチンで、
コンソールまわりの処理を少しやってる。
そのコードや、そこで使われているWin32APIを見れば、
少しは見えてくるかもしれん。
937デフォルトの名無しさん:2008/03/31(月) 19:34:31
>>933
コンソールプログラム自体にはウィンドウを開く処理は全く入ってない。
938デフォルトの名無しさん:2008/03/31(月) 20:46:12
PEの中に区別があるということは、
CreateProcessあたりがそれを見て制御しているくらいのことは
容易に想像できるだろ?
939デフォルトの名無しさん:2008/03/31(月) 20:50:05
>936
スタートアップルーチンではすでに遅いと思うがどうか。
940デフォルトの名無しさん:2008/03/31(月) 20:55:45
リンカで指定する/subsystemで決まる
941デフォルトの名無しさん:2008/03/31(月) 21:10:21
>>938
ていうかCreateProcessの使い方に、コンソールの継承の話があったような気がする。

>>939
すでに遅いけど、コンソールに関するAPIを呼んでる。

PEにWin32GUIと書いてあれば、
コンソールを持つプロセスから起動しても、既存のコンソールからは切り離される。(別のコンソールを開くことは可能)

PEにWin32CUIと書いてあれば、
コンソールを持つプロセスから起動すると、既存のコンソールに結びつけられる。(別のコンソールを開くことは可能)
コンソールを持たないプロセスから起動すると、新しいコンソールに結びつけられる。

コマンドライン引数によって、GUIとCUIが切り替わるような代物を作る場合、
PEはWin32CUIにしておき、コマンドライン引数を見てから、GUIならコンソールを切り離す。
CUIならコンソールを使い続ける。
コンソールを持たないプロセスから起動したときに、短時間だがコンソールが作られて画面に出るのが、かっこわるいが。
942デフォルトの名無しさん:2008/03/31(月) 21:32:56
MessageBox(hWnd,TEXT("ダイアログボックス1")
  ,TEXT("ABOUT"),MB_OK);
でダイアログ出したら親フォームの後ろに隠れて
操作できなくなったりするのはなぜでしょう?
ALTキー押すと前面に出てくるんですけど
自分で作ったDialogをDialogBoxマクロで表示させれば
ちゃんとModalで前に出るんですけど……
VS2008@Vista64です
943デフォルトの名無しさん:2008/03/31(月) 21:44:25
第一引数のhWndが正しいことを確認してみて。
NULLとか渡していると孤児になるから、
Zオーダーが後ろになってしまってもおかしくない。
944デフォルトの名無しさん:2008/03/31(月) 21:55:35
>941
はあ。そーゆーのはmsdev.com方式でやるもんだとばっかり思ってたけど。
msdev.comはSubsystem:consoleにしておき、msdev.exeはsubsystem:windowsにする。
cmd.exeからパス経由で"msdev"で起動なら、comがexeより優先されるので問題ない。
関連づけとか、ショートカットとか、そのあたりにはフルでmsdev.exeを登録しとけば
コンソールが一瞬出てくるとか云う話もない。
945デフォルトの名無しさん:2008/03/31(月) 21:55:52
>>941
> すでに遅いけど、コンソールに関するAPIを呼んでる。
スタートアップルーチンでの初期化処理はstderrとかの実体にデータをセットしてるだけで
コンソール云々は関係ないと思われ
Cランタイムライブラリを一切リンクしないなら↓がコンソールアプリの最小コードになる

#include <windows.h>
#pragma comment(linker, "/subsystem:console /entry:EntryPoint")
int __cdecl EntryPoint()
{
  DWORD d;
  WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), "TEST\n", 5, &d, NULL);
  return 0;
}
946デフォルトの名無しさん:2008/03/31(月) 22:10:46
>>943
hWndはウォッチで確認してみてもNULLじゃないんですね
ウインドウプロシージャの中で表示してるんですけど
プロシージャ内でも
DestroyWindow(hWnd);とかは普通に動いてます
947デフォルトの名無しさん:2008/03/31(月) 22:46:21
>>944
msdev.comってそういう用途のためにあったのか
長い間VC6使ってるけど知らなかった
948デフォルトの名無しさん:2008/03/31(月) 23:34:57
PEヘッダのIMAGE_OPTIONAL_HEADER32構造体のSubsystem変数を見てCUIだったら
Windowsの中の人がプログラムがディスプレイだと思ってるどこかへの標準入出力をcmd.exeにリダイレクト?するわけですか・・・
DOS用スタブプログラムというので未だにDOSとの互換性残してるんですね
949デフォルトの名無しさん:2008/03/31(月) 23:40:30
20年前のRPGが今でも動く変態OSだからな
950デフォルトの名無しさん:2008/04/01(火) 00:44:50
シムシティのために検出コードを仕込む変態OSでもある
951デフォルトの名無しさん:2008/04/01(火) 03:19:04
質問です。
BGMを流しつつ効果音を鳴らしたいのですが、
リソース内のwavを重ねて再生するには、
一度ファイルに吐いてmciSendStringするしかないですか?

sndPlaySoundでは重ねられないし、
mciSendStringはリソースが直に使えないし…。

DirectSoundを使えばよいようですが、
DirectXに頼らない方向で行きたいので。
952デフォルトの名無しさん:2008/04/01(火) 03:49:21
>>951
素直にDirectSoundを使おうぜ。
953デフォルトの名無しさん:2008/04/01(火) 03:53:21
DirectSoundをサポートしていないような環境では、
複数の音を同時に鳴らすこと自体ができないかも。

結局、多くの環境で安定して動作するためには、
自前でwaveをmixして1つの音として出すしかなく、
そうなれば、waveOutWriteとかの出番でしょう。
954デフォルトの名無しさん:2008/04/01(火) 04:06:26
>>952,953
レスどうもです。。

やっぱりDirectSound使えってことなんですね。
わざわざ音を加算してやる…のも楽しそうだけど。

DirectXを使うと、作ったものを配布するときに
「DirectXn.nが必要です」ってなるのが嫌なので避けてたんですが、
どうやらある程度は標準で乗ってるんですね。なんという無知。

DirectSoundくらいならいまどきのwindowsであれば、
特に落とす必要もなく動くってことですよね。

素直に使います。
955デフォルトの名無しさん:2008/04/01(火) 04:11:41
前にもココで教えてもらったんですが、忘れてしまってもう一度質問させてください

インターネットのページをダウンロードしてファイルに保存する便利な関数があったと思うんですが、関数名を教えてください
956デフォルトの名無しさん:2008/04/01(火) 04:29:45
InternetDownLoadFiles
957デフォルトの名無しさん:2008/04/01(火) 04:45:32
URLDownloadToFileな
958デフォルトの名無しさん:2008/04/01(火) 04:58:00
>>957
おお
ありがとうございました。
何度見ても覚えられない関数の一つ
959デフォルトの名無しさん:2008/04/01(火) 05:01:05
>>956
このスレで時々そうやって茶化してるのは、お前か。
960デフォルトの名無しさん:2008/04/01(火) 06:09:14
なんだCOMか
961デフォルトの名無しさん:2008/04/01(火) 09:14:38
EDITコントロールで選択されている文字の選択状態が解除になった時のメッセージってないのでしょうか?
962デフォルトの名無しさん:2008/04/01(火) 10:09:22
EN_SENTAKU_KAIJO
963デフォルトの名無しさん:2008/04/01(火) 10:13:03
リッチエディットには、EN_SELCHANGEってあったけど
EDITコントロールでは使えないとおもふ
964デフォルトの名無しさん:2008/04/01(火) 10:47:38
>>963
回答ありがとうございます
できないことがわかっただけでも収穫です
965デフォルトの名無しさん:2008/04/01(火) 10:49:25
>>951
その昔WAVEMIX.DLLとかいうのが存在したのを思い出した
966デフォルトの名無しさん:2008/04/01(火) 11:07:58
Plus!95のピンボールが使ってたっけ
967デフォルトの名無しさん:2008/04/01(火) 12:37:31
CreateCompatibleDCで作成したデバイスコンテキストにSelectObjectでビットマップを割り当てた場合、
old = (HBITMAP)SelectObject(...)でオリジナルを退避させて、開放前に元に戻す必要ありますか?
968デフォルトの名無しさん:2008/04/01(火) 12:45:21
あります
またはSaveDC/RestoreDC
969デフォルトの名無しさん:2008/04/01(火) 12:46:01
ありがとうございます
970デフォルトの名無しさん:2008/04/01(火) 13:52:06
削除することが分かっているDCなら元に戻す必要ないんじゃね?
971デフォルトの名無しさん:2008/04/01(火) 14:19:27
選択された状態のビットマップは削除失敗するかもしれないので順番に気をつける必要がある
Windows NT 3.xあたりの頃のSelectObjectの日本語版の説明には描画完了後に必ず元に戻せという指示があった
972デフォルトの名無しさん:2008/04/01(火) 14:36:26
CreateCompatibleDC時に最初に入っていた1x1ビットマップって
選択外してDCだけ削除するとリソースリークしない?
973デフォルトの名無しさん:2008/04/01(火) 14:57:11
元に戻せと書いてあるなら素直に従ってればいいだろ
余計な事をしてもバグの元凶になるだけだろうが
974デフォルトの名無しさん:2008/04/01(火) 15:03:46
何処かで読んだ記憶があったので調べてみた
初期選択されている1x1 モノクロビットマップはGetStockObjectでは取得できないもののストックオブジェクトの一種である事のソース
ttp://msdn2.microsoft.com/en-us/library/ms969928.aspx
自分はWindows3.1からの癖でこまめにSelectObjectで戻してDeleteObjectしているが
975デフォルトの名無しさん:2008/04/01(火) 15:25:49
Created: March 20, 1992
こんな古い記事が残っているのがビックリ
976デフォルトの名無しさん:2008/04/01(火) 15:39:32
確かにストックオブジェクトの一種みたいだな
2000で適当に試してみたら GetStockObject(21) で返ってくるハンドルと同じだった
977デフォルトの名無しさん:2008/04/01(火) 16:00:16
もう一つの隠しストックオブジェクトGetStockObject(20)は標準のカラースペースのようだな
978デフォルトの名無しさん:2008/04/01(火) 16:19:24
LOGCOLORSPACEにGetObjectしてみたら標準のカラースペースではなくsRGBだった
979デフォルトの名無しさん:2008/04/01(火) 16:53:44
なんでMSDNってこんなに糞なの
探し辛ええええええ
980デフォルトの名無しさん:2008/04/01(火) 18:54:28
>>979
site:msdn2.microsoft.com付けてググるといいよ。
981デフォルトの名無しさん:2008/04/01(火) 21:50:20
Window のサイズ(OSが表示する画面のフレームを含めた)を取得する方法が分からないのですが、教えていただけないでしょうか?Vista や XP のデザインの違いによる全体のサイズを知りたいのです。
982デフォルトの名無しさん:2008/04/01(火) 21:53:08
GetSystemMetrics とかそんな名前だったような。
983デフォルトの名無しさん:2008/04/01(火) 21:53:45
AdjustWindowRectやAdjustWindowRectEx
984デフォルトの名無しさん:2008/04/01(火) 22:29:47
とりあえずGetWindowRectかGetWindowRgn?
985デフォルトの名無しさん:2008/04/01(火) 22:31:20
AdjustWindowRect(Ex)ってメニューが二段以上になる場合を考慮できないのがなぁ
つうかWin標準のメニューもIEのメニューもどきみたいに右端に >> が出ればいいのに
986デフォルトの名無しさん:2008/04/01(火) 23:27:44
クライアントレクトとウィンドウレクトで出せるんじゃないか?
987デフォルトの名無しさん:2008/04/02(水) 00:00:34
基本的に与えられたクライアント領域の外のことについては触れてはいけない。
988デフォルトの名無しさん:2008/04/02(水) 01:01:19
>>985
あれはシェブロンっていうコントロールだよ。
機能的に単純にメニューバーと置き換えることが出来ないので、
標準にできないんだと思う。
989デフォルトの名無しさん
>>988
それは知ってるよ。っていうかシェブロンはRebarの機能の一つ

メニューが二段以上になるのが気に食わないからWTLのコマンドバーをRebarに乗せて使ってるけどこれもバグ多いしなぁ