[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 06/22 11:35 / Filesize : 228 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Win32API質問箱 Build52



1 名前:デフォルトの名無しさん [2007/04/18(水) 01:54:51 ]
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

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

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

730 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 21:42:08 ]
残り3日

731 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 21:58:42 ]
俺チンコ

732 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 22:29:21 ]
if(!(~hoge & 0x000000C0))

733 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 22:48:15 ]
なんでZARDが入ってないんだよ

734 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 23:41:09 ]
WANDSじゃダメか?

735 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 12:40:33 ]
>>721
最近3日に1回はその質問見てるような気がする

736 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 13:22:41 ]
間欠泉のようなもんだから(3回目)

737 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 14:07:54 ]
DLLから窓へデータを送るにはどうすればいいの?

738 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 14:09:48 ]
WM_COPYDATA



739 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 14:30:08 ]
>>737
パケでも取得するのかい?

740 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 14:35:20 ]
WORDとハンドルがひとつなんですけど

741 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 14:37:05 ]
自分でメモり割り当ててlpDataにポインタ入れるんだよ

742 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 14:39:26 ]
構造体使えばいいだろ

743 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 14:42:53 ]
>>740
それくらいだったらSendまたはPostMessageで直接独自のメッセージを送りつければいいと思う

744 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 15:42:37 ]
MMF

745 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 17:51:38 ]
映画見に行った?海賊のやつ。
ああコナンね。
( ゚д゚)ポカーン

