960 名前:デフォルトの名無しさん[sage] 投稿日:2008/06/08(日) 10:58:25
>>958 >>959 のとおり、イベントログに情報がある。
ただ、OS起動やシャットダウンイベントはデフォルト設定だと記録されないはずなので、
設定を変えるか、もっと簡単にやりたいなら正確ではないけどイベントログサービスの
起動/停止時間をOS起動/シャットダウン時間とみなしてしまうやり方もある。
例がWin32APIでなくて申し訳ないけど、以下WMIのインタフェース使うスクリプトの例。
var query =
"Select * from Win32_NTLogEvent where " +
"LogFile = 'System' and SourceName = 'EventLog'";
var systemlogs = GetObject("winmgmts:!\\\\.\\root\\cimv2").ExecQuery(query);
var e = new Enumerator(systemlogs);
for (; ! e.atEnd(); e.moveNext()) {
var log = e.item();
if (log.EventCode == 6005) {//イベントログサービス起動
WScript.Echo("起動: "+log.TimeGenerated);
}
else if (log.EventCode == 6006) {//イベントログサービス停止
WScript.Echo("停止: "+log.TimeGenerated);
}
}
めちゃ助かりました。ありがとうございます。
参考にして書いた.NETバージョンです public static DateTime イベントログの前回停止時間() { EventLog[] logs = EventLog.GetEventLogs("."); // ローカルコンピュータ DateTime result = DateTime.MinValue; bool ok = false; foreach (EventLog log in logs) { if (log.Log != "System") continue; foreach (EventLogEntry e in log.Entries) { if (e.EventID != 6006) continue; if (e.TimeGenerated > result) { result = e.TimeGenerated; ok = true; } } } if (!ok) { throw new ApplicationException("イベントログの前回停止時間の取得失敗"); } return result; }
13 :
デフォルトの名無しさん :2008/06/08(日) 23:03:03
英語だらけ
過去ログの横の★って何?
datが行方不明って事では
↑「いやー ごめんなさい。」に巻き込まれてログなし
誰もまともに答えてないところにちょっと情けなくも思ったが >>前スレ904 ファイルをD&Dで渡す動作を再現するならTMPGEncのHWNDを検索で見付け、 HDROPを自前で作ってWM_DROPFILESを投げればいい HDROPの作り方は検索すれば出てくる
訳) やっと私に分かる質問を見つけて、喜び勇んでやってまいりました。
訳:かまってほしいな
オンラインゲームにキーストロークを送るツールを作ろうと思い、
全スレ
>>73 を参考にコードを書いてみたのですが、まったく反応なし。
>>53 で非推奨されている
keybd_event(0, MapVirtualKey(DIK_A) ,KEYEVENTF_SCANCODE ,0)
とかやってみたけどダメだった.
JoyToKeyではちゃんと送れているので、方法がない訳じゃないとは思うんだけど...
他のやり方があれば教えてくれ。
ま た チ ー ト か
全スレw
やめときなさい、普通に遊びなさい。
能書きはいいからさっさと教えろ 知らないならレスするなカス
知ってても誰も教えてくれないよ。ニートちゃん。
やり方知ってるよ 当然教えないよ ゴミ君
↑これも俺
↑これも私
↑これも↓これも僕
呼んだ?
| ̄``''- 、 | `゙''ー- 、 ________ | ,. -‐ ''´ ̄ ̄`ヽ、_ / |, - '´ ̄ `ヽ、 / / `ヽ、ヽ / _/ ヽヽ/ / / / / / / ヽハ く / /! | 〃 _/__ l| | | | | | | ||ヽ \l// / | /|'´ ∧ || | |ー、|| | | l | ヽ /ハ/ | | ヽ/ ヽ | ヽ | || /|ヽ/! |/ | ヽ / | ||ヽ { ,r===、 \| _!V |// // .! | | || |l |ヽ!'´ ̄`゙ , ==ミ、 /イ川 |─┘ | ハ|| || | """ ┌---┐ ` / // | V !ヽ ト! ヽ、 | ! / //| / ヽ! \ハ` 、 ヽ、__ノ ,.イ/ // | / ┌/)/)/)/)/)/)/)/)/)/)lー/ ` ー‐┬ '´ レ//l/ |/ |(/(/(/(/(/(/(/(/(/(/│|| |\ 〃 r'´ ̄ヽ. | | ト / \ /  ̄`ア | | | ⌒/ 入 〉  ̄二) 呼んでないが | | | / // ヽ 〈! ,. -' | | ヽ∠-----', '´ ', | \| | .お前の態度が | |<二Z二 ̄ / ', | | | _r'---| [ ``ヽ、 ', | | | 気に入らない >-、__ [ ヽ ! \.| l. ヽ、 [ ヽ | ヽ| \ r' ヽ、 |
ウィンドウのメニューの背景色を変えたいのですが、 どうすれば出来ますか?
オーナードロー
質問です。 case WM_SYSCOMMAND: switch(LOWORD(wp)) { case SC_RESTORE: result = ::AnimateWindow(hWnd, 1000, AW_ACTIVATE | AW_CENTER); if(!result) { LPWSTR lpMessage = 0; DWORD error = ::GetLastError(); CONSOLEMSG(L"ERROR:[%d]\n", error); if( ::FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |FORMAT_MESSAGE_FROM_SYSTEM, NULL, error, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), lpMessage, 0, NULL) ) { if(!lpMessage) MessageBox(hWnd, lpMessage, NULL, MB_OK); } else { error = ::GetLastError(); CONSOLEMSG(L"ERROR:[%d]\n", error); } } break; case SC_MINIMIZE: ::AnimateWindow(hWnd, 500, AW_HIDE | AW_CENTER); ShowWindow(hWnd, SW_MINIMIZE); return TRUE; } break;
39 :
38 :2008/06/09(月) 22:19:08
ウィンドウを最小化時と元に戻すときにアニメーションさせようと 上記のように元に戻すときのアニメーション書いたんですがうまくいきません。 原因が分かる方教えてください
オードーナロー
>>39 うまくいかない、じゃなくて具体的な現象を書けよ。
原因究明の重要な情報なんだからさ。
42 :
38 :2008/06/09(月) 22:59:19
>>41 説明足がたらず、すみません。
最小化時はウィンドウのアニメーションが実行されるんですが、
元に戻すときにAnimateWindowが失敗してアニメーションが実行されないんです。
GetLastErrorでエラーをチェックすると正常終了のIDがセットされているので原因がよく分からないのです。
ちなみにCONSOLEMSGはOutputDebugStringのマクロです。
LVS_REPORTなリストビューで、カラムの文字列の左右のマージンを知りたいのですが、 どのように計算すればいいのでしょうか?
>>43 以下の関数を使う。
int ListView_GetColumnMargin(HWND hwnd) { return 4; }
ListView_GetColumnMargin はおおよそのマージンを返します。
ワロタ
47 :
44 :2008/06/10(火) 00:18:38
すまん間違えた。
int ListView_GetColumnMargin(HWND hwnd) { return 6; }
>>45-46 一応マジレスなんだが。
正確には GetSystemMetrics(SM_CXEDGE) * 3 らしいが。
こいよ、ベネット
こいよ、ベネット
>>42 AW_ACTIVATEは非表示状態から表示させるもので、Restoreさせるものではないから。
51 :
38 :2008/06/10(火) 01:37:26
>>50 なるほど!
ということは、Restoreさせた後にウィンドウのアニメーションをさせたい場合は、
独自メッセージを飛ばす必要があるのでしょうか?
それともRestoreされたことを通知するメッセージがあるのでしょうか?
WM_ACTIVEをキャッチすることも考えたんですが、
Restoreされたときだけを抜き出す方法が思いつかなかったのでアドバイスお願いします。
また、アニメーションさせるとき1度SW_HIDEで非表示にしてAW_ACTIVATEで表示させるという流れでいいのでしょうか
少しは自分で調べろ
>>53 間違ってないよ
知らないならレスしないでね
CloseHandleの戻り値の型はBOOL。 0が偽(失敗)で、それ以外の値は真(成功)。 ちなみにS_FALSEの値ははたしか1のはず。
57 :
55 :2008/06/10(火) 08:40:38
>> 56 すみません. 調べてみたらその通りでした. CloseHandle() で F1 押して CBlobCache::CloseHandle の説明を見てました. それにしても, 戻り値の 1, 0, -1 の区別は統一性が無いですね. (自分が知らないだけで良い覚え方とかあるのかな.) 素早い返信ありがとうございました. さすが2ch.
Win32APIは統一性の無さがウリ
HRESULTはCOMまわり
>>56 それ、せめてMSDNには "戻り値はTRUE, FALSE" って書いてほしい
戻り値がnonzeroとか書かれると、if文で戻り値を判定するときにそういう条件文を書くべきなのか迷う
いや、最初からC/C++のifその他の判定は0か非0かだろ
if (Hoge() == TRUE) なんてやってる人のコードは信用できないよな
BOOLでTRUE/FALSE以外を返す関数の方が信用できない どういう設計なんだよ
おっとGetMessageの悪口はそこまでだ
所詮はDWORDさ。
66 :
60 :2008/06/10(火) 11:28:06
>>62 そういうコードを書きたくないから言ってるんだよ…
BOOLを戻すと宣言してあるなら、それ以上の判定は必要ないのはわかるよ。実際書かないし。
nonzero(数値)を戻すなら、せめて "ブール値の真として..." くらい書いてくれないかなってこと
CのAPIである以上、数値のnonzeroとブール値の真は同じだからどっちが書いてあっても気にするなってことなのかな
Cの特徴だしな
>CのAPIである以上、数値のnonzeroとブール値の真は同じだからどっちが書いてあっても気にするなってことなのかな 間違いだらけだ。
69 :
60 :2008/06/10(火) 12:13:01
>>68 マジか
規格の少なくともifやwhileの項にはブール値なんて存在しないとかそういうこと?
C++ならboolがあるが、C99でないCにブール値なんて概念自体存在してるのか?
>>70 ブール値の概念は存在しているが規格には書かれていない ってところかな
72 :
デフォルトの名無しさん :2008/06/10(火) 15:45:32
初歩的な質問なのですが、CreateWindowExでボタンを作りました。 そのボタンにアクセラレータ?(SHIFT+'A')をつけたいのですが、 CreateWindowExで作成したボタンにアクセラレータをつけるにはどうすればいいのでしょうか? 環境はVC+SDKです。よろしくお願いします
>>72 CreateAcceleratorTable
74 :
72 :2008/06/10(火) 17:07:40
>>73 レスありがとうございます。
CreateAcceleratorTableで作った場合、
ボタンアクションがありません ><。
BM_CLICKでも投げとけ
>>74 まさかとは思うが、「ボタン(A)」(Alt+A)のことじゃないだろうな?
こっちはボタンのキャプションを「ボタン(&A)」にすれば勝手に機能するぞ。
アクセラレータは発動したときにあくまでWM_COMMANDを発行するものであって、 ボタンのクリックをシミュレートするものではない。
>>66 Win95で適当に試した結果
EnableWindow(hwnd, TRUE) で成功するとTRUEではなく 8 が返ってくる。
EnableWindow(hwnd, 0x10000) は失敗する。(下位16ビットしか見ていないらしい)
GetWindowRect(hwnd, &rect) で成功するとTRUEではなく 500 ~ 599 が返ってくる。
ShowWindow(hwnd, SW_SHOW) で直前に表示されているとTRUEではなく 16 が返ってくる。
こういう謎な仕様は9x系で終わっていてほしい。
とりあえず上のAPIはNTでは大丈夫っぽいが。
76が正解の予感
TranslateAcceleratorしてないだけだろ
>>78 APIのリファレンスに、引数はTRUE/FALSEを指定するとある。
zero/nonzeroとは書いてない。
戻り値は、zero/nonzeroと書いてある。
TRUE/FALSEを返すなんて書いてない。
説明は正しい。
>>81 説明の正しさ、じゃなくてBOOLなのにTRUE/FALSE以外を返すなということ。
GetMessageのように意味があってTRUE/FALSE以外を返すわけでも無さそうだし。
Win16のときの、1バイトでも節約、て状況のせいなのかもな。 そして互換性のためにうっかり変えられない、と。
8や500を返すのが互換性ってのもおかしな話だなぁ
if(GetOpenFileName(&ofn) == IDOK) { ~ } とか書いてたら正常動作していたので間違いに気付かなかった事ならある
87 :
72 :2008/06/10(火) 18:37:18
>>75-77 >>79-80 レスありがとうございます
>>77 が僕が今詰まってる問題に一番近いっぽいです ><。
アクセラレータは動いてるのですが、ボタンシミュレートが問題です。
だからSendMessage(hButton,BM_CLICK,0,0)でいいだろうが
89 :
72 :2008/06/10(火) 18:52:00
>>88 おおっ
ボタンシミュレートできました
>>88 さん、どうもです。感謝ですー ><。
人の話を聞かない性格の典型的パターンだな
>>83 実装効率を考えると真の際 TRUE 以外の値を返した方がいい場合もある。
TRUE しか返さない、としてしまうと、その効率のいい実装が取れなくなってしまう。
例えば is 系関数の戻り値を戻り値にしたい場合とか。
is 系関数はメモリ効率のため全ての関数で1つのテーブルを共有し、
ビット演算を使ってそれぞれの関数の戻り値を決めるよう実装されている場合がある。
int isalpha(int letter) { return table[letter] & 1; }
int isdigit(int letter) { return table[letter] & 2; }
int isalnum(int letter) { return table[letter] & 3; }
みたいな感じで。
こういう関数を戻り値に直接指定したい場合とか、0/1 にならないことがある。
そして、果たして BOOL の戻り値を作成する際に使った関数が
全て真偽を 0/1 で返すと確かめることはできるだろうか?
もしかしたら急に仕様が変えられるかもしれない。
それを考えて常に isalpha(ch) ? TRUE : FALSE のように書く事はできるかもしれないけど、
無駄も多いし書き忘れるミスを犯す事もあるだろう。
結局、bool 型のように true/false の2値性を保証する型で typedef されていない以上、
BOOL は 0/1 の2値性を保証しない方が安全ということになる。
TRUE や FALSE は真偽値を与える箇所で
条件式を書く事無くダイレクトに真か偽かを指定するために使う物であって、
比較に使う物ではない。
そもそも真偽値をさらに比較するという発想自体が
二度手間の無駄な発想としか言いようが無い。
C言語なんだから0/1じゃなくて 0/非0で考えろ
C言語で考えるとむしろ0/1じゃね? 比較とかの評価結果は0/1で返すと決まってるし。 どちらかというと、アセンブラレベルの話だな。 BOOLを0/1へ変換するなら !!value で一応はできるな。 見た目が宜しくないのでお勧めはしないけど。
94 :
デフォルトの名無しさん :2008/06/11(水) 00:31:39
HTMLを解析したいのでIHTMLDocument2を使おうと思っています
CComPtr<IHTMLDocument2> aDoc;
aDoc.CoCreateinstance(CLSID_HTMLDOCUMENT);
aDoc->put_URL(CComBSTR("
http://~ ")); //URLの読み込み(のつもり)
aDoc->get_images()
この put_URL を使うとブラウザで引数のURLを開いてしまい、また、get_imagesで取得したイメージコレクションのサイズが0になっています。
まず、「ブラウザを開かないでHTMLを解析したい」のと、「get_images で取得できていない」理由がよく解りません。
コマンドラインから使うツールのつもりなのでCUIの方がうれしいのですが、ダイアログかなにかで表示させる必要があるのでしょうか?
#イメージとしてはURLを引数で渡すとそのページのIMG src="***" を抽出するプログラムです。
>>93 条件式は 0/1 を返すが、
if 文や while 文などの中身は 0/非0 で判定するから
C で考えるなら 0/非0 だな。
>比較とかの評価結果は0/1で返すと決まってるし。 処理系依存
↑馬鹿
はあぁ?
妄想は日記の中でしてね。
馬鹿かお前 Win32なんて基本的に妄想が中心だろ MSDNに載ってないような事をしたければ妄想するしかないし
↑馬鹿
↑阿呆
↑馬鹿
↑阿呆
↑馬鹿
↑ば、馬鹿じゃないのっ
↑阿呆
↑あ、阿呆じゃないのっ
↑馬鹿
↑ば、馬鹿じゃないのっ
訳:かまってほしいな
かまってほしくない人はレスしないでください
>>94 IHTMLDocument2 を使うことが絶対条件なの?
必要条件
BOOLを返すAP(Iは必ず bool Successed = Hoge(...) != 0; としてる。
だから?
117 :
60 :2008/06/11(水) 12:57:43
ちょっとした愚痴のつもりだったんだが…
いまさらMSDN書き替えられても困るし
で、結局
>>68 の指摘してる間違いってなんなんだ?
すごく気になるんだけど
単なるかまって厨でFA
>>68 の指摘は分からんが、CのAPIではないなw
API自体は言語関係ないからね。
そう考えると、Cの文法や流儀を元に議論するのはナンセンスかもしれん。
馬鹿だなあ 文字列がナルターミネートな時点でC前提だろ
↑馬鹿
↑阿呆
呼び出し規約そのものは、cdeclとpascalの中間だけど まあC用だな、他の言語はそれにあわせてるだけ。
そもそもwin32API自体がCで書かれているのだからC前提で当然 そんな事もわからない素人が増えちゃったんだね・・・
↑馬鹿
↑阿呆
↑馬鹿
馬鹿も阿呆も漏れだけでいい
↓馬鹿
え?おれも?
まとめ:かまってほしいな
(・ω・` )ヾ(・ω・* )ネェネェ カマッテヨ
「↑馬鹿」と「↑阿呆」はそれぞれ同一人物による書き込み つまり荒らしは2名
↑はずれ
1人だったのか
↑はずれ
答え:多重人格(一人)
↑はずれ
現在の稼動状況
人格1:
>>135 人格2:
>>137 人格3:
>>139 人格4~16: Idle
最大16人格まで拡張可能
それぞれの人格は並列動作
(例えば人格1から人格2~16のレスを見ても同一人物であるという認識は本人には無い)
記憶装置(脳)は16人格で共有されるため、正常な人間に比べて人格それぞれの知識は16分の1
>>140 みたいな事を平気で書き込めちゃう奴って本気で近づきたくない
↑馬鹿
↑阿呆
ビリーミリガンよりは少ないな
かまってほしいな
(・ω・` )ヾ(・ω・* )ネェネェ カマッテヨ
147 :
94 :2008/06/11(水) 18:45:28
>>113 >
>>94 > IHTMLDocument2 を使うことが絶対条件なの?
いえ、HTMLの解析が簡単にできればIHTMLDocument2でなくても問題ないです。
MSDNの中を探してたらそれらしいメソッドがIHTMLDocument2に見つかったので使っている所です。
ブラウザを開かないのはIHTMLDocument4::CreateDocumentFromURLを使えばいいのかなぁ
>>147 用途が分からないから判断が難しいけど、
IHTMLDocument2だとブラウザは開くねぇ。隠したとしても音が残る。
XMLパーサーだと規約に沿ってないとエラーになる。
簡単なのはWinInetを使って、正規表現を使って解析することかなぁ。
>>149 APIフックして音を消せば?ってのがこのスレ的な回答かな
151 :
デフォルトの名無しさん :2008/06/12(木) 07:03:47
全角半角キーをスイッチのように使いたいのですが 押しても全角モードに切り替わらない良い方法はありませんか
フック
153 :
デフォルトの名無しさん :2008/06/12(木) 14:41:05
クック
ドゥ
訳:かまってほしいな
訳:ググレ
いちごみるくうめぇ
ヾ(@⌒¬⌒@)ノ ウマヒィ
社会から自分が必要とされていないのではないかと思っているから荒らす 少しでも反応があれば自分は必要とされているんだと勝手に勘違いして納得する それがかまってちゃん こうして俺たちがかまってあげているうちは街中で無差別殺人なんてしないだろうから 人助けの一つだと考えて適当に相手してあげておいた方がいいかもな
探すのが面倒だから荒らすんですね(>ω<
163 :
デフォルトの名無しさん :2008/06/12(木) 18:52:04
フックについてググってもvbやらdelphiやらc++やらapiやら混在してる割に ヒット数が意外と少ないんですがとりあえず SetWindowsHookEx WH_KEYBOARD WM_INITDIALOG あたりを使う方法でいいのでしょうか?
最後は関係ない希ガス
165 :
デフォルトの名無しさん :2008/06/12(木) 19:20:16
>>164 どうもです。そのものずばりの情報はなかなか見つかりませんね。
範囲があまりにも広いのですが絞るとほとんどhitせず・・・もう少し調べてみます
動的に追加したリストボックスをDestroyWindow()する時に予めLB_RESETCONTENTする必要はありますか?
>>166 deleteする時に予めデストラクタを呼んでおく必要はありますか?
って聞いてるようなモンだぞ
>>167 DestroyWindow()するだけで良いのですね。
ありがとうございました。
スレ違いのような気もするけど、気にせず教えてください。 kbdacc とか 秀Caps のようなキーリピートの高速化ってどうやって実現してるんでしょうか? SystemParametersInfo で設定できる値よりずっと速くできるようですが。
>>165 自プロセスへのフックは簡単だと思うけど‥‥他プロセスやグローバルフックになると共有メモリとかの処理が必要になってくるけど
>>169 気にせず教えてください…?頭わいてんのか?
お忙しい中すみませんが、気にせず教えてください。
教えを乞う言葉じゃない気がしますが、気にせず教えてください。
>>169 ずっと速くできるようですが気にせず設定してください
流れがおかしいようですが気にせず質問してください
ツールバーの表示位置を変えたいのですが、どのようにすればいいですか?
movewindow
>>177 レスありがとうございます。
後一つわからないことがありまして、
ツールバーの高さを変えるにはどうすればいいですか?
>>177 APIの大文字小文字は区別されます。嘘を書くのをやめましょう。
>>180 ありがとうございます。
御礼に私の集めた女子高生画像10枚ほどぅpしようと思うのですが
↑はずれ
訳:かまってほしいな
>>186 かまってほしいです。
実のところMoveWindowでツールバーの移動が出来ませんでした。
自プロセスのUIスレッドのIDを取得したいのですが、方法はありますかね?
>>188 ググッたらその辺のサンプルは、見つかると思うよ
ツールバー移動出来ない…… クローズボタンなんかだと移動出来てるぽいから出来ると思うのですが…
191 :
デフォルトの名無しさん :2008/06/13(金) 10:24:01
Windows Media Playerの埋め込みについて質問させてください。 親ウィンドウ(レイヤードウィンドウ)にメディアプレイヤーを埋め込んでいるのですが、 WS_EX_Layeredで親ウィンドウを生成し、SetLayeredWindowAttributesで透明度を設定すると、 メディアプレイヤーの動画部分が黒く表示されます(再生はされているみたいです) 親ウィンドウを動かしてみると、一瞬だけ動画が表示され、動かすのをやめるとまた消えてしまいます。 これはどういった原因があるでしょうか。 親ウィンドウをレイヤードウィンドウにしなかった場合は、そのまま表示されます。
WS_CLIPCHILDRENとかその辺?
タブのグレイ表示ってできないんですか?
194 :
デフォルトの名無しさん :2008/06/13(金) 13:57:22
195 :
デフォルトの名無しさん :2008/06/13(金) 14:12:25
聞きたいのは、何故ツールバーをMoveWindowで移動出来ないのか です。
最近、いろいろなサイトでTEXT("aaa");見たいなの見かけますが 文字型charには代入できなくなったのですか?新しい型?
意味不明
TEXT("aaa")とか_T("aaa")は、ユニコード対応だったけか? ググれば、その辺はすぐ見つかるよー
最近のVC++はデフォがUnicode版API使うようにマクロ定義さてるんじゃなかったっけ? 2003で止まってるから知らんが。
200 :
デフォルトの名無しさん :2008/06/13(金) 15:39:25
WM_KEYUPでwParamと数値を比較すると警告メッセージがでるのですが wParamをintでキャストするような方法でいいのでしょうか
おk
202 :
デフォルトの名無しさん :2008/06/13(金) 15:41:20
>>191 WMPが動画をオーバーレイで表示してるなら、不思議な挙動ではないな。
ビデオオーバーレイは画面上のビデオ表示領域にあるピクセルが特定の色だった場合に、そのピクセルに動画を表示する。
よって半透明にした結果、そのピクセルの色が変わってしまえば動画が表示されなくてもおかしくはない
なかなか深い読みだな
>>203 アプリの背景色をその色にすると面白い事になるよね
自己解決しちゃったぜ!!? 気分がいいので 今から写メを20枚ぅpしてやんよ!!!
207 :
デフォルトの名無しさん :2008/06/13(金) 16:50:01
基地外が沸いてるな
>>191 WMPでオーバーレイを使わない設定にすれば見えなくなることはなくなるけど、透けないしちらつくんだよな。
ツールチップをCreateWindowEx()してTOOLINFO構造体のlpszTextにLPSTR_TEXTCALLBACKを指定した後、
case WM_NOTIFY:
switch (((LPNMHDR)lp)->code)
{
case TTN_NEEDTEXT:
LPTOOLTIPTEXT ptt = (LPTOOLTIPTEXT)lp;
lstrcpy(ptt->lpszText, 表示するテキスト);
break;
default:
return FALSE;
}
とすると、数十字程度の場合は正常に動作しますが、300文字等文字数を増やすとデバッグ実行時でもエラーが出ずに突然落ちてしまいます。
原因は何でしょうか。
因みにTTM_UPDATETIPTEXTでは正常に動作しました。
>>196 所謂TCHAR型だから、プロパティでマルチバイトを選択すればchar、Unicodeを選べばwchar_tとコンパイラは解釈する。
TTN_NEEDTEXT 通知メッセージを処理する場合は、表示する文字列を次のいずれかの方法で指定します。 szText メンバで指定したバッファにテキストをコピーする。 テキストが入っているバッファのアドレスを lpszText メンバにコピーする。 文字列リソースの識別子を lpszText メンバにコピーし、そのリソースが入っているインスタンスのハンドルを hinst メンバにコピーする。 MSDNくらいちゃんと確認汁
>>210 バッファオーバーラン
今時そんなバグを平気で出しちゃうCプログラマは
偉そうにTCHAR型の講釈している場合じゃないよ
タスクの切り替え(アクティブウィンドウを切り替える)のをエミュレートしたいんですけどどうすればいいですかね? ある条件を満たしたとき、(タスクバーの)(右)隣のウィンドウに切り替えたいんですけど。 Alt+Tabのキーボードエミュレートだと、直前のやつにしか切り替え不可ですよね・・? Tabの押す回数をうまく制御すればいいんですかね? 他にもっとスマートな方法ありますか?? あと、上記のような不特定多数のタスクがある状況で動くものと、 特定の(例えばWMPとか、決まったアプリをアクティブにする)をアクティブにするものも知りたいです。 ちなみにC++(VC2008ExpressEdition)です。 ご教授のほどお願いします。
>>214 FindWindow
GetWindowThreadProcessId
SetActiveWindow
SetForegroundWindow
>>210 80文字分しかないバッファに300文字コピーしたら
バッファオーバーランするに決まってるだろ。
(誰が決めたのだろう・・・?)
俺
そいやXPのPowerToyのAlt+TAB乗っ取りプログラムはWS_EX_TOOLWINDOWとかマスクしてなくてPhotoshopとか起動してるとかなり格好悪いことになるんだよな。
>>215 単純明快かつわかりやすい回答、ありがとうございます。
どういたしまして
223 :
デフォルトの名無しさん :2008/06/13(金) 22:40:53
>>192 >>203 >>209 埋め込んだメディアプレイヤーを透明にするということは難しいということですね。。
別の方向で検討します。
レスありがとうございました。
どういたしまして
225 :
214 :2008/06/13(金) 22:48:41
すいません、また質問させてください。
>>215 でプロセスIDを習得する意味は何でしょうか?
習得?
取得、です。
同じプロセスで動いてるやつを飛ばすとか?
>>225 > 例えばWMPとか、決まったアプリをアクティブにする
とあったので、特定のアプリをアクティブにするならプロセスIDから逆引きすればいいよってこと。
GDIのPolygon関数は、与えられた引数によっては交差した図形を描くのですが、 どんな引数を与えられても交差しない図形を描くことは出来ないのでしょうか。
>>230 交差しない順で自分で頂点を並べればいいだろう。
ちょっと考えれば、順不同で与えられた頂点から、辺が交差しない図形は
一意で求まらないことくらい分かりそうなもんだが。
そんなAPIがあることを初めて知った。。。 質問の意味はよくわからんが、細かく制御したいなら自分でやれば。
分からないならレスしないでください
>>191 のやつをVista DWM有効下で動かすとどうなるんだろうと気になった。
オーバーレイは使えないが、動画は表示され、ちらつきも無くなって万々歳と予想
それってXPで出力をVMR9にしたのと同じような状況じゃねーの?
個人的に、レイヤードウィンドウとDWMの違いがハッキリしないんだけど。 レイヤードウィンドウでもWM_PAINTがほとんど飛んでこなくなるし、DirectXベースっぽいし。 思うに、レイヤードウィンドウがDX7だったのに対してDWMがDX9になっただけな気がする。 もちろん色々と変わってるだろうけど(GDIをソフトレンダラ化とか)、DWMでやってる事って 半分ぐらいはWindows2000で既に実現できていたんじゃないのかなぁ。
238 :
214 :2008/06/14(土) 01:21:17
あーできません助けてください! 「今アクティブなウィンドウ(アプリ)の、“タスクバーにおける(右)隣”のウィンドウへアクティブを移す」を実現したいのですが、 要はこれって「タスクバーでいうと隣」のウィンドウのハンドルを取得、それを使ってアクティブにすればいいんですよね? だけど「タスクバーで隣」っていうのをどう条件設定すればよいのかわからず・・・。タスクバーを右に右に推移(+右端だったら左端に動くように)させたいのですが・・。 なんかヒントください!
>>238 タスクバーをフックする
そして次のバージョンのWindowsで死亡
fprintf等でUTF-8 LF形式で出力したいのですが、どうしてもできません。 どうかご教授おねがいします 。 FILE* fp; _tfopen_s( &fp, _T("hoge.txt"), _T("w,ccs=UTF-8")); fseek(fp, 0, SEEK_SET ); _ftprintf_s( fp, _T("hogehoge")); _setmode( _fileno( fp ), _O_BINARY ); _ftprintf_s( fp, _T("\n")); _setmode( _fileno( fp ), _O_TEXT ); _ftprintf_s( fp, _T("あいうえお")); fclose(fp); MSDN見る限りではこう作れってかいてあるのですが、どうも_setmodeの挙動がおかしいようで...
どうせccs=UTF-8なんてVC++限定なんだから、 自分でメモリ上にUTF-8, LF改行のデータを作って、 ただのバイナリモードで一気に書きこんだらどうかと思う。 というかスレ違い。
>>240 _setmode( _fileno( fp ), _O_U8TEXT);
リッチエディットの背景に画像を表示したいのですが方法はあるのでしょうか? ググってみても背景色の変更はあるのですが背景に画像を埋め込む方法は見つかりません。
245 :
243 :2008/06/14(土) 11:01:49
やっぱりそうですか・・・。ありがとうございます。
どういたしまして
247 :
デフォルトの名無しさん :2008/06/14(土) 14:21:30
リッチエディットコントロールで右クリックしても エディットコントロールと違って何も表示されないんだけど どうすればいいんでしょか
>>241 間違えてここに書いちゃいました。
C++相談室で聞いてきます。
>>242 実はこれはいろいろためしてたときのソースがそのまま残ってました。
_setmode( _fileno( fp ), _O_U8TEXT);
もすでに試してたけど、なぜかCRLFになるので、ダメでした。
C++相談室もスレ違いだけどな
・スレ違いの質問でも丁寧に答えてくれます。 ・かまってちゃんの煽りにもきちんとかまってくれます。 をテンプレに追記汁
CreateThreadで作成したスレッドがサスペンドになるまで待機するような関数はありませんか。 WaitForInputIdleのスレッド版、のようなモノです。 自前でフラグでも立てて調べ続けるしかないのでしょうか。
訳:おしえてほしいな
>>251 サスペンドにする設計はよしたほうがいい。
同期オブジェクトを使うべき。
自前で Win32API のラッパーライブラリ作って使い回してる人どれくらいいます? windowsx.h みたいなマクロの集合から本格的なクラスライブラリまで含めて。
そのコードにsetmodeは要らないと思うが。
WTLは糞すぎるんで、 自作の、ATLをラップしたテンプレートクラスライブラリでやってるよ。
VCLで間に合ってます
TCHAR[]な文字列のバイト数はどうやったら求められるのでしょうか
あ、lstrlenでいけるっぽいですね。スレ汚しすみません。
わかってるかもしれんけど、 「バイト数」は lstrlen(str) * sizeof(TCHAR) じゃないと求まらんよ
strlenとlstrlenて何が違うんだ?ずっとstrlen使ってたんだけぢ
引数の型が違う
やっぱり違いが判らない lstrlenのLPCTSTRって strlenのconst char* と同じでしょ?
#define UNICODE
じゃあ lstrlen=_tcslenなわけ?
>>265 lstrlenはスレ違いじゃないけどstrlenはスレ違い
_tcslenもスレ違い
>>269 lstrlen (lstrlenA, lstrlenW) は Win32API (ダイナミックリンク)
_tcslen (strlen, wstrlen) は C Runtime (スタティックリンク)
この違い重要な
> C Runtime (スタティックリンク) 馬鹿は黙っててね
>>272 CRTもダイナミックリンクできるが?
つーか基本的にwsprintfとかlstrlenとかWin16でメモリが厳しくてCRTなんか使ってられるかって時代の遺物なんだから気にするな。使うな。
Win32API はスタティックリンクできないが C Runtime は普通スタティックリンクで使うので間違ってはいない
>>275 VC8はダイナミックリンクがデフォ設定になってたなぁ
277 :
272 :2008/06/14(土) 22:34:54
>>276 あ、確かにデフォルトで /MD (msvcr80.dll) になってるわ
普段 cl.exe とか nmake.exe とかでやってるから libcmt.lib が当たり前だと思ってた
あと誰もつっこんでくれないけど wstrlen じゃなくて wcslen
また多分 strlen ぐらいならコンパイラがインライン展開してくれると思う
msvcrt.dllはKnownDLLsだから、これを使うならCRTもWin32APIみたいな物じゃね まーそのせいで最近のVC++はmsvcrt.dllが使用できないが
リストボックスに横スクロールバーを追加したのですが、項目の文字列の幅を正確に取得出来ないのか全ての文字が表示される所までスクロール出来ません。 GetTextExtentPoint32()は > デバイスの中には、通常のセル配列に文字を配置しないデバイス(すなわちカーニングを実行するデバイス)もあるため、文字列内の個々の文字のサイズの総計と文字列全体のサイズとが一致しないことがあります。 の解説から等幅しか正しく計算出来ないようですが、プロポーショナルフォントで正しく計算する方法はないのでしょうか。 ※これとは別に垂直スクロールバー分のGetSystemMetrics(SM_CXVSCROLL)は足しています。
その説明は関係ないだろ (もし1文字分ずつ別々に測って足してったら正しい結果は出ないよって意味だ) ちゃんとDCにフォントを選択したか?
>>280 誤解を解いてくれてありがとうございます。
> DCにフォントを選択したか
選択したら、未選択の時より短くなってしまいました。
追加したコード
HFONT hFont = CreateFont(-MulDiv(9, GetDeviceCaps(hDC, LOGPIXELSY), 72), 0, 0, 0, 400, 0, 0, 0, DEFAULT_CHARSET, OUT_OUTLINE_PRECIS, CLIP_DEFAULT_PRECIS, ANTIALIASED_QUALITY, VARIABLE_PITCH, L"MS UI Gothic");
SelectObject(hDC, hFont);
:
DeleteObject(hFont);
>>281 それはリストボックスと同じフォントか?
というかWM_GETFONTでフォントもらえ
>>282 遅レスすみません。
リストボックスのフォント(ダイアログのフォントと同じ)はMS UI Gothic 9ptですが、WM_GETFONTで取得したフォントは何故かArialの12pt(?)になっていました。
更にウィンドウ上の文字もそれに変わって表示が滅茶苦茶に…。
勿論Arialなんて何処にも使用していません。
何処に原因があるのか解らないので一度Win32APIから離れて.NETでGraphicsオブジェクトを作りMeasureString()で幅を取得してHorizontalExtentプロパティに設定したら、こちらは上手くいきました。
結局の所、正しいフォントが選択されていない事が最大の原因でしょうか。
そうだとしたら何故フォントが正しく取得出来ないのでしょうか。
>>282 もらえるのはHFONTだが、それがArialだってのはどうやって調べた
(というか調べる必要があった)んだ? DCにハンドル選択するだけなのに。
本当にArialとやらだったら、取得に失敗してシステムフォントが返ってるんだろ。
他のウィンドウのフォントが崩れたのは、
このスレにコード念写できる人はおらんから確かなことは言えんが
おおかたもらったフォントをDeleteObjectでもしたんでないの。
> それがArialだってのはどうやって調べた ウィンドウに表示される文字で判別しました。 > もらったフォントをDeleteObjectでも~ 思い切りしていました…。 削除する事でフォントは正常に戻りましたが、やはり文字列の最後までスクロール出来ません。 文字コードは全てワイド文字で処理していますが、これが関係しているのでしょうか。
> ウィンドウに表示される文字 それほど信頼できん調べ方はないだろうがw フォントリンクとかでぐぐっとけよ
>>285 あなたにWin32APIは無理です。
諦めて.NETを使いましょう。いい時代になりましたね。
>>285 >ウィンドウに表示される文字で判別しました。
フォント名がほしいなら GetTextFace() とか使ってくれ
とりあえず GetTextExtentPoint32() のリファレンス読み直すとか、
DrawText() に DT_CALCRECT 渡すなどの方法で代用するとか
Advanced Windows っていい本ですね 高いけど
291 :
デフォルトの名無しさん :2008/06/16(月) 12:13:15
テキストエディタ作りたいんですけど、 どうやって日本語入力するんでしょうか?
テキストボックスでも貼っとけ
日本人なら日本語ぐらい入力できるだろ
今時Edit貼っただけのテキストエディタなんて需要ゼロだろ
コンソールで作るんだろ?
SEDやEDLINのx64コンソール対応版か
HTREEITEMのハンドルの比較はどのようにやればいいですか?
==
冗談抜きで==以外にアイテム同一の比較する方法はない
>>288 遅レスすみません、DrawText()にDT_CALCRECTを渡す方法で出来ました。
上記方法での取得値 - リストボックスの幅 + 縦スクロールバーの幅
で正確なスクロール幅が算出出来ました。
本当にありがとうございました。
Cから呼び出したDLL内でEXCEPTION_ACCESS_VIOLATION (0xc0000005) が発生した場合、それをC側から補足できますでしょうか? 例外が発生したことを上の関数に返したいのですが 難しいでしょうか? よろしくお願いいたします。
VC++なら___try - ___catch(EXCEPTION_EXECUTE_HANDLER)
___じゃない、__
>>305 ありがとうございます。
スーパー助かりました。
コンビニどういたしまして。
まさか全く関係ない奴が、どういたしましてなんて言ってないよなw
私には心の分身が居るので彼らがどういたしましてを言っています
たとえ心が離れていても僕たちはいつもひとつ!
それ多重人格じゃね?
このスレには人工無脳が搭載されてるのを知らないのか? 「ありがとうございます」に対して自動で「どういたしまして」と返信して回答者の煩わしさを軽減してくれてるんだよ。 ただあまり賢くないから、たまに暴走して意味不明なレスで荒れたり 「なぜこんな設計にするのか理解できない」→「分からないならレスしないでください」 と煽ったりして荒れる原因になって迷惑な一面もある。
説明ありがとうございます
どういたしまして
質問です。 CreateProcessでメモ帳(notepad.exe)を起動する際に、 ユーザーがCtrlキーを押しながら起動しても最前面にメモ帳を表示させたいのですが、 試行錯誤を繰り返していますが上手くいきません。 ご教授お願いいたします。
お断りします
お断りじゃあ仕方ないよな あきらめろ
AttachThreadInputとかかね?
>>243 規制に巻き込まれて遅レスだが
WS_EX_TRANSPARENTスタイルを追加してWM_ERASEBKGNDで背景画像をBitBlt。
ちらつくので親ウィンドウにWS_CLIPCHILDREN追加して
RichEditのカーソル付近の表示がおかしくなるので親ウィンドウのWM_PAINTで
RichEditのUpdateWindow追加でいけると思う。
>>291 IME対応を何もしなくても、確定した文字列は最悪WM_CHARで1文字ずつ送られてくる (IME-unaware)。
ANSIモードだとShift_JISの2バイト文字も1バイトずつ送られてくる。
それだとあまりにも不便すぎるから、IMM APIを使って取得する。
確定文字列の取得はWM_IME_COMPOSITIONかつlParam & GCS_RESULTSTRのとき。
詳しくはググれ。あと、再変換対応も忘れるな。
現在はIMMからTSFへ移ろうとしているんだが、
IMMでしか使えない変換エンジンの1つにATOKもあるし、
XPまでだと様々な理由でTSFをオフにしたり、そもそもTSFが入っていなかったりするので、
TSFのみの対応のアプリケーションは非現実的。IMMのみかIMM/TSF両対応にすべき。
> ユーザーがCtrlキーを押しながら起動しても 今頃こんな機能があることを知った ありがとう2ちゃんねらー
Ctrlキー押して起動してみたけど なんもならないぞ
Shiftを押しながらだと・・・
shift 最小化して起動 alt プロパティ 知りませんでした
すげぇマジだ。 Windowsのプログラマは只者じゃねーな。
スタートメニューやクイック起動からだと Ctrl+クリック バックグラウンドで起動 (メモ帳だけ?) Shift+クリック メニューが勝手に消えない Shift+クリックなんて知らなかった。これ結構便利だな。
> Shift+クリック メニューが勝手に消えない うおおおお すげえ、これすげえ 感激した
感激したので、これからは WinMainのnCmdShow引数をまじめに処理しようと思う
で、結局Ctrl押しながら起動でZオーダー最前面にする方法は誰も分からんのか、、、
便利な機能を殺すのか。 ウィンドウハンドルをどうにか持って来れれば何とかならんか?
メモ帳のソースコードが公開されていて改修できるなら可能だと思うが、 それが出来ないならちょっと思いつかないな。
notepad.exeを改造すればいいじゃない その程度のクラック知識も無い人はWin32APIで開発なんてやめた方がいいと思うよ
STARTUPINFOに仕込んでてもダメかな…
流出はしてたかもしれんなw
別に変な事をしなくてもThreadIDから窓を列挙して前面に移動すればいいだけじゃないか
実際にやってみれ 多分無理
メモ帳限定でいいなら CreateProcess→WaitForInputIdle→ウィンドウ列挙してプロセスIDから該当のメモ帳を探す →AttachThreadInputでアクティブプロセスのコンテキストを割り当て→SetForegroundWindow こうかな?
メモ帳をフックすればいいだろ
ソレダ!
んー Process32FirstとProcess32Nextを使ってNotePad.exeと親のプロセスIDとを取得。 AttachThreadInputでアタッチして制御をもらって、終わったらデタッチ。 ただ、NotePad.exeのウインドウハンドルはどうやって取得するんだろう。 それが出来ればSetActiveWindowなりSetForegroundWindowを呼べるんだが。
CreateProcess したのに、わざわざそうやってプロセスID取得するの? EnumWindows()とGetWindowThreadProcessId()を組み合わせて探すのが バージョン依存しなくていいかも。
344 :
343 :2008/06/17(火) 14:42:45
下2行はプロセスIDからウィンドウハンドル探す方法ね。
バージョン依存ってProcess32FirstがNT4で使えないとかそういう事かね?
メモ帳側が変わるかということじゃね
変わらねーよw ・タブ対応 ・正規表現grep ・構文ハイライト ・ソース折り畳み ぐらいは対応して欲しいけどな
そんな高機能なメモ帳なんてメモ帳じゃないやい・゚・(つД`)・゚・ でも、Vistaのメモ帳ではCtrl+Gで行番号指定移動に対応していたりと 結構侮れなかったりもする。
メモ帳はタブ幅を4に変更可能にしてくれればもう何も言うことはない
comctl32を設計した馬鹿をひっぱたきたい。
メモ帳に関連づけてるファイルがなくて試せない俺は負け組
メモ帳というかEditコントロールが貧弱すぎ。 無制限UNDO/REDOやドラッグドロップぐらい標準で対応しろと。 マウス乗せたらボワっと色が変わるようなくだらん機能つけるぐらいなら基本機能を充実させろと。
そんなもの標準でつけられても、結局は込み入ったことするには不足で、自前で実装することになるのが目に見えてる。
SetWindowHookEx で、WH_MOUSE を指定し、プライマリスレッドへのローカルフックを 設定しているのですが、MOUSEHOOKSTRUCT.dwExtraInfoは常に0になります。 XBUTTONの番号やホイールの回転量が取れなくて困るのですが、これは仕様なんでしょうか。
356 :
355 :2008/06/17(火) 21:47:41
すみません。ググったらすぐわかりました。MOUSEHOOKSTRUCTEXを使うべきなんですね。
Editコントロールを改良してくれるというなら、TSFに対応してほしかった。 ただ、MS-IMEナチュラルインプットがフェードアウト気味で、どうでもいいと思うようになってきたけど。
時代はATOKです
SS_BITMAPを指定したスタティックコントロールにStretchBlt()した画像を貼り付ける方法が判りません。 (WM_PAINT以外) hBmp = (HBITMAP)LoadImage(NULL, L"test.bmp", IMAGE_BITMAP, 640, 480, LR_LOADFROMFILE); HDC hDC = GetDC(hwnd); hMemDC = CreateCompatibleDC(hDC); SelectObject(hMemDC, hBmp); hBackDC = CreateCompatibleDC(hMemDC); hBackBmp = CreateCompatibleBitmap(hMemDC, 256, 192); SelectObject(hBackDC, hBackBmp); SetStretchBltMode(hBackDC, STRETCH_HALFTONE)) StretchBlt(hBackDC, 0, 0, 256, 192, hMemDC, 0, 0, 640, 480, SRCCOPY); ReleaseDC(hwnd, hDC); (WM_PAINT内) BeginPaint(hwnd, &ps); SendDlgItemMessage(hwnd, IDC_BITMAP1, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBackBmp); EndPaint(hwnd, &ps); このようにしてみましたが、スタティックコントロール上には何も表示されません。 何が原因でしょうか。 ※便宜上WM_~と書いていますが、実際はメッセージクラッカーを使用しています。
WM_PAINT内
マインスイーパの(ニコニコマークの)ボタンのようなものを押そうとしているんですが、 HWND hwnd = FindWindow(NULL,TEXT("マインスイーパ")); POINT pos = {87,27}; int lparam = (pos.y<<16) + pos.x; PostMessage(hwnd,WM_LBUTTONDOWN,0,lparam); PostMessage(hwnd,WM_LBUTTONUP,0,lparam); で押したことにできません。 pos={100,100}とかで下の領域部分は押したことにできます。 調べた感じ、ボタンっぽい部分はハンドルも持ってなさそうなのですが、 どうすれば押せるのでしょうか?
>>361 F2を押したことにするんじゃだめなの?
>>362 マインスイーパをプログラムで操作したいというよりは、
ハンドルを持っていないボタンを押したいということなんです。
364 :
362 :2008/06/17(火) 23:43:36
よく考えたらF2よりメニューのID調べてWM_COMMAND送ったほうが楽かも
>>365 やっぱりそれしかないんですかね?
PostMessageでなんとかしたかったけど、SendInputでいってみます。
ありがとうございました。
「チートのためのSendInput」 という本を書いたら売れますか?
チート専門ならWin32APIなんかよりAHKでも薦めるかな
369 :
デフォルトの名無しさん :2008/06/18(水) 13:13:44
すみません、ちょっとお聞きしたいんですが、 CreateFileMappingAの戻り値のHANDLEから _open_osfhandle()と_fdopen()とで FILE*を取得することは出来るんでしょうか? どうもやってみても_open_osfhandle()が-1を返すんですが、 失敗する理由が自分のコーディングミスなのか仕様なのか分からないです。
そのハンドルは別のものだから使えないよ
>>360 遅レスすみません、漸く解りました。
ありがとうございます。
(WM_PAINT以外)
hBmp = (HBITMAP)LoadImage(NULL, L"test.bmp", IMAGE_BITMAP, 640, 480, LR_LOADFROMFILE);
HDC hDC = GetDC(hwnd);
hMemDC = CreateCompatibleDC(hDC);
SelectObject(hMemDC, hBmp);
hBackDC = CreateCompatibleDC(hMemDC);
hBackBmp = CreateCompatibleBitmap(hMemDC, 256, 192);
hPrevBmp = SelectObject(hBackDC, hBackBmp);
SetStretchBltMode(hBackDC, STRETCH_HALFTONE))
StretchBlt(hBackDC, 0, 0, 256, 192, hMemDC, 0, 0, 640, 480, SRCCOPY);
ReleaseDC(hwnd, hDC);
(WM_PAINT内)
BeginPaint(hwnd, &ps);
HBITMAP hTempBmp = (HBITMAP)SelectObject(hBackDC, hPrevBmp);
SendDlgItemMessage(hwnd, IDC_BITMAP1, STM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)hBackBmp);
SelectObject(hBackDC, hTempBmp);
EndPaint(hwnd, &ps);
>>371 そのソースじゃ何も解っていないようだな
WM_PAINTの度にSTM_SETIMAGEを送る必要はない気がするんだけど、自分の勘違いか?
てかStretchBlt自体が不要。SS_REALSIZECONTROLでいいじゃん。 それとも、XP未満にも対応する必要でもあるの?
戦略からコードの細部にいたるまで間違いだらけだな、感動した。 またクライアント領域の人か?基礎からちゃんと勉強しないと話にならんぞ。
今更Win32の基礎を勉強するなんて馬(ry
開発環境は、XP SP2、VS2005 Standard Edition Win32API + SDKでプログラミングしおります。 プロパティシートで質問です。 5個のタブがあるプロパティシートのダイアログを表示させて 各種設定を行うようにしました。 一番はじめにプロパティシートのダイアログを表示させた時に 1個目のタブが表示されています。 例えば2個目、3個目のタブを選択するとします。 いったんダイアログを閉じて、再びプロパティシートのダイアログを 表示させた時に、デフォルトで2個目や3個目のタブを選択した 状態にしたいのですが。 アドバイスよろしくお願いします。 一番最後に選んだタブを取得できればいいのですが。 そのタブの位置を変数でもって次回にスタートページを設定したいのです。
質問が連続して申し訳ないです あるウィンドウのテキストが変更されたことを知る方法はありますか? サブクラス化してWM_SETTEXTを捕まえればよいのですが、他にスマートな解法は無いものかと・・・
XP SP2、VC2003 Pro、現在mp3のデコード・再生プログラムを作っています。 DWORD MP3Size; BYTE* MP3Data; DWORD WaveSize; BYTE* WaveData; WAVEFORMATEX WF; MPEGLAYER3WAVEFORMAT MF; //ファイルを開く HMMIO hmmio; MMRESULT mmr; MMCKINFO mmckRiff; MMCKINFO mmckFmt; MMCKINFO mmckData; hmmio = mmioOpen(const_cast<LPSTR>(FileName.c_str()), NULL, MMIO_READ); if(hmmio==NULL){ return(false); } mmckRiff.fccType = mmioStringToFOURCC("WAVE", 0); mmr = mmioDescend(hmmio, &mmckRiff, NULL, MMIO_FINDRIFF); if(mmr!=MMSYSERR_NOERROR){ mmioClose(hmmio, 0); return(false); } 今のところこんな感じで作っているのですが、mmioDescendで必ずエラーが発生します。 エラーコードを調べたところ272でした、MMIOERR_CHUNKNOTFOUNDではないようです(ifでチェックしてみました) エラーの原因は何でしょうか?ご教授願えればと…。
>>379 開こうとしてるファイルはRIFF/WAVE形式なの?
普通はmp3と言ったら、違うフォーマットだけど。
>>380 ありがとうございます、調べてみたところRIFF/WAVE形式を再生するプログラムを書いてたようですね。
開こうとしていたファイルは普通のmp3形式でしたorz
おいw
mp3なんてMCIかIGraphBuilderにぶち込んでしまえ。 後者なら波形も引っ張り出せたはずだし。
#define HWND_DESKTOP ((HWND)0) と HWND hWndDesktop = GetDesktopWindow(); は値が違うのに, 実行させてみるとアプリケーションは どちらでも正常に動作する(ように見える) のは何故なんでしょうか?
385 :
384 :2008/06/19(木) 09:04:52
自己レスです. おそらく, HWND_DESKTOP は,引数として NULL を渡しているのと同じ. 各API内では, NULL が渡された場合に, GetDesktopWindow() で デスクトップのウィンドウハンドルが取得されるようになっている. ということですね.
ATOKのデフォじゃなかったっけ。 それにしちゃたまにしか見ないな。
カナ入力だと面倒だからそういう人多いんじゃなかったっけか?
fopen_s(&fp, Name.c_str(), "w+TD"); とかしたときの 「可能な限りディスクにフラッシュしない」って「メモリが許す限り」って意味か?
このスレで話したいならCreateFileのフラグに読み替えて書いた方がいいと思われ
I/Oバッファサイズが許す限り。
392 :
デフォルトの名無しさん :2008/06/19(木) 19:12:55
ダイアログベースアプリで文字を表示する部分について質問なのですが、 現在 buffer += updateMessage; buffer += "\r\n"; ::SetWindowTextA(GetDlgItem(IDC_LOG)->GetSafeHwnd(),buffer.c_str()); ::SendMessage(GetDlgItem(IDC_LOG)->GetSafeHwnd(), EM_LINESCROLL, 0, 65536); こんな感じで追加して行ってるのですが、 追加する1行ごとにフォントの色を変えたい場合どうすればいいでしょうか? 全体ならできるのですが・・・ HTMLの<font></font>みたいに範囲指定できないもんですか?
オーナードロー
Windows Vista で新しく追加されたAPIの一覧はどこで見られますか? MSDNを探したのですがそれらしいのは見当たらず...
397 :
デフォルトの名無しさん :2008/06/19(木) 22:47:54
HTTP接続の時のダイジェスト認証はどのようにすればよいのでしょうか? 基本認証は401が返った後、InternetSetOption関数を使えばよいのですが、 ダイジェスト認証のほうはどの関数をどう使えばよいのかよくわかりません。 どうも、digest.dll内の関数を使えばよいようですが、これだけでは手も足も出ない・・・ ソケットを直接操作するのはできれば避けたし、MD5暗号化する処理は自前で行い、HTTPのヘッダに追加する必要があるのでしょうか? 環境は.NetではないC++です。
>>393 Editコントロールにオーナードローなんてねーよ
知らないならレスするな
>>392 RichEdit
APIの内部でモーダル化する為にEnableWindow(hwnd, FALSE)してるやつとかな ずっと前に何かのAPIでGetDesktopWindow()を渡したらCtrl+Alt+Del以外効かなくなってびびった事があるw
ファイル名を他のウィンドウに渡すことってできますか?
環境の保存処理はWM_CLOSE、WM_DESTROYどちらで行うべきですか?
CLOSEで
じゃあ俺はDESTROYで
>>403 環境設定の類は、変更したら即保存の方がいい。
ウインドウの位置やサイズのようなものは、WM_DESTROYかな。
(WM_CLOSEでも構わないが)
編集中のドキュメントはWM_CLOSEで保存する。
メッセージが来るタイミングは、WM_CLOSEは閉じるボタンを押した直後で
まだこの段階では閉じるのを拒否もできる。(保存するか聞くのはここ)
WM_DESTROYは画面からウインドウが消えたが実体は残っている状態。
なら俺はCREATEで
ログオフ等はWM_CLOSEは送られないので WM_QUERYENDSESSIONも処理
なら俺はPAINTで
タスクマネージャからプロセスの終了が実行されたことを そのプロセスが感知できるものでしょうか?
>>411 できない。他のプロセスから状態を監視する (確実なのは WaitForSingleObject) しかない。
>>412 無限再帰はスタックオーバーフローするぞ
"PHP"を展開しようとしてもスタックオーバーフローしますよね
>>412 の安価辿っていったらPCがオーバーフローした。謝罪と賠sh(ry
winsockで一定時間応答なかったら、タイムアウトするにはどうすればいいの?
ioctlsocketでFIONBIOを使うと非ブロッキングモードにできる。 そこから後は好きなように実装するといい。
CriticalSectionをstaticなメンバ変数に持つってありですか?
現在実行しているアプリ自身の メモリ使用容量って取得できますか? タスクマネージャのメモリ使用量みたいな数値です
☑
メモリ使用量を取得する方法なんて無いと思うが ワーキングセットのサイズを取得する方法ならあるけど
>>421 別に構わないと思うが、いつ初期化するかが問題
>>425 CRITICAL_SECTIONをラップしたクラスのインスタンスをstaticにすれば、コンストラクタで初期化できる。
そのコンストラクタが起動するタイミングが問題になるかもな
>>427 staticにするとコンストラクタはmainの前に呼ばれる
staticの存在意義がいまいちよくわからない globalじゃだめなの?
>>428 mainの前に初期化するかは処理系定義(3.6.2)
初めて使用するまで初期化を遅らせられる場合もある。
VC++依存でおk
一度だけ初期化を実行する機能を、自前で実装してみるのも良い経験になるかもしれないな。 InterlockedCompareExchangeの存在理由が良く判るようになる。
そんな経験いりません
434 :
417 :2008/06/21(土) 21:54:41
非ブロッキングモードにしたら、accept貫通しだしました。 acceptの戻り値がWSAWOULDBLOCKならcontinueの力技です。 他に何かいい方法ないですか?
非ブロッキングモードをやめれば?
>>436 ありがとうございます。。
調べてみます。
お前が¥ 5,460くれれば買ってやんよ
同期の方が理解できているなら、買うほどじゃないな。 接続タイムアウト程度の処理ならMSDN読んでるだけで十分。
環境変数を含むパス名を展開してくれるAPIはありますでしょうか? 変数名:HOGE 変数値:C:\hogeという変数があったとして、 Get~("%HOGE%\abc.txt")で"C:\hoge\abc.txt"を取得できるような…。
HOGEがC:\hoge;C:\hageだったらどうすんのさ
ExpandEnvironmentStrings
DoEnvironmentSubstの方が楽
447 :
デフォルトの名無しさん :2008/06/22(日) 14:48:26
(3+2.5)/4-3*2 みたいな文章を計算するAPI教えてください
電卓相手にコピペでもしてろ
んなもんない。以上。
448が以外ないい答えかも
>>447 宿題スレへどうそ。
なお、この手の問題は頻出です。
宿題スレへ行ってもそんなAPIはないと言われないだろうか
bison/flex 使うと意外と簡単に作れるぜ
もうboost::spiritでよくね?
またboost厨か
boost::spiritはコンパイルで死ねる
457 :
デフォルトの名無しさん :2008/06/22(日) 17:16:53
リッチエディットボックスを作ったんですけどミギクリックメニューが 表示されません。助けてください!!
WM_CONTEXTMENU
> ミギクリックメニュー なんでカタコト?
ミギクリ!
キミグリ
はまぐり
(´д` ;)ハァハァ・・・
ギクリッ
470 :
デフォルトの名無しさん :2008/06/22(日) 23:00:39
win2kからOSをXPpro sp2にうpグレードしたら 今まで使えてたツールが使えなくなってたからデバッグしたら CreateWindow関数の戻り値のところでヌルポッポーが返るようになってたんだけど この場合どこ直せばいいの?msdnみたら対応情報OSにXPが含まれてないのは わかったけど使えないってこと?代替の関数とかあんの?
何ふざけてんの?
ごめん、ほかのツールは動いてたから原因は他にありそうだ
今まで使えてたツールの具体名キボン
ただ単にエラー出してる箇所すっとばしてブレークポイント貼ってたから勘違いしてたわ
訳:かまってもらえて嬉しいな
Windows2000って、 DrawIcon()で32bitアルファチャネル付きのアイコンを表示出来たっけ? XPからだったかな。
XPから
>>447 ScriptingRuntimeのEvalが楽
PSDKに入っていたりいなかったりWin32APIからは逸脱しそうだが
>>479 トークナイズと逆ポーランド変換とスタック計算程度なんだから自分で作ればいいだろが
わかったわかった。自分が作れるのをアピールしなくていいから。そんな程度のもので。
自分が作れない悔しさをアピールしなくていいから。(プ
わかったわかった。生暖かい目で見ててやるから。
知らないならレスしないでください
死なないならデスしないでください
いまいち効かねぇよなあ、デスって。
そこでバニッシュですよ
ばかばっか
489 :
デフォルトの名無しさん :2008/06/23(月) 18:52:13
訳:かまってほしいな
訳:こ、この私があんたに構ってあげてるんだから感謝しなさいよね!///
>>490 こういう奴って自分では面白いことを書いてるとでも思ってるのか?
少なくとも490>491ではある。
>>491 こういう奴って自分では格好いい指摘をしてるとでも思ってるのか?
涙目の
>>491 と見せかけて、実は赤の他人と見た。
(´д` ;)ハァハァ・・・
かまってちゃんしかいないスレだな
訳:ぼくもかまってほしいな
Windowsって、タイトルバーの最小化/最大化/閉じボタンを押しっぱなしにしてると、 何のメッセージも飛んでこなくなるんだな。 どこのDOSプログラムだよって思った。 スレッド化するのめんどくせ・・・
なんか困るの?
キャプチャされてるだけじゃないの
> Windowsって、タイトルバーの最小化/最大化/閉じボタンを押しっぱなしにしてると、 > 何のメッセージも飛んでこなくなるんだな。 それのどこがDOSプログラムなんだよ Windowsのメッセージキューについて勉強しなおせ
>>499 スレッド化するところを間違えるなよwww
>>500-502 ためしてみなよ。
押してる間はタイマーやMMSYSTEM系のメッセージが全く来ないから。
そもそも押してる間はWinProcに来ないっぽいよ。
WM_PAINTが来なくなるのは、
裏になってるウィンドウの最小・最大化ボタンなんかを押しっぱなしにした時、
フォアグラウンドになったウィンドウの中身が描かれない事でも判る。
タイトルバークリックの時は、ダブルクリック待ち時間だけ止まるみたいだなw
あ、今手元にあるのはXPだけだからVISTAはどうだか判らない。 Macで試してみたいなw
仕様なのに、自分の思い通りにならないからって不具合みたいに言うなよw
なんだ、マカーか
厨房の典型的な例です
てか、なんでわざわざそんなボタン押しっぱなしにするんだ
まあマヌケな仕様ではあるわな きっとリアルタイム性を重視しない奴が設計したんだろう Winでリアルタイムも無いけどw
馬鹿のマカーがWindowsの仕様にいちゃもん付けてるだけか かまってちゃんといい基地外マカーといい、ホント碌な人間がいないスレだな
タイトルバー非表示にすりゃいいんじゃね?
>>510 Windows 1.0の時代にリアルタイムも何もないだろう
うーん、さすがにタイトルバーをクリックしただけで ちょこっと止まるのは知らなかったぞ。 いや、ボタンも知らなかったけどw
常識だろ 使ってりゃ判るじゃん 馬鹿?
使ってないから(=マカーだから)分からないんだろ
うっかりボタンとか押しちゃって、でもすんでのところで気がついて ホールド→ドラッグで助かった経験は誰にでもあるはず だから今の仕様でいいんじゃね?
本来は押してる間エネルギーチャージして放した瞬間に爆速で最大化するという仕様になるはずだったそうだ。
↑話を理解してない馬鹿
訳:かまってほしいな
かまってほしくない人はレスしないでください
喧嘩すんな馬鹿ども
(・ω・` )ヾ(・ω・* )ネェネェ カマッテヨ
相変わらず粘着質なやつが常駐してるな
もうやだこのスレ
無理して居なくてもいいんじゃよ
それはそうだ
533 :
デフォルトの名無しさん :2008/06/24(火) 19:18:58
フリーやシェアウェアに限らず、エディタって特定部分の色を自動で変えますよね。 あれどうやってるのでしょうか? タグで囲んで色を変えたいのですが・・・ MFCのコントロール変数とリッチエディタで該当文字がでたら色を変えるってのを試したのですが、 重すぎて話になりませんでした。 画面にログをどんどん表示していくのですが、 リッチエディタだと差分更新できないので、毎回全文字検索になってしまいます。 部分的に色を変えるって結構利用されると思うのですが、 便利なラッパーってないもんですかね?
・人が作ったのを利用 ・完全自作
自作してる
MFCwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
なんてやってるからメッセージの細部がわからないのだよ
差分更新できない?
Scintilla
粗チンチラ
>>533 差分更新できるし全文検索はいらないし部分的に色を変えるのなんて
非常に簡単だ。
Q:あれどうやってるのでしょうか? A:非情に簡単だ。
もはや質問に対する回答じゃないなw
Q. ○○なことやりたいのですが・・・ A. どうしてそんなことをする必要があるのか疑問だ もう回答じゃねぇwww
プログラム組む奴は人の揚げ足(批判)とるの好きだよな 俺もその一人なのかorz
揚げ足取りしかできない無知なんだろ
547 :
デフォルトの名無しさん :2008/06/24(火) 22:30:32
非常に簡単なんですか・・・いつも思いますが2ch見てる方々どんだけすごい人達なんですか。
エディタって一定以上の大量の文字列を入れるとそれ以上はいらなくなりますよね。
そうなると、古いログを消して追加していかないといけないと思うんですが、
そのとき、消して追加した分、文字列の並びがずれるので、
リッチエディタで色を変える部分を検索しなおさないといけないと思うのですが、
やり方頭おかしいですか?
差分更新できないのでってのはちょっと言葉がおかしかったです。
とりあえず
>>539 さんが紹介してくれたのを調べてみます。ありがとです。
所詮プログラマなんて底辺の職業だからな 毎日ストレス溜め込んで帰宅して、このスレで人の揚げ足取るぐらいでしか それを発散できない可哀想な人々なんだろ
訳:揚げ足取られて悔しいな
自分より下だと思ってる奴に侮られると頭に来るよねw
一行の文字数なんて知れてるから結構std::vectorとかでもいけるんだよね
std::vectorとかでもいける std::vectorとかでもいける std::vectorとかでもいける std::vectorとかでもいける std::vectorとかでもいける std::vectorとかでもいける std::vectorとかでもいける std::vectorとかでもいける std::vectorとかでもいける std::vectorとかでもいける std::vectorとかでもいける std::vectorとかでもいける std::vectorとかでもいける std::vectorとかでもいける std::vectorとかでもいける std::vectorとかでもいける std::vectorとかでもいける std::vectorとかでもいける std::vectorとかでもいける std::vectorとかでもいける std::vectorとかでもいける std::vectorとかでもいける std::vectorとかでもいける std::vectorとかでもいける std::vectorとかでもいける
↑話を理解してない馬鹿
話を理解してないのは
>>548 だと思うが。
リンク先はエディタの色分けとは関係ないし。
いや、話を理解してないのは俺だと思うが。
それはない
もうどうすんのこのスレ
アッー!
TerminateThread()だろう
まさにw
もう次スレ立てるなよ
そうだ!絶対に立てるなよ!
KamatteHoshina();
かまってほしな?
出ていく人はExitThread() あ、これだと終わっちゃうか
DuplicateThread()
このグループ(スレッド)に入りたいな。PostThreadMessage()
訳:俺のギャグセンスは最高
createwindowした画面に文字表示する時に フォント指定して表示するにはどの関数使ったらいい?
printf
CreateFont or CreateFontIndirect SelectObject (or SelectFont @ <widnowsx.h>) TextOutか何か
ちゃんと俺様の質問に答えろよ、人間不合格共が。 それとも姦国人か?シナチクか?
>>575 そのレスへ安価したら誰かが答えてくれるかもよ
>>575 そもそも質問に答えられる人なんていませんが、何か?
CreateMeteredSectionとかのAPIは どのヘッダをインクルードすれば使えますか? それとも動的にAPIアドレスを取得しないと使えないのでしょうか?
char szString[256]; sprintf(szString, "%d", rand()%(100-1)+1); ExtTextOut(,,,,, szString,,); 1行目のcharをTCHARに変えてこんな感じの処理できない? やろうとしたら C2664: 'sprintf' : 1 番目の引数を 'TCHAR [2]' から 'char *' に変換できません。 ってエラーでる
>>579 wsprintf(szString, TEXT("%d"), rand()%(100-1)+1);
_T("aaa") と TEXT("aaa") ってなにが違うの?
583 :
580 :2008/06/25(水) 23:33:02
>>581 定義ヘッダが違う?w
俺は詳しくはしらんから調べてみればいい
それよりメータードセクションの定義ヘッダを俺は知りたい
584 :
580 :2008/06/25(水) 23:46:38
調べたら自分で実装しろということだったらしいorz
調べてから質問しろ
>>585 いや、自分なりに調べてわからなかったから質問した。
その後、続けて調べていくうちに自分で実装しないと
いけないという事がわかったんだ。
誤解を招いた言い方だったな。すまん。
589 :
588 :2008/06/26(木) 00:03:04
>>586 ありがとう。俺もさっきそこみてわかったんだw
Terminate590(TRUE)
ウィンドウをフルスクリーンにするにはどうすればいい?
DirectX タイトルバーや枠を消して最大化
他のアプリケーションのウィンドウの名前を得るにはどうすればいいですか?
その名前を得るための、事前にわかってる情報は何? 何も無いなら、EnumWindows()でハンドル列挙して、GetWindowText()かな。
どういう思考してんだ
>>599 は
そんな英文じゃなくて説明文に書いてあるであろう単語並べるだけでいい
>>600 > 説明文に書いてあるであろう単語
それが判ってるなら質問なんかするかぼけ
訳:構ってほしいな。 こうですか?><
かまってほしくない人はレスしないでください
VC++2008ExpressEditionでフォームアプリケーション作成時はダイアログエディタ(?)あるけど Win32プロジェクトでもダイアログエディタ使うにはどうすればいい?
気合でRCを手書き。いやマジで。
>>605 Standard以上のエディションを買えってゲイツが言ってた
リソースエディタも無いようなゴミ配布するなって思う それなら正直コマンドラインコンパイラだけでいいよ
どっかにフリーでGUIなリソースエディタぐらい転がってるんじゃないか。
ExpressEditionは、WebKitのビルドで使ったりするけどな
ExpressEditionなんてイランからToolkit配布してくれればなー まあコマンドラインコンパイラが目当てならDDKでもインスコすればいいけどさ
意表をついてeVC4のリソースエディタ
>>611 イスラエルなら兎も角、イランからの配布はないだろ。
ダイアログリソースならBCCFormとか使えばいいじゃない
>>615 - 動作に必要なソフト -
Borland C++ 5.51(必須), BCC Developer(推奨)
>>616 brccもrcもほぼ互換だし、なんならリンク時にresでリンクすればいい。
つーか、今時ダイアログベースなソフトなんか作るな。
別にダイアログベースのアプリなんて質問者は言ってないけど
XN Resource Editor
フレームを消すにはどの関数調べたらいい?
フレームとだけ言われても分からん ウィンドウのフレームとか動画のフレームとか色々あるだろう
ああ、ごめん createwindowで作成されたウィンドウのフレーム
DestroyWindow? それとも枠なしウィンドウを作りたいという意味?
分からないならレスするな
SetWindowLong
フルスクリーンにしたくてメニュー消す所まではいけたけど フレーム消すので躓いてて Destroyしたら全部消えた
スタイル変更してBORDER無しのウィンドウにしたら
WS_CAPTION と WS_THICKFRAME を外してみろ
シリアルポートをReadFileで読んでいたら、
バッファには内容が入っているのに、
第三引数pNumberOfBytesReadがずっと0のままだったんだけど、どうしてかな?
http://yokohama.cool.ne.jp/chokuto/urawaza/api/ReadFile.html Vistaとか関係ある?
あと、SendFileがどうしてもうまくいかないんだけど。。。
CreateFileのとき、FILE_FLAG_OVERLAPPEDフラグを立ててるんだけど、
第四引数pOverlappedをOVERLAPPED 構造体をすべて0にセットして、
APIを叩いた前後0x30100000が入ってくるんだけど、そういうもん?
フルスクリーン無理だった 聞きすぎるのも悪いから出てきたキーワードでなんとかしてみる ありがとう
がんばれー
SendFileってどのAPI? 手持ちのWindowsSDKには載ってないが。
あと、とりあえずOVERLAPPEDのhEventはセットしといたら。
>>632 それだけじゃ分からん。
まさか第3引数に渡している変数の型がLPDWORDじゃないだろうな?
>>632 非同期モードで読んでるからじゃないの?
そのページに非同期での読み取られたバイト数取得方法書いてあるじゃん。
JPG を表示しようとして CreateStreamOnHGlobal(hGlobal,TRUE,&iStream); OleLoadPicture(iStream,0,0,IID_IPicture,(void**)&iPicture); iPicture->get_Handle((OLE_HANDLE*)&hBitmap); iStream->Release(); GlobalFree(hGlobal); return hBitmap; のようにしたら、メモリーリークが起こるのですが、 解決策を知っている方がいたら教えてください。
WS_OVERLAPPEDとかを設定する時に使うビット演算子の質問です WS_A | WS_B = WS_AとWS_Bのスタイルを持つ WS_A ~ WS_B = WS_Aのスタイルを持ち、WS_Bのスタイルを解除 この覚え方で問題ないですか? また & ^ の場合はそれぞれどう覚えたらいいですか?
WS_A ~ WS_B って構文エラーやろ
Style = WS_A | WS_B | WS_C Styleは AとBとC Style = Style & ~(WS_A | WS_C) StyleはB
タスクバーを外す(非表示にする)にはどうすればいいですか?
POPUPスタイルにすればいい ウソだけど
☠ฺ☠ฺ☠ฺ☠ฺ☠ฺ☠ฺ☠ฺ毎日新聞社による日本人女性への誹謗中傷☠ฺ☠ฺ☠ฺ☠ฺ☠ฺ☠ฺ☠ฺ
・母親は受験勉強をする息子の学力向上のためにフェラチオをする
・日本人女性の55%は、出会ったその日に男と寝る
・ファストフードは女子高生たちを性的狂乱状態におとしいれる
・ティーンたちはバイアグラを使ってウサギのようにセックスをする
・女子高生は、刺激のためにノーブラ・ノーパンになる
・日本の最新の流行 : 70歳の売春婦
・老人の売春婦の人気にもかかわらず、日本では小学生の売春婦にも仕事がある
・日本の若い看護婦は売春婦に勝る
・24時間オルガズムが止まらない病気で苦しむ日本人女性の数が増えている
・15未満の子供を対象とした疑似ポルノが日本に蔓延している
・OLの72%が、セックスをより堪能するために何らかのトレーニングを受けている
・人妻は気分転換の目的で昔の恋人に抱かれに行く
・主婦は郊外のコイン・シャワーで売春をしている
・日本男子は柔道や空手の部活で男相手に童貞を捨てている
・ほとんどすべての漁師は海でマンタとSEXしている
・まだ10代の少年から退職した老人までみんな2980円の手コキを利用している
・六本木のあるレストランでは、食事の前にその材料となる動物と獣姦する
※同社が全年齢向けコーナーで七年以上にわたり世界に向けて配信していたものの一部です
※同社の行為は日本人への偏見や人種差別、婦女暴行、幼児虐待を助長するものです
◆毎日新聞の英語版サイトがひどすぎる まとめ@wiki
http://www9.atwiki.jp/mainichiwaiwai/ ◆毎日新聞問題の情報集積wiki
http://www8.atwiki.jp/mainichi-matome/ つまり日本国民は
http://www.vipper.net/vip552788.jpg
>>640 iPicture->Release();
hBitmapも一緒に破棄されるので、注意。、
四回目にしてようやくローカル版msdnのダウンロードに成功したようだ インストール途中で ほにゃらら.cab を取得できませんとか勘弁してくれ MD5SUM くらいページにかいておけってんだ
MSDNサブスクリプションの方なら、SHA1とCRC付いてるのだけどねえ。 とはいえ、サイズを見れば正常にダウンロードできたか判る気もするけど。 今時、通信途中でデータが壊れたなんて滅多にないんじゃね? PC側のメモリやHDDの不調で内容が壊れるほうがよっぽど多い気がする。
650 :
640 :2008/06/28(土) 17:47:38
TCHAR szString[20]; strcmp(szString, "abcde"); これを実行するにはどうすればいい?
652 :
デフォルトの名無しさん :2008/06/28(土) 18:22:32
>>651 > TCHAR szString[20];
> strcmp(szString, "abcde");
>
> これを実行するにはどうすればいい?
TCHAR対応の関数をつかえばいいんじゃね?
_tstrcmp() とか、(←適当にかいたから多分別の名前)
strcmp((const char *)szString, "abcde");
典型的な悪い見本ですね
TCHAR szString[20]; _tcscmp(szString, _T("abcde"));
szStringが不定だから、どちらにしろ間違ってるな。
TCHAR szString[20]; _tcscpy(szString, _T("これを実行するにはどうすればいい?")); _tcscmp(szString, _T("abcde")); 注: UNICODEビルド専用
注: UNICODEビルド専用って? ANSIビルドとUNICODEビルドの両方に対応させるのが、 汎用テキストマッピングなんだけど。
ANSIだと文字数オーバーってことじゃ?w
>>652 -
ありがとう
#define _tcscmp wcscmpってなってた
wcscmp(szString, TEXT("abcde"));
で解決
>>662 お前は根本的に分かっていない
Win32の前にもっとC言語を勉強しろ
根本的に kwsk ただ関数を知らなかっただけだろ
>>662 明示的にUTF-16を扱うのならwcscmpでいいけど、
それならTCHAR型じゃなくて、WCHAR型じゃないといけない。
基本的に、TCHARには汎用テキスト関数を使うべき。
UTF-8で開発したいなぁ
>>662 #ifndef _UNICODE
#define _tcscmp strcmp
#else
#define _tcscmp wcscmp
#endif
ツールバーの区切りを塗りつぶすコードなんか 書きたくないよ・・・ もう、Windows 2000での見栄えなんて 考えなくてもいいよね?
2kはまだサポート対象OSですが何か?
>>669 UTF-16だって、漢字は2か4バイトじゃん
でも大体の感じは2バイトだよ。
擦れたい嫁 lstrcmp
いくらWin32つってもわざわざ糞遅いlstr~系を使う奴はアホ
知らなかったんだが、lstr*系って遅いのか? よければ具体的な理由を教えてほしい。 後、それに変わる高速なAP(CRTじゃない)Iを教えてくれると助かる。
その条件でなら最速でいいんじゃね? shlwapiのより速いかどうかは流石に保障しかねるが。
lstrcmpと速度比較するならstrcmp系じゃなくてstrcoll系だろ
そもそもlstr~系なんてWin16時代の遺物だろ 今更CRTを一切使わないプログラムなんて制限多すぎるだけだしそんな事して何になるんだ?
Str系はどうですか
基本的にCRTを使った方がいい。最近のVC++だとセキュリティ強化されているし lstr系やStr系を使うのは、CRTが対応していないWin9x用のソフトを作るときぐらいに した方がいいし、実際そんな機会はほとんど無かろう
ドライバ類ってCRT使えたっけ?
使える
strsafe使えってことで
話ぶった切るけど、ゲイツ引退か。 何かにつけて叩かれてたけど なんだかんだですごい人だったよな
ゲイツが引退したのでWin32APIは廃止します
それは困る
Win33APIになるんだよ
WIN64APIってあるの?
流石利益には聡い男、windowsの暗雲を察知していち早く逃げたか
>>686 最近のVCなら、/Oiでインライン展開されるから使っても平気。
なあここってWin32APIだから別にlstrで問題ないんじゃないか? 速度を議論するスレじゃないだろw
Win32 APIスレだから、無条件にWin32 APIを使えというのはどうかと思う。 さて、俺はshlwapiのStrCmpを使おうか。
シェル系はどうかとおもうぜ
> 今更CRTを一切使わないプログラムなんて制限多すぎるだけだしそんな事して何になるんだ? 「一切」とは想わないが、コンパイラ依存や_mbs系とかは避けたい 文字列比較がSBCS/MBCSとUNICODEで異なってていいのかとも思う
gccで通らないコードはクソ
Win32なんて実質VC++専用みたいな物だろうが 他のコンパイラがVC++に合わせればいいんだよ
EU諸国のお偉いさん方はそれを許さないわけです
Ctrl+Alt+Deleteを押したらタスクマネージャが出てくるけど あれを一時的に解除(タスクマネージャが出てこないように)するにはどうすればいい?
タスクマネージャはCtrl+Shit+Esc
VistaではCtrl+Alt+Delete押してもタスクマネージャは出ないが それはどうするつもりだ?(もっと凄いものが出てきちゃう)
↑w
>>702 キーボードに Shit キーが無いのでタスクマネージャが出せません><
クソ!どうしてShitキーが見当たらないんだ!
>>701 そのホットキーはセキュリティ確保のため変更するべきではないとおもうな。
そのコマンドは乗っ取り不可じゃなかったっけ? できるのか?
710 :
701 :2008/06/29(日) 22:46:48
ありがとう
俺の環境はWinXP Home SP3
Ctrl+Alt+Deleteでタスクマネージャでてくるよ
msg.message見てみたけどCtrl+Altまではメッセージ受信してるけど
次にDelete押しても受信せずにタスクマネージャ起動してた
>>707 ねんのために別のキーストロークに同じ動作セットしてから解除してみる
>>708 一応調べるだけ調べてみる
そもそもタスクマネージャを出したくない理由は何? マルウェアでも作ってて変なプロセスが起動してるのを見られたくないとか?
その理由を言ったところで
>>711 は教えないだろうな
タスクマネージャを、起動して終了するだけの自作プログラムに置き換え。
715 :
701 :2008/06/29(日) 23:30:53
スクリーンセーバーもどきを作ってて、それをタスクマネージャから終了されたくないんだ キー・マウスの信号を受信しても終了しないようにしてる 終了するためにはパスが必要で、例外が右上の×ボタン・タイトルバーandタスクバー右クリックの閉じる フルスクリーンからウィンドウスクリーンへ切り替える(メニューから)のにもパスが必要にしてある フルスクリーン時のメニューはマウスポインタがメニューが表示される位置にきたら表示するようにしてる
717 :
716 :2008/06/29(日) 23:42:02
そりゃセキュリティツールの類か?
719 :
701 :2008/06/30(月) 00:02:34
うん、セキュリティ類
なんだ、ただの悪戯ソフトか 他人のPCに仕込んでおいて *「うわ~、パソコンがおかしくなった><」 701「ほら、こうすれば直るよ」 *「さすが701さんすごい!」 こういう流れだな
単純に技術的な勉強したいってだけなら そういうの知っててもいいんじゃね?
自前の通信をするプログラムでWinsockのLSPを通さない方法はありますか? セキュリティソフトが通信の邪魔をしてしまうケースがあるのでWinsockを直接使うようにしたいです。 レジストリの操作はしないで特定のプログラム起動時に使わないようにできるでしょうか。
724 :
701 :2008/06/30(月) 02:13:48
>>714 ありがとう
なんとか再現はできたけど
レジストリいじらないでand.exeファイル単体でやる方法はない?
なんで
>>720 みたいなくだらん事言う奴がいるんだろな
そうです。そちらは過疎ってたのでこちらにしました。二重ですいません。
一時退席してる時にそのプログラム実行しといて誰に触られてもおkなようにしたいんだろ いくらフルにしてパスつけたってtskmgrから終了されたら意味ないしな
馬鹿か? ロックしとけばいいだけだろうが
一般アプリがSAS触れるなら、全然SASじゃねーじゃん。 あれは「確実にログイン画面であること(どっかのアプリが 出した偽ウインドウではないこと)」の保証のためにあるんだから。 それと、ユーザー画面で「ようこそ画面を使用する」を切ったり ドメイン環境にあれば、直接はタスクマネージャでないから。
どいつもこいつも能書きはいいからさっさと教えろよ 分からないならレスするな
わからないなら黙っててください
知らない奴がどうでもいい知識をひけらかすのは目障りなんだよな
スクリーンセーバーのパスワードロックだけじゃ安心出来ない環境の方を どうにかするべきだろう。
スクリーンセーバーのパスワードロックを知らないんだろう
知らないならレスしないでください
すいません
SetWindowPosのZ順って、 特定ウィンドウのすぐ手前を指定する方法は無いのでしょうか? A,B,CのウィンドウがZ順に並んでいる際、CをBのすぐ手前に移動したいとすると、 わざわざAのウィンドウを探して、hWndInsertAfterに使うしか無いのでしょうか?
わざわざ探すといっても、GetWindowで一発では
740 :
デフォルトの名無しさん :2008/06/30(月) 15:51:52
C++ & VS2008 でメモリマップドファイルについての質問です。 以下のようなメンバ関数を持つクラスを定義し、そのクラスのオブジェクトを2つ作って それぞれ異なるファイルを開こうとするとMapViewOfFile がエラーを返してきます。 2つのプログラムで1つのメモリを共有する手段としてあちこちで紹介されていますが、 逆に1つのプログラムで2つ開くことはできないんでしょうか? void MemoryMappedFile::Open(const std::string& FILENAME) { filehandle_ = CreateFileA(FILENAME.c_str(), GENERIC_READ|GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0); if(filehandle_ == INVALID_HANDLE_VALUE) { // エラー1 } map_ = CreateFileMapping(filehandle_, 0, PAGE_READWRITE, 0, 0 ,reinterpret_cast<LPCWSTR>(FILENAME.c_str())); if(map_ <= 0) { // エラー2 } SYSTEM_INFO system_info; GetSystemInfo(&system_info); view_ = static_cast<void*>(MapViewOfFile(map_, FILE_MAP_ALL_ACCESS , 0, system_info.dwAllocationGranularity, 0)); if(view_ == NULL) { // エラー3 } }
>>740 MapViewOfFileの引数がおかしくないか?
742 :
740 :2008/06/30(月) 16:08:18
追加です。 「1つ目のファイルは開けるけど2つ目のファイルは開けない」状態です。 開く順序を変えても、2回目のMapViewOfFileでNULLが帰ってきます。
GetLastErrorの戻り値くらい書こうよ
FILE_SHARE_READ と FILE_SHARE_WRITE は?
>>745 別のファイルを開こうとしてるんじゃまいか
排他モードで開いてるから、ファイルが閉じられるまで誰も開けない。
748 :
701 :2008/06/30(月) 18:50:08
オリジナルのものを表示させてたいからスクリーンセーバーは使わない オリジナルのものを表示したままパス入力させる パス入力失敗したら入力された時間・文字列を表示させる 仕様もオリジナルにしたいからスクリーンセーバーは使うつもりはない
後出しのクセに偉そうですね。 スクリーンセーバーをろくに知らないから使わないだけだろ?
750 :
701 :2008/06/30(月) 18:57:25
>>749 何も答えて無いクセに偉そうですね
APIもろくに知らないから煽るだけだろ?
訳:かまってほしいな
>>742 その2つ目のファイルは同じ?
1つ目と2つ目逆にしてみるとどうなる?
一応試したが、2つ開けないなんてことは無かった。
って順序変えてるって書いてるな。 ファイルのサイズは十分な大きさがある?
もう一度言うけど、MapViewOfFileの引数はそれでいいのか? オフセットの意味わかってる? そういう風にマップしたいなら、それでいいんだけど。
とにかく GetLastError()の結果が無いと何ともいえない。
>>701 Ctrl+Alt+Delete・タスクマネージャ無効にしなくても
タスクマネージャから終了メッセ受信したら弾いたらいいんでないの
758 :
701 :2008/06/30(月) 22:27:06
方法を知らない人が答えないでくれよ
訳:かまってほしいな
↑かまうなクズ
スクリーンセイバーなんてライブラリ使えよ。 Vista専用だけど。
>>762 レスも読まず無知のくせにどうでもいい知識ひけらかすな
キモイんだよ
いやあ照れるねw さあ遠慮せずにもっと褒めたまえ。
タスクマネージャから終了したら WM_DESTROY: MessageBox(0,0,0,0); って記述してもウィンドウが消えてからメッセージボックス表示されるね
767 :
701 :2008/06/30(月) 23:48:52
質問に答える気が無いなら黙っていてくれないか
DirectXで最大化+描画になるよね・・・たぶん
回答を理解しなかったゴミは黙っていてくれないか
770 :
701 :2008/07/01(火) 00:14:21
>>750 ,758,767は俺じゃない
その他の人ありがとう
とりあえず今の所は
WM_CLOSE:
break;
で回避した
でもタスクマネージャから終了した場合しばらくして
「このプログラムは応答していません」って出るんだが
出なくなるようにできない?
>>770 できねーよ
つうかタスクマネージャで終了できないプロセスなんて常識で考えれば不可能な事ぐらい分かるだろ
ウザイからもう二度と来るなクズ
さっさと消えろ
773 :
701 :2008/07/01(火) 00:27:13
できないのか、ありがとう
>>773 一日前に結論でてるだろうが
お前のせいでスレが荒れたのだから責任取れ
>>771 お前が昨日の時点で答えてたらこんなに長引く事にはなってなかったのにな
俺からすればお前がウザイから二度と来るなよクズw
(荒らしてた張本人がよく言うわ)
778 :
701 :2008/07/01(火) 00:35:45
責任ってなあw そもそも釣りだったんだがw まあここの連中の知識レヴェルの低さが分かったし悪く思わないでくれよ
いちいち構うな黙れ ↓
すいません
乗り遅れたか
なりすまししてる奴口調でばればれw
____ / \ / _ノ ヽ、_ \ / o゚((●)) ((●))゚o \ ほんとは技術的な話がしたいんだお… | (__人__)' | \ `⌒´ / ____ / \ / _ノ ヽ、_ \ / o゚⌒ ⌒゚o \ でも知識がなくて話に入れないお… | (__人__) | \ ` ⌒´ / ____ /⌒ ⌒\ /( ●) (●)\ /::::::⌒(__人__)⌒::::: \ だから荒らすお! | |r┬-| | \ `ー'´ /
タスクマネージャのexe削除すればよくね?
それじゃ一時的解除にならんだろ
>>785 解除するときは「WindowsのCDを入れてください」でおk
つまらんよ
訳:かまってほしいな
ループすんなボケ
HaltEbbThread(&this);
>>793 こういうの書く奴って面白いと思ってるのか?
ってか、タスクマネージャの有効無効を一時的に切り替えたらいい DisableTaskMgr DWORD 0 or 1
終了されたくないならプロセス隠すか 適当なプロセスにdllインジェクションでもしちゃえばいいのに
試してから言え
>>796 こういうのって最近のセキュリティソフトだと警告出たり妨害されないか?
っていうか、自分でOS作ったらいいんじゃね?
>>799 そうだよな。
Windowsと完全互換で、Ctrl+Alt+Deleteでタスクマネージャが出ない以外は同じに作っておけばいいだけだし。
795の方法が一番手っ取り早いんじゃね?
802 :
701 :2008/07/01(火) 05:40:00
レジストリいじってタスクマネージャON・OFF切り替える事にした
>>795 ありがと
void TaskMgrOFF(DWORD dwValue) // dwValue 0でON、1でOFF
{
HKEY hReg;
RegCreateKeyEx(HKEY_CURRENT_USER, TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System"), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hReg, NULL);
RegSetValueEx(hReg, TEXT("DisableTaskMgr"), 0, REG_DWORD, (const BYTE *)&dwValue, 4);
RegCloseKey(hReg);
}
↑話を理解してない馬鹿
↑馬鹿
ttp://www.microsoftpdc.com/Agenda/Sessions.aspx >Windows 7: Graphics Advances
>Windows 7 enables you to advance the graphics capabilities of your applications while carrying forward existing investments in your Win32 codebase, including GDI and GDI+.
>New enhancements to DirectX let Win32 applications harness the latest innovations in GPUs and LCD displays, including support for scalable, high-performance, 2D and 3D graphics, text, and images.
>Also learn how to leverage the GPU’s parallelism for general-purpose computation such as image processing.
どう思う?
Windows 7で、GDIやGDI+にGPUによるサポートがくるように読めるんだけど、
XP以前のようにドライバレベルではなく、
DirectXを使って汎用的に実装されるのだろうか。
だとして、既存のバイナリがそのまま恩恵を受けられるのか、
あるいは修正が必要なのか。
はい
>>811 Vistaで統合されると思っていたのにガッカリしてたところだよ
>既存のバイナリがそのまま恩恵を受けられるのか
M$的には原則そのままだろう
最適化ヒントをアプリが与えるためのAPIが追加されるかもしれない
Vistaはそう
701を叩いてた奴等、701が解決したらもう叩かないんだな 自分は無知だから解決されたら頭が上がりませんってかw そんな奴がレスするなよ目障りだから
817 :
811 :2008/07/01(火) 12:30:59
>>815 問題は下位互換性なんだよね。
Vistaのリリースによって、世の中には、
一度GetDCして、その後ReleaseDCせずに使いまわしている、
糞なソフトウェアがたくさんあると判明したし(Aeroではうまく動かない)
まあ、MSのことだから、気の毒なぐらい努力するんだろうけど。
>>817 Releaseせずに使いまわしてみたら指定したフォントじゃなくなったしな
わかりやすく言うと バグった
>>819 だから「Vistaのリリースによって」って書いてあるじゃん
UACと同様に、行儀の悪いコードを粛清するために わざと入れたんじゃないのか?w
>>819 ちげーよ。
Vista以前から、GDIはバッチ処理されるものだったんだよ。
どのくらい溜め込むかを設定するAPIもあったはず。
EndPaint、ReleaseDCを呼び出したということは、
Windowsに溜め込んでる描画も全部実行していいと伝えるということだ。
Vistaでは、一般的なPCのVRAM容量も増えたし、
デスクトップコンポジションのために、すべてのトップレベルウインドウにVRAMからバッファ割り当ててる。
問題は、あるウインドウがいつ描画を完了したのか(スクリーンに反映して良いのかどうか)、どうやって知れば良いのかということだ。
EndPaint、ReleaseDCがそのタイミングなわけだ。
なにもVistaで実装が変わったとはいえ、意味を変えたわけじゃない。
ときどきでいいからGdiFlushのことも思い出してください
Microsoft Visual C++ 2008 Express EditionでSpy++を実行するにはどうすればいい?
MSからフリーでダウンロードできる Windows Server 2003 SP1 Platform SDK には ついてた気がした。これ入れてみては。
SDKのは無印Spyじゃなかったっけ?
>>817 俺の知る限りCS_OWNDCフラグを指定していれば使いまわしても問題なかったはずだが、それもダメになってるのか?
>>811 本の虫のヒキコモデブオタニートが沸いていたのか
>>811 10月過ぎた頃にはMVPがネタにするだろうなと書き込もう思ったら早速書いててワロタ
NYARURUさんがそんなん書いてたな
ぶっちゃけVista以降の「GPUを有効活用する描画」ってほとんどが.NET (WPF)でないと意味無い気がする てかWindows7でGDIにもGPUサポートが入るなら、少なくともWin95以降の歴代Windowsの中で Vistaが唯一ソフトウェア処理って事になるけど、結局MSは何がしたかったのだろうか
Ctrl+Aが押されたくない場合はどうしてる? ホットキーで空回してる? 他のやり方も場合はどんなやりかたしてる?
>>832 ドライバに依存するから、サポートしてなけりゃXP以前でもソフトウェア処理
最近のオンボードVGAだとサポートされてないものもあったり
オンボードVGA なんてゴミです
そうはいうがな、大佐
貧乏ライトユーザを切り捨てるんですか!
全く関係ないがGPUとはNVIDIA語であってATI(AMD)は特に呼称は決めていなかったはず
ULPCなんかだと悲惨なことになりそう
>>838 つーか元ネタ的にはPSのCPU,GPU,SPUなんだろうかやっぱり。
ha?
HA?
いまはAMDATIもGPUを使ってる
目を凝らさないとCとGの区別が付かないから 別の名前付けてほしいんだよなぁ
CBU
VPU、VGA、PPU、GPU Video、Picture、Graphic どう使い分けたら良いのかさっぱりだ。
VPGAPU (Video Picture Graphics Accelerator Processor Unit) でおk
>>847 人の身体の障害の事をそう簡単に言うなボケ
>>850 お前一人の為に世界中の"GPU"の表記が変わるかボケ
とりあえずGとCの区別のつけやすいフォントでも探したほうが良くね?
853 :
デフォルトの名無しさん :2008/07/02(水) 08:50:19
小利口ではあるが、アンマリ利口ではない振る舞いだな。
名前を変えるのではなく、「G」の形をまるっきり変えてしまうのがいいだろう。 ЮPU とか
老眼は文字サイズ大きくしとけ
858 :
デフォルトの名無しさん :2008/07/02(水) 15:20:30
~~してほしいって言ってるだけだろ 煽り目的なら消えろ
子供の喧嘩かよw
↑馬鹿
馬鹿ってゆうやつのがバカなんだもん
↑普通
.NETを普及させたいMSの陰謀なんだろうか
>>864 今や.NETベースの方がWin32SDKベースでの開発よりも普及してるだろ
フルスクリーンゲームとかしてる時に間違ってウィンドウズキー押したら最小化してしまうんだが なんとかしてゲーム中だけウィンドウズキー無効にできない? RegisterHotKeyでは無理だった
>>866 ゲーム中だけウィンドウズキーを取り外せばいいんじゃね
そのゲームを書いてる人の立場なのか、Winキー無効にするソフト作りたいのか、 単にゲームのプレーヤーで方法が知りたいだけなのかどれ?
>>866 実行したいだけならKeySwapでググると吉
>>865 じゃあWin32を抹殺したいMSの陰謀
871 :
デフォルトの名無しさん :2008/07/02(水) 19:53:33
マウスカーソルの形を自分の作った絵のものに変えるにはどうすればいいですか?
.NETはWin32APIのラッパー Win32APIが無けりゃ動かない
無くなる計画もない
ありがとう
>>868 自分はプレイヤーで、Winキーを押しても最小化しないように(WINキーに反応しないように)したいんだ
WinAPIでなんとかなるんかなと思って
>>866 こっちの方法も一応手つけてみる
APIフック
>872 monoの立場っていったい・・・
グローバルフックで殺せなかったっけ?
殺すとか・・・もっとマシな表現できないのかねぇ
殺害?
キルする
キルる
デストローイ
あぼーん
ぶっ死ろす
投す
キルビル
全員通報しますた
>>880 monoだってWin32APIの代替としてWINEを使ってるから。
何年前の話だよ
今
895 :
デフォルトの名無しさん :2008/07/03(木) 18:38:53
C++相談室でこっちと言われたので転載しちゃいます。。 現在プログラムでマウスクリックをさせるものを作っていて、 ボタンのクリックなどはできるようになったのですが、 タブ(TabControl)の切り替えができません。 だれかご存知の方がいましたらご教授いただけると助かります。。 以下プログラム抜粋---------------------------------- POINT pt = {任意の座標X , 任意の座標Y}; HWND hWnd = ::WindowFormPoint(pt.x , pt.y); // マウスを任意の位置に移動 SetCursorPos(pt.x , pt.y); // クリック (Down -> UP) ::SendMessage(hWnd , WM_LBUTTONDOWN , 0 , MAKELPARAM(pt.x , pt.y)); ::SendMessage(hWnd , WM_LBUTTONUP , 0 , MAKELPARAM(pt.x , pt.y)); よろしくお願いします。
>>895 SendMessageする前に、
::ScreenToClient(hWnd, &pt);
してみ
SetCursorPosも無くてもいい気がするが、まあそれはプログラムの目的によるか。
勝手にカーソルを移動するソフトなんて迷惑極まりない
>>898 PC使えない人向けにいろいろとワンタッチにしたいと思うこともある
texとワープロソフトとレタッチソフトと出力ごとにプリンタ出力先と出力設定の変更
ハードウェアを直接触る部分は諦めるしかないけど
それ以外の操作を誰でもできるようにとか
でもVNCとかシナジーみたいなのを 作ってるのかもしれないし
901 :
デフォルトの名無しさん :2008/07/03(木) 23:24:54
ちょっとお尋ねしたいのですが、テキストエディタソフトを作っていたら、何にもそういう風に意図していないのにCtrl+Vでクリップボードからコピーできてしまうという現象に遭遇しました。 サクラエディタでも試してみたところ、サクラエディタの貼り付けのショートカットキーはF9と書いてあるのに、Ctrl+Vで貼り付けできてしまいました。 これってどういうことなのでしょうか??
君は何を言っているの?
>>901 WM_PASTE を握りつぶしてないって事では?
将来的には、Win32APIでゴリゴリ書いたものよりも .NET Framework使った方が軽くなったりするんだろうか 別に.NET Frameworkが基底になるのは構わないが 既存のアプリを修正するのが面倒くさい
>>904 CPUがx86でなくなって、x86コードがエミュレーションになったら、
そうなるかもしれん。10年以上先だと思うが。
現状のx64版Windowsで、x86アプリと.NETアプリだとどっちが軽いの?
907 :
895 :2008/07/04(金) 09:01:21
>>896 ScreenToClient試しましたがだめでした。
ボタンクリックの位置もずれてしまいました。
>>897 MSDNか何かを見ていた時にカーソルがコントロール上にあることを
確認しているととれる文章をどこかで見た気がしたから一文入れてみた
>>898 連続試験をやらせるアプリなんで誰も使わないPCでやるんですわぁ
某ソフトだとタブも切り替えられているんでできるとは思うんだけど
どうやるのかわかりませぬ。。。
x86アプリ
>>907 何がどう駄目だったんだよ。
こっちは実際に検証して動作確認した上で答えてるんだぜ。
駄目ならこっちで再現できるだけの情報出せよ。
優しいなあ
あとクリックがずれるって何だ? マウスの位置指定はScreen座標、コントロールへのメッセージはクライアント座標だぜ?
912 :
895 :2008/07/04(金) 10:04:03
>>909 動作確認までして頂いて助かります。
>駄目ならこっちで再現できるだけの情報出せよ。
・足りない情報を記述すると、製作しているアプリAで他のアプリBの操作を自動で行う。
上記記述が無くて申し訳なかったです。
ちなみに
ScreenToClientを使用前はアプリBのボタンの上にカーソルが動いたが
使用後はアプリBのボタンとは違う場所にカーソルが動く。
ちょっとはスクリーン座標とクライアント座標の違いを調べろ SendMessageの前ってのは、 SetCursorPos(・・・ ::ScreenToClient(・・・ ←ここに入れるんだぞ? ::SendMessage(・・・
つーか座標使いまわすなら保存しとけや
>・足りない情報を記述すると、製作しているアプリAで他のアプリBの操作を自動で行う。
>上記記述が無くて申し訳なかったです。
もうバカかと。
そのくらいわかってるよ。
足りないのは、具体的に失敗したコードをだしたり、
そのアプリBで使ってるタブコントロールは標準のものなのかとか、
なんでタブコントロールで動作しないかというと、
タブコントロールはボタンクリックしたらどのタブが押されたのか調べるために
メッセージ内のマウス座標を使ってるのに、その座標指定が間違ってるから。
で、こっちでアプリAとアプリBをつくり、実際に
>>895 のコードにScreenTo・・・を
追加してちゃんと動くことを確認してるんだっての。
916 :
895 :2008/07/04(金) 10:21:29
うわぁ~めっちゃもうしわけないっす。 ご指摘どおりやったらできました。。。 勉強になりました。ありがとうございます。。。。。。。。。
917 :
895 :2008/07/04(金) 10:57:33
>>915 最初にScreenToClientを指摘受けた時に
WindowFromPointの後、SetCursorPosの前に追加して動作しなかったのは
マウスカーソルの位置が問題ですか?
マウスカーソルの位置以外は同じ動作すると思ったのですが。。。
わからん、SetCursorPosそのものを無くしても動作するけどな。
Windows+Rで表示される「ファイル名を指定して実行」はどのようなAPIを使って指定されたファイル名を実行しているのですか?
ShellExecuteじゃね?
ShowWindow(SW_HIDE)を SendMessageを使って書くにはどうすればいいでしょう。
ShowWindow(hWnd, SW_HIDE)だべ? SendMessageじゃ無理だと思うけど、 メッセージにしたい理由はなによ。
SendMessage(hwnd, WM_CLOSE, 0, 0);
OutputDebugString関数で出力ウィンドウに文字列を出力できますが、 このウィンドウをクリアするAPIはあるでしょうか? Visual C++ 2008 Express Editionを使っています。
925 :
921 :2008/07/04(金) 14:29:46
ありがとうございます。
>>922 無理ですかね。
それっぽい、SendMessage(hWnd, WM_SHOWWINDOW, SW_HIDE, 0)ではダメでした。
子ウィンドウを非表示にした瞬間に親ウィンドウに
再描画メッセージが来て欲しく質問しました。
>>923 それで行けますかね。実験してみます。
>>925 再描画が欲しければInvalidateRect
急ぎならその直後にUpdateWindow
927 :
921 :2008/07/04(金) 14:51:22
>>926 UpdateWindowでできました。
InvalidateRectは使わなくても表示されました。
SW_HIDEでPostされた無効リージョンを、
UpdateWindowにより前倒しでSendの形で行われる感じなんですかね。
お答えくださったみなさま、ありがとうございました。
c:\に置いて notepad c:\hoge.txt とかやってみては
>>924 Standard以降ならOutputDebugString(_T("$COMMAND(clear)"))で出来るからお金出して買おうね
SelectObjectって、使った後は、 以前のオブジェクトに戻せってあるけど、 CreateCompatibleDCで作った、 そのウィンドウ専用のメモリDCでも戻さないといけないの?
>>932 つべこべ考えないで「戻せ」と書かれていればそれに従って戻しておけばいいんだよ
余計な詮索をしてたまたま規定外の動作が通ったとしても将来のWindowsで動くとは限らないだろ
いちいち戻すのが面倒なら最初にSaveDCしといて最後にRestoreDCしてから破棄すればOK
知らないならレスしないでください
936 :
デフォルトの名無しさん :2008/07/04(金) 21:44:21
int len = GetWindowTextLength(handle) これでリッチエディット"RICHEDIT"から文字数取得しようと思ったんだけど 大きい文字列だと32767とか間違った値がでるんだけど どうすればいい?
>>932 DCに選択したままのオブジェクトはDeleteObjectできない。
だからDeleteObjectするために選択を外さないといけないんだけど、
そのためには「何か別のものを選択する」しか方法がない。
一番手っ取り早い方法が、元あったものを戻すことだってだけのこと。
元のオブジェクトじゃなくて適当なシステムオブジェクト戻しても構わないし
極端な話、DeleteObjectする気がなければそのまま放っといてもいい。
> 元のオブジェクトじゃなくて適当なシステムオブジェクト戻しても構わないし > 極端な話、DeleteObjectする気がなければそのまま放っといてもいい。 こういうお馬鹿な考えだとOSがバージョンアップした時に動かなくなるんだよな。
てか、ちゃんとデリートするなりしないとリソースリークするんじゃね?
当たり前
極端な話、ウンコする気がなければトイレ作らなくてもいい。
必ずしもDeleteする必要があるとは限らないだろう。 たとえばGetStockObjectしたものだったらDelete不要だから DCに選択したままでも問題ない。 まあ、いるいらないにかかわらず「必ず元に戻す」と 作法として徹底するのはありだし、俺もそうしてるけどさ。 何でそうするのかって原理を知っといて損はないよ。
> DCに選択したままのオブジェクトはDeleteObjectできない。 いつの時代の話だ
1万年後
一万年と二千年後も
え?出来ないんじゃないの? 俺、いつも、ちゃんとオブジェクト戻してからデリってるけど。
Windowsをログオフできなくする裏技ない?
そんな穴、天下のMS殿の製品には存在しないのですよ
>>947 ポリシーとかレジストリでログオフメニューを消せたような気がするけど、自信ない。
クエリエンドセッションで断ったらどうなるんだっけ?
ウィンドウメッセージ (WM_xxx) をカタカナで書く人って頭悪そうに見えちゃうよね。
ウインドウメッセージ_クリエイトが来たところで、なんて見たこと無いが……
WM_QUERYENDSESSION
全角アルファベットよりましな気がするのはなぜだろう
WM_QUITとかWM_CREATEとか?
957 :
デフォルトの名無しさん :2008/07/05(土) 21:38:40
Unicodeに設定してコマンドライン引数で文字列を与えて表示させると、 ■■みたいなのがでて、表示がおかしくなります。 マルチバイト文字だとうまくいくのですが。 何がおかしいのでしょうorz ソースはこんなの。 wsprintf(GlobalLock(hMem), TEXT("コマンドライン引数=%s"), lpCmdLine);
もしかしなくてもコマンドライン引数がLPSTRだったりしてるかな?
959 :
デフォルトの名無しさん :2008/07/05(土) 21:47:30
>>958 その通りです……何か変更できたりするんですか?
WinMainのウニコード版ってあったっけ?
wWinMainかな。
963 :
901 :2008/07/05(土) 23:32:55
>>903 ありがとうございます!なんとなく分かりました。
964 :
デフォルトの名無しさん :2008/07/06(日) 00:09:38
草生やすなー
草生 やす って誰?
草生 やすな だよ。
私は今C++を勉強中で、WIN32を使ったアプリをC++のクラスなどを使った形式でコーディングしたいと考えています。 そこでgoogle検索してみたところ、C言語形式のコーディング(関数形式?)の解説サイトばかりでした。 どなたかC++のクラス機能を上手く使ったWINDOWSプログラミングを公開しているサイト、もしくはサンプルなどをご紹介頂けないでしょうか。
たいてのサンプルはCで解説してあるから それが使えないようだと先やって行けない。 最初から別の道へ進むことをお勧めします。
Win32はCから呼ばれることを前提に作られてるからねー
WTL使えばC++で組んだ気になれる。
eGUI++という名前通りエグイ物もあるぞ
>>968 Win32APIをC++でラップすることから始めてみることを勧める。
「メッセージハンドリングの実装で躓く」に1セント
MFCがあるだろうが
>>968 今からC++/Win32を勉強するなんて馬鹿
時間を無駄にするなよ
じゃあなにすればいいのさ
Dでもやっとけ
C++/Win32もやっといた方がいいでしょ
この流れ嫌いじゃないw ところでちょっと聞きたいことがあるんだが、 設定ファイルとかの定義ファイルを扱うとき レジストリ弄りたく無くて、GetPrivateProfile*使ってたんだけど 処理速度が少し低速気味でもう少し処理速度を早くしたいと 思っているんだが。。。 ※但し、Reg*系APIを使わない前提 こういう時って皆どうやってる? ※例えば、独自のバイナリ構成して それを設定ファイルとして触ってるとか。
内容が数値とかBOOLなんかメインなら構造体作ってベタ書き。 文字列主体ならsqliteとか適当に。 場合によってはスクリプト言語組み込んで設定スクリプトで吐き出す
984 :
982 :2008/07/06(日) 15:45:07
>>983 数値系は構造体で一気に読み出せばいいとは考えてたんだが、
文字列はなるほど。スクリプトを組み込むと言う手があったか
こうして統一性の無い設定ファイルが生まれるのであった。
986 :
982 :2008/07/06(日) 16:05:06
ちょwwwwwwwwwwwwwww
いやほんと。設定ファイルみたいなものにOS標準のサービス/APIを使わないのはどうかと思うよ。
OS標準ならレジストリ一択だろ。 INI弄る関数は互換性のために残ってるだけだし。
989 :
982 :2008/07/06(日) 16:17:36
>>987 ,988
なるほどそうか。
レジストリは一部のユーザが嫌がりそうだから
極力使わないようにって感じだったんだが。。。
ともかく設定ファイルアクセスによるオーバヘッドは
無視できるレベルだから独自で云々とかやめる事にして
現状のままでいくことにするよ。
教えてくれてありがとう
今時レジストリを嫌がる奴なんてWin16時代のオッサンだろ
端末ごとに関連付けされているエディタを 識別して開くにはどうすればいいんでしょうか? 【 例 】 *.txtが秀丸に関連付けされていた場合 秀丸エディタでオープンする 逆にnotepadに関連付けされている場合・・・略 お願いします
クソバレーの所為でコードギアスが遅れそうじゃねーか!!!!!!!!
ShellExecute
設定とかXMLでいいじゃん
日本バレーってほんとホームグラウンドじゃないと 勝てないんだな 7連敗とかwwwwwwwwwwwwww
俺はレジストリ弄りたくないな。なんか間違えてたら怖い。
ギアスおもしれええええええええええええええええ おまいらもみようぜwwwwwwwwwwwwww
俺んちにはテレビなんていう南朝鮮の侵略兵器は置いてねーんだよ!
ゴミソフトにレジストリ汚されたくないというのがあるからな
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。