Win32API質問箱 Build22
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
NGNGBuild21:http://pc5.2ch.net/test/read.cgi/tech/1090422324/
Build20:http://pc5.2ch.net/test/read.cgi/tech/1088140233/
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
(★は「いやー ごめんなさい。」に巻き込まれた模様
0002デフォルトの名無しさん
NGNGhttp://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/
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
0003デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNGつくりたいけど、やはり右クリックのタイミングに全部のメニューを作ってしまわないと
いけないんだろうか?なんか遅くなりそうな気がするんだけど、大丈夫ですか?
経験者アドバイスお願いします。
0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNGポップアップメニューが表示されるときに、そのメニュー以下のメニューを作ればいいと思うけど。
0007デフォルトの名無しさん
NGNGで検索するとWM_MENUSELECT メッセージを発見
ありがとう。
0008デフォルトの名無しさん
NGNG10fpsくらいでフレームごとにウィンドウリージョンを変形させたところ
すごいCPU負荷でした。元のウィンドウサイズは320x320くらいなのですが、
頻繁なリージョン変形をしても負荷を高めない方法ってあるのでしょうか?
0010デフォルトの名無しさん
NGNGLayeredWindow + αチャネルを使う
0011デフォルトの名無しさん
NGNGttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpdnwui/htm/layer.asp
0012誰にともなく
NGNGなんて関数があったのか。はじめて知った
0013デフォルトの名無しさん
NGNG仕様によるがSHGetSpecialFolderPathもアリだね。
0014デフォルトの名無しさん
NGNG0015デフォルトの名無しさん
NGNGついでに誰へともなく書くけど、ExpandEnvironmentStrings はレジストリの
REG_EXPAND_SZ タイプとセットで覚えておくと吉だと思う。型のものは、環境変数が展開されることを期待しているから、
ExpandE略( で展開する必要がある。
0016デフォルトの名無しさん
NGNGちゃんと編集してから書き込めよ、漏れ orz
0017デフォルトの名無しさん
NGNG0018デフォルトの名無しさん
NGNGMSDNライブラリでは「リスト ボックスの現在の選択項目がキャンセルされたとき。」
に送られると書いてありますが、具体的にどういう操作をした場合ですか?
選択項目が変わる直前に来るかと思っていたのですが、
違うみたいです。
LBN_SELCHANGEだと選択項目が変わったあとに通知されるので、
変わる前の状態が欲しかったのですが、
自分で、記録しておかないとダメですかね?
0019デフォルトの名無しさん
NGNGのまま何らかの原因でアクティブウィンドウが切り替わってしまった
てな時
0021デフォルトの名無しさん
NGNGおおおー、レイヤードウィンドウか。こんな技もあったとは。THANX。
SetLayeredWindowAttributesとUpdateLayeredWindowの組み合わせでできるのね。
0023デフォルトの名無しさん
NGNGOpenGLスレで質問してたひとですか?
そうですよ。どうかしましたか?
0025デフォルトの名無しさん
NGNG省電力モードの設定を知ることや、省電力モードに移行/復帰できるのは探し当てたのですが、実行状態を知るのは見つからなくて
0026デフォルトの名無しさん
NGNG試してないけど。
0027デフォルトの名無しさん
NGNG設定を得ることができるだけのようです
0028デフォルトの名無しさん
NGNG違う値で送られてくることってありますか?
もしあるとすれば、例えばどのような場合でしょうか?
0029デフォルトの名無しさん
NGNGIOCTL_VIDEO_QUERY_DISPLAY_BRIGHTNESS
とかどうだろう?試してないけど。
0030デフォルトの名無しさん
NGNGつまり、自作のプログラムで違う値が送られてきたことがあった、と?
003128
NGNGいえ、自分で実験してみた限りでは同じ値が送られてくるんですが、WM_NOTIFY の説明によると
「wParam はユニークであることが保証されていないので、idFrom を使うべし」
というようなことが書いてあるので、もしかして何か違いがあるのかなと思いまして…。
0032デフォルトの名無しさん
NGNG0033デフォルトの名無しさん
NGNG>>28読め
0034デフォルトの名無しさん
NGNG003528
NGNG確かに、idFrom の方を使っていれば何の問題もないということになりますが…。
wParam が使えないとすると、はじめから wParam は別の用途に割り当てておけば
よかったわけで…そう考えると本当は何か使い道があるんじゃないかと思いまして。
0036デフォルトの名無しさん
NGNGイメージを表示するつもりがないにもかかわらず、LVN_GETDISPINFOメッセージが
LVITEM構造体のmaskにLVIF_IMAGEがセットされた状態で送られてきてしまいます。
どのように対処するのが最も正当な手段と言えるでしょうか?
(1) maskのLVIF_IMAGEをセットしないでLVN_GETDISPINFOを送らせる方法があるので、それを使う。
(2) maskのLVIF_IMAGEを強制的にクリアして応答しても構わない。
(3) iImageに特殊な値(-1とか)をセットして応答する。
(4) その他。
いろいろ調べたのですが分かりませんでした。どうかご教示ください。
0037デフォルトの名無しさん
NGNG>イメージを表示するつもりがないにもかかわらず
ま、イメージを表示するつもりかどうかは誰にも分からないわけだし、表示できるように
マスクがセットされていると考えれば、(2) でいいんじゃないの >試してないけど
0038デフォルトの名無しさん
NGNGHANDLE start;
unsigned __stdcall proc(void*)
{
::WaitForSingleObject(start, INFINITE);
return 0;
}
int main(int argc, char* argv[])
{
start = ::CreateEvent(NULL, FALSE, FALSE, NULL);
assert( start );
HANDLE threads[THREADS_COUNT] = {0};
int i;
for(i = 0; i < THREADS_COUNT; ++i) {
threads[i] = reinterpret_cast<HANDLE>(_beginthreadex(0, 0, proc, (void*)i, 0, 0));
assert( threads[i] );
}
::Sleep(10000);
for(i = 0; i < THREADS_COUNT; ++i) {
::SetEvent(start);
::Sleep(0); // <---------- ここ
}
for(i = 0; i < THREADS_COUNT; ++i) {
::WaitForSingleObject(threads[i], INFINITE);
::CloseHandle(threads[i]);
}
003938
NGNGメインはスレッドを10コ作りイベントを10回セットしスレッドの終了を待ち
スレッドはイベントがセットされたら終了するというものです。
正常に10コのスレッドが終了するのですが
コメントの::Sleep(0);を無効にすると1コのスレッドしか終了しません。
スレッド切り替えが起きずにSetEventが10回行われ
結局1回のSetEventと同等になってしまうということなのでしょうか?
これは仕様なのでしょうか?
004038
NGNG0041デフォルトの名無しさん
NGNG0042デフォルトの名無しさん
NGNGアホか。
0043デフォルトの名無しさん
NGNGスレッドの最後にOutpuDebugStringを入れてみたら、確かに1コしか解放されてませんでした。
で、疑問なのですが自動リセットイベントの場合
SetEventは待ちスレッドがあった場合それを解放してイベントを非シグナル状態にする
とMSDNには書いてあります。
上記のプログラムでは待ちスレッドが10コあるため
SetEvent->イベントシグナル->スレッド解放->非シグナル
が10回繰り返されると思ったのですが…
いったいどのタイミングでスレッドは解放されるのでしょうか?
0044デフォルトの名無しさん
NGNG煽られて感情高ぶってるのはわかるけど、
知ったところで意味のない質問はしない方がいいよ。
プラットホームで変わるかもしれないし。
0045デフォルトの名無しさん
NGNG>The state of an auto-reset event object remains signaled until a single waiting thread is released,
>at which time the system automatically sets the state to nonsignaled.
- Microsoft Platform SDK Document "SetEvent"
待機中のスレッドが何時リリースされるかについては触れられていないのがポイントっぽいですね。
実際にリリースされるまでの間は、単にイベントがシグナル状態にあるだけで、
>Setting an event that is already set has no effect.
となってしまう。
0046デフォルトの名無しさん
NGNG誤>SetEventは待ちスレッドがあった場合それを解放してイベントを非シグナル状態にする
正>SetEventはイベントをシグナル状態にする。待機中のスレッドが一つ開放されるとイベントは自動的に非シグナル状態になる。
待機中のスレッドがリリースされる前に制御は戻ってきますよ。
0047デフォルトの名無しさん
NGNG>いったいどのタイミングでスレッドは解放されるのでしょうか?
そりゃ、スレッドの待機が解除されたら・・・だろ?
で、スレッドの待機が解除されるには、
そのスレッドが実行されなければいけない
Sleep(0)で明示的にタイムスライスを放棄すれば、
上手く行くんだから明らかだろ?
なんだったら、作成したスレッドの優先度を上げて見たら?
0048デフォルトの名無しさん
NGNGhDeviceを得るためにCreateFileを使おうと思いましたが
CRTディスプレイに該当するlpFileNameの文字列が分かりません
004938
NGNGありがとうございました。
なぜこの疑問が浮かんだかというと、
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndllpro/html/msdn_metrsect.asp
のメータードセクションを試しに作ってみて上手くいかず原因をさぐってみたところ
LeaveMeteredSectionの
for (iCount=0; iCount < lReleaseCount ; iCount++)
{
lpMetSect->lpSharedInfo->lThreadsWaiting--;
SetEvent(lpMetSect->hEvent);
}
で必要分スレッドがリリースされてなかったからです。(Sleep(0)を入れて解決しました)
005038
NGNG>>38 で名前付きイベントを使いメインとスレッドの処理を別プロセスで動かしたところ
Sleep(0)を入れなくてもスレッド10コ分リリースされました。
これはたまたまなんでしょうか…
趣味でWindowsプログラム7年やってますが、同期オブジェクトの扱い方がわからなくなってきました…
0051デフォルトの名無しさん
NGNGGUI(画面)に表示するプログラムがありますが、
あれはどうやって作るんでしょうか。
005236
NGNG> マスクがセットされていると考えれば、(2) でいいんじゃないの >試してないけど
うちの環境(XP)で (2) が使えることは確認していたのですが、他の環境でもうまくいくとは
限りませんし、(1) の見落としの可能性もあったので一応質問させていただいた次第です。
お返事、どうもありがとうございました。
0053デフォルトの名無しさん
NGNG0054デフォルトの名無しさん
NGNG0055デフォルトの名無しさん
NGNGWM_GETMINMAXINFOを処理しる
0056デフォルトの名無しさん
NGNG0057デフォルトの名無しさん
NGNGWS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX
0058デフォルトの名無しさん
NGNGWM_MOVINGでparamから位置をもらいながら位置判定して、movewindowしてるんですが、
それだと頻繁に、通常のウィンドウ動かしたときのような点線枠が変な風に(びよ〜んと伸びる)表示されてしまいます。
どうすればWinampみたいな動きが実現できるのでしょうか?
0059デフォルトの名無しさん
NGNG0060デフォルトの名無しさん
NGNGWM_WINDOWPOSCHANGING
0061デフォルトの名無しさん
NGNG出来ました。サンクスコ
>>57で簡単に出来たけど>>54の方でやるメリットと言うか
違いって何かあるんですかね。
0062デフォルトの名無しさん
NGNG0063デフォルトの名無しさん
NGNG>>55と>>57だった
0064デフォルトの名無しさん
NGNG>>57だと枠線がサイズ変更できないウィンドウ標準のものになる
(95以降は区別が付きにくいけど)
0065デフォルトの名無しさん
NGNGコンソールを開く
0066デフォルトの名無しさん
NGNGSetCapture()でキャプチャーしてるんですけど、ウインドウの右側はみ出た場合は
数値がそのまま増えていくんですけど、左から出た時は0の左が65535になって左に
行けば行くほど数値が低くなるんですけど、何で65535なんて数値になるんでしょう?
0067デフォルトの名無しさん
NGNG0068デフォルトの名無しさん
NGNG「ひろゆき」から「今晩のおかず」までを手広くカバーする巨大掲示板群
『3ちゃんねる』へようこそ!
▲▲
( ・3・) <見に来てね
(|. .|)
|. ω |
∪ ∪
3ちゃんねるイメージキャラクター
「3チコ (さんちこ)」
http://www.3ch.jp/
0069デフォルトの名無しさん
NGNGsigned, unsigned について説明してみろ
0070デフォルトの名無しさん
NGNGsigned 符号付き
unsigned 符号無し
ですか?
0071デフォルトの名無しさん
NGNGいったん short にキャストしてから int なり何なりに代入汁。
0072デフォルトの名無しさん
NGNG左端から出たら、どんな数値になって欲しいのさ?
0073デフォルトの名無しさん
NGNG-1じゃなくて65535になってしまうってことですか。
>>71
どうも有り難うございます。
0074デフォルトの名無しさん
NGNGwindows.hだけではダメなんですか?
いちおう
#define _WIN32_WINNT 0x0500
これもしたんですが、定義されてないとエラーが出てしまいます
0075デフォルトの名無しさん
NGNGGET_X_LPARAM
0076デフォルトの名無しさん
NGNGincludeディレクトリをgrepして、無ければPlatformSDKをゲット
0077デフォルトの名無しさん
NGNGそのフォルダ、ディレクトリ設定のインクルードファイルの欄にちゃんと入ってます…
0078デフォルトの名無しさん
NGNG#ifディレクティブに注意
0079デフォルトの名無しさん
NGNGこれかいててもダメですね…
検索かけたらみんなこれで解決してるのに…
0080デフォルトの名無しさん
NGNG0081デフォルトの名無しさん
NGNG0082デフォルトの名無しさん
NGNGwinternl.hのプロトタイプ宣言が間違ってるのってどうよ
0083デフォルトの名無しさん
NGNG削除して新たに作成するしかないのでしょうか?
0084デフォルトの名無しさん
NGNGIEを起動すると最初一回だけ、「インターネット接続ウィザード」が表示されてしまいます。
これを回避したいのですが、どうすればよいでしょうか。
お知恵をお貸しください。
0085C言語初心者
NGNG0086デフォルトの名無しさん
NGNG0087デフォルトの名無しさん
NGNG0089デフォルトの名無しさん
NGNG{
HSEX sex = CreateViruSEX();
RunViruSEX(sex, "立ちバック");
return 0;
}
0090デフォルトの名無しさん
NGNGRegSetValueEx でいけなかったっけ?
0091デフォルトの名無しさん
NGNG0092デフォルトの名無しさん
NGNGRunViruSEXが0をFALSEを返します!!!!
GetLastError()の戻り値は5でした!!!!
何故ですか????
0093C言語初心者
NGNG僕のまねをしないでください!!!
なんでみんな真面目に答えてくれないんですか???・
0094デフォルトの名無しさん
NGNG0095デフォルトの名無しさん
NGNGmain(int) { CreateViruSEX; return } << "立ちバック"
こうですか?わかりません。
0096デフォルトの名無しさん
NGNG/*
HPENIS GetPenisHandle(
LPCTSTR HumanName // 所有者名
);
LONG SetPenisLong(
HPENIS hPenis, // ペニスのハンドル
int nIndex, // 設定する値のオフセット
LONG dwNewLong // 新しい値
);
HADLITM GetStockItem(
int fnItem // ストックアイテムのタイプ
);
*/
SetPenisLong(GetPenisHandle(NULL), SPL_CONDOM, (LONG)(HCONDOM)GetStockItem(WARTY_CONDOM));
0097デフォルトの名無しさん
NGNG皆が真面目に答えないのはウィルス作成に米国家の専門資格が必要だから。
それで初心者を名乗るお前は絶対持っていないだろうと皆が思っているから。
0098デフォルトの名無しさん
NGNG真面目に答えて欲しければ、質問を変えた方がいいと思うよ。
誰もウイルス作成の手助けなんかしたくない。スレ違いのような気もするし。
0099デフォルトの名無しさん
NGNGそんなとこで釣られるn(ry
0100デフォルトの名無しさん
NGNG0101デフォルトの名無しさん
NGNGおまえ童貞だろ。なら当然FALSEが返る。
0102デフォルトの名無しさん
NGNGwin32 console で,stdin にインプットがあるかどうかを調べるには
どうすればよいのでしょうか? unix 系の環境での select() 関数の
ようなものを探しています.今のところ _kbhit() を使用していますが,
標準入力がキーボードの時しか上手く働いてくれません...
0103デフォルトの名無しさん
NGNG0104デフォルトの名無しさん
NGNGそのテキストボックスにキーボードフォーカスを移すには
どうすればいいんですか?
0105デフォルトの名無しさん
NGNG0106デフォルトの名無しさん
NGNGWM_NEXTDLGCTLの使用を推奨したい。
0107デフォルトの名無しさん
NGNGwinじゃselectはsocketにしか使えませんが?
0108デフォルトの名無しさん
NGNGプログラムから、そのプログラム自身を実行した時の CreateProcess API の
各引数を調べる方法はあるのでしょうか?
その辺を多少調べたけれどわからんかったので教えていただければ嬉しいです。
ヒントとなるキーワードやAPI名でもいいんで教えてくださいエロい人。
0109デフォルトの名無しさん
NGNGネタにマジレスするな
0110デフォルトの名無しさん
NGNG0112デフォルトの名無しさん
NGNGCreateProcess索いて、See Alsoをざっと見てみた。
GetCommandLine, GetEnvironmentStrings, GetStarupInfoあたりが使えそうだな。
>>111
ボタンに黒枠が残っても気にしないのならそれで問題ない。
0113デフォルトの名無しさん
NGNGWaitForSingleObject(GetStdHandle(STD_INPUT_HANDLE), 0)とか?
入力ハンドルがコンソールじゃなかった場合にWaitFor〜していいのかちょっと怪しいが
0114102
NGNG解決しました!
ありがとうございました.
0115115
NGNGDLLはプラグインとしてアプリからロード,実行されアプリのWindowProcをSetWindowLongPtrで書き換えて
自分のProcが呼ばれるところまではうまくいきました
実際にずらす処理は
if(msg==WM_PAINT)
{
HDC hdc = BeginPaint(hwnd, &ps);
InvalidateRect(hwnd, &ps.rcPaint, ps.fErase);
SetGraphicsMode(hdc, GM_ADVANCED);
XFORM xnew, xlast;
GetWorldTransform(hdc, &xlast);
xnew.eM11 = 1;xnew.eM12= 0;
xnew.eM21 = 0;xnew.eM22= 1;
xnew.eDx = 100;xnew.eDy= 0;
SetWorldTransform(hdc, &xnew);
LRESULT result = CallWindowProc(g_DefProc, hwnd, msg, wp, lp);
//ためしに変数helloの文字列を0,0に描写
TextOut(hdc, 0, 0, hello, wcslen(hello));
SetWorldTransform(hdc, &xlast);
SetGraphicsMode(hdc, GM_COMPATIBLE);
EndPaint(hwnd, &ps);
return result;
}
0116115
NGNGアプリによってのほうは,今までのままです.原因はSetWorldTransformを適用してるHDCとアプリが実際使ってるHDCが
異なっているためだと思うのですが,ずらす系(?)API(SetWorldTransformとOffsetViewportOrgEx)の両方とも
引数としてHDCをとるため事前にアプリが使用するHDCを固定するかでもしないとなりません.そのようなことは可能ですか?
もしくは,ずらす系APIの引数がHWND版みたいなものはないでしょうか?
長文になってしまい,まことに申し訳ないのですがよろしくおねがいします
0117115
NGNGttp://www.fengyuan.com/article/wmprint.html
ちょっと複雑そうなのでSetWorldTransformなどのずらす系APIのHWND版を
教えていただく方向でお願いします.図図しくてすみません
0118デフォルトの名無しさん
NGNGGetDC(hWnd)で取れるよ。
0120デフォルトの名無しさん
NGNG0121115
NGNG自分のイメージ的にはSetWorldTransform(hdc, &xnew)でかってに右に移動しちゃう行列が
適用されて,その後のSetWorldTransform(hdc, &xlast)がよばれるまでの間に呼び出された
CallWindowProc(g_DefProc, hwnd, msg, wp, lp);によってアプリ側には,ずれてることすらわからないはずみたいな感じなのですが
WM_PAINT以外で元に戻されるということでしょうか?
0122デフォルトの名無しさん
NGNG0123115
NGNGアプリ側が描写したものに対しても100ピクセルずらすことができました.OffsetViewportOrgExでも大丈夫でした
>>122
いちおう115のソースの5行目で呼び出してます
回答していただきました皆様ありがとうございました
0124デフォルトの名無しさん
NGNGどうやればいいのでしょうか?
0125デフォルトの名無しさん
NGNG0126デフォルトの名無しさん
NGNGこんな便利なものがあるなんて知りませんでした。
ありがとうございした。
0127デフォルトの名無しさん
NGNG0128デフォルトの名無しさん
NGNGC++に対する理解が足りないのでは
0129デフォルトの名無しさん
NGNG0130127
NGNGMFC >>>>>>>>> 自作Win32API wrapper
ってこと?
0131デフォルトの名無しさん
NGNGどこからそういう結論が出るんだヴォケ
0132デフォルトの名無しさん
NGNG変なやつの相手すんなって。
0133127
NGNG0134デフォルトの名無しさん
NGNG民度という用語に対する理解が足りないのでは
それはともかく、C++のソースからでもWin32APIの呼び出しはできるでしょ?
呼び出しをクラスメソッドにするかどうかは設計者であるアナタ次第。
というわけでスレ違い。
0135デフォルトの名無しさん
NGNG0136デフォルトの名無しさん
NGNG自分で作った Thread に>>133みたいなのが居るのを想像してしまった。orz
0137デフォルトの名無しさん
NGNG実装が自己矛盾に満ちている。
0138デフォルトの名無しさん
NGNG0139デフォルトの名無しさん
NGNG''';;';'';';''';;'';;;,., ザッ
ザッ ;;''';;';'';';';;;'';;'';;;
;;'';';';;'';;';'';';';;;'';;'';;;
vymyvwymyvymyvy ザッ
ザッ MVvvMvyvMVvvMvyvMVvv、
Λ_ヘ^−^Λ_ヘ^−^Λ_ヘ^Λ_ヘ
ザッ ヘ__Λ ヘ__Λ ヘ__Λ ヘ__Λ
__,/ヽ_ /ヽ__,.ヘ /ヽ__,.ヘ _,.ヘ ,.ヘ ザッ
/\___/ヽ /\___ /\___/ヽ _/ヽ /\___/ヽ
/'''''' '''''':::::::\/'''''' '''/'''''' '''''':::::::\ /'''''' '''''':::::::\
. |(●), 、(●)、.:|(●), |(●), 、(●)、.:|、( |(●), 、(●)、.:|
| ,,ノ(、_, )ヽ、,, .::::| ,,ノ(、_, )| ,,ノ(、_, )ヽ、,, .::::|_, )| ,,ノ(、_, )ヽ、,, .::::| / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
. | `-=ニ=- ' .:::::::| `-=ニ= | `-=ニ=- ' .:::::::|ニ=| `-=ニ=- ' .:::::::| < ageますよ
\ `ニニ´ .:::::/\ `ニニ \ `ニニ´ .:::::/ニ´ \ `ニニ´ .:::::/ \_________
/`ー‐--‐‐―´\ /`ー‐- /`ー‐--‐‐―´\-‐‐ /`ー‐--‐‐―´\
0140デフォルトの名無しさん
NGNG''';;';'';';''';;'';;;,., ザッ
ザッ ;;''';;';'';';';;;'';;'';;;
;;'';';';;'';;';'';';';;;'';;'';;;
vymyvwymyvymyvy ザッ
ザッ MVvvMvyvMVvvMvyvMVvv、
Λ_ヘ^−^Λ_ヘ^−^Λ_ヘ^Λ_ヘ
ザッ ヘ__Λ ヘ__Λ ヘ__Λ ヘ__Λ
__,/ヽ_ /ヽ__,.ヘ /ヽ__,.ヘ _,.ヘ ,.ヘ ザッ
/\___/ヽ /\___ /\___/ヽ _/ヽ /\___/ヽ
/'''''' '''''':::::::\/'''''' '''/'''''' '''''':::::::\ /'''''' '''''':::::::\
. |(●), 、(●)、.:|(●), |(●), 、(●)、.:|、( |(●), 、(●)、.:|
| ,,ノ(、_, )ヽ、,, .::::| ,,ノ(、_, )| ,,ノ(、_, )ヽ、,, .::::|_, )| ,,ノ(、_, )ヽ、,, .::::| / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
. | `-=ニ=- ' .:::::::| `-=ニ= | `-=ニ=- ' .:::::::|ニ=| `-=ニ=- ' .:::::::| < ageますよ
\ `ニニ´ .:::::/\ `ニニ \ `ニニ´ .:::::/ニ´ \ `ニニ´ .:::::/ \_________
/`ー‐--‐‐―´\ /`ー‐- /`ー‐--‐‐―´\-‐‐ /`ー‐--‐‐―´\
0141デフォルトの名無しさん
NGNGDWORD size;
size = GetFileSize(GetStdHandle(STD_INPUT_HANDLE));
上の方法で標準入力に何バイト溜まっているかを取得できますか?
0142デフォルトの名無しさん
NGNG0143デフォルトの名無しさん
NGNGhttp://msdn.microsoft.com/library/en-us/fileio/base/getfilesize.asp
> You cannot use the GetFileSize function with a handle of a
> nonseeking device such as a pipe or a communications device.
0144デフォルトの名無しさん
NGNG読み落としていました。
標準入力に何バイト溜まっているかを取得する方法はありませんか?
全部読まないとわからないのでしょうか?
0145デフォルトの名無しさん
NGNG>標準入力に何バイト溜まっているかを取得する方法はありませんか?
ありません。
>全部読まないとわからないのでしょうか?
「全部」の意味によりますが、そんな感じです。
0146141 == 144 == 146
NGNGthx!
0147デフォルトの名無しさん
NGNG''';;';'';';''';;'';;;,., ザッ
ザッ ;;''';;';'';';';;;'';;'';;;
;;'';';';;'';;';'';';';;;'';;'';;;
vymyvwymyvymyvy ザッ
ザッ MVvvMvyvMVvvMvyvMVvv、
Λ_ヘ^−^Λ_ヘ^−^Λ_ヘ^Λ_ヘ
ザッ ヘ__Λ ヘ__Λ ヘ__Λ ヘ__Λ
__,/ヽ_ /ヽ__,.ヘ /ヽ__,.ヘ _,.ヘ ,.ヘ ザッ
/\___/ヽ /\___ /\___/ヽ _/ヽ /\___/ヽ
/'''''' '''''':::::::\/'''''' '''/'''''' '''''':::::::\ /'''''' '''''':::::::\
. |(●), 、(●)、.:|(●), |(●), 、(●)、.:|、( |(●), 、(●)、.:|
| ,,ノ(、_, )ヽ、,, .::::| ,,ノ(、_, )| ,,ノ(、_, )ヽ、,, .::::|_, )| ,,ノ(、_, )ヽ、,, .::::| / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
. | `-=ニ=- ' .:::::::| `-=ニ= | `-=ニ=- ' .:::::::|ニ=| `-=ニ=- ' .:::::::| < ageますよ
\ `ニニ´ .:::::/\ `ニニ \ `ニニ´ .:::::/ニ´ \ `ニニ´ .:::::/ \_________
/`ー‐--‐‐―´\ /`ー‐- /`ー‐--‐‐―´\-‐‐ /`ー‐--‐‐―´\
0148デフォルトの名無しさん
NGNG''';;';'';';''';;'';;;,., ザッ
ザッ ;;''';;';'';';';;;'';;'';;;
;;'';';';;'';;';'';';';;;'';;'';;;
vymyvwymyvymyvy ザッ
ザッ MVvvMvyvMVvvMvyvMVvv、
Λ_ヘ^−^Λ_ヘ^−^Λ_ヘ^Λ_ヘ
ザッ ヘ__Λ ヘ__Λ ヘ__Λ ヘ__Λ
__,/ヽ_ /ヽ__,.ヘ /ヽ__,.ヘ _,.ヘ ,.ヘ ザッ
/\___/ヽ /\___ /\___/ヽ _/ヽ /\___/ヽ
/'''''' '''''':::::::\/'''''' '''/'''''' '''''':::::::\ /'''''' '''''':::::::\
. |(●), 、(●)、.:|(●), |(●), 、(●)、.:|、( |(●), 、(●)、.:|
| ,,ノ(、_, )ヽ、,, .::::| ,,ノ(、_, )| ,,ノ(、_, )ヽ、,, .::::|_, )| ,,ノ(、_, )ヽ、,, .::::| / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
. | `-=ニ=- ' .:::::::| `-=ニ= | `-=ニ=- ' .:::::::|ニ=| `-=ニ=- ' .:::::::| < ageますよ
\ `ニニ´ .:::::/\ `ニニ \ `ニニ´ .:::::/ニ´ \ `ニニ´ .:::::/ \_________
/`ー‐--‐‐―´\ /`ー‐- /`ー‐--‐‐―´\-‐‐ /`ー‐--‐‐―´\
0149デフォルトの名無しさん
NGNG''';;';'';';''';;'';;;,., ザッ
ザッ ;;''';;';'';';';;;'';;'';;;
;;'';';';;'';;';'';';';;;'';;'';;;
vymyvwymyvymyvy ザッ
ザッ MVvvMvyvMVvvMvyvMVvv、
Λ_ヘ^−^Λ_ヘ^−^Λ_ヘ^Λ_ヘ
ザッ ヘ__Λ ヘ__Λ ヘ__Λ ヘ__Λ
__,/ヽ_ /ヽ__,.ヘ /ヽ__,.ヘ _,.ヘ ,.ヘ ザッ
/\___/ヽ /\___ /\___/ヽ _/ヽ /\___/ヽ
/'''''' '''''':::::::\/'''''' '''/'''''' '''''':::::::\ /'''''' '''''':::::::\
. |(●), 、(●)、.:|(●), |(●), 、(●)、.:|、( |(●), 、(●)、.:|
| ,,ノ(、_, )ヽ、,, .::::| ,,ノ(、_, )| ,,ノ(、_, )ヽ、,, .::::|_, )| ,,ノ(、_, )ヽ、,, .::::| / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
. | `-=ニ=- ' .:::::::| `-=ニ= | `-=ニ=- ' .:::::::|ニ=| `-=ニ=- ' .:::::::| < ageますよ
\ `ニニ´ .:::::/\ `ニニ \ `ニニ´ .:::::/ニ´ \ `ニニ´ .:::::/ \_________
/`ー‐--‐‐―´\ /`ー‐- /`ー‐--‐‐―´\-‐‐ /`ー‐--‐‐―´\
0150デフォルトの名無しさん
NGNG0152127
NGNG''';;';'';';''';;'';;;,., ザッ
ザッ ;;''';;';'';';';;;'';;'';;;
;;'';';';;'';;';'';';';;;'';;'';;;
vymyvwymyvymyvy ザッ
ザッ MVvvMvyvMVvvMvyvMVvv、
Λ_ヘ^−^Λ_ヘ^−^Λ_ヘ^Λ_ヘ
ザッ ヘ__Λ ヘ__Λ ヘ__Λ ヘ__Λ
__,/ヽ_ /ヽ__,.ヘ /ヽ__,.ヘ _,.ヘ ,.ヘ ザッ
/\___/ヽ /\___ /\___/ヽ _/ヽ /\___/ヽ
/'''''' '''''':::::::\/'''''' '''/'''''' '''''':::::::\ /'''''' '''''':::::::\
. |(●), 、(●)、.:|(●), |(●), 、(●)、.:|、( |(●), 、(●)、.:|
| ,,ノ(、_, )ヽ、,, .::::| ,,ノ(、_, )| ,,ノ(、_, )ヽ、,, .::::|_, )| ,,ノ(、_, )ヽ、,, .::::| / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
. | `-=ニ=- ' .:::::::| `-=ニ= | `-=ニ=- ' .:::::::|ニ=| `-=ニ=- ' .:::::::| < sageますよ
\ `ニニ´ .:::::/\ `ニニ \ `ニニ´ .:::::/ニ´ \ `ニニ´ .:::::/ \_________
/`ー‐--‐‐―´\ /`ー‐- /`ー‐--‐‐―´\-‐‐ /`ー‐--‐‐―´\
0153デフォルトの名無しさん
NGNG行単位で入力する方法を探しています。
C言語のfgetsに相当する関数は無いのでしょうか?
また、自作するにはどうしたらよろしいでしょうか?
0154デフォルトの名無しさん
NGNG精進が足りんな。
API直叩きにはスキル無さ杉。
まずバッファリングのやり方、勉強汁!
嫌なら素直にランタイム使っとけ。
0156デフォルトの名無しさん
NGNG・フォントのサイズ変更、
・フォントの種類変更、
・フォントの色変更、
・背景色変更、
・半透明化、
の仕方が分かりません。
リッチエディットまではいかなくてもWindows付属のメモ帳くらい変更したいのですが。
半透明化については、
SetLayeredWindowAttributes関数でできるかと思ったのですが、
ウィンドウ全体の半透明化はできてもエディットコントロールの変更は無理のようです
(エディットコントロールに同じことをするとエディットコントロール自体が消えます)
分かる方よろしくお願いします。
0157デフォルトの名無しさん
NGNG子ウィンドウはレイヤードウィンドウにできないはず。
0158デフォルトの名無しさん
NGNG0159デフォルトの名無しさん
NGNG0160デフォルトの名無しさん
NGNGそうですか
0161デフォルトの名無しさん
NGNGカスが
0163156
NGNG>>157
なるほど、それでできなかったんですね。
>>158
WS_CHILDを外してみましたが
何も変わりませんでした・・・
エディットコントロール作成時に、親ウィンドウのハンドルのところをNULLにもしてみたりしたんですが。
0164デフォルトの名無しさん
NGNGエディットコントロールと同じ大きさの枠無し窓でも作ればいいんじゃないかな
0165デフォルトの名無しさん
NGNG今や不評ですが、「猫でもわかる...」に例があったような。
半透明化はやっていませんが、他は、私は猫のお陰でやっています。
0166デフォルトの名無しさん
NGNG知りたいのですが、そのようなAPIはありませんでしょうか?
現在logonしているユーザーのリストを取得できる関数がないかなと
思っているのですが…
0167デフォルトの名無しさん
NGNGボタンをサブクラス化。
バックバッファを作り、WM_PAINTで元のボタンにWM_PRINT送って描画してもらう。
背景と重ね合わせる。
でどお?
0168デフォルトの名無しさん
NGNGこれなんかどう?
ttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=8548&forum=6&6
0169デフォルトの名無しさん
NGNGWM_SETFONT でフォントのセット、背景色は WM_CTLCOLOREDIT への応答で
0170デフォルトの名無しさん
NGNG0171デフォルトの名無しさん
NGNGまたウィンドウの幅がどれくらい縮んだらメニューが折り返されるか調べる方法はありませんでしょうか?
0172デフォルトの名無しさん
NGNGMSDN で探すのは TASKBAR とかでは駄目で、他の用語があるんでしょうか。
0173デフォルトの名無しさん
NGNGプロセスごとの、ユーザー名、CPU、メモリ使用量を取得するには
どのようにすればよいのでしょうか
0174デフォルトの名無しさん
NGNGタスクバーが左右に縦に表示されている場合でも"高さ"が欲しいのか?
なんとなくSystemParametersInfo(SPI_GETWORKAREA, ...)とかGetMonitorInfo()で
取得できるワークエリアが必要な気もするが。
0175デフォルトの名無しさん
NGNGhttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shappbarmessage.asp
0176デフォルトの名無しさん
NGNGPSAPI
0178デフォルトの名無しさん
NGNG0179デフォルトの名無しさん
NGNG0180デフォルトの名無しさん
NGNG0181デフォルトの名無しさん
NGNGCheckMenuItem()じゃない?
いやまて、そんな単純な質問ではないのか?
0182デフォルトの名無しさん
NGNGうん。皆、その裏が読めなくて答えられないのだよ。
0183170
NGNG0184デフォルトの名無しさん
NGNGざっとみたかんじ、そんなAPIはなさげです
0185デフォルトの名無しさん
NGNG何故か出来ません。
int CALLBACK CompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);
この比較関数の引数のlParam1とlParam2の値が、常に0です。
リストビューには数百ぐらいいれているのですが
0186デフォルトの名無しさん
NGNGどこか解説ページとかない?
CreateDIBSectionの意味すら今一分かんないorz
0187デフォルトの名無しさん
NGNG0188デフォルトの名無しさん
NGNG0189デフォルトの名無しさん
NGNGCreateDIBSectionとmemcpyについて解説してあげてもいいけど、
ペイントソフト作るのってその二つ理解するよりはるかに難易度高いから
そのくらい自分で調べた方が良いよ。
0190デフォルトの名無しさん
NGNGそのソースさらしてよ、でなきゃ原因はわからんです。
ListView_SortItemsの使い方だったら、ググれば
たくさん出てくる。
0191185
NGNGHWND hList;//リストビューのハンドルを入れてあるグローバル変数
int CALLBACK CompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
static LV_FINDINFO lvf ;
static int item1, item2 ;
static char buf1[512] , buf2[512] ;
lvf.flags = LVFI_PARAM ; lvf.lParam = lParam1 ;
item1 = ListView_FindItem(hList, -1, &lvf) ;
lvf.lParam = lParam2 ;
item2 = ListView_FindItem(hList, -1, &lvf) ;
ListView_GetItemText(hList, item1, (int)lParamSort, buf1, sizeof(buf2));
ListView_GetItemText(hList, item2, (int)lParamSort, buf2, sizeof(buf2));
return strcmp(buf1, buf2);
}
呼び出すのはこうやってます。
NMLISTVIEW pNMlist = (NMLISTVIEW *)lParam ;
ListView_SortItems(hList, CompareFunc, pNMlist->iSubItem);
リストビューのウインドウハンドル、hListは確かに存在します。
実験的に、ListView_SortItems()の前にIsWindow()をやって確かめました。
0192185
NGNGそれから呼び出すのは
WM_NOTIFYの、リストビューのIDからのメッセージで、
LVN_COLUMNCLICKが来たときにです。
0193デフォルトの名無しさん
NGNGcompare関数が呼び出された時点でlParam1, lParam2共に0なんだから、
その関数をみせられてもわからんですよ。
猫のところのプログラムは動くのだから、そこから手を加えた
ところを探ってみた方がいいんじゃない?アイテムを追加するところとか。
0194デフォルトの名無しさん
NGNG私の場合は必ずアイテム追加するときにlParam設定しておくからなぁ。
#しかもMFC利用。
0196デフォルトの名無しさん
NGNGキャプションのように扱いたいのですがどうすればいいのでしょうか?
以下のような感じで、子ウィンドウBをドラッグすると親ウィンドウが動くとい
うか…わかりづらくてすいません。
+---------------+
| +-----------+ |
| | 子ウィンドウB |. |
| +-----------+ |
| 親ウィンドウA |
+---------------+
最初、子ウィンドウBでWM_NCHITTESTで親Aにそのまま流しましたがダメ
でした。
次に子ウィンドウBでWM_NCHITTESTにreturn HTCAPTIONを返し、Bの
WM_WINDOWPOSCHANGINGで親ウィンドウに対しMoveWindowしてみると
一見うまくいってるようですが親とズレてしまったり、親のクライアント領域
外に出られないなどの問題がありました。
要はシステムメニューから移動を選択したのと同じ動作をさせたいのです。
どなたがご教授頂けませんか。
0197デフォルトの名無しさん
NGNG0198デフォルトの名無しさん
NGNG子ウィンドウでは HTTRANSPARENT を返して、親ウィンドウでは
マウス座標を調べて子ウィンドウの座標内にあれば HTCAPTION を
返すようにしたらどうですか?
0199185
NGNGLVITEM構造体のlParamを設定する必要があるんですね。
比較関数に送られてくるのはその値だったのか。
道理で全部ゼロになっているわけだ。
0201196
NGNGレスが遅くなって申し訳ありません。
子ウィンドウでHTTRANSPARENT(-1)を返し、親ウィンドウで座標をチェックして
HTCAPTIONを返したところ期待通りの動作になりました。
ご教授頂きありがとうございました。
0202デフォルトの名無しさん
NGNGExtractAssociatedIconでは32x32サイズのアイコンしか取得できませんでした。
ExtractIconExだとEXEやDLLの場合は小さいサイズも取得できますが、フォルダ
の小さいアイコンを取得できません。
ぐぐってみたりMSDNをみたりしましたが見つけることができませんでした。
0203デフォルトの名無しさん
NGNGSetComputerNameでは、NetBIOS名しか変わりませんでした。
Win32_ComputerSystemのRenameメソッドはXP以降でしか使えないようです。
0204デフォルトの名無しさん
NGNG0205デフォルトの名無しさん
NGNGSHGetFileInfo
0206デフォルトの名無しさん
NGNGよくわからずに書くけど、SetComputerNameExもダメ?
0207デフォルトの名無しさん
NGNGありがとうございます。
Exの方はドキュメントだけ見て、試してませんでした。
SetComputerNameExのComputerNamePhysicalDnsHostnameで上手く行きました。
お騒がせしました。
0208デフォルトの名無しさん
NGNGそういうふうに使えそうなAPIはないでしょうか?
できれば、スレッドごとのスタックサイズも取れると嬉しいです。
お知恵を拝借させてください。
お願いします。
0210186
NGNGMEMORYSTATUS
GlobalMemoryStatus
で出来ると思います。
>>189
大変亀レスですけど、ペイトソフトといってもただMoveToExとか使わずに直線を引いたりするだけのプログラムでして。
一番重要そうなCreateDIBSectionの使い方と言うか意味の理解い苦しんでます。
hdcを取得するとかしてどうするのかとか…
0211デフォルトの名無しさん
NGNGググって一番最初に出てくるページどおりにやればできるんでないの?
某お絵かきソフトの作者のページだが。
0212デフォルトの名無しさん
NGNGプロセスごとのメモリの情報は NT 系では PSAPI の GetProcessMemoryInfo()
9X 系では、ToolHelp のヒープウォークをする必要があります。
0213デフォルトの名無しさん
NGNGVK_LBUTTONとかVK_RBUTTONなんてものがあるからやってみたのですが、うまくいきません。
ほかの適当なボタンに変えると動きます。
0214デフォルトの名無しさん
NGNGパフォーマンスモニタ方面のAPI使えば大体のことはできそう。
詳しくは知らんのでMSDNあたってくらさい。
0215デフォルトの名無しさん
NGNGレイヤードウィンドウを使いたくて調べたところ、
SDKをインストールする、とあったのでインストールしてみたんですが相変わらず
'SetLayeredWindowAttributes' : 定義されていない識別子です。
と出ます。
core SDK のインストールだけじゃダメなんでしょうか?
0216デフォルトの名無しさん
NGNG>>74
0217215
NGNG別の単語で検索して引っかからなかったので見落としてしまいました。
でも、まだ解決できません。
オプションからSDKのインクルードとライブラリは
ディレクトリに加えてあるんですけど、全然効果がないです。
何故なのかわかりませんが、他に設定が必要なのでしょうか?
0218デフォルトの名無しさん
NGNG追加した奴を上の方にしてるか?
0219215
NGNGはい、それは書いてあったので試してみました。
でもダメなんです。
そういえば、>>78の意味がわかりませんでした。
調べても何がなにやらで。
普通だったらちゃんと定義されてるって認識するんですよね?
0220デフォルトの名無しさん
NGNG#include "windows.h"
こーしろってこと。
0221デフォルトの名無しさん
NGNGstdafx.hネタと同じくらいメジャーな「初心者泣かせ」かもな(w
0222222
NGNGちょっとうまく伝えられるか自身がないのですが,メモ帳を立ち上げていただいて
[半角/全角キー]を押していただき[Aキー]を押していただくと[あ]の文字の下に点線が
表示されてる状態になると思うのですが,これをずらしたのです.
実際にずらしたいのはメモ帳なども外部アプリの物ではなく自分でCreateWindowしたEDITの物です
WM_IME_REQUESTで,なおかつWPARAMがIMR_QUERYCHARPOSITIONのときLPARAMはIMECHARPOSITIONという
構造体へのポインタでありまして,それをうめて1を返せばいいみたいなことがmsdnに書いてあるとおもうのですが
英語なので自信がありません.
msdn.microsoft.com/library/en-us/intl/ime_2nu6.asp
ここにソースを貼りました
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1086258254&rm=100
0223222
NGNGImmSetCompositionWindowで無事ずらすことができました
0224デフォルトの名無しさん
NGNGVC++6.0にて、
新規作成 -> Win32 Console Application -> 空のプロジェクト
から、ウィンドウ(またはダイアログ)を生成することは可能でしょうか。
0225デフォルトの名無しさん
NGNG試してみてください
0226224
NGNG0227デフォルトの名無しさん
NGNGぶっちゃけ、可能です。
作り方は自分で調べましょう。
手取り足取り教えられる暇人はいません。
終了
0228224
NGNG可・不可だけたずねたつもりでしたので、
思わぬ回答、ありがとうございました。
0230 ◆Z0vd5w812U
NGNGオレはいつもconsoleでWin32アプリを作ってる。printfを使いたいから。
リリース時にはWinMain()を呼び出すように切り替えてコンパイル。
で、一つだけ教える。GetModuleHandle(NULL)でアプリケーションのインスタンスハンドルを入手できる。
0231デフォルトの名無しさん
NGNGOutputDebugString()は許されない環境なのか?
0232 ◆Z0vd5w812U
NGNGコマンドラインでmakefile派だから。IDEを使わないので。
0233デフォルトの名無しさん
NGNG慣れというものがあるっしょう。
かく言う俺もConsole使ってる。_DEBUG定数でmainとWinMainを切り替えたりして。
0234デフォルトの名無しさん
NGNGWinMainを使っててもコンパイルオプションでコンソールが出る。
(少なくともMingwとlcc-win32では。)
いちいちWinMainとmainを切りかえるのは面倒じゃないか?
0235デフォルトの名無しさん
NGNGは?IDE?なんの関係が?
0236デフォルトの名無しさん
NGNG0237デフォルトの名無しさん
NGNG0238デフォルトの名無しさん
NGNGIDE や Makefile 等で、リリース時とデバッグ時でリンカの設定も変えてるのでは?
んでソースの中では _DEBUG 見て main 生かしたり WinMain 生かしたりしてるとか。
そう。Makefile中でコンパイルオプションとリンクオプションを変えてる。
#ifdefでmainとWinMainを切り替えてる。10行程度だし一回作ってしまえばあとは使い回し。
>>239
深淵なる糞APIの世界へようこそ。ガンガッテ下さい。
0241デフォルトの名無しさん
NGNG猫でもわかるプログラミングのサイトのWindows SDK編 12章の
リソーススクリプトとヘッダの部分を教えてください。
お願いします。
0242デフォルトの名無しさん
NGNG先ずはそのサイトの該当ページを飽きるまで読んでください。
0243デフォルトの名無しさん
NGNGシステムメニューのリソーススクリプトはのっているのでしょうか
これは12章以降を見るっていうことでしょうか
0244デフォルトの名無しさん
NGNG自分で好きなようにダイアログリソース作ってよし。
ついでにおまいらに言っとくが、[閉じる(C) Alt+F4]の下にメニュー追加するやつは頃す。
0245デフォルトの名無しさん
NGNGタスクバー右クリから閉じようとした時、切なくなるね
0246デフォルトの名無しさん
NGNGcmd.exeのコトかー!
0247デフォルトの名無しさん
NGNG0248デフォルトの名無しさん
NGNG*.chmファイルとか開いた時とか
0249デフォルトの名無しさん
NGNG0250デフォルトの名無しさん
NGNGウインドウハンドルを拾うにはどうすればいいですか?
0251デフォルトの名無しさん
NGNG0252デフォルトの名無しさん
NGNG例えば.txtの中身がaだけだととしても暗号化してrk&0 見たいに見えるようにするような
0253デフォルトの名無しさん
NGNG0254デフォルトの名無しさん
NGNG0255デフォルトの名無しさん
NGNG0256254
NGNG0258デフォルトの名無しさん
NGNGそんなもん人の勝手だろうが
0259デフォルトの名無しさん
NGNG0260デフォルトの名無しさん
NGNGMSDNライブラリも頃される対象になるわけだな・・・。
0261デフォルトの名無しさん
NGNG実際にウィンドウ作らないと計算できないのがイマイチだが
0262デフォルトの名無しさん
NGNG漏れはメニューに等幅フォント使ってるんで時々そういうのに出くわす。
折り返すのがイヤならReBarスタイルのメニューを使うという手もあるが
マンドクサそうだ。
0263デフォルトの名無しさん
NGNGWM_NCCALCSIZEを投げるサンプルみたいなものってどこかに無いでしょうか?
検索しても、WM_NCCALCSIZEに応答するサンプルしか見当たらず、
MSDNを見てもどのメンバを埋めてSendMessageするべきなのか検討もつきません。
0264デフォルトの名無しさん
NGNGint ResizeWindowByClient(HWND hwnd, int width, int height, int times_to_try=2)
{
RECT rc = { 0, 0, width, height};
::ClientToScreen(hwnd, reinterpret_cast<POINT*>(&rc));
::ClientToScreen(hwnd, reinterpret_cast<POINT*>(&rc)+1);
::AdjustWindowRectEx(&rc,
::GetWindowLongPtr(hwnd, GWL_STYLE),
::GetMenu(hwnd) ? TRUE : FALSE,
::GetWindowLongPtr(hwnd, GWL_EXSTYLE));
for (int i = 0; i < times_to_try; i++) {
RECT client = rc;
::SendMessage(hwnd, WM_NCCALCSIZE, FALSE, reinterpret_cast<LPARAM>(&client));
if (client.right-client.left == width && client.bottom-client.top == height) {
::SetWindowPos(hwnd, NULL, rc.left, rc.top,
rc.right-rc.left, rc.bottom-rc.top, SWP_NOZORDER|SWP_NOACTIVATE);
return true;
}
rc.right += width + client.left-client.right;
rc.bottom += height + client.top-client.bottom;
}
// これしとかないと、変更予定だったサイズでメニューが折り返すときおかしくなる
::GetWindowRect(hwnd, &rc);
::SendMessage(hwnd, WM_NCCALCSIZE, FALSE, reinterpret_cast<LPARAM>(&rc));
return false;
}
0265デフォルトの名無しさん
NGNGvoid AdjustWindowRect(HWND hwnd,int width,int height)
{
RECT wrect,crect;
::GetWindowRect(hwnd,&wrect);
::GetClientRect(hwnd,&crect);
int ncwidth,ncheight;
ncwidth = (wrect.right - wrect.left) - (crect.right - crect.left);
ncheight = (wrect.bottom - wrect.top) - (crect.bottom - crect.top);
::SetWindowPos(hwnd,NULL,0,0,
width + ncwidth,height + ncheight,
SWP_NOACTIVATE | SWP_NOZORDER | SWP_NOMOVE);
::GetWindowRect(hwnd,&wrect);
::GetClientRect(hwnd,&crect);
int ncheight2 = (wrect.bottom - wrect.top) - (crect.bottom - crect.top);
if (ncheight != ncheight2)
{
::SetWindowPos(hwnd,NULL,0,0,
width + ncwidth,height + ncheight2,
SWP_NOACTIVATE | SWP_NOZORDER | SWP_NOMOVE);
::GetWindowRect(hwnd,&wrect);
}
RECT drect;
::GetClientRect(GetDesktopWindow(),&drect);
int x = wrect.left - (wrect.right > drect.right ? wrect.right - drect.right : 0);
int y = wrect.top - (wrect.bottom > drect.bottom ? wrect.bottom - drect.bottom : 0);
x = x < 0 ? 0 : x;
y = y < 0 ? 0 : y;
::SetWindowPos(hwnd,NULL,x,y,0,0,
SWP_NOACTIVATE | SWP_NOZORDER | SWP_NOSIZE);
}
0266デフォルトの名無しさん
NGNG入れ替えると、WM_DEVICECHANGEが来て、
ボリュームラベルなどの情報は取れるのですが、アイコンが更新されません。
アイコンを更新するためにはどうしたらいいのでしょうか?
0267デフォルトの名無しさん
NGNG0268デフォルトの名無しさん
NGNGよくわからんけど、SHChangeNotifyRegisterで登録して、
SHCNE_UPDATEIMAGEを待ってから取得するのはどうだろう?
アイコン取得方法とかもうちょい詳細を晒せば、誰かもっといい答えをくれるかも。
0269デフォルトの名無しさん
NGNGありがとうございます。
ただ、ドキュメントを見るとSHChangeNotifyRegisterはWin2K以降用なのでWin98では駄目みたいです。
アイコンはSHGetFileInfoで取得してます。
(フラグはSHGFI_PIDL | SHGFI_SYSICONINDEX | SHGFI_SMALLICON)
0270デフォルトの名無しさん
NGNGそのツールにはソースが付いてるだろ。読め
0271デフォルトの名無しさん
NGNGWin98では隠しAPIかも。
www.geocities.com/SiliconValley/4942/
に載ってるので。
あとは、タイミングの問題に思えるので、ウェイト&リトライ入れるか
ポーリング入れるとか?
0272デフォルトの名無しさん
NGNGウインドウについてるプロパティリストを見ると、
OleDropTargetInterface と OleDropTragetMarshalHwnd というのがくっついているので、
IMarshalを使うのかなと想像してるのですが、IMarshalを使った事無いので検索しようにも
手がかりがつかめません。
検索のヒントだけでも良いので挙げてもらえないでしょうか?
0273デフォルトの名無しさん
NGNGIDropSource、IDropTarget、IEnumFORMATETC、IDataObject等を実装する必要があります。
ドラッグ操作を開始するときは、DoDragDrop API(引数はIDataObjectとIDropSource)を
使用します。
ドラッグを受け付けるときは、RegisterDragDrop API(引数はIDropTarget)で
ドラッグ受け入れ用のインターフェイスを登録します。
RegisterDragDropで登録したあとは、いちおう念のため、IDropTargetを
CoLockObjectExternalでロックしておいたほうが安全のようです。
0274デフォルトの名無しさん
NGNGレスありがとうございます。
エミュレートというのは、プログラムからバッチ処理的に直接ドラッグ&ドロップをしたいということで、
DoDragDropによってできる通常のマウスによるドラッグドロップではないのです。
ウインドウハンドルやプロセスID等から直接ターゲットプロセスのIDropTargetを操作したいんです。
0275デフォルトの名無しさん
NGNGコマンドラインから
>hoge.exe "c:\aaa\bbb\ccc\ddd.txt"
と引数を渡してやったときに、フルパスからファイル名を除いた
c:\aaa\bbb\ccc\を取得したいのです。
ググった所、_splitpathでドライブ、ディレクトリ、ファイル名
に分割できる事はわかりましたが、一発でファイル名のみ除去できるAPIはないのでしょうか?
文字列のケツから'\\'を探して'\0'で置き換えればよいのでは?
0277デフォルトの名無しさん
NGNG多バイト文字が不味いんじゃないでしょうか
標準で安全なものがあればそれを使うのが最善でしょうけど、
MFCとか.NETとかでならメソッドがあるみたいなんですけど……
0278デフォルトの名無しさん
NGNGPathFindFileName()
0279デフォルトの名無しさん
NGNGデルフィーのソースを読むのは嫌です
0280デフォルトの名無しさん
NGNGなるほど。
反則的な技ですが、相手先のウィンドゥに直接WM_DROPFILESを送ってやることで可能です。
DROPFILES構造体用のメモリを確保し、そこに必要情報を書き入れ、相手先の
ウィンドウに送りつけます。
メモリ確保は、シェルAPIのSHGetMalloc(&pMalloc)でメモリインターフェイスを
取得し、pMalloc->Alloc()でメモリを確保します。
pMalloc->Alloc()で確保したメモリは異プロセス間で参照可能です。
pMallocを使用し終わった後はpMalloc->Release()を忘れないようにしてください。
なお、DROPFILESに入れるファイル名ですが、Windows NT系列ではUNICODE、
それ以外ではANSIで入れないといけないようです。
(DROPFILES::fWideも適切にセットする。)
0281280
NGNG>>直接ターゲットプロセスのIDropTargetを操作したいんです。
の希望に添えませんね…。
お役にたてなくてすみません。
0282デフォルトの名無しさん
NGNGUndocumentedだがOleDropTargetInterfaceプロパティに
IDropTargetのポインタが入ってる。
0283デフォルトの名無しさん
NGNG???
何でMSDNにDelphiのソースがあるの? 何か別のものを想像してないか?
0284デフォルトの名無しさん
NGNG他プロセスからじゃ操作できないんじゃね?
0285デフォルトの名無しさん
NGNG0286デフォルトの名無しさん
NGNGそこはDLL注入とかでがんがる
0287デフォルトの名無しさん
NGNGPathRemoveFileSpec()
0288デフォルトの名無しさん
NGNG・そのダイアログ上にあるコントロールを触った後でも、フォーカスは常にメインウィンドウにある
・フォーカスの有無にかかわらず、タイトルバーは常に明るい(灰色ではない)
以上の条件を満たすダイアログって作れますでしょうか?
要するにMFCのフローティングリバーと同じ挙動なのですが…
我々はあれを指加えて見てるしか無いのかな(´・ω・`)
0289デフォルトの名無しさん
NGNG0290288
NGNGすいません、書き忘れましたがVC++持って無いのがそもそもの悩みでして
公開されてるんですか。触りだけでもどなたか教えて頂けないでしょうか
MFCって、どこかで落とせるのかな…
0291デフォルトの名無しさん
NGNGそのダイアログで、WM_ACTIVATEに応答してアクティブにならないようにすればいいんじゃないの?
0292デフォルトの名無しさん
NGNGPathRemoveFileSpec
0293デフォルトの名無しさん
NGNGWS_EX_TOOLWINDOW にして WS_EX_NOACTIVATE しておけばいいんじゃない?
(Win2K / XP 以降ってことで)。
0294デフォルトの名無しさん
NGNG>>287
0295288
NGNGお二人ともレスありがとうございます
全て試してみましたが、しかしどうにも上手くいかないです。
・WM_ACTIVATE
メッセージが来たら親ウィンドウにSetFocusしてみましたが、何故か上手くフォーカスが移りません。
・WS_EX_TOOLWINDOW
リソースからダイアログを作り、後からexスタイルを変えた場合、
あるいは最初から自前でCreateWindowExした場合、いずれもフォーカスが無いときは
やはり灰色のタイトルバーになってしまいます…。
・WS_EX_NOACTIVATE
これは0x08000000でよろしいのでしょうか?
コントロールも含め、全てWS_EX_NOACTIVATEを指定してみましたが、
これもフォーカスは通常通りで…一応spyでスタイルが定まっているのは確認しました。
この際、タイトルバーの色が変わらない方法だけでも、詳しく教えて頂けないでしょうか。
私のWS_EX_TOOLWINDOWの使い方が間違っている気がします…。
0296デフォルトの名無しさん
NGNGWM_NCHITTEST/HTTRANSPARENT
0297288
NGNGレスありがとうございます。やってみたのですが、ちょっと問題が。
・マウスメッセージが来なくなる
・タイトルバーをつかんでダイアログのの移動が出来なくなる(これは何とかなるかな)
・コントロールには、結局フォーカスが移る
・なのでコントロールをサブクラス化してWM_NCHITTESTを処理すると、コントロールが固まる
・タイトルバーはやっぱり灰色
なんか否定的なレスばかりで申し訳ないです。
もうVC(MFC)買ってこようかな…。
0298288
NGNG・フォーカスの有無にかかわらず、ダイアログのタイトルバーと
(メインウィンドウのダイアログのタイトルバーが共に)、常に明るい(灰色ではない)
まぁ、見栄えが悪いっていう理由だけなので、いい加減諦めるべきですかね…。
0299デフォルトの名無しさん
NGNGメインウィンドウのタイトルバーが共に、常に明るい(灰色ではない)
重ね重ねスマソ_| ̄|○
0300デフォルトの名無しさん
NGNGどういう方法があるでしょうか?
0301デフォルトの名無しさん
NGNGMFCは
WM_MOUSEACTIVATE/ HTSIZEFIRST <= hittest <= HTSIZELAST で MA_NOACTIVATEを返し、
それ以外でDefWindowProcかな。
非アクティブでもタイトルバーの色がアクティブのままだったり、
他に細かい事いろいろやってるけど。
0302デフォルトの名無しさん
NGNGそれ、結構前にMFCだかVC関連のスレで出てた気がする。
ログにgrep掛けたけど、ちょっと見当たらなかった。
0303デフォルトの名無しさん
NGNGよく探せば(海外も含めて)参考になるソースは転がっていると思うよ。
その時間を惜しんでVC++買ってきてサンプルを読むというのも間違ってないと思いますが。
0304デフォルトの名無しさん
NGNG仮想ドライブの情報を得るために、
Device = CreateFile(VolumeName, _
GENERIC_READ, _
FILE_SHARE_READ Or FILE_SHARE_WRITE, _
0, _
OPEN_EXISTING, _
FILE_FLAG_NO_BUFFERING, _
0)
でデバイスハンドルをを取得
Const IOCTL_FILE_DISK_QUERY_FILE = &H802
Dim rc
rc = DeviceIoControl(Device, _
IOCTL_FILE_DISK_QUERY_FILE, _
Null, _
0, _
OpenFileInformation, _
Len(OpenFileInformation), _
BytesReturned, _
0)
で、構造体変数OpenFileInformationにドライブ情報が収納されて戻ってくるはずなのですが
DeviceIoControlがエラー6(ハンドルが無効です。)を返してしてしまいます。
FileDiskのC言語のソースをVBに書き直しただけのつもりなのですが
何故、うまく動かないのでしょうか?
0305デフォルトの名無しさん
NGNG----
int FileDiskStatus(char DriveLetter)
{
char VolumeName[] = "\\\\.\\ :";
HANDLE Device;
POPEN_FILE_INFORMATION OpenFileInformation;
DWORD BytesReturned;
VolumeName[4] = DriveLetter;
Device = CreateFile(
VolumeName,
GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_FLAG_NO_BUFFERING,
NULL
);
if (Device == INVALID_HANDLE_VALUE)
{
PrintLastError(&VolumeName[4]);
return -1;
}
0306デフォルトの名無しさん
NGNGif (!DeviceIoControl(
Device,
IOCTL_FILE_DISK_QUERY_FILE,
NULL,
0,
OpenFileInformation,
sizeof(OPEN_FILE_INFORMATION) + MAX_PATH,
&BytesReturned,
NULL
))
{
PrintLastError(&VolumeName[4]);
return -1;
}
0307デフォルトの名無しさん
NGNG{
SetLastError(ERROR_INSUFFICIENT_BUFFER);
PrintLastError(&VolumeName[4]);
return -1;
}
printf("%c: %.*s Size: %I64u bytes%s\n",
DriveLetter,
OpenFileInformation->FileNameLength,
OpenFileInformation->FileName,
OpenFileInformation->FileSize,
OpenFileInformation->ReadOnly ? ", ReadOnly" : ""
);
return 0;
}
----
0308デフォルトの名無しさん
NGNG0309275
NGNGPathRemoveFileSpec()で無事取得できました。ありがとうございました。
0310デフォルトの名無しさん
NGNGCでうまくいくのならそこをDLLにしてVBから呼び出すようにしたら?ちっとも解決にはなっていないけど。
0311デフォルトの名無しさん
NGNGよくわからんけど、
>char VolumeName[] = "\\\\.\\ :";
↑このへんと
>VolumeName[4] = DriveLetter;
↑このへんはちゃんと理解してますよね。
つまり、"\\.\C:" みたいな文字列が、VolumeName に入ってますよね?
0312デフォルトの名無しさん
NGNG>char VolumeName[] = "\\\\.\\ :";
>VolumeName[4] = DriveLetter;
↑がなんで4(5文字目)なのか解かっていませんが、自分のVBコードでは
VolumeName="\\.\" & DriveLetter
にしています。
そしてCreateFile関数で得られたDeviceにはINVALID_HANDLE_VALUEでない、
デバイスハンドルが取得されるところまでは成功しています。
が、その次のDeviceIoControl関数でエラー6(ハンドルが無効です。)となってしまうのです。
VBでデバイスコントールは難しいのでしょうか。
>>310
初心者な上に、VCも持っていないので、、
ちなみに>>305-307の関数をVBに↓のように書き直しました。
0313デフォルトの名無しさん
NGNGPublic Function FileDiskStatus(ByVal DriveLetter As String) As Integer
Dim VolumeName As String
Dim Device As Long
Dim OpenFileInformation As POPEN_FILE_INFORMATION
Dim BytesReturned As Long
VolumeName = "\\.\" & UCase(DriveLetter) & ":"
Device = CreateFile(VolumeName, _
GENERIC_READ, _
FILE_SHARE_READ Or FILE_SHARE_WRITE, _
0, _
OPEN_EXISTING, _
FILE_FLAG_NO_BUFFERING, _
0)
If Device = INVALID_HANDLE_VALUE Then
MsgBox GetLastError
FileDiskStatus = -1: Exit Function
End If
With OpenFileInformation
OpenFileInformation.FileSize.Low = 0
OpenFileInformation.FileSize.high = 0
OpenFileInformation.ReadOnly = False
OpenFileInformation.FileNameLength = UBound(OpenFileInformation.FileName)
End With
0314デフォルトの名無しさん
NGNGDim rc
rc = DeviceIoControl(Device, _
IOCTL_FILE_DISK_QUERY_FILE, _
Null, _
0, _
OpenFileInformation, _
Len(OpenFileInformation), _
BytesReturned, _
0)
If rc = 0 Then
MsgBox GetLastError
FileDiskStatus = -1: Exit Function
End If
If BytesReturned < Len(OpenFileInformation) Then
MsgBox GetLastError
FileDiskStatus = -1: Exit Function
End If
Dim strFileName As String
strFileName = OpenFileInformation.FileName
MsgBox (DriveLetter _
& OpenFileInformation.FileNameLength & " " _
& strFileName & " " _
& CStr(OpenFileInformation.FileSize.Low) & " " _
& CStr(OpenFileInformation.ReadOnly))
FileDiskStatus = 0
End Function
0315デフォルトの名無しさん
NGNGType LARGE_INTEGER
Low As Long
high As Long
End Type
Type POPEN_FILE_INFORMATION
FileSize As LARGE_INTEGER
ReadOnly As Boolean
FileNameLength As Integer
' FileName As String
FileName(1 To MAX_PATH) As Byte
End Type
-----
0316デフォルトの名無しさん
NGNG0317デフォルトの名無しさん
NGNGDelayTimeを変更するのは不可能ですか?
0318デフォルトの名無しさん
NGNG0319デフォルトの名無しさん
NGNGそれやったんですが、無視されてしまうようです。
色やマージンなどは変更できたんですが…
0320デフォルトの名無しさん
NGNGオーナー描画ボタンはめんどくさすぎるんで
0321デフォルトの名無しさん
NGNGラジオボタンだか何かのスタイルにそんなの(ボタン風の)が合ったような気がする・・・
0322デフォルトの名無しさん
NGNG0323デフォルトの名無しさん
NGNG0324デフォルトの名無しさん
NGNGRECTの幅と高さの計算はそれぞれ、
right - left + 1
bottom - top + 1
でいいでしょうか?
それとも、
right - left
bottom - top
でしょうか。
0325デフォルトの名無しさん
NGNG0326デフォルトの名無しさん
NGNGありがとうございます!
0327304
NGNGNullの代わりに0、""などを入れてみたところ今度はエラー1が出ました。
なんとなく次の段階に進めそうです。
と思ったのですが、FileDiskのGUIが見つかったので今回のプロジェクト?は中止します。
皆さん、ありがとうございました。
0328デフォルトの名無しさん
NGNG0329デフォルトの名無しさん
NGNGvbNullString使え。
0330デフォルトの名無しさん
NGNGHINSTANCE hPrevInst,
LPSTR lpCmdLine,
int nCmdShow )
これの右側部分の意味っていうか、なぜhinstanceとか入れなきゃならないんですか?
これは任意の名前でもいいんですか?
0331デフォルトの名無しさん
NGNGまずC/C++の入門書読んで来い。このスレでする話じゃない。
0332デフォルトの名無しさん
NGNG省略するな。
WinMain(HINSTANCE handle_for_Instance_of_this_Process, HINSTANCE handle_for_Instance_of_Previous_Process, LPSTR long_pointer_for_Command_Line_String)
0333デフォルトの名無しさん
NGNG引数が一つ省略されてるのは仕様ですか?
0334デフォルトの名無しさん
NGNGWinMainのプロトタイプを何文字で書くかで力量が量られる。
100文字未満 :草履持ち
100〜199文字:見習い
200〜299文字:丁稚
300〜499文字:番頭
500文字以上 :旦那
0335デフォルトの名無しさん
NGNG0336デフォルトの名無しさん
NGNG50文字未満:神
WinMain(HINSTANCE a,HINSTANCE b,LPSTR c,int d)
0337デフォルトの名無しさん
NGNGHINSTANCE形の変数hInstanceてことですよね。
これは任意で名前変えても良いんですか?
0338デフォルトの名無しさん
NGNGhandle_for_Instance_of_this_Process
か
b
になら変えることが許されている。
0339デフォルトの名無しさん
NGNG0340デフォルトの名無しさん
NGNG使わないからこれでいいんだよ
0341デフォルトの名無しさん
NGNG0342デフォルトの名無しさん
NGNGだから任意で変えてもかまわないんですよね
0343337
NGNGerror : parameter "hInstance" not declared
やっぱり他の名前に変えたらだめなんじゃないですか!!
しろうとに嘘教えてそんなに楽しいですか?
ここはひどいインターネットですね。
0344デフォルトの名無しさん
NGNGおい、俺のフリするなや
0345337 ◆ZIIQIs.HCM
NGNG0346デフォルトの名無しさん
NGNG0347デフォルトの名無しさん
NGNGで。
0348337 ◆DeUsmjHgh2
NGNG0349337 ◆PIbfznOsNc
NGNG0350337 ◆DeUsmjHgh2
NGNG0351337 ◇DeUsmjHgh2
NGNG0352337 ◆DeUsmjHgh2
NGNG0353デフォルトの名無しさん
NGNG0354デフォルトの名無しさん
NGNGWinMainのプロトタイプを何文字で書くかで力量が量られる。
100文字未満 :草履持ち
100〜199文字:見習い
200〜299文字:丁稚
300〜499文字:番頭
500文字以上 :旦那
俺は見習いか・・・意外と当たるな。
0355デフォルトの名無しさん
NGNG0356デフォルトの名無しさん
NGNGWH_CALLWNDPROC とか、WH_GETMESSAGE
とか、フックの種類がいくつかあるようですが、
どういう場合にどのフックを使えばいいのか
ヘルプを読んでもよくわかりません。
こういうときにこのフックとか解説している
サイトがあれば教えてください。
0357デフォルトの名無しさん
NGNGttp://www.h3.dion.ne.jp/~toomo/html/fuck.html
0358デフォルトの名無しさん
NGNG特に1つのプロジェクトを複数人で組むときとか大事だよ〜
0359337 ◆DeUsmjHgh2
NGNG0360デフォルトの名無しさん
NGNG0361デフォルトの名無しさん
NGNGfuckて。明らかに英語間違ってるような。エロサイトかと思った。
腕時計を見るように腕を傾けるのはよくわかった。ありがとう。
0362デフォルトの名無しさん
NGNG0363デフォルトの名無しさん
NGNGrinku.htmlを見たとき以来の笑撃だ
0364デフォルトの名無しさん
NGNG0365デフォルトの名無しさん
NGNG( ゜д゜)・・・
0366デフォルトの名無しさん
NGNG0367デフォルトの名無しさん
NGNGSetWindowsFuckEx の使い方を教えてください。
WH_CALLWNDPROC とか、WH_GETMESSAGE
とか、Fuckの種類がいくつかあるようですが、
どういう場合にどのFuckを使えばいいのか
ヘルプを読んでもよくわかりません。
こういうときにこのFuckとか解説している
サイトがあれば教えてください。
0368360
NGNG検索しても見つかりませんでしたが…。
>>364
ホイールをどれだけ回転させたかの値です。
WM_MOUSEWHEELメッセージのwParamの上位ワードのような。
0369356
NGNGフックの勉強にはなりましたが、
WH_CALLWNDPROC とか、 WH_GETMESSAGE とかに
ついての解説は残念ながらないようです。
それらについて解析したページお願いします。
0370デフォルトの名無しさん
NGNG0371デフォルトの名無しさん
NGNGひとつのリストビューで使いたいのですが、
システムイメージリストにオリジナルのイメージを追加するのが良いのか、
システムイメージリストをコピーして使うのが良いのか、どちらでしょうか?
Win2kとかだと、システムイメージリストもアプリケーションローカルのようなので、
好きなように編集してよさそうなのですが、2kとXPしか環境が無いので
どういった作法がいいのか分かりません。
0372デフォルトの名無しさん
NGNG知らなけりゃ、だまっていいよ。
0373デフォルトの名無しさん
NGNGhttp://www.kab-studio.biz/Programing/Codian/ 等
0374デフォルトの名無しさん
NGNG選択前のリージョンに戻したい場合はどうすればいいのか分からないです。
SelectObjectの戻り値もオブジェクトではなく、ステータスだし・・・
0375デフォルトの名無しさん
NGNG0376デフォルトの名無しさん
NGNG0377デフォルトの名無しさん
NGNG0378デフォルトの名無しさん
NGNGレスありがとうございます。
しかし、WH_CALLWNDPROC の説明として「すべてのメッセージ」と書いてありますが、
WM_KEYDOWN は通過しないようです。
一方、WH_GETMESSAGE も「すべてのメッセージ」と書いてありますが、
WM_ACTIVATE は通過しないようです。
WM_XXXXX をフックしたいときは、WH_XXXXXみたいな対応が
わかれば助かるんですが。
それと、WH_GETMESSAGE でも、WH_KEYBOARD でも WM_KEYDOWN をフックできますが、
それならどちらを使っても同じなのか、それともそれぞれにどのような
メリット・デメリットがあるのかなどの解説は、ぐぐっても msdn でも見つけられませんでした。
(探し方が下手なのかもしれませんが)
どなたかご存じないですか?
あるいは、みなさんは、フックするときにどの WH_XXX を使うか、どういう基準で決めてますか?
よろしくお願いします。
0379デフォルトの名無しさん
NGNGできました
ありがとうございました。
0380デフォルトの名無しさん
NGNG+1しないとだめ
0381デフォルトの名無しさん
NGNG難しいことは俺もわからんのだが、
WH_CALLWNDPROCとWH_GETMESSAGEの違いは分かってる?
名前の通り、WH_CALLWNDPROCの方はウィンドウプロシージャのフック。
WH_GETMESSAGEはメッセージキューのフック。
フックしたいものが、メッセージキューを通るのか、SendMessageみたいに直接プロシージャを呼び出すのか、
によって決めればいいんじゃないかな。
WM_KEYDOWNとWM_ACTIVATEがどういう風に送られるかは知らないので、自分で調べてください。
0382デフォルトの名無しさん
NGNGなんで?
0383デフォルトの名無しさん
NGNGCOLOR_SCROLLBARで何が起きるか考えて試してみな。
0384デフォルトの名無しさん
NGNGスレッドごとのスタックサイズを取得する方法はあるのでしょうか?
ありましたら、教えていただきたいです。
0385デフォルトの名無しさん
NGNGどうやったら分かりますかね?
0386デフォルトの名無しさん
NGNGSaveDC, RestoreDC
0387デフォルトの名無しさん
NGNG開始位置のSPを憶えておいて比較したいところで引き算するしかないね。
0388デフォルトの名無しさん
NGNGリージョンを作成する系統の命令(CreateRectRgnなど)を
連続して呼びだすと、他のアプリの一部が無限にちらついてしまう現象が
起こります。(自作のマスコットアプリにかぎらず)
Exel2003やWord2003などの一部の図形を表示しているとかなりひどいです。
原因や回避方法をご存知のかたおられませんか?
0389デフォルトの名無しさん
NGNGWH_CALLWNDPROC は SendMessage() で送られてきたキューを通過しないメッセージ
しか捕まらない。だから WM_KEYDOWN は捕まらない。
反対に、WH_CALLWNDPROC はキューを通過するメッセージしか捕まらない。英語の
ヘルプやMSDNでは、キューを通るメッセージは posted 通らないのは sent と
なっているので区別できる。
>WH_GETMESSAGE でも、WH_KEYBOARD でも WM_KEYDOWN をフックできますが、
>それならどちらを使っても同じなのか
同じって言えばいえるけど、WH_KEYBOARD はキーボードメッセージ専用
なのでオーバヘッドは小さいだろうね。専用なので間に合う場合はそれを
使った方がいい。
0390デフォルトの名無しさん
NGNGCreateRectRgnなどのリージョンをつくるAPIは、DCハンドルと関係ないでしょう。
ちらつく理由がないのでは? もしかして、つくるたびに描画してるかクリッピング
してるんでは?
0391デフォルトの名無しさん
NGNGα値を持つ画像を表示すると
(下のWindowの色)*(1−α)+(半透明Windowの色)*α
ではなく
(下のWindowの色)*(1−α)+(半透明Windowの色)
となってしまうのは仕様でしょうか?
α値を持つ画像のR・G・Bに前もって自分でα値を掛けておかなくては駄目なのでしょうか。
0392デフォルトの名無しさん
NGNG0393デフォルトの名無しさん
NGNGBLENDFUNCTION?BITMAPINFO?
0394デフォルトの名無しさん
NGNG0395デフォルトの名無しさん
NGNGここに書いてあるとおりにやったのですが…。
0396デフォルトの名無しさん
NGNG>>391
後者のほうが描画時の演算コスト低いだろ? そういうことで納得しとけ。
0397デフォルトの名無しさん
NGNGやっぱり前もってαを掛けておかないと駄目ですか…。
0398デフォルトの名無しさん
NGNG取得するようなAPIはないでしょうか?
やりたいことは、呼び出し元プログラムの使用しているコード領域と
データ領域から特定のバイト列を検索したいのですが範囲がわからないと
どこまで読み取ればいいのか決められません
0399デフォルトの名無しさん
NGNGVirtualQueryを駆使すればできそう
0400デフォルトの名無しさん
NGNG>キューを通るメッセージは posted 通らないのは sent と
>なっているので区別できる。
ここで見分ければいいんですね。勉強になりました。
ひとつのフックですませる方法はなさそうなので、
WH_CALLWNDPROC と WH_GETMESSAGE 両方フックすることにします。
>同じって言えばいえるけど、WH_KEYBOARD はキーボードメッセージ専用
>なのでオーバヘッドは小さいだろうね。
違いがオーバーヘッドだけなら、WH_GETMESSAGE でフックしておいて
パフォーマンスに問題がでたときだけ WH_KEYBOARD に変えるような
使い方にしたいと思います。
仕様の違いではまったりするのはイヤなんで・・・・。
ありがとうございました。
0401デフォルトの名無しさん
NGNGGetThreadContextでスタックポインタを拾って
VirtualQueryExでスタックポインタを含むメモリ領域のサイズを拾う
実際に試してないのでうまくいかなくても知らんが
0402デフォルトの名無しさん
NGNGMSDNを読んでみてもkeyに対する値の変更や削除については発見
できたのですがセクション名の操作に関しては発見できませんでし
た。
0403デフォルトの名無しさん
NGNG>>401
ソレしかないですかね。。。
ただ、ソースに手を出せないライブラリがスタック食ってるっぽいので
直接は無理そうです
VirtualQueryExで辿ってみます・・・
0404デフォルトの名無しさん
NGNGGetPrivateProfileSection(A, buffer)
WritePrivateProfileSection(B, buffer)
WritePrivateProfileSection(A, "")
ではどうだろう、と思ったが元のセクション名が残っちゃいそうだな。
テキストファイル操作で書き換えるのが早いんでないの。
0405デフォルトの名無しさん
NGNGWritePrivateProfileSection(A,NULL,filename)
で完全に削除できなかったっけ?
0406402
NGNGレスありがとうございます。
完全に削除する場合は>>405さんの言うようにすればいいのですが、
特定のセクション名だけを変更したかったので無理みたいですね。
テキストファイル操作のほうが早いみたいなのでそうしてみます。
ありがとうございました。
0408388
NGNGどうやらさらに調べると
CreateRectRgnではなくて
ウィンドウの形状を定義するSetWindowRgnを繰り返しよぶと、
Exeelなどで相性が悪いようです。
うーん、何でだろうなあ
0409デフォルトの名無しさん
NGNG形状をいじりたいだけなら、LayeredWindowにしてはどうですか?
これならパフォーマンスあまり落ちませんよ
0410デフォルトの名無しさん
NGNGそりゃ、描画に影響するクリッピングを繰り返すわけだから当然。なぜ、まとめて一回に
しないのか不思議。
0412デフォルトの名無しさん
NGNGレイヤードウィンドウを使う仕様にした場合でも、
win98やMEで動作させる方法はあるんですよね?
友達の家のPCで動かしたいんですが、
user32.dll?がなかったので動きませんでした。
調べても説明が端折られてて理解できなかったので、
1から学びたいのですが。
0413デフォルトの名無しさん
NGNGアニメーションするのにクリッピング? 透過描画はできないの?
0414デフォルトの名無しさん
NGNGどういったAPIを使えばいいのでしょうか?
作りたいプログラムはAというプログラムで、別にBとCというプログラムが
存在し、例えばBというプログラムが印刷をプリンタに依頼したら、
Aプログラムがリアルタイムにそのイベントを察知し、なおかつ印刷を
Bが依頼したという事をわかるようにしたいのですが・・・
抽象的な質問でスマソ
0415387
NGNG>ソレしかないですかね。。。
単純にSPだけ見たいのなら
int dat;
_asm mov dat, esp
でできるよ。VC6+x86系
>ただ、ソースに手を出せないライブラリがスタック食ってるっぽいので
>直接は無理そうです
デバッガで追うしかないな。
0416デフォルトの名無しさん
NGNGhttp://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/createwindowex.asp
>WS_EX_LAYERED
>Windows 2000/XP: Creates a layered window. Note that this cannot be used for child windows.
> Also, this cannot be used if the window has a class style of either CS_OWNDC or CS_CLASSDC.
0417デフォルトの名無しさん
NGNGウィンドウプロシージャにWM_CREATEメッセージが送られてしまいます。
これを何とか送られないようにする方法はありませんか?
0418デフォルトの名無しさん
NGNG0419デフォルトの名無しさん
NGNGというかGetThreadContextというキーワードはすでに与えたんだがなあ
0420デフォルトの名無しさん
NGNGソースのないライブラリの奥底で呼ぶことはできんでしょ。
0421デフォルトの名無しさん
NGNGそれはインラインアセンブラでesp見るのも同じでしょ
0422デフォルトの名無しさん
NGNGInvalidateRect(hwnd, A, TRUE);
InvalidateRect(hwnd, B, FALSE);
とすると、両方とも背景が消去されてちらついてしまいます。
それぞれのInvalidateRectにUpdateWindowを挟むと
WM_PAINTを二回呼び出す事になって無駄が多すぎます。
何か良い手はないでしょうか
0423デフォルトの名無しさん
NGNG0424デフォルトの名無しさん
NGNGそこでInvalidateRgn()の登場ですよ
0425デフォルトの名無しさん
NGNGRECT r = DefaultWorkArea;
// r設定
SystemParametersInfo(SPI_SETWORKAREA, 0, &r, SPIF_SENDCHANGE);
とかやってみたのですが、少し足りない感じです。たとえば、最大化していて
スクリーンセーバーになり、セキュリティの関係でログオン画面に戻る設定に
してあると(今使ってるのはXP)、再びログオンしたときに最大化していた
ウィンドウがめり込んでいます。
何が足りないのでしょう。
0426デフォルトの名無しさん
NGNG0427デフォルトの名無しさん
NGNGじゃあしょうがないのかなー。
今やってるのはランチャーの改造です。
具体的にはNCW。やっぱソース公開していただくとありがたいですね。
0428デフォルトの名無しさん
NGNG0429デフォルトの名無しさん
NGNGGetPrivateProfile〜やWritePrivateProfile〜は、WinNT系OSでは
レジストリにマッピングされることがあるそうですが、実際上
どのくらいの頻度でそのような設定になっているのでしょうか?
0430デフォルトの名無しさん
NGNG3回に1回はiniに書き込まれたりするのか?
0431デフォルトの名無しさん
NGNG0432デフォルトの名無しさん
NGNG文字列ひとつとってもPTSTR、PCTSTR、LPCSTR、LPSTRなどなど
この辺の変数を使うときに、結構適当な扱いをしても動いてしまうため
もしかすると間違ったまま使っているかもしれません
型定義について詳しく正確に書かれているWEBや本はないでしょうか?
探した範囲では、どの資料も正確さに欠けていて
いまいち期待通りのものがありませんでした
一度きちんと勉強したいので・・・
0433429
NGNG意図するところは、「ini関連のAPIにおいて、レジストリにマッピング
される条件はどのようなものか確認したい」ということです。Platform
SDKのヘルプを見る限りでは、私は「独自にiniファイルを作った場合
にはレジストリには書き込まない」という解釈を行ったのですが、
それでよろしいでしょうか。
0434デフォルトの名無しさん
NGNGヘッダを読めば?
0435デフォルトの名無しさん
NGNGというか、レジストリにマッピングするためにはそのように設定しなきゃ
ならない。そう設定しない限りはマッピングされない。
0436デフォルトの名無しさん
NGNGMSDNに全部書いてある。
0437デフォルトの名無しさん
NGNG0438デフォルトの名無しさん
NGNGLPWSTR Pointer to a null-terminated string of 16-bit Unicode characters.
LPTSTR An LPWSTR ifUNICODE is defined, an LPSTR otherwise.
LPCSTR Pointer to a constant null-terminated string of 8-bit Windows (ANSI) characters.
LPCWSTR Pointer to a constant null-terminated string of 16-bit Unicode characters.
LPCTSTR An LPCWSTR ifUNICODE is defined, an LPCSTR otherwise.
0439デフォルトの名無しさん
NGNG0440デフォルトの名無しさん
NGNG失敗する・・・。
というか、このフラグに何の意味あるのか分からんが。
0441デフォルトの名無しさん
NGNGWin98だけど別に失敗はしないよ。
> ICC_STANDARD_CLASSES
> Load one of the intrinsic User32 control classes.
> The user controls include button, edit, static, listbox, combobox, and scrollbar.
確かにわざわざ指定する意味はないように思えるね。
0442デフォルトの名無しさん
NGNGうちはXPなんですが
manifestでコモンコントロールを6.0.0.0に指定してるのが
いけないんだろうか
ググってもそれらしい情報ないし、
それともうちの環境が変なだけなのかもしれない
0443デフォルトの名無しさん
NGNG現状ではコールバックではデータをファイルに書き込まず、
コールバックに渡されるサイズを合計して合計を求めていますが効率がいいとは言えません。
もっと他にサイズを求める手段はありますか?
RTFデータをファイルに単体のRTFファイルとして書き込むのではなく、
メモリーに出力する為の確保するメモリ量を知りたいんです。
0444デフォルトの名無しさん
NGNGごみ箱内のファイルの「元の場所」や「削除した日」を取得するAPIってありますか?
0445デフォルトの名無しさん
NGNGSendMessage(hWnd, WM_GETTEXT, 256, lpszTmp);
とやって、他アプリケーションのエディットコントロール内の文字列を取得してみようと試みました。
メモ帳やEdMax(フリーメーラー)のものは簡単に取得できたのですが、
IEやOutLookのエディットコントロールから取得しようとすると""が返って来てしまいます。
例えばIEでGoogleで検索文字列を入れる部分などです。
IEなどのMS製品は、何か特殊なことがされていて、取得できないのでしょうか?
0446デフォルトの名無しさん
NGNGそもそも、IEの入力フォームがウィンドウかどうかって問題があるが・・・
spy++で試したが、どうもウィンドウじゃなさげ
0447デフォルトの名無しさん
NGNGIShellFolder2::GetDetailsOf ?
0448デフォルトの名無しさん
NGNGわかってるかとは思うが他のアプリに素のSendMessageは
巻き込まれキケンのおそれ。質問に関係ないけど一応。
0449デフォルトの名無しさん
NGNGCB_GETEDITSEL
EM_GETTEXTEX
あたりは試した?試して報告してみて。
0450デフォルトの名無しさん
NGNGエディットコントロールって言ってるんだから、アドレスバーとかの話じゃないの?
アドレスバーだったら、コンボボックスだから、さらにその中のエディットコントロールを
取得しないとダメだったきがする。
0451446
NGNG>例えばIEでGoogleで検索文字列を入れる部分などです。
って、あったのでフォームかな?、と
よく考えれば、Googleツールバーてのもあったな
漏れは使ってないけど・・・
0452デフォルトの名無しさん
NGNG0453デフォルトの名無しさん
NGNG0455デフォルトの名無しさん
NGNGBITMAPINFOの説明なのですが、biCompressionがBI_RGBの場合、
bmiColorsはNULLであると言う説明がいまいちわかりません。
bmiColors[0]の各要素が0である事を指すのか、それともbmiColors自体が存在しないで
メモリイメージはBITMAPINFOHEADERと同一のものに鳴るのか、どちらなのでしょうか?
0456デフォルトの名無しさん
NGNG>>446
なんと、ウインドウではないのですか?
hWndはとれて、SendMessageでWM_CHARなどを送ると反応するので、Windowだと思いますが
>>449
他アプリに勝手に干渉するあたり、危険は承知です
>>449
今から試してみます
>>450-451
やや、失礼しました。フォームのことです。
0457デフォルトの名無しさん
NGNG君はプログラマの素養がないので、今すぐあきらめた方がいいな。
0458デフォルトの名無しさん
NGNGヤメレ、無駄に煽るのは。
0459デフォルトの名無しさん
NGNG>>449での指摘の通り、通常のウィンドウとは違く、リッチテキストかもしれません。
リッチかな?という方向で調査してみようと思います。
特になければしばらく調査ですのでカキコしないと思いますが、
何か情報ありましたらよろしくお願いいたします。ここ自体は見ていますので。
0460デフォルトの名無しさん
NGNGリッチテキストですらないけどな。
たとえばゲームの中のメニューの内容を外部のアプリケーションから取得できるか?
IEのウインドウからDOMを取得して構造解析するしかない。
0461446
NGNGフォームに値を設定・取得することなら
IEコンポーネント使えばいける
IEコンポーネントスレなくなっちゃってるんで、
過去ログだが、この辺読むと少しは分かるかも
http://pc5.2ch.net/tech/kako/982/982930049.html
0462デフォルトの名無しさん
NGNGなんかまるっきり間違ってるが、どこの何を参考にした?
0463デフォルトの名無しさん
NGNGどこが間違っているのかわっぱり見当つきません。
よろしければ教えてもらえませんか?
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_1rw2.asp
biBitCount
16 If the biCompression member of the BITMAPINFOHEADER is BI_RGB, the bmiColors member of BITMAPINFO is NULL.
24 The bitmap has a maximum of 2^24 colors, and the bmiColors member of BITMAPINFO is NULL.
32 If the biCompression member of the BITMAPINFOHEADER is BI_RGB, the bmiColors member of BITMAPINFO is NULL.
です。
非パレットベースのビットマップファイルの場合はRGBQUADに相当するデータが存在しないのはわかるのですが
DIB関数に渡すときはどう指定するべきなのかが分からないんです。
0464デフォルトの名無しさん
NGNG一般にbmiColorsが必要ない場合にはBITMAPINFOHEADERを確保して、それへのポインタをBITMAPINFO*にキャストする。
ただし、biBitCountが16以上で、biCompressionがBI_RGBであってもbiClrUsedが0でないの場合にはbmiColorsが使用される。
0465デフォルトの名無しさん
NGNGMFCを使えばCSplitterWndで出来るようなのですが使わない場合については
わかりません。
やり方のわかる方、説明お願いします。
0466デフォルトの名無しさん
NGNGSendMessageTimeoutとかモアベターよぐらいの意味>危険
0467デフォルトの名無しさん
NGNGttp://zidney.define.jp/programing/
ttp://www.kumei.ne.jp/c_lang/index_sdk3.html
0468デフォルトの名無しさん
NGNG0469デフォルトの名無しさん
NGNGって言えばいいのかな。
0471デフォルトの名無しさん
NGNG他プロセスのウインドウのアイコンの取得方法がわかりません。
検索キーワードとかでもいいのでヒントだけでもお願いします。
0472デフォルトの名無しさん
NGNG例えば、WM_CREATEなら"WM_CREATE"にするような。
イベントの発生状況を知りたいのだけれど、数値IDだと読み解くのがめんどくさい。
0473デフォルトの名無しさん
NGNGAPI としては存在しないと思うので、
http://cvs.sourceforge.net/viewcvs.py/peace/peace/dll/ui.so/dumpmessage.c?rev=1.4&view=markup
からコピペで。
0474デフォルトの名無しさん
NGNGうおっ、速攻ありがとう。
やはり無いのか。。。。それ使います。サンクス!
0475デフォルトの名無しさん
NGNG自作プログラムを自動実行させられる手段ってないのでしょうか?
0476デフォルトの名無しさん
NGNGウイルスでも作るつもりか糞野郎
0477デフォルトの名無しさん
NGNG0478デフォルトの名無しさん
NGNG思い切り勘だけで答えると
1.プロセスからモジュール取得(EnumProcessModuleとか?)
↓
2.モジュールからアイコン取得(SHGetFileInfoとかLoadIconとか?)
という手順かなあ?
外してたらごめんな
0479デフォルトの名無しさん
NGNG何しぇるために必要なのかにゃ?
0480デフォルトの名無しさん
NGNG0481475
NGNGマシンのメンテの時にそれをいちいち手動でやらなきゃいけないので。
マシンの数が多いんですよ。
方法がないんだったらしようがないんですが。
0482デフォルトの名無しさん
NGNG0483デフォルトの名無しさん
NGNG0484デフォルトの名無しさん
NGNG漏れはこれ、ないって認識なんだがそれであってる?他の人。
(あっても内容を答える必要はないと思うが。)
0485デフォルトの名無しさん
NGNG0486デフォルトの名無しさん
NGNG2個ほど思いついたけど。
Tで設定するのとSの設定変えるのと。
0487486
NGNG0488デフォルトの名無しさん
NGNGそれだと目的のウインドウで使われているアイコンと関係ないアイコンしか取れないですよね
DLL Injection使うしかないんでしょうか
0489デフォルトの名無しさん
NGNG普通に WM_GETICON じゃダメなんですか?
0490デフォルトの名無しさん
NGNGAPIビューアがないんです。
どこにあるんでしょうか?
0491デフォルトの名無しさん
NGNGそこに時刻を表示して、今では時計の役割をしています。
非常に愛着があって、いつも画面の右上に置いているのですが少し問題が
あります。
パソコンを起動するたびに、このEXEを実行する必要があるのです。
この問題を解決する方法はないでしょうか。
表示位置はINIファイルに記憶しているので大丈夫です。
0492デフォルトの名無しさん
NGNG0493デフォルトの名無しさん
NGNG探してみれ。そして見つかった場所をここに書き込め。
0494デフォルトの名無しさん
NGNGBeginPaintとEndPaintをフックしてWM_PAINTを投げてみたのですが、
全く描画されないばかりかフックした関数が呼ばれません。
メモ帳などではきちんとフックに成功してるんですが・・・
0495デフォルトの名無しさん
NGNGとあるアプリケーションがどうやら DirectInput でキーを拾っているようで、
SendMessage では反応してくれません。
こういう場合、どういう API でキーを送ればいいでしょうか?
0496デフォルトの名無しさん
NGNG0497デフォルトの名無しさん
NGNGどうゆうことでしょう?
0498デフォルトの名無しさん
NGNG0499デフォルトの名無しさん
NGNGkeybd_even も反応しないみたいです。
0500デフォルトの名無しさん
NGNGIE のブラウザ部分は全てオフスクリーンに描画して画面へ転送ってな感じでやってるみたいです。
(除く windowless に対応していない ActiveX の部分)
ページの中身の絵が欲しいのなら、WebBrowser コントロールで表示して GetDocument した
IHTMLDocument (?) あたりで OleDraw すると描けたような記憶があります。
また、時間と興味があるなら、IHTMLPainter インタフェイス辺りから調べていくのもアリかもしれません。
でも BeginPaint も呼んでいないってのは面白いですね。
0501デフォルトの名無しさん
NGNGどうなってれば納得できます?
で、黒ってデータ(数値)としてはどうなってると思います?
0502デフォルトの名無しさん
NGNGWindows 9X、Millenium ではゴミデータが入ってたような気がする。
NT 系の OS ではセキュリティ上の配慮のため、確保されたメモリは既にクリアされてる。
0503デフォルトの名無しさん
NGNG>keybd_even も反応しないみたいです。
反応するよ。
仮想キーコードじゃなくてスキャンコードを送信すればいい。
dinput.hに書いてある、仮想キーマクロ DIK_????? を参考にしてみれ。
ちなみにキーボードデバイスでサポートしてないキー入力送信は無理。
英語キーボードの「半角/全角」キーに相当するアンサン・グラブ(DIK_)は、
日本語キーボード環境だとうまくDirectInputに送信できない。
「A」キーのキー入力を送信する例:
#include <dinput.h>
WORD key = DIK_A;
keybd_event(0, key, 0, 0);
keybd_event(0, key, KEYEVENTF_KEYUP, 0);
0504デフォルトの名無しさん
NGNG画面全体が真っ白になって欲しいです。
メモリはクリアされていて黒ってことはデータ的には0が入っているってことですかな?
具体的に白くするにはどうすればいいんだろ。
0505デフォルトの名無しさん
NGNG24ビットDIBSectionなら
FillMemory(lpPixel, iWidth * iHeight * 3, 0xff);
とか(lpPixelがピクセル列のバッファの先頭アドレスね)。
0506デフォルトの名無しさん
NGNGあー。なるほど。32で作ってましたけど出来ました。thx!
0507デフォルトの名無しさん
NGNGおーなるほど。これで上手くいきました。
あとは文字列からスキャンコードへの変換ルーチン書けば行けそうです。
ありがとうございました。
0508デフォルトの名無しさん
NGNG0509デフォルトの名無しさん
NGNG乗っ取ったFakeBeginPaintで領域を制限しなければ良いと思うんだけど、、、
HDC FakeDC = ...;
HDC WINAPI FakeBeginPaint(HWND hwnd, PAINTSTRUCT* ps)
{
::ZeroMemory(ps, sizeof PAINTSTRUCT);
::GetClientRect(hwnd, &ps->rcPaint);
return ps->hdc = FakeDC;
}
0510デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1093996761/41-42
なんだかこっちでもスレ違いな気がして気が引けます…
0511デフォルトの名無しさん
NGNG0512デフォルトの名無しさん
NGNGこれを書いたらこれを書けみたいな
0513デフォルトの名無しさん
NGNG[を書いたら]を書け。
0514デフォルトの名無しさん
NGNG0515デフォルトの名無しさん
NGNGガッ
0516デフォルトの名無しさん
NGNG0517デフォルトの名無しさん
NGNG0518デフォルトの名無しさん
NGNG0519デフォルトの名無しさん
NGNG0520デフォルトの名無しさん
NGNG0521デフォルトの名無しさん
NGNG0522デフォルトの名無しさん
NGNG0523デフォルトの名無しさん
NGNGRegisterClassにわたすクラス名は
ユニークでなければいけませんか?
0524523
NGNGすみません、すみません。
0525デフォルトの名無しさん
NGNG0526デフォルトの名無しさん
NGNG画面のスクロールの処理の時に、そうなってしまうのですが。
0527デフォルトの名無しさん
NGNGスクロールの方向によってはえらいことになる。
0529デフォルトの名無しさん
NGNG0531526
NGNGあっ、そういう意味ではないですね。
裏ビットマップに書きたいのでHBITMAPと言いました。
スクロール前の裏ビットマップの、スクロールしても残る位置を、
同じ裏ビットマップに描いて、残りを部分は新たに描くという感じです。
0532デフォルトの名無しさん
NGNG527じゃないが
int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
for(int i = 0; i < 9; ++i)
a[i + 1] = a[i];
多分こんなようなことになると思う。
0533デフォルトの名無しさん
NGNG重ならない領域の転送なら、なんも問題無いよ。
0534デフォルトの名無しさん
NGNGMoveMemoryみたく。
0535526
NGNG詳しく説明していただき、ありがとうございました。
>>533
自分もそんな感じに考えていました。
変更前の物を転送した後に、変更されるならいいのですが、
逆だとどうなるのかなと。実験してみます。
0537デフォルトの名無しさん
NGNG0538526
NGNGただ、別のプログラム中に、強引に作ったので、
ちゃんとすればできるかもしれません。
>>537
ありがとうございます。調べてみます。
0539デフォルトの名無しさん
NGNGデスクトップカレンダーのように、常に背景に表示されているソフトを作りたいと考えています。
「常に最背面に表示」はできるようになったのですが、
「デスクトップの表示」ボタンを押すと隠れてしまいます。
何かいい方法はないでしょうか。
0540デフォルトの名無しさん
NGNG0542デフォルトの名無しさん
NGNGfaq
static link
0543デフォルトの名無しさん
NGNG壁紙をカレンダーに摩り替える。
0545デフォルトの名無しさん
NGNGそのものに組み込めと言うことですか・・・
MFCってMSのライブラリのくせに、標準じゃないんでしょうか・・・
0546デフォルトの名無しさん
NGNG「あなたの環境は標準的ではありません」と突っ返せばよし。
0547デフォルトの名無しさん
NGNGスレ違いだ
MFCスレに行きやがれ
0548デフォルトの名無しさん
NGNGパソコンは起動時にWINDOWS.EXEを実行して起動されます。MFCはこの中にはいっています。
それでも動かないのならあなたは不正なVisualStudioを使っていることになります。
恐らくコピー版を使っていると思われるのでMicrosoftに通告しときます。ご愁傷様でした。
0549デフォルトの名無しさん
NGNGお騒がせしました
0550539
NGNG新しい壁紙にすると、カレンダーをD&Dで移動させるときに難しそうなので避けてました。
>>544
「デスクトップの表示」ボタンを押したときには、WM_SIZEのメッセージはこないみたいです。
0551デフォルトの名無しさん
NGNGデスクトップの表示ボタンを押すと消える。
別の何かを開くと、復活するけど。
同じような現象なのかな。
0552539
NGNG同じ現象だと思います。
例えばSamurizeなんかは理想の挙動になっているのですが・・・
0553デフォルトの名無しさん
NGNGspy++でどんなメッセージが来てるか調べれば?
0555デフォルトの名無しさん
NGNG本当に調べた?
思いっきりWM_SIZE送られてるんだけど。
0556デフォルトの名無しさん
NGNG何を調べたのかと(ry
0557539
NGNG>>556
すいません。確認してみたら、普通のアプリケーションだったらメッセージがくるようですね。
調査不測でした。
調べてみたところ、私のプログラムでは親ウィンドウを作成する際に、WS_EX_TOOLWINDOWを指定していたため、
子ウィンドウにWM_SIZEがこなかったようです。
(WS_EX_TOOLWINDOWを指定したのは、親ウィンドウをタスクバーに表示させない為です)
ここら辺を直せばメッセージをキャッチできそうですね。
お手数おかけしました。
0558デフォルトの名無しさん
NGNG0559デフォルトの名無しさん
NGNG0560デフォルトの名無しさん
NGNGwindows.comのこと?
0561デフォルトの名無しさん
NGNG0562560
NGNGMFCって別の(ry
一応、張っておきますね
■MFC相談室 mfc11.dll■
ttp://pc5.2ch.net/test/read.cgi/tech/1088084875/
0563デフォルトの名無しさん
NGNGintを描画するにはどうすればいいですか?
0564デフォルトの名無しさん
NGNGwsprintf
0565デフォルトの名無しさん
NGNGsptintfとの違いはあるのでしょうか?
それと、MFC使うよりもWin32APIで作った方がプログラム実行が僅かに
速いって本当なんでしょうか?
0566デフォルトの名無しさん
NGNG> プログラム実行
何のプログラムだ?
0567デフォルトの名無しさん
NGNG0568デフォルトの名無しさん
NGNGCreateCompatibleBitmapやCreateCompatibleDC
で裏画面を作成し描画しているのですが、
画面全体を新たに再描画(真っ白に)する場合、
それまで使っていた裏画面を破棄して新しくメモリを作成する方法と、
画面を背景の色で塗りつぶす(FillRectとかそんな感じで)方法があると思うのですが、
どちらが速いのでしょう??
環境はWinXP+VC6.0+APIです。
0569デフォルトの名無しさん
NGNGMFC固有のdllの初回読み込み(OS起動以後)に時間がかかるってだけでしょ。
2回目以降の起動ではほとんど関係ないかと。
実行パフォーマンスを理由にしてMFCを使わないというのは稀。
2次配布問題やファイルサイズ・カスタマイズ効率の面からMFCを使わないというのはあるけど。
0570デフォルトの名無しさん
NGNG大して意味はないレベルにせよMFCのウィンドウ−C++オブジェクトマッピングはコスト0じゃない。
0571デフォルトの名無しさん
NGNG0573デフォルトの名無しさん
NGNG検索の分遅いんじゃないか?
0574デフォルトの名無しさん
NGNG後者・・・じゃないかなぁ。
せっかくだから、測定してみるといいんじゃない?
0575デフォルトの名無しさん
NGNGどのみち作成後に塗りつぶすなら再作成の意味は無い気がするんだが。
0576デフォルトの名無しさん
NGNGNT系ならセキュリティ上の理由から塗りつぶされてると思うが
期待しちゃいけない気がするな
0577568
NGNGFillRectで塗りつぶす方法で良さそうですね.
あと話が変わるのですが,
複数のウインドウプロシージャで変数を共有したいのですが,
どうすればよいでしょう?
変数のポインタを渡せば良さそうなのですが,
どこで渡せばいいのやら・・・
0578デフォルトの名無しさん
NGNG好きなところで。
グローバルにしてもいいし、
上位のオブジェクト(たとえばアプリケーションクラスのインスタンス)とかに持たせて、
その上位オブジェクト経由でアクセスするとか。
どちらも嫌な場合は、CreateWindowの最後の引数とか。
0579デフォルトの名無しさん
NGNG複数のウィンドウクラス間で、ということ?
0580568
NGNG今はグローバルで宣言していますが,変数が多くなってきたので
クラスか構造体のポインタを他のプロシージャに渡せればいいなと思いました.
とりあえず,CreateWindowの最後の引数に渡す方法をやってみます.
0581デフォルトの名無しさん
NGNG速さを気にするんだったらブラシ用意してFillRectより、CDC::FillSolidRectみたいに
SetBkColor→ExtTextOutの方が速いはず。
0582デフォルトの名無しさん
NGNGあれ、背景色を元に戻してないよな。
いいのかMicrosoftがそんなことで…
0583デフォルトの名無しさん
NGNGでも、一言注意書いといて欲しいよな。
0584デフォルトの名無しさん
NGNG>メ モ FillSolidRect を呼び出すと、以前に SetBkColor を使って設定した背景色が、
>clr で指定した色に設定されます。
と書いてあるケドナー
0585デフォルトの名無しさん
NGNG0586デフォルトの名無しさん
NGNGプログラム実行中に Windows が休止状態に入った場合、その状態から
復帰した後に特別な作業を行いたいんですが、これを感知する方法が
あれば教えてください。
動作させたい OS は Windows 2000 SP4 です。
0587デフォルトの名無しさん
NGNG0588デフォルトの名無しさん
NGNG0589デフォルトの名無しさん
NGNG0590デフォルトの名無しさん
NGNGSendMessage() でいいんでしょうか・・・?
取り合えずHWND取得からやってみます。
ありがとでした。
0591デフォルトの名無しさん
NGNG0592デフォルトの名無しさん
NGNGこれはアプリケーションが破棄してはいけないと言われますが、
(9x系だけかな?)それって全部のプロセスで中身が共通だからですよね?
と言う事は、アプリケーションから勝手にアイコンを登録したりすると
再起動するまで残りつづけるって事なんですか?
2000では破棄しても問題ないし、アイコンを好きなだけ追加しても
プロセスを起動しなおすと中身が初期化されています。
それでもやっぱりいじらない方がいいと思うのですが、
システムイメージリストとアプリケーション独自のアイコンを
ひとつのツリービューやツールバーで利用したい場合、
どうするのがいいのですか?
0593デフォルトの名無しさん
NGNGトップレベルのモードレスダイアログを同時に2つ作成しようとしています。
メッセージループには2つの IsDialogMessage() を組み込んでいるものとします。
このとき、片方のダイアログの上で MessageBox() 等でモーダルダイアログを表示すると、
独自のメッセージループに突入してしまうため、もう片方のモードレスダイアログでは
TABキーによるフォーカスの移動ができなくなってしまいますよね。
スレッドを分ければ解決するのですが、できればマルチスレッドにはしたくないのです。
シングルスレッドでこの問題を回避するいい方法があればご教示ください。
0594デフォルトの名無しさん
NGNGシステムイメージリストから必要なアイコンをコピーして使えばいいだけでは?
両方ともモードレスにして、モーダル風にふるまわせれば?
0596デフォルトの名無しさん
NGNG>もう片方のモードレスダイアログでは
モーダルダイアログを表示したら、モードレスダイアログは inactive なんじゃ・・・
0597デフォルトの名無しさん
NGNG自前でTABキー等を処理する。
0598ほんたま
NGNG9割方のAPIはヒットする。
だが残る1割のAPIは文字列検索してもヒットしないぞ。
ちゃんとそのDLL内に記述されているのにだ。
これがどういうことかわかるかな?
0599デフォルトの名無しさん
NGNG0600デフォルトの名無しさん
NGNG自分じわかるかな?
0601デフォルトの名無しさん
NGNGうーん、確かにそういう手もありそうですが…結構面倒になりそうですね。
>>596
最初はアクティブではありませんが、表示されたモーダルダイアログは
もう片方のモードレスダイアログとは被所有関係にないため、
表示中でもアクティブにすることは可能なわけです。
>>597
自前で処理するのは最後の手段かなと思っていたのですが…考えてみます。
レスをいただいた皆さん、どうもありがとうございました。
0603デフォルトの名無しさん
NGNGWH_KEYBOARD のローカルフックで TABキーだけ一括処理する。
0604デフォルトの名無しさん
NGNGLockWorkStationでロックをして
ロックが解除されたら別の処理に移るようにしたいのですが・・・。
0605593&601
NGNGどうもありがとうございます。
自分がローカルフックを使おうとしなかった理由は、
グローバル変数を導入することを避けたい気持ちもあったからです。
でもシングルスレッド限定だとフックを使うのが一番よさそうですね…。
0606デフォルトの名無しさん
NGNGOpenInputDesktopでwinlogonデスクトップがアクティブかどうか
調べるとか
0607デフォルトの名無しさん
NGNGグローバル変数なんか必要ないけど?
0608605
NGNGえ…そうなんですか?
モードレスダイアログのハンドルをフックプロシージャに渡すのに必要な気がしますし、
少なくとも SetWindowsHookEx() の戻り値であるハンドルを
フックプロシージャ内の CallNextHookEx() に渡すためには
グローバル変数の導入は避けられないような気がしていたのですが…。
0609デフォルトの名無しさん
NGNGその別ユーザーのパスワードを知らない状況でそれは可能でしょうか。
UNIXのsuみたいに、権限をもっているユーザならパスワードがいらない方法を探しています。
お知恵を拝借されてください。
0610デフォルトの名無しさん
NGNGのMSDN解説をよく嫁
俺は読んだが分からなかった。スマソ
0612デフォルトの名無しさん
NGNGCreateProcessAsUserは無理
2000以降ならCreateProcessWithLogonWでできるけど
これもパスワードが必要
0613デフォルトの名無しさん
NGNGグローバル変数を使わない方法、私も興味があります。ぜひ教えてください。
0614デフォルトの名無しさん
NGNGプロセス間通信で共有してもいいし、
今回のケースはローカルフックなんだからハッシュとかに突っ込んでも良い。
んでもって、CallNextHookExは第一引数を無視する。
0615デフォルトの名無しさん
NGNG調べてみたら、確かにCallNextHookExは第1引数を無視するようですね。
新たな収穫でした。サンクス!!
0616デフォルトの名無しさん
NGNG改行されないで表示されてしまいます
スタイルの設定は
ES_READONLY | ES_MULTILINE | ES_AUTOVSCROLL
にしてあって、ES_READONLYをES_WANTRETURNにして
手入力すれば改行されるんですが、何が問題なのでしょうか
あと改行に成功してもたぶん1行目の行頭から表示されると思うんですが
最終行を一番下に表示する方法は何かあるのでしょうか
(見た目はチャットウィンドウっぽいものです 機能は全然違いますが・・・)
0617616
NGNG\r\nじゃないと改行できないんですね
最初の質問は取り下げさせていただきます
2つ目の質問も
まずEM_SETSELにMAKELONG(0xFFFF, 0xFFFF)渡して
直後にVK_HOMEも送るという方法で回避できましたが、
こんなまどろっこしい方法しかないんでしょうか
0618デフォルトの名無しさん
NGNGEM_SETSELで最後を選択して、EM_REPLACESELかな?
0619デフォルトの名無しさん
NGNG良くwカランけど、その2つのコンボって単純に EM_SETSEL に 0, 0 でいいんじゃない?
0620デフォルトの名無しさん
NGNG何を置換するんですか・・・?NULLを渡したらアクセス違反で落ちました
>>619
それだと1行目の行頭にキャレットが行ってしまいます
やりたいことは、3行表示できるエディットに5行送り込んだとして、
_____
| I1行目
| 2行目
| 3行目 ←こうではなくて(Iはキャレットのつもり)
 ̄ ̄ ̄ ̄ ̄
_____
| 3行目
| 4行目
| I5行目 ←こういう状態にしておきたいんです
 ̄ ̄ ̄ ̄ ̄
0621616
NGNGあーわかりました
EM_SETSEL,MAKELONG(0xFFFF,0xFFFF)でEDITの最後に移動して
EM_REPLACESEL,0,<追加する文字列\r\n>の後VK_HOMEで
望む挙動を実装できました ありがとうございます
0622デフォルトの名無しさん
NGNG0623デフォルトの名無しさん
NGNGそれをサブクラス化したのですが
置き換えたコールバックプロシージャに
WM_KEYDOWNが送られてきません。
これはなぜでしょうか?そういう仕様?
キー入力を取得したいので解決法を教えて頂けませんか?
*Edit,Button,ListView,TreeViewなどはちゃんとWM_KEYDOWNが送られてきています。
よろしくお願いします。
0624623
NGNGリソースエディタを使わずに動的にダイアログボックス上のリソースを作成した場合に
Tabキーを押したときに次のリソースにフォーカスが移動という機能を
自分で実装しなければならないために上記のような手段にでました。
親ウィンドウに子リソースのキー入力状況などは通知されないのでしょうか?
WM_NOTIFYなどでNM_KEYDOWNなどはありますが、
あくまでもコモンコントロールであって
Editなどがあてはまらず一貫した実装に出来ません。
一番手っ取り早いのは親にTabキーが押されたことを通知する機能が実装されていれば
よいのですが・・
見た限りないようなので、サブクラス化して子からWM_KEYDOWNのときに
SendMessage(hParent,WM_KEYDOWN, wParam, lParam);
とするぐらいしか方法は思いつきませんでした。
どうしたらよいのでしょうか?
0625デフォルトの名無しさん
NGNGコンボボックスで送られてこないのは、インプットフォーカスがあるのが
コンボボックスそのものではなくて中にあるエディットだから。
で、ダイアログの機能を実現したいなら
IsDialogMessageとかモードレスダイアログで検索しなさい。
0626デフォルトの名無しさん
NGNG0627623
NGNGセットしてます
0628デフォルトの名無しさん
NGNG起動するとポップアップメニューが出て、項目を選択すると
それに応じた作業をこなした上で終了する、というツールを作りたいんです。
ポップアップメニューだけを表示させるにはどうしたらいいのでしょうか?
今は試しに何もしないウィンドウをCreateWindowしておいて
そのWM_CREATEのところでCreatePopupMenuしてメニューを作成して
TrackPopupMenuした上でPostQuitMessageしてみてるんですが、
当然一瞬何もしないウィンドウが表示されてから終了します。
ウィンドウをSW_SHOWしないでおくと、メニューがカーソルと重なっただけで消えてしまって
メニューを選択できません。
何か上手い方法はないものでしょうか?
0629デフォルトの名無しさん
NGNG冷やかしは(・∀・)カエレ!!
0631デフォルトの名無しさん
NGNGもう寝るので質問だけ。
PostQuitMessageしている理由は何ですか?
しなければいいのでは?と思うので…
0632デフォルトの名無しさん
NGNGメニューを選択して、それに応じた作業をこなし次第終了させたいからです。
0633デフォルトの名無しさん
NGNG0x0か1x1のサイズで作れば見えないんじゃない?
0634デフォルトの名無しさん
NGNGDLL側のcppファイルに
declspec(dllexport) int flag;
を宣言して、
EXE側のヘッダファイルに
declspec(dllimport) int flag;
を宣言して、cppにインクルードしました。
EXE、DLLの両方で共通のフラグを使おうと思ったのですが、
デバッガでトレースすると、EXE側で1に設定したflagが
DLL側の関数に入るとflagの値が0になってしまいました。
フラグのメモリアドレスを見ると、DLLとEXEで異なっていて
別領域が取られているようです。EXE、DLLの両方で共通の
同じフラグを使用するには、どのようにexport,importをすれば
よいのでしょうか?長くなってすいません。
0635デフォルトの名無しさん
NGNGフラグ用のインターフェース関数を用意して
exeとdllでのフラグのやり取りはその関数経由で行えば良いのでは?
0636デフォルトの名無しさん
NGNG[exe]
#include "dll.h"
int main(void)
{
printf("%d\n", dll_get_flag());
dll_set_flag(1);
return 0;
}
[dll]
int flag;
dll_get_flag(void){ return flag; }
dll_set_flag(int f){ flag = f; }
0637デフォルトの名無しさん
NGNG0638デフォルトの名無しさん
NGNGありがとうございます。libファイルを使って静的リンクさせる場合は
[dll]の関数の頭にdeclspec(dllexport)を宣言すればよいのでしょうか?
0639609
NGNG>>612
ありがとうございます。
なるほど。
ということは、Windowsではパスワード無しでsudoみたいなことをする方法はないって事なんでしょうか?
その辺を調べる方法はないものでしょうかねぇ
#Cygwinにsuってないんだっけ?あるとすれば、その辺のソースをみればいい?
0640デフォルトの名無しさん
NGNGsuだってsudoだってパスワードは必要だろうが。
0641639
NGNG特権をもっている場合でいいんです。
UNIXだったら、rootからsuするのにパスワードいりませんよね?(UNIXというか僕はLinuxしかしらないのですが(汗))
そこから連想して、WindowsだったらAdministratorでできないかなと想像してます。
その辺、できるのかできないのか、できるとしたらどうすればいいのか。
ちょっとでもヒントになりそうなことがあったら、ぜひお教えください。
重ねてお願いします。
0642デフォルトの名無しさん
NGNGWindowsはUNIXではなくAdministratorはrootではありません。
Administrator権限を持つユーザーでしかないです。
0643デフォルトの名無しさん
NGNGメニューから項目を選んでからクライアントエリアをクリックすると
座標値が得られ、それをメッセージボックスで表示させたいんですけど、
メニューの項目を選んだ時点で(クライアントエリアをクリックしてないのに)メッセージボックスが表示されてしまうんです。(座標値は0,0)
こういう場合どういうふうに組んだらいいんでしょうか?
0644デフォルトの名無しさん
NGNG0645643
NGNGcase WM_COMMAND:
hMenu = GetMenu(hWnd);
hdc = GetDC(hWnd);
switch (LOWORD(wp)) {
case ZAHYOU:{
case WM_LBUTTONDOWN:
pt.x=LOWORD(lp);
pt.y=HIWORD(lp);
wsprintf(szBuff,"座標値%d,%d",pt.x,pt.y);
MessageBox(hWnd,szBuff,"タイトル",MB_OK);
}
こんな感じなんですが、わかりますでしょうか・・?;}
0646デフォルトの名無しさん
NGNG死ね。
0647デフォルトの名無しさん
NGNGいいのですか?
0648デフォルトの名無しさん
NGNGわかんにゃい
何をやっているのかさっぱり
0649デフォルトの名無しさん
NGNGCreateFontして、SelectObject
0650デフォルトの名無しさん
NGNGレスありがとうございます
CreateFontして、SelectObjectを調べてみます
0651デフォルトの名無しさん
NGNGかなり深刻に勘違いしていますので、
C (C++) と Win32 APIの入門書等を見て勉強したほうがよいです。
0652デフォルトの名無しさん
NGNGこんな感じのコードでいいのかな?
// これをどっかに宣言
static bool fViewZahyou = false;
case WM_COMMAND: {
switch (LOWORD(wp)) {
case ZAHYOU: {
// 次のクリックでは座標を得る処理をする、という意味で
fViewZahyou = true;
break;
}
}
break;
}
case WM_LBUTTONUP: {
if (fViewZahyou) {
pt.x=LOWORD(lp);
pt.y=HIWORD(lp);
wsprintf(szBuff,"座標値%d,%d",pt.x,pt.y);
MessageBox(hWnd,szBuff,"タイトル",MB_OK);
fViewZahyou = false;
}
break;
}
>651 の言う通り、まず C/C++ の文法をしっかり勉強するように。
0653デフォルトの名無しさん
NGNGttp://www.microsoft.com/msdownload/platformsdk/sdkupdate/default.htm
0654デフォルトの名無しさん
NGNG0656デフォルトの名無しさん
NGNG0657デフォルトの名無しさん
NGNG外部画像ファイル(bmpやjpg)をクライアントウィンドウの背景に設定したいのですが
どのようにすればいいでしょうか?
画像 背景などで検索してもリソースから入手するものばかりです。
壁紙の位置を知る方法はレジストリの
マイ コンピュータ\HKEY_CURRENT_USER\Control Panel\Desktop\OriginalWallpaper
から取得する事はわかりましたが
その画像をクライアントウィンドウの背景にする方法がわかりません。
どうか教えてください
0658デフォルトの名無しさん
NGNGGetForegroundWindowで取ってきたHWNDをImmGetContextに
入れてもNULLしか返ってきません。自分のウィンドウがたまたま
最前列だった場合は、自分のIME制御はできたのですが、何が足
りないのでしょうか。
0659デフォルトの名無しさん
NGNG>>2
0660デフォルトの名無しさん
NGNGNT系だと他のスレッドのIME監視するの面倒じゃなかったっけ.
0661デフォルトの名無しさん
NGNGどれでしょうか?
0662657
NGNG一応>>2のリンク先を見たところ
二つがリンク切れ(一個は表示できない?)でした。
もう二つを見てみましたが
思わしきリンクが見つかりません。
どこのどれを見ればいいか、もしくは検索のヒントを教えてください
0663デフォルトの名無しさん
NGNG猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/index.html
Win32 API入門
http://black.sakura.ne.jp/~third/system/winapi/win.html
0664657
NGNG上下で分かれてて、下の一番上がWin32〜となってたので
下がWin32API用のリンクかと勘違いしてました
上も入ってるんですね。
ちなみに下のリンクは全部みましたが
思わしき内容がありませんでした。
せっかく張っていただいたWin32 API入門では
残念ながらリソースからBMPファイルを読み込む内容しか書かれていませんでした。
今から猫でもわかるプログラミングの方を読んでみます。
0665デフォルトの名無しさん
NGNGttp://www.wotsit.org/download.asp?f=bmp
ttp://www.wotsit.org/download.asp?f=lzwexp
ttp://www.wotsit.org/download.asp?f=itu-1150
ttp://www.wotsit.org/download.asp?f=png
あとはSetDIBitsToDevice/CreateDIBSection/BitBlt/StretchBltあたりだ
いまさら教えても文句はいうけどお礼は言わないよということか>メアド欄
相当に失礼な奴だな。
0666657
NGNG何か勘違いをしているようですが
教えてくれている方に向かって文句を言うほどバカではありません。
口は悪いですがリンク先を教えてもらったりしてるだけで心の中ではありがたく思ってます。
更に使用関数の名前まで教えていただき感謝のきわみです。
ありがとうございます
0667663
NGNGhttp://black.sakura.ne.jp/~third/system/winapi/win.html
・DIB ファイルヘッダ
・DIB 情報ヘッダ
・DIB ピクセルビット
・Windows DIB
・DIB の表示
http://www.kumei.ne.jp/c_lang/index.html
の方は170〜172章
WIN32APIと呼べるかどうか分からんが、
336章にJPEGなども表示できる方法がある(環境限定)
COMだが、JPEGに関してはOleLoadPictureなども使える
0668デフォルトの名無しさん
NGNG蛇足。心の中でどう思ってようが構わないが表に出すな。
付け加えれば教えてもらってるのに素直にお礼言わないってどういうこった。
頭膿んでるんじゃねぇか?
0670デフォルトの名無しさん
NGNG0672デフォルトの名無しさん
NGNG↓
0673デフォルトの名無しさん
NGNG「新しい Platform SDK」っていう表現は微妙。
単独では使えないし。
0674デフォルトの名無しさん
NGNGあんまり俺には関係ないな。
0675デフォルトの名無しさん
NGNGどういう表現ならいいんだ?
0676デフォルトの名無しさん
NGNG0677デフォルトの名無しさん
NGNG0678デフォルトの名無しさん
NGNG0679デフォルトの名無しさん
NGNG0680デフォルトの名無しさん
NGNG改めてどうぞ
↓
0681デフォルトの名無しさん
NGNG以上
0682デフォルトの名無しさん
NGNG0683デフォルトの名無しさん
NGNG0684デフォルトの名無しさん
NGNG0685デフォルトの名無しさん
NGNG新しいSDK=新しくするSDKって意味じゃないべ。
新しく出たSDKって意味だべ。
0686デフォルトの名無しさん
NGNG頭おかしいのか?
0687デフォルトの名無しさん
NGNG0688デフォルトの名無しさん
NGNG0689デフォルトの名無しさん
NGNG0690デフォルトの名無しさん
NGNG0691デフォルトの名無しさん
NGNGhttp://msdn.microsoft.com/library/en-us/winprog/winprog/functions_by_release.asp
http://msdn.microsoft.com/library/en-us/win9x/append_4cs3.asp
あーでもXPSP2はまだ入ってないな
0692デフォルトの名無しさん
NGNG0693デフォルトの名無しさん
NGNGどうも探しても見つかりません。
0694デフォルトの名無しさん
NGNG0695デフォルトの名無しさん
NGNGおまえ神だろ
0696デフォルトの名無しさん
NGNG0697デフォルトの名無しさん
NGNGhttp://www.windows-spy.com/
とかは?
0698デフォルトの名無しさん
NGNG最大化できなくする方法(最大化ボタンを無くす)を教えてください。
WNDCLASS.styleにCS_*だと思うのですが、見つかりませんでした。
0699デフォルトの名無しさん
NGNG0701デフォルトの名無しさん
NGNGVC++持ってないので…
>>697
ありがとうございます
0702デフォルトの名無しさん
NGNGもって、WM_MOUSEMOVEが特定の位置にきたらseticonを使用して変えよう
としたのですがうまくいきません。
ステータスバーをcreatewindowexでつくったので、その前にWNDCLASSEX
にステータスバーを処理するためのメッセージ処理関数を登録して
RegisterClassExを実行しました。RegisterClassExの戻り値は0なので
うまくいくはずはないのでしょうが、そもそもこのような手順であってい
るのでしょうか?
0703デフォルトの名無しさん
NGNGステータスバーというと msctls_statusbar32 の事かな。
もしくは STATUSCLASSNAME か。ってか、同じだけど。
で、メッセージ処理関数を置き換えるという発想は正解。
でも方法は間違い。次のようにする事。
// msctls_statusbar32 オリジナルのプロシージャを退避させておく変数
static WNDPROC original_procedure = 0;
static LRESULT CALLBACK my_statusbar_procedure (HWND .. /* 略 */ ..) {
/* ここでやりたい事をすればよい */
/* 重要。自分で処理しないメッセージは必ず元のプロシージャに任せる事! */
return CallWindowProc (original_procedure, hwnd, msg, wParam, lParam);
}
HWND create_my_statusbar() {
HWND statusbar = CreateWindowEx ( /*略。普通にステータスバーを作る */ );
/* こうやってメッセージ処理関数を置き換える */
original_procedure = (WNDPROC)SetWindowLong (
statusbar, GWL_WNDPROC, (LONG)my_statusbar_procedure,);
return statusbar;
}
0704デフォルトの名無しさん
NGNGそれ、Win9x系では死ぬほど重いんだよな…。
0706デフォルトの名無しさん
NGNGスレッドセーフなわけではないですよね?
0707デフォルトの名無しさん
NGNGWriteFile はどう呼び出してもスレッドセーフだよ。
呼び出し側のコンテキストもOS内のステータスも壊れないし、
書いただけちゃんと書かれる。
書き込みを同期化してくれるわけではないけど(先方がデータグラム型ソケットの場合を除く)。
0708デフォルトの名無しさん
NGNGそれのタイマーを0にするAPIがあるなら教えてください。
0709デフォルトの名無しさん
NGNGないと思う。
0にしてどうするの?というか、なぜ0にしたいの?
0710708
NGNG例えば、ゲームのカーソルを0.5秒単位に点滅させる処理で、
0.5秒毎にWM_TIMERが発生しますが、
ユーザーが十字キーを動かしたときに、時間を0に戻して、
次からの点滅のタイミングを同じにしたいのです。
KillTimerした後、すぐSetTimerすればそれができると思うのですが、
APIがあればそちらの方がいいかなと。
0711デフォルトの名無しさん
NGNGウィンドウに関連付けてるなら、出来そう
以下、MSDNより抜粋
>hWnd パラメータで NULL 以外の値を指定し、
>hWnd パラメータで指定したウィンドウに、
>nIDEvent と同じ値のタイマが既に割り当てられている場合、
>新しいタイマは既存のタイマを置き換えます。
>SetTimer 関数がタイマを置き換えた場合、
>そのタイマはリセットされます。
>したがって、現在のタイムアウト時間が経過すると
>1 つのメッセージが送信されますが、
>それまでのタイムアウト時間は無視されます。
0713デフォルトの名無しさん
NGNG0714デフォルトの名無しさん
NGNG711を読む限りkillしないてもいいんでない?
0715デフォルトの名無しさん
NGNGgethostbyname(), socket(), connect(), send(), recv(), close()
MAPI を提供するメーラがあって、そのアカウントが使いたいなら MAPI 経由でもいいかも。
0716デフォルトの名無しさん
NGNG同様にタブを自前で描画する方法はありませんか?
0717デフォルトの名無しさん
NGNGあ、それ系のAPIでやるんですか、ありがとー
0718デフォルトの名無しさん
NGNGuxtheme
嫌ならボタンの上半分とかでそれらしく描画するしかないな
0720デフォルトの名無しさん
NGNGその回は描画しても無駄なのでスキップする
という処理をしたいのですが上手くいきません
どのようにすれば良いのでしょうか?今はこうやって失敗してます。
case WM_PAINT:{
MSG m;
if( PeekMessage( &m, hWnd, WM_PAINT, WM_PAINT, PM_NOREMOVE ) ) return 0;
//以下描画処理
}
0721デフォルトの名無しさん
NGNG0722デフォルトの名無しさん
NGNG0723デフォルトの名無しさん
NGNG0724デフォルトの名無しさん
NGNGレスありがとうございます。まとめてくれるんですね。道理で上手くいかないわけだ。
ヘルプ見ても該当の記述が見つからないので、重ねてすいません。
WM_MOUSEMOVEとかならば、この方法で良いのでしょうか?
0725デフォルトの名無しさん
NGNG0726デフォルトの名無しさん
NGNGHMENU menu1=CreateMenu();
HWND hwnd1=CreateWindowEx(..., menu1, ...);
HMENU menu2=CreateMenu();
HWND hwnd2=CreateWindowEx(..., menu2, ...);
と二つのオーバーラップウインドウを作った場合、どうも最後に作られたメニューは破棄されるけど
それ以前に作ったメニュー(この場合はmenu1)は破棄されないようなのです。
以下3, 4...と作っていくと、menu2のDestroyMenuが成功するようになります。
何か大きなミスをしているような気がするのですが、ウインドウメニューと破棄の関係について
正確に掛かれているページってどこかに無いでしょうか?
0727デフォルトの名無しさん
NGNG分かってるか?
0728デフォルトの名無しさん
NGNG明示的に閉じたウインドウ以外は、破棄される前にDestroyMenuが呼ばれてるのかな
だからDestroyMenuが成功してるんだと思う。
0729デフォルトの名無しさん
NGNGこのスライダーコントロールを別のWINアプリを作りたいなあと思っています。
このときにスライダーコントロールのハンドルをどうやったら取得できるのでしょうか?
0730デフォルトの名無しさん
NGNG自分の書いた文章読んで意味わかるか?
0731デフォルトの名無しさん
NGNG{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
上ので、WndProcはどこで呼び出しているのでしょう。
0732デフォルトの名無しさん
NGNG0734デフォルトの名無しさん
NGNGなんかなぞなぞみたいでつ
0735デフォルトの名無しさん
NGNGスルーですね。
0736デフォルトの名無しさん
NGNGWH_CALLWNDPROCRETを使ってWM_COPYを見ていればいいんですか?
0737デフォルトの名無しさん
NGNG0738デフォルトの名無しさん
NGNGイベントが発生すると、GetMessageでそれを得て、
TranslateMessageで使いやすく翻訳し、
DispatchMessageでWndProcを呼び出し実行する、
という感じでいいのでしょうか。
また、TranslateMessageとDispatchMessageの引数が、
constポインタなのはなぜでしょう。
TranslateMessageはGetMessageで得たものをポインタで渡し、
中で書き換えるとイメージしたのですが、
constだと書き換えられないような気がするのですが。
また、DispatchMessageは実行するだけだから、
書き換える必要が無く、ポインタで渡す必要が無いと思うのですが。
0739デフォルトの名無しさん
NGNGWM_(SYS)KEYDOWNからWM_(SYS)CHARを生成したりしてキューにポストする。
書き換えちゃったらKEYDOWN系がこなくなる。
0740デフォルトの名無しさん
NGNG0741738
NGNG>>739
そういえば、キーを押した時、2回メッセージが来ているような
気がする事があったのですが、もしかしたらそれかもしれません。
>>740
なるほど。
自分は、引数がNULLでも動く関数の時は、constポインタにする事が
ありますが、そういう利点もあったのですか。
0742デフォルトの名無しさん
NGNG> TranslateMessageで使いやすく翻訳し、
TranslateMessageはただWM_KEYDOWN/UPなどからWM_CHARなどのメッセージを作り出しているだけだから、それじゃ間違い。
WM_CHARなどのメッセージが要らなければ、TranslateMessageを呼ぶ必要も無い。
> TranslateMessageはGetMessageで得たものをポインタで渡し、中で書き換えるとイメージしたのですが、
そうじゃない、PostMessage(それかWin内部でごにょごにょ)で送り出すので書き換える必要は無い。
> 書き換える必要が無く、ポインタで渡す必要が無いと思うのですが。
構造体を直接関数の引数にすると、いちいちコピーする時間が掛かる。
なので代わりにポインタ(あるいは参照)にするのごく一般的に行われる。(sizeof (MSG)は28だがsizeof (MSG*)なら4)
その場合、通常の値渡しのように関数に渡した変数の中身が変わらないことを表明するためにconstポインタ(あるいはconst参照)にするのは常識。
0744デフォルトの名無しさん
NGNG0745デフォルトの名無しさん
NGNG0746デフォルトの名無しさん
NGNG0747デフォルトの名無しさん
NGNG話題が分散するだけで、あんまり意味ないような感じがするけどどうでしょ。
しかも物凄く過疎な予感もするし。16->32みたいにそんなに違うわけでもないし。
0748デフォルトの名無しさん
NGNG書き添えてくれるのならいいけど、ここじゃルール守るヤツの方が
少数だからなぁ。
0749デフォルトの名無しさん
NGNG0750デフォルトの名無しさん
NGNG0751デフォルトの名無しさん
NGNG0752デフォルトの名無しさん
NGNG今までほとんど無いんだから今のところ現状維持で。
0753デフォルトの名無しさん
NGNG0754デフォルトの名無しさん
NGNG0755デフォルトの名無しさん
NGNGパラメータの型としてSIZE_Tとなってるところが、全てDWORDです。
そろそろ新しい版を買えことかな。AdvancedWindows3edです。
0756デフォルトの名無しさん
NGNG0757デフォルトの名無しさん
NGNG両方通知されるマウスがある。
ハード依存なのか、それともドライバなのかなぁ。
何か情報ないでしょうか?
0758デフォルトの名無しさん
NGNG0759757
NGNG同時押し時にホイールとして機能するようになってたよorz
0760デフォルトの名無しさん
NGNG以下のプログラムのような感じなのですが。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1086258254&res=6
うまく言えないのですが、タイトルの時は、タイトルの処理だけに当たり
フィールドの時は、フィールドの処理だけとしたいのです。
普通のやり方だと、グローバル変数、static変数を
使わなければいけない所もでてきてしまいます。
手続き型っぽくしたいのです。
0761デフォルトの名無しさん
NGNG注文したカツどんがすぐ出てくるとは限らないぞ
0762デフォルトの名無しさん
NGNGゲーム進行用のスレッドを作ってそこであれこれやるのじゃだめか?
0764デフォルトの名無しさん
NGNGDEPなんて影も形もなかったころから将来PAGE_EXECUTEをサポートする
プロセッサが現れるかもしれないからちゃんとVirtualProtectしておけと
書いてありましたね。
0765デフォルトの名無しさん
NGNG0766デフォルトの名無しさん
NGNGあれはいい本だ。ところで
ttp://www.wintellect.com/about/instructors/richter/prog_apps.aspx
に第4版の訂正が載っていて、
「DLL の注入と API フック」の章では
オリジナルでは単に WriteProcessMemory だけだったが、
VirtualProtect で PAGE_EXECUTE_READWRITE を設定しろと書いてある。
この訂正の理由が DEP 関係なら理解できるんだけど
> The sample fails to hooks some applications.
「一部のアプリで失敗する」っていう理由がよく分からない。
同じ環境でも成功するアプリと失敗するアプリがあるの? なんで?
0767デフォルトの名無しさん
NGNGEDITとかに好みのフォントを設定した後、最適な高さにリサイズしたいのですが、
GetTextMetricsではフォントグリフの高さしか取得できず、ウインドウをその高さにリサイズすると
当然文字が欠けてしまいます。
0768デフォルトの名無しさん
NGNG0769デフォルトの名無しさん
NGNGGetWindowRect()
GetClientRect()
ClientToScreen()
これらを使えばスタイルが変わってもプロシージャの使いまわしが化膿。
0770デフォルトの名無しさん
NGNG0771デフォルトの名無しさん
NGNGこれを使用したいのですが、なぜかコンパイルエラーに
なってしまいます。ヘッダにしっかりと定義の記述があるのですが、
「error C2065: INPUT' : 定義されていない識別子です。」
のようなエラーになってしまいます。user32.libなども、
読み込む設定になっています。
どうすればよいでしょうか?
環境
winxp vc6.0 sp6
0772デフォルトの名無しさん
NGNG#if (_WIN32_WINNT > 0x0400)
0773デフォルトの名無しさん
NGNG_WIN32_WINNT
0774773
NGNG0775デフォルトの名無しさん
NGNGそれでも、ダメなようです。
変数の.を打ち込んだときに、リストは出てきます。
(インテリジェンス機能?)
それでも、コンパイルが通らないんです…。
0776デフォルトの名無しさん
NGNGヘッダのインクルードより前に#defineしてるか?
0777760
NGNGHandleTitleの所のメッセージチェックの所に、
DispatchMessage(&msg);を書いて、
WndProcにif(game == Title)を条件に、
そのメッセージチェックを書けば同じ処理になると思うのですが。
DispatchMessageが、ただWndProcに行くだけと考えているので
そう書いたのですが、他にも何か処理をしているのでしょうか。
0778デフォルトの名無しさん
NGNGIsDialogMessage(hwnd)をダイアログの数だけ実行するのですか?
それともNULLとかを指定すれば自動ですべてのウインドウに適用されるのでしょうか?
0779デフォルトの名無しさん
NGNG世の中にはメッセージキューにたまらないで直接WndProcへ行くメッセージもあるからな。
(つまりGetMessageからじゃ取り出せない)
0780デフォルトの名無しさん
NGNG>777
きみはゲームで使うウィンドウを作るために RegisterClass(Ex) でウィンドウクラスを登録するだろうから
どうしても WndProc コールバック関数を書く必要がある。
それに上等なゲームなら欠かせないいくつかのメッセージは SendMessage() で送られて来る。
それらはメッセージキューにポストされるものではなく,つまり GetMessage()〜DispatchMessage() を
通過せず直接コールバックを呼ぶもののはず (だよね?少なくとも,今の時点では致命的な間違いではないはず)。
例えば WM_MOUSEACTIVATE,WM_CAPTURECHANGED,WM_ERASEBKGND,それに WM_(QUERY)ENDSESSION。
(他にも SendMessage で送られて来るものは多数)
マルチタスク環境にてユーザに親切なゲームを作りたいなら,これらのメッセージも的確に処理するべき。
0781デフォルトの名無しさん
NGNGゲームで使う色々な変数だが,グローバル変数を使うのがいやなら
構造体にまとめて SetWindowLong() で GWL_USERDATA にでも入れておけばいい。
WndProc の中で GetWindowLong() で取り出すんだ。
入れるタイミングは,そうだね,WM_NCCREATE でどうだ。
if (msg == WM_NCCREATE) {
SetWindowLong(hwnd, GWL_USERDATA, (LONG)new GameData());
return 0;
}
破棄するのは WM_DESTROY でもいいだろう。
if (msg == WM_DESTROY) {
GameData *gameData = (GameData *)GetWindowLong(hwnd, GWL_USERDATA);
delete gameData;
SetWindowLong(hwnd, GWL_USERDATA, 0); // 安全のためにな
PostQuitMessage(0);
return 0;
}
GameData が,必ず適切に処分しないといけない特殊なリソースを使っているならば
WM_ENDSESSION でも delete gameData; を忘れてはいけない。
少なくとも WM_DESTROY は送られて来ないからね。
(確か WM_CLOSE すらも送られて来なかったような。。。)
0782デフォルトの名無しさん
NGNG神!!!!!!!!
…というより、こんな基本的なことを忘れていたモレは
いったいなんなんだろうかと小一時間。
マジで反省してきます。スレ汚しすいません。
0783760
NGNG>>779
そうだったのですか。それだと、あのやり方だとダメですね。
>>780
同じく、あの方法だと、より詳しく知っていないと危険ですね。
所で思ったのですが、myProg.lpfnWndProcをTitleの時ならTitleWndProc、
Fieldの時ならFieldWndProcと、ゲームルーチン切り替え時に一緒に変えれば、
コールバック先を変える事が出来るのでしょうか。
それなら、TitleWndProcにタイトルの事だけ書くことが出来、
自分の考えに近いものが出来そうなのですが。
>>781
知らないやり方でした。勉強してみます。
ただ、うまく組めば、キャラクターのHPとかのデータを、
ローカル==autoで置いて置けるので、何か悔しかったもので。
アイテムのデータとかは、グローバル、staticになるので、
その方法が使えそうです。
0784デフォルトの名無しさん
NGNGミュートのプログラムの作り方がよくわかりません。
教えてください
0785デフォルトの名無しさん
NGNGテンプレに「Win32APIとはなんぞや」ぐらい書いてあった方が良いかもね.
このページへの直リンでもいいけど.
http://black.sakura.ne.jp/~third/system/winapi/win1.html
0786デフォルトの名無しさん
NGNG0787デフォルトの名無しさん
NGNGリンク張らなければいいだけでしょ
0788デフォルトの名無しさん
NGNG0789デフォルトの名無しさん
NGNG0790デフォルトの名無しさん
NGNG> 所で思ったのですが、myProg.lpfnWndProcをTitleの時ならTitleWndProc、
> Fieldの時ならFieldWndProcと、ゲームルーチン切り替え時に一緒に変えれば、
> コールバック先を変える事が出来るのでしょうか。
SetWindowLongPtr(hwnd, GWLP_WNDPROC, FieldWndProc);でできる。
0792デフォルトの名無しさん
NGNGいやなら見なきゃいいだけでしょ。
0793デフォルトの名無しさん
NGNGURLからメモリに取り込むところがわかりません。
CreateFileもURLでは無理みたいなので、どうしたらいいでしょうか。
0794デフォルトの名無しさん
NGNGテンポラリファイルを作らないでファイルマッピングを行う場合最大サイズを指定しなければなりません。
状況によってこのサイズが極端に変わるのですが、
目いっぱい大きくとって4Gとか指定してもいいのでしょうか。
0795デフォルトの名無しさん
NGNGttp://nienie.com/~masapico/api_sample_inet04_c.html
0796デフォルトの名無しさん
NGNG宣伝必死ですね
0797デフォルトの名無しさん
NGNG「文字列」という単語をマウスで前方からゆっくり選択していくと「文」「字列」という風に、
1文字づつ選択されずに一気に2文字や3文字が選択される事がよくあります。
これはリッチエディットのバグ(仕様)なんでしょうか?
それとも何か設定を与えると回避できるものなんでしょうか?
ワードパッドでも確認できます。
0798デフォルトの名無しさん
NGNG0799デフォルトの名無しさん
NGNGIEでもなるよね。イライラする。
0800797
NGNGエディットコントロールを拡張するか自作するか。
いや、今日はもう寝よう…。
0801デフォルトの名無しさん
NGNG方法はありそうな気がする
0803デフォルトの名無しさん
NGNGチェックボックスがチェック/解除されたタイミングを知るにはどうすればいいのでしょうか?
WM_NOTIFYにそれらしいメッセージは飛んできませんでした。
WM_NOTIFYのNM_CLICK等を拾って自分で変更があったかを確認してやるしかないのでしょうか?
0804797
NGNGECO_AUTOWORDSELECTION
リッチエディットにこのオプションフラグが設定されているとテキスト選択に不具合が出るようです。
フラグが立っているようならばフラグを下げてやればいいですね。
SetOptions(ECOOP_AND, ~(DWORD)ECO_AUTOWORDSELECTION);
>>801
ヒントありがとうございました。
0805デフォルトの名無しさん
NGNGhttp://www.codeproject.com/listctrl/listcheckbox.asp
WM_NOTIFYでLVN_ITEMCHANGEDが通知されるのを捕まえる
0807デフォルトの名無しさん
NGNGミュートのプログラムの作り方がよくわかりません。
0808デフォルトの名無しさん
NGNG0809デフォルトの名無しさん
NGNG0810デフォルトの名無しさん
NGNGスタンバイ移行の要求をした場合に、それを止める方法は無いの
でしょうか?
電源プロパティのアイドルタイマーによるスタンバイ移行は、
SetThreadExecutionStateで止めることができるようですが、
↑のスタンバイ要求は止められないようです。
どなたか教えていただけないでしょうか。
0811デフォルトの名無しさん
NGNG0812デフォルトの名無しさん
NGNGありがとうございます。WM_POWERBROADCASTに関連したMSDNを
見てきてがんがります。
0813デフォルトの名無しさん
NGNGGUID_CLASS_INPUTの定義がどこにあるのか判らず、困っています。
誰か教えてください。
0814デフォルトの名無しさん
NGNG0815デフォルトの名無しさん
NGNGその「ぐぐる」の使い方は始めてみた
0816デフォルトの名無しさん
NGNG0817813
NGNG残念ながら見つかりませんでした。
Webでもググってみたんですが情報が全然ありません(辛うじてDDK関連の情報があるのみ)。
悲しいのでしばらく寝込みます。
0818デフォルトの名無しさん
NGNGうん、DDKに入ってるヘッダ(hidclass.h,poclass.h)に定義されてる
0819デフォルトの名無しさん
NGNGDDKのhidclass.hにて(゚∀゚)ハケーソ!!
0820デフォルトの名無しさん
NGNGっていつ描画されるんですか?
0821デフォルトの名無しさん
NGNG0822デフォルトの名無しさん
NGNGSetScrollInfoだと端っこは再描画してくれません。
0823デフォルトの名無しさん
NGNGぜんぜん検証してないテケトーな意見だが、
ウィンドウごと再描画すればいいんじゃね?
0824813
NGNGありがとうございます。しかしDDKってWebで配布してないんですよね…
ググったときにヘッダファイルが引っ掛かっていたので、それを使ってみることにします。
0825デフォルトの名無しさん
NGNGnewや__try __catchやSTLも使えないんでしょうか。
だめな場合wsprintfの1024バイトの壁を破る簡単な方法ってありませんか。
_beginthreadexにするのは他人が作ってる部分なので無理なんです。
0826デフォルトの名無しさん
NGNGs(n)printfするためだけにもう一個自分で_beginthread(ex)してスレッド作れば?
0827デフォルトの名無しさん
NGNG>だめな場合wsprintfの1024バイトの壁を破る簡単な方法ってありませんか。
1行ごとに処理するとかなんとかして、そこを改善した方がヨサゲ・・・
0828デフォルトの名無しさん
NGNGCreateThread()を使ってるアフォに_beginthreadex()を使うよう説得する。
CreateThread()と_beginthreadex()は引数の並びが同じなので、変更は楽。
(ただし、スレッドに渡す関数の型が違うのでキャストする必要がある。)
この仕様変更を受け入れるよう、きつく催促することをお薦めする。
0829デフォルトの名無しさん
NGNGどうあってもだめな場合は、Shlwapi.hの関数群を使う。
MSDNをStrCpy StrCat などでググってみれ。
ん?それ以前に、wnsprintf()は本当にstdio.hのを使ってるのか?
同じ名前の関数が、Shlwapi.hもあるぞ。確認しる。
これらはIEのコンポーネントの一部だ。
0830デフォルトの名無しさん
NGNGスタティック変数が他スレッドからの呼び出しで破壊される等の深刻な問題ではなく、
リソースリークを起こすだけなので気にしないで使っちゃうってのもまぁありかも。
リソースが深刻なほど少ない環境や、長期間連続稼動させてる環境で使用される
のなら考え物ですが。
0831デフォルトの名無しさん
NGNG0832デフォルトの名無しさん
NGNGMCIを使ってオーディオプレーヤーを作成してますが、
ミュートのプログラムの作り方がよくわかりません。
('A`)ヒロシです…
0833デフォルトの名無しさん
NGNGもうそのネタ飽きた
0834デフォルトの名無しさん
NGNG0835デフォルトの名無しさん
NGNGCreateThread でつくったスレッドで使っちゃいけないのは、
Cライブラリ関数の中でも、
内部的にグローバル変数を使用している一部だけ。
sprintf は問題なし。new や try〜catch も使っていい。
それに、たとえ問題になる関数を使っても >>830 の通りなので、
常駐アプリでもない限り構わないんじゃない?
0836デフォルトの名無しさん
NGNGスレッド毎に独立した errno を TLS に割り当てる必要があるから、
実質ほぼ全ての C ライブラリ関数がダメだったと思う。
もちろん処理系次第だけど。
0838デフォルトの名無しさん
NGNG__try __exept __finallyで代用するのがいいんじゃないの?
0839760
NGNGC+ウィンアプリを、static、グローバル変数を使わず、
手続き型っぽく作りたいと言っていたものです。
以下のプログラムはどうでしょうか。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1086258254&res=7
>>760のでは、>>779-781で、送られてこないメッセージがある等の
ご指摘を受けたのですが、そういう致命的なエラーはあるでしょうか。
>>783>>790のコールバック先を切り替える方法では
うまく出来なく、新しい方法を考えていました。
0840デフォルトの名無しさん
NGNG外部アプリケーションへのドロップで動作を変えたいのですが
この場合って適当なクリップボードフォーマットをでっち上げるのと、
フラグかなんかで場合分けするの、どっちがいいんでしょうか?
0841825
NGNG最初は少しぐらいリークしてもいいかと思ったんですが、呼び出し毎に
新スレッド生成・終了して蓄積されていくのでちゃんと対応することにしました。
スレッド生成元を変えてもらうのは不可能なのが困りものです。
一番変更が少なそうに思いますので、sprintf系については教えていただいた
Shlwapiのを使うことにしてみます。MSDNをちょっと読んだ感じではサービスでも
使えそうですし。
0842825
NGNG__try, __except の使用はOKなのでしょうか?
libcmt.libとかをつけないとリンク時にエラーが出るので、もしかしたら
Cランタイムの一部なのかと不安だったのですが、機能的にはふつうの
ランタイム関数とは趣が異なるので大丈夫なんでしょうか。
C++のtry, catchはlibcmt.libなしでもリンクは通ったのですが、
なんか不安なのでnewやSTLも合わせて使用をやめておきます。
0843デフォルトの名無しさん
NGNGきみのような人は嫌いじゃない。
たとえば WM_PAINT の時、DefWindowProc で何をやられているか、怖いな。
そのコードだと、WM_PAINT も一度 DefWindowProc を抜けた後に
きみ自身の WM_PAINT 処理を行う事になるよね。
しかし、1度の WM_PAINT で 2 度以上 BeginPaint() をしてはいけない。
さもないと思うようには描画されない。もれは経験済みだw
# いや、DefWindowProc が何をやっているか知らないから、何ともいえないけど。
そもそも、きみのコードはすでに手続き型ではなく
普通の (でも下手に喘いでいる分、滑稽な) イベントドリブンに見える。
そんなきみに漏れが一番すすめるソリューションは、大まかにこんな感じのなんだ。
LRESULT CALLBACK
WndProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
if (g_scene == BATTLE) HandleBattle(hwnd, msg, wParam, lParam);
else if (g_scene == SELECT_ITEM) SelectItem(hwnd, msg, wParam, lParam);
return DefWindowProc(hwnd, msg, wParam, lParam);
}
HandleBattle や SelectItem の中身は >839 のコードからメッセージポンプを外したもの。
あ、HandleBattle から SelectItem を呼び出すんじゃないよ。
代わりに g_scene = SELECT_ITEM; と書く。
0844デフォルトの名無しさん
NGNG下のようにすると、ダイアログを閉じたときに、
なぜか親ウインドウが他の関係ないウインドウ(エクスプローラから起動したらエクスプローラウインドウの下、VisualStudioでデバッグするとVisualStudioウインドウの下)に隠れてしまいます。
TopMost属性をもたせてから解除する方法を試しましたが、一瞬ちらつきます。APIのDialogBoxより不自然です。
どうすればいいのでしょうか。
int WND::ShowDialog()
{
EnableWindow(m_hParent,false);
bool m_EndDialog=true;
MSG msg;
while (GetMessage(&msg, NULL, 0, 0) && m_EndDialog == true)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
Hide();
EnableWindow(m_hParent,true);
return DialogResult;
}
0845760
NGNGありがとうございます。
>WM_PAINT の時、DefWindowProc で何をやられているか、怖いな。
>1度の WM_PAINT で 2 度以上 BeginPaint() をしてはいけない。
そういえば。逆に、WM_PAINTが来た時、BeginPaint〜EndPaint、
DefWindowProc、両方ともを行なわなかった時も、おかしくなりますよね。
では、以下のはどうでしょうか。
while((getMsgRtn = GetMessage(&msg, NULL, 0, 0)) > 0)
{
TranslateMessage(&msg);
if(msg.message == WM_KEYDOWN && ...)
{
*item = selectItem;
break;
} else if(msg.message == WM_PAINT) {
・・・
} else
DispatchMessage(&msg);
}
>漏れが一番すすめるソリューションは、大まかにこんな感じのなんだ。
こういうタイプのも考えていました。
ただ、これだと、SelectItemに行くとき、HandleBattleのキャラデータが、
ローカルに置いておくと当然分からないから、グローバルでないといけません。
HandleBattleにキャラデータがあり、SelectItemへ行く時、スタックに積んで、
戻り値(参照渡し)でどのアイテムか戻ってくる形にしたいのです。
0846760
NGNG以下のならどうでしょう。DispatchMessage(WndProc)に変数(useMessage)を
渡せないから、g_useMessageとグローバル変数を使ってしまいますが。
while((getMsgRtn = GetMessage(&msg, NULL, 0, 0)) > 0)
{
g_useMessage = 0; //まだゲームルーチンでメッセージを使っていない
TranslateMessage(&msg);
if(msg.message == WM_KEYDOWN && ...) {
g_useMessage = WM_KEYDOWN;
*item = selectItem;
break;
} else if(msg.message == WM_PAINT) {
g_useMessage = WM_PAINT;
・・・ }
DispatchMessage(&msg);
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
if(!g_useMessage) return 0;
switch(msg)
{
case WM_DESTROY: PostQuitMessage(0); break;
default: return(DefWindowProc(hWnd, msg, wParam, lParam));
}
return (0L);
}
0847デフォルトの名無しさん
NGNG結局普通のWndProcの使い方に近づいていってるなw
なんかゲームのデータ保持しときたいならWindowに持たせときゃいいじゃないか。
邪推だけど、意地でもWindosAPIなんかわかってやるもんかって感じがする。
0848デフォルトの名無しさん
NGNG0849760
NGNG>結局普通のWndProcの使い方に近づいていってるなw
始めのやり方から妥協してきているんですかね。
>ゲームのデータ保持しときたいならWindowに持たせときゃいいじゃないか。
>>781のやり方に近いですかね。
ただ、Cのコンソールプログラムを長くやってきたせいか、変数のスコープとかに
すごくこだわっていて、使う事がない場所からは、見えないようにしたいのです。
>意地でもWindosAPIなんかわかってやるもんかって感じがする。
確かにそうですね。必要最低限なもの以外(メッセージの部分など)は、
長くやってきたコンソールっぽく書きたいというのがありました。
ただ、逆に言うと、猫、創作プログラミングの町などの一般的な書き方は、
C言語(標準C)のセオリーから大きく離れすぎていると思います。
0850デフォルトの名無しさん
NGNGどうしてそう思うか説明できますか?
それが出来ないのなら多分あなたの感覚の方がおかしいです。
0851760
NGNGC++は殆ど分かりません。ローベルさんの所で少しかじったぐらいです。
ただ、ググってソースを見てみた所、何となくその意味は分かりました。
うまく言えませんが、自分がコンソール風で行こうとしているのに対し、
猫とかの一般の書き方をしつつ、スコープ等も考慮するという感じでしょうか。
0852760
NGNGセオリーと大きく書きすぎたほどの事ではないかも知れませんが、
やはりstatic、グローバル変数です。標準Cでは使う事が殆ど無いですから。
一般の書き方だと、使わないと組めないと思いました。
>>845のやり方が大丈夫なら、ひとつも使わずに組めると思います。
0853デフォルトの名無しさん
NGNGいや、わかるか。
こんなことする暇がないからC++ができたんだな。
納得したぞ。
0854デフォルトの名無しさん
NGNGグローバル・スタティック変数なんて、
Windowsのプログラム書いてても滅多に使わないけどな・・・
普通は構造体を確保して、
そのポインタをSetWindowLongでウィンドウに関連付けるとかじゃね?
>猫、創作プログラミングの町などの一般的な書き方
サンプルはわかりやすくするために、
これらの手順を省いてるだけだと思われ
0855デフォルトの名無しさん
NGNGC++ならそうかもしれんが、
Cだと('A`)マンドクセからけっこう使っちゃいそう。
っていうか実際使う。
0856760
NGNGそんな致命的なエラーが出るとは思わないので。
>>853
WinSDKプログラムは、C++で作る事を前提に作られているんですかね。
>>854
>サンプルはわかりやすくするために、
>これらの手順を省いてるだけだと思われ
それもあると思います。
>>855
その通りです。
0857デフォルトの名無しさん
NGNGWS_EX_CLIENTEDGEよりもずっと薄いエッジを持ったウインドウを作るにはどうすればいいのですか
0858844
NGNG0859デフォルトの名無しさん
NGNG0860デフォルトの名無しさん
NGNG0861デフォルトの名無しさん
NGNGリソースエディタで作ったウインドウではないので、DialogBoxでは駄目なんです。
.NETのクラスライブラリのような感じなんです。
0862デフォルトの名無しさん
NGNG0863デフォルトの名無しさん
NGNGナントカSTYLE_FLAT
0864デフォルトの名無しさん
NGNGShowWindow(m_hwnd,SW_HIDE);
こうです。m_hwndはダイアログウインドウのハンドルです。
0865デフォルトの名無しさん
NGNGだったらDialogBoxIndirect使え。
.NETのクラスライブラリみたいなやつとかどうでもいいことは言うくせに
肝心の関連しそうな周辺コードを一切出さないのは何のつもりだ?
0866デフォルトの名無しさん
NGNGもし仮に年号が新たに変わった場合、
GetDateFormatでその新しい年号を取得するためには、
どのようにすれば良いでしょうか?
0867デフォルトの名無しさん
NGNGWindowsUpdateするしか無いんじゃないの?
0868デフォルトの名無しさん
NGNGHide() するまえに親を Enable するとどうなります?
0869デフォルトの名無しさん
NGNGSetWindowPos(m_hwnd, NULL, 0, 0, 0, 0,
SWP_HIDEWINDOW | SWP_NOACTIVATE |
SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER);
0870デフォルトの名無しさん
NGNGすみません本当にすみません
>>868
ご助言ありがとうございました
>>869
そうやるとできました。本当にどうもありがとうございました。
三人称単数現在のsは?
0872デフォルトの名無しさん
NGNGCreateWindowExでWS_EX_CLIENTEDGE付きのスタティックコントロールを作って
みたのですが、この境界線の幅というのは、どうやって変えれば良いのでしょう
か?
具体的には、もっと細い境界線にしたいのですが、宜しくお願い致します。
0873デフォルトの名無しさん
NGNG0874デフォルトの名無しさん
NGNGその言い方、あなたは抄録か忠一ですね
0875872
NGNG数スレ前まで遡ってみましたが、回答らしきものが見当たらなかったので質問
したのですが…
0876デフォルトの名無しさん
NGNG>>863のことじゃない?
0877デフォルトの名無しさん
NGNG名前が思い出せません。どなたかご存知内でしょうか?
0878デフォルトの名無しさん
NGNG0879デフォルトの名無しさん
NGNGhttp://www.google.co.jp/search?q=%E3%83%9E%E3%82%A6%E3%82%B9+%E7%A7%BB%E5%8B%95%E7%AF%84%E5%9B%B2+%E5%88%B6%E9%99%90&hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&sourceid=mozilla-search
0880デフォルトの名無しさん
NGNGC#から任意のプログラムを最小化したりタスクバーから消したいのですが、
SendMessage(hWnd, Msg, wParam, lParam);をC#で書き直して
こんな感じでmyProcの内容を最小化させることが出来ました。
WindowsAPI.SendMessage(myProc.MainWindowHandle, WindowsAPI.WM_SYSCOMMAND,WindowsAPI.SC_MINIMIZE, -1);
myProcのアイコンをタスクバーからも消したいんですが、そのための関数はどんなものがありますか?
CreateWindowExというのを見つけましたが、これはWindowを作るときのものだから、僕の目的では使えませんよね。
0881デフォルトの名無しさん
NGNG0882872
NGNGええっ
ぐぐることも出来無いようなレスが回答だったんですか…
本当に分からなくて困ってるんですが、もうすこしヒントを頂けませんか?
0883デフォルトの名無しさん
NGNGいくらでもたたいてくれて結構です
画像を加工して保存がしたいのですが
HDCで保持するのとDIBデータを扱う2つがあるのですが
この2つについての、違いをご教授願いたいのです。
0884デフォルトの名無しさん
NGNGDIB も DDB も HDC で管理する点では同じだ。
読み込みは LoadImage でできるが、書き込みは自分で関数書くことになる。
詳しく説明しようとすると、ここにまんまソース晒すことになるんでやめとくが、
キーワード出しとくから、がんばってみな。
BMP形式のファイルは先頭から
BITMAPFILEHEADER 構造体
BITMAPINFOHEADER 構造体
色値の配列(型は色数によって異なる)
という形式になっている。
ファイルの取り扱いはAPIならCreateFile、MFCならSerializeかCFileだ。
0885デフォルトの名無しさん
NGNGCreateWindowExにWS_EX_TOOLWINDOWを渡すのは、
外部から操作するのには使えなさそうだから、別の方法を教えてください
ということです。お願いします。
0886デフォルトの名無しさん
NGNG0887デフォルトの名無しさん
NGNGSetWindowLongで出来るのかどうかオレにはわからない。
あとはアレだな、最小化アイコン専用のウィンドウを
つくって、本物ウィンドウと連携させるとか。
0888デフォルトの名無しさん
NGNGどうゆう手順になりますか?
0889デフォルトの名無しさん
NGNGあなたの定義で、親ウインドウとは?
0890デフォルトの名無しさん
NGNGそういうことが出来る造りにしておく。
他プロセスのウィンドウの話なら、基本的に無理。
0891デフォルトの名無しさん
NGNG最初に開いたウィンドウのことです。
>>890
自プロセスでやるならどういった準備が必要になるのでしょうか?
0892デフォルトの名無しさん
NGNGつまり、あなたのアプリではあらゆるウインドウが全て
WM_DESTROY に対して PostQuitMessage を発行するわけか
0893デフォルトの名無しさん
NGNGGoogleだけが調べる方法じゃないでしょ。
WS_EX_CLIENTEDGEが定義されているヘッダファイルから、なんとかFLATを
GREPするとか。
0894デフォルトの名無しさん
NGNGMutexの名前をシステム内で一意にする方法はありますか?
適当な名前を引数にすると他のアプリと衝突しそうな気がするんですが・・
0895デフォルトの名無しさん
NGNG0896デフォルトの名無しさん
NGNGみんながそうしているならそれでいいんだがね
0897デフォルトの名無しさん
NGNG0898デフォルトの名無しさん
NGNGもしかして隠しカラムを設定できますか?
MSDN見ても書いてないから無理なのかなぁ
LVCOLUMNのcxに0設定して擬似的にするしかありませんね?
0899デフォルトの名無しさん
NGNG0900デフォルトの名無しさん
NGNG>>896
0901デフォルトの名無しさん
NGNGっていう質問と似てるな。
0902デフォルトの名無しさん
NGNG0903デフォルトの名無しさん
NGNG「ぬるぽ....」でもなんでもOK。バックスラッシュ以外はすべてOK。
Windowsは内部的には文字列リソースをUnicodeで持つので、
海外のアプリと衝突することはかなり回避できるはずだ。
0904デフォルトの名無しさん
NGNGこれと
>海外のアプリと衝突することはかなり回避できるはずだ。
これは何の関係があるの?
0905デフォルトの名無しさん
NGNG何を指定したって確率の問題じゃないですかー。
0906デフォルトの名無しさん
NGNGと同じ。偶然の一致を避けるような工夫をできるだけするしかない。ながーい文字列
とか、exe のフルパスもかなりいい感じだと思うけどな
0907デフォルトの名無しさん
NGNG抜け道が簡単に出来ちゃうからダメだと思うよ。
大型アプリなら問題ないかもしれないけど…
0908デフォルトの名無しさん
NGNGセキュリティーに関連するような大事なハンドルを
デフォルトSID(=NULL)で作成する時点で駄目駄目でしょ。
親プロセスが全ての重要ハンドルを作成し、
明確に子プロセス以外アクセスできないようにするのが普通だと思う。
0909デフォルトの名無しさん
NGNGMutex作る時に使うオブジェクトの名前が違う事になるから、
違うハンドルを作ってしまうって事では?
これについてはセキュリティ関係ないのでは…?
0910デフォルトの名無しさん
NGNGそうだね。VBのだとそういう振る舞いをするんだそうだ。
lihvwdghwelkihvwrhweruhakjabhojwejjw
こういう文字列を使った場合、偶然に一致するアプリがあるかも、って心配は
まぁ、したけりゃしてもいいけどな。
0911デフォルトの名無しさん
NGNGこっちがユニークなら、皆どうだろうと関係ないんじゃない?
0912デフォルトの名無しさん
NGNG0913デフォルトの名無しさん
NGNG「GUIDに見える(けどuuidgenで生成したものではない)文字列」とか
「他のexeのフルパスに見える文字列」
をわざわざ使うとは思えないんだけど
0914デフォルトの名無しさん
NGNGを採用して文字列を取得した場合と、まったくでたらめな文字列の場合、一致する確率が
どっちが低いか、を考えるべき。exe のフルパスの場合は、異なるアプリ間で偶然一致する
のは考えづらいけど、他のディレクトリにコピーされた同じexeが二重起動される。これは
かなり現実的な問題ではある。
0915デフォルトの名無しさん
NGNG0916デフォルトの名無しさん
NGNG0917デフォルトの名無しさん
NGNGPostQuitMessageをスローしないだけで済むのですね(^^;
どうもでした。
0918デフォルトの名無しさん
NGNG本当にまったくでたらめじゃ確かに一致しない確率は最高だろうけど
自分の別インスタンスとも一致しないから多重起動の判定に使えない。
最低でも多重起動のチェックができる程度の何らかの規則は
導入しなくてはならない。問題はその規則が(他の規則を採用している
かもしれない文字列も含めて)偶然一致する可能性をどれだけ
減らせるか。
0919デフォルトの名無しさん
NGNG何いってるの?
0920デフォルトの名無しさん
NGNGすこしは頭使えよ
0921デフォルトの名無しさん
NGNG0922922
NGNGインターフェイスを使用しています。
現段階では、ActiveXのWebBrowserから
IHTMLDocumentを取得しているのですが、
ブラウザを介さず、
URLまたはHTMLテキストから
直接IHTMLDocumentを
取得したいのですが、
そのあたりの方法があれば教えて下さい。
0923デフォルトの名無しさん
NGNG0924デフォルトの名無しさん
NGNGあっ、勘違い、すまん
0925デフォルトの名無しさん
NGNG戻り値で空いているIDが返ってきて、それを使うという事を出来るのでしょうか。
0926デフォルトの名無しさん
NGNG0928デフォルトの名無しさん
NGNGうそ教えるな。問題のスタイルはCCS_*だから、標準的なスタイルには用意されてなくて
自前で描画するしかない。
0929デフォルトの名無しさん
NGNGmfc スレでちょっと前に (レス720前後) 同じ質問にと答えた記憶あるんだけど、
あれじゃあうまくいかなかった?
0930デフォルトの名無しさん
NGNG帯域がボトルネックになっているので改善方法を探しています。
名前つきパイプやメモリマップドファイルを使うことでパフォーマンスの向上は
のぞめますか?ストリームのようにデータを転送するのでメモリマップドファイル
にする場合は何かの方法で同期を取る必要があると思います。
0931デフォルトの名無しさん
NGNG0932デフォルトの名無しさん
NGNGでも、プロセス巻通信がそんなに頻繁に起こるならいっそプロセス統合した方がよくないか?
0933デフォルトの名無しさん
NGNG.NETのCLRがインストールされているか調べるにはどうしたらいいですか?
0934デフォルトの名無しさん
NGNG漏れは VS .Net のウィザードで作ったインストーラプロジェクトの
インストーラでチェックしてるけど、API でチェックしたいってこと?
0936デフォルトの名無しさん
NGNG0937デフォルトの名無しさん
NGNGiphlpapi.hをインクルードしたいのですが
このファイルが無いようです。
どこから拾ってくればよいでしょうか?
0938デフォルトの名無しさん
NGNG>>2
0939デフォルトの名無しさん
NGNGレジストリ見るプログラムは何で作るの?
CLRに対応してるか確認するプログラムは
CLRを使う.NETじゃ書けないってことなのかな.
.NETって面倒だね.
0940デフォルトの名無しさん
NGNG0941デフォルトの名無しさん
NGNGこれをするにはどうしたら良いですか?
0942デフォルトの名無しさん
NGNG0943デフォルトの名無しさん
NGNG0944デフォルトの名無しさん
NGNG0945デフォルトの名無しさん
NGNG0946デフォルトの名無しさん
NGNG0947デフォルトの名無しさん
NGNG知っててくださいよー ヽ(`Д´)ノ ウワワーン
0948デフォルトの名無しさん
NGNG0949デフォルトの名無しさん
NGNG0950デフォルトの名無しさん
NGNG0951デフォルトの名無しさん
NGNG勧告陣に言ってくださいw
次スレ〜たてて
0952テンプレ1
NGNGBuild22:http://pc5.2ch.net/test/read.cgi/tech/1092524669/
Build21:http://pc5.2ch.net/test/read.cgi/tech/1090422324/
Build20:http://pc5.2ch.net/test/read.cgi/tech/1088140233/
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
(★は「いやー ごめんなさい。」に巻き込まれた模様
0953デフォルトの名無しさん
NGNGどこかにミラーが残ってないかな?
0954デフォルトの名無しさん
NGNG0955デフォルトの名無しさん
NGNG0956デフォルトの名無しさん
NGNG0957デフォルトの名無しさん
NGNG0958デフォルトの名無しさん
NGNG調べると、GetCursorPosをして、ClientToScreenで変換するとあったのですが、
ウィンドウの位置でなく、ディスプレイの位置のなのか、正しく調べられません。
0959デフォルトの名無しさん
NGNGそこはClientToScreenじゃなくてScreenToClientじゃないか。
0961デフォルトの名無しさん
NGNGうえにのせてもなにもメッセージをうけとったり、送信したりしないのに、
そのへんのアプリケーションのステータスバーはwm_nchittestを送信した
あとにいろいろやっています。それもどのアプリも大体共通した動作。
(メッセージのやりとりはspy++で見ました)
自分がつくったステータスバーにおいてもこれを実現するためには何を
すればいいのでしょうか?
0962933
NGNG%windir%\system32\mscoree.dllのバージョンが1.1以上だったら
.NET Framework1.1がインストールされているされていると考えてよいのでしょうか。
Win32APIな話題からそれていますが、ほかの環境ではどうなのか知りたいのでお願いします。(当方WinXPSP2)
0963デフォルトの名無しさん
NGNGサブクラス化しなさいよ
0964デフォルトの名無しさん
NGNGうpってもらえれば、>>1のテンプレに追加して書いたり
0965デフォルトの名無しさん
NGNG0966デフォルトの名無しさん
NGNG両方あるけど、Janeのログだから手を加えないとだめだよね?
0967デフォルトの名無しさん
NGNGうぷろだにうぷっただけじゃすぐ消えちゃうよ
0968964
NGNGたしか、FLASH系サイトをまとめてるやつ
>>966
HTML化したほうがよさげ。
ttp://tatsu01.at.infoseek.co.jp/
0969デフォルトの名無しさん
NGNGttp://up.isp.2ch.net/up/87d091951909.zip
当然すぐ繋がらなくなるから、誰か転載よろしく。
0970964
NGNGttp://saba.haiiro.info/uploader/file/0587.html
16
ttp://saba.haiiro.info/uploader/file/0588.html
使おうと思ってた、with2chはお休み中だった(つд`)
0971ほんたま
NGNGみなみなさまがた〜教えてくだされ〜♪
0972デフォルトの名無しさん
NGNG0973デフォルトの名無しさん
NGNGってのはどこが質問なのかな
まあ、普通はそんなことにならないので答えようも無いが。
0974ろろ
NGNGWideCharToMultiByte のオプションがまずいのではないかな?
どんなふうに呼び出しているの?
0975デフォルトの名無しさん
NGNGテキストではなくBMPにすることはできますでしょうか?
0976デフォルトの名無しさん
NGNG0977デフォルトの名無しさん
NGNGありがとうございました。頑張ってみます。
0978ほんたま
NGNGおみゃ〜よ、オナードローボタンにすればいいよ。
つくりかたは「猫でも…」に書いてあるよ。自分じわかる?
>>974
WideCharToMultiByte(CP_ACP,0,(unsigned short *)pctext,tempsize2,temptext,tpsize2-1,NULL,NULL);
というふうに呼び出しています。
pctextとtemptextはchar型の文字列です。
まずファイルのunicode文字をpctextに1字1字バイナリコピーします。
半角英数の「OK」なら「4F 00 6B 00」というのがその値です。
この時点で、pctextの内容を画面に表示してみると、unicode文字なのにすでに「ok」と表示されます。
でもこれを上のapiを使ってsift-jisに変換してからtemptextを表示すると、何故か「?」と文字化けして表示されるのです。
漢字や半角カタカナを変換する場合はまったく問題ないのですが…?
0979デフォルトの名無しさん
NGNG0980デフォルトの名無しさん
NGNG0981デフォルトの名無しさん
NGNG0982ほんたま
NGNG変換前のunicode文字列を表示すると「ok'Y・Nケ[P[」になり、
変換後のsift-jisを表示すると「?大下容子」になります。
つまり半角英数は変換前のほうがちゃんと表示され、漢字は変換後にちゃんと表示されます…?
みなみなさまがた〜教えて〜♪
0983デフォルトの名無しさん
NGNGというわけで、終了
0984デフォルトの名無しさん
NGNGtmpsize2, tpsize2 とかの実際の値はどーなってる?
WideCharToMutiByte() の返り値は?
日本語 Windows なら CP_ACP で問題はないです。
0985ほんたま
NGNGエヘ♥
0986デフォルトの名無しさん
NGNGツールバーの中にあるボタンのウィンドウハンドルはどうやったら取得できますか?
0987デフォルトの名無しさん
NGNGstd::vector<char> tmp;
tmp.resize(::WideCharToMultiByte(CP_ACP, 0, unitext, -1, NULL, 0, NULL, NULL));
::WideCharToMultiByte(CP_ACP, 0, unitext, -1, &tmp[0], tmp.size(), NULL, NULL);
もんだいねぇけど。
0988デフォルトの名無しさん
NGNGありません
0989デフォルトの名無しさん
NGNG座標で押すのかな
位置が変わったりしないんだろうか
0990デフォルトの名無しさん
NGNG0991デフォルトの名無しさん
NGNG座標からアイテムの情報が分かるから、
それを拾ってツールバーの親にメッセージを投げてやればいい。
0992デフォルトの名無しさん
NGNGそのやりかたであたってみます
0993デフォルトの名無しさん
NGNGoとkが含まれているので0x00を無視するような方法で出力してればokって文字列が
最初に見える。
そうじゃないのに「ok'Y・Nケ[P[」っていうのが見えるならファイル読み込みの部分
で「4F 00 6B 00」を「4F 6B」にしちゃってる。
0994デフォルトの名無しさん
NGNGifstreamでバイナリモードにせずに読んでるとか
そんなとこじゃないの
0995デフォルトの名無しさん
NGNG0996デフォルトの名無しさん
NGNG0997デフォルトの名無しさん
NGNG0998デフォルトの名無しさん
NGNG0999デフォルトの名無しさん
NGNG1000デフォルトの名無しさん
NGNG10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。