746 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 17:57:23 ]
(´・ω・`)知らんがな

747 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 18:02:51 ]
コナン・ザ・グレードよりコマンドーだろ

748 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 18:05:46 ]
た゛っちゅーの



749 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 00:46:15 ]
SetWindowsHookExのコールバックをクラスのメンバ関数にする場合
どう書けばいいの?

(HOOKPROC)CMainDlg::KeyboardProcとすると

error C2440: '型キャスト' : 'overloaded-function' から 'HOOKPROC' に変換できません。
と怒られます。

750 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 00:49:23 ]
staticなメンバ関数から呼び出す

751 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 00:54:29 ]
行方不明じゃん

752 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 01:00:55 ]
え?

753 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 01:03:29 ]
そもそも静的にしないと住所不定

754 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 01:50:25 ]
この処理は既に実行されています。

みたいな感じの時はHRESULTはどれを使えばいいんでしょうか?

755 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 02:01:47 ]
E_KONOSHORIHA(略

756 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 02:06:27 ]
E_ABORT

757 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 02:11:27 ]
HRESULT hr = AtlHresultFromWin32(ERROR_ALREADY_INITIALIZED);

758 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 02:14:16 ]
それがエラーではないというのならS_FALSEという手もある。
勿論その場合S_KONOSHORIHA(略も可。



759 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 02:39:44 ]
AtlHresultFromWin32(ERROR_BUSY); でいいんじゃ。



760 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 08:34:39 ]
その文章だと二つの意味に取れるな。
1.現在処理中なので、受け付けることができない。
2.この呼び出しを二回以上する必要は無い。

761 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 08:41:09 ]
この呼び出しを二回以上する必要は無い。
なんですけど。FACILITY_ITFで自分で定義できるみたいですね。
どうもありがとう。

762 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 09:09:06 ]
FORMAT_MESSAGE_FROM_SYSTEMは最大で何文字まで返ってくる可能性があるの?

763 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 09:19:32 ]


764 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 09:27:04 ]
64KB。Unicodeで32K文字ってとこか。

765 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 09:29:25 ]
実メモリが許す限りじゃね?
各エラーコードに対応するメッセージが全部わかれば最大どれくらいか解ると思うけど
つか、FORMAT_MESSAGE_FROM_SYSTEMはFORMAT_MESSAGE_ALLOCATE_BUFFERと一緒に使うもんだと思ってたんだけどw

766 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 09:31:27 ]
>>764
詳しく

余談だけど、Unicode=2バイトじゃ無い

767 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 09:32:33 ]
へぇ〜

768 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 10:09:56 ]
>>766
内部的に使ってるUNICODE_STRING構造体の制限。
あとWin32のW系APIで文字と言ったら暗黙にUTF-16符号単位のことを指してると思っていい。



769 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 10:52:47 ]
FormatMessageへ渡すバッファってLPWSTRになってるけど
実際渡すのはLPWSTRへのポインタでは?

770 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 10:55:00 ]
>>769
それは、FORMAT_MESSAGE_ALLOCATE_BUFFERの時ね

771 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 10:55:57 ]
この事実に気付いた者は抹殺さr

772 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 11:31:01 ]
自動的にメモリ確保してくれるんだろ
後LocalFreeしないとダメなんだよな使い終わったら。

773 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 11:35:05 ]
あらかじめ確保したものを渡す関数と
勝手に確保して返してくれる関数の違いは
関数の仕様見て確認するしかないんですよね
ネーミングのルールとかありますか?

774 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 12:07:26 ]
呼び出し側でバッファを用意して渡す場合、
バッファサイズも渡さないとイケナイから、わかる。

775 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 16:49:46 ]
CopyMemoryの成否の判断ってどうするんでしょう

776 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 16:51:35 ]
CopyMemory が失敗する状況って、メモリが壊れてる時とかか?

777 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 16:54:24 ]
CopyMemoryってmemcpyの#defineじゃなかったっけか。

778 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 16:59:06 ]
しかもmemcpyはコンパイラによってはインラインに展開される。
そんなものが失敗するような状況じゃエラーチェックの判定だって正しく行われるかどうか
分からんぞ。つまり考えるだけ無駄



779 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 17:20:52 ]
memcpyはこういうときにエラーを返すということが定められていなかったと思う。

エラーになりそうな状況を考えると、思い付くのはヌルポインタなどメモリにアクセスできないとき。
それならWindowsが例外を投げてくるだろう。SEHで処理しろ。

780 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 17:45:48 ]
IMAGE_IMPORT_DESCRIPTOR についての質問です。

Advanced Windows のAPIフックに関するソースコードを読むと、
モジュールのベースアドレス(modBaseAddr)と、
モジュールのハンドル(hModule)は "常に同じ" として
扱われているみたいですが、
これは保証されている事なのですか?


781 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 17:48:31 ]
パケット取得でもするのかい?

782 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 17:55:03 ]
特に用途はないです。
ただの興味本位ということで・・・

783 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 18:20:23 ]
コンボボックスでドロップダウンリストが1行しか表示されません。
複数行を表示するにはどこを設定すればよいのでしょうか?

OS:WinXP
環境:Visual Studio 2005
言語:C++

784 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 18:21:32 ]
下に広げる

785 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 18:26:46 ]
コントロールのデザインのとこで、コンボボックスのドロップダウンボタンをクリックすると
コントロールの大きさを変えるのとドロップダウンリストの大きさを変えるのが切り替わる

786 名前:783 mailto:sage [2007/05/05(土) 18:28:22 ]
>>784
エディット画面で選択項目表示部分を選択すると
縦方向に伸ばすことができなかったのですが
矢印ボタンのところをクリックすると縦方向に伸ばせました。
ありがとうございました。

787 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 18:42:21 ]
ファイルマップオブジェクトにthisポインタの値を書き込むにはどうすれば良いですか?

788 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 19:06:57 ]
>>787
thisポインタの値を書き込めばいいと思います



789 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 19:43:57 ]
thisポインタの値とは?

790 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 19:44:11 ]
thisポインタの値のことだろ

791 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 21:18:42 ]
メニューバーのオーナードローをするにはどうすれば良いでしょうか?
Adobe Reader(8.0)のメニューバーのような感じにしたいです。

792 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 22:08:50 ]
メニューバー?
Reader8のメニューは普通だと思うが?
ツールバーか?

793 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 22:17:27 ]
どうしてnCodeがマイナスだとすぐにCallNextHookExを返すの?

794 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 22:44:28 ]
そういう決まりだから

795 名前:791 mailto:sage [2007/05/06(日) 00:18:21 ]
>>792
kjm.kir.jp/pc/?p=32876.jpg
赤線で囲ってあるところなんですけど、なんて言うんでしょうか?

796 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 00:23:10 ]
メニューバー

797 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 00:24:11 ]
メニューにアイコンをつけたいとかそういう話?

798 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 01:04:42 ]
質問です、以下のようなプログラムを現在制作しています。

コンソールアプリケーション
テキストをドラッグ&ドロップすることで、一定の処理をテキストファイルに対して行う。
「一定の処理」は、このアプリケーション用に書かれたDLLのによって変化する。

それで、DLLの検索&ロードをFindFirstFileとFindNextFile、LoadLibraryを用いて行っています。
そのプログラムなのですが、IDE(VC7)からでは設計通りに動作するのですが、それ以外では動作せず…。
どうやらFindFirstFileなどで、DLLが検索に引っ掛からないようなのです。

(おそらくはカレントディレクトリの問題なのでしょうが)、何故このようなことが起こるのでしょうか?
また、対策を教えてください。よろしくおねがいします。



799 名前:791 mailto:sage [2007/05/06(日) 01:11:24 ]
アイコンは別にいらないのですが、Adobe Readerみたいにメニューバーの通常状態の色や、選択状態の色を変えたいのです。
あと、右上端にあるバツ印もどうやっているでしょうか?

800 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 01:11:40 ]
GetModuleFileName

801 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 01:12:45 ]
>>798
>(おそらくはカレントディレクトリの問題なのでしょうが)
そう思うなら、まずはGetCurrentDirectory()で調べるべきでは?

802 名前:デフォルトの名無しさん [2007/05/06(日) 01:56:35 ]
DLLを実行ファイルに含めて、一つの実行ファイルにすることって可能でしょうか?

803 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:05:33 ]
>>802
無理やりリソースとして埋め込んで、実行時に復元すれば?

804 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:08:48 ]
hIconでアイコンを指定しました。
けど
kjm.kir.jp/pc/?p=32881.png
みたいにタスクバー上でしかアイコンが変わってません。
どうしたらプログラム上でもアイコンを変えれますか?

805 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:12:05 ]
hIconSm を放置してるとか?

806 名前:798 mailto:sage [2007/05/06(日) 02:17:35 ]
>801
ありがとうございます、さっそく調べてみました。
すると、カレントディレクトリがC:\Document and Settings\(ユーザー名)となっているようです。
これは何故なのでしょうか、理由をどなたか知っていれば教えていただければと。

807 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:19:44 ]
>>805
素早いレスありがとうございます。
hIconSmの存在も調べました。
でもwindows95以外はWNDCLASSEXを使えないらしく、だからhIconSmも使えないそうなんです。
実際hIconSmも指定してビルドするとWNDCLASSにはhIconSmは存在しないってエラーがでました。


808 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:19:51 ]
理由を考えるよりカレントディレクトリに依存しないようにプログラムを変えろ



809 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:23:44 ]
>>807
Windows 95 以降全部で使えるぞ。

810 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:24:58 ]
むしろどこに Win95 以外使えないって書いてるのか教えてくれ

811 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:28:52 ]
Windows 95のころのSDKじゃね?
当然「Windows 95以外」が意味してるのはNT 3.5とかWindows 3.1とか

812 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:31:49 ]
>>809-811
あれ、つかえるんですか。じゃあそれでやってみます。

813 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:32:14 ]
>>811
VC++ 5.0 あたりか。

814 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:42:04 ]
hIconSmで指定しても駄目でした。
ちなみにVC++ 6.0をつかってます

815 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:45:57 ]
あ、16 ビット版のアイコンをエディットしてないとかはどうか?
確か VC++ 6.0 あたりは、アイコンを新たに作成したときは
32 ビット版と 16 ビット版が両方作られてたはず。
どっかでエディット対象を選択できるんで、
それで 16 ビット版の方もエディットすればいいはず。

816 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:47:11 ]
ちゃんと WNDCLASSEX 使ってるか? WNDCLASS じゃないぞ

817 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:53:25 ]
>>815
一つしか作られてないと思うのですが、どこに作成されるのでしょうか?

>>816
WNDCLASSEXに変えても駄目でした。

818 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:54:32 ]
>>817
1つのファイルに2つのアイコンが入ってるはず。



819 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:55:45 ]
ビットじゃないやw ドットだ。

820 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:58:26 ]
>>818
一つしかアイコンはありませんでした・・・
もちろん32のほうだけしかありません・・・

821 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:59:02 ]
>>820
どういう風に確認した?

822 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 03:01:58 ]
>>821
アイコンの保存場所がワークスペースがあるフォルダなのでそこを確認しました

823 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 03:04:56 ]
>>822
アイコンの中身は見たのか?

824 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 03:07:30 ]
WNDCLASSEXでhIconSmを指定してる箇所のソースを
ここに張り付けた方が解決が早い予感

825 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 03:11:51 ]
>>823
アイコンの中身は見ました。
プロパティも確認しました。

826 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 03:13:43 ]
メインのとこだけ貼り付けます
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow) {
MSG msg; //メッセージ情報格納用構造体
WNDCLASSEX wc; //ウィンドウクラス
HWND hWnd; //ウィンドウハンドル
//*****ウィンドウクラスの設定*****//
wc.cbSize = sizeof(WNDCLASSEX); //構造体サイズ
wc.hInstance = hInstance; //インスタンスハンドル
wc.lpszClassName = szClassName; //ウィンドウクラス名
wc.lpfnWndProc = WindowProc; //ウィンドウプロシージャ名
wc.style = CS_HREDRAW|CS_VREDRAW; //ウィンドウスタイル
wc.hIcon = LoadIcon(hInstance,"IDI_ICON1"); //アイコンハンドル
wc.hIconSm = LoadIcon(hInstance,"IDI_ICON1");
wc.hCursor = LoadCursor(NULL,IDC_ARROW); //カーソルハンドル
wc.lpszMenuName = "saisei"; //メニュー
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //ウィンドウの背景色セット
//*****ウィンドウクラス登録*****//
if(!RegisterClassEx(&wc)) return FALSE; //登録失敗
//*****ウィンドウの作成*****//
hWnd = CreateWindow(szClassName,"再生プログラムだべ",WS_OVERLAPPEDWINDOW,440/*CW_USEDEFAULT*/,650/*CW_USEDEFAULT*/,400,100,NULL,NULL,hInstance,NULL);
/*hWnd = CreateWindow(ウィンドウクラス名,ウィンドウタイトル,ウィンドウスタイル,ウィンドウの水平座標位置,ウィンドウの垂直座標位置,ウィンドウの幅,ウィンドウの高さ,親ウィンドウのハンドル,メニューのハンドル,インスタンスハンドル)*/
//*****ウィンドウの表示*****//
ShowWindow(hWnd,nCmdShow); //ウィンドウの表示状態設定
UpdateWindow(hWnd); //ウィンドウの表示領域更新
//**********メッセージループ***************
while(GetMessage(&msg,NULL,0,0)){TranslateMessage(&msg);DispatchMessage(&msg);
}
/*while(メッセージの取得){メッセージの変換,メッセージをプロシージャへ送信}*/
return msg.wParam;
}

827 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 03:14:16 ]
>>806
IDEから実行したらおそらくカレントディレクトリはプロジェクトファイルのあるディレクトリになってるはず。
ファイルをドラッグ&ドロップして起動した場合は、ファイルのあるところがカレントディレクトリになってるはず。

理由?知らね。そのほうが都合がいいからだろ。

DLLをEXEと同じディレクトリに置くことにしてるのなら>>800とか。

828 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 03:14:36 ]
アイコンファイルをうpってみたら?



829 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 03:20:49 ]
アイコンをアップしました
ttp://vipup.sakura.ne.jp/512kb/src/512kb_9949.zip.html

830 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 03:31:28 ]
確かに 32 ドットのしか入ってないね・・・。
>>826 も別に変には思えないし。
じゃ、16 ドットのも作ってみたらどうかな。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<228KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef