1 名前:デフォルトの名無しさん mailto:age [2007/09/08(土) 21:41:22 ] スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。 やさしいお兄さんやお姉さんたちが答えてくれるかも。 過去スレ、関連リンクは>>2-5 くらい。 ■注意 ・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。 ・日本語版MSDN Online Libraryは不完全です。英語版(msdn.microsoft.com/library/ )の利用推奨。 ・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。 ・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
75 名前:デフォルトの名無しさん mailto:sage [2007/09/10(月) 23:16:57 ] >>68 Apacheがサービスとして動いているなら、 EnumWindowがうまく動いていないように見えるのは、 デスクトップが異なっているため。 ウィンドウステーションとかでググれば色々わかると思う。 サービスのプロパティで、 「デスクトップとの対話をサービスに許可」にチェックを入れれば、 そのプログラムはお前が思っていたとおりに動くようになるかもしれない。 ただし、セキュリティ上の問題があるかもしれないので、慎重にやれ。
76 名前:デフォルトの名無しさん mailto:sage [2007/09/10(月) 23:20:03 ] 一応API関係なんじゃないの PHPがサービスとして起動していて目的の窓と別セッションになっているとか
77 名前:68 mailto:sage [2007/09/10(月) 23:27:30 ] >>75 どうもです。ウィンドウステーション知りませんでした。 プロセスが異なるぐらいは想像していたのですが、 検索キーワードがまったく思いつきませんでした。 ありがとうございます。セキュリティーは何とかなりそうです(多分)。
78 名前:68 mailto:sage [2007/09/10(月) 23:49:22 ] >>76 どうもです。仰るとおりサービスで起動しているため、ユーザーのデスクトップが取れていなかったみたいです。 ネット調べてたらGetProcessWindowStation命令で行けそうな感じです。 ありがとうございました。参考リンクはっときます。 ttp://forums.belution.com/ja/vc/000/401/43.shtml ttp://support.microsoft.com/default.aspx?scid=kb;ja;173687
79 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 00:02:32 ] 多少和んだ
80 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 00:05:21 ] >>78 殺す
81 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 00:27:49 ] >>80 なんで? キンタマみたいなのができそうだから?
82 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 00:30:40 ] どして殺すの( ゚д゚)
83 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 00:32:27 ] ( ゚д゚ )なぜ殺した
84 名前:68 mailto:sage [2007/09/11(火) 00:41:41 ] あはっwwwすでに殺されてるしwwwwwww ウイルス作る技術も度胸もありません。へたれなんでwwwwwwwwww セキュリティー絡みの監視ソフト作成してて、画面の定期的なスナップが必要だったのです。 皆様どうもです!
85 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 01:16:02 ] >>84 よ、>>80 は実は優しい子。 あとでザオリクをry
86 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 01:38:20 ] VC++6で生成したサンプルプログラムが 2005Expressでコンパイルできない(´・ω・`)
87 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 01:44:29 ] ありがち
88 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 01:44:45 ] >>86 がバカだからVC++6で生成したサンプルプログラムが 2005Expressでコンパイルできない(´・ω・`)
89 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 04:59:18 ] フリーソフトのLinkOpenとかでやっている、 「エクスプローラ上のファイルのアイコンを選択状態(シングルクリックした状態)にする」 のってどうやるんでしょうか。いわゆるシェルAPIを使うだと思うのですが、 扱ったことがなく見当がつきません。よろしくお願いします。
90 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 05:10:42 ] explorer C:\Windows,/select
91 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 05:49:58 ] おお! 今はもう時間が無いのでとりあえずですが 「ファイル名を指定して実行」で期待した振る舞いになるのを確認しました ありがとうございます
92 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 11:59:03 ] SJISベースのアプリ(のGUIなコントローラ)にUNICODEのファイル名を突っ込むと 当然変換時に欠落した文字がでてファイル操作等に失敗する可能性が出てきますが そういうのをなるべく小手先で対処する方法はないですか? 1. Unicodeなテキストをメモリ上にロード 2. 1.のメモリデータをSJISなAPIやコントローラ(ListBox等)に突っ込む 3. 2.のデータを取り出してファイル操作 <- ここでエラー 例えば1.2.の間でファイル名がSJISに変換不可と判明したら8.3形式にするといったことをやれば出来るのかなと漠然と考えていますが・・・
93 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 12:22:44 ] それでいいんじゃね
94 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 12:45:12 ] ハードリンクを作るとか
95 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 18:57:12 ] >>92 ファイル名だけ対応しているソフトは結構あるが; パス名に対応していないソフトが多いですね。 ぜひ、がんばって対応してください。 UTF-8 に対応したソフトも増えてきたので、内部で UTF-8 でやったどうですか?
96 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 19:00:24 ] やったどう
97 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 19:45:02 ] 殺した後に姦淫してやる
98 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 21:26:37 ] ( ゚д゚ )なぜ犯した
99 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 21:31:08 ] 復活させるため
100 名前:デフォルトの名無しさん [2007/09/11(火) 21:31:18 ] そこに穴があるからさ!
101 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 22:46:57 ] 特定のコントロールに文字を送りたいんだけどどうしたらいい?
102 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 22:49:06 ] そんな簡単な事も分からんのか死ね
103 名前:デフォルトの名無しさん [2007/09/11(火) 22:50:40 ] おまえにはふたつあるが おれにはひとつしかないじゃないか しかもぼうがひとつおおいし… ありゃ2か… ありゃりゃ3か…orz
104 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 22:50:51 ] どんな風に渡すかにもよる 単純にSetWindowTextで済むなら楽だが
105 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 23:02:27 ] ゴメ 特定のコントロールに対してVBAのSendkeysの様に文字を送りたかったんだ。 sendkeyじゃ誰かが触ってアクティブフォームが変わったら送り先が変わってしまうので、 送り先を指定してkeyを送りたい。
106 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 23:22:15 ] ウィンドウ指定してWM_KEYDOWNでいいんじゃねーの
107 名前:デフォルトの名無しさん [2007/09/12(水) 00:51:33 ] 初歩的な質問で申し訳ないのですが、タイトルバーの横にあるMINBUTTONやCLOSE BUTTONって、 どうやってメッセージを捕まえるのでしょうか?ご教授よろしくお願いします。
108 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 00:53:48 ] >>107 GetMessage WM_SIZE WM_CLOSE
109 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 00:59:38 ] WM_SYSCOMMAND
110 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 01:05:06 ] >>108 >>109 ご教授ありがとうございます。 WM_SYSCOMMANDで欲しいメッセージを捕まえることができそうです。 ありがとうございました。
111 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 01:53:49 ] 作ってるアプリの機能がかなり増えてきて コールバック関数がものすごく肥大化してきました。 これはやむを得ないことなんですかね?
112 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 01:56:04 ] いいえ
113 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 01:59:36 ] どうすりゃええのん
114 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 01:59:46 ] 例えばウィンドウプロシージャなら、 メッセージクラッカみたいに――あるいはそれを使って―― メッセージ毎に関数を分割するという手がある。
115 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 02:01:50 ] 茸っぽい 茸は文学ではない
116 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 02:07:32 ] メッセージクラッカですか そういうのがあるんですね ありがとうございました
117 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 05:37:40 ] デバイスコンテキストに対して、特定の座標の色の取得・設定はGetPixel, SetPixel(V)を使うしか方法はないですか? 速度が遅いので、他の方法を使いたいのですが。(TextOutとかはどうやって描いてるんだろう…
118 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 05:55:53 ] >>117 ↓読むと幸せになれるかもしれない wisdom.sakura.ne.jp/system/winapi/win32/win121.html ちょっとややこしいが
119 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 06:04:22 ] >>118 ありがとうございます。 一旦CreateDIBSectionで作ったビットマップにBitBltしてコピーし、 そこで直接データを読み書きして、その後、元のデバイスコンテキストへBitBltして戻す、という方法が思いつきました。 早速書いてみます。
120 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 10:23:20 ] 現在、汎用的な関数として、 GetLastErrorからFormatMessage, MessageBoxへの連携処理を考えています。 ここのGetLastErrorで返されるエラー値なんですけど、 この値からメッセージの分類(クリティカル・警告・情報...etc)とか 判別できるものでしょうか? できるのであれば、その手法を教えていただけませんか? ちなみに、皆さんはどうしています?
121 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 14:14:48 ] 思想を改める必要がある GetLastErrorはあくまで補助的なものであって、本来やりたかった処理が失敗したことを通知することが最優先。 FormatMessageで得られるエラー原因は追加で表示してユーザーの参考にさせる程度が関の山。
122 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 14:34:55 ] HRESULTはビット毎に意味があるけど、GetLastErrorはビット29以外は 見た覚えがないな。
123 名前:120 mailto:sage [2007/09/12(水) 14:57:04 ] >>121 なるほど、割り切って内容だけを表示させることに勤めます。 >>122 HRESULTの資料を見て、>>120 を考えてみたんですが、 ダメそうです。 お騒がせしました。
124 名前:デフォルトの名無しさん [2007/09/12(水) 21:25:05 ] hMenu = LoadMenu(NULL, _T("IDR_MENU")); SetMenu(hWnd, hMenu); MENUITEMINFO menuItemInfo; ZeroMemory(&menuItemInfo, sizeof(menuItemInfo)); menuItemInfo.cbSize = sizeof(menuItemInfo); menuItemInfo.fMask = MIIM_TYPE; menuItemInfo.fType = MFT_STRING; menuItemInfo.dwItemData = TEXT("追加された"); //InsertMenu(hMenu, 15, MF_BYCOMMAND, 16, _T("追加された")); InsertMenuItem(hMenu, 15, FALSE, &menuItemInfo); DrawMenuBar(hWnd); 「追加された」が追加されず、セパレータになるんですが、どうしてですか? InsertMenu の方だとちゃんと追加されます。 WinXP SP2 VC++2005
125 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 21:36:43 ] dwItemData = TEXT("追加された"); は dwTypeData = TEXT("追加された"); じゃないかな ぱっとみだから間違ってたらすまんこ
126 名前:124 [2007/09/12(水) 21:41:50 ] >>125 ありがとうございました。 全然、気づかなかったです。名前が似てるから・・・ 無事に、追加されました。
127 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 00:48:15 ] とある人力検索にて Q:Web2.0が遺した物って何ですか? A:DoCoMo2.0です
128 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 01:51:52 ] あるソフトのウィンドウ(syslistview32)にコンテキストメニュー を表示しようと思い、 PostMessage(hWnd, OS.WM_KEYDOWN, VK_APP, 0); PostMessage(hWnd, OS.WM_KEYUP, VK_APP, 0); を実行しましたが何も反応がありませんでした。 別のソフトであればコンテキストメニューが表示されます。 やり方が間違っているのでしょうか? ちなみに右クリックした瞬間(押し下げた瞬間)にメニューが 出るソフトと、クリックし終わった瞬間(押し上げた瞬間)に 出るソフトの両方があるんですね。
129 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 02:08:58 ] 単純にそのソフトがそのキーを拾ってないだけじゃないの
130 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 02:10:40 ] WM_CONTEXTMENUを送ったらどうだろう?
131 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 09:49:52 ] spyを使おうぜ
132 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 11:47:02 ] >>130 できました!! WM_CONTEXTMENUはコンテキストメニューが開くときに 自動的に送信されているんだと誤解してました >>131 spyってwinspectorのことですか?
133 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 12:00:34 ] ウザイからどっか行って
134 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 16:43:29 ] どうしてもわからんので教えてください! libpngとlibjpegを使っているのですが 片方ずつ使う分には問題ないのですが両方のlibを使おうとすると LINK:2005エラーが出てしまいます。最初ランタイムが違うのかと libの方を確認してビルドし直したりしたんですがどうやらそういう問題 ではなさそうです。何か解決法はあるのでしょか? 呼び出し方はこんな感じです。 #ifdef _DEBUG #pragma comment(lib, "libjpegd.lib") #pragma comment(lib, "libpngd.lib") #else #pragma comment(lib, "libjpeg.lib") #pragma comment(lib, "libpng.lib") #endif
135 名前:134 mailto:sage [2007/09/13(木) 17:03:16 ] Σ(・∀・ )勘違いでしたすみません解決しました><
136 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 22:17:50 ] プログラムを動かしてるOSにないAPIを使ったらどんなことが起こるのでしょうか。 例えばWin9xでW系APIや、Win2000でuxthemeのAPIなどです。 その関数が実行されないだけとか、何かエラーが発生する、そもそも起動できないとか。 試す環境がないので聞いてみました。
137 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 22:25:17 ] 爆発する
138 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 22:38:32 ] >>136 スタティックリンクならエントリポイントが見つからないとかなる 動的リンクなら実行されないかエラーになる
139 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 22:40:13 ] ttp://www.uploda.org/uporg1016109.png 起動はする(CreateProcess == TRUE)けど、エントリーポイントに行く前にcsrss.exeが爆発させるので ユーザー視点では起動しないのと同じ
140 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 22:55:22 ] 9xのW版APIはエントリポイントだけあるはず。 そして稀にMessageBoxWやTextOutWなど機能するものがある。
141 名前:デフォルトの名無しさん [2007/09/13(木) 22:55:24 ] dllからアタッチしたプロセスIDやウインドウハンドルとか取得するには何を使えばいいんですか。 ヒントください。
142 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 22:58:50 ] あたっちすれっどなんとかとか
143 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 23:08:56 ] >>140 忘れてけどそういえばそうだった 単純に失敗を返すだけの実装になってるんだった で、たいていRegisterClassで失敗して無言でWinMainを終える、と
144 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 23:16:57 ] プログラミングWindowsで、RegisterCassExが失敗したら MessageBoxで9x非対応というメッセージを表示して終了するコードを見て、 なるほどと思った。
145 名前:141 mailto:sage [2007/09/13(木) 23:19:59 ] >>142 ありがとん DWORD GetCurrentThreadId(VOID);を見つけました。
146 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 00:03:42 ] >>140 MSLU使えば強制ANSI変換で一応動くはずだしな
147 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 00:07:00 ] >>146 つい先日、MSLUの浮動小数点のバグではまった。
148 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 00:08:35 ] だがすぐに抜け出した。
149 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 00:56:25 ] そしてまたはまった。
150 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 01:07:53 ] なんかエロい話だな
151 名前:デフォルトの名無しさん [2007/09/14(金) 02:56:13 ] 出して、入れて、出して、入れて、これがプログラムの基本です。
152 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 04:01:22 ] SNEG?
153 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 05:09:26 ] 挿入が先だ。POPは後だ
154 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 05:14:05 ] 朝からinserterだのpush_backだのと
155 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 05:18:01 ] Oh,Yes!Come on Fuck me!!
156 名前:デフォルトの名無しさん [2007/09/14(金) 07:10:43 ] Yes,pussy
157 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 07:46:26 ] Shell_NotifyIcon の uTimeout が10秒より短くしても無視される件、 突破する方法しりませんか? 3秒がいいんだけど。
158 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 07:55:35 ] The system minimum and maximum timeout values are currently set at 10 seconds and 30 seconds, respectively.
159 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 08:21:35 ] 通知アイコン専用スレッド作っちゃえ。 Shell_NotifyIconがタイムアウトするのは、 別の重い処理が走っているという事だから、 焦らず待ってもいい気はするけどね。
160 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 17:33:22 ] shit
161 名前:157 mailto:sage [2007/09/14(金) 18:13:00 ] >>158 それは読んだ。レジストリとかで変更できるのかな。 まさかシステムのDLLにハードコードされてるのか?? >>159 szInfoにNULLを渡すと消せるみたいなので、自分でタイマ制御するかな。。。
162 名前:デフォルトの名無しさん [2007/09/14(金) 20:32:52 ] もしスレ違いだったらすみません。 ウィンドウを複数表示させて(子ウィンドウなど)、 ひとつのウィンドウをドラッグして移動させたら、 他のウィンドウも一緒に移動するようなことってできないんですかね? グループ化のようなことです。
163 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 21:06:13 ] >>162 ハンドル保持してるんなら WM_MOVEとかで設定したら?
164 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 21:25:23 ] >>162 >>163 はなしで WM_MOVEは移動後に送られるもんだった
165 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 21:43:40 ] WM_MOVING
166 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 23:39:20 ] 素朴な疑問です。 皆さんにとってTCHAR型は現役ですか? typedef std::basic_string<TCHAR> tstring; とか #ifdef UNICODE とか、 もうそんな時代じゃないのでしょうか? コード量を増やし、可読性を下げる、ゴミ虫のような存在でしかないのでしょうか?
167 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 23:50:03 ] TCHARで思い出したけど。 Win32APIのワイド文字はあくまでWCHARであり、wchar_tは違うよね。
168 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 23:59:01 ] 俺はTCHARを現役にさせている。 使わないけど目の前にWindows 98マシンを置いている影響かも。 しかし、#ifdef UNICODEはメインのコード中には出現させない。 比較的ライブラリ的な部分で吸収するようにしている。 >>167 そうかもしれないけど、 でもきっとみんなごっちゃに扱っているよ。 少なくとも俺はそう。
169 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 00:02:43 ] 俺も現役だな。 文字列は LPCTSTR とか _T() で囲ってたりする。 ただ tstring も使ってはいるんだけれど、 サロゲートペアの問題により TCHAR* 変数を ++ した所で次の文字を指す保証は無いと知って、 CharNext() を利用する CString の方が安全という事を最近知った。
170 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 00:07:36 ] VC2005でプロジェクト作ってまずするのは、「マルチバイト文字セットを使用する」
171 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 00:20:17 ] はい、>>166 はゴミ虫のような存在でしかありません。
172 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 01:32:40 ] > TCHAR* 変数を ++ した所で次の文字を指す保証は無いと知って、 どうして?
173 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 01:33:10 ] ごめんサロゲートペアって書いてあるな
174 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 01:33:17 ] >サロゲートペアの問題により
175 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 01:44:12 ] 漏れはTCHAR撲滅 STLでstd::string使うようにした コードはUTF-8 API呼ぶときだけWCHARにして渡してる 戻り値も変換してから使う 無駄なこと考えなくて済むようになったので プログラミングに専念出来るようになった
176 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 01:49:24 ] std::stringにUTF-8を突っ込むとな?
177 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 01:56:34 ] >>169 CharNextはサロゲートペア非対応って書いてあるけど。 blogs.msdn.com/michkap/archive/2005/01/14/352802.aspx でも結合文字列に対応しているのは立派。 あと、tstring/CStringで、インクリメントして次の文字にならないと言えば、 サロゲートペアや結合文字列の前に、ANSI時のマルチバイト文字があるだろうに。
178 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 02:05:26 ] >>169 サロゲートペアでなく、マルチバイトの問題のことを言っているのか? 現時点ではCharNextを使ってもサロゲートペアは扱えず、 IS_SURROGATE_PAIR IS_HIGH_SURROGATE IS_LOW_SURROGATE というマクロを使って判定するしかないそうな 参考 ttp://slashdot.jp/articles/06/12/26/0059208.shtml
179 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 02:06:55 ] かぶった...orz
180 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 02:44:17 ] >>176 なんか問題あるの?
181 名前:169 mailto:sage [2007/09/15(土) 02:44:40 ] >>177-178 うそん orz
182 名前:デフォルトの名無しさん [2007/09/15(土) 02:52:03 ] 質問です。 VB6 でファイルのプロパティ(バージョンや製品名など)を取得するのに GetFileVersionInfo等を使っています。 ロケールIDをVerQueryValueで取得できたので、言語名をGetLocaleInfo(ロケールID, LOCALE_SENGCOUNTRY)で 取得すると、"Japan"という英語の文字列が返ってきました。 しかしシェルの「ファイルのプロパティ」で表示されるのは「日本語」や 「英語(米国)」など日本語の文字列です。 これを取得するにはどうしたらいいんでしょうか?
183 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 02:55:14 ] ジャパーン♪
184 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 03:33:22 ] FAR PASCALとかNEARって書いてあるコードをたまに 見かけますが どういう意味があるんですか?
185 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 03:41:58 ] 16ビットの名残
186 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 10:31:59 ] _stdcallとか_cdeclって書いてあるコードをたまに 見かけますが どういう意味があるんですか?
187 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 10:37:18 ] 聞く前にドキュメント嫁
188 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 10:37:35 ] ググれ
189 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 10:40:16 ] ドキュメントなんてないし ぐぐってもでないからきいてるんだよ わかんないなら書き込むなよ
190 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 10:43:44 ] すいません 調べたらなんとなくわかりました スレ汚しすまそ
191 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 10:49:28 ] >>189 死ね
192 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 11:00:09 ] >>182 MSDNよく読めや、ボケが。 と言いたいところだが、これに関してはwinnls.hを直接読んだ方が遥かに手っ取り早い。 たぶん、必要なフラグは LOCALE_SNATIVELANGNAME だと思う。
193 名前:デフォルトの名無しさん [2007/09/15(土) 11:14:18 ] クイズの答えをEditコントロールに入力し、 その文字列を取得し、比較し正解か不正解か というものを作りたいんですが、文字列を取得する方法を教えてください。 一応調べたら、GetWindowTextではできないってことはわかったんですが・・。
194 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 11:19:30 ] 次の質問をどうぞ
195 名前:193 [2007/09/15(土) 11:37:50 ] すみません。自己解決しました☆GetWindowTextでできました。
196 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 13:35:36 ] おめでとう☆
197 名前:デフォルトの名無しさん [2007/09/15(土) 15:42:58 ] 以前、マウスカーソルの移動とキーの自動入力を行うプログラムを作る必要があり、 その時は、調べて解決したのですが、今調べるとどうしても見つかりません。 たしか、APIをコールした後、開放しないと入力を受付けなくなるタイプと、 入力を受付けるタイプ(たしか、こちらは非推奨だったような)の二つがあったと思います。 そのような、マウスカーソルの移動とキーの入力を行う APIの名前をご存知のかたがいらっしゃったら教えてください。
198 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 15:50:48 ] チートしたいから教えて下さいってはっきり言えや
199 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 17:26:15 ] チートしたいから教えてください!
200 名前:デフォルトの名無しさん mailto:age [2007/09/15(土) 17:48:13 ] ISAPIでのメールスロットについて悩んでおります。 まず、メールスロットのサンプルプログラムを作りました。 HANDLE hSndSlot = CreateFile(SLOTNAME, GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ) ; この通りにCreateFileしますと問題なくハンドル作成できます。 次にISAPIのDLLの中で全く同じCreateFileの一文を書いたのですが、 ERROR_ACCESS_DENIEDのエラーになってしまいます。 (CreateMailSlot無しですと、ISAPI-DLLの中でもERROR_FILE_NOT_FOUNDが返ってきます) ISAPI-DLL内でCreateFile()に失敗する原因としてどのようなものが挙げられるでしょうか。 二時間以上悩んでおりますが全く抜け出せません・・・
201 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 18:59:20 ] セキュリティー上危なくない?
202 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 23:06:26 ] すみません。 OleLoadPictureを使ってjpegを読み込みたいのですが、 読み込んだ直後にIPicture::get_Height、 get_Widthでサイズを取得すると、 実際の画像の大きさよりかなり大きな値になりました。 例えば113 は 2990に、640は16933になります。 OleLoadPictureの戻り値は正常です。 何か原因でしょうか?
203 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 23:11:32 ] >>202 それ単位がPixelじゃないんだ HIMETRICなんだ msdn2.microsoft.com/ja-jp/library/bc81z8b6 (VS.80).aspx
204 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 23:52:07 ] >>203 なるほど。おかげ様で正常にピクセル単位に変換できました。 ありがとうございました。
205 名前:デフォルトの名無しさん [2007/09/16(日) 00:50:29 ] >>192 回線切ってwinnls.h を読んできました。なんとかなりそうです。 SENGCOUNTRY って、English Country のことですね。 そこら辺に落ちてたサンプルの作者が分かってなかったみたいです。 人のせいにします。 ありがとうございました。
206 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 00:53:00 ] このスレの人たちはMFC使ってない人が多いのかな? 個人的にはMFCきらいなんでWin32そのまま使ってます
207 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 00:56:36 ] MFCは別スレなんだから、ここは使ってない人が多いのは当たり前。
208 名前:デフォルトの名無しさん [2007/09/16(日) 01:10:04 ] >>205 一応追伸 俺が求めていたのはLOCALE_SLANGUAGE(localized name of language) だったようです。では。
209 名前:200 mailto:sage [2007/09/16(日) 08:46:51 ] もう5時間試行錯誤しているのに さっぱり進めないッスorz
210 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 08:52:10 ] >>209 >>201
211 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 08:55:31 ] >>209 死ぬまで彷徨えばいいよ
212 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 09:25:48 ] >>209 ISAPI全然しらんけど MSDNライブラリの「Reading from a Mailslot」っての読んだ?
213 名前:デフォルトの名無しさん [2007/09/16(日) 09:27:23 ] SHFileOperation でフォルダ・ファイルのコピー等の操作をしています Explorerでは、出てくるダイログが最前面表示でしっかり出てきますが、 Flagの設定等でそれと同じようにできるでしょうか、教えてください。
214 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 09:35:37 ] できます
215 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 09:38:50 ] >>209 正直IIS全然詳しくないけど、ISAPIってNetworkServiceで動作するんじゃないの? メールスロットの作成元がよく判らないけど、 既定では作成ユーザかSystem位しかアクセスできないような気がする。
216 名前:デフォルトの名無しさん [2007/09/16(日) 09:41:25 ] >>214 どうもありがとうございました!!
217 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 09:43:06 ] bool(BOOL)は扱いが楽だが、たまに情報量が少なくて戻り値型を変えてほしいと思うケースがある
218 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 09:52:10 ] HRESULTにしろってか
219 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 10:00:27 ] >>214 ところで、Flag引数のバリエーションにはヘルプによると fFlags FOF_ALLOWUNDO FOF_CONFIRMMOUSE FOF_FILESONLY FOF_MULTIDESTFILES FOF_NOCONFIRMATION FOF_NOCONFIRMMKDIR FOF_NO_CONNECTED_ELEMENTS FOF_NOCOPYSECURITYATTRIBS FOF_NOERRORUI FOF_NORECURSION FOF_NORECURSEREPARSE FOF_RENAMEONCOLLISION FOF_SILENT FOF_SIMPLEPROGRESS FOF_WANTMAPPINGHANDLE FOF_WANTNUKEWARNING とありましたが、これ以外にもありますでしょうか?該当の内容のFlagが 見つけられずにいます、よろしければご教示のほどよろしく!
220 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 10:34:25 ] ヘッダ眺めれ
221 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 10:45:58 ] hwnd
222 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 13:39:59 ] >>220-221 hwnd ではゼロポインタを指定しています。これを別のものに設定すると 可能になるでしょうか。 じつはWin32APIはほとんどこれしか使っていない.NETユーザーなもので この辺のことがよくわかりません。すみませんが、よろしくお願いします。
223 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 15:19:06 ] >>222 C言語暦1ヶ月のわて思うに hwndをゼロポインタにしてるから、SHFileOperationがいじけたんじゃね! ゼロ以外のhwndにしなきゃ駄目なんじゃない。とにかくゼロ以外の、たとえば 1とか2とかに変更して試してみたらいいんじゃね。オーナーウインドウが何か知らないけど、 出来ればオーナーウインドウのHWNDが指定できると申し分ないと思うんだけど。
224 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 15:26:18 ] >>223 あなたのいるプロジェクトは危険だというのが その文章からヒシヒシと伝わってくる 上達にするようにがんばれ。超がんばれ。
225 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 15:29:51 ] オーナーを指定すれば、必ずその上にウインドウが来ると言うだけの話。
226 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 15:48:49 ] >>224 わてはプロジェクトにいないづら。学校に居て教室で講義子守唄にzzzz 間違ってC言語の授業とってしまった,orz。 Cは一々型を指定しなきゃならないから鬱陶しいなり。 動的言語が主流の時代にC言語を教えてる学校だから、やっぱ危ないよなわての学校
227 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 16:00:35 ] 何でここにおんねんw
228 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 16:04:21 ] >>226 Cはやっておかないとだめよ
229 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 16:10:29 ] その主張は重々わかるんだが、それでもソフトウェアする上で避けられないのがCなんだよなあ。 Java, C#マンセーな俺だがそれでもC使えないヤツはだめだと思う。
230 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 16:11:24 ] >>227 宿題スレ行くつもりが、スレタイよくを見ずにクリックしたらココが現れたなり これ何かの縁づら。
231 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 16:29:05 ] はいw雑談スレになりましたw
232 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 16:50:42 ] >>226 学校の授業はそれくらい保守的なのが相場。
233 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 16:57:24 ] 東大ってことしからpython教えてなかったか?
234 名前:222 mailto:sage [2007/09/16(日) 17:28:32 ] >>223 どうもです。確かな縁で教えていただくことができました。助かりました!! >>225 あーそうだったんですか、、やっとわかりました。うまくできているのですね!! みなさんどうもありがとうございました!!
235 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 18:26:42 ] Windows画像とFAXビューアの高速版を自分で作ろうとしていたら、 FindFirstFile、FindNextFileでは、エクスプローラで表示されている順番で ファイル名を取得することができませんでした。 例えば、更新日時でソートしてあるフォルダでは更新日時順に画像を表示したいです。 適切なAPIがあれば教えて下さいませ。
236 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 18:38:23 ] RegQueryValueEx
237 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 19:15:08 ] IShellFolder, IShellFolder2
238 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 20:38:44 ] >>236 >>237 そのキーワードで検索して色々と知ることができました。 後は自分で調べていきたいと思います。 どうもありがとうございました。
239 名前:200 mailto:sage [2007/09/16(日) 21:53:54 ] IISの権限の問題でした。 admin権限で動かしてみたところ成功いたしました。 レスくださったかたありがとうございました。
240 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 04:26:08 ] InsertMenuItemでMENUITEMINFOを指定しますが、メニューの 文字色を変えるにはどのようにしたらいいのでしょうか? fTypeをMFT_STRINGにすると色を指定できないようですし
241 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 04:29:28 ] MFT_OWNERDRAW を指定して自分で描く
242 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 04:43:21 ] >>241 こんな時間に即レスthx トライしてみます
243 名前:デフォルトの名無しさん [2007/09/17(月) 10:15:08 ] VC についてるspy++なんですが、アプリ起動の際に、メッセージ横取りを禁止させる関数ってあるんすかね?
244 名前:デフォルトの名無しさん [2007/09/17(月) 10:16:04 ] 無い
245 名前:243 [2007/09/17(月) 10:20:28 ] 関数といったのが、まずかったか・・・方法でもいいんですけど・・・ 凄い人が集まってそうなので聞いてみたんですが、アプリ解析対策とかしないんですか?
246 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 10:22:06 ] 逆に聞きたいのだが、>243からどうやったら>245の意味を読み取れると思うのだ?
247 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 10:23:04 ] フックを禁止する方法が無いんじゃね kernel32に手出ししてみるとか?
248 名前:244 mailto:sage [2007/09/17(月) 10:24:19 ] メッセージ見られるとやばいようなら最初からCUIにするよ
249 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 10:24:37 ] 故意か天然かしらんけど、煽り口調になってるぞ。 煽ってもなにも出ないばかりか、袋にされるだけさ。
250 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 10:29:10 ] rootkitみたいなものを作って叩かれたいマゾなんだね。
251 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 10:41:39 ] チートしたい人とチートされたくない人って似た質問するんだよね
252 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 10:44:21 ] 敵を知り己を知ればなんとやら
253 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 10:45:26 ] >>251 チートておまえ・・・。
254 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 10:47:40 ] メッセージレベルでクラック対策しようってのがそもそも間違ってる
255 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 10:55:36 ] そういえばそんなフィルタドライバのソースがどっかに転がってたな 読もう読もうと思っててそのままURLもとろも失くしてしまったが
256 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 10:56:17 ] もとろも! orz
257 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 11:20:11 ] ,-、 ,.-、 ./:::::\ /::::::ヽ /::::::::::::;ゝ--──-- 、._/::::::::::::::| /,.-‐''"´ \:::::::::::| / ヽ、::::| / ヽ l \ l .| ● / | l , , , ● l にゃんだばかやろー ` 、 (_人__丿 、、、 / `ー 、__ / /`'''ー‐‐──‐‐‐┬'''""´ ./ ___ l __ l ./ / |/ | `ー-< / ./ ./ `ー‐--{___/ゝ、,ノ
258 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 13:01:25 ] フックされても問題ないように パラメータを暗号化すれば医院で内科医
259 名前:デフォルトの名無しさん [2007/09/17(月) 13:53:37 ] 文字列テーブルの文字を使うのに 文字配列用意してそこにコピーしないとだめっていうのは 面倒ですねぇ・・・。 文字配列の大きさの問題(文字列が入りきらない可能性)もあるし。 無駄に大きな配列用意するのもどうかなってかんじ。
260 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 14:42:50 ] よくわからんが、必要なサイズぴったしに malloc すればいいんでないの?
261 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 16:45:47 ] ListBoxとか使うときに 自分で持ってる構造体があるのに API用にもうひとつ作ってコピーしないといけない理不尽 のことを言ってるのかな?
262 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 17:06:36 ] >>261 >API用にもうひとつ作ってコピーしないといけない理不尽 コピーした領域をOSに渡す形なら、OS側は任意の時点で領域解放できる。 ・アプリが持っている領域を、直接OSに渡した場合、その領域を解放するタイミングを知るスマートな方法はあるか? (OS側の処理が先に終わった場合、アプリに、その領域を解放してよいか問い合わせるのか? それとも、解放要求をアプリに対して発行するのか? どちらも本末転倒でしょ?)
263 名前:262 mailto:sage [2007/09/17(月) 17:08:04 ] 261じゃなくて >>259 だった。すまん
264 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 17:23:44 ] ニワトリが先か、タマゴが先か論争に発展してきますた。
265 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 17:26:01 ] Javaや.NETはもう一度コピーしてるんだからまだマシ
266 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 18:18:56 ] >>265 kwsk
267 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 18:21:53 ] >>266 ahsg
268 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 19:01:46 ] そもそも>>259 はLoadStringの話に見えるのは気のせいか?
269 名前:デフォルトの名無しさん [2007/09/17(月) 21:25:47 ] そうなんです。 LoadString で文字列を取り出すとき 文字列の長さを気にせずに柔軟に取り出せる良い方法ないのかなぁと悩んでます。 いろいろ調べて MFC か ATL 使えばいけるのはわかったんですが Windows プログラミングの勉強はじめたばかりで 両方ともよくわかってないんで とりあえず MFC も ATL も使わないで出来る方法ないのかなぁと悩んでたんですけど 三日ぐらいあれこれ考えたんですけど コレといったのが見つからないんでもう悩むのやめます。
270 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 21:38:28 ] それならLoadResourceとかを使えばいいんだよ。 俺もやった。リソース内ではUTF-16LEのくせに、 なぜか9xがLoadResourceWを実装していないというケチさのおかげで。
271 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 21:40:25 ] NULLを含まない格納した文字数が返るのだから nBufferMaxの値-1 が返ってきたときはたぶんバッファを増やさないといけないと判断できると思う 最初 260 とかでスタックにとって、それで足りなそうな場合だけ動的に 260*2 。 それでもだめなら 260*2 *2 。それでにだめなら 260*(ry って感じか?
272 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 21:51:57 ] 俺はめんどくさいからそんな仕様にしない
273 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 22:25:38 ] ネットで勉強してウィンドウとメニューバーまでは作れるようになったけどあと がまったくわかりません(´・ω・`) フリーソースのを見て勉強するのがいいってよくみるけど読んでみてもチンブンカンブン 需要はあるはずなのになんでWin32APIの書籍ってこんなに少ないんだろ… どこかいいサイトか本ありませんか?
274 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 22:27:22 ] >>271 そーいやリソース文字列は、最大65536バイトまでだったけ?
275 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 22:32:51 ] >>273 猫でも読んでろ
276 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 22:34:23 ] >>273 知識つけたきゃテンプレの猫とかAPI入門嫁 アドバイスしとくと、どこまで覚えるかより何をしたいかが重要だったりする それと人のソースはあくまで一例と捉える
277 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 22:34:28 ] >>274 msdn2.microsoft.com/en-us/library/ms647465.aspx#_win32_String_Resources [quote] For 16-bit string resources, 255 characters is the maximum length. For 32-bit string resources, 65535 characters is the maximum length. [/quote]
278 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 22:36:58 ] >>277 おーいえ さんくす
279 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 23:59:48 ] >>275-276 d 猫ってAPIのもあったのね。HPは見づらいから今度探して買ってくる
280 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 00:13:28 ] >>279 あほは死ね
281 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 00:23:21 ] >>280 「あはは死ね」だと思った。
282 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 00:42:50 ] >>279 あはは死ね
283 名前:262 mailto:sage [2007/09/18(火) 02:02:37 ] >>279 猫は「apiの使い方の外枠をつかむ」目的に限定した方がいいです。 コードは問題ありすぎ……。 (コーディングに関しては、オライリーの牛本を参照してください。) ページが見づらいのは「書籍を買ってくれ」って事なのかね?
284 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 02:10:05 ] >>262 は死ね
285 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 02:50:39 ] みんな死ななくていいよ
286 名前:デフォルトの名無しさん [2007/09/18(火) 04:08:18 ] ツールバーのちらつき対策で質問があります。 ウィンドウサイズを変更するとツールバーがちらついて困ってます。 メインウィンドウは仮想画面化してるのですが、ツールバー部分はHDCがなくてちらついてしまってます。 書き換えタイミングを0.1秒単位にづらすとかはやりましたが軽減できてもちらつき自体をなくす事はできませんでした。 どういった解決方法があるでしょうか?ご教授お願いします。
287 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 04:10:29 ] 子ウィンドウをクリッピング領域からはずす
288 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 04:14:22 ] 背面消去をなくす
289 名前:286 [2007/09/18(火) 04:30:28 ] >>287 すみません。クリッピング領域から外すということは書き換えないってことでしょうか。。 今のサイズ変更部分はこうなってます。 case WM_SIZE: MoveWindow(hTool, 0, 0, LOWORD(lParam), 50, TRUE); break; 出来ればもう少し詳しくお願いできないでしょうか・・・orz
290 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 04:32:17 ] ツールバー作成時に WS_CLIPCHILDRENとWS_CLIPSIBLINGSを追加 試してない
291 名前:290 mailto:sage [2007/09/18(火) 04:34:01 ] ごめん超勘違いしてた 俺のは忘れろ
292 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 10:27:18 ] >>286 うろ覚えだが メインウィンドウのクラスのスタイルから、CS_HREDRAW、CS_VREDRAWをはずすか、 またはメインウィンドウのWM_ERASEBKGNDで何もしないように対処すればよいと思われ
293 名前:286 mailto:sage [2007/09/18(火) 10:33:24 ] >>292 既にそれは、やってしまってるんです。。 それでもちらつくんですよね。。 今も悩んでいて、面倒臭いですが一つ一つのボタンにハンドルを持たせればクリアできるのはないかと考え、 プログラム作成中です。
294 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 10:50:11 ] 気になるのなら自前で描くしかない
295 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 10:59:43 ] ちらつくのは所詮描画の問題なので、普通に考えれば メインウィンドウの背景(WM_ERASEBKGND)、メインウィンドウの描画(WM_PAINT)、 ツールバーの背景、ツールバー自身の描画 のいずれかで無駄な背景初期化を行っているくらいしかないと思うのだが メインウィンドウの仮想画面化とかツールバー部分のHDCって何? あとボタンにハンドルに持たせるとかも意味が分からない ツールバーの描画で何か特別なことやってる?
296 名前:286 mailto:sage [2007/09/18(火) 11:13:46 ] >>295 ツールバーにHDCみたいなのあればメモリ上にメモリDC取ってちらつき対策できないかと考えてました。 ハンドルというかボタン一つ一つにHWND型で持たせてクリアしようかと。。ツールバーの場合、ツールバーのHWND 単体でサイズ変更してるため、ちらついてるんじゃないかと考えています。
297 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 11:42:52 ] >>296 ツールバーはOS標準のコントロールなんだから単体で対処可能なちらつき対処くらいやってるだろ そんなことに力をそそぐくらいなら、>>292 あたりもう一度見直したほうがいいのでは? スタイル設定したつもりが反映されていないとか メッセージハンドラを定義してみたけど名前が違ってたりして呼び出されてないとか 実はメインウィンドウの子のビューがツールバーと重なっていて、ビューの背景消去が問題だとか
298 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 12:03:26 ] 標準コントロールはちらつき対策なんて元から考えていないが、 対処くらいやっているだろうとか考えられてしまうそのおめでたい頭がうらやましい。
299 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 12:26:19 ] そもそもツールバーってちらついたっけ? VC2005+MFC+WinXPSP2だと、ToolBarのみとReBar+ToolBarの構成で作れるが、 どちらもちらつきは発生しなかったぞ。 昔のMFC自前実装の奴(ペイントとか)はちらつくけど。
300 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 12:31:11 ] >>298 いや言い方はよくなかったもしれないけど、そんな高度なことを議論する つもりはなくて、普通メインウィンドウのリサイズで気になるほどちらついたり はしないんじゃないのってことを言ったつもりだった そうでないと、ツールバーを使う人は全員描画のカスタイズをしないといけなく なるけど、自分でもそんなコードは書いたことがないし、それで特に気になったこともない >>286 の気にしているのがどの程度なのかは知らないので断言はできないけど
301 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 12:33:25 ] ちらつく理由を考え、それがあってるか検証し、 それを元に対策を考える。
302 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 12:51:23 ] >>299 言われるまで気づかなかったが、最近の標準コントロールはちらつかないな。 Explorerのウィンドウをムキになってリサイズしてみたが悔しいほどちらつかないw ツールバーよりウィンドウの幅が狭くなったときに出る>>のマークだけがちらついてる。
303 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 13:02:01 ] チラリズム
304 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 13:39:06 ] WM_SIZE時、TOOLBARにWM_SIZEを送る クライアント部分は子ウィンドウにしてToolbarと重ねない
305 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 13:58:03 ] 専門用語でフリッカーと言うんだよ
306 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 14:26:04 ] >case WM_SIZE: >MoveWindow(hTool, 0, 0, LOWORD(lParam), 50, TRUE); >break; なんかこの辺が間違ってる気が
307 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 14:30:39 ] >>298 死ね
308 名前:286 [2007/09/18(火) 19:24:40 ] >>306 サイズ変更時に書き換えなさいって命令なので、その部分をカットすればちらつきませんが、 その場合、サイズ変更時ツールバーが変になってしまうので・・・。 検証の結果、ボタン一つ一つにHWNDを持たせるか、>>294 さんの言うようにオーナードローで描くか。 現在は、この2択です。もっと簡単にできないか、考えて見ますね。
309 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 19:33:51 ] >>308 あほは死ね
310 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 19:51:28 ] MoveWindow の最後の引数ってなんだっけ。
311 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 19:53:58 ] ∩_ 〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / ● ● | / | ( _●_) ミ/ <こいつ最高にアホ 彡、 |∪| / / __ ヽノ / (___) /
312 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 19:56:22 ] >>310 ググれよ。カス。
313 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 20:34:30 ] >>310 が一番的確な解決方に導いていると思うぞ
314 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 20:38:02 ] ∩_ 〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / ● ● | / | ( _●_) ミ/ <こいつ最高にアホ 彡、 |∪| / / __ ヽノ / (___) / >>313 >>308 最後の引数には気付いている。 おかしいのは最後の引数ではない。
315 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 22:18:15 ] そもそもツールバーをAPIで作ったときにMoveWindowなんて書いた記憶が無い件
316 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 22:55:03 ] そもそもメインウィンドウは仮想画面化してるとか ツールバー部分はHDCがないとか言う不思議君だから リサイズでMoveWindowくらいするだろう
317 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 23:47:20 ] 検証もせずに批判ばかりする奴より、検証しようと努力してる奴の方が俺は好感を持つ。
318 名前:182 mailto:sage [2007/09/18(火) 23:51:20 ] すみません GetLocaleInfo() でファイルの言語を取得できるようになったんですが、 .net で作ったexeの場合、自分で取得すると「日本語」が返ってくるんですが 「ファイルのプロパティ」だと「ニュートラル言語」になってるんですが、 どうすりゃ取れるんでしょうか。
319 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 23:57:10 ] >>317 正解が既に>>304 で出てるのに無視されてるからじゃないの? >>308 ツールバーのリサイズはMoveWindowでなく、WM_SIZEを直接SendMessageする ttp://msdn2.microsoft.com/en-us/library/aa932759.aspx
320 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 00:38:22 ] >>319 MoveWindowはダメとかSendMessageとか命令の問題じゃない気がするが・・・ 試しに俺が検証してみた。 * ツールバーを作成する */ hTool = CreateWindowEx( WS_EX_TOOLWINDOW, TOOLBARCLASSNAME, NULL, WS_CHILD | WS_VISIBLE | WS_THICKFRAME, 0,0,0,0, hWnd, (HMENU)IDR_TOOLBAR, hInst, NULL); ボタン略。 >case WM_SIZE: >SendMessage(hTool, WM_SIZE, wParam, lParam); >break; ちらついてるじゃねーか。orz
321 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 01:45:18 ] >>320 俺も今試してみたが(WinXP SP2)、特にちらつきはないぞ? //ツールバー作成部分(ボタンは2個) hToolBar = CreateToolbarEx(hWnd, WS_CHILD | WS_VISIBLE, ID_TOOLBAR, 2, hInst, IDB_TOOLBAR, tbb, 2, 0, 0, 16, 15, sizeof(TBBUTTON)); //他は省略 ベースはVC2005のWin32アプリのウィザード生成物で、ツールバー処理追加以外に以下を修正 ×wcex.style = CS_HREDRAW | CS_VREDRAW; ○wcex.style = 0; ×wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); ○wcex.hbrBackground = (HBRUSH)NULL; なお、WM_SIZEの追加コードは (a)SendMessage(hToolBar, WM_SIZE, wParam, lParam); (b)MoveWindow(hToolBar, 0, 0, LOWORD(lParam), 50, TRUE); の両パターンを試したがどちらも問題はなし
322 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 02:12:26 ] >>321 ちらつきの考え方の違いかな。。 ウィンドウの枠、右部分を(マウス左)ドラッグして左右に振ってみて欲しい。 ツールバーのボタンがちらついてない? 俺もCreateWindowExとCreateToolBarExだと違いがあるのかと思って両方試してみたが 両方ともちらつかないか?俺も気になってきたw
323 名前:322 mailto:sage [2007/09/19(水) 02:27:21 ] 補足 ちらつきが分かりやすいように、ラージサイズのアイコン使用中。
324 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 02:28:22 ] ちらしの裏にでも書いてろ低脳
325 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 02:31:20 ] Vista使えばちらつきなんて気にならん
326 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 02:34:06 ] >>322 OSは何? こちらで試したプログラムでは、メニューの文字はわずかにちらつくが、ツールバーは それよりずっと安定していて目で認識できる範囲のちらつきはない ボタンのデザインはグレーの背景に手書きで1、2と書いてあるだけなので 目立ちにくいかもしれないが、少なくともメニューと同じくらいちらついてくれれば確実に分かる
327 名前:322 mailto:sage [2007/09/19(水) 02:40:27 ] >>326 環境 (WinXP SP2) ボタンのデザインは、既存のBMP。フォルダアイコンのラージサイズを貼り付けてる。 tbBmp.hInst = HINST_COMMCTRL; tbBmp.nID = IDB_STD_LARGE_COLOR; /* 標準の大サイズのアイコンを使う宣言
328 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 09:38:55 ] ちらつくのはいちいち消して(バックグラウンド塗りつぶし)描くからだよ もともと全部描きなおすタイプならけさんでいい
329 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 12:07:36 ] 再度試してみた 背景消去を行わない(ウィンドウクラスの背景ブラシをNULLにするか、WM_ERASEBKGNDを無視) とした場合でも、クラスのスタイルにCS_HREDRAW | CS_VREDRAW が残っていると、ボタン部分が かすかにちらつく(メニュー文字のちらつきの半分程度) >>322 や>>286 の言ってるちらつきがこれってことはないのか?
330 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 12:19:23 ] WS_CLIPCHILDRENしてるか?
331 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 17:39:11 ] Visual Basic 6.0ってありましたよね? あの言語でIsNumericって関数があったんですけど、 あれをVC++側で実装する場合、 OLE関連の関数群に存在するのでしょうか? もし、存在するなら、その名称を教えていただきたいです。
332 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 17:44:40 ] >>331 市ね
333 名前:182 mailto:sage [2007/09/19(水) 18:06:08 ] >>318 VerLanguageName() で自己解決しました。 LangID は LocaleID の下位4バイトでした。 帰ります。
334 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 19:19:25 ] >>331 VariantChangeTypeで数値関連の種類に変換できるか試せば、 同じような動作になると思う。
335 名前:デフォルトの名無しさん [2007/09/19(水) 21:14:29 ] Win98からVistaまで動作するプログラムを作ろうと思ってます。 Vistaのフォルダ書き込み権限を取得するために、ConvertStringSidToSidを 使っているんですが、Win98でこのプログラムを動作させようとすると ConvertStringSidToSidがないとエラーになってしまいます。 ConvertStringSidToSidを使いつつ、両方のOSで動作するようにするためには どうすればいいんでしょうか?
336 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 21:16:52 ] >>335 LoadLibrary, GetProcAddress
337 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 21:17:21 ] むり
338 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 21:20:28 ] >>336 ありがとうございます。 試してみます。
339 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 23:23:04 ] > Win98からVistaまで動作するプログラムを作ろうと思ってます ムダな努力だと思うがどうよ? 依頼主からの指示?
340 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 23:51:17 ] 98-Me 2000-XP Vista と3種類のリリースに分けて作る方が得
341 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 01:02:59 ] 最初にOSのバージョン調べて、それを元に挙動変えるのはだめなん?
342 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 01:10:52 ] 98でSIDとかあったっけ
343 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 01:18:23 ] > Win98からVistaまで動作するプログラムを作ろうと思ってます Win16で作れば、Win3.1から動くのが作れます。 冗談はともかく、Win98,Me対応は面倒な筈です。 OSのバージョン依存部分に1枚皮を被せて、呼び分ける必要があります。 OS依存部分を別DLLにして、LoadLibraryするとか。
344 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 02:03:21 ] >>343 > Win16で作れば、Win3.1から動くのが作れます。 残念ながら64bit版Windowsで動きません。
345 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 03:09:00 ] .Netでつくる
346 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 03:51:25 ] Win95って.netインストールできないんじゃなかった?
347 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 03:53:24 ] >>343 はWin98からと言ってるから問題ない
348 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 04:19:38 ] まだ98つかってる香具師いるのか
349 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 05:48:08 ] 買い換えるまでWin98という奴はいるだろ
350 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 06:40:37 ] オレは win98 + winXP。去年から win98 -> vista と思っているが、評判が よくないので、ママ。win98 機は gateway なんだが、keyboard に慣れていて ホレ今も、それと coding にも使っている。hardoff で見つけた 6GB HDD で 動かしていて、元の HDD は後生大事にとってある。時々換装しないといけない が、今年はやってない。フラットケーブルが煎餅みたいに割れそう。
351 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 06:44:20 ] Win98をWebに繋ぐなんて最早犯罪だろ。
352 名前:デフォルトの名無しさん [2007/09/20(木) 07:09:11 ] ダブルバッファリングのコードを書いたつもりでしたが、上手くいきません。 InvalidateRect()関数によってWM_Paintが要請されるまで、描画が行われない予定 なのですが、InvalidateRect()を呼び出さずにもWM_Paintが発行されているようで、 TextOutによる文字列が描画されてしまいます。ご教授お願いします。 ttp://sakuratan.ddo.jp/uploader/source/date52297.txt
353 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 07:21:51 ] >>335 もう見てないかもしれんが、俺のプログラムでは同様の事例で リンカーオプション「/DELAYLOAD」を使っている
354 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 07:44:06 ] 見てるよ ずーっと見てる 君を見てる
355 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 07:48:07 ] 質問に答えろぉぉぉおおお!
356 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 07:50:29 ] >>355 m9(^Д^)プギャー アホスギ
357 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 07:52:40 ] >>352 せいぜい、WM_PAINT内でii.hScreenを使っていいかどうかを見る フラグでも用意しておくしかないと思う。
358 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 07:55:20 ] >>352 とりあえず、ダブルバッファがどうとか考える前にメッセージを理解してくれ
359 名前:352 mailto:sage [2007/09/20(木) 08:03:57 ] サンプルがわるかたかな・・・。 hScreenに描画している限り無効領域は発生せず、 WM_Paintは発行されないと思ってたんだけど、その認識が間違ってるのかな。
360 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 08:05:23 ] >>359 fとWindowProcは同じスレッド?
361 名前:352 mailto:sage [2007/09/20(木) 08:07:38 ] >>360 fという関数は、WM_Createで行うとエラーがでる部分を退避させるため だけに暫定処置として作りました。
362 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 08:20:11 ] ああすまん、WM_CREATE内から呼んでいるね。 ってそれだとWM_CREATE内から呼んでいることに変わりはないだろ。
363 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 08:26:04 ] どう見てもAPI以前のレベルです、本当にありがとうございました。
364 名前:352 mailto:sage [2007/09/20(木) 08:31:52 ] 一応、猫でもわかるのサンプルみて作ったつもりなんだけど、 なんで描画されるんだろ。
365 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 08:40:02 ] >>359 ウィンドウ作った時点じゃ、最初から無効領域
366 名前:352 mailto:sage [2007/09/20(木) 09:32:48 ] >>365 なるほど!動作確認の仕方が間違っていたのですね。 おかげさまで問題を解決することができそうです。 ありがとうございました。
367 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 09:34:31 ] 重なっている上のウィンドウが移動したり、新しくウィンドウが作られたり、 そのウィンドウがリサイズしたりして、新たに描画しなければならないところが無効領域。 InvaridateRectは、そういった条件にかかわらず無効領域にするAPIだから。
368 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 12:21:27 ] >366 この手のタイプは、「できませんでした。教えてください。」ってまた来るんだよな・・・orz
369 名前:デフォルトの名無しさん [2007/09/20(木) 13:29:37 ] 教えて頂きたいのですが、MDIにおいて、 親ウインドウと子ウィンドウの透過率を変えることは可能でしょうか? 親ウィンドウに色のついた透明な子ウィンドウを重ねたいのです。 (一旦メモリデバイスにコピーした後、AlphaBlend()により色を付ける方法は 成功しました。) SetWindowLong(),UpdateLayeredWindow()などが関連してくると思うのですが。
370 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 13:40:03 ] 子ウィンドウをレイヤードウィンドウすることはできない
371 名前:デフォルトの名無しさん [2007/09/20(木) 13:49:17 ] >370 やはり、そうでしたか。WS_CHILDとWS_EX_LAYEREDのスタイルを合わせると ウィンドウが作れないんですよね。 ここから推測するに、親ウィンドウ(透過率255)、 子ウィンドウ(透過率127)のようなことも出来ないとなりますね。 現在のAlphaBlend()とUpdateLayeredWindow()を上手く使ってって方法を 取っていきます。
372 名前:デフォルトの名無しさん [2007/09/20(木) 20:46:07 ] GetKeyboardStateで、現在のキーボードの状態を取得しているのですが、 アプリのウィンドウがアクティブでないときにGetKeyboardStateすると、 上手く情報を取得してくれません・・・、解決するにはどうすればよいでしょうか? ウィンドウをアクティブにしたフリをして、GetKeyboardStateを動かすこととか出来ないですかね? キー入力はフックしていて、キーボードでキーが入力されると、 アプリのウィンドウがアクティブでないときでも、 イベントが呼ばれてGetKeyboardStateが走る仕組みです。 動作・開発環境は以下の通りです。 OS : WindowsXP SP2 .net framework 1.1 言語 : C# 宜しくお願い致します。
373 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 20:49:24 ] >GetKeyboardStateで、現在のキーボードの状態を取得しているのですが、 ドキュメントにちゃんと書かれているとおり、 GetKeyboardState は現在のキーボードの状態を取得するAPIではありませんので、 別のやり方、たとえば GetAyuncKeyboardState を使うなどに変えた方が良いでしょう。
374 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 20:50:17 ] >>373 GetAsyncKeyboardState
375 名前:デフォルトの名無しさん [2007/09/20(木) 21:05:51 ] >>373-374 GetAsyncKeyStateですよね? 試してみます。ありがとうございました!
376 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 21:30:16 ] 335です。 >>353 さんの方法で出来ました。 ありがとうございました。
377 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 22:00:05 ] WinSock関連での質問です。 TCPによる接続でconnection関数を利用していますが、 対象のホストを見つけられない場合は、 一定時間処理が停止しています。 これの対処法を、皆さんはしていますか? スレッド側に投げて対処? それとも、connectionよりいい関数があるんでしょうか?
378 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 22:28:19 ] 非ブロックソケット
379 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 23:29:06 ] >>377 スレッド 非ブロック 非同期
380 名前:377 mailto:sage [2007/09/21(金) 00:04:40 ] >>378-379 スレッド案で非同期化を試みます。 ありがとうございました!
381 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 00:14:20 ] SHBrowseForFolder() で質問です。 BROWSEINFO.hwndOwner に設定したウィンドウに対してモーダルで ダイアログが開きますが、他にモードレスのウィンドウがあるとき、 それらは無効にならずにフォーカスを奪えてしまいます。 全ウィンドウに対してモーダルで開いて欲しいのです。 しょうがないので SHBrowseForFolder() の前後に 「hwndOwner と同じプロセスの全有効ウィンドウを無効/有効にする」 というのを入れたら希望する動作になったんですが、 なにかオフィシャルな手段は提供されてないんでしょうか。
382 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 00:38:48 ] その、他のウィンドウの構成が間違っている
383 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 03:11:36 ] >>369-371 MSの公式サイトにはUpdateLayeredWindow()の方を使えって書いてある
384 名前:デフォルトの名無しさん [2007/09/21(金) 03:15:26 ] ごめん逆だった SetLayeredWindowAttributesを使えって書いてある msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdnwui/htm/layer.asp
385 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 04:19:28 ] >>384 どこに?
386 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 11:20:33 ] lstrlenWなどの文字列の長さを返すAPIの説明に、 「文字単位の長さ」とありますが、 サロゲートペア文字は2文字と数えるのでしょうか? それとも1文字? もし1文字で数えられてたら、自分のプログラムが大変なことになります・・・・
387 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 11:26:10 ] >>386 MSDNに書いてあるよ。 > The return value specifies the length of the string, in TCHAR > values. This refers to bytes for ANSI versions of the function > or WCHAR values for Unicode versions.
388 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 11:27:30 ] サロゲートペアのことは書いてないようだけど
389 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 11:28:24 ] >>388 「WCHARの長さ」って書いてあるやん
390 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 12:54:30 ] 早く全面的にUTF32に汁
391 名前:デフォルトの名無しさん [2007/09/21(金) 13:39:30 ] キーボードで入力されたキーコードとシフト状態を元に、文字を作成する関数って ToAscii ToAsciiEx ToUnicode ToUnicodeEx 上記以外に無いのでしょうか?あれば教えていただきたいです。 宜しくお願い致します。
392 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 13:58:43 ] >>381 ShowOwnedPopupsは ? (試してないけど) 386関連。EM_LIMITTEXT/EM_SETLIMITTEXTはどーなってますか
393 名前:392 mailto:sage [2007/09/21(金) 15:46:57 ] ShowOwnedPopupsは忘れてください
394 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 17:08:10 ] DLLを自分で作って使ってみたいと思い挑戦しているのですが どーしてもわからないっす。 VC2005Expressを使用してDll projectでDllをビルド LoadLibraryで読み込む←成功 先にtypedef int (*DLLFUNC)(int, int) ;と宣言しておき DLLFUNC Add ; Add = (DLLFUNC)GetProcAddress(hDll, "Add") ; ↑でNULLが帰ってきて「指定されたプロシージャが見つかりません」って出てます。 DLLのソースは #include <windows.h> int WINAPI DllMain(HINSTANCE hInstance , DWORD fdwReason , PVOID pvReserved) { return TRUE; } __declspec (dllexport) int Add(int nValue1 , int nValue2) { return (nValue1 + nValue2) ; } です。よろしくお願いします。
395 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 17:10:07 ] def作ったほうが確実
396 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 17:12:22 ] そのソースのファイル名は .c か .cpp か。
397 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 17:16:31 ] >>395 defを使う方法はまだやった事無いです。今から勉強します。 >>396 .cppです。
398 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 17:19:45 ] >>397 では、.c にリネームして試してみるべし。
399 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 17:22:01 ] extern "C"をつけて名前マングルをやめて、かつdefでエクスポートすればいける
400 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 17:33:35 ] 誰だマングリなんて作ったの 意味ねーだろ
401 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 17:43:01 ] .cにリネームしたらいけました! さらに.cppに戻した後 >>399 に書かれていたextern "C"の方法でも 出来ました!有難うございます。
402 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 17:48:39 ] >>400 多重定義とかメンバ関数とか名前空間とか同名の区別に必要。 型安全なリンクにも繋がる。
403 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 21:18:10 ] >400 んじゃオーバーロードとか使うなよ
404 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 21:33:43 ] せめて同一プラットフォームではマングリングは統一して欲しいところ BCCとVC++でオブジェクトリンクできないとかもうね
405 名前:381 mailto:sage [2007/09/22(土) 01:54:58 ] >>382 今はテストプログラムで遊んでいるところなので、たしかにこういう 状況はレアケースだと思います。 たとえば「モーダルダイアログ→その上に[参照...]ボタン」だったら 全然問題ないです。 何を隠そうVB6で書いてるんですが、もしかしてVB特有の現象でしょうか。 C&SDKもMFCも分からないヘタレなもので、 .NETでFolderBrowserDialogクラスで試してみたら、ちゃんと全ウィンドウに 対してモーダルでした。 .NETでSHBrowseForFolder() をP/Invoke するのをこれから試します。 >>392 その関数はちょっと目的とは違う気がします。(試してないけど)
406 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 02:03:47 ] その前にspyしてWindow構成見たほうが早くね
407 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 02:09:08 ] micsoroftがツール提供してるってことは、 spyは合法ってことでおk?
408 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 02:20:53 ] 何言ってんだおめぇ
409 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 03:48:12 ] >>404 COM
410 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 03:55:58 ] 1PはPLAYERだろーが
411 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 04:03:12 ] ごめん 全然うまくないから
412 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 04:08:01 ] >>411 相手にならん もっと練習してから来い下手糞
413 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 05:28:35 ] ちょっとフォルダ内のファイル一覧を作る処理を書こうとしてるんですが FindFirstFile〜FindNextFile...は遅い!と思いしばらく実験... ひょっとしてコマンドプロンプトでdir〜するより遅いんじゃないか?・・・と調べたらさすがにdirよりは早いようだったorz しかしもっと早くしたいのです、FindFirstFile系より早い関数知ってる人いますか?
414 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 06:00:23 ] IShellFolderのEnumObjectsはもっと遅い
415 名前:デフォルトの名無しさん [2007/09/22(土) 06:18:51 ] こんなスレで質問していないで、早く試行錯誤でバグ回避策を見つける仕事に戻るんだ! 何?やる気がありません?なら辞めろや、他の派遣雇うからw
416 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 06:21:40 ] IShellFolderですか、COMってやつですか? 初めて見るのでよく分からんですが、こいつはこいつで奥が深そうですね
417 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 07:13:35 ] >>413 遅いって何ファイルで何秒くらい?
418 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 07:14:45 ] 自分で作ればいいのに 能なしは大人しく既存の関数使っとけ
419 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 07:35:59 ] >>417 5万で一秒くらいです、ちっとも遅くない・・・ですか?
420 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 07:39:12 ] そんなに速くしたいならWindowsの外でやれ
421 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 07:39:46 ] 1msで50ファイル。どこが不満なんだ‥‥
422 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 07:42:25 ] 実際計って以外に早いなと・・・ 他の部分が重いのでしょうね、スレ汚し申し訳なかったです
423 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 07:45:46 ] windowsプログラムのお話 VC++2005EEのスケルトンプログラムのソースが何をやっているのか教えてぽ・・・。
424 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 07:46:04 ] キャッシュが効いてただけと予想
425 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 07:48:20 ] 一覧の表示をListViewとかでやってるなら検索中は更新止めるとかしないと笑える程遅くなるぞ。
426 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 08:04:49 ] キャッシュはメモリのコンパクションツール(っていうのかな?)を使えば消えますよね? その状態だと5万ファイルで一分ぐらい、次回実行以降高速化してます・・・ ListViewとかじゃなくvector<string>に入れて後でファイルに保存してます、時間計測は純粋にファイルリスト取得部分のみです 再起動とかしてちゃんと計測し直した方がいいですかねぇ?
427 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 08:09:58 ] うるせーバーカ死ね
428 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 08:11:21 ] >>426 HD直接触ってみるとか
429 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 08:25:20 ] キャッシュですねぇ、>>424 さんの指摘どおりのようです 再起動して実行すると初回が91秒、10回実行して平均とか出してたんですが2回目以降は750msぐらいで安定してます HDD直に触るのは魅力的ですよね、一度はやりたいです しかしこれ、それでも使えないほど遅いかと言われればそんなこともない速度でしょうか どうも昔触って以来FindFirstFile系は遅いと思い込んじゃってたんですかねぇ
430 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 08:27:18 ] くそう
431 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 08:33:48 ] >>423 の言ってるのが「空のプロジェクト」をチェックしないで普通に作った奴なら 単にウィンドウ出してメニューつけて、だけをやってるんだと思う なんかReadMe.txtってのもプロジェクトに参加してるみたいだし一度目を通されてはどうでしょう 間違ってたらスマソ
432 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 08:36:17 ] >>429 APIの呼び先で予想外のコードが動いている可能性もあるから確認してみるといいよ。 アンチウィルスソフトはよくやってる。 とりあえずカーネルデバッグしてみ。
433 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 08:48:42 ] カーネルデバッグと、初めて聞いたもので調べておりますが カーネルデバッガというものを使うようですね、おすすめなんてありますか?
434 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 09:15:36 ] とりあえず無難にWinDbgを使って見るのがいいんじゃない? 無料でダウンロードできるよ。 www.microsoft.com/japan/whdc/DevTools/Debugging/default.mspx WinDbgの文法覚えとけばCUIのデバッカへの移行もしやすいから出先でデバックする機会とかあるなら役立つかもね。 あと、カーネルデバッグするしないにかかわらずシンボルをインストールすることを忘れずに。 たとえば、Visual Studioでデバッグする場合不明なシンボルがあるとコールスタック表示するのをそこであきらめるし、 シンボル名が表示されてりゃブレークポイント貼るとき楽だしね。
435 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 09:30:31 ] >>434 さん、折角教えて頂いたばかりですが現在の私の能力ではここまでのようです・・・ かなり便利そうには見えるのですが習得には少しかかりそうです・・・ いろいろとご指摘くださった皆さんありがとうございました、 今回はFindFirstFile〜でとりあえず作り、後は次回の課題とさせていただきます。
436 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 09:32:40 ] >>431 やさしい人ありがとう>< みんなプログラム作る時は空のプロジェクトでやるのかな・・・?
437 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 09:34:17 ] ああ
438 名前:デフォルトの名無しさん [2007/09/22(土) 09:48:51 ] 坊主。男は黙って空のプロジェクトで作るもんだぜ?( ゚Д゚)y─┛~~
439 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 14:21:56 ] 質問させてください。 BitBltで描写している800*600のビットマップ画像を毎秒20ピクセルぐらい で高速横移動させようとすると、描写がおっつかないのか移動中画像がぶれる のです。(上から下に走査線の波がはしるように画像がゆがみます) ひょっとしてWINAPIではそこまでの描写はできないのでしょうか? DirectXを使えということなのでしょうか。
440 名前:439 mailto:sage [2007/09/22(土) 14:24:04 ] ↑すみません、移動値が間違っていました。 一回10ピクセルの移動を、毎秒20回ほどです。
441 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 14:25:19 ] ププ
442 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 14:29:24 ] >>439 DirectXには垂直同期を待つ機能がある GDIだけではできない
443 名前:439 mailto:sage [2007/09/22(土) 14:41:27 ] >>442 ご回答ありがとうございます。 今まさにGDIに垂直同期させる方法がないか考えているところ でしたが、できないのですね。。。 DirectXを勉強することにします。 ヒント、感謝します。
444 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 16:46:25 ] "C:\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*.*" これがOKなのが許せない
445 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 16:51:28 ] /////////////////////////////////////home/unko www.2ch.net/////////////////////////////////////////////////// 普通だろ
446 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 16:53:02 ] VC++2005EEで途中まで文字入力したときのポップアップヘルプが 出なくなっちゃたよぅ・・・><
447 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 16:57:37 ] EEなんて使ってるからだ 大人しくプログラミング引退しなさい
448 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 17:03:58 ] そんなぁ・・・><
449 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 17:06:19 ] と、思ったら僕の勘違いでした・・・ ごめんなさい
450 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 17:21:41 ] >>444 パス名の先頭に\\?\(Cなら\\\\?\\)でもつければ?
451 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 21:14:40 ] >>446 あのピョコってでるのは確かインテリセンスって言うはずだ プロジェクトのフォルダ内に.ncbって拡張子のファイルがあると思う、表示される情報はこれに保存されてるらしい で、情報の更新に若干タイムラグが出る事があってポップアップが出ない事がある、これは数秒待てば出るようになるよ 前の行にビルドエラーになる箇所があるとそれ以降インテリセンスも更新されてなかったりするのでこまめにビルドするといいかも
452 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 21:30:29 ] じゃあ、コンパイル成功してもIntelliSense動いてくれないのはなぜなんだぜ? 特にBoostとか使ってるとき、特定の行以降/ブロック内で起こる。
453 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 21:53:56 ] それはC++がキモすぎるかr
454 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 22:27:03 ] いやキモいのはbo