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

Win32API質問箱 Build20

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG
スレ立てるまでもない、Win32APIについての質問はこちらへどうぞ。
ただし、最新スレくらいは質問する前に検索してくれ。というかしろ。

過去スレなどのリンクはたぶん>>2-5くらい。
0002デフォルトの名無しさんNGNG
- 過去スレ
Build19:http://pc5.2ch.net/test/read.cgi/tech/1084697545/
Build18:http://pc5.2ch.net/test/read.cgi/tech/1081702990/
Build17:http://pc5.2ch.net/test/read.cgi/tech/1077470361/
Build16:http://pc2.2ch.net/test/read.cgi/tech/1073830065/ ★
Build15:http://pc2.2ch.net/test/read.cgi/tech/1069339866/ ★
Build14:http://pc5.2ch.net/tech/kako/1065/10653/1065328397.html
Build13:http://pc5.2ch.net/tech/kako/1059/10595/1059549320.html
Build12:http://pc5.2ch.net/tech/kako/1056/10560/1056033645.html
Build11:http://pc5.2ch.net/tech/kako/1052/10526/1052651750.html
Build10:http://pc5.2ch.net/tech/kako/1047/10478/1047819779.html
Build9:http://pc5.2ch.net/tech/kako/1044/10449/1044929160.html
Build8:http://pc5.2ch.net/tech/kako/1040/10409/1040964626.html
Build7:http://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
Build6:http://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
Build5:http://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
Build4:http://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
Build3:http://pc.2ch.net/tech/kako/1017/10170/1017072275.html
Build2:http://pc.2ch.net/tech/kako/1006/10067/1006783012.html
Build1:http://pc.2ch.net/tech/kako/991/991576947.html
(★は「いやー ごめんなさい。」に巻き込まれた模様
0003デフォルトの名無しさんNGNG
- MSDN Online
http://www.microsoft.com/japan/msdn/default.asp
- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/index.html
- Platform SDK Update
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
- Google
http://www.google.com

Win32 API入門
http://black.sakura.ne.jp/~third/system/winapi/win.html
WIN32 Programming
http://www7.plala.or.jp/keny01/win32/
Win32 SDK Programming
http://usr_vogel.at.infoseek.co.jp/Win32SDK/index.html
WindowsSDK入門
http://kerochan.no-ip.com/vcsdk/letsprog/letsprog-index.htm
0004デフォルトの名無しさんNGNG
4なら海外旅行
0005デフォルトの名無しさんNGNG
行ってらっしゃい
0006デフォルトの名無しさんNGNG
>>1
乙。
0007デフォルトの名無しさんNGNG
>>4
土産よろしく。
00084 ◆MwGQyQRf/o NGNG
今からチケット買ってくるよ(;´Д`)
0009pd32c6c.tokynt01.ap.so-net.ne.jpNGNG
とりあえず、まだ日本。
0010デフォルトの名無しさんNGNG
どうでもいいからきえろ
0011デフォルトの名無しさんNGNG
IShellFolderのインスタンスの指すフォルダかアイテムIDリストを取得する方法ってありませんか?
0012デフォルトの名無しさんNGNG
GetDislpayNameOfの第一引数にNULL
MSDNに書いてないから、使っていいのかは知らん
0013デフォルトの名無しさんNGNG
SHGDN_FORPARSING以外を指定した場合にエラーになるからだめみたいでですね
0014デフォルトの名無しさんNGNG
皆さんはどうやってあんなに沢山のAPIを覚えたんですか?
一つ一つテストプログラムを作っては、コンパイル・テスト
したんですか?
0015デフォルトの名無しさんNGNG
そうだよ。
だから藻前もがんがれ。
0016デフォルトの名無しさんNGNG
>>15
一つ一つのAPI(関数)専用テストプログラム?
0017デフォルトの名無しさんNGNG
そうだよ。
だから藻前もがんがれ。
0018デフォルトの名無しさんNGNG
>>13
>SHGDN_FORPARSING以外を指定した場合にエラーになるからだめみたいでですね

そいつを SHGetDesktopFolder で得た IShellFolder で ParseDisplayName してやれば
ITEMIDLIST が得られるような気がするけど。
0019デフォルトの名無しさんNGNG
>>14
覚えない。
基本的なところだけはもちろんおさえておくが、
必要になったときにググる。
MSDNを使うよりもググったほうがだいたいは楽。
0020デフォルトの名無しさんNGNG
fgets()の使い方を完全に忘れてて今日ぐぐったw
0021デフォルトの名無しさんNGNG
>>14
ヒマなときに help のキーワード一覧とかをだらーっと見てる。
Path ほにゃらら系みたいな、「自分でも書けるから必要ないんだけどあれば使う」APIとかは
「何かをするのにやり方が分からなくて Google で調べる」みたいな感じじゃ出会えないから。
0022デフォルトの名無しさんNGNG
>>14
たくさんあるけど普段使うのはかなり限られてくる。
それにCreateWindowとCreateWindowExみたいにほぼ同じ機能のものも相当あるし、
それとDestroyWindowみたいに対になるものもこれまた相当ある。
0023デフォルトの名無しさんNGNG
MSDNヘルプだと「〜Functions」とかが結構役に立つ。
WindowsのAPIってようするに単なるライブラリだから、ジャンル分けすればそう多くないんだよな。
0024デフォルトの名無しさんNGNG
>>23
つかAPIを直で叩かせずにオブジェクトライブラリにすりゃいいのに。
0025デフォルトの名無しさんNGNG
>>24
WinFX
002623じゃないけどNGNG
>>24
C言語からじゃ利用でけへんでないか
0027デフォルトの名無しさんNGNG
>>24
このスレじゃそれは言っちゃダメ :-)
0028デフォルトの名無しさんNGNG
IE上で、ActiveXコントロールを使って
submitイベントをフック(メッセージのフックか?)したいんですが
どなたかやったことありますか?
0029デフォルトの名無しさんNGNG
あのVisualC++を買おうと思ってるんですがAPIとかちゃんとヘルプにありますか?
ドットネットとかに変わって今までと何か変わりましたか?
0030デフォルトの名無しさんNGNG
>>24
マジっすか。それは(・∀・)イイ!!

>>26
C++はどう?

>>27
(´・ω・`)
0031デフォルトの名無しさんNGNG
>>18
レスどうもです、とりあえずはそれでできるのでしょうが、
MSDNにNULL指定についての記述が無いのと
他のフラグでエラーが出る事から見て
「たまたま」動いているという気がしなくも無いので・・・
0032デフォルトの名無しさんNGNG
マウスカーソルをShowCursorで非表示にしようと思って使ったのですが
ウィンドウ内しかカーソル非表示にされません。
完全に非表示にするにはどのようにすればいいのでしょうか?
0033デフォルトの名無しさんNGNG
マウスのコードを抜く
0034デフォルトの名無しさんNGNG
>>32
勝手なことすんなヴォケ
0035デフォルトの名無しさんNGNG
良い反応だ
003632NGNG
>>33
(´・ω・`)

>>34
もちろんマウスが動いたりしたら表示しますので教えてください
0037デフォルトの名無しさんNGNG
>>36
ソフ板の例のスレの人か?
マウスフックとウインドウフック入れて
WM_SETCURSORを乗っ取り。
0038デフォルトの名無しさんNGNG
>>37
ありがとうございます

> ソフ板の例のスレの人か?
多分違う人です
0039デフォルトの名無しさんNGNG
>>32
ウインドウ内からマウスカーソルがでられないようにする
0040デフォルトの名無しさんNGNG
テンプレにある
WindowsSDK入門
http://kerochan.no-ip.com/vcsdk/letsprog/letsprog-index.htm
が見れないのは漏れだけですか?
(´・ω・`)
0041デフォルトの名無しさんNGNG
うちも見れんな
0042デフォルトの名無しさんNGNG
>>40
鯖ごと寝ているんじゃないか?

0043デフォルトの名無しさんNGNG
マッピングモードをMM_LOMETRICにして、画面に2cm角の格子を書いています。
その格子に合わせてMoveWindowでコントロールを配置しようとしていますが巧くいきません。
MoveWindowの引数を論理単位(ウィンドウ)で配置できないからです。

座標を計算しようとして、

POINT pt;
 int x = GetDeviceCaps(hdc,LOGPIXELSX);
 pt.x = x / 254;
 int y = GetDeviceCaps(hdc,LOGPIXELSY);
 pt.y = y / 254;

LPtoDP(hdc,(LPPOINT)&pt,2);

とすると微妙にズレが出てしまいます。

ScrollWindowExなどの引数もそうですが、引数がビューポートで指定している関数を使う時、
結果が論理単位になるようにする巧い方法ってありますか?
宜しくお願いします。
0044503ですNGNG
WINAPIについての良い入門書があれば教えてください。
0045デフォルトの名無しさんNGNG
>>44
お約束だがペゾルド
0046デフォルトの名無しさんNGNG
テンプレに必読書も入れといてくれ。
・Advanced Windows
0047デフォルトの名無しさんNGNG
>>45
APIの入門書なら取り敢えずAPIバイブルの方がいんじゃないかなぁ?
PlatformSDKでもいいけど。

ペゾルドは入門を終えて更にステップアップしたい時に最適な気がする。
0048デフォルトの名無しさんNGNG
black.sakura〜の例のサイトが個人的には入門に一番よかった。
猫より2段ぐらい。ネットの文献である程度基礎を掴んでから本買った方が何かと便利な気がする
0049デフォルトの名無しさんNGNG
俺も猫よりWisdom派かな。
本は買わなくてもいけるけど、買ったほうがいいのかもしれない。
0050デフォルトの名無しさんNGNG
適当な背景に対してフォント文字列を描画するのにDrawText関数を使ってみたのですが
矩形ごと書き込まれますね(白く浮いてしまう)

文字形状だけを背景に対して上書きする方法を教えてください
(関数名、キーワードだけでも結構です)
よろしくおねがいします
0051デフォルトの名無しさんNGNG
SetBkMode
005250NGNG
>>51
ありがとうございます
天才プログラマーですね、頼もしいです
0053デフォルトの名無しさんNGNG
猫でもわかるの161章にある
LRESULT CALLBACK MyHookProc(int nCode, WPARAM wp, LPARAM lp)
{
char str[256];

if (nCode < 0)
return CallNextHookEx(hMyHook, nCode, wp, lp);
if (wp >= 0x30 && wp <= 0x39) {
wsprintf(str, "hMyHook = %d", hMyHook);
MessageBox(NULL, str, "MyHookProc", MB_OK);
return CallNextHookEx(hMyHook, nCode, wp, lp);
}
wsprintf(str, "キー入力はインターセプトされました\n フックハンドル= %d",
hMyHook);
MessageBox(NULL, str, "インターセプト", MB_OK);
return TRUE;
}
これを実行すると
二重で動作するんですがどうしたらよいでしょうか。
0054デフォルトの名無しさんNGNG
よくわかんねーが、キーボードフックか?
WM_KEYDOWNとKEYUP
005553NGNG
ttp://www.kumei.ne.jp/c_lang/sdk2/sdk_161.htm
此処のDLL処理なんですが
DLLのプロシージャ内でWMメッセージは
取得できるのでしょうか
0056デフォルトの名無しさんNGNG
WMは取得できないな。
繊維状態としてLPARAMのLSBで取得できる
005753NGNG
>>56
具体的にどのようなことでしょうか?
0058デフォルトの名無しさんNGNG
質問です。

必要な時にLoadLibraryでモジュールをロードして、
用件が済んだらFreeLibraryでモジュールをアンロードすると、
タスクマネージャ等で見る所のメモリ使用量は、
モジュールをロードした直後に増えたまま、
アンロードしてもメモリ使用量は低下しません。

また、ダイアログボックス等を使用した場合でも、
EndDialogないしDestoryWindowしても、
メモリ使用量は低下しないようです。

キャッシュのような機構が働いている物と考えられますが、
不要になったメモリを明示的に開放する事は出来ないのでしょうか?
0059デフォルトの名無しさんNGNG
ダイアログ上のリストビューをサブクラス化しようとしています。
SetWindowLong 関数を呼ぶと、戻り値で判断する限り失敗していないのですが、
設定したプロシージャにメッセージがきません。
どこかで凡ミスしているのかもしれませんが、何か考えられる原因はありますでしょうか?
0060デフォルトの名無しさんNGNG
自プロセス内なのか外なのか
0061デフォルトの名無しさんNGNG
>>59
SetWindowLongは自プロセスのウィンドウしかサブクラス化出来ません。
0062デフォルトの名無しさんNGNG
>>60-61
即レス感謝です。
作っているのはDLLでして、ダイアログを生成して、
WM_INITDIALOGがきたところで、SetWindowLogを呼ぶようにしています。

この場合、自プロセス内ということにならないでしょうか?
0063デフォルトの名無しさんNGNG
>>62
ひょっとしてキー関連のメッセージをキャッチしようとしてる?
もしくはCallWindowProcをちゃんと呼んでる?
006459NGNG
解決しました。
やはり凡ミスでしたOrz
サブクラス化したいリストビューの元々のプロシージャを、
GetWindowLong 関数を使ってWNDPROC型のグローバル変数に保存してたのですが、
自分が設定したプロシージャのプロトタイプの方もWNDPROC型にしていて、
実際の関数本体では
LRESULT CALLBACK MyListViewProc(HWND, UINT, WPARAM, LPARAM)
になっていたので、SetWindowLongからは、
WNDPROC型のプロトタイプの方しか見えてなかったことが原因みたいです。

失礼致しました。
0065デフォルトの名無しさんNGNG
(・∀・)ノシ解決おめ〜
0066デフォルトの名無しさんNGNG
エクスプローラみたいなのを作ってるんですが、
shell namespaceを使ってエントリの列挙をすると、
IEも列挙できますよね、しかもコイツBindToObjectが可能なので、
普通に進入できやがります。当然中にはなにも無いのですが。

候補としては
・エクスプローラでやっているように、IEのコンテナになる
・エントリのリストアップをするとき、IEを上手く弾く

の二通りが考えられるのですが、
どちらもIEのクラスIDを認識して特別扱いしないと出来ませんよね?
IEだけならいいのですが、似たようなデスクトップオブジェクトがあると
その都度手動で追加しないといけないのが気分が悪いです。

何か上手く扱う方法って無いでしょうか?
0067デフォルトの名無しさんNGNG
ついでにソースです。
なんでBindToObjectできるんだか、ホント頭にきてます。

#include <windows.h>
#include <shlobj.h>
#include <iostream>

main()
{
CoInitialize(0);
HRESULT hr;
IShellFolder *psf, *pie;
ITEMIDLIST *pidl;
wchar_t *ie=L"::{871C5380-42A0-1069-A2EA-08002B30309D}";
SHGetDesktopFolder(&psf);
psf->ParseDisplayName(0, 0, ie, 0, &pidl, 0);
hr = psf->BindToObject(pidl, 0, IID_IShellFolder, (void**)&pie);
if ( SUCCEEDED(hr) ) {
std::cout << "BindToObject成功" << std::endl;
pie->Release();
}
psf->Release();
CoTaskMemFree(pidl);
CoUninitialize();
}
0068デフォルトの名無しさんNGNG
スタティックリンクライブラリって勝手にOSからアンロードされることって
ありえないよね?
アンロードされたって騒いでいる奴がいたもんで。
0069デフォルトの名無しさんNGNG
ない
0070デフォルトの名無しさんNGNG
>>68
その馬鹿を晒してくれ。笑いが止まらん。
0071デフォルトの名無しさんNGNG
>>58
他所でメモリが必要になって初めて解放されるような、定期的に解放されたような
0072デフォルトの名無しさんNGNG
>>繊維状態としてLPARAMのLSBで取得できる

これの意味がよく理解できないのですが
教えていただけませんか。
0073デフォルトの名無しさんNGNG
ウインドウをベッキーや2ch専用ブラウザのように分割したいのですが、
どのようにすれば分割できるのでしょうか?
また、それぞれにスクロールをつけることは可能でしょうか?
0074デフォルトの名無しさんNGNG
>>73
A1 可能。二つウィンドウを並べる。
A2 当然可能。普通に付ければいい。
0075デフォルトの名無しさんNGNG
MFC相談室(http://pc5.2ch.net/test/read.cgi/tech/1088084875/39)
で質問したところ、こちら向きの話題だとアドバイスを受けました。

MFCのCComboBoxを使ってコンボボックスを表示させているのですが、
これのCBS_SORT属性を動的に変更することはできないのでしょうか?
具体的には、
 1:コンボボックスの中身をクリア
 2:SetWindowLongで変更
 3:再度追加
という動作をさせたいのですが、どうも動かないようです。
うまい解決法はないでしょうか?
0076デフォルトの名無しさんNGNG
>>74さん
2つウインドウを並べるとはどういうことでしょうか?
具体的に教えてください。お願いします。
0077デフォルトの名無しさんNGNG
ウィンドウを分割するって事は、ウィンドウが複数必要になるってこった。
0078デフォルトの名無しさんNGNG
>>72
lParamのbit31で、ハンドラが「押し」で呼ばれたか「離れ」で呼ばれたかが判別できるってことだろ。
MSDNのKeyboardProcのページに書いてある。
0079デフォルトの名無しさんNGNG
>>77さん。
ウインドウを2つ用意すれば、左右に分割されたウインドウができるということですか?
それを、どのように記述すればいいのですか?
よろしくお願いします。
0080デフォルトの名無しさんNGNG
> 左右に分割されたウインドウができるということですか
それが分割ウィンドウに見えるかどうかは藻前次第だ。
がんがれ。じゃあな。
面倒がいやならMFCとか使え。
0081デフォルトの名無しさんNGNG
APIで分割ウィンドウを作るような機能はない。自分で実装する必要がある。
それがイヤならMFCでCSplitterWndを使えばよい。まー普通はこっちを
選択するんだろうけど。
0082デフォルトの名無しさんNGNG
http://pc5.2ch.net/test/read.cgi/tech/1083585833/834
http://pc5.2ch.net/test/read.cgi/tech/1088140233/73
マルチ
0083デフォルトの名無しさんNGNG
質問です

昔はテンプレ3の
- Platform SDK Update
からSDKをダウンロードし、ローカルのHDDに保存できましたが、今は出来なくなったのでしょうか?

Win32APIなどについて調べられたのですが・・・・・
0084デフォルトの名無しさんNGNG
79に付けたしですが、
hWnd1 = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW | WS_VSCROLL,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
hWnd2 = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW | WS_VSCROLL,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
とかして、まずWindowを2つ作るということですか?
Windowを2つできたら、その後はどうすればよいのでしょうか?
よろしくお願いします。
0085デフォルトの名無しさんNGNG
>>83
できる。少なくともできた。
0086デフォルトの名無しさんNGNG
>>84
悪いことは言わない。お前には無理だ。
あ  き  ら  め  ろ 。
0087デフォルトの名無しさんNGNG
>>86に激しく同意
0088デフォルトの名無しさんNGNG
>>73
MFCのCSplitterWndのソースをパクれば?
少なくとも、こんなところでいちいち説明できるような内容ではない。
008986NGNG
まあ、お前には無理だろうし、あきらめたほうがいいんだが、それだけでは思考停止なので。
いわゆる分割ウィンドウは、単純にいえば、普通の子ウィンドウのサイズをユーザー操作で
変更できるだけのモノである。
まず、サイズ変更機能を持たない通常の子ウィンドウを配置したウィンドウを作成できるようになれ。
次に、(メニューとか)ユーザー操作を伴わず、子ウィンドウの大きさを計算し変更できるコードを書け。
その後、大きさを変更したいウィンドウ感にそれ用のウィンドウを配置するか、
親ウィンドウを表示するようにし、その部分がドラッグされたときに上記の計算を行え。
0090デフォルトの名無しさんNGNG
WTLにもついてるよ
0091デフォルトの名無しさんNGNG
>>75
コントロールのスタイルは、ものによってはCreateWindow時にしか効果が無いものがある。
多分CBS_SORTもその類じゃないかね。解決法としては、いったんコントロールを破棄して、
該当スタイルを有効にして作り直すのが一般的。
0092デフォルトの名無しさんNGNG
>>84
まずはテンプレサイトを見るのが作法だと思う。
「猫でもわかる」の117章あたりにそれらしいネタの解説がある。
http://www.kumei.ne.jp/c_lang/sdk2/sdk_117.htm
009375NGNG
>>91
破棄⇒再構築で目的の動作をさせることができました。
大変助かりました。ありがとうございましたm(_ _)m
009484NGNG
>>92
ありがとうございます。
参考にしてみます。
0095デフォルトの名無しさんNGNG
.NET Framework の Char.GetUnicodeCategory のような文字の種別を識別したいのですが、
Win32API で同等の事を行う方法を教えてください。
009683NGNG
>>85 様

1 ローカルプロクシを通さない
2 ActiveXのダウンロードと実行をON
3 IEキャッシュ削除
そして
4 OS再起動

によってダウンロード出来ました。
スレ汚し すみませんでした。
0097デフォルトの名無しさんNGNG
他のアプリウィンドウのHWND取ってきて弄るプログラムを書いてるん抱けど
HWNDからコントロールの種類を判別できないですか?
ボタンとかツリービューとか。
0098デフォルトの名無しさんNGNG
出来るよ。少なくとも標準コントロールなら。
0099デフォルトの名無しさんNGNG
GetClassName
0100デフォルトの名無しさんNGNG
どうやるの?
GetWindowLongを調べたけどスタイルとかUserDataとかはだめだった
0101デフォルトの名無しさんNGNG
出来たよー
\ありがとう/

λ
010258NGNG
>>71
レスthanks.

ソース等ありますか?
0103デフォルトの名無しさんNGNG
もうひとつ質問です。
他のアプリのテキストの内容を取得しようとしても取得できません。
TreeView_GetItemを使ってるんだけど、用意した文字バッファになにも
入ってきません。
0104デフォルトの名無しさんNGNG
>>103
試しに TVM_GETITEM 投げてみ。
0105デフォルトの名無しさんNGNG
これじゃね?
http://homepage2.nifty.com/Mr_XRAY/Halbow/VCL08.html
0106デフォルトの名無しさんNGNG
>>105
ありがとう、いまそこ見ながら書いたんだけど動かないです;;

//...HWND hcur; //ターゲットのWindowHandle
HTREEITEM ht = 0;
TVITEMEX ti;
DWORD proid;
HANDLE hProcess;
char* pCommon;

memset(&ti, 0, sizeof(TVITEMEX));
//ターゲットのプロセスにメモリを確保
GetWindowThreadProcessId( hcur, &proid );
hProcess = OpenProcess( PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE, FALSE, proid );
pCommon = (char*)VirtualAllocEx( hProcess, NULL, 256, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE );
//
ht = TreeView_GetRoot( hcur );
ti.mask = TVIF_TEXT;
ti.hItem = ht;
ti.pszText = pCommon;
ti.cchTextMax = 255;

DWORD readb;
TreeView_GetItem( hcur, &ti );
if( !ReadProcessMemory(hProcess,pCommon,ffname,256,&readb) ){
 printf( "mem error...\n" );
}
printf( "*** %s ***\n", ffname );
//開放
VirtualFreeEx(hProcess,pCommon,0,MEM_RELEASE);
CloseHandle(hProcess);
0107デフォルトの名無しさんNGNG
いきなりソースだされてもよぉ
0108デフォルトの名無しさんNGNG
ごめんなさい
えっとhcurにはターゲットのTreeViewコントロールのHWNDが入ってるんだけど
其処のプロセスをゲットしてVirtualAllocExは成功しているもよう。
WriteProcessMemoryをやるとRead...できちんと読めた。
hcurがきちんとTreeViewをさしてないのかとも思ったけど
TreeView_Expand( hcur, ht, ...)できちんとツリーは開閉した。
後僕に考えられる原因はTreeView_GetItemに渡すtiの初期化がまずいのかと
思ったが、しかしこれでいいよね… うわーn
0109デフォルトの名無しさんNGNG
おっ、virusでも作ってるの?イイネイイネー
0110デフォルトの名無しさんNGNG
>>108
TVITEMEX 自体を先方のメモリに取らないとダメじゃないの?
0111デフォルトの名無しさんNGNG
どうでもいいけどヴァイラスって作った時点で犯罪?
0112デフォルトの名無しさんNGNG
非アクティブウィンドウ時にも休止せず、処理を継続するアプリを作りたいの
ですが、APIで制御出来るのでしょうか。可能ならAPI名を教えて下さい。
0113デフォルトの名無しさんNGNG
>>112
もともと非アクティブ時にもプロセスは休止しない。
0114デフォルトの名無しさんNGNG
ただCPUの割り当ては少し減るんだった気がする
0115デフォルトの名無しさんNGNG
エクスプローラでファイルコピーさせつつ他のアプリをアクティブにすると約3〜4割速度落ちるな。
なので俺はエクスプローラの優先度をhigherに設定してる。板違いだけど一応。
0116112NGNG
>>113-115 素早いレスありがとうございます。

アクティブ如何を気にする必要がなければ特別な記述は不要で、逆にRTSで非
アクティブ時には進行が止まる様なのは、その様な処理を敢えて組み込んでい
ると考えていいのでしょうか?
一定時間毎(?)にGetActiveWindowを発行し、返ったのが自分自身でなければ、
なんて事はやらないですよね(即時性がないですし)。アクティブかフォーカ
ス周りのWM辺りを利用するんでしょうか
0117デフォルトの名無しさんNGNG
>>116
そうだよ。
0118デフォルトの名無しさんNGNG
その名もWM_ACTIVEメッセージ。アクティブ化・非アクティブ化等を教えてくれる。
0119デフォルトの名無しさんNGNG
>>58
SetProcessWorkingSetSizeでどう?
>>68
「勝手に」OSが削除することはないけど
明示的にFreeLibraryすれば解放できるから
おおかた騒いでる奴が参照カウントの管理を間違えたんだろ
0120デフォルトの名無しさんNGNG
>>119
Dynamic Link ならともかく Static Link では参照カウントなんてないんじゃない?
0121112NGNG
>>117-118
やはりそうなるんですね。回答ありがとうございました。
over
0122デフォルトの名無しさんNGNG
>>120
なくてもあまり困らないとは思うが、Win32ではスタティックDLLの
参照カウントも管理している。起動時は1だから一回FreeLibraryすると
メモリから消え去る(ただしexeは9xだったかNT系だったか忘れたが
どちらかは解放できない)。
意図的な使用例としては自己削除インストーラなんかがたまに使う。
0123デフォルトの名無しさんNGNG
あ、スタティックリンクって.libをリンクする場合の話か。
完全に読み間違えてたorz
0124デフォルトの名無しさんNGNG
DLLをインポートライブラリでリンクした場合の話だと思ってたんだが違うのか?
0125デフォルトの名無しさんNGNG
何か話が混乱してるなw

インポートライブラリでDLLを使用する方法を
ロード時動的リンク(Load-Time Dynamic Linking)

実行中に LoadLibrary でDLLを使用する方法を
実行時動的リンク(Run-Time Dynamic Linking)

と言うそうだ。
正確に伝えるためにはきちんと使い分けた方が良いかもね。

C/C++ コンパイラレベルでは
明示的にコード中で LoadLibrary しない限り、呼んだ API
はみんなロード時動的リンクになる。

Cライブラリ等は
スタティックリンク (LIBC)
とロード自動的リンク (MSVCRT)
が選べるね。
0126デフォルトの名無しさんNGNG
linuxなんかではlibcが外にあるようなうにゃうにゃ(ry
0127デフォルトの名無しさんNGNG
あれも動的リンク
0128デフォルトの名無しさんNGNG
> 明示的にコード中で LoadLibrary しない限り、呼んだ API
> はみんなロード時動的リンクになる。
/delayloadで実行時動的リンクを選べる
まあ中身は LoadLibrary してるだけなんだが
コード中に明示的に書く必要はなくなる
0129デフォルトの名無しさんNGNG
チェックボックスつきリストビューで
特定のチェックボックスを無効化or非表示
ってできるのでしょうか?
0130デフォルトの名無しさんNGNG
>>96関連
ActiveXを使ってコンポーネント選択してインスコする方式だと6時間経ってもCoreすら終わらなかったので
フルダウンロード( http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm )やったら
2分そこらで終わった。光でよかった・・・
0131デフォルトの名無しさんNGNG
129じゃないですけど
129に絡んで、リストビューの中のチェックボックスをオン、オフしたときに
反応を得るにはどうすればよいのでしょうか?
ずっと悩んでいます、教えてください
0132デフォルトの名無しさんNGNG
>>126
libcなんかは静的共有ライブラリといって、
アドレスのバインドはリンク時に、イメージのバインドはロード時にやるという代物だとか。
apacheモジュール(.so)あたりはDLLと同様の動的リンクらしいね。
0133デフォルトの名無しさんNGNG
ネットで検索するとMSDN丸写しな関数リファレンスを載せてるサイトが
やたら多いんだけど彼らはいったい何を考えているんだろう。
0134デフォルトの名無しさんNGNG
多少見やすいとか、そういった自己満足
0135デフォルトの名無しさんNGNG
MSDNが最新にして最良のものだという考えに変わりはない。
以下でMSDNに対する愚見を述べさせてもらう。

MSDNには確かに誤りも存在するし、邦訳版は読みづらい(誤訳を避け、あまりに保守的な訳をしている)が、
英語版は素晴らしい。(ry
0136108NGNG
>>110
なるほど、其処まで考えが回りませんでした。ありがとう
…でもTVITEMをターゲットのプロセスに確保してもだめだった(つД;
ターゲットのプロセスをデバッガで見て確保されたエリアにWriteProcess、
ReadProcess... はできていた。だけどやっぱりTreeView_GetItemしても
変化が無い…
0137デフォルトの名無しさんNGNG
VirtualTreeView だったりして
0138デフォルトの名無しさんNGNG
> …でもTVITEMをターゲットのプロセスに確保してもだめだった

普通は自プロセスに確保して、適当にフィールドを設定してから相手プロセスの
メモリにコピーする。そしてそのポインタを使って TreeView_GetItem を
呼び出す。文字列バッファのオフセット値が間違ってるとか?
0139デフォルトの名無しさんNGNG
まず、自分のプロセス内のTreeViewでうまくいくか試してみる
0140デフォルトの名無しさんNGNG
>ti.pszText = pCommon;

先頭に TVITEM をコピーしたとき、ti.pszText のオフセットも変えてる?
文字列専用のプロセスメモリを確保しておくと簡単。


0141108NGNG
組んでるものはCUIコマンドのものなんで、別にプロジェクト作って
TreeViewのGetItemを試したら上手くいきました。
んでそのプロジェクトのTreeViewをコマンドでいじろうとして失敗しました。
以下CUIソース
0142108NGNG
//...HWND hcur; //ターゲットのWindowHandle
HTREEITEM ht = 0;
TVITEM ti, *pComTi;
DWORD proid;
HANDLE hProcess;
char* pCommon;

memset(&ti, 255, sizeof(TVITEM));
//ターゲットのプロセスにメモリを確保
GetWindowThreadProcessId( hcur, &proid );
hProcess = OpenProcess( PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE, FALSE, proid );
pCommon = (char*)VirtualAllocEx( hProcess, NULL, 256, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE );
pComTi = (TVITEM*)VirtualAllocEx( hProcess, NULL, sizeof(TVITEM), MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE );
//
ht = TreeView_GetRoot( hcur );
ti.mask = TVIF_TEXT;
ti.hItem = ht;
ti.pszText = pCommon;
ti.cchTextMax = 255;
DWORD readb = -1;//
0143108NGNG
if( !WriteProcessMemory(hProcess,pComTi,&ti,sizeof(TVITEM),&readb) ){
printf( "mem error write...\n" );
}
memset(&ti, 0, sizeof(TVITEM));
TreeView_GetItem( hcur, &pComTi );
if( !ReadProcessMemory(hProcess,pComTi,&ti,sizeof(TVITEM),&readb) ){
printf( "mem error...ti\n" );
}
if( !ReadProcessMemory(hProcess,pCommon,ffname,256,&readb) ){
printf( "mem error...\n" );
}
printf( "*** %s ***\n", ffname );
//開放
VirtualFreeEx(hProcess,pComTi ,0,MEM_RELEASE);
VirtualFreeEx(hProcess,pCommon,0,MEM_RELEASE);
CloseHandle(hProcess);
0144デフォルトの名無しさんNGNG
WinXPでMicrosoft Visual Studio .NET 2003を使ってるんだけど
WM_MOUSEWHEELが定義されてなく
ttp://www.asahi-net.or.jp/~uk8t-ktu/wincode/global/0010.htm
ここ見て解決は出来たんだけど
最初から定義されてないものなの?
0145デフォルトの名無しさんNGNG
>>144
#if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)
#define WM_MOUSEWHEEL 0x020A
#endif
0146デフォルトの名無しさんNGNG
> if( !ReadProcessMemory(hProcess,pCommon,ffname,256,&readb) ){

ここの ffname はローカルバッファとして256バイト割り当て済み?
0147デフォルトの名無しさんNGNG
サブスレッドがデータをセットしたら
寝ているメインスレッドを起こしてデータを読み取らせたいのですが
どういったやり方が一般的ですか?
いまはメインスレッドでfor(;;) Sleep(100);しながらフラグを監視してます。
0148デフォルトの名無しさんNGNG
>>143
誤: TreeView_GetItem( hcur, &pComTi );
正: TreeView_GetItem( hcur, pComTi );
では?
0149デフォルトの名無しさんNGNG
>>147
イベント。
CreateEvent, SetEvent, WaitForSingleObject, MsgWaitForMultipleObjects あたりを調べて。
0150デフォルトの名無しさんNGNG
リストビューに関して質問です。
ソートの昇順・降順をあらわす三角印(カラムヘッダに表示されるやつ)はどうやったら表示されるのでしょうか?
自前で描画しないとダメ?
0151デフォルトの名無しさんNGNG
>>150
標準じゃついてないな、漏れのはWin2kだけど
0152デフォルトの名無しさんNGNG
>>150
Common Control V6(XP以降)なら可能。
2000以前に対応させようと思ったら、自前で描画する必要がある。
▼▲で誤魔化す手もあるが……。
0153150NGNG
>>152
thx
やっぱ自前描画が必要なのですね…
0154150NGNG
「カラムヘッダ」と「DC」でググったらよさげな情報みつかりました。
http://search.acty-net.ne.jp/mfc_search/archive/2000-2/msg02144.html
これを参考にしてみます。

「カラムヘッダ」「API」「ソートアイコン」とかでググってたので見落としてたようです。(;´Д`)
0155デフォルトの名無しさんNGNG
ExitThread について質問です。Thread の薄いラッパクラスを作成中なんですが、
SDK のドキュメントでは LPTHREAD_START_ROUTINE のリターン後、暗黙的に ExitThread が呼ばれるとありますが
何らかの処理中にメインスレッドから ExitThread を呼んだ場合、適切な後始末が行われないのでしょうか。
0156デフォルトの名無しさんNGNG
CreateThreadで作ったスレッドの場合は問題ない
0157デフォルトの名無しさんNGNG
>>156
なるほど問題ないのですか。サンクスです。
因みに CreateThread で作成したスレッドに対してでした。抜けてましたね。すいませんん。

ところで ExitThread て明示的に呼び出す必要があるときってどんな時なんでしょう?
何らかの処理中に ExitThread を呼んだところで直ちにスレッドが終了するわけでは無いし(当たり前ですが)
イマイチ使いどころがわからんのですが…。
0158デフォルトの名無しさんNGNG
C++の場合、デストラクタが呼ばれないような気がするけど
大丈夫ッスか?
0159デフォルトの名無しさんNGNG
>>158
ダメです。
なので、ExitThread()は(余程注意しないと)使えません。
0160デフォルトの名無しさんNGNG
スタティックDLL だってさ(プ
0161デフォルトの名無しさんNGNG
不特定多数のウィンドウを作る際、
各ウィンドウに対する処理はどのようにして行うものなんでしょうか。
以前は

1 for文をまわしウィンドウを作成する。
 その際、外部で宣言したHWND型配列に各ハンドルを代入させる
2 プロシージャで引数として渡されるハンドルと、
 ウィンドウ作成時に用意しておいた各HWND配列から内容の同じものを
 探して見つける事で多数作られる中のどのウィンドウなのかを判別し
 それに応じて異なる処理をする。

この「どのウィンドウを現在扱っているか」をプロシージャ内で判別する方法が
ややこしいし、なんだかきたないので、
スマートな方法があったら教えてください
根本的に間違っていたら正してやってください
おねがいします
0162デフォルトの名無しさんNGNG
ぶらくらはいくない。
0163デフォルトの名無しさんNGNG
>>161
SetProp APIを使ってウィンドウハンドルに対して付加情報をむすびつけておくってのはどうよ?
0164デフォルトの名無しさんNGNG
ある文字の種別は GetStringTypeEx API をつかえば取れますが、
UNICODE で規定されているスクリプトタイプを調べる API はありますか?
0165デフォルトの名無しさんNGNG
>>161
for 分で Create しつつ登録する仕組みだと、WM_CREATE あたりのメッセージが
発生するときにはまだ登録されていなくて不便です。

なので、WM_NCCREATE を受けた段階で、CREATESTRUCT 経由で渡されたウィンドウを
識別する情報 (CreateWindow時に作っておく) と hWnd のマッピングを生成すると良いでしょう。
163 の言うように SetProp で登録しても良いし、std::map に入れたりしておいても良い。


「この「どのウィンドウを現在扱っているか」をプロシージャ内で判別する方法」は
GetProp とか std::map::operator [] 一発だから、別にややこしくはないと思う。
0166デフォルトの名無しさんNGNG
ふつー、ウィンドウ毎の情報はC++なりのクラスのメンバに格納して、そのオブジェクトへのポインタを
SetPropなりSetWindowLongなりThunkなりでウィンドウに関連付けて終わり。
0167デフォルトの名無しさんNGNG
>>163 >>165 >>166

ありがとうございます
今さらで申し訳ないのですがC++は自分は使えなくて
C言語でやっています
SetProp関数など今まで調べていたのですが
基本的な用語すらちゃんと理解できていないみたいで
具体的にどうすればいいかわかりませんでした
hWndのマッピング という言葉もよくわからないのです
ずうずうしいとは思いますが
相当なアホでもわかるように教えてもらえないでしょうか
0168デフォルトの名無しさんNGNG
C++を使えないってのがオブジェクト指向を理解できない知らないって意味なら悪いことは言わんからオブジェクト指向について勉強しろ。そのほうが後々楽になる。
0169デフォルトの名無しさんNGNG
ウインドウハンドルと関連データと対応付けてメッセージループ上で使用するのは、C++使う使わないに限らず、
オブジェクト指向とは関係ない、ただのロジック。
何故C++を使うだけでオブジェクト指向と言いたがるのか、さっぱり理解できない。
0170デフォルトの名無しさんNGNG
>>167
マッピングっていうのは、「hWnd から必要な情報への対応表」を作成するということ。
そうして、>>165 の前半でいっているのは、

for (int window_id = 0; window_id < 100; window_id++)
{
 my_data_table[window_id].data = hogehoge();
 my_data_table[window_id].hWnd = CreateWindow(...);
}
のようにしてしまうと、WM_CREATE の時にはまだ my_data_table[].hWnd が設定されていなくて
不便だから、CREATESTRUCT 経由で(この例だと) window_id を渡して、WM_NCCREATE で
my_data_table[window_id].hWnd = hWnd を実行すると良いよ、っていう話。
0171デフォルトの名無しさんNGNG
>>167
自分で調べてどうにかしようって気が無いんだったら、
グローバル変数に入れてって既存の方法使えば?
0172デフォルトの名無しさんNGNG
>>169
苦労したんだよ。察してあげな。
0173デフォルトの名無しさんNGNG
BMPを表示させる方法はテンプレサイトをみて分かったのですが、
JPGを表示させる方法が分かりません・・・
簡単にJPGを扱う方法はありませんか?
0174デフォルトの名無しさんNGNG
gdiplus系をぐぐれ
0175108NGNG
レストンクス
>>148を修正したら動きました
λ<アリガトー
0176デフォルトの名無しさんNGNG
>>173
あとはOleLoadPictureとかLoadImageとか。
ただしいずれもOSバージョンに制限あり。確認汁。
0177デフォルトの名無しさんNGNG
>>174
サンクスです
0178デフォルトの名無しさんNGNG
依存するのはOSのバージョンではなくIEのバージョン。
0179デフォルトの名無しさんNGNG
釣られませんよ( ̄ー ̄)ニヤリッ
0180デフォルトの名無しさんNGNG
OleLoadPictureは組み込まれているモジュールによって、出来ることが決まる。
JPEG用のモジュールが入っているのがIEなんだが、けっこう知らない人がいるのか。
その他、標準コントロールの拡張機能もIEのバージョンに依存する部分が多い。
0181デフォルトの名無しさんNGNG
Win32API質問箱 Build19
http://pc5.2ch.net/test/read.cgi/tech/1084697545/

>949 名前:デフォルトの名無しさん[sage] 投稿日:04/06/24 19:06
>今までDLLからウインドウを作ろうなんて考えもしなかったんだけど、
>DLLからCreateWindowをするとき、HINSTANCEにはDLLのインスタンスハンドルを指定するのですか?
>それともWinMainのHINSTANCEを指定すればいいのですか?
>NT系だと無視されるようなので、どちらが正しいかってのがちょっと分からないのですが。

催促ですみません、これわかる人いませんか?
0182167NGNG
>>170

わかりました!
ありがとうございます
これで外部変数は使わないで済みます。
SetPropの使い方については自分で勉強しながら確認していこうと思います。

>>168

オブジェクト指向ですか。
もうわからない事だらけでやらなきゃいけないこと
山のようにあるっぽいですが、色々調べて勉強してみます

>>171

一応結構長い時間調べたり、にらめっこしたりしてみたのですが
でもわかりませんでした。精進します

みなさんありがとうございました
助かりました。
0183デフォルトの名無しさんNGNG
(´∀`)ノシがんばってねー
0184デフォルトの名無しさんNGNG
>>181
試したわけじゃないけど、
作ろうとしてるウィンドウがどこにあるリソース(メニューとか)を使うかによるんじゃない?
普通はDLLに使うリソース入れるだろうから、DLLのHINSTANCEだと思うけど。
0185デフォルトの名無しさんNGNG
>>181
ウィンドウプロシージャの入っているモジュールの hInstance。
0186デフォルトの名無しさんNGNG
184 の方が正解っぽいぽ
0187デフォルトの名無しさんNGNG
>>184-186
レスありがとうございます。
ウインドクラスの場合は>>184で正しいと思うのですが、
CreateWindowの場合、メニューはリソースのIDではなく
メニューハンドルで指定しますよね?
リソースは影響しない気もするのですが、、、。
0188デフォルトの名無しさんNGNG
とりあえずやってみれば?
0189デフォルトの名無しさんNGNG
>>188
現状触れる範囲ではNT環境しかないもので、試せないのです。
0190デフォルトの名無しさんNGNG
そんなときこそVirtualPC(or VMware)ですよ
0191デフォルトの名無しさんNGNG
結局VirtualPCに9x系のOSインスコしないと動かんぞ。
0192デフォルトの名無しさんNGNG
>>181
プログラミングWindowsでは「どっちでも構わんが私はDLLを呼び出した側のインスタンスハンドルを使うことをすすめる」と書いてある。
0193デフォルトの名無しさんNGNG
>>192
ありがとうございました
0194デフォルトの名無しさんNGNG
ウィンアプリで長方形の範囲を塗りつぶすAPIはあるのでしょうか。
今はSetPixelVで点をいっぱい表示したり、
CreateFontで文字サイズを変えたのを1文字を表示する、
方法でやっているのですが、あるなら教えてください。
0195デフォルトの名無しさんNGNG
FillRect
0196194NGNG
>>195
ありがとうございます。やってみます。
0197デフォルトの名無しさんNGNG
ExtTextOutのほうが楽だけどな
0198194NGNG
>>197
ありがとうございます。こちらもやってみます。
0199デフォルトの名無しさんNGNG
デバイスコンテキストに描画領域を設定する方法ってありませんでしたっけ?
具体的にはWM_ERASEBKGNDである一部分だけ、再描画を停止したいのですが。
0200デフォルトの名無しさんNGNG
IntersectClipRect()みたいなやつか?
0201デフォルトの名無しさんNGNG
ListViewに数万アイテムを登録するとすごく時間がかかるのですが、
何とかこれを高速化する方法ないでしょうか?
ファイラーとかだとSysListView32のコントロールでも一瞬で表示されてるので、
やりようはあると思うのですが。
0202デフォルトの名無しさんNGNG
仮想リストビュー
0203デフォルトの名無しさんNGNG
親をHWND_DESKTOPにしてボタン作ったらスタイルにBS_PUSHBUTTONが含まれなくなりました
あとからSetWindowLongPtrとかやってもだめでした
いまのところ描写とかはうまくいってるのですがボタンであるのにBS_PUSHBUTTONでないと
問題が起きるとこってありますか?
0204デフォルトの名無しさんNGNG
>203
C:\bcc55\Include>grep BS_PUSHBUTTON winuser.h
File winuser.h:
#define BS_PUSHBUTTON 0x00000000L
0205デフォルトの名無しさんNGNG
>>204
あ... どうりでふくまれないはずですね
でも電卓とかのボタンをspy++で調べるとBS_PUSHBUTTONがあるのですが
今回作ったプログラムのボタンは、みかけは電卓とかのと一緒なのにふくまれません
なんでだろう...
0206デフォルトの名無しさんNGNG
文書管理用のツールを作ってみたいんだけど、勉強がてらグリッドやツリービュー、
画像のサムネールや拡大・縮小、なども自作してみたいです。
でもグリッド一つとってもどう実装していいのかさっぱり分かりません。

参考になる本はないですか?
または参考になるソースを入手するにはどうすればいいですか?
0207デフォルトの名無しさんNGNG
イベントとメッセージって何がどうちがうんですか?
02084 ◆MwGQyQRf/o NGNG
とりあえず、海外着いた
0209203.208.86.147NGNG
空港からだけど、アドレスはどうなんだろ?
0210デフォルトの名無しさんNGNG
>>209
オーストラリア乙
0211デフォルトの名無しさんNGNG
>>209
……楽しんでこいよ。
0212デフォルトの名無しさんNGNG
>>207
イベントはキーを押したり、マウスを動かしたり、タイマーの時間が経ったり、
起こった事で、メッセージはそれをOSがプログラムに伝えてくるものかな。
0213デフォルトの名無しさんNGNG
>>212
Windowsについてまだ勉強始めたばかりなのですが、
イベント=スレッド間の同期通信
メッセージ=スレッド間の非同期通信
という理解でとりあえずはいいんでしょうか?
0214デフォルトの名無しさんNGNG
>>213
全く違う。
イベントってのは、英語の event そのもの。メッセージも message そのもの。
一般名詞であって、そんなに狭い意味を持って使われてるわけじゃない。

Windows の中では、イベントというと
・イベントドリブン型プログラム、という文脈でのイベント。
 Windowメッセージのうち、ユーザやシステムから非同期的に発生するもの
 WM_LBUTTONDOWN とか。WM_SETFONT などは普通「イベント」とは言わない。
・CreateEvent で作られた同期・排他・待ち合わせ用オブジェクト
・COM オブジェクトからの event sink インターフェイスへの呼び出し。
など諸々。

メッセージは、
・GetMessage や PeekMessage で得られる、ウィンドウメッセージ
・MAPI で転送されるメッセージ

など。
0215デフォルトの名無しさんNGNG
♪これっくらいのっ
 イベント箱にっ
 おにぎり おにぎり
 チョイと詰めて
 あがり コーヒー ゆず さくらっ
0216デフォルトの名無しさんNGNG
>>201
今MSDN開けない環境なんでうろおぼえだけど、
リストの更新(追加)時に更新描画をさせないようにするメッセージかなんかがあったはず。
それで描画をOFFにしておけばそこそこ速度が稼げた気がする。
0217デフォルトの名無しさんNGNG
>>216

SendMessage(hListView, WM_SETREDRAW, 0, 0);

ここで項目追加

SendMessage(hListView, WM_SETREDRAW, 1, 0);
0218デフォルトの名無しさんNGNG
すっげー初歩的な質問かもしれないけどさ

WIN32APIって何?
0219デフォルトの名無しさんNGNG
>>218
32ビット版Windowsが用意している関数群。
Cのライブラリ関数には必要ないけど、Windows用プログラム製作には必要なものが揃っている。
0220デフォルトの名無しさんNGNG
>>218
>>3
0221デフォルトの名無しさんNGNG
>>216-217
201じゃないが、いい事を教えてもらった。Thx
0222デフォルトの名無しさんNGNG
>>219
必要なくはないだろ。
0223デフォルトの名無しさんNGNG
MSVCRTの扱いは微妙なとこだが・・・
0224デフォルトの名無しさんNGNG
>>215
名古屋出身かよ!
0225デフォルトの名無しさんNGNG
WinMain関数について質問なんですが、MSDNに

戻り値
関数が WM_QUIT メッセージを受け取って正常に終了する場合は、メッセージの wParam パラメータに格納されている終了コードを返してください。関数がメッセージループに入る前に終了する場合は、0 を返してください。

と書いてあります

しかし、DirectX9のマイクロソフトのサンプルコードには、

// Initialize Direct3D
if( SUCCEEDED( InitD3D( hWnd ) ) )
{
// Show the window
ShowWindow( hWnd, SW_SHOWDEFAULT );
UpdateWindow( hWnd );

// Enter the message loop
MSG msg;
while( GetMessage( &msg, NULL, 0, 0 ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
}

UnregisterClass( "D3D Tutorial", wc.hInstance );
return 0;
}

と0を返しています
これでもいいのでしょうか?
0226デフォルトの名無しさんNGNG
WinInetで接続時のタイムアウトを設定する方法はありますか?
INTERNET_OPTION_CONTROL_CONNECT_TIMEOUTとか
設定してみたけど反映されてないっぽいのですよ・・

・・どなたかご存知ないでしょうか?
0227デフォルトの名無しさんNGNG
IE5.5だかあたりの時代のWinInetはタイムアウトがまともに動かないんで非同期API使って自力でタイムアウトしろとか言われてた気がするが。
0228デフォルトの名無しさんNGNG
>>225
WM_DESTROYでPostQuitMessage(0);なんて決め打ちしていたら別に同じ。
それにWinMain(main)の戻り値はWindowsが使うんじゃなくて、ユーザが使うものなんだけど、
ウィンドウズではまず間違いなく使われていない(それに使う手段がないに等しい)から別にいい。
0229デフォルトの名無しさんNGNG
>>228
そうなんですか
プログラム終了時に、0が返ってくるとなにかxpとかがカチンと来るのかなと思っていたのですが、
大丈夫なようですね
0230デフォルトの名無しさんNGNG
>>227
あーやっぱりだめですか・・。

非同期APIつーのはこの辺ですかね?
http://support.microsoft.com/default.aspx?scid=kb;EN-US;275046
ちょっと、やってみます。

0231デフォルトの名無しさんNGNG
>>228
スタートアップルーチンが使ってるってことはない?
0232デフォルトの名無しさんNGNG
>>231
少なくとも俺の経験上は、無い。
0233デフォルトの名無しさんNGNG
gdi+でjpg画像から、ビットマップのGetPixelのように
1ピクセルの画素値を抜き出すのってどのようにすれば可能でしょうか?
よろしくお願いいたします。
0234WindowsマンセーNGNG
>>214
レスありがとうございます。
Advanced Windows 3rdを古本屋で手に入れました。
カーネルオブジェクトという観点から綺麗に書かれていて
これ、とても解り易くて良い本です。
よく読んでから出なおしてきます。
0235デフォルトの名無しさんNGNG
ListCtrlに数値を表示する際にカンマ区切りで表示したいわけですが
何かオプションでも有りませんでしょうか。
そういうの良く見かけますけど全部自分で区切って登録してるのかな?
0236デフォルトの名無しさんNGNG
>>235
カンマ区切りって、桁区切り表示のこと?
なら自分で実装するしかない。
0237デフォルトの名無しさんNGNG
まあ、自分で実装しても難しくも何ともないから、おとなしく作っとけ。
0238235NGNG
無い様なのでそうすることにします。
桁区切りならGetNumberFormatで出来ますし。
0239デフォルトの名無しさんNGNG
>>238
ライブラリ化しとくと便利かも

ところで、9xでWNetAddConnection2使ってネットワークドライブに割り当てた
Server2003の共有フォルダ(NTFS)を、
9x側がFATって誤認識することがあったんだが、なんか情報持ってる香具師いないか?

9x系全般で再現、同一セグメントで発生した上クライアントPCの環境には特に縛られてない模様で、
再現手順もトリガもまったくわからん状態で困ってるんだが

ローカルディスクならブートレコード読み損なったときにFATと読み違えることも
あるらしい(見たこと無い)が…?

0240デフォルトの名無しさんNGNG
別に作ったテキストファイルを読み込ませて、
画面に表示する方法を教えて下さい。
0241デフォルトの名無しさんNGNG
1) CreateFile()でファイルを開きます
2) ファイルの中身を読み出します(バッファ確保注意)
3) テキストウィンドウを作って2)で読んだ中身を放り込みます
0242デフォルトの名無しさんNGNG
>>241
すばやいお答えありがとうございます
0243デフォルトの名無しさんNGNG
>>239
ネットワークドライブの実際のフォーマットを知ってどうしようっての?
何か意味があるとは思えないが
0244デフォルトの名無しさんNGNG
ファイル名の制約(8.3かどうか,大文字小文字を区別するか,長さ制限)を、
単にNTFSかFATかで区別しているとヤバいかもしれんね。
ちゃんとAPI叩いてればいいんだろうけど・・・
0245デフォルトの名無しさんNGNG
mmapfileにCの文字列処理関数使った場合ファイルの末尾で'\0'でちゃんと止まってくれるの?
0246デフォルトの名無しさんNGNG
意味が分からん
mapした領域オーバーしたらメモリ保護エラーだろ
0247デフォルトの名無しさんNGNG
>>244
>単にNTFSかFATかで区別しているとヤバいかもしれんね。

そりゃ論外すぎる…
0248デフォルトの名無しさんNGNG
「ひまわり」とか「TTS」でWIN32APIって使えるのか?
0249デフォルトの名無しさんNGNG
>>244
>>247
FATと誤認識されたドライブを開いて[新規作成]→[テキストファイル]
…orz
まあ、9xが論外というならそれには激しく同意だが
0250デフォルトの名無しさんNGNG
>>249
なにか問題が?

まさか、書込みできないFATを想像してないわけじゃないよね?
0251デフォルトの名無しさんNGNG
>>248
ひまわりは使える。TTSはしらん。
0252デフォルトの名無しさんNGNG
>>249
再現できれば画面さらしてもいいんだが
「"・テキスト"が作成できません。指定されたファイルが見つかりません」とエラーになる。
要は、FATと認識しているにもかかわらず、8.3形式無視した名前付けようとして
勝手にエラーを吐くっぽい

ネットワークドライブ割り当てまでがお仕事で、後は好きに使ってねっつーアプリなんで
こっちとしてはFATだどうだは気にしたくもないわけですが
↑みたいに勘違いしたエラー吐きやがるので
このままではお話になりませんよ、と
0253デフォルトの名無しさんNGNG
すいません。分かる方、ご教授願います。

●フォーカスがないダイアログ側で、現在のキーの状態が得られません

当方でやりたいことは、任意のキーが押されたらキャンセルしたい
そこで、タイマーをセットしておいて、

::GetKeyboardState(g_kbState); // キーの状態を取得する。
for(mm=0, bCancel=FALSE ; mm<256 && !bCancel ; mm++){
 if( mm==243 ) continue;
 bCancel = (g_kbState[mm] & 0x80)!=0 ;
}
で、bCancelがTrueか否かをみていますが、常にFALSEです
フォーカスがあれば、大丈夫なんですが・・・
0254デフォルトの名無しさんNGNG
>>253
MSDN嫁
>The key status returned from this function changes as a thread reads key messages from its message queue.
>The status does not reflect the interrupt-level state associated with the hardware.
>Use the GetAsyncKeyState function to retrieve that information.
0255デフォルトの名無しさんNGNG
>>252
「FATと誤認」してると判断した根拠って何?
なんか妙な勘違いしてるような予感がするんだけど・・・。
0256デフォルトの名無しさんNGNG
>>255
この状況のとき、該当ドライブを右クリックしてプロパティ出すと
 ファイルシステム:FAT
になってる。
実際、Office系のファイルを新規作成すると、新規作成ファイルの命名規則が8.3になる
あたりから判断

実際、共有フォルダ内のファイルは開けるので、ドライブの接続が切れてるとかではないっぽいし
0257デフォルトの名無しさんNGNG
FATでもロングファイル名使えるだろ
つかネットワーク経由でFATとか関係あんのかよ
0258デフォルトの名無しさんNGNG
>>256
つか、話がさっぱり要を得ないんで勝手にまとめなおすけど、

(1)2003Serverで共有フォルダを出している。ローカルディスクはNTFS。
(2)9x上でWNetAddConnection2()使ってその共有をネットワークドライブに割り当てた。
(3)そのネットワークドライブ上でファイルを作成すると
 「"・テキスト"が作成できません。指定されたファイルが見つかりません」
 なエラーが出てファイルが作成できない。
(4)既存のファイルは読める。
(5)Officeでファイル作成すると、名前が8.3形式になっている。

でいいのかな?

ちなみに、ドライブのプロパティに出るファイルシステムは当てにならんと思うよ。
2000からsambaサーバの共有をネットワークドライブに割り当ててるけどNTFSって出るし。
(ちなみにsambaサーバのローカルディスクはsoftupdate付きのFFS)
9xは(V)FATしか知らない(NTFSなんて知らない)から、表示上そう見てるだけでは。

勘だけど、2003Serverの共有か、ドメインorワークグループの設定ミスってる気がする。
0259デフォルトの名無しさんNGNG
>>257
関係ないと思ってたんだが…
動作見る限りFAT(それもFAT32とかじゃなくて素のFAT)ドライブでの動作まんまだし

>>258
要領悪くてすんません、そんな感じです
ただ、
>9xは(V)FATしか知らない(NTFSなんて知らない)から、表示上そう見て
の部分だけど、正しく拾えるときはNTFSとちゃんと出る
実際
クライアント再起動かけたりサーバ側セッション削除して再接続かましたりで
復帰した(後者はほぼ五分五分でうまく行くのと行かないのがあった)から
ネットワーク環境っぽいのはぽいんだが…
再現率が恐ろしく低いんで(つまり普段は正常に動作している)
設定周りよりも負荷とかタイミング依存な感じ?
0260デフォルトの名無しさんNGNG
プログラムを使ってなくて持つところが暗くなってるときに
キーボードのボタンを押したことがわかるにはどうやればいいですか?
0261デフォルトの名無しさんNGNG
何を言っているのか分かりません
0262デフォルトの名無しさんNGNG
俺は分かったけど答えは知らん
0263デフォルトの名無しさんNGNG
俺もわからんので答えも知らん
0264デフォルトの名無しさんNGNG
俺もまじわからん。光学マウスじゃないよな。
0265デフォルトの名無しさんNGNG
俺の推理だと、SetWindowsHookEx(WH_KEYBOARD)
0266デフォルトの名無しさんNGNG
>>260は、ウィンドウ(プログラム)非アクティブ時に押したキーを横取りしたいんだろう。
平たく言うとキーロガーを作って{好き|嫌い}な{アノ子|あの糞野郎}に仕込んでやりたいと。
0267デフォルトの名無しさんNGNG
持つ所ってタイトルバーか…orz
物理的に持って暗くなるのもを探したよ
0268デフォルトの名無しさんNGNG
エスパーが多いスレで質問してよかったな。
0269デフォルトの名無しさんNGNG
>>266
なるほど。あんたスゲーや。
0270デフォルトの名無しさんNGNG
少々violateな推測をするに、>>260はこいつなんじゃないかと。
http://pc5.2ch.net/test/read.cgi/tech/1087929711/962
0271デフォルトの名無しさんNGNG
>>270
うん。俺も思った。
0272デフォルトの名無しさんNGNG
962って962の前に何かレスしてるの?
0273デフォルトの名無しさんNGNG
>>272
少なくともその質問関連のレスはないね
0274デフォルトの名無しさんNGNG
>>272
軽く検索したけど、当該スレ内にそれらしき書き込みは一切無し。
その奇妙さと日本語の不自由さを含めて962と260が同一人物との
推測に至りました。
0275デフォルトの名無しさんNGNG
>>273-274
((;゚Д゚) …ゴクリ
0276デフォルトの名無しさんNGNG
とりあえず、質問の文面からしてプログラマの素養無しなので、さっさと
あきらめることをお勧めするな、漏れは。

まあ他の職業も無理だろうけど。
0277デフォルトの名無しさんNGNG
アインシュタインなどの天才は260のような文章を書くと聞いた覚えがある
0278デフォルトの名無しさんNGNG
そうか。
じゃあプログラマじゃなくアインシュタインになれ。
0279デフォルトの名無しさんNGNG
池沼に見える天才が居るのは事実だが、全ての池沼が天才であるわけではない。
0280デフォルトの名無しさんNGNG
アインシュタインはボーナスでないよ
0281デフォルトの名無しさんNGNG
天才は、思考が飛躍するので凡人がついていけない。
>260のようなのは、思考が飛躍するのではなく支離滅裂なので凡人がついていけない。
0282デフォルトの名無しさんNGNG
天才へのねたみを恥ずかしげもなく表出するスレはここですか?
0283デフォルトの名無しさんNGNG
プ
0284デフォルトの名無しさんNGNG
ロ
0285デフォルトの名無しさんNGNG
市
0286デフォルトの名無しさんNGNG
警
0287デフォルトの名無しさんNGNG
が
0288デフォルトの名無しさんNGNG
超
0289デフォルトの名無しさんNGNG
法
0290デフォルトの名無しさんNGNG
政
0291デフォルトの名無しさんNGNG
大
0292デフォルトの名無しさんNGNG
学
0293デフォルトの名無しさんNGNG
逮
0294デフォルトの名無しさんNGNG
捕
0295デフォルトの名無しさんNGNG
乙
0296デフォルトの名無しさんNGNG
彼
0297デフォルトの名無しさんNGNG
ドゥアフォ
0298デフォルトの名無しさんNGNG
甲子園
0299デフォルトの名無しさんNGNG
※
0300デフォルトの名無しさんNGNG
つまり

プ ロ市警が「超法政大学逮捕」乙彼。
ドゥアフォ甲子園

っていうわけだな。
0301デフォルトの名無しさんNGNG
よぉ〜わからんが、なんかわらける。
0302デフォルトの名無しさんNGNG
>なんかわらける。
0303デフォルトの名無しさんNGNG
なんかばけらった
0304デフォルトの名無しさんNGNG
スパイ(をつくろうとすること)がばれて切れてる感じだろ
0305デフォルトの名無しさんNGNG
凡人の発想はそんなものなんだね
0306デフォルトの名無しさんNGNG
真の天才は2chで情報収集などしないものです。
0307デフォルトの名無しさんNGNG
BOOL PathIsDirectory(LPCTSTR)
のディレクトリだった場合の戻り値が 0x10 なのですが
なんでしょうか?これは
MSDNには Returns TRUE if the file exists, or FALSE otherwise.となっています。
if(PathIsDirectory(...)) でやっておけば問題なしですか?
#define TRUE 0x16 じゃないですよね
0308デフォルトの名無しさんNGNG
↑ちなみにwin2000 IE最新です。
0309デフォルトの名無しさんNGNG
ヘッダ調べたところTRUEは1に、FALSEは0にdefineされてる。しかしBOOL型の関数であって
元々値をintで比較するように設計されてないだろうから!=FALSE(つまり>>307と同じ)でいいんじゃないかな。
サンプルコード書いて試したわけじゃないけど。
0310デフォルトの名無しさんNGNG
まぁ普通はTRUE==!0 FALSE==0だから。。。
確かに紛らわしいけどそこは柔軟に対応してあげて下さい。
0311307NGNG
MSDNの引用を間違っていました。正しくは
Returns TRUE if the path is a valid directory, or FALSE otherwise.
まあ同じですが。
>>309,310
なるほど。MSDNの言っているTRUEがVCで定義されているTRUEということではないということですか
気にせず前進といきます どうもです
0312デフォルトの名無しさんNGNG
まぁBOOLって云ってるのにTRUE/FALSE/-1の3つが返ってくるGetMessageに比べたら
0313デフォルトの名無しさんNGNG
CreateProcess関数は第1引数か第2引数に実行ファイル名を代入すればOKという認識でいいのでしょうか?
でも、そうだとすると二つある必要がないですよね
0314デフォルトの名無しさんNGNG
コンソールから実行する感覚でやる時には第二引数に放り込んだほうが楽なんだわ。
0315デフォルトの名無しさんNGNG
GetCommandLineで取れるものが変わってくる。
POSIXサブシステムのためにそーゆー仕様になってるらしい
0316デフォルトの名無しさんNGNG
コントロールに、TTM_ADDTOOLでチップヘルプをつけているのですが、
コントールに、XPスタイルを適用(manifestファイル使用)すると、
チップヘルプがうまく表示されなくなってしまい困っています。

具体的な症状としては、
・アプリケーション起動直後は、正常に表示されます
・コントロールをクリックすると、そのコントロールのチップヘルプが表示されなくなります
・XPスタイルを適用しない場合は、コントロールをクリックした後でも正常に表示されます

解決策・原因等をどなたかご存じないでしょうか。

・開発環境
WindowsXP pro + SP1
Visual C++6.0 pro + SP6 + PlatformSDK
0317デフォルトの名無しさんNGNG
>>315
ああ・・・なる
0318デフォルトの名無しさんNGNG
>>316
それだけでわかるかよ。
どうやってコントロール作っているのかも書いてないし、TTM_ADDTOOLを送るときの
LPTOOLINFOも書いてないし。manifestファイル中身だってわかんね。

聞くのはいいけど、何がどうなっているのかくらい書いてからにしてくれよ。
0319デフォルトの名無しさんNGNG
回答者にはエスパーの資格を有することが必須条件です。
0320デフォルトの名無しさんNGNG
幸い、ここにはエスパーが多いから。
0321デフォルトの名無しさんNGNG
ウィンドウプロシージャで新しいメッセージを作ろうと思うんですが、
メッセージ番号がWindowsが定義したものとかぶらないか心配です。
例えば自分で作るときは5000番台にするとか、そういう決まりごとは
無いんでしょうか。あったら教えてください。
0322デフォルトの名無しさんNGNG
>>321
msdnかどっかに書いてあったと思う
WM_USER+hoge
にすれば確かかぶらない
0323デフォルトの名無しさんNGNG
RegisterWindowMessageとか。
0324デフォルトの名無しさんNGNG
>>322
その範囲は、コントロールが使用することがある。
現在は、WM_APP+nが推奨される。
0325デフォルトの名無しさんNGNG
>>321
ここ嫁
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/Windowing/MessagesandMessageQueues/MessagesandMessageQueuesReference/MessagesandMessageQueuesMessages/WM_USER.asp
0326デフォルトの名無しさんNGNG
>>322
残念、正解はWM_APP+hoge
0327デフォルトの名無しさんNGNG
今までずっとWM_USER使ってたけど・・・
0328デフォルトの名無しさんNGNG
WM_USER through 0x7FFF Integer messages for use by private window classes.
WM_APP through 0xBFFF Messages available for use by applications.

なるほどね。WM_USERはウィンドウクラス用、WM_APPはアプリ用ってことか。
0329デフォルトの名無しさんNGNG
>>324
>>326
回答がかぶるのを防止するには何番から使い始めるのがいいでしょうか
0330321NGNG
みなさまありがとうございます・・・。夜中だというのに
スレの回転が速い・・・。
0331デフォルトの名無しさんNGNG
他のプロセスのウインドーのアクティブを変えるにはどうやればどうやればできますか?
0332デフォルトの名無しさんNGNG
ttp://www.wisecart.ne.jp/fs/Item/item_zoom.asp?mart_id=guest&item_num=14
0333デフォルトの名無しさんNGNG
ファイルオープンダイアログを自作する必要が出たのですが、
ファイルオープンダイアログの中で表示しているディレクトリの中身を
リアルタイムに更新するにはどうすれば良いでしょうか。

標準のダイアログを見てると、何かメッセージを受け取っているようですが
それを受け取れるようにするにはどうすれば良いのかわかりません…
0334デフォルトの名無しさんNGNG
FindFirstChangeNotification
0335デフォルトの名無しさんNGNG
Win2k以降でよければファイル名まで知らせてくれるAPIあったよな。名前忘れたけど。
0336デフォルトの名無しさんNGNG
ぐぐったら見つかった。
NT3.51 SP3 以降
ReadDirectoryChangesW()
2K 以降
SHChangeNotifyRegister()
0337デフォルトの名無しさんNGNG
>>333
むしろファイルオープンダイアログをいじるほうが楽だったりして…
0338デフォルトの名無しさんNGNG
hEdit = CreateWindow("EDIT",〜
で作成し画面に貼り付けたエディットウインドウを
一時的に非表示にしたいんですけど簡単にできますか?
0339デフォルトの名無しさんNGNG
ShowWindow()
0340338NGNG
>>339
いけました,サンクス.
0341デフォルトの名無しさんNGNG
たまにHideWindowで探して鬱になる漏れ・・orz
0342デフォルトの名無しさんNGNG
>>333
まず、その必要を無くせ。
0343デフォルトの名無しさんNGNG
>>333の欲しい答えはOPENFILENAMEのlpfnHookの事のような気がする。
0344デフォルトの名無しさんNGNG
VB6.0の質問です
IntegerをByte配列に変換したいのですがAPIのCopyMemoryを使って
Dim data(1) As Byte
Dim a As Integer

a=3000
CopyMemory(data(0),a,2)

とやると明らかに化けた数値がdata()に入ってしまいます
この状態を解消するやりかたをどなたか教えてください
0345デフォルトの名無しさんNGNG
VBのことは知らんが、Integerは4バイトとか言うオチではないよね?
0346デフォルトの名無しさんNGNG
CByte
0347デフォルトの名無しさんNGNG
>>344
意図がわからん。手元でやってみた限りではdata(0)は184、data(1)は11で、
(11*256)+184=3000。これは別段おかしな動作ではないと思うが?

>>345
VB6のIntegerは2バイトだね。

関係ないけど、VBだとDATAってステートメントじゃなくなってるんだな。
dataって変数名でドキドキしてしまった(笑
0348デフォルトの名無しさんNGNG
>>333
すでにいろいろヒントが出てますが、漏れも勝手な類推に基づき、キーワードを提供。
stc32
0349デフォルトの名無しさんNGNG
こんなことやってるの俺だけかな?

namespace std {
#ifdef UNICODE
typedef wstring TSTRING;
typedef wstringstream TSTRINGSTREAM;
#else
typedef string TSTRING;
typedef stringstream TSTRINGSTREAM;
#endif
}

0350デフォルトの名無しさんNGNG
>>349
この方がシンプルじゃないかい?

namespace std {
typedef basic_string<TCHAR> TSTRING;
typedef basic_stringstream<TCHAR> TSTRINGSTREAM;
}
0351デフォルトの名無しさんNGNG
動けばどっちもおなじだろ
0352デフォルトの名無しさんNGNG
>>351
んなこたぁない
0353349NGNG
>>350
おお。全然気づかんかった。
サンクス
0354デフォルトの名無しさんNGNG
>>131
>129に絡んで、リストビューの中のチェックボックスをオン、オフしたときに
>反応を得るにはどうすればよいのでしょうか?

前に LVN_ITEMCHANGED と書いた者だが。

俺のプログラムでは必ず1つはチェックされている事が必要なので,
LVN_ITEMCHANGING で最後の1つのチェックが外されようとしているか判定していて,
うまく動作している。

お前は LVN_ITEMCHANGED 自体を受信できていないとか書いていたが,
LVN_KEYDOWN とかも受信できていないのか?




0355デフォルトの名無しさんNGNG
WM_NOTIFY 知らないとか。
0356344NGNG
>>347
解決できました
Single aをInt(a)でCopyMemoryに放り込んでいたため
おかしな数値になっていました。
ちゃんとinteger変数に代入してやればうまくいきました
変な質問ですいませんでした
0357デフォルトの名無しさんNGNG
すいません。おしえてください。
ウインドウプロシージャとデータの送受信をするにはどうすればいいのでしょうか?
グローバル変数を使えば楽なんでしょうけど、プロの人はそんなことはしないのかなと
思って。
0358デフォルトの名無しさんNGNG
>>357
送受信する相手による。
0359デフォルトの名無しさんNGNG
#include <windows.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int)
{
::Sleep(5000);
return 0;
}

と、コンパイルして実行するとカーソルが砂時計に変わりますが、
カーソルを変化させないようにするにはどうしたらいいのでしょうか?
0360357NGNG
>>358
たとえばウインドウから子ウインドウを作って、それぞれのプロシージャ間でやりとり
したいデータがある場合はどうすればよいのでしょうか?
0361357NGNG
普通は関数間でやりとりしたいのなら引数で渡すとか、関数の返り値を使うとか
すると思うのですが、プロシージャは引数が決まっているからそういうことは
できないですよね?
0362デフォルトの名無しさんNGNG
SendMessage(hwnd_dst, WM_APP+α, (WPARAM) length, (LPARAM) pointer)
で大抵のデータは送れるわけだが。

俺なら同一スレッド内ならウィンドウプロシージャ無視して直接対象ウィンドウを管理してるオブジェクトのメンバ関数呼び出すが。
0363デフォルトの名無しさんNGNG
>>359
未確認ですが。。
呼び出し側のCreateProcessのSTARTUPINFOで
STARTF_FORCEOFFFEEDBACKを指定。
0364デフォルトの名無しさんNGNG
>>361
CreateWindow()/CreateWindowEx() の最後のパラメータも使ってあげてね♪
やり取りしたいデータのポインタか、その構造体のポインタを渡せば幸せになれるかも。
0365デフォルトの名無しさんNGNG
プリンタのプロパティから設定できる「印刷後ドキュメントを残す」を、プログラム側から設定したいのです。
GetPrinterを使って、PRINTER_ATTRIBUTE_KEEPPRINTEDJOBSの値を調べるところまではできたのですが、
値を設定するにはどうしたらよいでしょうか?
お知恵をお貸しください。
0366デフォルトの名無しさんNGNG
>>361
基本的には>>362でいいと思うけど、
WndPrco間の通信はマルチスレッド処理になるから、処理順とか資源管理には気をつけてね。
デッドロックとか分かりにくいバグ引き起こしたりするから。
0367デフォルトの名無しさんNGNG
>>363
�dクス!
0368デフォルトの名無しさんNGNG
グローバル変数使えばいいじゃん
そんなことこだわるほうが馬鹿のすること
0369357NGNG
>>362
>SendMessage(hwnd_dst, WM_APP+α, (WPARAM) length, (LPARAM) pointer)
>で大抵のデータは送れるわけだが。
なるほど。
ありがとうございます。

>俺なら同一スレッド内ならウィンドウプロシージャ無視して直接対象ウィンドウを管理してるオブジェクトのメンバ関数呼び出すが。
すいません。
素人なんでもう少し詳しく教えていただけないでしょうか?


>>368
>グローバル変数使えばいいじゃん
>そんなことこだわるほうが馬鹿のすること
そうなんですか?
自分は所詮素人なんでグローバル変数をがんがん使えばいいのかなという気もしますが・・
プロの人もそうなんでしょうか?
0370デフォルトの名無しさんNGNG
慣れてくるまで、簡単な方(理解しやすい方)を使った方がいいぞ
そうして、動くものを完成させるのが、最も重要なことだよ
そんなところで悩んでいたら、いつまで経っても完成しないよ

そのうち、いろいろな方法を覚えてきて、改良を加えればいい話。
0371デフォルトの名無しさんNGNG
質問です。
CreateWindowでウィンドウつくってその親ハンドルをもとにコードでボタン等を配置するのではなくて、
VBみたいに、ウィンドウ(フォーム)にボタンなどはりつけたウィンドウを、はじめからよべませんか?
リソースでつくってよぶのかと思ったんですが、リソースではダイアログしかつくれないし、
ダイアログだとアイコンが使えないので意図とちがうので。
0372デフォルトの名無しさんNGNG
>>369
グローバル変数はアクセスそれ自体は簡単だけど、
データ更新の通知とか内容の有効性とかアクセス排他とか、
外堀をきちんと埋めておかないと意外なところで逆襲食らいがちなので、
一番使い方の難しい手法だったりする。分かっててやる分には勝手だけどね。

専用の仕組みがあるのなら、一見難しいようでもそれを使うのが一番簡単ってのはよくある話。
というのは、必要性があるからこそそういう仕組みが作られてるからで。

単純に++してるだけだと安心してたら、マルチプロセッサにもってった途端に破綻したことあったな。ハハハ
0373デフォルトの名無しさんNGNG
>>371
無理。
どうしてもやりたかったらVBからCで作ったDLLを呼び出すとかそういうことを考えてみたら?
0374デフォルトの名無しさんNGNG
>>373
そうなんですか。
じゃあ地味にコードかいてコンパイルして表示しては配置を直さないといけないんですね。
0375デフォルトの名無しさんNGNG
>>371
アイコンって、CTRL+ALTしたときとかに出てくるアレのことなら、
WM_INITDIALOGあたりでWM_SETICON投げればダイアログにも付けられるけど?
0376デフォルトの名無しさんNGNG
>>375
ALT+TABだった。冷房入れてくる。
0377デフォルトの名無しさんNGNG
>374
ダイアログつったって結局表示さすときの制御の違いなんだから、ダイアログリソースをCreateWindowして
ちょこっと設定してやれば普通のオーバーラップウィンドウとして使えると思うぞ。
0378デフォルトの名無しさんNGNG
>>374
お手軽にやるなら、VC++ で MFC 使って CFormView とかでも出来るけど、
見かけだけの問題なら、>>375 のいうようにダイアログで処理するのが簡単。
0379デフォルトの名無しさんNGNG
>>377
>ダイアログリソースをCreateWindowして
まさにそれが知りたいのです。どうやるんですか?
0380デフォルトの名無しさんNGNG
WTL入れてダイアログベースでプロジェクトを開始すればOK
0381デフォルトの名無しさんNGNG
>369
社長、Windowのクラス化というのをご存じでしょうか?

詳しく話を聞かせるのは面倒なので、自分で調べて。
0382デフォルトの名無しさんNGNG
RegisterClass()で登録するウインドウのクラスのことでしょうか?
それぐらいの知識しかありません。
0383デフォルトの名無しさんNGNG
C++で書いてるとはひとことも出てきていないのだが。
0384デフォルトの名無しさんNGNG
>382
ちゃうちゃう。そのウィンドウクラスじゃなくて、C++のclass。

ウインドウプロシージャをクラス内で定義することによって、
メンバを色々出来るようにすること。

>383
>〜メンバ関数呼び出すが。
に反応しているからC++だと決めつけていた。
もしCなら、staticとグローバル関数で妥協なんてのもいかが?
0385デフォルトの名無しさんNGNG
>>384
構造体だろがC++のクラスだろうがHWNDとの対応関係が必要というのがここまでのお話なんだが
0386デフォルトの名無しさんNGNG
>>379
CreateWindowのウィンドウクラス指定のとこにMAKEINTRESOURCE(IDD_DLG)してやりゃいいかと思ってたが、そう甘くなかった。
CreateDialogでできたウィンドウをSetClassLongをつかって背景色やスタイルとかプロシージャを書き換えるといい。

( っ・ω・)っ話
⊂(・ω・⊂ )

漏れもWinMain側で作ったデータをウィンドウプロシージャに使わせようと思って、
調べてるうちにSetProp/GetPropつーAPIを見つけたんだが、これってそういう用途に使っていいものなのか?
このAPIの用途知ってるやつ、教えてください。_|\●__
0387デフォルトの名無しさんNGNG
>>369
他には WM_COPYDATA 使え
0388デフォルトの名無しさんNGNG
>>386
うほ、SetClassLongなんてAPIあったのか・・・。

Set/GetProp系はHWNDに対して、キーに対応する値を複数セット対応づけられるものらしい。
GWL_USERDATAみたいに単一の値である必要がないので、
VBのプロパティを独自に追加できるような感じで、便利っぽい。

>>387
WM_COPYDATAはプロセス間のメッセージ送信に使う奴だあkら、
プロセス内で使うにはちーとオーバー気味な気がする。
(確か内部的にファイルマッピングオブジェクト使うはず)
0389デフォルトの名無しさんNGNG
>>388
サンクスコ。*Propの使い方がわかったよ。英語版MSDNだとどうも感じがつかめなくて、
VBみたいなIDEのプロパティリストをつくるための、特殊なタイプのAPIかと思ってたよ。
0390デフォルトの名無しさんNGNG
>>384
C++じゃなくてCオンリーでやっています。
でも、>>385の話だとC++にすれば解決するって問題でもないってことですかね?
0391デフォルトの名無しさんNGNG
サブクラス化ってのはC++とはまた別なんだけど、
その辺と混乱してる人いない?

そもそも質問者がどういうレベルなのかで
回答者達の間で解釈が幾つかに分かれてる気がする。
0392デフォルトの名無しさんNGNG
>>386
WinMainはウィンドウを生成するルーチンだけにしたほうがいい。
いろんな初期化とかはWM_CREATEをキャッチしたときにやるべき。
複数のウィンドウにまたがる処理ならデータを渡す方法になやむよりも、
グローバル変数にした方がスマートと思う。
0393デフォルトの名無しさんNGNG
>>392
そのウィンドウが専ら関係するデータならWM_CREATEでやるほうがいいけど、
ウィンドウ間にまたがって使用されるような共通性の高いデータであるならWinMainでやるほうが適切。
case by case。

それにグローバル変数には>>372のような問題もあるので、何がいいかは実装次第。

ところで、この話まだ続けるならこっちでやらない?
http://pc5.2ch.net/test/read.cgi/tech/1049790146/
0394392NGNG
>>393

>>392の
「複数のウィンドウにまたがる処理ならデータを渡す方法になやむよりも、
グローバル変数にした方がスマートと思う。」
の「データ」というのは「WinMainで作ったデータ」の意です。
言葉足らずでスマソ。
つまり完全に>>383氏に同意ってことです。
それと誘導thx。
0395デフォルトの名無しさんNGNG
>>391
>319-320 ですよ。
0396デフォルトの名無しさんNGNG
BMPを表示させる時に、リソーススクリプトを使えば表示出来るのですが、
LoadBitmap()で直接ファイル名を指定すると画像読み込みに失敗してしまいます。

リソーススクリプトを使わずにファイル名で表示させる方法はありませんか?
0397デフォルトの名無しさんNGNG
>>396
LoadImage
0398デフォルトの名無しさんNGNG
>>397
サンクスです
0399デフォルトの名無しさんNGNG
>>386
使ってもいいよ

そのAPIを使っているかはしらないけど、
OLE DnDのドロップターゲットになると
自動で付けられるね。
0400デフォルトの名無しさんNGNG
MSNMessengerの通知ウインドウみたいに
タスクトレイの辺りで小さく表示されるウインドウを
簡単に作るライブラリとか無いですかね?
CreateWindowとかで毎回小さなウインドウを作ればいいのかな?
0401デフォルトの名無しさんNGNG
毎回作らんでも不要なときはShowWindow(,SW_HIDE)しとけばいいんじゃないか?
0402デフォルトの名無しさんNGNG
>>392,399
またレスキターヽ( ´ー`)ノ
ほんとありがとうございます_|\○_
0403デフォルトの名無しさんNGNG
内田こねりで抜きまくり
0404403NGNG
こんな恥ずかしい誤爆初めて
0405デフォルトの名無しさんNGNG
403以前の君のレス番を書いていてくれたらもっと面白かったんだけどな:D
0406デフォルトの名無しさんNGNG
晒しage
0407デフォルトの名無しさんNGNG
普段はリファレンス検索も面倒がる俺が
内田こねりを無意識にgoogle (・∀・)ホホウ ナカナカ
0408デフォルトの名無しさんNGNG
どなたかインスタンスハンドルからメインウィンドウのウィンドウハンドルを取得する方法知っている方いらっしゃいますか?
ShellExecute の戻り値を使いたいのです。
0409デフォルトの名無しさんNGNG
>>408
ShellExecuteの戻り値って、16bit Windowsじゃなきゃ意味ないよ。

って、16bit Windows使ってたらスマソ
0410デフォルトの名無しさんNGNG
>>409
レスありがとうございます。
本当ですね。MSDNをちゃんと読んだら書いてありました(汗
一応32ビットでやってるのでShellExecuteの戻り値はエラーチェックにしか使えないわけですね・・・。
戻り値の型だけ見て早合点してしまいました。
不注意ですみません。

初めはCreateProcessで同様のことをやってみようと思ったのですが、取得できるのがPROCESS_INFORMATION構造体でプロセスとスレッドのハンドルとIDってとこでしょうか。
ここからメインウィンドウのハンドルを取得する方法がやっぱりわかりません。
果たしてそんなことは可能なのでしょうか?
0411デフォルトの名無しさんNGNG
>>408
ShellExecuteEx()を使ってプロセスハンドルを取得。
後はGetProcessId()、EnumWindows()、GetWindowThreadProcessId()の組み合わせ。
0412デフォルトの名無しさんNGNG
スレとは関係なくて申し訳ないんですが
アプリケーションエンジニア試験とネットワークのテクニカルエンジニア試験って
どっちのほうを先にやるのが一般的なんですか?
っていうかどっちのほうが簡単ですか?
あほな質問でごめんなさい
0413デフォルトの名無しさんNGNG
スレと関係ないとわかってなぜこのスレに書く?
お前は吉野家コピペか。
0414デフォルトの名無しさんNGNG
>>412
どっちでもいい。
君がとりたい方をとりたまえ。
0415デフォルトの名無しさんNGNG
>>413
まぁまぁ。
妥当なスレを見つけられなかったんだろ。
そういきりたつなよ。
0416デフォルトの名無しさんNGNG
>411
便乗質問なんだけど、
GetProcessId()って見つからないのだが、ハンドルからIDを求める方法ってあるの?

>410
CreateProcess()もありなら
>411に追加で、探索範囲が狭くなるけど、EnumThreadWindows()なんてのもある。
0417デフォルトの名無しさんNGNG
GetProcessId は XPSP1,Server2003 or later
汎用的な方法はHWNDに対してグローバルフックしてGetCurrentProcessIdかな
0418417NGNG
根本的に間違っていた
2000Pro以降ならNtQueryInformationProcessかな
0419デフォルトの名無しさんNGNG
Win32って、例えばウィンドウを分割した場合、
2つのViewにそれぞれメッセージループを実装することってできますか?
0420デフォルトの名無しさんNGNG
他のプロセスのウインドーをしらべるのに
ウインドーに書いてある文字以外を使って
プログラムがわかる方法おしえてください
0421デフォルトの名無しさんNGNG
>>420
なにから何を導き出したいのか曖昧だぞ。
0422デフォルトの名無しさんNGNG
>>419
チャイルドウィンドウが独自のメッセージポンプ(UIスレッド)を持つことは可能ですよ。
でも「Viewにそれぞれメッセージループを実装する」っていう感じではなくて、
別スレッドを作成してそちらでチャイルドウィンドウを作り、そのウィンドウのメッセージを
処理するって形になります。
0423デフォルトの名無しさんNGNG
>>422
ありがとうございます。
結構面倒そうですね。
0424デフォルトの名無しさんNGNG
通常、intはfprintf(fp,"%d",xxxx);と、charはfprintf(fp,"%s",xxx);
というようにファイルに書き込んでいますが、COLORREFはどうやってやられてますか?
あと、COLORREF=RGB(赤,緑,青);としますが、COLORREFから赤だけとか、青だけとかの値を
抽出することってできますか?
0425デフォルトの名無しさんNGNG
>charはfprintf(fp,"%s",xxx);
そんなやつぁいねえ。
>ファイルに書き込んでいますが、COLORREF
%08x
つか、Win32APIじゃねえな、この質問は。
>COLORREFから赤だけ
Get[RGB]Value
0426424NGNG
有難うございます。
>>charはfprintf(fp,"%s",xxx);
>そんなやつぁいねえ。
では、どうしますか?
cout << COLORREF << endl;とか?
0427デフォルトの名無しさんNGNG
COLORREFの定義がどうなってるかも知らなさそうな勢いだな・・
0428デフォルトの名無しさんNGNG
>>424=>>426
>>>charはfprintf(fp,"%s",xxx);
>>そんなやつぁいねえ。
>では、どうしますか?
アナタ C シッテマスカ?
fprintf(fp, "%c", xxx);
0429424NGNG
>>428
有難うございます。
つうかcharは
char xxx[10+1];

のつもりで書きました。

スレ汚しすみません。有難うございました。
0430デフォルトの名無しさんNGNG
lstrcpyやlstrlenの先頭にある 'l' って何かの略なんでしょうか?
知人は「L"text" の 'L' じゃね〜の?」って言ってました。
ご存知の方、教ぇてけろ。
0431デフォルトの名無しさんNGNG
DirectXでプログラミングをするときは、
やはりWin32を使ったほうがいいのでしょうか?
再生したり、フレームからビットマップを取り出してウィンドウに貼ったり、
そいつをポップアップメニューでいろいろ処理したり、といったことをしたいのですが。
0432デフォルトの名無しさんNGNG
いいです。
0433デフォルトの名無しさんNGNG
>>431
用途と、実装者の能力による。
今時DirectXくらいどの言語でも扱えるから、自分の得意なのでやってみればいい。
0434デフォルトの名無しさんNGNG
よくこんな質問に答えられるなあ
0435デフォルトの名無しさんNGNG
それがお前との差
0436デフォルトの名無しさんNGNG
>>430
LPTSTR lstrcpy(
LPTSTR lpString1, // address of buffer
LPCTSTR lpString2 // address of string to copy
);

Lは "long"
16ビットWindowsは、ポインタサイズを"near" "long"で区別していた。
32ビットWindowsは区別しない。
0437デフォルトの名無しさんNGNG
>>435
頓珍漢な質問にもっと頓珍漢な答えが出来るヤシとそうでないヤシとの差だな。
>>436
nearとの対比ならfarだと思う。
0438デフォルトの名無しさんNGNG
どこかで WINAPI の
メッセージやマクロや関数を大量に載せてたHPを
見かけたんですが、改めて探すと発見できません。
どこかいいサイト知りませんか?
0439デフォルトの名無しさんNGNG
MSDN
0440430NGNG
>>436
ロングポインタの L だったんですね、サンクスです。
0441デフォルトの名無しさんNGNG
>>436

Large の L じゃないのか(笑)
0442438NGNG
>>439
�dクス。
いいところを教えてもらいました。
0443デフォルトの名無しさんNGNG
far はー……DOSか。
0444デフォルトの名無しさんNGNG
LはLoveのL♪
0445デフォルトの名無しさんNGNG
>>441
でもさ、LP〜って型はこういう具合に山ほどあるよ
typedef int INT, NEAR *PINT, FAR *LPINT;
(NEAR/FARはWin32では#defineで消される)
0446デフォルトの名無しさんNGNG
Farは元々はDOS時代の用語で、8086のリアルモードでセグメント境界を越えるポインタのこと。
セグメント:オフセットで表記する、1Mバイト空間を指す物理アドレス。

Nearは16bitのポインタで、Win16(16bitプロテクトモード)の普通のポインタ。
なお物理アドレスは「セグメントセレクタ(16bit):オフセット(16bit)」の32bitで表現するので、
リアルモードとの連想でこれをFarポインタと呼んだ。

Longは32bitのポインタで、Win32(32bitプロテクトモード)の普通のポインタ。
Nearを16bit→32bitに拡張したもので、オフセットだけでWin16のFarポインタと同様の
32bit空間を表現できるようになった。「これがNearとFarの区別がなくなった」という言葉の意味。

Win32でも「セグメントセレクタ(16bit):オフセット(32bit)」をFarポインタと呼ぶかもしれないけど、
これは16bitプロテクトモードと違って物理アドレスを意味しないし、用語としても一般的ではない。かも。
0447デフォルトの名無しさんNGNG
lpszはlong pointer string terminated by zeroの略
0448デフォルトの名無しさんNGNG
long pointer to a string terminated by zeroだ
0449デフォルトの名無しさんNGNG
>>447
こう言う略語の元ネタが分かるサイトってどっかないかなぁ?
MSDNじゃ分からなかったよ(´・ω・`)
0450デフォルトの名無しさんNGNG
どうでもいいけど、lpszについてはASCII string terminated by zeroのASCIZなんかを知ってると理解しやすいのかな。
略語の元ネタをまとめたサイトは・・・知らないけど命名規則としてハンガリアン記法を使ってるからこの辺が多少参考になるかも。
http://masafumi-t.cool.ne.jp/ready3.htm

# つーか俺の場合intのプリフィックスにはnを使ってるけどなぁ・・・
0451デフォルトの名無しさんNGNG
(・∀・)ウソツキー ASCIZハ ASCII with Zeroノリャクダヨー
0452450NGNG
orz
0453デフォルトの名無しさんNGNG
ところでMSは相当いい加減なハンガリアン記法なんとかしてほしい。
0454デフォルトの名無しさんNGNG
>>453
.NETでは止めたんだけどな。過去の資産には手が回らんらしい。

つか今更弄ったら混乱するだけだと思うぞ。

0455デフォルトの名無しさんNGNG
>>418
Microsoftはサポート対象にしてないが
NT系ならもっと前からNtQueryInformationProcessは使えるけどね
0456デフォルトの名無しさんNGNG
exeヘッダのMZは?
0457デフォルトの名無しさんNGNG
MZ80K?

0458デフォルトの名無しさんNGNG
Mark Zbikowsky
0459デフォルトの名無しさんNGNG
Mark Zbikowski
0460デフォルトの名無しさんNGNG
MS-DOZ
0461デフォルトの名無しさんNGNG
さいた まんぞう
0462デフォルトの名無しさんNGNG
祝一平
0463デフォルトの名無しさんNGNG
>>459
何の冗談かとおもったら、それほんとなのか・・・勉強になった。まとめてみる。

・MZ
DOS用EXEのヘッダ。DOS2.0開発責任者の一人、Mark Zbikowski氏のイニシャルに由来。
・NE
Win16用EXEのヘッダ。New Executableの略。
・LE
仮想デバイスドライバ(VxD)のヘッダ。Linear Executableの略。
・PE
Win32用EXEのヘッダ。Portable Executableの略。
・LX
OS/2用EXEのヘッダ。Linear eXecutableの略?
0464デフォルトの名無しさんNGNG
Win32API とは全く関係ない話題だが、
えらい勉強になったゾ
0465デフォルトの名無しさんNGNG
今のexeでもMZから始まってるんだよな。
WinFXでもMZだったりするのかな。
0466デフォルトの名無しさんNGNG
WinFXの雛形であろう.NETのコンパイラが吐くバイナリもMZ→PEだからな。一応後方互換性のためとなってるけど
実際のところは単にthis program can't be run in dos modeって出すだけだ罠
0467デフォルトの名無しさんNGNG
すでに、スタブを実行させるのすら面倒がいる罠。
0468デフォルトの名無しさんNGNG
補足トリビア。
昔のDOSではMZではなくZMでもOKだった。
0469デフォルトの名無しさんNGNG
タスクバーに表示されるWindow(Alt+Tab時に表示されるWindow)を列挙したいんだけど
EnumWindowでやると余計な者まで一杯出てしまいます。
なんでGetWindowLongでStyleをとってWS_CAPTIONとかで選り抜いてみたんだけど
それでも多いんですよ。これやってる人たくさんいると思うんだけど
やり方を上手くググれませんでした。

たしかCreateWindowしたときにタスクバーに入るかどうかはStyleで
決まってたと思ったけど上のやり方では無いんでしょうか
0470デフォルトの名無しさんNGNG
>>469
(親がデスクトップ || NULL) && WS_EX_TOOLWINDOWでない && HIDEされてない
0471デフォルトの名無しさんNGNG
>>470 感謝!
0472デフォルトの名無しさんNGNG
TVINSERTSTRUCT構造体のANSIバージョンからUNICODEバージョンへ
若しくはその逆の変換をしたいと思っています。
しかし、メンバの中にunionが存在するので
普通にコピーしていくだけじゃ駄目な気がします。
この場合はどのようにすればいいのでしょうか。
0473デフォルトの名無しさんNGNG
マウスカーソルの現在位置を知るときにGetCursorPosだと
スクリーン全体のx,y座標になってしまいます・・
ウインドウでのx,y座標を知るにはどうすればいいですか?
0474デフォルトの名無しさんNGNG
XPのタスクバーでグループにまとめられるかどうかは
どういう基準で判断してるんでしょうか
>>473
ScreenToClient
0475デフォルトの名無しさんNGNG
>>474
ありがとです
0476デフォルトの名無しさんNGNG
同一プロセス、同一クラス
0477デフォルトの名無しさんNGNG
>>472
IE4未満を指定すればunionはでてこないし、あっても普通にコピーしていい。
当たり前だけどその後item(or itemex)のpszTextを変換しろよ。
0478デフォルトの名無しさんNGNG
Windowsプログラムで使われるデータ型(HWNDやHDCなど)を
VC++6でデフォルト青文字にて表示させるためのファイルが
あったと思うのですが、配布場所をご存じないでしょうか

確かUser.datとかそんな感じのファイル名だったと思うのですが
0479デフォルトの名無しさんNGNG
ツールバーでボタンを右詰にするにはどうすればいいのでしょうか?
0480教えてくださいNGNG
とあるサンプルコードのウィンドウプロシージャに
case WM_LBUTTONUP:
PlaySound(TEXT("laugh.wav"), NULL, SND_ASYNC | SND_FILENAME);
return 0;
こんなのをつけてみたのですが
外部参照1が未解決です、とエラーがでてしまいます。
laugh.wavをプロジェクトフォルダの中にいれてみたり、デバッグフォルダに
いれてみたり試してみたのですが、うまくいきません。
ウィンドウプロシージャに上みたいなコードを付け加えてlaugh.wavをフォルダに
いれるだけでは、だめなんでしょうか??
VC6.0PROを使っています
0481デフォルトの名無しさんNGNG
winmm.lib
0482デフォルトの名無しさんNGNG
>>478
UserType.dat
0483デフォルトの名無しさんNGNG
>>480
少なくともlaugh.wavは無関係。
0484デフォルトの名無しさんNGNG
>>482
レスありがとうございます、無事編集済みのを見つけることができました

ひとつ貼っておきますね、ここの人にも感謝しつつ
ttp://www.beginthread.com/Article/dev.null/UserType.Dat/
0485デフォルトの名無しさんNGNG
裏描画域を作るCreateCompatibleDCやCreateCompatibleBitmapは、
GetDC、BeginPaint、どちらのHDCから作っても同じのが出来るのでしょうか。
0486デフォルトの名無しさんNGNG
>>485
できるけどBeginPaintだとEndPaintまでしか使えないよ
WM_PAINTから抜けたら終わりだよ
0487485NGNG
>>486
ゲーム開始時に作って終了時に消す裏描画域を作りたいのです。
表示する内容を常に保持しておいて、
WM_PAINT、それ以外、兼用として使いたくて。
0488デフォルトの名無しさんNGNG
>>487
GetDCで無問題
0489485NGNG
>>488
分かりました。ありがとうございました。
0490デフォルトの名無しさんNGNG
つーかGetDC(NULL)。
0491デフォルトの名無しさんNGNG
WinMainで使っていた変数をCreateThread関数で作ったスレッドに渡すにはどうすればいいですか?
0492472NGNG
>>477
サンクスです。
よく考えたら構造体のサイズはAもWも同じなので
memcpyしてpszTextだけ挿げ替えて使用するようにしました。
0493デフォルトの名無しさんNGNG
>491
第四引数LPVOID lpParameterを用いる。
0494491NGNG
>>493
変数が一つだとそれでいけるんですけど、3つくらい渡したい変数があってどうすればいいか悩んでるんです
0495デフォルトの名無しさんNGNG
>>494
構造体
0496デフォルトの名無しさんNGNG
>>476
IEを別プロセスにしていてタスクマネージャ上でも明らかに別プロセスなのに
タスクバー上では同じグループになっているから違うと思います。
0497名無しさん@そうだ選挙に行こうNGNG
マルチスレッドで作れるスレッド数に上限ってありますか?
0498名無しさん@そうだ選挙に行こうNGNG
>>497
http://www.microsoft.com/japan/msdn/library/ja/jpdllpro/html/_win32_createthread.asp?frame=true
> 解説
> 1 つのプロセスが作成できるスレッドの数は、利用可能な仮想メモリによって制限されます。
> 既定では、各スレッドに 1MB のスタック空間が割り当てられています。
> そのため、最大 2,028 個のスレッドを作成できます。
> また、既定のスタックサイズを減らすことにより、さらに多くのスレッドを作成することもできます。
0499名無しさん@そうだ選挙に行こうNGNG
スタックを使わないプログラムを書けばメモリーしようしないでいくらでもつくれるの?
0500名無しさん@そうだ選挙に行こうNGNG
今だ!500ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
        ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ
0501名無しさん@そうだ選挙に行こうNGNG
>>499
だから利用可能な仮想メモリによって制限されます、って書いてるやん
0502名無しさん@そうだ選挙に行こうNGNG
じゃあ、シングルスレッドのスタックのサイズを減らすにはどうやるの?
0503名無しさん@そうだ選挙に行こうNGNG
strftimeの様にFILETIME構造体を日付に書式化するAPIって無いですか?
SYSTEMTIMEからの変換でも構わないですが。
ロケール関係でwsprintfで書式化する方法以外を探してます。
0504名無しさん@そうだ選挙に行こうNGNG
FILETIME―FileTimeToSystemTime()→SYSTEMTIME―GetTimeFormat()→(゚д゚)ウマー
0505名無しさん@そうだ選挙に行こうNGNG
>>504
サンクスです。でもコレは時間だけしかフォーマット出来ないのか、、、
でも
GetDateFormat(lpsz)
GetTimeFormat(lpsz + lstrlen(lpsz))
で何とかなりそうなので使わせていただきます。
贅沢言えば一発で出来るのが有ると良いんですけど。
0506名無しさん@そうだ選挙に行こうNGNG
DWORD型変数dwの値を、デバッグ用にfprintfで出力したいのですが、
フォーマットはどのように指定すればいいのでしょう?
DWORDはunsined long のtypedefのようなのですが、

fprintf(stream,"%lu\n",dw);

としてしまって良いのでしょうか?
でもこうするとtypedefしている意味が無いような気がしますし…
0507名無しさん@そうだ選挙に行こうNGNG
気持ちはわかるが、そうするしかない
0508名無しさん@そうだ選挙に行こうNGNG
>>502
なんで>>498のリンク読まないの?
0509名無しさん@そうだ選挙に行こうNGNG
>>506

#define DWF "%lu"
とか定義しておいて、
fprintf(stream,DWF"\n",dw);
ってのはどうよ?
古いコンパイラでは使えないけどナ。
0510名無しさん@そうだ選挙に行こうNGNG
fprintf(stream,"%lu\n",(unsined long)dw);
ってやればいい
0511名無しさん@そうだ選挙に行こうNGNG

   時が止まった
0512名無しさん@そうだ選挙に行こうNGNG
continue;
0513名無しさん@そうだ選挙に行こうNGNG
MessageBox(NULL , TEXT("選挙行ったか?") ,TEXT("質問") , MB_YESNO | MB_ICONQUESTION );
0514名無しさん@そうだ選挙に行こうNGNG
PCに接続されているHDDのリストを取得するには、
どういうAPIを使えばいいんでしょうか?
CドライブとかDドライブとかいう単位ではなく、
「ディスクの管理」で見られる、ディスク0とかディスク1
とかいう物理的な単位でです。
0515名無しさん@そうだ選挙に行こうNGNG
純粋に初心者の質問なんですが、
TEXT("選挙行ったか?") のTEST("")って使わなくてもいいのにみんな使ってるのはなんでですか?
0516名無しさん@そうだ選挙に行こうNGNG
>>515
本に書いてあったから。
コードの流用性が上がるから。
めんどい以外の損がないから。
習慣。
なんとなく。
今日はいい電波ですね。
ぬるぽ。
はらへった。
早く帰りてーなあ。
0517名無しさん@そうだ選挙に行こうNGNG
TEST("")って、アサーションでもしてるの?
0518名無しさん@そうだ選挙に行こうNGNG
>>517
ちょっと前の過去ログを読めば、TESTがTypoだと気付くと思うんだが。
0519名無しさん@そうだ選挙に行こうNGNG
TESTって何をするものですか?
関数ですか?
0520名無しさん@そうだ選挙に行こうNGNG
テストする関数
0521名無しさん@そうだ選挙に行こうNGNG
拡張子の説明(エクスプローラの詳細で表示される「種類」の項目の文字列)を
取得する為以下の様にしました。

SHFILEINFO shfi;
::SHGetFileInfo("hoge.txt", 0, &shfi, sizeof(SHFILEINFO), SHGFI_TYPENAME);

しかし、この場合実際に存在するファイルを指定しなければ取得出来無いようです。
その為、一々tempファイルを作成していますがかなり効率悪そうです。
これを何とかして取得出来る様にならないものでしょうか。
0522名無しさん@そうだ選挙に行こうNGNG
#ifdef UNICODE
#define TEXT(s) L##s
#else
#define TEXT(s) s
#endif
だっけ?
0523名無しさん@そうだ選挙に行こうNGNG
名無しの「そうだ選挙に行こう」はそろそろやめた方がいいよな
0524デフォルトの名無しさんNGNG
>521
当たり前です。
たとえば、hoge.txtという名前のフォルダが存在できる以上、
実物を見ないと種類は決定できないのは明白でしょう。
0525デフォルトの名無しさんNGNG
>>522
ってことは、TEXT(lpszHoge)とかやっちゃいけないはずだよね
0526デフォルトの名無しさんNGNG
char *pszHoge = TEXT("HOGE");
こんなぼけもいる。
0527デフォルトの名無しさんNGNG
>>524
なるほど。しかし拡張子の種類の文字列を取得したいだけなので
実物のファイルがフォルダか否かは関係無いんですよ。
フォルダオプションのファイルの種類なんかどう取得してるんでしょうね。
もっと全然違う取得法が有るんでしょうか?
0528デフォルトの名無しさんNGNG
>>527
HKCR参照汁。
0529デフォルトの名無しさんNGNG
>>527
レジストリを覗けばいいんでない?
http://www.lhut32.com/page5.html
の下のほうみたく。
0530デフォルトの名無しさんNGNG
>>528
だせえじゃん
0531デフォルトの名無しさんNGNG
>>530
脳無しのほうがダサダサ
0532デフォルトの名無しさんNGNG
なに言ってんの?
0533デフォルトの名無しさんNGNG
ださくない方法教えれ
0534デフォルトの名無しさんNGNG
>>521
SHGFI_USEFILEATTRIBUTESを追加で存在しなくても取得できる
0535デフォルトの名無しさんNGNG
つーか、HKCR検索するのが一番早いと思うけどな。
0536514NGNG
ずっと調べてるんですがまだわからないです。
物理的な単位はデバイスIDってよぶんですかね。
0537521NGNG
>>534
取得出来ました。
SHGFI_USEFILEATTRIBUTESにそんな効果が有るとは盲点でした。
WEBとかMSDNとか見るとファイルの属性を取得するフラグと書かれてるだけですからね。
MSDNは完全に翻訳して理解してたわけじゃないのでアレですが。
0538デフォルトの名無しさんNGNG
>>536=514
WinNT系ならCreateFile()で指定できなかったっけ? APIのマニュアルよく読んでみ。
0539デフォルトの名無しさんNGNG
>>208
こいつはまだオーストラリアか?
0540デフォルトの名無しさんNGNG
>>538
\\,\PHYSICALDRIVExってやつですね。できそうです。
ありがとうございました。
0541デフォルトの名無しさんNGNG
>>208
マジで行ってるのか?
デスマの休憩ぐらいはいいか
05424 ◆MwGQyQRf/o NGNG
>>539,541
もう帰ってきたよ。2週間位行ってた。
向こうは冬だったけど、日本は暑いね。
0543デフォルトの名無しさんNGNG
1週間の間違いだろ
05444 ◆MwGQyQRf/o NGNG
>>543
いや、約2週間。6/28に日本を出発して
次の日にシドニー到着。2chに書き込むの
忘れてて、7/2にメルボルンで書き込み。
んで、7/10に帰ってきた。>>208の書き込みが
ちょっと、まぎらわしかったね。ゴメソ。
0545デフォルトの名無しさんNGNG
なるほど。つーか決めてから三日で行ったんですが。身軽でいいっすね
05464 ◆MwGQyQRf/o NGNG
間違いメルボルンじゃなくてミルデューラだった。
0547デフォルトの名無しさんNGNG
>>542
冬ってことは12月くらい?
05484 ◆MwGQyQRf/o NGNG
これ以上、語るとスレ違いとか言われそうなんで、
これで最後にします。スレ汚しスマソ。

>>547
向こうは北半球なので、日本と完全に逆。
場所にもよりますが、(日本の月+6)%12って
感じで…。1月位の気候かな?

>>545
フリーのPGで、しかもあまり仕事しないので(w
3ヶ月位仕事して9ヶ月遊ぶというような生活を
しているので、身軽です。遊ぶ分しか仕事
しないので、貯金は全然無いです…(;´Д`)
0549デフォルトの名無しさんNGNG
CreateWindowのクラス名をBUTTONとして作ったボタンに
SetWindowLongPtrを使ってWS_THICKFRAMEを追加してサイズ変更できる
ボタンを作ったのですがWS_EX_WINDOWEDGEもいっしょにくっついてきてしまいます
SetWindowLongPtr等をつかってWS_EX_WINDOWEDGEを取り除こうとしたのですがだめでした
WS_THICKFRAMEを自前でエミュレートするのは避けたいのですが方法はありますか?
0550デフォルトの名無しさんNGNG
プロシージャーのサブクラス化ぐらいしか思いつかないなぁ
0551デフォルトの名無しさんNGNG
>>548
一年中仕事してるのに貯金が無い人へのあてつけですか?
0552デフォルトの名無しさんNGNG
>>551
一年中仕事しているし貯金もないけど、そこそこの生活を維持できた親も養えているから不満はありません。
0553デフォルトの名無しさんNGNG
>>551
でも、フリーで貯金無いと、「仕事無し→即あぼーん」だからね…。
かなり、綱渡り状態。会社で働いてて貯金無いのとは、
比べ物にならないと思うよ。
0554教えてくださいNGNG
ドゥオオオ
PlaySound()を使うにせよmciコマンドを使うにせよ、
wavファイルを再生しようとすると外部参照が解決できません
というエラーがいつもでてしまうのですが、
wavファイルを再生するときは何か事前に設定したりしないと
だめなんでしょうか???
VC++6.0PRO使ってるんですが。
なんなんだ一体???ホゲゲ???
0555デフォルトの名無しさんNGNG
#pragma comment(lib, "winmm.lib")
0556デフォルトの名無しさんNGNG
とりあえずエラーメッセージを嫁。
0557デフォルトの名無しさんNGNG
つい最近全く同じ質問を見たきがするんだが。
0558デフォルトの名無しさんNGNG
ドゥオオオ
0559デフォルトの名無しさんNGNG
定番質問は誰かまとめればいいのにと思ったりしないでもない
0560デフォルトの名無しさんNGNG
まとめたってどうせ読まずに質問する奴は後を絶たないと思ったりしないでもない
0561教えてくださいNGNG
こんなエラーなんですけど

mci2.obj : error LNK2001: 外部シンボル "__imp__mciGetErrorStringA@12" は未解決です
mci2.obj : error LNK2001: 外部シンボル "__imp__mciSendCommandA@16" は未解決です
Debug/mci2.exe : fatal error LNK1120: 外部参照 2 が未解決です。

つい最近の同じ質問も私のやつです。
っていうかPlaySound()で解決しないならmciコマンドでやろうと
思ったんだけどやっぱり同じエラーでてまたしても立ち往生です。
外部参照が未解決ってエラーは何をミスってると出るエラーなのかだけでも教えてください
0562デフォルトの名無しさんNGNG
>>561
必要なlibをリンクしてない
0563デフォルトの名無しさんNGNG
リンクすべきライブラリをリンクしてない。
0564563NGNG
カブッタ orz
0565教えてくださいNGNG
あ、なるほど
winmm.libというのがその必要なライブラリってことですな??
0566教えてくださいNGNG
ちゅーか手元の本にはそういう肝心なことが書いてない・・・
ドゥオオオなんだこの本は!
0567デフォルトの名無しさんNGNG
書名を更科
0568デフォルトの名無しさんNGNG
>>567
Programming Windows
0569デフォルトの名無しさんNGNG
使ってる環境が何か知らんが、
ライブラリのリンク法くらい調べたほうがいい。
0570デフォルトの名無しさんNGNG
おまえは某ランドのコンパイラ使っとけ
0571デフォルトの名無しさんNGNG
見事にスルーされてる可哀相な>>555
0572デフォルトの名無しさんNGNG
555==571
0573デフォルトの名無しさんNGNG
>>571慰めて
0574デフォルトの名無しさんNGNG
>>571
一応>481も
0575デフォルトの名無しさんNGNG
メニューバーの文字のフォントサイズを変えられるAPIは何ですか?
0576デフォルトの名無しさんNGNG
RegSetValueEx
0577デフォルトの名無しさんNGNG
StretchBlt
0578デフォルトの名無しさんNGNG
CreateWindowExの第一引数にWS_EX_TOPMOSTを入れると
常に最前面に表示されるようになるのは解ったのですが。
常に一番後ろに表示されるようにするにはどうしたらいいでしょうか?
0579デフォルトの名無しさんNGNG
WS_EX_USHIROMOST
0580デフォルトの名無しさんNGNG
SetWindowPos(hWnd, HWND_BOTTOM, …
0581デフォルトの名無しさんNGNG
"常に"
0582デフォルトの名無しさんNGNG
スレッド作って
for(;;)
{
 SetWindowPos(hWnd, HWND_BOTTOM, …
 Sleep(1);
}
0583デフォルトの名無しさんNGNG
デスクトップ貼り付けってのなかったっけ
0584デフォルトの名無しさんNGNG
常に後ろにかくれるようなウィンドウにするには
http://techtips.belution.com/ja/vc/0014/
0585デフォルトの名無しさんNGNG
>>580
>>582
有難うございます
SetWindowPosまでもたどりついたのですが
スレッドを使うとは知りませんでした。
0586デフォルトの名無しさんNGNG
>>584
最前面の反対は最背面なんですね
URLまで張ってくれて有難うございます
0587デフォルトの名無しさんNGNG
一番後ろって事はデスクトップウインドウより後ろって事だから、
単に非表示にしても変わらないんじゃね?
0588デフォルトの名無しさんNGNG
一番後ろにすると見えなくなっちゃうけどいいのか?
0589デフォルトの名無しさんNGNG
Lunaビジュアルスタイルにするのってmanifestファイルを
作ればいいってのはわかったんだけど、
リソースに含めるのは↓のとおりにやっても反映されません。
http://hp.vector.co.jp/authors/VA015850/delphi/tips/etc13.html

ちなみに使っているのはlcc-win32(バージョン3.8)です。
リソースコンパイラもそれに付属のものです。
なんかアドバイスお願いします。
0590デフォルトの名無しさんNGNG
>>587-588
デスクトップを使わない時に表示できればいいので大丈夫です。

>>584さんのリンクを参考(というかそのまま)に
case WM_WINDOWPOSCHANGING:
((LPWINDOWPOS)lp)->hwndInsertAfter=HWND_BOTTOM;
break;
をウィンドウプロシージャに挿入したら上手くできました。

有難うございました
0591デフォルトの名無しさんNGNG
>>561
つか、コンパイルエラーはAPIの問題じゃなくて環境設定の問題だから、
このスレの前提を満たしていない。背伸びしないでVC初心者スレあたりで聞きなさいな。
0592デフォルトの名無しさんNGNG
以下の様にしてファイルのアイコンを取得していますが
どうもHTMLファイルのアイコンだけが取得出来ません。

SHFILEINFO sfi
SHGetFileInfo("hoge.html", 0, &sfi, sizeof(sfi), SHGFI_SYSICONINDEX | SHGFI_ICON | SHGFI_SMALLICON );
SetIcon(hWnd, sfi.hIcon);

何か足りない処理でも有るのでしょうか。
0593デフォルトの名無しさんNGNG
>>591
コンパイルとリンクの区別がついてない人
0594デフォルトの名無しさんNGNG
>>591もこのスレの前提を満たしていないってオチですか
0595デフォルトの名無しさんNGNG

# Build16の368からコピペ

>質問なのですが、
>
>かなりいろんなサイズのフォント作成して、
>TextOutするアプリを作ってて、Win2kまではフツーに動く。
>
>が、
>XPで動かすとTextOut終わってフォントDeleteしても
>仮想メモリが増え続けて、アプリを終わらせないと
>戻らない。(リソースの明示的リークはないと思う)
>
>こんな現象に出くわした人いますか?

激遅れすですが、
これってアジア版XPの仕様みたいです。

回避法はあんまり無いので、バグとしか
思えませんけど。
0596デフォルトの名無しさんNGNG
>>595
情報ソースは?
0597595NGNG
>596
開示できるソースは無いです。
0598デフォルトの名無しさんNGNG
タイーホ
0599デフォルトの名無しさんNGNG
脳内ソースじゃ開示できんわな
0600デフォルトの名無しさんNGNG
開示しますた(`・ω・´)
ttp://www.bulldog.co.jp/
0601595NGNG
>599
そのとおりです。
0602デフォルトの名無しさんNGNG
>>592
HTMLって事はIEかネスケでそ?
0603デフォルトの名無しさんNGNG
ダサい発言禁止
0604デフォルトの名無しさんNGNG
×でそ
○ウホ
0605デフォルトの名無しさんNGNG
質問させてください。
HDCからHBITMAPを作成する事は可能ですか?
方法があれば教えて頂きたいのですが。
0606デフォルトの名無しさんNGNG
CreateCompatibleBitmap
0607デフォルトの名無しさんNGNG
>>605
やりたいことを「ちゃんと」書きなさい
0608THE 初心者NGNG
プログラミングの本を購入して、その中にプログラムらしき物が書いてあって、これを打ち込んでビルドしてくださいっていうところがあるんですが、どこに打ち込んだらいいんでしょうか?
メモ帳でしょうか?また、打ち込んだプログラムをどうやって起動させるのでしょうか?
教えてくださいおねがいします。
えっと、なんかCプログラミングってかいてあります。だからCなのかな?
すっごく初歩の質問ですみません
0609デフォルトの名無しさんNGNG
>>608
よそへ行きなさい
0610THE 初心者NGNG
ごめんなさい。かくとこ間違えました
0611605NGNG
>>607
例えば、ウィンドウのHDCに転送した画像を
HBITMAPとして確保したいのですが、どうやればいいのでうしょうか?
0612デフォルトの名無しさんNGNG
1.CreateCompatibleDC
2.CreateCompatibleBitmap
3.SelectObject
4.BitBlt
0613デフォルトの名無しさんNGNG
>>612
この場合、CreateCompatibleBitmap()で作成したHBITMAPから
生のBit配列は取得可能ですか?
0614デフォルトの名無しさんNGNG
CreateDIBSection
0615デフォルトの名無しさんNGNG
GetBitmapBits
まあ、こんなもの使っても嬉しくはないわけだが、
HBITMAPから生のって言ったらこれだろ。
0616デフォルトの名無しさんNGNG
中じゃダメって言ったのにー!
0617605NGNG
分かりました。あとは自分で調べてみます。
ありがとうございました。
0618デフォルトの名無しさんNGNG
つーか、ビットマップに直接アクセスしたきゃ最初からDIBSection使えば。
0619デフォルトの名無しさんNGNG
ビットマップ操作はAPI関係の質問としては定番中の定番だから、
google先生に聞いたほうがまとまったいい答えが見つかるよ。
0620デフォルトの名無しさんNGNG
目的を明確にせずに手段ばかり聞こうとするから、役にも立たないDDB関数なんぞ
教えなきゃいけなくなっちゃうんだ罠。
0621デフォルトの名無しさんNGNG
まぁgoogleに聞く前にプログラミングWindows読めばビットマップ関連の基本はばっちりなんだが
0622デフォルトの名無しさんNGNG
どうせ読むなら「Programming Windows」にしようぜ。
0623デフォルトの名無しさんNGNG
  大  改  定
0624589NGNG
bccのリソースコンパイラを使ったらできました。
なんでだろ〜。
0625デフォルトの名無しさんNGNG
そういや旧版のプログラミングWindows95で、2章にGDIの解説まとめてやってて、
最初に読んだ時なかなかわからなくてかなりへこんだもんだ。
普通ならこれで一冊の本になるぞ、って
0626デフォルトの名無しさんNGNG
Win95で256色主流だった頃は、DDB/DIBに加えてパレットも必須だったからねえ。
もーあの時代には戻りたくねえ・・・。
0627デフォルトの名無しさんNGNG
256色以下だとパレット保持してるからね。
0628デフォルトの名無しさんNGNG
256色でパレットのないドライバってのもあったけどね
0629デフォルトの名無しさんNGNG
MSのCryptoAPIメーリングリスト、最近メールが配信されてこないなあ、
と思っていたのですが、調べ物をしようとしたところ、以下のURLで
アーカイブの閲覧も検索もできなくなっていることにことに気づきました。

http://discuss.microsoft.com/archives/cryptoapi.html

どこかに引越ししたのでしょうか? それとも廃止?
アーカイブはどこかで公開していないのでしょうか?
ちょう有用な情報満載だったので、何とかアーカイブをゲットしたいのですが、
もうだめぽげでしょうか...?
0630デフォルトの名無しさんNGNG
>>629
今アクセスしたら普通に見れましたよ。
0631デフォルトの名無しさんNGNG
だめぽげです。
0632デフォルトの名無しさんNGNG
>>630
スタートページと検索フォームは見れるのですが、
各アーカイブをクリックすると"The archive files could not be accessed..."と表示され、
検索実行すると0件になってしまいます...
0633デフォルトの名無しさんNGNG
>>631
だめぽげですか。_| ̄|○
0634デフォルトの名無しさんNGNG
>>633
今年の2月第1週以降はリンクすらない事から鑑みるに、
その辺りで終わったんじゃないか?

直接MicrosoftのWebMasterに問い合わせてみては?
0635629NGNG
まったく気づいていなかったのですが、最後のほうに配信されていたメールで
以下のようなアナウンスがあったのに気づきました。俺って間抜け。

Microsoft will discontinue the CryptoAPI, CAPICOM, Smartcard SDK and
Smartcard DDK mailing lists on Feburary 1, 2004. Support for these areas
will contine on the microsoft.public.platformsdk.security newsgroup.

上記newsgroupでは見慣れたGulu達があまり現れていないみたい。このメールの後に
別メーリングリストを作ろうという動きもあって、今はそっちで活躍しているのかも。
ただ、今までのCryptoAPIメーリングリストはMSの技術者の人が出入りしている点も
魅力だったんだよなあ。

そんなわけで、お騒がせしました。m(_ _)m
0636デフォルトの名無しさんNGNG
>>634
インシデント取られるぞ:P
0637デフォルトの名無しさんNGNG
DVDドライブに入っているメディアがCDかDVDかを調べるAPIわかりませんか?
0638デフォルトの名無しさんNGNG
>>636
WebPageに対する問い合わせでもインシデント取られるのけ?

とマジレスしてみる:-)
0639デフォルトの名無しさんNGNG
タスクバー(notタスクトレイ)に並んでる順にウィンドウハンドル列挙ってできるんでしょうか?
再配置ならShowWindowで一旦全部消して好きな順にSW_SHOWするってサンプルは見つかったんですが……。
現在の並びを取得するってのが見つからなくて。
0640デフォルトの名無しさんNGNG
639です。
ITaskbarListってのを調べてみましたが、
これもAdd/Delete/Activateしかない模様……。
0641デフォルトの名無しさんNGNG
強いて言うならウィンドウが最後に表示された順だろうが、Explorer落としたりするとかなり好き勝手な順番に変わるからあんま意味ないと思うが。
0642デフォルトの名無しさんNGNG
AllocConsole()で作ったコンソールウィンドウをシステムメニューから閉じると、
GUIのメインウィンドウまで閉じて、プロセスが終了してしまうのを防止したいのですが。
どなたか、方法を御存知ないでしょうか。
0643デフォルトの名無しさんNGNG
>>642
勘だけど、SetConsoleCtrlHandlerかSetConsoleModeでどうだろう?
0644デフォルトの名無しさんNGNG
>>643

BOOL WINAPI HandlerRoutine(DWORD dwCtrlType)
{
if(dwCtrlType == CTRL_CLOSE_EVENT)
{
FreeConsole();
}

return 0;
}

SetConsoleCtrlHandler(HandlerRoutine, true);

てな具合にやってみたのですが、やはりプロセスが終了してしまいます。

SetConsoleMode は Ctrl+C の無効化には使えましたが、この用途にも使えるなら、
具体的にどう使うのでしょう?
サンプルコードは無いでしょうか。
0645デフォルトの名無しさんNGNG
CとAPIでオセロを作っています。棋譜みたいなのをlogというファイルに
書き込んでいくのですが、これを保存したいんです。
普通のアプリで保存とかを選ぶと保存の画面がでてきますよね?ファイル名とか
ディレクトリとか選べる画面。あれを表示してオセロのlogを保存するには
どうしたらいいのでしょうか?
0646デフォルトの名無しさんNGNG
GetSaveFileName()でぐぐりましょう
0647デフォルトの名無しさんNGNG
>>644
FreeConsoleしてもいいんなら最初からさっさとFreeConsoleしちゃえば?
0648デフォルトの名無しさんNGNG
>>644
ヘルプくらい読めよ。

HandlerRoutine

各コンソールプロセスは、HandlerRoutine 関数の独自のリストを持っています。
最初、このリストには ExitProcess 関数を呼び出す既定のハンドラ関数だけが含まれています。
・・・
コンソール信号を処理するときは、TRUE を返してください。
FALSE を返すと、このプロセスのハンドラのリストに登録されている次のハンドラ関数が使われます。

TRUEの値は何だよ?FALSEの値は何だよ?
0649デフォルトの名無しさんNGNG
644じゃないけど、CにBOOL型は要らないとよく思う。紛らわしいだけで利益がない。
0650デフォルトの名無しさんNGNG
Cにあるのは_Bool型だが?
0651645NGNG
>>646
ファイルを保存ダイアログボックスの表示は分かったんですけど、
どのファイル(この場合オセロのlogの事です)を保存するってのは
どこで指定してるんですか?
0652デフォルトの名無しさんNGNG
>>648
失礼、ミスりました。
でも結果は同じ。
やはり終了します。
ちなみに、FreeConsole をコメントアウトすると、
ダイアログが現れ、当然「このプログラムを終了できません」となり、コンソールウィンドウのみ閉じること
はできません。

BOOL WINAPI HandlerRoutine(DWORD dwCtrlType)
{
if(dwCtrlType == CTRL_CLOSE_EVENT)
{
FreeConsole();
}

return 1;
}

SetConsoleCtrlHandler(HandlerRoutine, true);

>>647
システムメニューから閉じたいのです。
あるいは、タイトルバーの×印のボタンから。
0653639NGNG
>>641
> 強いて言うならウィンドウが最後に表示された順だろうが、
やっぱりないですかね……。
Win+Tabでタスクバーの並び順にタスクバーボタンのフォーカスが移動するから
なんかあるんじゃないかと思ったんですが。

> Explorer落としたりするとかなり好き勝手な順番に変わるからあんま意味ないと思うが。
だからこそ並び順で取得したい訳なんですけど……。

クラス名順でソートとかして使いやすく再配置が実際的な解なのかな。
0654デフォルトの名無しさんNGNG
日本語リファレンスには、

SetConsoleCtrlHandlerで各パラメータにNULLおよびTRUEを指定して呼び出すと、
呼び出し側プロセスがCtrl+Cシグナルを無視するようになる。

と書いてあるけど。
0655654NGNG
あ、Ctrl+Cじゃないのね、失礼。
0656デフォルトの名無しさんNGNG
>>653
Win+Tabはタスクバーを管理してるエクスプローラ自体が反応するから、
内部的には持ってるんだろうけどね。

ということで、タブコントロールから取得するというのはどうでしょう。
0657デフォルトの名無しさんNGNG
>>649
スレ違い。こちらへどうぞ。
http://pc5.2ch.net/test/read.cgi/tech/1085915001/
0658デフォルトの名無しさんNGNG
>>645
何がしたいの? ファイルへの出力はGetSaveFileName()じゃできませんが。
0659デフォルトの名無しさんNGNG
>>639
某スレでそこらへんの話題が出たのでちょうど調べてた.
w2kでしか確認してないけど,TCITEMのlParamにウィンドウハンドルが入ってる.
xpはどうなのかな?
0660デフォルトの名無しさんNGNG
下のようなリソースがあるんですが、バージョン情報を取得する定石で
VerQueryValueを使って文字コードを\VarFileInfo\Translationから取得
すると、800004B0になってしまって、\StringFileInfo\040904E4に
アクセスすることができません。どうすればよいのでしょうか・・・

1 VERSIONINFO
FILEVERSION 5,0,128,0
PRODUCTVERSION 5,2,6,0
FILEOS 0x4
FILETYPE 0x1
{
BLOCK "StringFileInfo"
{
  BLOCK "040904E4"
  {
    VALUE "CompanyName", "Adobe Systems, Incorporated"
    VALUE "FileDescription", "Adobe Photoshop"
    VALUE "FileVersion", "5.0.2"
    (省略)
  }
}

BLOCK "VarFileInfo"
{
  VALUE "Translation", 0x8000 0x04B0
}
}

0661デフォルトの名無しさんNGNG
643だけどごめん、無理かも。
素直に別コンソールプロセス立ち上げて名前なしパイプでつなぐとか。
0662639NGNG
>>659
XPですが、タスクバーのが
Shell_TrayWnd : ReBarWindow32 : MSTaskSwWClass : ToolbarWindow32
とToolbarに変更されているため、TBBUTTON.dwDataまたはIBBUTTONINFO.lParamがそれっぽいです。

……が、なぜか言うことを聞いてくれません(涙
まずボタン総数を取得すると倍の数値が返ってくるし。
正直Cそのものにあまり慣れてないので、下のに何か胡乱なところがあるんでしょうか?

void Hoge(HWND toolbar) {
   int c, i;
   TBBUTTON b;
   c = SendMessage(toolbar, TB_BUTTONCOUNT, 0, 0);
   for (i = 0; i < c; i++) {
      if (SendMessage(toolbar, TB_GETBUTTON, i, (LPARAM)&b)) {
         printf("%2d : %x\n", i, b.dwData);
      }
   }
}
0663デフォルトの名無しさんNGNG
>>662
タスクバー(エクスプローラ)は別プロセスなのでTB_GETBUTTONで使う
TBBUTONは共有メモリーを使わないとダメ.
0664教えてくださいNGNG
mciで動画を再生したいんだけど、
動画のためにわざわざ別のウィンドウを用意したりしたくなくて、
ウィンドウの隅っこのほうで動画が動くようにしたい。
んで、動画をウィンドウのどこらへんの位置で再生するかを指定
したりする方法ってないですか?
0665デフォルトの名無しさんNGNG
ない
0666教えてくださいNGNG
ええっマジですか????????
一つのウィンドウの中で動画を再生する領域とボタンとかコントロールが
ならんでる領域がわかれているようなウィンドウって
なにか別の方法でないと作れませんか???
0667教えてくださいNGNG
もしやひとつのウィンドウにみえるけど実は中に子ウィンドウを
埋め込んでつくるってことなのかな???
0668デフォルトの名無しさんNGNG
>>664
WINDOWで再生するウィンドウハンドルを指定
PUTで位置・サイズ指定
…だったっけ?
0669デフォルトの名無しさんNGNG
>>667
そう。その「ボタンとかコントロール」も子ウィンドウなわけだし。
0670デフォルトの名無しさんNGNG
>>668
それでもいいけど、リドローその他の問題考えると MCIWndCreate で親ウィンドウを
指定して、スタイルに WS_CHILD 付けとくほうが良くない?
0671645NGNG
>>658
オセロを作っているんですがゲーム中に打った手をlogに書き込んでいくのですが、
そのlogを保存したいんです。
保存ダイアログボックスを表示させてその棋譜を保存したいんです。
0672デフォルトの名無しさんNGNG
>>671
OPENFILENAME構造体のメンバ調べた?
ファイル名やフルパス取得できるでしょ。

そのlogの出力処理は自分で書かなきゃダメだよ。
0673645NGNG
>>672
開くの場合開きたいファイル名やフルパスを取得できるからその後の処理はできるなぁ
となんとなく分かったのですが、保存の場合がいまいち分かりません・・・。
例えばオセロというフォルダにオセロ本体とlogというファイルがあった場合、
どの関数でlogを見つけてその中身を別名保存できるのでしょうか・・・。
0674デフォルトの名無しさんNGNG
>>673
うーん、もう少し頭の中を整理したほうが良いと思うよ。
0675デフォルトの名無しさんNGNG
取り敢えずオセロの棋譜から離れろ。

データをファイルに保存する処理で必要な条件をきちんと挙げてみな。
取り敢えず、

(1)メモリ上にあるデータをファイルに出力したい。
(2)フォルダとファイル名は保存ダイアログを表示して選択&入力したい。
(3)フォルダに同名のファイルが既にある場合は別名保存したい。

と言う事か?なんか微妙に違ってそうな気もするんだが…
0676デフォルトの名無しさんNGNG
コンソールアプリケーションの出力をウインドーズのウインドーにする方法教えてください
16ビットと32ビットの両方のcomファイルとかも表示したいです
出来ないと思うけどコンソールアプリケーションを起動したときにコンソールを出さないでできたら
またそのやり方もおしえてください
0677デフォルトの名無しさんNGNG
まともなオセロが作れるんならファイル保存くらい簡単だろうに・・
まあオセロの方がまともじゃ(
0678デフォルトの名無しさんNGNG
単に保存ダイアログの出し方がわからんのじゃないか?
0679デフォルトの名無しさんNGNG
>>678
いや、それは>>646が書いてる。

>>673
もしかして、オセロのexeのパスを知りたい?
なら、GetModuleFileName()。
0680デフォルトの名無しさんNGNG
Win32スレっぽくまとめると、

・オセロのプログラムのコード内で、実行ファイル(たぶん EXE?) のパスを知りたいときには
 GetModuleFileName(NULL) を使う。
・実行ファイルと同じ場所にあるファイルのパスを得るには、
 PathRemoveFileSpec で最後の「ファイル名」を取り除いてディレクトリのパスを得て、
 PathAppend でそのファイルの名前をくっつける。

例えば既に実行ファイルと同じディレクトリに "log" という名前のファイルがあったとき、
それを lpszDstPath にコピーする関数は、

void CopyLogFile(LPCTSTR lpszDstPath)
{
 TCHAR rgszLogFile[MAX_PATH];
 GetModuleFileName(NULL, rgszLogFile MAX_PATH);
 PathRemoveFileSpec(rgszLogFile);
 PathAppend(rgszLogFile, "log");
 CopyFile(rgszLogFile, lpszDstPath, FALSE);
}
0681デフォルトの名無しさんNGNG
>>679
>>645を見るとダイアログを表示してファイルを指定したがってるようだが・・・
0682デフォルトの名無しさんNGNG
でもlogって名前で決め打ちなんだよね。
ダイアログ開く必要ないじゃん。
0683デフォルトの名無しさんNGNG
マルチバイトとUNICODEを切り替えるのに使うマクロは

標準ライブラリは _UNICODE
WindowsSDKでは UNICODE

であっていますか?
0684デフォルトの名無しさんNGNG
標準ライブラリってのがC/C++のことなら、一般的にいって知るかヴォケ
0685デフォルトの名無しさんNGNG
>>676
>コンソールアプリケーションの出力をウインドーズのウインドーにする方法教えてください
GUIアプリケーションとして作り直せ。

>16ビットと32ビットの両方のcomファイルとかも表示したいです
意味がわからん。既存のプログラムの表示方法を変更するという意味なら、
そのプログラムをそのように作り直せ。

>出来ないと思うけどコンソールアプリケーションを起動したときにコンソールを出さないでできたら
>またそのやり方もおしえてください
起動後にFreeConsoleでコンソールを切り離せ。
0686デフォルトの名無しさんNGNG
>>676
パイプを作ってそこへ標準出力(必要なら標準エラーも)をリダイレクトさせ、
CreateProcessで対象のコンソールプログラムを起動させる。
(この時に標準出力を継承させる。コンソールを表示させない指定もここでできる)
あとは随時パイプから読み出した文字をウィンドウへ書き出す。
0687デフォルトの名無しさんNGNG
>>683
含みを持たせすぎる問いには答えにくい。

UNICODEマクロは、WinAPIのA(ANSI)系とW(WideChar)系を切り替えるマクロ。

_UNICODEマクロは、汎用テキストマッピングで使用する文字の種類を切り替えるマクロ。
これはVC付属のCライブラリの他、MFC等でも使用される。
0688683NGNG
>>687
ああなるほど。
TCHAR等とAPIのA系W系の切り替えは
UNICODEマクロで同時に切り替わるものだと思ってました。
0689デフォルトの名無しさんNGNG
↓こういうのをWin32APIで作りたいんですが
ttp://www.aajp.jp/exev5/speech.swf

adobe reader や narrator.exe みたいに、指定した文字列を
読み上げさせるにはどうすればいいのでしょうか?
0690デフォルトの名無しさんNGNG
>688
TCHARとA/Wは同時切り替えしないとコンパイルエラーになるだろう。
ぶっちゃけ、古いコンパイラとの互換性維持のためにあるんじゃねーの?
0691デフォルトの名無しさんNGNG
>>689
この辺?
http://www.microsoft.com/speech/download/sdk51/
0692デフォルトの名無しさんNGNG
>>690
互換性維持のくだりは意味不明だけど、両方セットして切り替えるのが普通だろうね。
実際に切り替えるには、そのマクロ以外にもあれこれ変更する必要があるから、
けっこう面倒くさかった記憶がある(スタートアップ関数も変更したな、確か)。
0693690NGNG
>692
_inlineと__inlineとか、_asmと__asmとか、
その辺を想像して書いたんだが…。
0694デフォルトの名無しさんNGNG
>>688
winnt.hのTCHARとかはUNICODEで切り替わる。
_UNICODEで切り替わるのはtchar.hの_TCHAR類。
0695689NGNG
>>691
おお!きっとその辺です。
ありがとうございます。
0696デフォルトの名無しさんNGNG
>>685
方法を知らないなら、くだらん回答しなければいいのに
0697デフォルトの名無しさんNGNG
>>696
なんとまあパターンどおりの厨房レスなのか。
自分の質問が質問の体を為してないことぐらい気づけよ。
コンソールベースのテストプログラムから脱却してウィンドウを作ってみたいのか、
古いDOSベースのプログラムをWindowsに移植でもしたいのか、意図がはっきりしてないんだよ。サトリ募集中ですか?

字面どおりに解釈するならパイプでも使ってそのプログラムを起動し、出力をとってからDrawStringでウィンドウに出力結果を描画とか。

これで後で「釣れた」とか抜かしやがったらふざけるのも大概にしろって感じだな。
0698デフォルトの名無しさんNGNG
最初から意味が分からんとだけ書けばいいものを。
0699デフォルトの名無しさんNGNG
ツレタ!!
0700デフォルトの名無しさんNGNG
見事に釣られたところで次の質問者ドゾー↓
0701デフォルトの名無しさんNGNG
>>697 ( ´,_ゝ`)プッ・・

上級者ぶって偉そうにしたかっただけなのね。
素直にパイプを使うと答えればいいものを。
0702デフォルトの名無しさんNGNG
CreateCompatibleDCでつくったDCについてる
ビットマップはストックオブジェクトです。
0703ほんたまNGNG
おみゃ〜らよ、おみゃ〜らさーん♪
おりはよ、「Slim de Can」を使ってやっとメインウィンドウにコントロールをつけるサンプルの作成に成功したぜ。わはは♪
「Slim de Can」ってすげ〜な〜、イベントドリブンプログラムが作成できるとこまでついに進化したよ。
おりはもう神だね♪どうよ?

http://hp.vector.co.jp/authors/VA015412/
0704645NGNG
えっと分かりにくくてすみません・・。
オセロの盤面はboard[8][8]の配列を作ってそこに黒、白を書き込んでいく。
それと同時に1手目はd5黒、2手目、・・・・という具合にlogファイルに書き込む。
このlogがなぜあるかというと戻りや棋譜を読むことによってあとで感想戦みたいな
物を実装するためにあります。このlogは常に1個しかなく、上書きされていきます。
保存しておきたい対戦の場合はこのlogをダイアログを表示させ、別名にて保存します。
今分からないのはダイアログを表示させ、保存を押した場合何が保存されるのかが
分からないって事です。

680さんの方法のPathRemoveFileSpecとPathAppendでできるのかな・・・
0705デフォルトの名無しさんNGNG
>>704
> 今分からないのはダイアログを表示させ、保存を押した場合何が保存されるのかが
> 分からないって事です。

だからね、保存を押した時に何が保存されるのかは、君が書くコード次第なの。

>>646を実行して、>>672を調べたら、ファイル名とフルパスが取得できるから、
logってファイルをリネームすればいいんじゃねぇの?

と、君以外のみんなが思っている筈なんだが。
0706デフォルトの名無しさんNGNG
開くダイアログも保存ダイアログもファイル名を得るだけだろ
なんで前者は分かるくせに後者は分からんのよ?
0707645NGNG
>だからね、保存を押した時に何が保存されるのかは、君が書くコード次第なの
そのコードが知りたかったんです・・・。

ファイルを開くの場合はファイル選択→開く→ファイル名、フルパス取得。
ファイル保存の場合はPathRemoveFileSpecとPathAppend→ファイル名、場所→保存
でいいんですか?
0708デフォルトの名無しさんNGNG
久々にすごいのが現れたな・・・

そもそもファイル入出力はやったことがあるのだろうか。
0709デフォルトの名無しさんNGNG
>>707
1.GetSaveFileName()を実行する。
2.保存ファイルを指定するダイアログが出る。
3.ユーザーがファイル名を入力する。
4.1で引数として渡したOPENFILENAME構造体からファイル名を取得する。
5.そのファイルに保存する処理は君が書く。

オセロのログを出力するAPIなんてないから、
出力したいフォーマットに合わせて自分でコード書くんだよ。
0710デフォルトの名無しさんNGNG
と言うか、”Log”ってファイルを出力するコードは自分で書いたんだろ?
なんで別名保存する事に躓くんだよ(´・ω・`)

まさかとは思うが、”Log”ってファイルを出力するコードを他人が書いてる
ってオチじゃねぇだろうな?
0711645NGNG
今までAPIをやった事がないんですよ。演習で初めてAPIを使う事になり、
猫でもわかるを買ってよんだんですがいまいち・・・。

いろいろ教えてもらいありがとうございました。
教えてもらったので一度プログラムに組み込んでみます。
0712デフォルトの名無しさんNGNG
つか、API以前の問題だと思うなぁ。

そうは思わないか?>>713
0713645NGNG
>>710
えーっとLogってのはオセロを起動すると勝手に作られます。
別名で保存するってのは将棋とかと同じく棋譜を集めるためと、
保存した場所からスタートできるようにするためです。
0714デフォルトの名無しさんNGNG
>>713
そのLogってのには一手打つ毎に保存されてんの?
もしそうなら、ユーザーに保存ファイル名入力させて
Logファイルをコピーすればいいのでは?

「猫でも・・・」ならネットのSDK編の第329章でも参考にしてみ
0715デフォルトの名無しさんNGNG
>>713で思考の呪いに掛かってしまった…

ムネン アトヲ タノム

orz

0716645NGNG
>>714
そうです1手目から60手目まで保存されます。
これを使って感想試合や戻りなどできるようになります。

>もしそうなら、ユーザーに保存ファイル名入力させて
>Logファイルをコピーすればいいのでは?

これができればいいんです。 保存ウィンドウの表示→ファイル名、場所記入→
保存をしてLog1みたいな感じで元のLogがコピーできれば作れればOKです。
0717デフォルトの名無しさんNGNG
情報隠しすぎだねぇ。他人が書いたものと自分が書かなきゃいけないものを
きちんと提示しないから話がややこしくなると言うのに。
0718デフォルトの名無しさんNGNG
オセロってのはあれか、既にオセロのソフトが存在しているのか?

で、そのソフトがLogってファイルを作るんだけど、そのファイルを
別名保存するアプリを作りたいって話なのか?



単に別フォルダにでもコピーすればいいやん、って気がしてきた…
0719デフォルトの名無しさんNGNG
俺は答える気なくした。他のひとよろ。
0720デフォルトの名無しさんNGNG
俺はもう寝るぽ(´・ω・`)
0721デフォルトの名無しさんNGNG
>>645は最高の釣り師だな。
よくやった。
0722デフォルトの名無しさんNGNG
>>721
一昨日のVB6スレと言い今日といい、最近は疲れる奴が多いな…

夏だからか?
0723645NGNG
いろいろすみませんでした・・・。

これで最後にします。

C書いたオセロではDOSでしか動きません。それをAPIを使って普通に
windowsのアプリに変換というか作るというか。
Cならif文でも使ってLogのコピーをリネームしてすぐ作れますが、
APIを使った時には保存ボタンをクリックしたらどうなるとかそういうのが
分からず困っていたという話でした。

714さんが教えてくれた所は結構参考になりそうなので助かりました。

不愉快になられた方々すみませんでした。またこんな自分に付き合って
くださった方々ありがとうございました。


0724デフォルトの名無しさんNGNG
mallocの変わりにGlobalAllocを使うメリットってなんかありますか?
(クリップボードとかとは全然関係ない単純なメモリ確保です。)

担当者になんで?って聞いたらmallocより効率がいいと
えらい人にいわれたらしい。GlobalReAllocとかも使ってる。

MSDNには低速だから使うなって書いてあるし。
0725デフォルトの名無しさんNGNG
強いていうならC/C++で確保したメモリをDelphiで開放するようなことができる。
0726デフォルトの名無しさんNGNG
>>724
ヒープメモリってわかってる???
0727デフォルトの名無しさんNGNG
APPのコードをライブラリ化。
長文ソース簡略化で作業時間、効率を削減。

基本的なWin32システムを支援します。

最強のACライブラリー
ttp://www.geocities.jp/osoftjp
0728デフォルトの名無しさんNGNG
そこでHeapAlloc()ですよ
0729デフォルトの名無しさんNGNG
WM_MOVINGとWM_SIZINGが発生する要因はSendMessage系で呼び出さない限り
ユーザーのマウス操作によるものだけと断定して問題ないでしょうか?
0730デフォルトの名無しさんNGNG
ALT+SPACE+S→カーソルキーの存在は無視か?
0731デフォルトの名無しさんNGNG
MFCフレームワークで、CWinApp, CMainFrm, CChildView という派生クラスを使う事を強要されますけど、どこにどういう機能を置けばいいのかいまいちピントきません。
リアルタイムでレンダリングするスクリーン、キー入力、パラメータ入力用のダイアログがあるので,
CWinApp -> OnIdle() レンダラーアップデート, CChildViewへの描画。
CChildView -> キー、マウス入力
CDialog -> CMainFrm::hoge->SendMessage(...) で入力パラメータを送る。
CMainFrm -> SendMessage(...)でクラス間のデータ受け渡し。
っていう感じでやっているんですが、クラスが保持している別クラスインスタンスへのポインタがprotectedになっていたりするので、SendMessage()のバケツリレーみたいになったりして、2度手間3度手間が多くて疲れます。
「プロはこうやる」っていうのがあったら教えてください。
0732デフォルトの名無しさんNGNG
その前に良い事を教えてやる。

 ス レ 違 い だ
0733729NGNG
>>730
そんな機能あったですか、、、
やりたいことはサイズ変更中であれ位置変更中であれマウスが動いてたら
WM_MOUSEMOVEが発生して欲しいのですが発生してくれません
正確にいうとspy++上では発生してることになっているのですがWndProc内のswitch文で捕捉されません
spy++のメッセージ コードはPとなっていて、ヘルプによると
PostMessage 関数によってキューにポストされました。
とあるのですがPostMessageで発行されたメッセージはWndProc内では捕捉されないのでしょうか?
0734731NGNG
>>732
ほんとだ、Win32じゃん。誤爆しました。MFCスレに落としてきます。
0735デフォルトの名無しさんNGNG
>>723
おまいさんの最大のミスは

>C書いたオセロではDOSでしか動きません。それをAPIを使って普通に

を最初に言わなかった事だ。お陰で大勢の膨大な時間が
無駄に失われてしまった…
0736デフォルトの名無しさんNGNG
DLLから全体をフックするのはフックプロシジャーもDLLに無いとできませんか?
0737デフォルトの名無しさんNGNG
USBメモリのシリアル番号を取得するAPIを教えて
0738デフォルトの名無しさんNGNG
>>737
getDeviceID
0739デフォルトの名無しさんNGNG
>>737
デバイスデスクリプタを取得して、
iSerialNumberからストリングデスクリプタのインデックスを計算

iSerialNumberを元にストリングデスクリプタを取得すると、
シリアルナンバーが手に入る・・・と思う

↓のMass Storage参照
http://www.usb.org/developers/devclass_docs

やったことないけど、
DDKのサンプルのUSBView(Win32アプリ)見れば、何とかなるんじゃない?

>>738
デバイスIDとシリアル番号は別物じゃないか?
0740デフォルトの名無しさんNGNG
複数台繋がったキーボードからキー入力を受け、どのキーボードから入力されたのかを
判定したいのですが、どのようなAPIを利用すれば実現出来るのでしょうか?
USBキーボード二台(もしくはPS2キーボード1台+USBキーボード1台)を使っての入力を想定しています。
0741デフォルトの名無しさんNGNG
出来ない
0742ほんたまNGNG
おみゃ〜らよ、おみゃ〜らさーん♪
おりはよ、「Slim de Can」を使ってあるボタンをクリックしたらある処理を行わせ、別のボタンをクリッしたら別の処理をおこなわせるプログラムの作成についに成功したよ。
つまり「Slim de Can」はすでにイブントドリブンプログラムがつくれる環境になっているということを自ら証明したという次第よ。
おい、「Slim de Can」はすでに簡単なゲームくらいはころっとつくれるぞ。誰かつくらんか?
「Slim de Can」ってすげ〜な〜。
おりはもう神だね♪どうよ?

http://hp.vector.co.jp/authors/VA015412/
0743デフォルトの名無しさんNGNG
新たなキチガイの登場か
0744デフォルトの名無しさんNGNG
無理ですか・・・。DDKまで降りていけばなんとかなりそうなので色々調べてみます。
0745デフォルトの名無しさんNGNG
降りるとかいうな馬鹿
0746デフォルトの名無しさんNGNG
>>745
同僚とうまくいってます?ある程度イメージ化した話が通じる人でないとこの業界ではうまくやれないと思うんですが・・・。
0747デフォルトの名無しさんNGNG
通じてはいるだろ
0748デフォルトの名無しさんNGNG
人の心配をする前に自分の(ry
0749729NGNG
クライアント領域をマウスが移動して発生したWM_MOUSEMOVEも
spy++のメッセージ コードはPとなっていてこちらはWndProcで捕捉できていました
WM_SIZNG,WM_MOVING直後にspy++上で観測されているWM_MOUSEMOVEだけがWndProcで捕捉できません
spy++が嘘をいってるとしか思えないのですが、WndProcでも補足できる方法はありますか?
0750デフォルトの名無しさんNGNG
>>749
GetMessage で取ってきて

・DefWindowProc を呼ばない(メッセージを取り除いちゃうかもしれないから)
・TranslateMessage も呼ばない(同様)
・DispatchMessage もしない(同様)

で試してみた?
0751デフォルトの名無しさんNGNG
サイズ変更/移動中って、システム内部のローカルなメッセージループに
いるんじゃないのか?
0752729NGNG
>>750
GetMessageで取ってきてCallWindowProcで直接呼び、WM_SIZNGとWM_MOVINGはretun TRUEとし
DefWindowProcを呼ばないようにしたのですがだめでした

>>751
しかしながらspy++はサイズ変更中や移動中であってもWM_MOUSEMOVEを検出できているのですが
ローカルなメッセージループにフックのようなものを仕掛けているのでしょうか?
0753デフォルトの名無しさんNGNG
DLLはparagma dataを使わないで変数をプロセスと共有するにはプロはどうやるのですか?
0754デフォルトの名無しさんNGNG
別プロセス?
それならファイルマッピング
0755デフォルトの名無しさんNGNG
同プロセスです
0756デフォルトの名無しさんNGNG
JoyAdapterのような、キーボード入力等を他の入力にするプログラムを作っているのですが、
非アクティブ状態のプログラムでどうやってキーの入力を受け取れるのでしょうか?
0757デフォルトの名無しさんNGNG
DLLフックに決まってるだろ
0758デフォルトの名無しさんNGNG
>>755
普通にアドレス渡せ
0759デフォルトの名無しさんNGNG
>>758
例えばDLLの中の変数をDLLメインで宣言定義して、その変数のポインターを
DLLメインの戻り値でWINメインに渡して使うということですか?
それともそれ以外に便利な方法ありますか?
0760デフォルトの名無しさんNGNG
//dll.cpp
int var;

int* getvar()
{ return &var; }


//exe.cpp
int* pvar = getvar();
0761デフォルトの名無しさんNGNG
よくわからんけど、__declspec(dllexport)、__declspec(dllimport)は
使っちゃいけない話になっているのか?
0762デフォルトの名無しさんNGNG
素直に __declspec(dllexport) でいいじゃん。
0763デフォルトの名無しさんNGNG
//dll
struct vars { /* 色々 */ };
vars* init() { return (vars*)malloc(sizeof(vars)); }
void func(vars* p) { /*色々*/ }
void term(vars* p) { free(p); }

//exe
vars* p = init();
func(p);
term(p);

とか。
0764デフォルトの名無しさんNGNG
>>760 761 762 763
やっぱDLLの中の変数はグローバル変数じゃないと駄目にきまってますよね?
0765デフォルトの名無しさんNGNG
オート変数はどうやっても無理だが。
0766デフォルトの名無しさんNGNG
staticでもっておく。うげぇっ。
0767デフォルトの名無しさんNGNG
__declspec(dllexport)、__declspec(dllimport)でどうやってデーターを共有するんですか?
これはDLLの関数がDLLにあることをコンパイラに知らせる命令ですよね?
0768デフォルトの名無しさんNGNG
関数だけじゃねーよ
ちょっとは調べてみないんですかそうですか。
0769デフォルトの名無しさんNGNG
>>767
それが気に入らないんなら、DEFファイルに書いて
変数のエクスポートでも出来ると思うが。
0770デフォルトの名無しさんNGNG
変数もエクスポートできるんですか?
dll
__declspec(dllexport)int a=3;
exe
__declspec(dllinport)int a;
のように使えるとはしりませんでした
しらべてみて分からなかったらまた聞くと思います
いろいろ質問ありがとうございました
0771教えてくださいNGNG
MCICreateWnd()で作ったウィンドウの親ウィンドウ内での表示座標を
変える方法はないでしょうか??
どーしても動画と同じウィンドウ内にアレコレ表示したいので
動画を再生する領域をちょっとずらすか親ウィンドウ内に他のものを表示
する空間を空けたりしたいのですが
どうすりゃいいのか途方にくれとりまする助けてえ
0772デフォルトの名無しさんNGNG
HBITMAPをファイルに保存する場合は、どのようにしたらよいのでしょうか?
0773デフォルトの名無しさんNGNG
そろそろ埋めるよ
0774デフォルトの名無しさんNGNG
>>773
に釣られて、梅。
0775デフォルトの名無しさんNGNG
HDCをファイルに保存したのですが、読みこもうとしてもうまくいきません。
どうしてくれますか。
0776デフォルトの名無しさんNGNG
>>775
( ´,_ゝ`)プッと嘲笑って差し上げます。
0777デフォルトの名無しさんNGNG
windows.h とiostreamなどの標準ライブラリーは一緒に使うのは普通ですか?
0778デフォルトの名無しさんNGNG
>>771
MoveWindow ではダメですかそうですか。
0779デフォルトの名無しさんNGNG
>>777
問題ないはず
0780デフォルトの名無しさんNGNG
windows.h とiostreamなどの標準ライブラリーは、どちらを先にインクルードしたらいいんですか?
0781デフォルトの名無しさんNGNG
windows.hは最初に
0782デフォルトの名無しさんNGNG
どっちでもいい。
順番が問題になるのはwindows特有のヘッダのみ。
例えば
×
#include <hidsdi.h>
#include <windows.h>

○
#include <windows.h>
#include <hidsdi.h>

のように。
0783デフォルトの名無しさんNGNG
stringは便利そうですよね
0784デフォルトの名無しさんNGNG
724です。

>>725
やっぱ、Cでは普通のメモリ確保はmallocで決まりですよね。

メモリ確保の他にも、WIN32とランタイムルーチンで対応する関数がある場合に、
好んでWIN32を使う人がいますが、理由を聞くとAPI直接呼んだほうが
効率がいいからということをいいます。これってどこまでほんとうなんでしょうか。

fopenの代わりにCreateFileとか使ってると私は、なんで?と思ってしまうのですが。



0785デフォルトの名無しさんNGNG
>>784
普通はHeapAllocする
0786デフォルトの名無しさんNGNG
現実に有意な差があるかといわれれば無いが、fopenにしたところで最終的にはCreateFileなんかを呼んでいる訳で、かすかであれ効率がいいのは事実ではあるな。
0787デフォルトの名無しさんNGNG
メモリはランタイムがブロックのプールをしている可能性もあるから
ネイティブ呼び出しが早いとは限らない。
0788デフォルトの名無しさんNGNG
ファイル読込もfopenがバッファリングしてますな。
0789デフォルトの名無しさんNGNG
プールも結局失敗するならやらないほうが効率よかったりもするが。
0790デフォルトの名無しさんNGNG
>740
DirectInput
0791デフォルトの名無しさんNGNG
>>784
コンソールプログラムのことを言ってんのか?
おまいは、Windowsプログラマーじゃないだろ。
COMとか、書いたことないのか。C runtime使いたくないんだよ。

Windowsプログラムなら、Win32APIを使うのが普通だろ。
0792デフォルトの名無しさんNGNG
Cライブラリ=コンソール環境ではない。
Cライブラリを使わないスタイルを否定はしないが、無根拠にそれが普通とかいうと蹴飛ばすぞ。

そういえば、CライブラリのMS固有関数って、このスレの範疇?
0793デフォルトの名無しさんNGNG
>>791は厨房プログラマー
0794デフォルトの名無しさんNGNG
>>791
こちらへどうぞ
http://pc5.2ch.net/test/read.cgi/tech/1085915001/
0795デフォルトの名無しさんNGNG
C++ライブラリーのほうがいいのにCライブラリーをあえて使うわけはなぜですか?
0796デフォルトの名無しさんNGNG
釣れた!
0797デフォルトの名無しさんNGNG
>>795
C++のも、Cランタイムライブラリに含まれているわけですが・・・
0798デフォルトの名無しさんNGNG
最近、面白いのが多いね
0799デフォルトの名無しさんNGNG
>>797
Cはprintf() c++はcoutを使う
0800デフォルトの名無しさんNGNG
>>799
そういう意味じゃないって・・・
0801デフォルトの名無しさんNGNG
グローバルフックのプロシジャーはグローバルフックをしておけば
本体で別のことしてる間も勝手に実行されるマルチスレッドみたいなものですよね?
0802デフォルトの名無しさんNGNG
ポップアップメニューの文字の高さを変更するにはどうしたらいいの?
0803デフォルトの名無しさんNGNG
>>800
というか>795に意味が含まれてないから誰もコメントできないかと
0804デフォルトの名無しさんNGNG
グローバルフックは結局DLLのインスタンスハンドルだけを取得すれば
winmainの中でもグローバルフックできるんですか?
0805デフォルトの名無しさんNGNG
>>801
グローバルフックの場合は本体とフックプロシージャのスレッドは異なるが、
そもそも各スレッドの存在するプロセス空間自体が違うので、
マルチスレッドというよりはマルチプロセスというほうが近い。

>>804
必要な情報さえ集まるのであれば、フックを仕掛けるの自体はどこででも。
0806デフォルトの名無しさんNGNG
コントロールキー押したまま文字キーを押したことをウインドプロシジャーで処理するにはどうやりますか?
0807デフォルトの名無しさんNGNG
GetKeyStateか、よくわかった
0808デフォルトの名無しさんNGNG
APPのコードをライブラリ化。
長文ソース簡略化で作業時間、効率を削減。

基本的なWin32システムを支援します。

>>807 GetAsyncKeyStateもちゃんと乗ってまうs!!!

最強のACライブラリー
ttp://www.geocities.jp/osoftjp
0809デフォルトの名無しさんNGNG
おい、まだ腐ったJavaScript破棄してないのかよ。ダサダサで無駄に敵を増やすだけだってのが分からないのか?
0810デフォルトの名無しさんNGNG
効率を削減。効率を削減。効率を削減。効率を削減。
0811デフォルトの名無しさんNGNG
>>809
うむ。自分としては、
猫プロ、創プロみたいな、ただソースのページに飛ぶシンプルなのがいい。
0812デフォルトの名無しさんNGNG
GetAsyncKeyStateもちゃんと乗ってまうs!!!
0813デフォルトの名無しさんNGNG
のってマウス
0814デフォルトの名無しさんNGNG
APPのコードをライブラリ化。
長文ソース簡略化で作業時間、効率を増幅。

基本的なWin32システムを支援します。

>>807 GetAsyncKeyStateもちゃんと乗ってまうs!!!

最強のACライブラリー
ttp://www.geocities.jp/osoftjp
0815デフォルトの名無しさんNGNG
作業時間を増幅すんのか。おじちゃん嬉しくて差し戻しちゃうよ!
0816デフォルトの名無しさんNGNG

あまりにもしつこいので見てみたよ。

結論:使い物にならないクズ。
0817デフォルトの名無しさんNGNG
>>814
あぼーんし辛いからコテ使ってくれないかな?
0818デフォルトの名無しさんNGNG
URIであぼーんしろよ
0819デフォルトの名無しさんNGNG
どうしてもWM_LBUTTONDOWNがきた時点でヒットテストとかをしてキャプションをドラッグしてるように
みせかけたいのですがどうしたらよいでしょうか
WM_LBUTTONDOWNがきたらSendMessage(hwnd,WM_NCLBUTTONDOWN,HTCAPTION,screenpos)としてるのですが
うまくいきません
0820デフォルトの名無しさんNGNG
>>819
ttp://www2.wbs.ne.jp/~shingo/programming/vc/vc_tips002.htm
0821819NGNG
>>820
WM_NCHITTESTでは適当にHTOBJECTとかでも返して
WM_NCMOUSEMOVE,WM_NCLBUTTONDOWN,WM_MOUSEMOVE,WM_LBUTTONDOWNなどで対応したいのです

WM_NCHITTESTでHTOBJECTを返すと、とりあえずノンクライアント領域と判断されるらしく
WM_NCMOUSEMOVE,WM_NCLBUTTONDOWNなどのノンクライアント領域用メッセージが送られてきてそこで独自の
ヒットテストをおこなっているのですが、それだとボタンコントロールが押された、離されたなどの
処理がされなくなってしまいました.そこでWM_NCHITTESTでHTCLIENT以外だったらHTOBJECTを返し
HTCLIENTだったら素直にHTCLIENTを返すようにしました.そうすると今度はHTCLIENTだった場合に
WM_MOUSEMOVE,WM_LBUTTONDOWNなどのクライアント領域用メッセージが送られてきた時点ヒットテストなどをしなければ
HTCAPTIONだのHTTOPだのと偽れなくなってしまい、このような質問をさせていただきました
非常に文章がわかりずらくなってしまってすいません
0822デフォルトの名無しさんNGNG
>>819
>キャプションをドラッグしてるように
と書かれているので、別にキャプションを右クリックして出てくるメニューは必要ない?

もしそうであるなら
WM_LBUTTONDOWNの時にGetCapture(hwnd)でマウスをキャプチャーして
WM_LBUTTONUPされた時にReleaseCaptureしてMoveWindowなどで移動するといいんじゃないかな
0823デフォルトの名無しさんNGNG
質問です。
少し大きめのアイコン(24×24ぐらい)が表示されるツールバーを作りたいのですがよく分かりません。

IDB_STD_SMALL_COLORをつかって標準ビットマップを使う方法は分かったのですが、
自分で用意した画像を使ったその方法が分かりません。

どなたか教えてください。
(ちなみにツールバーを作る時はCreateWindowExを使っています)
0824デフォルトの名無しさんNGNG
CryptAPIで証明書ストアに関する説明が載っている
日本語サイトってないでしょうか?
0825デフォルトの名無しさんNGNG
>>824
英語嫁ばいいじゃん。
0826デフォルトの名無しさんNGNG
>>823
LoadBitmapとか?
0827デフォルトの名無しさんNGNG
>>823
>自分で用意した画像を使ったその方法が分かりません、というのは、
ビットマップの大きさを指定する方法がわからないのか、
ビットマップを読み込む方法がわからないのか、
何がわからないのかわからないのか、
そもそも何がわからないんだ。
0828823NGNG
いや画像の表示は出来てます。

問題はボタンが自分が指定したいサイズより小さいことです。
だからその指定方法を教えて欲しいです。
0829823NGNG
あ・・・TB_SETBITMAPSIZEを送ったら出来ました。
お騒がせしてすいませんでした(汗
0830デフォルトの名無しさんNGNG
>>829
よかったよかった
おめでとう
0831819NGNG
>>822
すみません
今後HTSYSMENU,HTMINBUTTON,HTMAXBUTTON,HTCLOSEなどのヒットテストにも対応したいと
考えているので、SendMessageなどでメッセージを送るなどして具体的な処理はシステムにお任せみたい
な感じでお願いします.
0832デフォルトの名無しさんNGNG
APIの質問とはちょっと違うかもしれませんが
MSDNでPSDKをDownloadした後
フォルダ削除したら
UnInstallは出来たのですが
ReInstall出来なくなってしまいました
どうすればいいでしょうか?
0833デフォルトの名無しさんNGNG
>>832
質問する場所が違いそうなので
こちらで質問するといいと思います

VisualStudio.NET(MSDN Deluxe) Part13
http://pc5.2ch.net/test/read.cgi/tech/1083995297/
0834デフォルトの名無しさんNGNG
>>819>>831
なんでそうする必要があるのかかいた方がいいよ。
もっと簡単な実現方法があるかも試練から。
0835デフォルトの名無しさんNGNG
>>832
間違えた、こっちかもしれない
スレが落ちてるからageて質問してみてくれ

MSDNサブスクライバ【トラブル解決スレ】
http://pc5.2ch.net/test/read.cgi/tech/1081505326/
0836デフォルトの名無しさんNGNG
>>831
元々普通にウィンドウを作成すれば
HTSYSMENU,HTMINBUTTON,HTMAXBUTTON,HTCLOSEなどのヒットテストには対応してるので
具体的な処理はシステムにまかされてます
0837デフォルトの名無しさんNGNG
>>835
誘導ありがとうございます
0838デフォルトの名無しさんNGNG
>>836
メニューとかエッジとか付いてない窓作って自前でその辺を描画するとかそんな用途なんでは無かろうか。
まぁ、834への解答次第か。
0839819NGNG
>>834
GUIライブラリみたいな物を作ろうとしていて将来的にはクロスプラットフォームなものにしたいと
思っています.既存のクロスプラットフォームGUIライブラリ代表としてfox toolkitをすこし調べたのですが
HitTestに対応するものがないように思えます.ここから勝手な想像なのですが、XウィンドウシステムでHitTestなど
の処理をするのはかなり面倒だからHitTestがないと推測しました.
そのような処理のむずかしいものをひとつのイベントとして定義するより引数として渡すほうが
いいと判断しました.
具体的には
struct mouse_eventargs:base_eventargs
{ unsigned int button,hittest; long x,y; };
こんな感じのものを参照渡しでユーザー定義のコールバック関数に渡しその中で
ユーザーがhittestにキャプションや最大化ボタンやサイズ変更境界などを表す定数を
代入して偽るみたいな感じなのですがWM_NCMOUSEMOVEなどのノンクライアント領域用と
WM_MOUSEMOVEなどのクライアント領域用のメッセージは同じコールバック関数onMousemoveを
呼び出す形になっています.そこでクライアント領域用のメッセージでもヒットテストなどを
してやることが必要になってしまいました

>>836
そのはずなのですが819のようにデフォルトのHitTestがHTCLIENTと判定しWM_LBUTTONDOWNが送られ
てきたところでSendMessage(hwnd,WM_NCLBUTTONDOWN,HTCAPTION,screenpos)としてもキャプションを
操作してることにはなってくれませんでした
0840デフォルトの名無しさんNGNG
まさかお前は>>814か?
0841デフォルトの名無しさんNGNG
CreateWindow関数の第一引数ってシステムクラスを使うときのためにあるって認識でいいですか?
0842デフォルトの名無しさんNGNG
あ、RegisterClassで登録したWNDCLASSEX 構造体のlpszClassNameを読み出すためにもあるんですよね?
0843デフォルトの名無しさんNGNG
SendMessage(hwnd,WM_NCLBUTTONDOWN,HTCAPTION,screenpos)
を

SendMessage(hwnd, WM_NCHITTEST, HTCAPTION, screenpos)じゃだめ?
0844デフォルトの名無しさんNGNG
>>841-842
RegisterClassで登録したウィンドウクラスを使うためには第一引数で同じ文字列を入れなくてはいけないってこと
0845デフォルトの名無しさんNGNG
>>844
グラシアス
0846デフォルトの名無しさんNGNG
>>841
間違ってはいないが限定しすぎ。
本来的には、似た機能のウィンドウを複数作る時に手間を省くためにある。

WindowClassはウィンドウの型紙で、CreateWindowは型紙を元にウィンドウを作る。
BUTTONあたりはシステムで型紙用意してくれているのでそれ使ってCreateWindowすればいいし、
1から自分でウィンドウ作るなら自作のWindowClassをRegisterClassで登録してCreateWindowする。
システム製でも自作でも、型紙部分は一度登録しておけば何度も使いまわせる。

C++知ってるなら、WindowClassは文字通りウィンドウのクラスで、
CreateWindowはそのクラスのインスタンスを作るもの、と思えば分かりやすいかも。
(この場合のインスタンスはHINSTANCEとは別の概念だから間違うなよ)
0847デフォルトの名無しさんNGNG
>>846
メルシー
0848819NGNG
できたーーーwwヘ√レvv〜(゚∀゚)─wwヘ√レvv〜─ !!
>>840
ちがいますよ(w
>>843
WM_LBUTTONDOWNがきたら
CallWindowProc(c->defwndproc, c->handle, WM_MOUSEACTIVATE, 0, MAKELPARAM(HTCAPTION,WM_LBUTTONDOWN));
としたらできました.
レスしてくださった皆さんありがとうございました
0849819NGNG
っとおもったら
case WM_NCHITEST:
   return HTCAPTION;
を消し忘れてただけでした.............
0850デフォルトの名無しさんNGNG
>>849
>>820
0851デフォルトの名無しさんNGNG
ダイアログベースのアプリケーションで、
仮想キーコードを文字として表示したいのですが、
どうやって変換すれば良いのでしょうか?
0852デフォルトの名無しさんNGNG
>>851
sprintfで文字列に変換して表示すれば?
0853デフォルトの名無しさんNGNG
0-9、A-Zなら仮想キーコード=ASCIIコード、そのまま
じゃなきゃMapVirtualKey

それ以外のキーを文字で表示したくて
LPARAMが使えるならGetKeyNameText
駄目なら自分でマップ
0854デフォルトの名無しさんNGNG
lParam の何ビット目が1か0なのかを調べないといけない場合どうやるんですか?
0855デフォルトの名無しさんNGNG
>>854
&
0856デフォルトの名無しさんNGNG
>>855
もうちょっとヒントください
お願いします
0857デフォルトの名無しさんNGNG
>>856
&で解らないならC言語を一からやり直すべき
やってないならCをやるべき
0858デフォルトの名無しさんNGNG
>>857
Cもアセンブラもやったけど分かりません
教えてください
0859デフォルトの名無しさんNGNG
そんなエサで(ry
0860デフォルトの名無しさんNGNG
>>854

bool isNbitOn(unsigned lParam, unsigned n)
{
return (lParam >> n) & 1;
}
0861デフォルトの名無しさんNGNG
>>860
Nビット右にシフトして一番下のビット以外を0にするということですね
僕の考えでは0000100000みたいな2進数が使えないから出来ないと思ってましたが
そういう頭のいいやり方があったんですね
0862デフォルトの名無しさんNGNG
オーナードローをサポートしてないコントロールの描画をカスタマイズしたくて
サブクラス化してWM_PAINTを乗っ取りたいのですが、
このときコントロールを描かせるためCallWindowProcで元のwndprocを呼び出した後
BeginPaint等をしても、当然更新領域が空なので描画可能なHDCが取得できません。
このばあい、GetDCして独自の絵を上書きするのが正しいのでしょうか?
0863デフォルトの名無しさんNGNG
>>861
いや、0000100000(何ちゅービット数だ)を作りたいだけなら 1 << 5 でいいんだけどね。
ビットチェックの場合は0/1にした方がboolとして扱えるから。
0864851NGNG
>>853
できました!
ありがとうございます
0865デフォルトの名無しさんNGNG
>861 お前の頭が悪いだけだ。
0866デフォルトの名無しさんNGNG
>>863
それも頭のいい考え方ですね
あとすこしで電卓もって10進数に変換するところでした
0867デフォルトの名無しさんNGNG
・タスクマネージャなど、プロセスのメモリ使用量が見られるものを用意。
・VC++を使ってテンプレートよりWindowsの標準的なアプリケーションを作成
・そのままビルドして実行

実行直後のメモリ使用量は4MB程度で、最小化すると300KB程度まで減少、
再度表示させると1.2MB程度になってるわけで、こいつはなぜでつか?
0868デフォルトの名無しさんNGNG
最小化されたアプリはページアウトされるから
0869デフォルトの名無しさんNGNG
>>867
「仮想メモリサイズ」を表示させてみれ。
0870デフォルトの名無しさんNGNG
コールバックが沢山あるのですが、

LRESULT CALLBACK Age( HWND ...
LRESULT CALLBACK Sage( HWND ...
LRESULT CALLBACK Hoge( HWND ...

typedef LRESULT CALLBACK ( *HogePtr )( HWND, UINT, WPARAM, LPARAM );
const HogePtr HogeHagePtr[ ] = {
Age, Sage, Hoge,
}

のように関数ポインタにしようとするとエラーが出てしまいます。
どうすればいいんでしょうか?
0871デフォルトの名無しさんNGNG
>>870
typedef LRESULT (CALLBACK *HogePtr )( HWND, UINT, WPARAM, LPARAM );
の間違いじゃね?
0872870NGNG
>>871
CALLBACKは括弧の中でしたか・・・勉強になりました。サンクス。
0873デフォルトの名無しさんNGNG
SHGetFileInfoで取得したアイコンのハンドルはDestroyIconで破棄するべきでしょうか?
いろいろなサイトを見てみると破棄しろという記述を見ますが個人的にはしてはいけないような気がします。
理由は、MSDNに書いて有るSHGetFileInfoのSHGFI_ICONの説明で
> Retrieve the handle to the icon that represents the file and the index of the icon within the system image list.
とある為です。
システムイメージリストのアイコンなら削除してはいけないと思うのですが。
0874デフォルトの名無しさんNGNG
>>873
報告ごくろう。
下がってよいぞ。
0875デフォルトの名無しさんNGNG
>>873
すべき。つーかしろ。

こうも書いてあるが。
>The handle is copied to the hIcon member ・・・
このコピーは単なるコピーじゃなくてCopyIcon/CopyImageのコピー。
それにDestroyIconしろって下の方にあるし。
0876デフォルトの名無しさんNGNG
>>875
あー、MSのサイトには確かにそう書いて有りますね。
もってるMSDNは古いのか書いてませんでした。
Thx.
0877デフォルトの名無しさんNGNG
しっかし、
> The handle is copied to the hIcon member of the structure specified by psfi,
> and the index is copied to the iIcon member.
前者のcopiedと後者のcopiedの意味が違うなんて罠だ。普通、わからんぞ。
0878デフォルトの名無しさんNGNG
>>862
wParam == NULL なら BeginPaint で HDC を取得
SaveDC
CallWindowProc で元の WndProc を呼ぶ (wParam に HDC を入れる)
RestoreDC
追加の描画をする
EndPaint (BeginPaint を呼んだ場合)
return
0879デフォルトの名無しさんNGNG
ネットワークを経由して他のパソコンの共有フォルダに
ファイルの作成とライトをしようとしています。
APIを使って実現するにはどうしたらいいですか?。
0880デフォルトの名無しさんNGNG
"作成と書き込み","クリエイトとライト"のどちらかに統一しる
0881デフォルトの名無しさんNGNG
クリエイトでおねがいします。
0882デフォルトの名無しさんNGNG
それならCreateとWriteのほがいいと思う
ライトって見たら電気を思い出す低級魔術師でした
0883デフォルトの名無しさんNGNG
通信網を経由して他の端末の共有・・・
フォルダって何だ?
0884デフォルトの名無しさんNGNG
>>879
WNetAddConnection()
WNetAddConnection2()
WNetAddConnection3()
とか?そういう話じゃない?
0885デフォルトの名無しさんNGNG
>>879
CreateFile("\\\\コンピュータ名\\共有フォルダ名\\残りのパス"ってできない?
0886デフォルトの名無しさんNGNG
通常、フォントの幅(lfHeight)は0を指定すると思いますが
選択用のDCを作らずに幅を取得、または計算する方法ないでしょうか?
0887デフォルトの名無しさんNGNG
無い
0888デフォルトの名無しさんNGNG
ttfでも読んで解析すりゃええやん。
0889デフォルトの名無しさんNGNG
その解析方法を聞いてるんだろ
0890デフォルトの名無しさんNGNG
質問者がその態度じゃ誰も解答してもらえませんよ
穏やかにいきませう
0891デフォルトの名無しさんNGNG
>>888
ださいですね
0892デフォルトの名無しさんNGNG
質問がダサイ以上回答がダサくなるのは必定。
0893デフォルトの名無しさんNGNG
文字列の幅のサイズを測るAPIってなかったっけ?
あれはHDC必要なんか
0894デフォルトの名無しさんNGNG
BOOL GetTextExtentPoint32(
HDC hdc, // handle to DC
LPCTSTR lpString, // text string
int cbString, // characters in string
LPSIZE lpSize // string size
);
0895デフォルトの名無しさんNGNG
解決?
0896デフォルトの名無しさんNGNG
>>895

> HDC hdc, // handle to DC
だから、解決してないでしょ
0897デフォルトの名無しさんNGNG
Win32APIスレに質問してるんだし
HDCは使える環境であると仮定されてるんだし
HDC使えばいいんじゃね?

何か使えない理由でも?
0898デフォルトの名無しさんNGNG
>>893
文字幅じゃなくて、lfWidthに指定する幅を取得したいんですよ。
TEXTMETRICのtmAveCharWidthだと思うのですが。
lfWidth=0で作成したときとの比がWidth:Height=2:1のフォントを作成したいから、どうしても幅を取得したいわけです。
使いもしないオブジェクト(選択用DC、基準フォント)を作るのはどうも気が進まないので。
0899デフォルトの名無しさんNGNG
ぼくわホントクラスをつくて各インスタスごとにホントのハンドルと
互換ヂーシーのハンドルをもつようにしてす、
0900デフォルトの名無しさんNGNG
886=898で、他の人は関係ありません。
って言っても、この流れは止まらないか。
0901デフォルトの名無しさんNGNG
チャーリィ(あるじゃーn(ry)登場
0902デフォルトの名無しさんNGNG
>>898
くりえいとのときに固定ぴっちを指定するのはだめなんですか
0903デフォルトの名無しさんNGNG
このすれわなぜとまているのですか。
0904デフォルトの名無しさんNGNG
>>902の質問に答えてくれないからじゃないかな
0905879NGNG
>>879です。

>>884、>>885 レスありがとうございます。
今日は休日なので試せないので明日やってみます。
0906デフォルトの名無しさんNGNG
>>898
何がやりたいのかさっぱりわからん。

lfWidthが0だとフォントの都合のいい幅にしかならんから、
フォント次第では永遠にW:H=2:1になることなどありえんし、
第一可変幅フォントはどうするんだ? 固定ピッチしか考えてないのか?

説明不足すぎ。
0907デフォルトの名無しさんNGNG
>>906
全角:半角が2対1ではないです。
基準フォントと比較して幅が2倍になるってことなんですが、うまく説明できてませんでしたか。

基準フォント MS UI Gothic lfHeight=-n, lfWidth=0 で作ったフォントのサイズを Width=w, Height=h とすると、
作成したいフォントのサイズは Width=2w, Height=1hとしたいわけです。
固定ピッチでもプロポーショナルでも単純に横幅2倍のフォントを得たいのです。
0908デフォルトの名無しさんNGNG
もっとシンプルに

>lfWidthが0だとフォントの都合のいい幅にしかならんから

この都合のいい幅の2倍の幅が欲しいのです。
0909デフォルトの名無しさんNGNG
何?横倍角文字でも表示したいの?
0910デフォルトの名無しさんNGNG
>>909
ちょっと違いますが、そんな感じです。

基準の絵を横2倍に伸張したのでは解像度が低くなるので、
フォント作成の時点で横2倍のフォントが欲しいのです。
0911デフォルトの名無しさんNGNG
>>910
基準フォントって何?

アプリ起動時からDCに割り当ててあるフォントの話なら、普通にGetDCして幅取ればいい。
これに関しては他に方法はないだろ、DC以外情報持ってないんだから。
(それとも、GetDCしたくないがために、システム設定からフォント情報拾ってくる手間をかけるつもり?)

ただこの仮説だと、
> 使いもしないオブジェクト(選択用DC、基準フォント)を作るのはどうも気が進まないので
の部分が意味不明になる。幅取るだけならSelectFontの必要がないから。

自分で「基準として」設定したフォントなら、って、このケースはありえないよな。
自分で知ってるはずなんだから。

ますますわけがわからん。最初っから、省略なしで、説明しなおしてくれ。
0912デフォルトの名無しさんNGNG
>>911
lfWidth=0でCreateFontをした結果得られる最適な幅を持つフォントを基準フォントとします。
この基準フォントは、任意に選択可能であるものと思ってください。>>911で言う、自分で
「基準として」設定したフォントです。

で今回の質問ですが、この基準フォントの横倍角のフォントを作成したいのですが、
lfWidthに指定する値をどうやって求めればいいのですか?

その際、基準フォント自身は一切使われる事が無いので実体はありません。



>自分で知ってるはずなんだから。

知らないから、それを得る手段を探しているのです。
0913デフォルトの名無しさんNGNG
SetWindowsHookEXの引数のWH_KEYBOARD_LLがwindows.hはincludeしてあるのに使えません
なぜ使えないのですか?
教えてください
0914デフォルトの名無しさんNGNG
ターゲットバージョン未指定じゃないのか、と脊髄反射
0915デフォルトの名無しさんNGNG
(>>912の続き)

LOGFONT lf;
CHOOSEFONT cf = { sizeof(CHOOSEFONT), 0, GetDC(0), &lf, 0, CF_SCREENFONTS };
::ChooseFont(&cf);
lf.lfWidth = ???;
::CreateFontIndirect(&lf);

倍角フォントを作成するために、
???でするべき事を教えてください。
0916デフォルトの名無しさんNGNG
そーいえば2000とかじゃないと使えないとマイクロソフトにかいてありました
どうやってターゲットバージョンをしていしますか、おしえてください
0917デフォルトの名無しさんNGNG
#define WINVER 0x500←2000
#define WINVER 0x501←XP
#define WINVER 0x502←2003Sv(?)
0918デフォルトの名無しさんNGNG
#define WINVER 0x500
をwindows.hの前に定義するでいいんですよね
ありがとうございました
0919デフォルトの名無しさんNGNG
>>915
実際にフォントを作ってDCに選択しない限り、
何のフォントがマップされるかわからないし
平均幅だって知りようがないと思うよ。
ダメ元でEnumFontFamiliesでもしてみれば?
0920デフォルトの名無しさんNGNG
実際はNTシリーズなら全部対応してるんで、
#define WINNT
でいいのかもしれない(未確認)
0921デフォルトの名無しさんNGNG
>>919
作成した時点だけではなく、デバイスコンテキストに選択した時点で
使用されるフォントの本当の実体が決定されるって言う事ですか?
0922デフォルトの名無しさんNGNG
>>921
そう。

SelectFontしてDCに選択させるまで、フォントの「本当の」幅を得る方法はない。
なぜなら、CreateFontで作成するのはデバイスに独立した論理フォント、仮のフォントだから。
論理フォントをDCで選択することではじめてDCと物理フォントが結びつき、
その時点ではじめて物理フォントの幅が得られる。

物理フォントがどういうものになるかは、選択するデバイスの特性に依存する。
今のビデオカードのようなラスタデバイスなら論理フォントに近い属性のものになりうるが、
(これは極端だが)昔のキャラクタ端末のようなものなら論理フォントでどう指定しようと
物理フォントは特定の特性しか持ち得ない。
逆に、ベクトルプロッタなら「本当に」論理デバイスに忠実な描画ができる(かもしれない)。

こういうさまざまなデバイスを統一的に扱うことを前提としてGDIは設計されているので、
論理オブジェクトでできることはいろいろ制限がある。
GetDeviceCapsでも眺めれば、そんな歴史の遺物の一端がみられるよ。
0923デフォルトの名無しさんNGNG
>>883 ( ´,_ゝ`)プッ・・
0924デフォルトの名無しさんNGNG
Borland C/C++、WindowsXPです。

ISHELLFOLDER型のポインタのLPSHELLFOLDERで
EnumObjectを使いたいのですが

LPSHELLFOLDER *lpShellFolder;
SHGetDesktopFolder(&lpShellFolder);
lpShellFolder->lpVtbl->EnumObject (lpShellFolder,hwnd,
SHCONTF_FOLDERS | SHCONTF_NONFOLDER | SHCONTF_INCLUDEHIDDEN, &lpEnumIdList);

となってますが
エラー E2316 ex.cpp 129: 'lpVtbl' は 'IShellFolder' のメンバーではない(関数 __stdcall WndProc(HWND__ *,unsigned int,unsigned int,long) )
と返されてしまいます。
始めにshlobj.hをインクルードしてるので、shlobj.hの中身を読んで見ましたが
思わしき関数を見つける事が出来ませんでした。

Borland C/C++の場合はなんと言う名前なのでしょうか?
0925デフォルトの名無しさんNGNG
>>924
C++なら直接lpShellFolder->EnumObjectで行けるんじゃないの?
0926デフォルトの名無しさんNGNG
>>925
エラー E2316 ex.cpp 129: 'EnumObject' は 'IShellFolder' のメンバーではない(関数__stdcall WndProc(HWND__ *,unsigned int,unsigned int,long) )
と返されてしまいました
どうやら違うみたいです
0927デフォルトの名無しさんNGNG
>>924 EnumObjectじゃなくてEnumObjectsだが。
0928デフォルトの名無しさんNGNG
>>927
>エラー E2227 ex.cpp 132: __stdcall IShellFolder::EnumObjects(HWND__ *,unsigned long,IEnumIDList * *)
>の呼び出しに余分なパラメータがある(関数 __stdcall WndProc(HWND__ *,unsigned int,unsigned int,long) )
というエラーに進展しました
あとは自力で何とかしてみようと思います
0929デフォルトの名無しさんNGNG
お礼言うの忘れましてすみません。
有難うございました。
0930デフォルトの名無しさんNGNG
ついでにエラーも出ないようなったので報告
lpShellFolder->EnumObjects (hwnd,
SHCONTF_FOLDERS | SHCONTF_NONFOLDERS | SHCONTF_INCLUDEHIDDEN,
&lpEnum);

としました
0931デフォルトの名無しさんNGNG
Eventがシグナルか非シグナルかを調べるにはどうやればいいですか?
0932デフォルトの名無しさんNGNG
>>931
WaitForSingleObject(event, 0);
0933デフォルトの名無しさんNGNG
>>932
ありがとうございました
0934デフォルトの名無しさんNGNG
SetEvent()をグローバルフックプロシジャーの中でやっても
プログラムの中のWaitForSingleObject(event,INFINITE)が止まったままです
event handleをDLLに渡して使ってます
わかりません教えてください
0935デフォルトの名無しさんNGNG
>>934
Handle は作成したプロセスでのみ有効なので、作成したプロセスの PID を共有しておいて、
フックされたそれぞれのプロセスで DuplicateHandle して、当該プロセスで有効なハンドルを
得る必要があります。
0936デフォルトの名無しさんNGNG
>>935
はい、やってみます
ありがとうございました
0937デフォルトの名無しさんNGNG
>>934=931?
ようするに同期とりたい訳でしょ?
だったらウィンドウメッセージを使うと吉。
0938デフォルトの名無しさんNGNG
windows2000以降ならウインドウの透明化が簡単にできるらしいのですが、
98でも透明化することはできますか?
0939デフォルトの名無しさんNGNG
HBITMAPを使って、ビットマップのあるピクセルの
RGBを得るにはどうすればよいのでしょうか?
0940デフォルトの名無しさんNGNG
FindFirstChangeNotificationでは、
監視するファイルの拡張子を指定できませんか?
0941デフォルトの名無しさんNGNG
>>938
Windows 2000 でできるようになった方法は、Windows 98 では使えない。
みーたんは知らん。

>>939
できる。

>>940
API を見ればわかる通り、できない。
0942デフォルトの名無しさんNGNG
>>938 APIの機能としては存在しない。自分でガリガリコード書く必要あり。
>>939 適当なDCにSelectBitmapしてGetPixelとか。
>>940 できない。NT系のみだがReadDirectoryChangesWでごそごそやる手はある。
0943デフォルトの名無しさんNGNG
FindFirstChangeNotificationで拡張子指定は難しいですか。

では、ある程度の時間間隔でマージされたイベントを受信したいのですが、可能ですか?
0944デフォルトの名無しさんNGNG
可能だよ。自分で適当にイベント無視すりゃいい。
0945デフォルトの名無しさんNGNG
>>938
http://www.ksky.ne.jp/~seahorse/libgw/
例えばこんな外部のライブラリに頼るか、自分で実現するかしかない。
0946938NGNG
お答えありがとうございました
0947デフォルトの名無しさんNGNG
mouse_event以外の方法で強制的にマウスをクリックさせたりする方法は無いでしょうか?
0948デフォルトの名無しさんNGNG
いま、ちょっとしたいたずらをするプログラムを書いています。
やりたい事は、

いきなりメモ帳が起動される。←これはできた。
↓
自動的に"むだむだむだむだ"と入力され、変換される。うまくいけば"無駄無駄無駄無駄"になる。←これができない。



メモ帳のEDITコントロールにWM_KEYDOWNとWM_KEYUPを送ってみました。
たしかにメッセージが送られていることを、spy++を使って確認したのですが、なぜか文字が入力されません。
WM_SETTEXTという手もあるんですが、一文字一文字入力されていったほうがインパクトがあると思うのです。
一文字づつ文字を増やしてコピーというのも、変換の動作が出来ませんし

keybd_event()だと、アクティブでないといけないし、

どなたか方法を知りませんか?
0949デフォルトの名無しさんNGNG
>>948
WM_TIMER
「むだむだ」の上に「無駄無駄」を上書き
0950デフォルトの名無しさんNGNG
そーゆーいたずらプログラムは、自分で考えないと意味がない。
出来ないなら、いますぐやめろ。
0951948NGNG
>>949
それ以前に、半角英数字すら入力できないのですが。

↓こんな感じです。aと入力したいのですが……

#define CHAR_A 0x41

SendMessage(notepadHwnd, WM_KEYDOWN, (WPARAM)CHAR_A, NULL);
SendMessage(notepadHwnd, WM_UP, (WPARAM)CHAR_A, NULL);
0952デフォルトの名無しさんNGNG
>>951
遊びみたいだからズバリは言わないでおくけど、Spy++でメモ帳をよーく見てみよう。
0953948NGNG
× WM_UP
○ WM_KEYUP
0954デフォルトの名無しさんNGNG
>>951
面倒くさいことしなくても(WPARAM)'A'でいいだろ
0955948NGNG
>>952
もっと、ズバリと手取り足取り教えてください。
頭が悪いのでspy++見てもわかりません。
0956948 ◆e.MQo98ta. NGNG
>>955
偽者

>>952
やってみます。
0957デフォルトの名無しさんNGNG
SendInputとか使わないの?
0958デフォルトの名無しさんNGNG
誰か頭悪い漏れに教えて下され。
16bitカラーのスクリーンをキャプチャした時、BITMAPINFO::bmiColors にセットすべき、
3つのDWORD値はどうやって取得すれば良いのですか。
0959デフォルトの名無しさんNGNG
>>935
名前付きイベント作ったほうが簡単じゃね?
0960デフォルトの名無しさんNGNG
>>958
キャプチャって何? スクリーンのDCからBitBltしてきた物? キャプチャライブラリの出力?
bmiColorsは3つのDWORD値などではないが、いったい何をセットする気だ?
そもそもそのHBITMAPは何なのだ? キャプチャの結果? それともそのコピー先?

俺も頭悪いから、おまえさんが何をしたいのかさっぱりわからん。
0961デフォルトの名無しさんNGNG
bmiColorsに三つっていったら、BI_BITFIELDSの事だろうと想像は付くが。
そんなマンドくせーフォーマット使うよか、24bitで受けた方が話は早いと思う。
0962デフォルトの名無しさんNGNG
>>958
試してないけど、ドキュメントには、

BYTE bmiBuffer[ sizeof(BITMAPINFO) + sizeof(RGBQUAD)*3];
BITMAPINFO* pBMI = (BITMAPINFO*) bmiBuffer;
ZeroMemory(pBMI, sizeof(bmiBuffer));
HDC hdc = GetDC(NULL);
GetDIBits(hdc, (HBITMAP) GetCurrentObject(hdc, OBJ_BITMAP),
 0, 100, NULL, pBMI, DIB_RGB_COLORS); // 0と100は適当

とかすれば BITMAPINFO を得られるようなことが書いてある。
0963デフォルトの名無しさんNGNG
VirtualAllocができない。
VirtualAlloc(NULL,512000000,MEM_RESERVE | MEM_COMMIT,PAGE_READWRITE);
メモリー3G、XP−SP1でできない
NT−SP6ならOKだ。誰か助けてくれ!
0964デフォルトの名無しさんNGNG
>>963
512MB近くの連続領域は運が良くないと取れないと思うぞ。

32bit Windows ではユーザプロセスは標準では 2GB の仮想空間しか持
てない。その中に不連続に exe や DLL がマップされる。

Windows 2000 以降だったら、3GB モードを使えば確保できる確率は上
がるかも。
0965デフォルトの名無しさんNGNG
ウインドウの外枠を透明にすることってできますか?

子ウインドウの枠を消していろいろやりたいんですが・・・
0966デフォルトの名無しさんNGNG
WS_POPUP
0967デフォルトの名無しさんNGNG
>>966
ありがとです
0968デフォルトの名無しさんNGNG
EnumWindowsで取ったウインドーハンドルから
そのウインドーがどのプロセスのものか調べるにはどうやればできますか?
教えてください
0969デフォルトの名無しさんNGNG
タイトルバーに付いてるシステムボタン(クローズとか)を、
完全に無反応にすることって可能でしょうか?
(ボタンが機能する状態と、無反応の状態を切り替えたい)

押しても閉じない状態まではできるんですが、それでも
ボタンを押したままの状態だと制御がWINMAINに戻ってこなくて・・・
メイン部分を別スレッドにするとかしないとダメ?
0970デフォルトの名無しさんNGNG
GetSystemMenuして、SC_CLOSEを無効化
0971デフォルトの名無しさんNGNG
>>969
disableにするのはダメなの?
0972デフォルトの名無しさんNGNG
>>963
脇道にそれるけど512MB=512*1024*1024だからそれだとちょっと足りない。
0973デフォルトの名無しさんNGNG
>>970 >>971
ボタンをdisableやgrayedにして機能しなくすることはできたんですが、
これだとボタンの上でクリック(ドラッグ)すると、放すまで制御が
WINMAINに戻ってこないんですよね。
ボタン押されてもMAINのコードが止まらないようにしたいんですよ。
0974デフォルトの名無しさんNGNG
WM_NCHITTESTかな?
0975948 ◆e.MQo98ta. NGNG
できた……。

>>968
GetWindowThreadProcessId()
0976デフォルトの名無しさんNGNG
>>975
ウインドーハンドルからプログラムのEXEファイルの名前が知りたいのです
それをやるにはどうやりますか?
0977デフォルトの名無しさんNGNG
GetModuleFileNameのような気がしたのでやってみます
違ってたらおしえてください
0978デフォルトの名無しさんNGNG
>976
MSのKBにまんまその回答があったなぁ。
GetModuleFileNameはローカルプロセス専用だった気がする。
0979デフォルトの名無しさんNGNG
>>977
それはモジュールハンドルやインスタンスハンドルを引数に取るんでウィンドウハンドルは無理です。
0980デフォルトの名無しさんNGNG
?
0981デフォルトの名無しさんNGNG
やっぱりGetWindowThreadProcessId()してOpenProcessしてEnumProcessModulesしてGetModuleFileNameExのような気がしてきた
0982デフォルトの名無しさんNGNG
キーボードの左キー(VK_LEFT)を押しながら、
'Z'キーを押した時っていうのはどう表現すればいいですか?
可能なのでしょうか
0983デフォルトの名無しさんNGNG
SendMessageとPostMessageってどう違うの?
呼び出し側に制御をすぐに返すのとそうでないのはわかりますけど
それだけの違いではないですよね?
0984デフォルトの名無しさんNGNG
大雑把に言うと、
Sendはその内部で直にウインドウプロシージャを呼び出し、
Postはメッセージをキューに入れるだけで、そのうちGetMessageなどで処理されるのを期待する。
と、俺はこんな感じに捉えているのだが。
0985デフォルトの名無しさんNGNG
>>982
表現はできているじゃないか。

状態を取得したいなら GetKeyboardStatusとかそんなAPIがあった気がする。
0986デフォルトの名無しさんNGNG
>>985
WM_KEYDOWN内でGetAsyncKeyState()関数の組合せで出来ました。
ありがとう。
0987デフォルトの名無しさんNGNG
>>984
それって>>983を言い換えただけジャン
0988デフォルトの名無しさんNGNG
>>987
のび太のくせに生意気だぞ
0989デフォルトの名無しさんNGNG
>>986
惜しい、その場合はGetKeyStateだ。
0990デフォルトの名無しさんNGNG
>>987
その違いが理解できないなら使い分ける必要は無い。
非同期と動機の違いで、
同期のSendMessageは戻り値を受け取る事が出来、
非同期のPostMessageは、優先順位に応じて最適なタイミングでの処理が期待できる。
0991デフォルトの名無しさんNGNG
いくつか質問させて下さい。

1.ウィンドウを移動できないようにするにはどうすればいいか?
 WM_MOVING等のイベント拾って無視しても無駄でした。

2.ウィンドウシェードをやりたいのですが、その方法は?
 ウィンドウサイズを0にしたりボーダー+キャプションの高さに
 しても無理でした。

よろしくお願いします。
0992デフォルトの名無しさんNGNG
次スレ立ててきてくれたら教える
0993991NGNG
建てますた。よろしくお願いします。

Win32API質問箱 Build21
http://pc5.2ch.net/test/read.cgi/tech/1090422324/
0994デフォルトの名無しさんNGNG
>>991
1.WM_WINDOWPOSCHANGING
2.WM_WINDOWPOSCHANGING/WM_GETMINMAXINFOで妙なことしてなければ普通にサイズ変更するだけ。
0995デフォルトの名無しさんNGNG
埋め
0996デフォルトの名無しさんNGNG
生め
0997デフォルトの名無しさんNGNG
生き
0998デフォルトの名無しさんNGNG
998
0999デフォルトの名無しさんNGNG
今だ!999ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
        ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ
1000デフォルトの名無しさんNGNG
やたー
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。