荒れてるのはいつものことです 気にせず質問したまえ
荒れているように見えるのはこのスレ流のコミュニケーションです。 皆様奮ってご参加ください。
〜注意〜 このスレにはロクにコード書けないのに粘着して荒らす馬鹿がいます。 ●持ちらしく執拗に連投してきますが荒らしはスルーしましょう。
ちなみに俺ではないです 俺はスレ立てるとき以外ほとんどど書いてないので
ここが荒れても、他のスレが平穏なら良いじゃないか 荒らしはこのスレの名物、いや、いつものことってことで
ゴミの引き受けか…
>>7-17 もう、いつものパターンだかよ
●丸持ち、目覚まし、悪巧み香具師、下手PG、とか居るスレだから
いつもお祭りスレとだと自覚して使うように
●丸持ち?www
というかほとんど全てのスレに荒らしいるでしょ
当然だろ 荒らすために2ch来てる基地外が複数スレに常駐して荒らしてるからな
ヽ( ・∀・)ノ● ウンコー?
24 :
デフォルトの名無しさん :2009/04/23(木) 10:23:54
25 :
24 :2009/04/23(木) 11:20:21
自己解決しました。
実行環境の文字エンコーディングを取得する関数って何ですか? UTF-8 とか windows-31j とかそういった情報を取りたいんですが。
実行環境の文字エンコーディングって何? コンパイル時に指定するからそれで確認すればいいんでね?
>>26 なんでそういう操作が必要なのか書いたほうがよさげ
>>26 GetACP
コンソールアプリならGetOEMCPのほうがいい。
AreFileApisANSIを考慮した事が無い
31 :
29 :2009/04/24(金) 18:09:50
まあ、CPを引数に取る関数はみんな、CP_ACP/CP_OEMCPを引数に取るので、 GetACP/GetOEMCPの戻り値を使う必要は滅多にないと思う。
>>30 日本語だとANSIコードページもOEMコードページも932でどうせ同じだからな。
chcp 65001 が more < file not enough memory. みたいに駄目なのは、Win32API的にはどういう原因、理由が考えられる?
SetLocale() で UTF-8 が指定できないのと一緒者ね?
UTF-8なんて面倒臭い文字コードをネイティブでサポートしてねーよって事だろ
まあWindowsはシステム的にはUCS-2までのサポートだからな
対象HWNDが表示・非表示のどちらであるかを取得するのって何かあります?
TrueTypeフォント使いたいんですけど、どうすればそういうフォント得られますか? なんか適当にEnumFontsしても300フォント中一つもTrueTypeがなかったんですが・
そういうわけなんで、EnumFontsではTrueTypeが得られなくても無理はない。
別にEnumFontsでもTrueTypeフォント列挙できるだろ
なんかTrueTypeフォントの意味を分かってなさそう 大体300フォントの全てがTrueTypeじゃ無いってどういうPCなんだよw
300フォントも入れてるってのもスゲエな
>>42 本当にありがとうございます。助かりました・・・。ちなみにうちのPCは全部デフォルト指定だとフォント数が700位列挙されました・・・。
フォントを増やしすぎると、WordやExcelでの作業中、目当てのフォントが見つからなくて困る。 HGとMSの間に100以上あるとか。 書類仕事とそれ以外で実際に使うフォントが違いすぎる。
ラスターフォントだけで300もあるのか?w
どうせ割れフォント厨だろ。
年賀状なんとかとかフォントパック買って全部突っ込むような馬鹿な真似したら300ぐらい余裕で突破するだろ
一つのファントファイルで 等幅・プロポーショナル の2つになるものと 英字のみプロポーショナル も追加して3つになるものがあるね
おまいらまとめてビジソフト板逝け
>>51 けどそういうのってみんなTrueTypeだと思うんだが。
だから割れだって Macから抜いたヒラギノとかそこら中に落ちてるだろ
まぁ持ってるフォント数を自慢するのはフォント厨の証拠
フォント多くても普段は無駄なリソース食うだけなのに
割れ厨にそんなの関係ないでしょ そもそも所持フォントを全部購入すると新車一台余裕で買える額だろうからなw
フォントや開発環境が割れようがお前らには関係の無いこと リソース食う?WordやExcelで探すのが大変?余計なお節介どうも スレ違いな突っ込みは目障りだからこれ以上レスしないように
コトワル
int CALLBACK FontProc(const LOGFONT *log,const TEXTMETRIC *tm,DWORD ,LPARAM lp){ cout << log->lfFaceName << endl; return 1; } LOGFONT log; log.lfCharSet = DEFAULT_CHARSET; log.lfFaceName[0] = TEXT('\0'); log.lfPitchAndFamily = 0; HDC hdc = GetDC(0); EnumFontFamiliesEx(hdc,&log,FontProc,(LPARAM)0,0); ReleaseDC(0,hdc); これ実行したら結構出ると思うけど
質問です SetWaitableTimerでセットしたタイマーが、時間になって休止状態またはスタンバイから復帰した時に、 どっちの状態から復帰したか知る方法はあるでしょうか?
う〜ん どうしてもGetGlyphOutline()がうまくいかない・・・サイズすら取得できない GGO_NATIVEで制御点取得したいんだが、これ呼び出すにあたっての決まりって何が必要? ・TrueTypeフォントが設定されている ・文字は((*(char*)(L"A")) << 8) | (*((char*)(L"A")+1))の形で渡している(UNICODEコンパイルのため) ・GLYPHMETRICSやMAT2は一応初期化している という感じなんですけども・・・
TrackPopupMenuでポップアップメニューを表示中にある領域から出たら ポップアップメニューを閉じたいのですが何かよい方法ないですか?
66 :
デフォルトの名無しさん :2009/04/26(日) 00:30:42
ユニコードならユニコードの1文字渡せばいいんじゃないの
なんかあった気がする
>>65 SetCaptureでマウスイベントを随時追いかけるとか?
でも、Shift+F10とかでメニュー出したときは出てすぐ範囲外とかあるんじゃないのかな
>>68 ある領域から出たらというのは少し意味が違ってました
ある別の領域に入ったら閉じたいのですがなかなかうまくいきません
SetCaptureはTrackPopupMenuを呼び出した時点で解除されてしまうようです
その領域にはいった時点で、WM_LBUTTONDOWNでも送っておけば? メニュー領域以外をクリックしたら、ポップアップメニューは破棄されるだろ。
>>70 SetCaptureが無効になるためその領域に入ったかどうかの判断ができないのでどうしたものかと考えてます
キーボードでメニュー操作する場合は想定しないのか。 とんだ糞フトだな
>>71 それが届かないのですよ
>>73 キーボードはSetWindowsHookExで何とかなるので
それを言ったらマウスもSetWindowsHookExすればいいという話ですが・・
キーボードなら、Esc押せばメニューはいつでも閉じる。 それをマウスカーソルの位置でも実現したいのだろうから、このさいキー操作云々は無関係なんだがな。 もっとも、マウスクリックでしかそのメニューが出せないのなら、糞フトというのは的を射ているが。
>>74 TrackPopupMenu の uFlags パラメータに TPM_RETURNCMD を設定しているんじゃなかろうな
メッセージ届かないんだっけ? んじゃ、GetSubMenuしたときにもらったハンドルを SetWindowLongでWNDPROC書き換えてあげればメッセージもらえるんじゃね 無理やり臭いしめんどくさいなwww
あーいまみたらHMENuだったわスルーして
>>75 そういう問題じゃない。
キーボード操作してる時にマウスが動いて勝手にメニュー閉じたら迷惑だろ。
糞フトというより糞サイトならよく見かけるな。 JavaScriptで出るメニューで、マウスカーソルが少しでも領域から外れると即閉じるやつ。 もう一度最初からメニュー階層を辿り直す羽目になる。 こういうの作る奴って本当に動作確認してるのか?って思ってしまう。
>>80 恐ろしいことに某クレジットカード会社のサイトは、同じメニューの項目間の隙間に
マウスカーソルが乗るとメニューが閉じるw
メニューを選ぶには、隙間に乗らないように素早く的確に操作する必要がある。
MessageBox(NULL,"愛が足りません",NULL,MB_OK | MB_ICONSTOP);
所詮は低脳なWeb製作会社が二束三文で作った結果だろ 下手の横好きでJavaScriptやAjaxを使って凝ってるくせに、 未だに半角で入力しろ、ハイフン省け、とアナログすぎだったりとか そんなのサーブレットのコードに数行書き加えれば済むだろうに・・・
>>76 その辺はTPM_LEFTALIGNだけにしたり色々試してみたけど変化なし
>>79 メニューバーだとポップアップを開いた状態で左右の領域に移ったらメニューが勝手に閉じるけど
それも迷惑だと言いたいの?
ちなみにSetWindowsHookEx(WH_MOUSE, (HOOKPROC)MouseProc, NULL, GetCurrentThreadId())して WM_MOUSEMOVEを捕まえて別の領域に入ったら親ウィンドウにWM_LBUTTONDOWNをPostMessageして解決しました
>>84 メニューバー上の項目間を移動した時だけな。
その時は、移った先の項目のポップアップが表示されるから、
閉じると言うよりは選択変更だな。
>>85 EndMenuがお勧め
別の領域にポップアップが被っていたら、少し出た瞬間に閉じられてしまう仕様なのかなあ。
そんなことが殆ど有り得ないほど場所が離れているなら、別にいいのだけど。
EndMenuよりWM_CANCELMODEをPostする方がいい WH_MOUSEよりWH_MSGFILTERの方がいい つーかこの程度の情報が欲しかったのか? 同じ事がそのままMSDNに書いてあるだろうに、少しは探せよ…
uruse baka
siranai nara resu suruna
>>85 別にフックしなくても、WM_ENTERIDLEを捕まえて、その領域に入ったらキーボードイベントで VK_ESCAPE を投げるという方法もある
自前でメニュー出したときはWM_ENTERIDLEは飛んで来なかった気がするが。
MSDN読めばやりたい事が全部載ってるのに半日間回答を待ち続けるなんて馬鹿だね
馬鹿で結構なのでこれからも俺の糧として働けよおめーら
>>64 文字をL'A'にしてもダメでした・・・。
GetLastError()のエラーコードは
1003 この関数を完了できません。Cannot complete this function
とのことで、何が何だか意味がわかりません。どういうことなんでしょうか?
つーかこの場合フックの方が合理的だろうけど ま、MSDNを読む気の無い奴にこれ以上何を言っても無駄だが
GetGlyphOutlineの戻り値はGDI_ERRORなのか?
>>99 my_hdc hdc = getDC(); //自前のHDC取得法。ここはちゃんと有効な値が得られている
UINT uchar = L'あ';
uchar &= 0xffff;
GLYPHMETRICS gm;
MAT2 mat = {{0,1},{0,0},{0,0},{0,1}};
DWORD size = ::GetGlyphOutline( hdc,uchar,GGO_NATIVE,&gm,0,0,&mat );
>>101 そうです。いくつもコード載ってるページ見てるんですが何が違うのかが分からない・・・
my_hdcってHDCのtypedefか?
TrueTypeフォントが正しく選択されていなかったというオチならシバく
>>103 まあ、そんな感じです。
>>104 いや、フォントはHGP創英角ポップ体というやつでちゃんと表示される文字もそれになってます。
UNICODE環境ならそのまま突っ込んじゃ駄目なの? で、おいらにも教えてください FindTextで検索ダイアログを表示して、カーソルがダイアログ上に 乗った瞬間、PeekMessageの所でアクセス違反が起こっちゃうんです どういうアホな事やってるかエスパーして貰えませんか
まずは質問の仕方を勉強しろ馬鹿
コードがアホ以外に何を言えと
>>102 エラーとは関係ないかもしれんが、そのmatおかしくね?
> MAT2 mat = {{0,1},{0,0},{0,0},{0,1}}; てか、これコンパイル通るの?
typedef struct _FIXED { WORD fract; short value; } FIXED; typedef struct _MAT2 { FIXED eM11; FIXED eM12; FIXED eM21; FIXED eM22; } MAT2, FAR *LPMAT2;
ああ、FIXEDって構造体なのか じゃあコンパイル通るし間違ってないか
最後の引数は無視される、って書いてあるから、NULL でも渡しとけば? あと、やっぱり気になるのは文字の渡し方。A か W のどっちを使ってるのかわからないけど、 そのまま渡せばいいんじゃない?
_T()やTEXT()を使わないならA/Wを明示的に指定しといた方がいいとは思うけどね
とりあえずWの方に統一してみました。結果は変わらないですが・・・
GetGlyphOutlineの前でSeledtObject(dc, font);してあるんだよね?
GetGlyphOutlineって失敗してもロクにLastError設定しないみたいだな GetGlyphOutlineW(0,L'あ',GGO_NATIVE,&gm,0,0,0) で失敗してもERROR_SUCCESSだし
ちょっとやってみたけど、適切なフォント選択したらそのまま動いたぞ とりあえずMS明朝とかで試してみ
試したけど動いた
>>118 のいうとおりフォントが怪しいと思われ
int _tmain(int argc, char* argv[])
{
_tsetlocale(LC_ALL, _T(""));
HDC hdc = ::GetDC(NULL);
HFONT hFont = ::CreateFont(0, 0, 0, 0, FW_DONTCARE, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_CHARACTER_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH, _T("MS UI Gothic"));
HFONT hOldFont = (HFONT)::SelectObject(hdc, hFont);
#ifdef UNICODE
UINT ch = L'あ';
#else
char s[] = "あ";
UINT ch = _mbsnextc((const unsigned char*)s);
#endif
GLYPHMETRICS gm = {0};
MAT2 mat = {{0,1},{0,0},{0,0},{0,1}};
DWORD size = ::GetGlyphOutline(hdc, ch, GGO_NATIVE, &gm, 0, NULL, &mat);
::SelectObject(hdc, hOldFont);
::ReleaseDC(NULL, hdc);
_tprintf(_T("%d\n"), size);
return 0;
}
メニューにコントロールを入れたいんですが 自分でウインドウ作ってメニューっぽくするしかないですか?
>>116-119 今まで本当にありがとうございました。そして、本当にすみませんでした。
WM_SETFONTだけじゃだめだったんですね・・・orz
多大な時間と労力をかけさせてしまい、申し訳ないですとも
getDC()が自前関数なのはそのなかでSelectしてるんじゃ無いのかよw
猫でもわかるのサイトとかでウインドウを表示させるプログラムを 組んだんですけど、ウインドウのウライアント領域にカーソルを持っていくと カーソルがウインドウの枠を通るときに矢印から<->こんなカーソルになったまま 戻らないんですけど、矢印にするにはどうすればいいんですか?
ウィンドウクラスを登録するときに、適当なカーソルを関連付けておく
>>125 LoadCursor( hInstance, IDC_APPLICATION )
とかやってみたんですけど、なおりません
>LoadCursor( hInstance, IDC_APPLICATION ) ってどこに書いてあったんだ? まずは猫でも〜に書いてあることをちゃんと書き写せ
ああ、間違えた、IDC_ARROWです
理屈わからなくても、まずはサイトのとおりに書けるようになれ 俺が説明したところで、また間違えて書き写して、できませんって泣きつくだけだから
猫でもはカーソルNULLにしてるじゃん
アイコンはNULLだけどカーソルは違うだろ
あ、最初の引数はNULLだったのか ありがとう!
つーかコピペを間違えるってどういう状況なんだよw
ごめんなさい、ほんとうにごめんなさい
なぜにスレスト
yirusu
ウィンドウプロシージャで case WM_COMMAND: switch(LOWORD(wp)) { case IDM_END: SendMessage(hWnd, WM_CLOSE, 0, 0); break; ..... } case WM_CLOSE: id = MessageBox(hWnd, TEXT("終る?"), TEXT("確認"), MB_YESNO | MB_ICONQUESTION); if (id == IDYES) DestroyWindow(hWnd); break; メニューから選んでWM_COMMANDとばす→IDM_ENDだからWM_CLOSEとばす →確認のダイアログがでるから「いいえ」を選択 →再び確認ダイアログがでる どうして? 調べても出てこなかったんだけど、WM_CLOSEメッセージは ダイアログ消しただけで出てくるもの? そうじゃなきゃなんで二回も出てくるのかわからない・・・
WM_COMMANDの中のswitch出た後にbreakがないからだ
ホントだ。よく気付くなw
140 :
137 :2009/04/28(火) 13:36:23
>>138 ホントだ・・・
おかげで今までのミスのとりあえずの原因が全部解決したわ
ありがとう
141 :
デフォルトの名無しさん :2009/04/28(火) 16:38:32
apiの問題以前のやつ多すぎだろJK…
>>141 まあいいじゃないですか、API使いは大きな心で構えていようよ
143 :
デフォルトの名無しさん :2009/04/28(火) 21:52:21
質問させて下さい。 FindFirstFileとFindNextFileを使って、指定したフォルダ配下のファイルを 次々にリネームしていくプログラムを作っているのですが、 一通りのファイルをリネームしても、FindNextFileがリネーム済みのファイルを 再び見つけてしまい、上手く行かないのですが使い方が間違っているのでしょうか? [コード] do { if ( (strcmp(fd.cFileName, ".") != 0) && (strcmp(fd.cFileName, "..") != 0) && !(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ) 中略 ret = rename(fullpath, sAftername); 中略 } while (FindNextFile(hFind, &fd));
一度変更したファイルを除外したいなら覚えておくか名前で撥ねる
ファイル名を全部取得した後でまとめてリネームすればいいだろ、常識的に考えて
147 :
デフォルトの名無しさん :2009/04/28(火) 22:04:10
>>144 FindCloseはループでた後に使ってます。
>>145 ,146
なるほど、、、そういうものなんですか。リネームとの相性悪いですね。
146さんの言うようにプログラム構成を考え直してみます。
ありがとうございました!
カーソルの移動をクライアント領域に制限するためにClipCursorを使うと アクティブ状態じゃないときも移動が制限されるため case WM_ACTIVATE: if( LOWORD(wParam) == WA_INACTIVE ) { ClipCursor(NULL); } else { // クライアント領域を求める処理 ClipCursor( なんたらかんたら ); } break; っていう感じにしたんですけど ノンアクティブ状態からアクティブ状態に戻すときにタイトルバーをクリックして戻すと アクティブ状態になっても普通にカーソルが移動できてしまいます なぜでしょうか
WM_ACTIVATEAPP
自己解決しました
リネームとの相性悪いんじゃなくて当然の話だろう 列挙中にデータ構造を変えるとどうなるかなんて、少し考えれば分かるかと
なんて頭の悪い質問なんだろう
頭が良ければこんな所で質問しない なぜなら、質問する前にここの住人の頭の悪さに気付くから
普通は調べてもわかんないことをここに聞きに来るんだろうけど そういう疑問はたいてい調べれば見つかるからな だからここにくる質問は ・基本だからいちいち説明されないほど程度の低いこと ・どこを見てものってないような高尚なこと この二択に絞られる気がするんだ
・他所では聞けない灰色なこと
じゃあこのスレいらないな
馬鹿となんとかは使いようだぞ
なんとかとハサミだろw
馬鹿と阿呆は使いように決まってるだろ
無能な働き者は射殺しろって誰かが言ってたよ
有能な怠け者は自分が楽をするために的確な指示を出す 無能な怠け者は与えられた最低限の命令しか実行しないが、十分だ しかし、無能な働き者は間違った命令に気づかずに延々と作業を続け、大きな損害を出す みたいな文章をどこかで読んだ気がする
だから?
有能な働き者は世界を滅亡されるきっかけを作る
で?
でっていう
どうでもいいよ
どうでもいいならいちいち書くなよ
普通に考えて気づいてないやついなくない?
いたんだろ
どうでもいい
チラシは日記の裏に書いてろクズ
ここはみんなの日記帳であり雑記帳です。当然僕の日記帳でもある。 by 目覚まし
寝言は寝て言え
ここは目覚ましを含む基地外専用スレだろ 前スレの900以降ぐらいを見れば分かる
176 :
デフォルトの名無しさん :2009/04/30(木) 14:09:50
BOOL CALLBACK DlgProc(HWND hDlg, UINT msg, WPARAM wp, LPARAM lp) { switch( msg ){ case WM_INITDIALOG: // ダイアログボックスが作成されたとき return TRUE; case WM_COMMAND: // ダイアログボックス内の何かが選択されたとき switch( LOWORD( wp ) ){ case IDC_BUTTON1: // 「OK」ボタンが選択された // ダイアログボックスを消す EndDialog( hDlg, 0 ); break; } return TRUE; } return FALSE; // DefWindowProc()ではなく、FALSEを返すこと! } WM_INITDIALOGにはメッセージが入るが、WM_COMMANDにメッセージが入りません どういったことが考えられますか? VS2005 OS VISTA
>>176 IDC_BUTTON1じゃなくて、IDOKだったというオチだったり?
>どういったことが考えられますか? コーディングミス
リソース.rc を作ってない。とか?
180 :
デフォルトの名無しさん :2009/04/30(木) 15:17:21
IDOKではなくIDC_BUTTON1でリソースは作ってあります。 たぶんコーディングミスだとは思うのですが… ダイアログが表示されてもどこでマウスクリック(ボタン以外の所で)しても エラー音(キンという音)が鳴るのです
>どこでマウスクリック(ボタン以外の所で)しても >エラー音(キンという音)が鳴るのです ダイアログ自体は終了できるのか? それともまったくイベントを受け付けないのか? 後者なら、モーダルなウィンドウが別に存在しないか?
なんかエスパー(妄想)レスきたい上げって感じだな ダイアログ生成異常って感じだな。 WM_INITDIALOGからリターンしてるのか
183 :
デフォルトの名無しさん :2009/04/30(木) 16:02:03
case WM_INITDIALOG: // ダイアログボックスが作成されたとき <ここに終了処理> return TRUE; を実行したら砂時計がでるがマウスを動かせばすくにもとに戻る。 イベントをINITDIALOG以外は今のところ受け付けない。 ウインドウは親とダイアログ以外はないようです。
生成は CreateDialog なのか DialogBox なのか? 多分後者で生成してると思われるけど…
質問する人間というのは、どうしてアドバイスする人間の質問にちゃんと答えられないんだろう
186 :
デフォルトの名無しさん :2009/04/30(木) 16:12:35
184>DialogBoxで生成してます。 case WM_RBUTTONUP: // マウスの右ボタンが離されたとき // モーダルダイアログボックスを表示する DialogBox( g_hInst,(LPCTSTR)IDD_PROPPAGE_LARGE, hWnd,(DLGPROC)DlgProc ); return 0; こんな感じです。
MAKEINTRESOURCEか・・・
188 :
デフォルトの名無しさん :2009/04/30(木) 16:13:57
182>WM_INITDIALOGからリターンしてるようです
ウィンドウが無効になってるんだろ > IDD_PROPPAGE_LARGE プロパティシート用のリソースは初期設定で無効になってる
190 :
デフォルトの名無しさん :2009/04/30(木) 16:17:58
190>有効にするにはどのようにすればいいですか?
レスアンカーもまともに付けられないのかこの馬鹿・・・
プロパティシート用のテンプレートを使うな 有効にするとかそういう問題じゃない 初めて使うならVisualStudioのマニュアルぐらい読めってこった
最近、頭の悪い質問が多すぎ 新入生か新社会人か?
194 :
179 :2009/04/30(木) 17:04:21
>>176 リソースの追加
−−−−−−−
リソースの種類
+Dialog ←@
|IDD_FORMVIEW ←A
|IDD_OLE_PROP.. ←A
|IDD_PROP.. ←A
195 :
デフォルトの名無しさん :2009/04/30(木) 17:47:44
ダイアログの種類を変更したら解決いたしました。 ありがとうございます。
> DefWindowProc()ではなく、FALSEを返すこと! なんだ、また例のサイトか・・・
解説サイトを見ながら作ってて動かないならサイトの管理人に聞いてくれよ・・・ サンプルを見なくても作れるレベルになって困った時に初めてスレを利用してほしい
いかなるロケール下でも確定的に24時間形式でシステム(ローカル)時刻を取得できる簡単な方法はないでしょうか。 SYSTEMTIME構造体が12時間形式で吐かれる環境ではGetTimeFormatを使った上で 時刻フォーマットロケール情報を精査して文字列解析するしかなさそうなのですが、非常に面倒くさいです。 宜しくお願い致します。
>>198 SYSTEMTIMEで12時間形式はありえない(午前・午後を格納する場所がない)が、
その話ではもしかしたらGetSystemTimeAsFileTimeのほうが良いかもしれない。
つーかSYSTEMTIMEが12時制とかどこの情報だよ
手元のWindows95APIバイブル1では WORD wHour; // 時.1-12または0-23(ロケールの設定による) となっているのですが、改定があったのでしょうか?
MSDNよりも、そんな意味不明な本を信用してるのか?
だいたい、12時間制にしても1-12を返すとかあり得ないだろ。 エディタがwMonthかなにかと勘違いしてたんじゃないの。 それにしても、なんでそんな古い本参照してるんだよ。 確かにいい本だって言う人もいたけど、今となっては完全に時代遅れだろう。
・Win95初期〜VC6付属SDK > wHour > Specifies the current hour. ・PlatformSDK 2003 R2 > wHour > The hour (0-23). ・MSDN web > wHour > The hour. The valid values for this member are 0 through 23. 1-12なんて全然見当たらないが。
サマータイムってどういう扱いだっけ?
>>202 MSDN(日)のほうが記述量が少ないので本のほうが詳しく書いてあるのかもと思いました。
>>203-204 つまるところ誤記ということなのでしょうか。有難うございました。
MSDN(米)を読めばいいだろが
209 :
↑ :2009/05/01(金) 00:47:33
211 :
↑ :2009/05/01(金) 05:59:07
久米が紹介してるDialogBox()の第2引数を「NULL で終わる文字列へのポインタを指定します。」
の場合、どうやってやるのか、書いてるけど。
>>210
日本語で
超賤人or厨獄人か。
214 :
↑ :2009/05/01(金) 09:40:22
すみません、話の続きがしたかっただけなので。質問箱に相談は出来ないようですね。 Visual Studio 2005 スレに言って聞いてみます。
正しい
質問なのか回答なのかさえ分からんレスだな 日本語が不自由すぎだろ・・・
217 :
↑ :2009/05/01(金) 10:27:04
このAPIの使い方は正しいですか? resource.h の #define IDD_ABOUTBOX nnnn がコメントのとき。 DialogBox(hInst, TEXT("IDD_ABOUTBOX"), hWnd, (DLGPROC)About); resource.h に #define IDD_ABOUTBOX nnnn があるとき。 DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About); DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, (DLGPROC)About);
だから何で日本語が不自由なんだよ
219 :
↑ :2009/05/01(金) 10:34:56
名前欄の↑がキモイ
220 :
↑ :2009/05/01(金) 10:38:37
お前の方がキモイ
r'^┐_<Xゝ | 「 'ー‐′ 凵 '二二' __r¬ __ {--- ---| ,二コ lニ、 〈 〔} l\ \ ` ー−┘ ヽ┘ ___ | l ___ ┌─‐┘ l/ l | l ` ̄ ̄} /l l / l l. l / l l l / , l l l / l l. l / /'! l l l l / l. l l. l │ ./ l. l l └ヘ. │ / l l l ヽ l /' │ │ | 〉 .レ' l | | / | | | _/
222 :
↑ :2009/05/01(金) 14:29:27
文字だけの掲示板で「だまれ」? 幻聴が聞こえるのか凄いな
WinMainなウィンドウベースのアプリを作っているのですが、 デバッグとしてコンソールウィンドウを出したいのです main関数で始める以外、何か方法ありませんか?
AllocConsole
AllocConsole/FreeConsole
・WinMainCRTStartupをエントリポイントにしてコンソールに設定する ・AllocConsole()を使う(適宜freopen)
リロードしろハゲと言おうと思ったが 30秒差ならまあいいか
> ・WinMainCRTStartupをエントリポイントにしてコンソールに設定する これは間違い
>デバッグとしてコンソールウィンドウを出したいのです ではなく、 |デバッグとしてコンソールウィンドウに出したいのです なら、コンソールから WinMainなウィンドウベースのアプリ.exe >con と叩けばよい
コンソールなんか出さなくてもOutputDebugStringでいいだろ
表示できないUnicode文字があるOutputDebugStringは糞
それデバッガ側の問題じゃないのか?
::_tsetlocale( LC_ALL, _T("japanese"));
setlocaleが関係するのはCRT関数だけだろ
japaneseにハードコードするとかアホだろ 何のためのunicodeなんだよ
::_tsetlocale( LC_ALL, _T(""));
だからsetlocaleの設定はAPIには関係ないだろ馬鹿
UNICODEでビルドしても ::_tsetlocale( LC_ALL, _T("japanese")); しないと日本語でないんだけど みんなどうしてるの?
243 :
238 :2009/05/02(土) 21:46:22
>>239 レス有難うございます。
話は変わりますが、DefWindProc()ではFALSEを返すのに、
どうしてDefChildProc()ではメッセージを処理するとTRUEなんですか?
話が変わりすぎ そもそもDefWindProc/DefChildProcって何だよ お前が勝手に作った関数の事なんて知るかボケ
DefWindProc 規定の風プロシージャを呼び出して、アプリケーションが処理しない地域に対して、 春には心地よい春風を、夏〜秋には台風を、冬には北風を提供します。
> CRTなんて使わない アホ発見
CRT使わないとか馬鹿だな
CRT使ってるのか?馬鹿じゃね。いまはLCDだろ
つまんね
↓プラズマはあり得ない
254 :
243 :2009/05/02(土) 22:31:14
「WindowProcはプレースホルダーであり、実際にこの関数名を使う必要はありません。」
話は変わりますが、ああああ()ではFALSEを返すのに、 どうしていいいい()ではメッセージを処理するとTRUEなんですか?
パナソニックはプラズマ増産に転じたんだぜ。
プラズマは陽光柱発光できないと、ストーブだしな OLEDはトリプレット発光できないときびしいぉ コレステリック液晶、カイラルネマティック液晶で省電力でもいいが制御むずいぉ 白黒なら電気泳動ディスプレイのE-Inkでも良いんじゃね
allocconsoleは最初から非表示で作れないですか?
はあ?
DialogBox()の第2パラメータの件はわかりますか?
ググレカス
GW中はいつもの目覚まし基地外スレで良いだろ
まともなのはどっかに遊びに逝ってるだろうからな
大荒れになっても良いじゃないか、インフルかかるよりははるかにイイだろ
>>262 ググレカス じゃないだろ ググレ目覚まし だ。
インフルかかった奴が荒らしてたりして
目覚ましウィルスだろJK
Trojan.Win32.AlarmClock 通称目覚まし
ウィルスなんて言ったら失礼だろ、ウィルスに。 荒らすヤツは寄生虫で十分。
寄生虫は役に立つこともあるんだぞ
ウイルスに冒されるか寄生虫と過ごすか.... 共生できるの寄生虫のほうだろ
と、寄生虫たちが申しております
今、猫SDKの「第30章 モードレス・ダイアログボックス 」をやっているんですが、 ぜんぜん駄目です。なんとかなりませんでしょうか? 一応、こうするとウインドウは出るようになったんですが、(DLGPROC)MyDlgProc にメッセージが行っていません。 wc.cbWndExtra = DLGWINDOWEXTRA; /* Window extra byted needed for private dialog classes. */
解説サイト見て分からなかったらサイトの管理人に聞けつってるだろ
こういう馬鹿は "ググレカス" 以前だな
すみませんでした、質問を替えます。CreateDialog()がエラーを返すのはどんな時でしょうか? hDlgWnd = CreateDialog(hInst, TEXT("MYDLG"), hWnd, (DLGPROC)MyDlgProc);
だから粂井に聞けよ
次スレから >解説サイトを見ながら作ってて動かないならサイトの管理人に聞きましょう をテンプレに入れとくべき。
何がどうだめなのか、エラーコードもGetLastErrorもやってないのか。 せめて自分がやった手順くらい書けよ。 どうせMYDLGがresource.hあたりでdefineされてるって落ちじゃないの? MAKEINTRESOURCE(MYDLG)
なんか愚にもつかない質問ばかりだと思ったら、「猫」の30章でこんなコトしてるせいか。 完全にサイトの説明不足だな、こりゃ。 hDlgWnd = CreateDialog(hInst, "MYDLG", hWnd, (DLGPROC)MyDlgProc);
だからこそこんな所で質問しないでサイト管理人にメールすべきだろ。 サイトの説明が間違ってる可能性だってあるのだからな。
最近「○○のサイトで××が分かりません」といったアホな質問が多すぎ Win32APIブームでも来てるのか?
質問者が初級者ってのは解るが、 結局、お前らって猫プログラムすらデバッグできないレベルなのか 連休中にこんなスレに居るんだからな。推して知るべしだな 質問者は連休中勉強してるってのに、お前らは基地ってるのか。俺とおなじだな by 目覚まし
目覚ましなら.NETというワードは必須
. ィ ._ .......、._ _ /:/l! :~""''.>゙' "~ ,、、''‐'、| _ ゙、'、::::::ノ:::::::_,.-=. _〜:、 /_.}'':, ``、/:::::::::__....,._ `゙'Y' _.ェ-、....._ /_゙''i゙ノ、ノ ,.--l‐''"~..-_'.x-='"゙ー 、`'-、 ,:' ノ゙ノブ " .!-'",/ `'-‐'') /\ `/ でノ-〈 .-''~ >'゙:: ‐'"゙./ ヽ.,' ~ / //::::: ', / ,:'゙
Trojan.Win32.AlarmClock 通称「目覚ましウィルス」 ・破壊活動 目覚ましと時計(MP3ネットラジオ付)をインストール 2chのWin32スレ等で荒らし行為 ・駆除方法 PCをぶっ壊す
先生は豚対策で忙しいんだからな
解決しましたのでお知らせします。(^(00)^) CLASS "mdless01" ーーあと詳細ーー VC6のみで、VS2005では削られた機能のようです。 リソース→プロパティ→MFC→OFF リソース→ダイアログ→プロパティ→クラス名指定 リソース→プロパティ→MFC→ON リソース→ダイアログ→プロパティ→クラス名が見えなくなっていました。 もう一度 リソース→プロパティ→MFC→OFF リソース→ダイアログ→プロパティ→クラス名消去
288 :
↑誰? :2009/05/03(日) 18:10:13
T-Matsuo Win32工作小屋(win32lab.com) このサイトです。
ただのキチガイか
相変わらずこのスレ腐ってんな 腐ってるヤツの集まりだから無理もないが
腐ってるのはお前だけ
幻想を打ち砕くような事言っちゃ駄目!
>>292 このスレは全く腐ってはいない。これが正常だ
お前は
>>293 の言うように腐りきってるな
腐ったのは来るなよ。スレが腐る
納豆みたいなスレ
見かけは悪いが超良いスレってことか
粘着系の荒らしが多いスレ
お前がな
いや、お前だろ
オレオレ
302 :
デフォルトの名無しさん :2009/05/04(月) 16:16:43
/) ///) /,.=゙''"/ / i f ,.r='"-‐'つ____ 細けぇ事はいいじゃねぇか!! / / _,.-‐'~/⌒ ⌒\ / ,i ,二ニ⊃( ●). (●)\ / ノ il゙フ::::::⌒(__人__)⌒::::: \ ,イ「ト、 ,!,!| |r┬-| | / iトヾヽ_/ィ"\ `ー'´ /
なんか荒れてるようだけど質問 VC++EEでつくってるのでリソーススクリプトを手書してるんだけど・・・ メニューをつくるとき、例えば MENUITEM "終了(&X)", IDM_END というのがあって、識別子をヘッダファイルresource.hで #define IDM_END 101 のように定義して、ウィンドウプロシージャでなんらかの動作をするように指示 そしてコンパイルして実行すると、指示したとおりの動作をする ここまではいいんだけど その後、resource.hの中身を #define IDM_END 110 という感じに変更して、後は何もさわらずに再びコンパイル→実行 するとなぜかメニューで選択しても反応しなくなるのはどうして?
スレ違い VC++スレ行けボケ
リビルドという言葉を知らないらしい
解説サイトの疑問を質問 スレ違いなVC++の質問 こんなのばっかだな・・・ 「ググレカス」で片付く質問がマシに思えるほど酷い
>>304 そうか
Win32APIのことだからこっちでいいかと思ったんだけど
じゃあおとなしくVC++スレに行くわ
リソースのどこが API なんだと。
APIの意味を分かってないのだろ 「Windowsで開発していて分からないときにとりあえず質問するスレ」ぐらいの認識でしょ
もしくは、Win32 プロジェクト = Win32 API だとでも思ってるのかね。
>>305 ありがとう
正直くだらんことを聞いてすまなかった
>>309 に指摘されたとおりだわ
もっと根本的なことを勉強しておくよ・・・
ここは初心者質問スレじゃないから。
>>276 と初心者スレへの誘導をテンプレに明記しないといけないぐらいスレのレベルが下がったのか?
>>309 馬鹿なこと言うなよ
それなら、VB、C#やクロスコンパイルの質問もくるだろ
C(C+)でWindowsプログラミング = apiじゃないのか
C++になるとMFCのほうあたりって認識じゃね
もうスレタイに【初心者厳禁】って入れるぐらいじゃないとダメだろ。
【基地外、目覚まし専用】の方が良い
C と C+ と C++ があんのかよw
>C(C+)でWindowsプログラミング = apiじゃないのか >C++になるとMFCのほうあたりって認識じゃね なんちゅう認識だ、まったく。
【荒らし専用】でも可
>>313 こいつは本物の目覚ましだな。間違い無い。
やっぱ本物は凄いなw
>>313 初心者ですが、C+ という言語でAPIを使用する方法を教えてください。
よろしくお願いします。
C+ = Clock+ 「目覚ましと時計」専用のマクロ言語だ。 マクロ言語と言っても侮る無かれ。 C#に匹敵する強力なオブジェクト指向・メタプログラミングが可能で、 Win32APIコールやインラインアセンブラの記述にも対応している。 またJITコンパイラの性能は素晴らしく、実行速度はC/C++に匹敵する。 という事にしておこう。
もうだめだこのスレ
ダメなのはスレじゃなくて目覚ましの馬鹿が粘着してること
>>322 目覚まし言語って超凄すぎ
>実行速度はC/C++に匹敵する。
はCより速いだろw
目覚まし先生によると C と C+ 以外はスレ違いだそうです。
で、結局目覚まし本人は逃げたか 墓穴掘って逃げるぐらいなら来るなよ
は?
ひ!
C+ という言語でAPIを使う方法を早く教えてよ
Win32APIが滅びるのとこのスレが消滅するのどっちが早い? なんかこのスレのが長持ちしそうなんだが
allocconsoleしてからshowwindowで非表示にすると、 コンソールがちら見えするんですけど、 最初からallocconsoleで非表示にはできないんでしょうか?
非表示のコンソールをわざわざAllocConsoleって何の意味が……
>>259 コイツまだ言ってるのかw
しかもやってる事が馬鹿丸出し
使う時にAllocじゃだめなん?
やってる事が矛盾してるしネタだろ
貴様ら、ここ基地街だな
日本語でおk
わからないならレスしないでください
また目覚ましか とりあえず C+ という言語について回答しろよ
そもそもコンソールウィンドウが要らないならAllocConsoleしなければ解決するのに アホですか?
>アホですか? んなこと訊かんでもわかるだろ
アホか天才かわからなかったから訊いたんだよ
わからないならレスしないでください
C+ 言語が説明できないなら金輪際レスしないでください
C#が分らないなら金輪際レスしないでください
・ 学校で習って少しだけC言語の知識があるプログラマ気取りの学生
・ C++やWin32の知識は無いに等しい
・ ●持ち
詳しくは
>>313 と前スレ900前後を読みませう
学生が●買えんのか?クレカ要るんじゃなかったっけ
むしろ社会人より学生の方がクレジットカードは審査通りやすい
質問です Mutexって同時作成数に限界はありますか? どうも多量に作成したときに後半に作成した分が機能していないようなので……
!NULL = CreateMutex である限りは限界じゃねーと思うがな
間違えたA!=B
>>354 WaitForMultipleObjectsの最大同時待機数(64)に
引っかかっている予感。
なんでそんな多量にMutexが必要なんだよ。 プログラムの設計を見直した方がいいと思うが。
多量に使う理由は教える必要のある情報ではないはずですが、はしょって説明すると多重起動時のファイル処理関連の制御に使ってます。
ファイルそのものをロックするわけにはいきません。
またこの質問自体は技術的興味の側面が強いので、この件に関する代替案(
>>358 みたいなもの含む)は必要ありません。
64制限は確認してみますね。 実はCMutexを使ってるので内部でSingleとMultiどっち使ってるか知らなかったり。 まずそうなら自作クラスに置き換えようかと思います。
待ち以外に、例えば(PCの性能は考えない、仕様的な意味で)作成出来るハンドル数には限界があるでしょう?
> 多量に使う理由は教える必要のある情報ではないはずですが
> この件に関する代替案(
>>358 みたいなもの含む)は必要ありません。
ゾクゾクするわあ
それぐらい自分で調べろよ・・・ 態度でかい癖に自分一人では何も出来ないんだな
仕様(制限) = メモリやらリソースの許す限り ってのが結構多い MS 製品。
>>360-362 どんだけ煽り耐性低いんだよ……
耐性低いの知っててやってるんだけどさ。
KB969933とか
限界を気にするのは素人か馬鹿
よくわからんけど 今時、メモリ容量とか 気にせず作るべきな気がする 動かないわけじゃないし、 最適化は後からでもいいしやらなくてもいい 気にしすぎたら作れなくなってしまうよ
CodeReadingでもベンチマークは完成してからやれっていってたなあ
そもそも理論上の上限なんて知らなくていいんだよ
まともなプログラムを書けない奴に限って「〜の上限は?」みたいな質問するよなw
>>359 はPCに依存するようなものは考えないと言ってるように見えるんだけどなんでメモリの限界がどうのこうの言ってるの?
8ギガ分のメモリ積んでも4ギガ分しか使えないとかそういう話だよな?
でミューテックスにはそういう仕様的限界は無いからメモリの許す限り使えますってことだけどWaitFor〜は64個までしか同時には面倒みませんよってだけだよな?
俺の理解がおかしいのだろうか……
正常に動作しないと自分の書いた糞コードよりも処理系やOSのバグor限界を疑う
つーかCMutexとか言ってる時点でスレ違いだろ
374 :
デフォルトの名無しさん :2009/05/07(木) 22:27:04
ごめん、どこで聞いたら良いのか判らんからここに投下 もっと良いスレあったら、誘導してください Windows7がRCでてるんだけど、噂のXp互換モード?なるものがある っていうことは、Win32APIは通らないって事? まったくだめなの? それとも、通るのもあるけど、通らないのもあるの? 下位換性は、ないと考えていいの? そのへん知ってる人いたら教えてくれ〜
笑い飛ばせばいい質問なのか、これは
触るなバカ
377 :
デフォルトの名無しさん :2009/05/07(木) 23:23:34
>>374 いや、基本的には過去のAPIとの互換性は保たれている
ただ、Windows7とXPとの間のちょっとした仕様の違いが、たまにソフトの動作を妨げる事があるらしい
だが、ほとんどのソフトは互換モードを使わなくてもそのまま動く
企業等、XPとの完全な互換性を要求する場面での需要に答えたのが、このモード
ってことは、再コンパイルでOK?
触った結果がこれだよ
もうだめだこのスレ
7RCよりVista用Hotfixにアホが大量に群がっている件の方が興味深い
>>378 もちろん、再コンパイルしなくても動く。
それに、運悪く7で動かない事態に遭遇したとしても、
まともにデバッグして直すなり互換モード・XPモードを試すなりが先決。
>>374 そもそも、それを試すのがβやRCをタダで配っている理由なんだから、
少しは聞く前に自分で試せ。
だから触るなつってるだろ
>>382 こういうアホが一番ウザイ
本人は親切のつもりか知らんが
384 :
デフォルトの名無しさん :2009/05/08(金) 05:19:58
Windowsのデバドラにクラスバスコヒュースを使用して、 そこから全66611111111999EF Rにオリジナルアセンブラを介入 するよ?
>>383 いや、親切心は微塵もない
ただ、『初心者うざい』がうざいから
代わりに答えているだけ
> ただ、『初心者うざい』がうざいから > 代わりに答えているだけ ただ、『荒らしうざい』がうざいから 代わりに構ってるだけ と言ってるようなもの 阿呆は来なくていいよ
387 :
デフォルトの名無しさん :2009/05/08(金) 19:37:17
VS6で、TOOTIPの表示時間(秒数)を設定したいときどうすればいい?
388 :
387 :2009/05/08(金) 19:39:09
×TOOTIP ○TOOLTIP
QueryPerformance系のAPIを使用して マイクロ秒単位で計算したいのですが 単純に QueryPerformanceFrequency( &freq ); QueryPerformanceCounter( &before ); 処理 QueryPerformanceCounter( &after ); ans = (double)((nAfter.QuadPart - nBefore.QuadPart) / nFreq.QuadPart); でいいのでしょうか?
DWORD dwAns = (DWORD)((nAfter.QuadPart - nBefore.QuadPart) * 1000 / nFreq.QuadPart);
すまそ、ミリ秒にしてたわ
395 :
390 :2009/05/08(金) 21:31:38
QueryPerformanceFrequency( &linFreq ); QueryPerformanceCounter( &linBefore ); while ( 1 ) { Sleep( 0 ); QueryPerformanceCounter( &linAfter ); printf( "micro second;[%lf]\n", (double)((linAfter.QuadPart - linBefore.QuadPart) * 1000000 / linFreq.QuadPart) ); } マイクロ秒算出はこんな感じでOKなんでしょうか?
そんなのSleep(1000);とか挟んでやれば、大まかにでも試せるだろ。
doubleへの変換が無意味だ
>>391 に DWORD dwAns = (DWORD)( ってあるのになあ
変換が無いと小数点以下切り捨てられちゃわない? と思ったけど括弧の位置が変だった
>>399 QueryPerformanceFrequencyってマイクロ秒までじゃなかったっけ?
そうだよ。だから、マイクロ秒単位で計算したいなら小数点などつかないんだがね
(double)無しで試したら全部0になるぞハゲ __int64はprintfの%lfじゃ表示されないみたいだぞ(VS2008EEにて)
int は %f ではなく %d だし、_int64 は %lf ではなく %I64d。
Win32以前にC言語をわかってない奴が何故スレに居るのかねぇ
API スレだから。
C言語分からん奴はAPIなんてロクに使えんだろ 一体、何の情報を求めてスレ見てるんだろう
>>402 wwwwwwwwwwwwwwwwwwwwwwwwwwww
409 :
デフォルトの名無しさん :2009/05/09(土) 20:32:35
酷いなお前ら よってたかって
KANIMISO64
APIのprintfもどきは何?
wsprintf
Oーーーーっ、ありがと で、APIとCライブラリに同じような関数あった場合 どっちを使ったほうがWindowプログラム的には良い? やっぱりAPIのほう
どっちも使えるなら好きすればとしか言いようがない。 せいぜいwsprintfと対比するなら_stprintfだろと言うくらい。
いや、StringCchPrintfだな
実はCライブラリ関数はAPIを呼び出しているってことないの? 同じような動作でも、スピード、サイズ等でAPIの方が良いとかないの? wsprintfってsprintfもどきだったよ
昔はCRTを排除してモジュールを小さくする需要もあったのだろうが、 今は気にするほどのことはないだろ。 ちなみに、wsprintfは細かい修飾や浮動小数点数、古いのだと%pに対応していない。 速さならCRTが勝る。 strcpyとかインライン展開されるし。 あと、WinAPIのlstr系はstr系と違って入力側の引数がヌルでも平気だとか細かい違いがあった気がする。
>>421 今のVCのmalloc系はHeapAlloc丸投げだよ
wsprintf() って不動小数点数扱えたっけ?
>>423 >>421 を加味すると
HeapAllocとかは時間の無駄なんだが、でもmalloc系はHeapAlloc丸投げなんだよで
あいやーーーになるんだけど...
おら、reallocを頻繁に使ってるんだけど(free()+malloc()より高速動作期待)、
この場合はどのAPIを使ったほうが良い?
std::vector
_alloca
malloc/realloc/freeを使っとけばいいだろ デバッグビルドだとメモリリークチェック入るし
strsafeはEx系の関数が便利で使ってる null位置のポインタと残りバッファ長を返してくれるし
>>475 前半
いや、昔のHeapAllocは遅かったらしい。
でその頃のVCのmallocは独自に管理していたという次第。
VCもWindowsもMSが作るんだから、
mallocよりHeapAllocを改良(でmallocもそれを使う)
というのは不思議でもない発想だろう、というのはNyaRuRuの受け売りだが。
不思議でもなんでもないというか、むしろ自然で合理的だわな。
>>430 昔はHeapAllocに丸投げしてたのをVC4から自前管理するようになった
VC6からOSがNT5以降ならHeapAllocに丸投げするように戻っただけ
遅いとかは関係ない。
HeapAllocを改良した結果small-block heapが不要になったので使わなくなっただけでしょ NyaRuRuの言うメモリアロケータの統合云々は飛躍しすぎだと思う
WriteFile()のFILE_FLAG_NO_BUFFERINGフラグに関して教えてください。 WriteFile()をFILE_FLAG_NO_BUFFERINGフラグ付きで実行していますが、 書込むバイト数が32MBまでは問題ありませんが、64MBにするとWriteFile()が失敗します。 FILE_FLAG_NO_BUFFERINGフラグ付きの場合は何か制限があるのでしょうか? FILE_FLAG_NO_BUFFERINGフラグを外すと64MBで512MBでも問題ありませんでした。 実際の運用では8MB程度を予定していますが実験中に上記問題が発生し自分では解決出来ませんでした。 何かアドバイス頂けると助かります。 ソースです。エラー処理は全部削除してあります。 DWORD BUF_SIZE = 1024*1024*64; ←32ならOK、64にするとWriteFileでエラーが発生する。 pBuffer = GlobalAlloc( GPTR, BUF_SIZE ); // pBuffer = VirtualAlloc( NULL, BUF_SIZE, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE ); fp = CreateFile( FileName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_FLAG_SEQUENTIAL_SCAN | FILE_FLAG_NO_BUFFERING, NULL ); if( !WriteFile( fp, pBuffer, BUF_SIZE, &Rb, NULL )) { 〜〜ここでエラーが発生する〜〜 return; }
失敗時のエラーコードは? GetLastError()とか呼んでる? うちじゃ失敗しないから確認できないな
HDD のキャッシュサイズを超えてるとか?
438 :
434 :2009/05/10(日) 11:43:49
皆さんアドバイス有り難うございます。
>>435 GetLastError()は呼んでませんでした。
これから確認します。
>>436 そういう制限があるのでしょうか?
HDDのバッファサイズは16MBです。
>>437 一応そのつもりです。
1,2番の条件はセクタサイズ512なのでOkです。
3番目の条件もOKなはずです。
VirtualAlloc()を使用してもGlobalAlloc()でも同じ結果でした。
CreateFile FILE_FLAG_NO_BUFFERING でググってみ。書き込み時に失敗するという記事がいくつかヒットするぞ
440 :
434 :2009/05/10(日) 12:00:32
GetLastError()は「アクセスが拒否されました。」でした。 もう少し調べてみます。
>>434 FILE_FLAG_NO_BUFFERINGを使うときには、HDDの性能をもろに受けるから
そういうもんだと思うしかない。
15000rpm SASとかだと限界がもう少し上だったりする。(RAIDボード、SASカード性能の影響も受けるが)
そもそも、なぜ、FILE_FLAG_NO_BUFFERINGフラグを付けたいんだ?
きちんと理由があるのか?
なんとなくとか、汎用的にっていうのなら、やめとけ。
場合によってはFILE_FLAG_WRITE_THROUGHで事足りる。
442 :
434 :2009/05/10(日) 14:20:58
>>441 外部から20MB/sで送られて来るデータを欠損なしでHDDに書き込まなくてはいけないんです。
約20分なので24GB程のデータ量です。
HDDに書き込まずに届いたデータをメモリ上で読み捨てると問題無いのですが、
HDDに書き込むとHDDの速度が足りずにデータ抜けが発生してしまいます。
その為できる限り早くHDDに書込みしたいと考えています。
エラーがでない32MB単位で速度を測定してみましたが、
FILE_FLAG_WRITE_THROUGHに対してFILE_FLAG_NO_BUFFERINGの方が2倍以上早いです。
汎用的な事も考えないといけないし難しいですね・・・
webを見回しても、FILE_FLAG_NO_BUFFERINGや非同期I/O、CreateFileMapping等色々あり
ケースバイケースで変わるって事なんですね。
なんか色々と勘違いしてるな・・・
シーケンシャルで20MB/sでないとかどんなHDDだよ。別の問題だろ。
>>442 >HDDに書き込まずに届いたデータをメモリ上で読み捨てると問題無いのですが、
>HDDに書き込むとHDDの速度が足りずにデータ抜けが発生してしまいます。
ようわからん。
>443 の言うとおりで色々勘違いしているんじゃまいか。
>>442 FILE_FLAG_WRITE_THROUGHは遅いに決まってるじゃん。キャッシュ無しで書きこんでいるんだから。
いきなり、速度の話しにすんなって。
>>441 の言うとおり、なぜ、FILE_FLAG_NO_BUFFERINGを付けたいのかと。
>>442 自分がやるとしたらこうだな。
まず、メモリ確保→データ受信→HDDへ書き出し→メモリ解放というサイクルになるよう作る。
で、HDDへ書き出すところを別スレッドでやるなり、非同期IO使うなりすれば、
メモリに空きがある限りデータ受信のスレッドはHDDの速度に足を引っ張られることはない。
もちろん、ライトスルーやノーバッファリングの出番はない。
あと、必要ならメモリ確保・解放を自前でプールするとか工夫するかもしれない。
流れぶった切ってすまんが、コンボボックスをクリックすると リストがずらずらって出るじゃないですか。 APIのクリックメッセージを送った時にリストが出ないように出来ますか? コンボボックスのテキスト欄に直接データを書き込んでコンボボックスで 項目が選ばれたような動作をやりたいんです。
スプーリングすればいいんじゃね?
> リストが出ないように 「コンボ」ボックスの意味ねーだろw
>>434 の質問はFILE_FLAG_NO_BUFFERINGついてだけど
実際は約20分間、20MB/sのデータを受け取りながらHDDにそれを書き込み出来んが問題なんだから、
おれなら、これをこんな感じに実現するのアドバイスでも良いんじゃないか
ところで、約20分間、20MB/sのデータをHDDにカキコするっていろいろ考慮・工夫しないと駄目?
(特に何もしなくても楽に実現できるレベル?) よく解らん俺は20分の20MB/sのリアルタイム性実現って
大変かなと妄想するんだが。
>>448 素直に「テキストボックス+ボタン」にすれば?
テキストボックスの子ウィンドウとしてテキストボックスの中にボタンを作れば、好きなことできるだろ
20MB/s×20分って、ファイル共有ソフトでも作ってるのか?
20MB/sって100Mbpsどころじゃないなw
20MB/sでデータを送信することを保証するほうが大変な気がする
456 :
448 :2009/05/10(日) 16:47:54
肝心なこと書くの忘れた。 外部ソフトなんです。 外部ソフトのコンボボックスに入っている項目は分かっていて、 項目を選ぶ動作をそのままやるとリストが一瞬出てしまって 見た目かっこわるいからどうにかしたいって事です。
また外部ソフトを突っつく類いのソフトか
クリックメッセージじゃなくて直接EDITに送れば?
パラメータの渡し方(ハンドルの記法)がメチャククチャすぎる。 構造も複雑すぎて、どのパラメータがどういうふうに、どこまで有効なのか、 統一性がない。こんなわかりにくいもの、やってらんねーよ。
ブログに書いとけアホ
お、目覚まし復活かw 相変わらず抽象的かつ定性的な文章で コイツ本当にプログラマか?と思ってしまう
文の最後にw付けるの基地外ですよね
ですよねーw
>>000 CreateWindow
こういう回答すると基地外になるのか
つーか英語圏の人は100%基地外ですな
基地外の時間になりました。基地以外立ち入り禁止w
ユーザーが使いこなせるようになるために言ってるのでなく「使えるものですよ。買った価値は あるはずですよ。」ということを言うために、msdnは存在する。つまりは宣伝や、評判の悪化対策 でしかない。
ハァ?
エクスプローラもどきを作っています。 ファイルを右クリックしたときのコンテキストメニューを表示することは できたんですが、ファイルを右ドラッグしたときのコンテキストメニューを 表示するにはどうしたらよいのでしょうか? 参考になるサイトか、ヒントだけでも教えていただければと思います。
マジレスすると自分で出す
>>470 出すのはIDropTarget側であって
自分で出すわけではないんじゃないか?
470は単なる無知
IDropTargetは自分で実装するんだから結果的に自分で出す事になるだろ
自分でプログラミングすれば出るよって言いたいんじゃない
DropTargetとDropSourceの区別ついてない馬鹿がいるみたい
無知はレスしないで下さい。ウザイだけです。
って書くと、相対的に自分が無知でないかのように振舞える訳だ
>>478 無知はレスしないで下さい。ウザイだけです。
FAってなんだよw おっさん
昔、PC-98シリーズと言うのがあってだな
そりゃまたずいぶん昔のPCだな。20年くらい前になるか
お舞らも、IBM S360のプログラムを必死こいてやってたんだろ
俺が必死にやってのは EDSAC だったな。 3目並べを作ったのはいい思い出だ。
>>482 NECのFAシリーズもあったぞ
Windowsマシンで
>>485 Factry用のゴツいマシン
64bit PCI-Xが付いてた
>>485 Windowsを使いはじめて600x480の解像度しかできんPC-98は見限ったから、そのFAは知らん。
だから、そのころはWin16APIの時代か。(と強引にスレに関連付ける)
600x480? おかしな解像度ですな
SIF_DISABLENOSCROLLはCreateWindowExで作ったスクロールバーには 効果がないんでしょうか
640x480だな と、マジレス
>>488 昔のPC-98はそうだったんだよ。640x480ではなく。
>>489 SCROLLINFO構造体の設定が間違っているとみた。
うちの98は640x400だったけどな。
>>491 SCROLLINFO si = {0};
si.cbSize = sizeof(si);
si.fMask = SIF_DISABLENOSCROLL | SIF_ALL;
si.nPage = 2;
si.nPos = 0;
si.nMin = 0;
si.nMax = 1;
SetScrollInfo(hWnd, SB_CTL, &si, TRUE);
今こうしてますが、無効にならずにつまみが主張全開です・・・
494 :
469 :2009/05/12(火) 00:04:03
>>471 レスありがとうございます。
とりあえず、IDropTarget を取得してみようと思い、
IContextMenu を取得できたテストコードの
IID_IContextMenu を IID_IDropTarget に書き換えて実験すると、
E_INVALIDARG となってしまいました。
IID_IContextMenu に戻すと成功します。
IContextMenu は取得できるのだから引数的には間違ってないかなぁ
と思うんですがなにか勘違いしてるでしょうか?
ちなみに、C:\Foo\Bar というフォルダに対して GetUIObjectOf を実行しています。
>>491 640x400と勘違いしたんだろ?
間違いは素直に認めようね
IDropTargetとIDropSourceは自前で実装するものだろ
エクスプローラもどきを作ろうとしてるならD&Dの方法ぐらい知ってると思って
>>470 で分かると思ったが、まさかその程度の知識だったとはな
結局、SIF_DISABLENOSCROLLはCreateWindowExで作ったスクロールバーには効果がないってことですかね?
幼稚だな
501 :
デフォルトの名無しさん :2009/05/12(火) 09:42:48
基地害だもの
>>496 IShellFolderなどを利用しないと互換にならないだろ
>>494 状況によってはCreateViewObject
>>493 si.nPos + si.nPage > si.nMax なんだけど… SetScrollInfo 失敗してないかい?
CreateWindowExで作ったスクロールバーだったら EnableWindowで有効/無効に出来るだろ
>>504 意図的にスクロールバーが隠れるよう設定しようと思ったのですが・・・
試しにWS_VSCROLLのほうで同じ設定をするとちゃんと無効状態になります
>>505 やっぱりそのやり方ですか、どうもです
507 :
469 :2009/05/13(水) 09:50:50
おかげさまでメニューを表示することができました。
ファイルのドラッグメニューを表示するだけなら、IDropTarget を
実装する必要はありませんでした。
>>502 、
>>503 に勇気づけらて IShellFolder をいじるうちになんとか
メニューが表示できました。
CreateViewObject と使う場合というのがまだよくわかりませんが、
留意しておきます。
ありがとうございました。
CreateViewObjectってエクスプローラのリスト部分を作るメソッドじゃなかったっけ?
CreateViewObjectだとフォルダ自身のIDropTargetを取得できるので デスクトップなどシェル名前空間のルートの時に使う
VS6の場合、 LABEL(VB)コントロール、又は STATIC(VC++)コントロールでツールチップの
表示のされかたを、APIを使って小まめに変えるにはどうしたらいいですか?
↓のやりかた(VB)ではTEXTとか他のコントローに対してはできるが、LABEL(STATIC)は
できないみたいだけど。単なる、パラメータを設定してないだけの問題なのですかね?
そうなら、どのパラメーターなのか?教えてください。
http://www.mitene.or.jp/~sugisita/vb6_cmctl.html
>>470 = 496
はやっぱり単なる無知だったのね。
かわいそう。
単なる無知かどうかは微妙 IShellViewを使わない場合はDropを受ける処理の為に自前のWindow用のIDropTargetを実装する事になるはずなので そのIDropTargetの実装にIShellFolderなどのIDropTargetを使うか自分でメニューを出すかは作者に委ねられる 質問者はWM_DROPFILESで処理していそうで怖いが
異論があるなら単なる無知は取り下げよう。 半可通にしとく。
>>407 apiを使うのはc言語だけって、誰が決めたの?
ファンクションコールができるのがプログラミング言語の普通なんであって。 別に、それはcだけではないよ。できないのはexcelとかの「簡易言語」だな。
言いたいことは分からなくもないが、 ExcelはVBA介せばWin32API呼べるだろ。
コールバック付のAPIは制限される
>>516 vbaあまりしたことないからよくわかないが、vbaで、
ファンクションコールできるとは知らんかったわ。
>>514 C言語が全く分からないとMSDNのAPIヘルプが読めない
つまりそういうこと
>>519 それもまた極端な言い方なんだよ。
それじゃあ聞くが、現にモロapiの利用でについて聞いてる
>>387 に応える
ことができた人、ここに一人でもいるか?
他人を批判したり、cができなきゃとかって、cプログラmとしての
変なプライドみたいな能書ばっか、いくら言ったって、tooltipでさえ
できrの一人もいないじゃないか。
vbでtooltipのapi使ってる人なんぞ山ほどいるぞ。
偉そうなことばっか言ってるくせに、apiのスレなのに、apiの使いかたについて の質問には一切こたえないで、別なこと言ったり、批判ばっかしてるのが多い。
>>521 偉そうに批判ばっかしてないで、
>>387 に答え出してみろ。言語はなんでもいいからさ。
それができないのは、おまえは、ファンクションコールは何もできないっていうことだ。
> ファンクションコールは何もできない 「ファンクションコールができる」? 日本語不自由な方ですね、わかります
また目覚ましか 相変わらず日本語おかしいね
↓「ファンクションコール」というプログラミングに基本常識ら知らない奴。 ↓さしずめマイクロソフトのvc言語がプログラミング言語の基本だと思ってる奴だろ。 ↓プログラミング言語の能力はまったくないが、2ch口喧嘩だけで毎日、時間を浪費 ↓してるニ−トだろ? 524 :デフォルトの名無しさん:2009/05/13(水) 20:40:44 > ファンクションコールは何もできない 「ファンクションコールができる」? 日本語不自由な方ですね、わかります
ファンクションコールという呼び方だと、 どうも INT 21h とかが先に思いつくな。 Ralf Brown's Interrupt List とかあったよなあ。
ああ、こいつ昨日初心者スレで暴れてたアホか
529 :
デフォルトの名無しさん :2009/05/13(水) 20:48:24
おいおい俺にYAMAUCHIコマンド使わせる気かよ
能書き言ってないで、
>>387 に返答してみろ。能無しニートども。
> ・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。 を守らない馬鹿にまともな回答なんて付かないよ。 悔しかったらMSDNとGoogleを使いこなそうね。
>>514 407のどこに「apiを使うのはc言語だけ」って書いてあるの?
>Win32API質問箱 これって「Win32API質問に応える能力ないから質問者をいじめるスレ」 とかって名前変えたほうがいいんじゃないの?
ファンクションコールができる・できないはプログラムに対して使う表現であって人間に対しては使わない 人間に対して「データ通信ができる」なんて言わないのと同じ 見栄を張ろうと難解な表現を使っても恥かくだけですよw
テンプレ読まない・守らない馬鹿は当然煽られるだろw 2ch初心者か?
だいたい、引退した人ならいざしらず、若いのに2chの技術板に 日中からいて、住人になってるような奴っていうのは仕事で使いものに ならない奴だからだよな。
とにかく、この時間帯に教える能力のある人は、だいたい忙しい からいないんだわ。
VBスレ行けと言われてなんでこっちに来てんだこのアホw
テンプレ読まないアホな質問 → 答えられる人はいない、馬鹿ばっか → 人間批判 の典型的パターンだな
ほんとうにapiで能力のある人は、さっさと仕事かたずけて飲みに行ってる か、あとは「どうしても何日まで、終らせないと・・」とかって他部から 応援頼まれて、残業やってるかだな。
> この時間帯に教える能力のある人は、だいたい忙しいからいないんだわ この時間帯に質問してる自分は窓際族ですって自己紹介しなくていいから。
粘着能無しのニートが、暴れてる。
ファンクションコールは何もできない マイクロソフトのvc言語 apiで能力のある人 仕事かたずけて 何この馬鹿……
>>544 俺はもともプログラマーじゃないもの。(笑い
教える能力なくて当然。
おまえらはプログラマー気取りだが能無しで使ってもらえない。
俺の仕事はまったく別で、手の空いたときの遊びでしてるだけ。
注:あと100レス以上続きます
ここの住人には、
>>387 の質問に答える能力のある「普通のプログラマー」
以上の能力を持ったものは、一人もいなかった、ということは間違いない。
Google検索も知らないアホは来なくていいよ
↓小沢一郎の会見に似てるな。 550 :デフォルトの名無しさん:2009/05/13(水) 21:21:52 Google検索も知らないアホは来なくていいよ
↓いかにもなああああ。 ↓「羊頭狗肉」の典型だな >Win32API質問箱
回答箱じゃないだけマシだな
2ch運営に潜入した民主の能無し工作員が、能無しさを正当化するために必死だねえええ。
vipでやれ
Win32API質問箱 ↓次スレ名確定 Win32API質問者をいたぶる箱
●持ち荒らしか 変なのに粘着されると大変だな
apiと関係ない質問に答える馬鹿はいない
この人、vs6という意味とか。APIの意味すらわかってないね。
↓もしかして半島人?
561 名前:デフォルトの名無しさん :2009/05/13(水) 21:36:09
>>389 で回答出てるのに日本語読めないのか
最初の一行しか見てないということはマジで日本語読めないみたいだな
>>563 この馬鹿は基本的に流し読みして脊髄反射でレスしてるだけだから噛み合うはずがない
もう相手するなよ
VSって聞いてるのにNETのこと言ったってしょうがないだろ。 それに↓こんなの答えになるかよ。現実問題としてそれをどうするかが答えだよ。 >Window Messageを投げるしかないかと
"NET"って何だよw とりあえず.NETということにするとして二行目以降は.NET関係ないだろが Window Messageを投げる で分からないなら勉強しろよ このスレで質問する奴はそれぐらい分かってんだよ
猫わかレベルは理解してる前提だからな。
ここは目覚まし・基地害の雑談スレ 質問は荒らし行為です。 荒らしには厳しく対応するニダ
APIで、TOOLTIP使うのになんで、いきなり「Window Messageを投げる」だけでできるの? 1、Tooltipのハンドル取得しないで、どうやってSendMessageでtooltipにパラメータを渡すの? 2、うまく呼び出せたとしてToolTipに渡すパラメーター構造(必要ならオフセット値等)を知らず、 どうやってどのような値を渡せるの?
荒らしは止めて
昨日も初心者スレで似たような質問して150レスも消費してたな
この馬鹿、人のアドバイスを何も聞かないんだな そんな奴が回答できる能力云々とか ゆとりって怖いな
>>389 >APIを直接操作しているのであれば、
>API等を使って自分の都合のいいタイミングに
「直接」とか「等」という日本語の意味わかってるの?
ここはWin32APIの基礎が理解できてる人の質問スレだから 基礎すら分かってない馬鹿は初心者スレへカエレ
・・・帰ってこなくていい^^;
知らないならレスしないで下さい。ウザイだけです。
ここまで自分で努力しようという意志が全く無い奴って凄いな コピペでコンパイルしてそのまま動くそのものズバリなコードを貼ってくれるまで 能力が無いとか散々喚きまくって粘着し続けるつもりだろう
>>570 何も教えられないくせに、それを美化、正当化するために、ひねくれ根性から、
世の中の人の心を汚しまくってるここの住人のことか?
また始まった
>>577 おまえらの「努力」っていうのは威張りたい努力じゃねーのか。
また始まった
教えてやるよ。 for(int i=0;;i++)DestroyWindow((HWND)i); これを実行すれば解決する。
584 :
デフォルトの名無しさん :2009/05/13(水) 23:32:36
普通の責任感あある人は「教える立場」を自称するなら、もうちっとは、 自分の中身を充実させから、その中身をもって、するけどな。 まして「Win32Api」って、osを大上段に振りかざした「金看板」でさ。 それで中身がないんじゃ「先生」ずらして中身がない名名刺、肩書だけ 立派な詐欺師とたいしてかわらんぞ。
もうだめだこのスレ
>>585 for(HWND tooltip=0;;tooltip++) //ツールチップを探す
SendMessage(tooltip,WM_CLOSE,0,0); //Window Messageを投げる
でいい。これにて解決だから以後来ないように。
> あある > 名名刺 顔真っ赤にしながら書き込んでるんだろうなぁwww
589 :
デフォルトの名無しさん :2009/05/13(水) 23:42:00
>>588 お前のwwwの方が基地外必死って感じだぞ
基地印3つつけてるんだからな
目覚ましを凌駕するmjktだな
>>588 何も努力しないで生きてきて能無しになって教えられないから、集団で重箱の隅つつくしか脳の無い
小人になってるわけ?。
小学生は黙ってろ
593 :
デフォルトの名無しさん :2009/05/13(水) 23:47:13
>>591 ここは基地外スレ。おまえみたいなまっとうな人が来るスレじゃないよ
自作自演
596 :
595 :2009/05/14(木) 00:10:27
訂正:vbd→vb
そんなの常識だから。 まともな質問者なら「MSDN見れ」で答えに辿り着く。
普通は
>>389 のGoogleリンクで回答見つけて「ありがとうございました」で終了だろjk
そんじゃ、ここで聞くんじゃなくて、「できる人」のいる掲示板にでも行けよ。
最初から答え知ってるけどわざと知らないフリしてとぼけた質問して スレ住人を叩きたいだけのカスだろ 基地外はいい加減スルーしろよ
まともな回答者なら「WM_USER はなるべく使うなって言う話がある」などと言葉を濁さない。
「win32、apiは、vcをやってる人だけ知れる。」とかってここで能書きだけ 垂れて、「オブジェク達成」手法は何も教えられない「能書き」だけの 自称「オブジェク言語連」より、vbやってる連中のほうがapiの使いかたは、 よほど「オブジェクト言語」のプログラマーらしいな、っていう感じも、 しないこともないな。
>>595 >>387 の質問が出た時点でお前がそうレスすれば良いだろ
他人におれおれ基準を押し付けるなよ
> You can adjust all of the time-out durations by using the TTM_SETDELAYTIME message. MSDNにそのまま載ってるだろ MSDNすら引けない馬鹿が偉そうに文句言ってんじゃねーよ 二度と来るなボケ
「ニートたちよ、威張りたかった2chのプログラム技術板に行ってさ、 Win32API質問スレで誰か質問したら『masdnを見ろ』っていえばいい。」って ニートたちに教えてやることにするよ。
masdn
>>1 の
> 質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
を無視する理由を答えなさい。
ついでに「あそこで『msdnを調べろ。』ってさえ言ってれば 能無しニートじゃなく2ch評価の『立派なプログラマー』って 認知されるぞ。」ってな。
テンプレを無視する理由が答えられないなら以後レスしなくて結構です。
口先の能書きだけ達者で何もできないのが多い日本になってるねえええ。
>>610 答える能力が無いならお引き取りください。
>>609 その理由は「msdnを調べたら」わかるんじゃないの?
>>607 すみません。
MSDNライブラリやPlatformSDKって知らないんです
先生、これらって何ですか?
mjkt
vb をNGワードに設定したらすっきりした
>>612 なんだよ、答え知りたかったらmsdnから答え聞いたらどうだ?
自分たちが言つくったローカルルールはつくったもがまず守れよ。
おかしな日本語を自動的にあぼ〜んできるスクリプトでも欲しいな
透明あぼ〜んでスッキリした
そうだ、ここのスレ名は今後は「msdn教本山」にしたらどうだ。
誰かが運営に通報してるぞw
このスレこんなに住人いたんだ。
自作自演
凄い勢いだな、お ま い ら でも、もう寝る時間だだろ
↓では解決しません。 for(HWND tooltip=0;;tooltip++) //ツールチップを探す SendMessage(tooltip,WM_CLOSE,0,0); //Window Messageを投げる
存在しないもの消すことできないものな。 それじゃ初めから問題解決放棄してるのに偉そうに言う詐欺師の論法だわ。 まるでMSDNカルトだな。
↓何故、今日、普通はWM_APPかがわかってない。何故、「今の時代」になって、
↓「なるべくWM_USERはつかうな。」って言われてるかがまったくわかってない。
↓歴史無知が「普通」だと思ってる基地外。
611 :デフォルトの名無しさん:2009/05/14(木) 00:29:31
>>601 普通はWM_APPだな
まだやってるのかこのアホ
↓同じ珍人類。何故、「なるべく使うなって言われてるが・・・」の「が」意味を変えない。 ↓鈍いんだね。っつーか謙虚さがないんだな。だから「何故、言われてたか」を考えない。 ↓朝鮮人が戦後のドサクサ紛れに駅前の焼け跡に居残って「先祖代々俺の祖先の土地だ」って言ってたのと似てる。 601 :デフォルトの名無しさん:2009/05/14(木) 00:18:14 まともな回答者なら「WM_USER はなるべく使うなって言う話がある」などと言葉を濁さない。
↓おまえらの性格って「自民党はナチ、右翼です。民主党のメンバーは戦前から民主主義、 ↓平和主義でした」とかってほざく民主党工作員の性格そのものだよ。 ↓コンピューターの勉強するまえに人間学勉強しろ。そうでないとお前の家はお前の代でオワリ。 ↓一生、女にもてないニートでオワリ。 632 :デフォルトの名無しさん:2009/05/14(木) 05:56:14 まだやってるのかこのアホ
↓こういうことなんか想像だにしてなかった連中だろうな。ここの自称・先生たち。
(戦前)社会大衆党―(戦後)社会党、民社党―社民党、民主党
「近衛首相はこの精神をしっかりと把握されまして、もっと大胆率直に日本の進むべき道はこれであると、
かのヒトラーの如く、ムッソリーニの如く、あるいはスターリンの如く大胆に進むべきであると思うのであります」
(昭和13年3月16日、衆議院本会議、社会大衆党代表西尾末広、国家総動員法、三国軍事同盟熱烈賛成演説)
http://www.c20.jp/1938/03nisio.html
いやNYがぎっちり下げてくれて、うれしいなあああ。一昨日、持ち株全部売って、 暇ももてあましていたところに、このまま揚げ一方だったらどうしようかって、 心配だったけど、また買いチャンス到来だわ。
徹夜でご苦労様です
イイゾ モットヤレ
またかよ
「低級」の立場のものは、召使のごとく御主人様たちが何を考え何をしてるかについて 気を配う能力もなけりゃ生きていけねーのが世の中なんだぞ。もっと社会学を勉強しろ。 そういうことがわかってはじめて高級トリの低級言語プログラマーになれるんだ。 それがいつまでもわかんねーで、msカルト教みたいなことやってるんじゃあああ、 嫁もくるわけねーよ。 て
昼酒はきくなあああ
真っ昼間〜夜明けまで2chとは素晴らしいニートですねw
書き込みが止ってたのは7時〜12時。 睡眠5時間、2ちゃんねる19時間。
イイゾ モットヤレ
モットヤレ モット モット
ロボットが人間同士を戦わせて楽しむ世界か……
文頭に↓を付けてるのに真性基地がいるな
なんだ、ニート基地外いなくなったのか 一晩中暴れてたくせに つうことは今日はどこか他所のスレで暴れてるんだろうw
タブ一つ一つにリージョン設定して形変えたいんだが 何か良い手はないだろうか? アイコンをそれぞれ付けるのとは訳が違うので悩む
日本語プログラミング言語でも使っとけ
>>652 それは駄目だった
任意の画像からリージョン作成は出来るんだが、それぞれのタブが変えられない
>>653 自分でタブ的な動作をするコントロールを作れ
>>653 >>654 の言っているのと同じ意味で
>>652 を書いたんだが。
「既製のタブコントロール」にこだわらず、「タブに見えるもの」を自前で描画するんだ。
>>655 サンクス。そう意味か!
ボタンをタブ風にする事にするよ。有難う
コントロールのも時コードを変えるにはどうしたらいい? UTF8とか表示したいです
#define _UNICODE なら WideCharToMultiByte()
あ、逆だ。MultiByteToWideChar() のほう。
つまり一旦UNICODEに変換して表示するしか方法はなく そのまま表示させることは出来ないって事ですか?
「そのまま表示」ってどういう意味? ある文字の、UTF-8での文字コードを表示したいのか?
Unicode 対応をうたったコントロールを使えばいい。
>>658-663 一旦UNICODEに変換してから使ってみようと思います。ありがとうございました
GetRegionDataってどんなときに使うんですか? リージョンをファイルに保存するときとか?
GRAY_BRUSHの色をCOLORREF型で得る方法がありましたら教えてください。
GetObject() の 第3引数 である LOGBRUSH 構造体に COLORREF lbColor; が含まれている
668 :
666 :2009/05/17(日) 03:36:45
>>665 そうだよ
作成したリージョンは保存出来るから、保存したリージョンを読込む時に使う
RGNDATA構造体を直接弄った方が早い場合に使うんじゃねーの?
671 :
665 :2009/05/18(月) 06:00:00
>>672 unicodeになってる。
プロジェクトのプロパティで、文字セットを「マルチバイト文字セットを使用する」に変更。
ってよく見たらここAPIスレじゃないか。 今後しかるべきスレで聞いたほうがいい。
>>674 すんません。レス頂いた後に気付きました。
次からゲ製作板で聞きます。
すいません。
676 :
デフォルトの名無しさん :2009/05/18(月) 14:20:51
バッファを使用したファイル(wav)結合ツールを作ろうとしてるのですが、
どうもバッファループあたりがおかしいのか、ほぼ倍の容量の不完全なwavファイルが出来上がります。
同期I/Oでやってるのがいけないのか、、良く分からないですが、
バッファ以上(32MB設定)の大きめの単一ファイルなら平気で結合だとうまくいきません。
助言よろしくお願いします。見づらくてすいません。。
(リストボックスにD&Dしたwavの結合です。ヘッダ比較チェックは済んでて他のツールでは上手く行きます)
ttp://sakuratan.ddo.jp/uploader/source/date110667.txt
デバッグくらい自分でやれよスレ違い
デバッグできないならレスしないで下さい。ウザイだけです。
>>676 適当にしか見ていないから見逃しているだけかもしれないが、
RIFFチャンクのデータサイズを更新していないように見える。
この書き方だと、ループの後にそういう処理が入っていそうなものだが。
680 :
676 :2009/05/18(月) 19:43:13
レスありがとうございます。 ReadFile(hIn, &fc, sizeof(RIFFChunk), &dwsize, NULL); fc.chunkSize = dwSum + sizeof(RIFFChunk)+sizeof(FormatChunk); WriteFile(hOut, &fc, sizeof(RIFFChunk), &dwsize, NULL); の部分で(dwSumがリストの全てのdataチャンク合計サイズ)、RIFF, data共に書き込んでるつもりです。 1つ目のwav分は再生され、その後はほぼ無音でたまに再生される。。ような感じに出来てしまいます。 それ以前に合計ファイルサイズの時点でおかしいのでRead/Writeとバッファの取り方がおかしいのでしょうか・・・。
681 :
676 :2009/05/18(月) 20:16:34
追記です。2つ結合して1つめのdata分の後、 次のdataサイズ分だけ0xCDで埋まっており、その次から2つめのdataが書き込まれてました。 それ以上の詳細はバイナリ睨んでましたが、皆目付かず状態になってしまいました・・・
682 :
679 :2009/05/18(月) 20:24:29
相変わらず適当にしか読まないで答えてみる。 何故WriteFileの書き込みサイズがdwsizeじゃないの? dataLoadedの増やし方も、意図がよく判らないがおかしい気がする。
とりあえずwavは忘れて、2つのバイナリを結合するだけのプログラムでも作ってみればいいだろ
dwsizeとdwNumberOfBytesToReadに分けたら上手く行きました! 的確なアドバイスありがとうございました。助かりました。m(_ _)m
>>682 の言うとおりだな。
読み込んだサイズで書き込まないとおかしくなるぞ。
すまそ、リロードしてなかった。
687 :
デフォルトの名無しさん :2009/05/19(火) 10:33:31
vista x64でVC++2008を使ってプログラムの勉強をしています。 ・動作している他アプリのハンドルなどから、そのアプリが32bitか64bitか判断する方法はありますか? ・動作しているOSが32bitか64bitか判断する方法はありますか? 上記の方法がわからなかったので、ご教示いただけませんか?
688 :
デフォルトの名無しさん :2009/05/19(火) 10:47:07
>>687 CreateToolhelp32Snapshot関数のTH32CS_SNAPMODULE32フラグを使え。
689 :
デフォルトの名無しさん :2009/05/19(火) 10:50:07
ところで、x64 でも CreateToolhelp 32 Snapshot なのか?
691 :
デフォルトの名無しさん :2009/05/19(火) 11:01:06
692 :
687 :2009/05/19(火) 11:29:34
ありがとうございます。 なかなか関数が探せず悩んでいました。
693 :
デフォルトの名無しさん :2009/05/19(火) 11:42:06
GetNativeSystemInfo() ※XP以降
system32とかkernel32.dllとかSysListView32とか 後のことを考えて付けとけって思う
後のことを考えてつけたんだろうけどな。 当時はSystem64とかにするつもりだったんだろうw
後のことを考えてなかったと思うよ kernel64.dllにしちゃうとLoadLibrary("kernel32.dll")が動作しなくなるからね
64ビットネイティブならそれでいいと当時は考えたんだろう
>>697 の言い分だと、LoadLibrary("kernel.exe")が動作しなくなるのになんで32をつけたのか
ということになるね。
考えているのは金儲けのことだけだろ
>>699 はあ?
LoadLibrary("kernel.dll")で
system32\kernel.dll (32ビット)
system64\kernel.dll (64ビット)
でいいだろ
702 :
デフォルトの名無しさん :2009/05/19(火) 13:44:17
16ビットならsystem\krnlx86.exeをロードすればいいだけの話だろ
コントロールの方はもっと謎だな SysListView32 (32ビットComCtl32.dll ver5.x) SysListView32 (32ビットComCtl32.dll ver6.x) SysListView32 (64ビットComCtl32.dll ver5.x) SysListView32 (64ビットComCtl32.dll ver6.x) の4種類が混在してるのか?
32bitと64bitの話題に便乗なんだけど 各ウィンドウにフックして作業をさせるプログラムを作ってるんだけど 64bitOSで動作させると 64bitでビルドしたDLLは64bitで動いているウィンドウに対して正常に動作するが 32bitで動いているウィンドウに対しては正常な動作ができません。 同じプログラムを32bitでビルドした場合は逆の動作をします。 一つの実行ファイルで32bitと64bit両方のDLLをロードすることはできないでしょうか?
できない
32bitプロセスには32bitコード、64bitプロセスには64bitコードを注入してやって そこからフックしかければいいんでない? 本体を64bitで作ってWriteProcessMemory+CreateRemoteThread。
馬鹿はレスしないで下さい。
馬鹿ってゆうやつが馬鹿なんだもん
>>704 どうにもならないからマニフェストが出来た。
manifestが根本的解決になるかねぇ ユーザーが簡単に用意できるから、プログラマーはcomctl32.dll ver5を想定して作ったのに 勝手にmanifest用意されてcomctl32.dll ver6で動かされたら堪ったもんじゃない。
うん、そこで「あぁユーザーに勝手にマニフェスト換えられたらどうしよぉぉぉ」とか 悩むプログラマは居ないと思うんだ
新しいWindowsバージョンを受け付けないアプリも、 プログラマが悩み過ぎた結果かもしれんね。
714 :
デフォルトの名無しさん :2009/05/19(火) 20:23:39
デバッグで変数の内容見て自分で考えろボケェ
デバッガでステップ実行
厳しいインターネッツですね
718 :
714 :2009/05/19(火) 21:08:30
いつからここは オンライン デバッグ スレになったんだ?
720 :
デフォルトの名無しさん :2009/05/19(火) 23:29:39
WM_PAINT 以外に描画処理が必要なメッセージある?? たまに再描画されなくて困る。
InvalidateRect() しろ
WNDCLASS に CS_VREDRAW と CS_HREDRAW が付いてなく +窓サイズ変えたときにアレ? とか InvalidateRect したのは良いけど メッセージループのスキマが無くて、なかなか WM_PAINT 飛んでこないとか (InvalidateRect の直後に UpdateWindow で即更新)
723 :
デフォルトの名無しさん :2009/05/19(火) 23:44:01
>>721 いやーなんかね、ちょっと違うんだよね
己の処理中に消えるならいざしらず、
かぶってるウィンドウを何回もかぶせてどかしてを繰り返すと
微妙に再描画されて微妙に消えてる。
100px の描画域のうち、ランダムに70%くらいは描画される。
FillRect と DrawText しかやってないんだけどなぁ〜
君の作ったプログラムだけがそうなるなら君のせい。 他人の作ったプログラムでもそうなるなら・・・。
ウィルス、ウィルスだな
悪いのは全て
>>723 ウィルスのせいでage基地なってるし
XPは再描画周りがたまに怪しい気がする。 まあVista以降ではどうでも良い話だから、あまり気にしていないけど。
どうでも良くないだろw
個人ベースなら良いよ別に
>>726 怪しいのはお前が書いたコードだろ
ド素人がOSのせいにしてんじゃねーよ
>>726 もちろん2000とか98あたりでも確認してのその発言だよな?
どうせ、某サイトに載ってる間違ったコードで正しく描画されないのをXPのせいにしてる馬鹿でしょ
732 :
デフォルトの名無しさん :2009/05/20(水) 13:26:54
馬鹿はお前たちだよw
733 :
デフォルトの名無しさん :2009/05/20(水) 14:09:49
馬鹿はお前一人だよw
みんな馬鹿さ
735 :
デフォルトの名無しさん :2009/05/20(水) 14:13:30
うぜえ。 子供かよ
いいえ、大人です
外見は大人です。太ってるけど
>>736 昼間から引き篭もって2chしてる人が大人なのですか?www
740 :
デフォルトの名無しさん :2009/05/20(水) 14:23:10
子供はレスしないで下さい。ウザイだけです。
喫煙室で一服しながら携帯で書いてるだけです
クズばっかりですね
グズばっかりですね
744 :
デフォルトの名無しさん :2009/05/20(水) 14:44:40
おい、ブタ共ちょっと質問なんですが
ブヒ?
746 :
デフォルトの名無しさん :2009/05/20(水) 14:48:40
今はクズしかいないから質問しても無駄ですね。また来ます
ずっとクズしかいないから二度と来なくていいよ
>>747 お前ずっといる気かよwwwwwwwwwwwwwwwwwww
749 :
デフォルトの名無しさん :2009/05/20(水) 14:54:10
では質問します よろしいでしょうか?
もうちょっと待ってください。
>>750 質問なんて無い、ただの荒らしでしょ?
本当に質問したい人だったら質問したいけどいいですかなんて訊かないよ。
質問です キーボードからの入力をフックして、仮想キーコードを置き換えるプログラムを作ろう思い、 SetWindowsHookEx()でWH_KEYBOARD_LLにフックをかけて、 フック関数側ではlParamからKBDLLHOOKSTRUCT構造体にアクセスし、仮想キーコードを変更するようにしたのですが、 このプログラムを起動した状態でメモ帳に何か文字を入力しても、キーコードが変更されず打った文字がそのまま出てきてしまいました。 フック関数からMessageBox()表示させることはできたので、フック関数自体は呼び出されている様です。 もしかするとWH_KEYBOARD_LLでは仮想キーコードの取得はできても置換はできないのでしょうか?
誰も質問したいけどいいですかって訊いてないよね。
>>757 荒らしに構う荒らしに構う荒らしに構う荒らし
759 :
デフォルトの名無しさん :2009/05/20(水) 15:38:26
うるせーぞ荒らし共
ここまで自演
IDが云々
目(略)
※(略)
>>323 XP 非Luna環境だったらほかのアプリでもなるかも。
ほかには、WM_PAINTでDefWindowProc()に渡しているとか。
例の糞サイトの糞コードをコピペして動かないだけだろ しかしまぁ、MSDNを読まないアホが解説サイトを作る時代とはな・・・
>>766 どのコードのことをいってるんだ?
というのはさておいて、Aero on/off(XP/2000等も同様) で クライアント領域のHDCから
得られる内容(画像)が、違うシチュエーションがあるのには、ちょっと参った。
イヤーン
769 :
726 :2009/05/20(水) 21:54:03
何かボロクソ言われててワロタwww Office2003のVBAエディタを作ったやつは死刑だな、これは。
ところで、Aero有効にしてる時に非クライアント領域に描画する方法ってある? GetWindowDCで取ったHDCだとウィンドウの枠に描けないんだけど。
DWMのAPI使うしかないと思う。
いや、DWMのAPI使っても出来なかったんだけど。
Custom Window Frame Using DWM
775 :
デフォルトの名無しさん :2009/05/20(水) 23:27:14
「非クライアント領域に描画したい」という質問に対して「クライアント領域にしろ」ってw 答えになってねーだろバカ
基地害、あげるなよ
>>773-774 Spy++みたいな、選択したウィンドウを排他的論理和の枠で囲むのがしたいのでその方法は無理だと思う。
何となくdwmapi.dllの非公開APIで出来そうな気もするけど普通には出来無さそうだな。。。
DwmExtendFrameIntoClientAreaを使うと描画コードを 軒並み変える必要が出てくるから使いづらいよな .NETだとプロパティ一つで解決できるみたいだが
Aero onだとGetWindowRectが実際とは違う値を返してくるのがウザイ
>>777 それって、自分で作成したウィンドウを対象ウィンドウに
重ねるだけでよくないか?
782 :
デフォルトの名無しさん :2009/05/21(木) 11:12:18
ツールバーの自作ってできますか?
ツールバーなんて一番簡単だろ ボタンの絵を並べるだけだからな
784 :
デフォルトの名無しさん :2009/05/21(木) 11:30:16
('д`)えー
785 :
デフォルトの名無しさん :2009/05/21(木) 11:42:20
ツールバーを自作しようと思って、少なくとも次のフラグを サポートする必要があって、それが結構ややこしい。 #define TBITEM_TEXT 0x0001 // テキストを表示する #define TBITEM_IMAGE 0x0002 // イメージを表示する #define TBITEM_SEPARATOR 0x0003 // 境界線を表示する #define TBITEM_BUTTON 0x0004 // ボタンとして機能する #define TBITEM_RADIO 0x0008 // ラジオボタンとして機能する #define TBITEM_CHECK 0x0010 // チェックボタンとして機能する #define TBITEM_COMBO 0x0020 // コンボボタンとして機能する #define TBITEM_CONTROL 0x0040 // コントロールとして機能する #define TBITEM_GROUP 0x0080 // ラジオボタンのグループの始まり #define TBITEM_GRAYED 0x0100 // 無効にする #define TBITEM_CHECKED 0x0200 // チェックする #define TOOLBARSTYLE_VERT_LAYOUT 0x01 // 縦型の配置 #define TOOLBARSTYLE_NOTOOLTIP 0x02 // ツールチップの非表示 #define TOOLBARSTYLE_FLAT 0x04 // フラットにする
786 :
デフォルトの名無しさん :2009/05/21(木) 11:45:51
間違えた。 #define TBITEM_TEXT 0x0001 // テキストを表示する #define TBITEM_IMAGE 0x0002 // イメージを表示する #define TBITEM_SEPARATOR 0x0004 // 境界線を表示する #define TBITEM_BUTTON 0x0008 // ボタンとして機能する #define TBITEM_RADIO 0x0010 // ラジオボタンとして機能する #define TBITEM_CHECK 0x0020 // チェックボタンとして機能する #define TBITEM_COMBO 0x0040 // コンボボタンとして機能する #define TBITEM_CONTROL 0x0080 // コントロールとして機能する #define TBITEM_GROUP 0x0100 // ラジオボタンのグループの始まり #define TBITEM_GRAYED 0x0200 // 無効にする #define TBITEM_CHECKED 0x0400 // チェックする
なんで「既成」のものをサポートする必要があるんだ? 「自作」なんだろ?
788 :
デフォルトの名無しさん :2009/05/21(木) 11:52:12
既成のものは、コントロールの追加がうまくできないことがあるので。
自作なんだから
>>786 なんぞ気にせず好き勝手に作れって意味だぞ。
またクソコード書いてんだろ・・・
791 :
デフォルトの名無しさん :2009/05/21(木) 12:30:19
マルチモニターでモニター間のマウス移動の制限をするプログラムを作成中です。
現在SetWindowsHookEx関数を使ってマウスのアクションをフックし、ClipCursor関数を用いて制限を行っていますが、
VistaのUACなどが表示される場合、マウスの制限が無効になってしまいます。
multiMouse
http://www002.upp.so-net.ne.jp/wata-evo/ ではUACでも制限が出来ているみたいなのですが、
どのような方法があるかご存知の方がいらっしゃれば教えてください。
とりあえずmultiMouseとやらをデバッグして使ってるAPIを見てみる
SetWindowsHookExはUACを超えられないから当然だろう というかそれが普通に可能だったら何の為のUACだよって話になる
794 :
デフォルトの名無しさん :2009/05/21(木) 20:22:36
>> 792 Thanks. その発想は無かった。 普段から頭使わないと発想が貧相になってだめですね。
795 :
sage :2009/05/22(金) 11:32:24
>>791 ですが、一応報告を
タイマーでClipCursor関数を呼び出すことで解決しました。
796 :
sage :2009/05/22(金) 12:28:56
どういたしまして
パッドで操作をするプログラムを作っているのですが どうもコントローラー変換コネクタを使った場合動作しません (他のPC用パッドだと動作しました) コネクタはJC-PS101Uを使いPS2のコントローラを接続しています。 JOYINFOEXを用いてjoyGetPosExを呼び出してもJOYERR_PARMSしか帰ってきません 変換コネクタはパッドとして使えない仕様なのでしょうか?
ドライバ次第 コントロールパネルからパッドの状態見られる?
SHCreateDirectory は文字列でパスを指定するみたいなんですが、 ITEMIDLIST を使ってフォルダを作るにはどうしたらいいの?
実体を指してこそのITEMIDLISTだろが
801 :
799 :2009/05/23(土) 11:36:28
そうっすよねぇ・・・。とすると、親フォルダの ITEMIDLIST を持っている場合、 1)親フォルダのITEMIDLIST を文字列のパスに変換。 2)なんか適当な API でフォルダ作成。 3)新フォルダのパスを ITEMIDLIST に変換。 なんか2度も変換するのはさすがにまどろっこしいので、 もっといい方法あるかなぁと思って聞いてみました。 あきらめます。 ありがとうございました。
親フォルダがディレクトリとは限らないのだから当然のこと
当然ではないな パラメータチェックで弾けばいいだけだし
↑話を理解してない馬鹿
自虐的なヤツだなw
パラメータチェック(笑)
学生(笑)
>>806 パラメータチェック に一致する日本語のページ 約 786,000 件中 1 - 10 件目 (0.23 秒)
どこが笑えるの?w
USBでRS232cのように面倒な手続き無しにデータのやり取りをする方法はあるのでしょうか?
libusbとか
814 :
797 :2009/05/23(土) 16:40:28
コントロールパネルからだときちんとボタンの入力を確認できます。
ID1以外でも試してみた?
それって、uJoyIDが間違っているというエラーじゃないの?
818 :
797 :2009/05/23(土) 17:20:24
他のパッドだとuJoyID 0 で動作しました。 コントローラー変換コネクタだとuJoyID 1 で動作しました。 0だと1P 1だと2Pという意味ではないんでしょうか?
ただのデバイスIDだろ
IDがJOYSTICKID1/JOYSTICKID2固定なのはNT4.0だけで、 通常は0-15全てのIDを一通りチェックすべき。 0から順番に割り当てられる保証は無い。 って事だと思う。APIの仕様見る限りそう解釈できたのだけど。
DLLのクラスを使いたいときはどうしたらいいでしょうか?
COMの実装みたいにCreateInstanceをDLLから出しておけばいいだろ
クラスに__declspec(dllexport)をつければいいじゃん
マングリングの問題があるからそんなに単純な話じゃないだろ コンパイラが確実に一致しているならそれでいいけど
下位互換性はあるだろ
>>825 下位互換といっても異なるコンパイラ間(gcc,vc,bcc)だと違うのでは?
同一コンパイラ使えばいいだけだろ
クロスコンパイラを視野に入れてるならCでエクスポートするだろJK・・・
おれは JC 派だがな
俺もJCだな
C#なら問題ない
VBなら問題ない
オレなら問題ない
でもC++なら大問題発生
C++でも問題ないよ。
>>834 は馬鹿じゃないの?
はぁ?
平壌運転です
で、このスレにはJCおらんの?
もうだめだこのスレ
おれが居る限り大丈夫だ by ????
843 :
デフォルトの名無しさん :2009/05/25(月) 16:16:50
フォルダへのショートカット・アイコンを作成、それをダブルクリック して開かれるエクスプローラには、左側に「タスクメニュー」が表示 されていて、エクスプローラでは[表示]メニュー→[エクスプローラバー] で、これを[フォルダツリー]などに変更できました。 このタスクメニューを、プログラムから消したいのですが、APIで制御 可能でしょうか、どの辺のDLLとオブジェクトを見ればよいでしょうか?
844 :
デフォルトの名無しさん :2009/05/25(月) 16:29:15
さっさと教えてくださいよ
BHO だな
846 :
デフォルトの名無しさん :2009/05/25(月) 16:43:40
うるせーよ
シッー!
848 :
デフォルトの名無しさん :2009/05/25(月) 16:48:43
やっぱこの時間ってクズしかいねーんだな
いちいち自己紹介しなくても分かってるから
850 :
デフォルトの名無しさん :2009/05/25(月) 17:04:29
知らないならレスするなクズ
もうだめだこのスレ
852 :
デフォルトの名無しさん :2009/05/25(月) 17:17:43
知らないならレスするなクズ
853 :
843 :2009/05/25(月) 17:43:09
>>845 BHOについて知ることができました。ありがとうございました!!
これでネットバンキングのPWを盗んだりされてしまうことが
あるのですね、勉強になります。またよろしくです!
ほす
855 :
デフォルトの名無しさん :2009/05/26(火) 19:33:41
スレッドについて質問です ファイルを読み込んでいる時に並行してロード画面を表示させたいのですが 大まかなやり方等アドバイス頂けませんか スレッドに触れるのは今回は初めてです よろしくお願いします
あ CreateThread(;亜ldjkg;ぁfkじぇs;lfかj;えs) WaitForSingleObject(あ;dflkがf;えjf;あj) CloseHandle(;gkぁじぇ;sfkじゃ;) い InitializeCriticalSection(あ;lgkじゃ;ぇsjか) CreateThread(
858 :
857 :2009/05/26(火) 19:47:58
下記のコードで「buf」のアドレスを指定しているのですが IRP_MJ_DEVICE_CONTROLに定義してある関数がコールされた際 PIRP(I/O リクエストパケット)のシステムバッファに アドレスが格納されていないのですが、誰か心辺りがある方いませんか? 色々錯誤してみたのですが自分にはもう限界ですorz コアな話題ですが誰かアドバイスお願いします。 unsigned char buf[8192]; DeviceIoControl ( hFile, IOCTL_ID_DEBUG, &buf[0], sizeof(buf[), &buf[[0], sizeof(buf[), &dwRet, NULL ); 【事象】 DeviceIoControlで受け側バッファを指定しているはずなのに カーネル側でディスパッチされてきた際に何故か irp->AssociatedIrp.SystemBufferがNULLになる
>&buf[0], &buf 加えて入力バッファと出力バッファが同じ。
861 :
859 :2009/05/27(水) 00:53:26
>>860 返信ありがとうございます。
&bufと&buf[0]ではアドレスが全然別物かと。
結局ユーザ側のアドレスが渡ってきてないのでそこは関係ないかと思います。
※確認済み
入出力バッファも同じで渡す分に問題ないのではないかと思います。
※確認済み
難しい事聞いても ここの人には答えられません
こんなレベルでWDKとか大丈夫かよ。
※確認済み とか偉そうに後出しするぐらいなら最初から情報は全部出しとけよ。
こんな少ない情報で誰が答えられるんだよw hFile が何の値なのかも書いてないし、 sizeof(buf[) とか &buf[[0] とかそもそも文法エラーだろ
> &bufと&buf[0]ではアドレスが全然別物かと。 へー。
>>859 IOCTL_ID_DEBUGはどうやって定義した?
ちゃんとCTL_CODEマクロを使って適切に定義してる?
C言語もロクに分かってない奴がデバドラ開発とか、どう考えてもネタだろw もうスルーしとけって
869 :
859 :2009/05/27(水) 01:24:35
>>867 IOCTL_ID_DEBUGは適当に9999という値にしてます。
CTL_CODEマクロというのはちょっと知らないので調べてみます。
>>863 やり始めて間もないのであまり苛めないでください(´・ω・`)
>>865 そこはコピペして変数名変えたのでおかしくなってますね(´・ω・`)
>>864 偉そうにいったつもりはないんですが、
そう感じたなら申し訳ない。
「※確認済み」というのは念の為にレス確認後、
確認したという意味で後出しではないです。
hFileはデバイスドライバをCreateFileAでオープンかけています。
hFile = CreateFileA( "\\\\.\\TEST",
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL );
dwRetはDWORD dwRetの宣言のみなので
初期値は処理系に依存してると思います。
因みにカーネル側にスタックロケーションのポインタの取得は
できていて、識別ID(IOCTL_ID_DEBUG)もちゃんと取得はできています。
カーネルモードなんて一歩間違えればBSoDと隣り合わせなのに、 適当に〜とか、ある意味尊敬するよw
とりあえず入出力のバッファを別の配列で指定しろ
>>861 で明らかに間違ってる対応してるのは分かったから
とりあえず&bufと&buf[0]の違いは認識しろって
>>869 >IOCTL_ID_DEBUGは適当に9999という値にしてます。
ダウト
コントロールコードは意味のある値だよ
リードアクセス/ライトアクセスはもちろん
バッファIOでアクセスするかダイレクトIOでアクセスするかの指定も含まれている
テキトーな値にしたら動かないだろ
うるさい黙れ
すいません
既に結論でてるのに偉そうにダウトとか何様のつもりだ
ダウトとか馬鹿みたいってこと?
回答者のくせに少し上のレスも見てないのか
ダウト?w
ダウト!w
僕がダウトです!
存在がダウト
前から気になってたけど、2chではダウトって言葉を間違って使われているな。 ダウトは「疑う」であって、明らかに間違っていることに対して使うのは変だよ。 トランプのダウトは裏返しに出すから、ダウトなんだよ。 スレ違いだが、一度言っておきたかったので。
Sleep(INFINITE)って、49.7日が経過しても起きたりしない?
NT系なら
>>888 SleepがPCの内蔵時計ベースで動いてると思ってるのかこの馬鹿w
>>888 こういうアホがなんで技術系の板にいるの?
OSの時計なんていじっても無駄。
>>886 ヒント:タイムマシンに乗って49.7日後へ行って試す
>>892 GetTickCount の値を自由に操作できる?
>>886 と同じ質問を以前このスレでしたことあったのに、そのときは誰もレスくれなかった。くやしい…ビクンビクン
2chではよくあること
>>886 永眠したら四拾九日が経過しても起きたりしない。
百箇日を過ぎても、だ。
つまり、INFINITEは内部的には0xffffffff_秒という値ではなく 「永眠しろ」を意味するフラグとして扱われてるってことか。
899 :
859 :2009/05/27(水) 21:59:37
>>873 さっき帰宅して返信が遅れましたが、
IOCTL_ID_DEBUGの値を変えたら
正常にアドレス取得できました!
>コントロールコードは意味のある値だよ
そうだったんですね。
全然意識せずに適当な値を使ってました
その辺をもう少し調べて気をつけるようにします。
本当にありがとうございました。
本当に死ね
0xffffffff_秒が DWORD値で何秒か知ってる?
知らなくていい死ね
人は生きろと言われても生き続けるのは難しいが 死ねと言われなくても死んでしまう お前の嫌いなあいつだって気長に待てば勝手にくたばるさ
待たなくていい死ね
>>901 49.7日と散々出てるだろ
さっさと死ね
生きたいならC+を勉強しろ
APIの知識が無くてレスもロクに読まずに脊髄反射で書き込む馬鹿が居ついてる。
WinAPIでデフォルト引数がついてつ奴ってあるじゃないですか。 あれってC++の機能ですよね? でもそういうAPIって普通にCから使えますよね。 で、自分でデフォルト引数を使ったエクスポート関数のある C++のDLLを作ったんですけど、Cからは使えないんですよ。 関数が初期化されようとしました、とかいって。 一応DLL側でextern "C"とかは入れて関数名はCっぽく なってるんですけど、やっぱりC++のDLLはC++からしか 使えないんですかね?デフォルト引数とか使ってしまうと。
開発していたゲームが急にfps60からfps30ぐらいになったので色々調べた所、 begin = timeGetTime(); for(size_t i=0; i<60; ++i) Sleep(16); end = timeGetTime(); ってやるとend-beginが1800ぐらいになった。 Sleepに200ぐらいを指定するとほぼ正しい時間スリープするけど 2桁ぐらいの小さい数字を指定すると、指定した時間の2倍近くスリープするようなんだ。 もしかしたら自分の書いたコードのどこかにバグがあるだけかもしれないけど vistaをSP1からSP2にアップデートしたのでそれが原因かもしれない。 mingw-3.4.5とmsvc2008の両方で試したけど同じ結果だった。 もし原因がわかる人がいたら教えて下さい。 それともSleepにそんな精度を求める事自体間違っているんでしょうか。 もしよかったら、Sleep(16)でほぼ16msスリープするか試してみて下さい。
Sleep()の説明をMSDNで読んでから質問しろ
日本語版を読んで「よく分かりません」と返してくるというオチに10セント
Googleって設定で「メニューやテキストの言語」を英語にしないと ウェブ全体から検索しても日本語のサイトばっかりになるのがウザイ しかもマイナーなAPIを検索したら、語句が似てるだけで 全然違う検索結果を上位に表示する機能がすげぇ邪魔 なんかリニューアルする度にどんどんお節介になってくるし、もう潮時か? とりあえず、MSDN英語版の検索には全然使えなくなっちゃったよ
はいはいそれでそれで?
Googleが使いにくくなった以上、質問する前にググれなんて的外れもいいとこ。
ググれなんて言ってねーし。MSDNで検索すればいいだけだよな。
そうだね^^
>>914 WinMainの頭にでもtimeBeginPeriod(1)って入れてみな
えっ
えっていう
なにそれこわい
>>922 ゲームの単位時間ループみたいに、ある程度正確な時間を計ることが
要求されるとき::Sleep()を使うのはどうかという問題じゃないのか。
timeBeginPeriod()/Sleep()じゃ、環境間のばらつきがありすぎるだろ。
>>926 914が今知りたいのは、Sleepの精度が急に落ちた原因だろう。
その答えが、timeBeginPeriodがSleepの精度にも影響するという事実。
>>884 このレスを境に「ダウト」とか突っ込んでくるおっさんのレスがほとんどなくなったりしてなw
ダウト
本当のこと言ってるように見せかけた嘘だからダウトなんだろう
1ms 精度の 時間経過計測はできても 1ms 精度の スレッド待機は(実質的に)できない Sleep(x) は x ms 以上スリープすることを保証しているだけで x ms 後に必ず wake することは保証していない
914です。
みなさん、アドバイスありがとうございます。
MSDNを読んでSleepが他のスレッドに処理を移し、指定された時間だけ呼び出し元スレッドに戻らないという事は知っていました。
しかし今まで16を指定するとほぼ16msで戻ってきていたのが、急に精度が悪くなったので質問しました。
>>925 確かに正確にfpsをキープするのにSleepだけなのは問題ですが
手を抜きたかったのと、自分のPCでは十分な精度があったので使っていました。
今もう一度Sleep(16)を試してみたところ、以前と同様の精度に戻っていました。
昨晩は何か重たいスレッドでも動いていたのでしょうか・・・。
プログラムを動かす前はCPU使用率がほぼ0%でCPUもcore2quadを使ってるんですが。
今度からはSleepに頼らずにちゃんとウェイト処理を実装しようと思います。
みなさん、どうもありがとうございました。
>>932 だから試しにtimeBeginPeriodにいろいろ値を入れて試してみてよ。
同時に動く別アプリで設定してみても面白いぞ。
>>932 timeBeginPeriodの設定はシステムグローバルなので、
他のアプリケーションが設定するだけで影響する。
935 :
デフォルトの名無しさん :2009/05/28(木) 14:12:44
RasDialを使ってダイヤルアップ接続をしてるのですが 指定したエントリ名が現在接続されているかどうかを 識別する方法を教えてください
その指定したエントリ名がRasEnumConnectionsの結果に 入っているかを確認するとか。
937 :
デフォルトの名無しさん :2009/05/28(木) 17:42:19
普通にRasGetConnectStatusでできちゃった^^
ファイルマッピングオブジェクトのサイズはどうやって調べるのですか? ハンドルをGetFileSizeに渡して使うと無効なハンドルというエラーが出ます。
アマレココのDirect3D9キャプチャプラグインが作りたいと思っています。 それには絶対Direct3DのAPIをフックする必要があるので、DirectDrawSurface7キャプチャプラグインを 改造して作ろうと思ったんですが、DLLエクスポートじゃない関数をフックする方法が分かりません・・。 ddHookTarget(インプラントのDLL)では、下のようにしてIDirectDrawSurface::FlipとBltの関数アドレスを 取得しているようですが、なぜ44と20なんでしょうか? Direct3D9ならIDirect3DDevice9::EndSceneをフックすればFPS表示、キャプチャできるかな・・ LPDIRECTDRAWSURFACE7 pdds; DIRECTDRAWFLIP pFlip; // 本来の関数アドレス:第一フック・フリップ用 DIRECTDRAWBLT pBlt; // 本来の関数アドレス:第一フック・ブリット用 pFlip = (DIRECTDRAWFLIP)*(DWORD *)(*(DWORD *)pdds + 44); pBlt = (DIRECTDRAWBLT )*(DWORD *)(*(DWORD *)pdds + 20);
その程度も分からんようならAPIフックなんてやめとけ
941 :
デフォルトの名無しさん :2009/05/28(木) 23:54:42
942 :
デフォルトの名無しさん :2009/05/29(金) 17:12:13
SetForegroundWindowでアクティブにしようとしても たまにタイトルバーだけ点滅してアクティブになってくれない時があるのですが どうしたら正常にアクティブになってくれますか?
943 :
デフォルトの名無しさん :2009/05/29(金) 17:14:14
いやアクティブにならないと言うより最前面にこないって感じです
>>942 SetForegroundWindowの前に
AttachThreadInput
勝手にPOPされるのがウザイのでMSが仕様変更して出来ないようにしました。 AttachThreadInputで何とかなる場合もあるが万能ではない。 >この旧バージョンからの変更により、アプリケーションは、ユーザーが他のウィンドウで作業しているときに >強制的にフォアグラウンドウィンドウを設定することはできなくなりました。 >その代わりに、SetForegroundWindow 関数は、ウィンドウをアクティブにし(SetActiveWindow 関数の説明を参照)、 >関数を呼び出してユーザーに通知します。詳細については、「」を参照してください。
946 :
デフォルトの名無しさん :2009/05/29(金) 17:40:14
>>944-945 AttachThreadInputつかってるサイトを参考にやってみますた
とりあえずこれで暫く様子みてみまふ
勝手に最前面に出るのが良くないからわざわざ仕様変更したのにな。
最前面に出したがる
>>946 のような低脳プログラマは絶滅してほしい。
まあまあ
同意
ていうかイベント通知系アプリで最前面にでないと逆に意味なくね? 影でこっそり「ジカンダヨー」(ボソ)って馬鹿かとwアフォかとw
馬鹿は黙ってろ
>>950 目覚ましと時計の人はお引き取りください。
すいません PostMessageなどで発行したメッセージのキューにどの程度溜まってるか知る方法はありますか? APIでもツールでもどちらでも構いません ウィンドウズ全体での数が分かると最高です
またウィルスか
メッセージキューが溜まり続けて一杯になってるからフリーズしています と愉快な言い訳されてるから反証を叩きつけたいの。 大体SendMessageがメッセージキュー使うのかよ……?
一杯になったら破棄されるだけだろ アホか
破棄じゃねえよ。PostMessageがFALSE返してお終い。 反証するまでも無くどっかでブロックされてるのは明らかだわ。
>>955 フリーズっていうと、無限ループ、IOのread、排他処理用のロックで待ち
とかありがちだけど、
無限ループならCPU使用量から推測、後者なら userdump や ADPlus で
ダンプとって、どのAPI呼び出したところで停止してるかとかから
調べられないかな?
そういえば、固まったアプリに対してキーボードを打ち続けると、 途中からビープ音がなるよな? あれってキューがいっぱい、ってことではない?
windowsアプリのスケルトンを書き直してるんだが C++でちゃんとクラスに分けるのって難しいよな 今は、 CApplication;//HINSTANCE保持、多重起動防止 CWindow;//HWND保持、メッセージループ な分け方をしてるんだが、どうも綺麗じゃない うまい方法を知ってる人がいたら教えて欲しい
MVCやMVPパターンで作ってみては? 自分はMVPが好き
>>961 thx!デザインパターン的なものがあったのか
.Netで使われているようなビジュアルスタイルなメニューをC++で動かす方法はない?
CLI、かな あれをC++とは思いたくないが・・・
ビジュアルスタイルなメニューって、Office2003の劣化コピーしたようなアレの事か?w フリーソフトのスクショであれを見ると.NET製なのが一目で分かってDLする気が失せる。
VS2008SP1のMFC使う
967 :
デフォルトの名無しさん :2009/06/01(月) 12:31:26
Win32++がいいんじゃないかな?
リストビューのカラムにイメージを表示させるのは HDITEM hi = new HDITEM(); // HDITEM 取得 hi.mask = HDI_FORMAT; SendMessage(columnHandle, HDM_GETITEMA, headerIndex, ref hi); // 設定 hi.mask = HDI_IMAGE|HDI_FORMAT; hi.fmt |= HDF_IMAGE; // 取得しておいたフォーマットに HDF_IMAGE 追加 hi.iImage = imageIndex; // ImageListのID SendMessage(columnHandle, HDM_SETITEMA, headerIndex, ref hi); この方法で出来たのですが、カラムのイメージを非表示に戻すにはどうやったらいいのでしょうか? hi.iImage = -1 とかにしてみたんですがエラーが出てしまいます。
第一それコンパイル通ってるのか
> HDITEM hi = new HDITEM(); 俺も一瞬コンパイル通るのかと思ったがC丼じゃねーの? つーかC丼ならAPIなんか使わなくても出来るだろ
>>969 >>970 すいません。
上のソースを元にDelphiでAPIを使って動かしてます。
一応、上のソースをDelphiに書き換えたらコンパイル通ります。
CやC#をほとんど使ったことがないので
上のはCのソースコートと思って書き込んでしまいました。
だったらその「元」のソースがあるHPで聞けばいいだろ
>>967 気になって調べたんだが、これ日本語ドキュメントとかって存在する?
ねーよそんなもん。
じゃあ、プランBでいこうか
>971 hi.fmt |= HDF_IMAGE; これを逆にして hi.fmt &= ~HDF_IMAGE; じゃ駄目?
HDITEMに対してHDM_SETITEMAと決め打ちしてたり、もうねぇ
979 :
デフォルトの名無しさん :2009/06/02(火) 09:54:20
nn
980 :
デフォルトの名無しさん :2009/06/02(火) 17:51:42
お前らのPCに侵入してHDをフォーマットするAPIを教えてください
realbasicでWINのAPI使ってる方いらっしゃいますか?
お客様の中に
test
unko
マルチディスプレイ環境で、とある座標がどれかのディスプレイに収まっているかを調べるにはどうすればいいですか? GetWindowRect(GetDesktopWindow(), ...) だとプライマリディスプレイについてしか 調べることができません。
MonitorFromRectとか〜Pointのことか?
ちげーよw
>>985 結果を何で取得したいのかによって異なる。
モニタハンドルでいいなら、MonitorFromXXXでOK。
ウィンドウハンドルからIMEがONかOFFかを識別する方法と教えてください
ちなみに、 FindWindowで取得したハンドルにImmGetContextをして ImmGetOpenStatusをやるとダメですが 自分のフォームとかのハンドルを与えるとちゃんと取れます。 これをFindWindowで取ったハンドルでも取得する方法を教えてください
SendMessage(ImmGetDefaultIMEWnd(hwnd), WM_IME_CONTROL, IMC_GETOPENSTATUS, 0)
次スレ↓
…了解
WinMain() の質問箱は此処ですか?
言語のスレだな CならCスレ
main()ならC言語だけど、WinMain()ならWin32APIでいいんじゃないの? 内容にもよるけど
え?
コールバックやエントリポイントは当然APIの範疇
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。