Win32API質問箱 Build37
レス数が1000を超えています。これ以上書き込みはできません。
0001東トルキスタンと言ってみるテスト
2005/11/13(日) 21:29:51やさしいお兄さんたちが答えてくれるかも。
過去スレ、関連リンクは>>2-5くらい。
■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(http://msdn.microsoft.com)の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvencedWindowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで。
0002デフォルトの名無しさん
2005/11/13(日) 21:31:2936 http://pc8.2ch.net/test/read.cgi/tech/1128951330/ (すまん。1に書き忘れた)
35 ttp://pc8.2ch.net/test/read.cgi/tech/1125850096/
34 ttp://pc8.2ch.net/test/read.cgi/tech/1122723009/
33 ttp://pc8.2ch.net/test/read.cgi/tech/1120153520/
0003デフォルトの名無しさん
2005/11/13(日) 21:32:5331 ttp://pc8.2ch.net/test/read.cgi/tech/1114762194/
30 ttp://pc8.2ch.net/test/read.cgi/tech/1112345886/
29 ttp://pc8.2ch.net/test/read.cgi/tech/1110281860/
28 ttp://pc5.2ch.net/test/read.cgi/tech/1108199304/
27 ttp://pc5.2ch.net/test/read.cgi/tech/1106103119/
26 ttp://pc5.2ch.net/test/read.cgi/tech/1104109858/
25 ttp://pc5.2ch.net/test/read.cgi/tech/1101393155/
24 ttp://pc5.2ch.net/test/read.cgi/tech/1098967135/
23 ttp://pc5.2ch.net/test/read.cgi/tech/1095534704/
22 ttp://pc5.2ch.net/test/read.cgi/tech/1092524669/
21 ttp://pc5.2ch.net/test/read.cgi/tech/1090422324/
20 ttp://pc5.2ch.net/test/read.cgi/tech/1088140233/
19 ttp://pc5.2ch.net/test/read.cgi/tech/1084697545/
18 ttp://pc5.2ch.net/test/read.cgi/tech/1081702990/
17 ttp://pc5.2ch.net/test/read.cgi/tech/1077470361/
16 ttp://pc2.2ch.net/test/read.cgi/tech/1073830065/★
15 ttp://pc2.2ch.net/test/read.cgi/tech/1069339866/★
14 ttp://pc5.2ch.net/tech/kako/1065/10653/1065328397.html
13 ttp://pc5.2ch.net/tech/kako/1059/10595/1059549320.html
12 ttp://pc5.2ch.net/tech/kako/1056/10560/1056033645.html
11 ttp://pc5.2ch.net/tech/kako/1052/10526/1052651750.html
10 ttp://pc5.2ch.net/tech/kako/1047/10478/1047819779.html
9 ttp://pc5.2ch.net/tech/kako/1044/10449/1044929160.html
8 ttp://pc5.2ch.net/tech/kako/1040/10409/1040964626.html
7 ttp://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
6 ttp://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
5 ttp://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
4 ttp://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
3 ttp://pc.2ch.net/tech/kako/1017/10170/1017072275.html
2 ttp://pc.2ch.net/tech/kako/1006/10067/1006783012.html
1 ttp://pc.2ch.net/tech/kako/991/991576947.html
0004デフォルトの名無しさん
2005/11/13(日) 21:36:05http://www.microsoft.com/japan/msdn/
- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
- Platform SDK Update
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
http://www.google.com/
- Windows® Server 2003 SP1 Platform SDK Full Download
http://www.microsoft.com/downloads/details.aspx?familyid=EBA0128F-A770-45F1-86F3-7AB010B398A3&displaylang=en
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm
Win32 API入門
http://wisdom.sakura.ne.jp/system/winapi/
Win32 プログラミング入門
http://www7.plala.or.jp/keny01/windows/win32/
Win32 SDK Programming
http://usr_vogel.at.infoseek.co.jp/Win32SDK/
- 書籍
Advanced Windows
http://www.amazon.co.jp/exec/obidos/ASIN/4756138055
-おまけ
dat落ちしている過去スレが見れるかも。Build19が見たい人、余裕のある人は●でも買ってやってくれ。
http://makimo.to/cgi-bin/search/search.cgi?q=Win32API&andor=AND&sf=2&H=&view=table&shw=&D=tech
0005デフォルトの名無しさん
2005/11/13(日) 23:13:03( ´∀`) < 0x25
0006デフォルトの名無しさん
2005/11/14(月) 00:07:10>詳しくは知らないが、>>995みたいなビジーループ回してるんじゃないかな?
CPU1つしかないのにビジーループでなんてどうやってまわすの?
そんなことやったら、精度が10msで測ったらどっかで止まるよね?
0007デフォルトの名無しさん
2005/11/14(月) 00:13:38そのようなことを不思議に思うのであれば、
OSがms単位以下で各スレッドにタイムスライスを分配することも不思議に思うべきではないか?
0008デフォルトの名無しさん
2005/11/14(月) 00:17:58だから、やってねぇんだよ、そんなことは。
ビジーループでなんてまわしてねぇの。
0009デフォルトの名無しさん
2005/11/14(月) 00:26:11のAPIを調べたら良いでしょうか?
0010デフォルトの名無しさん
2005/11/14(月) 00:33:09http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_findfirstfile.htm
でいい希ガス
0011デフォルトの名無しさん
2005/11/14(月) 00:35:15http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_findnextfile.htm
これも使ったような希ガス
0012デフォルトの名無しさん
2005/11/14(月) 00:36:17ビジーループの話なら、回せるからプリエンプティブマルチタスクって言うんだよ。
マルチメディアタイマーの話は、書いた通り、詳しくは知らん。知ってる奴解説よろ。
0013デフォルトの名無しさん
2005/11/14(月) 00:37:05http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_getfileattributes.htm
http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_setfileattributes.htm
http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_findclose.htm
これとこれとこれもいる希ガス
0014デフォルトの名無しさん
2005/11/14(月) 00:37:43それって見た目の話でしょ?
0015デフォルトの名無しさん
2005/11/14(月) 00:39:47そうだね。
結局、OSレベルでの実装じゃその切り替えもメッセージでやるしかない。
0016デフォルトの名無しさん
2005/11/14(月) 00:41:50は?
1CPUで本当の並列処理しないと「プリエンプティブ」でないと言うつもりなら、
世の中にはプリエンプティブマルチタスクなOSは存在しないないことになるんだが?
0017デフォルトの名無しさん
2005/11/14(月) 00:45:05いやいや、プリエンプティブかどうかってところは争ってないでしょ?
よく読まないと無駄な論争することになるよ。
0018デフォルトの名無しさん
2005/11/14(月) 00:45:07CriticalSectionやらFiberやら知らんのだろうな、こういう厨は。
0019デフォルトの名無しさん
2005/11/14(月) 00:47:45すまん、さっき酒入れたもんで。
メッセージ経由だとマルチメディアタイマーの精度が生きない気がするけどなあ。
まあエロイ人に任せて寝る。
0020デフォルトの名無しさん
2005/11/14(月) 00:48:53>マルチメディアタイマーの精度が生きない気がするけどなあ
で、実際生きてねーじゃんw
どないなっとんねん>MS
って話なわけよw
0021デフォルトの名無しさん
2005/11/14(月) 00:54:040022デフォルトの名無しさん
2005/11/14(月) 00:56:070023デフォルトの名無しさん
2005/11/14(月) 00:56:12ttp://www.sm.rim.or.jp/~shishido/mmtimer.html
を読んでみたぞ
どうやら1ms以下でも計測できるらしい
マイクロ秒単位まで測れるとかも書いてるぞ
0024デフォルトの名無しさん
2005/11/14(月) 01:00:47マイクロ秒まで測れるなら十分だと思うが
0025デフォルトの名無しさん
2005/11/14(月) 01:09:490026デフォルトの名無しさん
2005/11/14(月) 01:12:42配布するソフトには向いてないね
0027デフォルトの名無しさん
2005/11/14(月) 01:50:37今世紀に出たマザーで対応してないのあったら、1つでいいから
実例を挙げてくれ。
0028デフォルトの名無しさん
2005/11/14(月) 02:15:250029デフォルトの名無しさん
2005/11/14(月) 02:24:110030デフォルトの名無しさん
2005/11/14(月) 02:39:590031デフォルトの名無しさん
2005/11/14(月) 06:49:47でも、実際そんなことできてないじゃん。
やってみ?できないから。
0032デフォルトの名無しさん
2005/11/14(月) 07:24:050033デフォルトの名無しさん
2005/11/14(月) 07:25:200034デフォルトの名無しさん
2005/11/14(月) 07:35:060035デフォルトの名無しさん
2005/11/14(月) 08:12:520036デフォルトの名無しさん
2005/11/14(月) 08:16:41誰だよ、それ
0037デフォルトの名無しさん
2005/11/14(月) 09:21:05LPTSTR ctStr = TEXT("あいうえおabcかきくけこdefさしすせそght");
DrawText(hdc , ctStr , -1 , &rect , DT_CENTER | DT_WORDBREAK );
でも
char *ctStr = TEXT("あいうえおabcかきくけこdefさしすせそght");
DrawText(hdc , ctStr , -1 , &rect , DT_CENTER | DT_WORDBREAK );
でも、クライアントエリアに表示されるのはどちらもきちんと
あいうえおabcかきくけこdefさしすせそght
と表示されます。
自分の認識としては、char*で表示させると2バイト文字は文字化けしてでると思っていたのですが
どうしてきちんと表示されるのでしょうか?
もしどちらでもいいのであれば、LPCTSTRなどの存在する意味が分からないのですが…。
0038デフォルトの名無しさん
2005/11/14(月) 09:33:01_UNICODEやUNICODEを#defineしてない場合はその二つは同じ物だ
同じ結果になるのは当たり前
char型がそもそも文字を扱うための型なのだから、それで文字化けしたらおおごとだよ
charはシングルバイト文字を扱うための型で、それ以上でもそれ以下でもない
一方LPCTSTRは、プリプロセッサの定義でchar*型とwchar_t*型のどちらかになる
char *ctStr = TEXT(" ")としていて、UNICODEを使おうとした場合型が違うとエラーが出るが
LPCTSTR ctStr = TEXT(" ")とすれば、UNICODEでもANSIでもエラー無く使える
汎用性の問題だな
0039デフォルトの名無しさん
2005/11/14(月) 09:37:52一生multi byte character stringなんか目にすることのない馬鹿な欧米人プログラマでも多言語
対応プログラムが書けるようにするためにある。
0040デフォルトの名無しさん
2005/11/14(月) 10:13:09すみません。UNICODEで書くとは具体的にどういったことをいうのでしょうか。
#define UNICODEとすれば、TEXT("")の文字列は全てUNICODEになるという解釈でよろしいのですか?
例えば、<window.h>の上に#define UNICODEとすれば、文字列は全てUNICODEとして扱われる
といったかんじなんでしょうか。
あと汎用的ということなのでVC++使ってみました。
しかしながらPCTSTR ctSrt = TEXT("")でビルドすると
PCTSTRは定義されていません。とエラーが出ます。
インクルードファイルは、<windows.h>と<stdio.h>の二つです。
<window.h>でPCTSTRは通ると思ったのですが、これはUNICODEの定義と何らかの関係があるのでしょうか。
ヘルプにはPCTSTRはUNICODEが定義してあると、PCWSTRそうでないとPCSTRになると解釈したのですが…。
0041デフォルトの名無しさん
2005/11/14(月) 12:17:36この命令は、既にhwndにフォーカスがある場合はWM_SETFOCUSメッセージを生成しない
のでしょうか。検証しているプログラムの挙動を見る限りそうではないかと思うのですが、
MSDNライブラリ等にはそのような記述が見あたりませんでした。よろしくおねがいします。
0042デフォルトの名無しさん
2005/11/14(月) 12:18:02のではなく、グローバルなネットワーク(インターネット側から見たアドレス)を取得したいのですが、
解決方法をどなたかご存知ありませんか。自分のアドレスをインタネット側からみたIPアドレスを知りたいのですが。。
環境はVC.net + SDKです。
0043デフォルトの名無しさん
2005/11/14(月) 12:28:18アホすぎる
掲示板で説明するのは面倒すぎるから本でも探して自分で勉強しろ
0044デフォルトの名無しさん
2005/11/14(月) 12:30:450045デフォルトの名無しさん
2005/11/14(月) 12:46:12返信ありがとうございます。
たとえば、インターネット側にあるサーバー(http://○○○.ne.jp)とかならサーバーに繋いだ際、
クライアント(インターネット側)アドレスは知る命令はご存知ありませんか。初歩的な質問ですみません。
0046デフォルトの名無しさん
2005/11/14(月) 12:50:03うわ・・。すみません。わかりました。。
ちょっと記憶が混乱してるみたいです。listen関数のアドレスもらえばいいだけですね。。
すみません。。
0047デフォルトの名無しさん
2005/11/14(月) 13:15:15UPnP
0048デフォルトの名無しさん
2005/11/14(月) 13:36:04すみませんでした。あきらめたいと思います。
0049デフォルトの名無しさん
2005/11/14(月) 14:00:180050デフォルトの名無しさん
2005/11/14(月) 15:48:45任意のディレクトリに存在する、ファイルの一覧(サブディレクトリなども含んでも良い)を取得したいのですけど。
MSはこのような要求を満たすAPIは提供しているのでしょうか
0051デフォルトの名無しさん
2005/11/14(月) 15:49:410052デフォルトの名無しさん
2005/11/14(月) 15:50:350053デフォルトの名無しさん
2005/11/14(月) 18:18:10文字の選択後に右クリックで、以下の部分に自作のアプリを埋め込んで選択肢に入れたいのですが
ググル先生やMSDNでAPIを調べてもとんと分かりません。調べる単語がわからないので助けて下さい
切り取り
コピー
貼り付け
すべて選択
----------
ぬるぽ
Google検索
0054デフォルトの名無しさん
2005/11/14(月) 18:24:360055デフォルトの名無しさん
2005/11/14(月) 18:32:530056デフォルトの名無しさん
2005/11/14(月) 18:38:510057デフォルトの名無しさん
2005/11/14(月) 18:39:460058デフォルトの名無しさん
2005/11/14(月) 18:41:130059デフォルトの名無しさん
2005/11/14(月) 18:43:19\\ ぬるぽワッショイ!! //
+ + \\ ぬるぽワッショイ!!/+
+
. + /■\ /■\ /■\ +
( ´∀`∩(´∀`∩)( ´ー`)
+ (( (つ ノ(つ 丿(つ つ )) +
ヽ ( ノ ( ヽノ ) ) )
(_)し' し(_) (_)_)
0060デフォルトの名無しさん
2005/11/14(月) 18:53:18何の文字列を選択して右クリックなんだ?
自作アプリで表示してる文字列なら自分で出す必要があるし、
そうでないならそのアプリ次第。
一般的な方法なんてない。
0061デフォルトの名無しさん
2005/11/14(月) 19:00:12.htmlをInternet Explorerで開いたときの、反転した文字列でつ
0062デフォルトの名無しさん
2005/11/14(月) 19:11:140063デフォルトの名無しさん
2005/11/14(月) 19:15:11レスありがとうございました。
IEはやめときます。猫でも〜のテキストエディタでtryしてみます
0064デフォルトの名無しさん
2005/11/14(月) 19:44:46ポップアップメニューを表示する際に、状況によって
メニューの文字列の一部を置き換えたいと思っています。
例えば %1を削除 → ファイルAを削除 のように。
現在、ON_UPDATE_COMMAND_UI() と CCmdUI を用いていますが、
元の文字列を取得するメソッドがありません。
CCmdUI::m_pMenu を使おうとしましたがこれは NULL になっていました。
これを実現するにはどうするのが正しいのでしょうか。
0065デフォルトの名無しさん
2005/11/14(月) 19:49:050066デフォルトの名無しさん
2005/11/14(月) 19:53:410067デフォルトの名無しさん
2005/11/14(月) 19:53:550068ヒントになるかな?
2005/11/14(月) 19:55:33http://www.sm.rim.or.jp/~shishido/fmenu.html
006964
2005/11/14(月) 20:01:00私へのレスでしょうか?
メニューはリソースで定義されているものを表示しています。
折角 ON_UPDATE_COMMAND_UI によってリソース定義とイベント処理が分離されているのですから、
イベント処理からリソースを読むということはあまりしたくありません。
別の意味だったらすみません。
0070デフォルトの名無しさん
2005/11/14(月) 20:25:07SetTimerのWM_TIMERの精度には効果なしか・・。残念。
ttp://homepage1.nifty.com/toro/dlw32api.html
0071デフォルトの名無しさん
2005/11/14(月) 20:41:53ウィンドウをフックしろ hook windows
0072デフォルトの名無しさん
2005/11/14(月) 20:52:29GetMenuItemInfoは?
007372
2005/11/14(月) 20:53:26ちょっと寝ぼけてた
変更後も元の値を知りたいのであれば、別のところに保存しておくしかないだろう
0074デフォルトの名無しさん
2005/11/14(月) 21:22:39SetMenuStringとかじゃないのか?
で、英語勉強したのか?
0075デフォルトの名無しさん
2005/11/14(月) 21:23:32007664
2005/11/14(月) 21:23:58そもそも置き換えをするためのベースの文字列が欲しいということです。
それともうひとつすみません、勘違いしていました。
今手元の環境でテストしてみたところ、
CCmdUI::m_pMenu が NULL になるのはメニューがクリックされた時に呼ばれる場合で、
メニューが表示される前に呼ばれる場合はちゃんと値が入っていました。
そこで
void CMenuTestApp::OnUpdateEditTest(CCmdUI* pCmdUI)
{
if(pCmdUI->m_pMenu)
{
CString str;
pCmdUI->m_pMenu->GetMenuString(pCmdUI->m_nID, str, 0);
str.Replace(_T("%1"), _T("ファイルA"));
pCmdUI->SetText(str.GetString());
}
}
のようにしたらうまくいきました。
お騒がせしました。
0077デフォルトの名無しさん
2005/11/14(月) 21:27:50「ありが�d」の心を忘れないで。
0078デフォルトの名無しさん
2005/11/14(月) 21:29:38>>76←このレスでいいと思う。
0079デフォルトの名無しさん
2005/11/14(月) 21:34:57>>71
両氏の技を今勉強しています。
レス有難うございます。なんだか楽しいです^^
0080デフォルトの名無しさん
2005/11/14(月) 21:40:00ポーリングなんて半端じゃなく時間のかかるものやってるわけないだろwアホかw
0081デフォルトの名無しさん
2005/11/14(月) 21:43:02俺はタイマは一定時間毎に取得してるだけだと思うけどな。
0082デフォルトの名無しさん
2005/11/14(月) 21:43:270083デフォルトの名無しさん
2005/11/14(月) 21:51:37そのためのアプリがあるみたいだからそれを使えばいいし、
自作のアプリ自体にその機能をつけたいならレジストリをいじればいい
ttp://www.rocaz.net/rclick/howtomenu.html
0084デフォルトの名無しさん
2005/11/14(月) 21:52:51http://www.borujoa.org/upload/source/upload3279.jpg
の下の方の様になってしまいます。
上の方の様にしたいのですがどうすればよいでしょうか。
よろしくお願いします(^o^)
0085デフォルトの名無しさん
2005/11/14(月) 21:53:330086デフォルトの名無しさん
2005/11/14(月) 21:55:440087デフォルトの名無しさん
2005/11/14(月) 22:02:08http://homepage2.nifty.com/winfaq/wxp/hints.html#1347
従来のアプリケーションを、XP の新 UI に対応させるには?
0088デフォルトの名無しさん
2005/11/14(月) 22:33:07マタオマエカ
0089デフォルトの名無しさん
2005/11/14(月) 22:40:200090デフォルトの名無しさん
2005/11/14(月) 22:47:12ボーリングは穴掘り
玉転がしはボウリング
0091デフォルトの名無しさん
2005/11/14(月) 23:25:18printfさせてみようと思って %d に渡したら、int から const char* に変換できませんと怒られてしまう…
0092デフォルトの名無しさん
2005/11/14(月) 23:27:51009391
2005/11/14(月) 23:32:26ありがとうございます。
後になって気づいたのですが、printfを使った自作のマクロが腐っていたのに気づきました。確認できました。すみません。
0094デフォルトの名無しさん
2005/11/14(月) 23:49:06MAX_PATHをGREPで検索するだけでいいんジャマイカ?
0095デフォルトの名無しさん
2005/11/15(火) 00:39:25237 :デフォルトの名無しさん :2005/11/14(月) 23:38:29
さあ話をそらしにかかりました
0096デフォルトの名無しさん
2005/11/15(火) 00:40:210097デフォルトの名無しさん
2005/11/15(火) 00:46:36ほっとけ。
0098デフォルトの名無しさん
2005/11/15(火) 01:58:11急ぎじゃなけりゃ他で聞いたほうがマシだよ質問者の皆さん
くだらない煽りとかネタとかのが多いし
0099デフォルトの名無しさん
2005/11/15(火) 02:08:18IPv4はできたのですが、IPv6がうまいこといきません。
WinsockでIPv6のRAWモードソケットってちゃんと使えるのでしょうか?
やっぱりWinPCapが必要なのかな...
0100デフォルトの名無しさん
2005/11/15(火) 02:52:22ShiftJISの文字列から、第一水準・第二水準以外の文字コード
(機種依存文字・第三水準・第四水準・補助漢字・外字等)
を削除したいのです(契約しているフォントの問題)。
適切なAPI、もしくは何かうまい判定方法はありますでしょうか?
対象はWindows98以降、開発環境はVC++2003です。
0101デフォルトの名無しさん
2005/11/15(火) 05:25:47お前の妄想なんかどうでもいい
0102デフォルトの名無しさん
2005/11/15(火) 05:46:260103デフォルトの名無しさん
2005/11/15(火) 07:45:16区点コードに直してから判定するといいかと。
0104デフォルトの名無しさん
2005/11/15(火) 09:00:45APIは全然関係ない。
0105デフォルトの名無しさん
2005/11/15(火) 11:29:03glb_mutex = CreateMutex(NULL, FALSE, L"mumu");
としてミューテックスハンドルをグローバル変数にして
各スレッドでWaitForSingleObject(glb_mutex, INFINITE), ReleaseMutex(glb_mutex);
としても合法でしょうか?
それとも各スレッドごとにOpenMutex()として別々に
ミューテックスハンドルを作成してやる必要があるのでしょうか?
0106デフォルトの名無しさん
2005/11/15(火) 11:33:24同期オブジェクトはプロセス内ならどのスレッドでも使えるよ。
つーかスレッド間同期のためにあるんだから使えて当然。
0107デフォルトの名無しさん
2005/11/15(火) 11:36:240108デフォルトの名無しさん
2005/11/15(火) 11:39:210109デフォルトの名無しさん
2005/11/15(火) 11:42:46今、リストビューのLVS_OWNERDRAWFIXEDを使ってDRAWITEMしてるのですが、
ディバイダー(カラム)のサイズを変更すると再描画が起こるのは分かりますが、
どうしてもちらついてしまいます。
LVS_OWNERDRAWFIXEDを知っている方で、ディバイダーのサイズを変更しても
ちらつかない方法を知ってる方いませんか。 WM_ERASEBKGNDや、知ってるかぎり
やってみたのですが。。
0110109
2005/11/15(火) 11:44:47よろしくお願いします。
0111デフォルトの名無しさん
2005/11/15(火) 11:47:11WS_CLIPSIBLINGSをウィンドウスタイルに加えたらどう?
0112105
2005/11/15(火) 11:51:23今までReleaseMutex(glb_mutex)を呼び出すと
WaitForSingleObject()を呼んでいても
GetLastError()が288を返してきていたので
この原因はグローバル変数にあるかと思っていましたが、
そうでないとわかり安心しました。
CreateMutex()自体は成功していました。
実はWaitForSingleObject()が
WAIT_ABANDONED WAIT_OBJECT_0 WAIT_TIMEOUT
のいずれかを返すものとして考えていたのですが、
WAIT_FAILEDを返す場合もあるとわかったので
こちらが返されていないか調べるようにします。
今は実験できる環境にいませんが試してから報告に来ます。
ではでは、
0113109
2005/11/15(火) 11:54:40試してみましたが、ダメみたいです。。
0114109
2005/11/15(火) 11:56:50ちらつきを取るのは難しいです。。
0115デフォルトの名無しさん
2005/11/15(火) 13:21:42描画を全部カスタムドローで管理しても取れるかどうか。
0116デフォルトの名無しさん
2005/11/15(火) 13:49:350117デフォルトの名無しさん
2005/11/15(火) 15:19:01GNUのLibiconvをVB6.0から利用できるようにしたいのだが、
stdcallでないために使用できないらしい。
ソースをなおしてみようかと思ったんだが、どう手をつけていいか..
教えてエロ(ry
0118デフォルトの名無しさん
2005/11/15(火) 16:40:09stdcallにするだけなら楽だが、iconv()はエラー通知用にerrnoを使用するし
引数もダブルポインタがあったりしてアレなので、
どのみちそのままではVBから使うには不適当。
VB用にラッパー関数を書くんだね。
0119デフォルトの名無しさん
2005/11/15(火) 16:45:19MlangのConvertINetString()でいいんじゃないかな。
IEの文字コード変換機能がそのまま使えるよ。
日本語エンコーディングのAutodetectも利用できる(IEが出来るんだから当然だが)
0120デフォルトの名無しさん
2005/11/15(火) 17:05:50WM_KEYDOWN上でログを取ろうとすると、
時間は取れるのですが、wParamの中身が入力内容として使えません。
(何を入力しても0xE5が飛んでくる)
WM_CHARやWM_IME_CHARでは確定後にまとめて情報が来るため、
BSキーなどで修正をした場合、そこの入力が無視されてしまいます。
(実のところ、そのローマ字入力を修正した部分周りの情報が欲しいです)
ローマ字入力中の打鍵列をリアルタイムに取得するには
何かいい方法はないでしょうか。
0121デフォルトの名無しさん
2005/11/15(火) 17:15:37フックをかけてIMEより先に情報を取得するのがいいんじゃね?
IMEより上位にフックできるのか試してないからわからんが
0122デフォルトの名無しさん
2005/11/15(火) 17:16:040123121
2005/11/15(火) 17:18:050124デフォルトの名無しさん
2005/11/15(火) 17:33:15ありがとうございます!
MSDNで早速調べてみたところ、まさにそのまんまの関数でした。
ただ、返り値が元の仮想キーコードとなるとあったのですが
if(wp == VK_PROCESSKEY){
printf("keycode: %x\n", ImmGetVirtualKey(hWnd));
}
としてクイックコンソールで確認してみたところ、
依然として0xE5が出力されてくれます( 'A`)
イージーミスの可能性もあるので、もうちょっと色々試してみます。
本当にありがとうございました。
0125117
2005/11/15(火) 17:41:00mlangのConvertINetStringから、ADODBのStreamにまで流れ着きました。('A`)
おかげでできました。�d
0126デフォルトの名無しさん
2005/11/15(火) 17:46:11if(wp == VK_PROCESSKEY){
printf("keycode: %x\n", MapVirtualKey(LOBYTE(HIWORD(lParam)),1));
}
こんなんでもいいみたい。
0127デフォルトの名無しさん
2005/11/15(火) 18:14:25もち、TCHAR対応で
0128デフォルトの名無しさん
2005/11/15(火) 18:17:50ありがとうございます、そっちの方法だと行けました!
ImmGetVirtualKey()が成功しなかった理由はまだちょっと判らないですが、
コレ使って何とか先に進めそうです。
助かりました。
0129デフォルトの名無しさん
2005/11/15(火) 18:46:36memset()は文字列を扱うための関数ではありませんが。
0130デフォルトの名無しさん
2005/11/15(火) 19:08:26VC++のCランタイムにはwmemsetもあるが129の理由でTCHAR版はない。
自分でマクロ作れ。
あるいはC++なら<algorithm>のstd::copyも使える。
0131デフォルトの名無しさん
2005/11/15(火) 19:32:10File string.h:
_CRTIMP void * __cdecl memset(void *, int, size_t);
void * __cdecl memset(void *, int, size_t);
0132デフォルトの名無しさん
2005/11/15(火) 20:42:04wmemsetは<wchar_t.h>
0133デフォルトの名無しさん
2005/11/15(火) 20:52:270134デフォルトの名無しさん
2005/11/15(火) 21:06:520135デフォルトの名無しさん
2005/11/15(火) 21:17:49PVOID Destination, // メモリブロック
SIZE_T Length, // メモリブロックのサイズ
BYTE Fill // 書き込みたい値
);
つーのはあるけどな。
0136デフォルトの名無しさん
2005/11/15(火) 21:21:19でもTCHARでないから127の希望とは違うだろうな。
0137デフォルトの名無しさん
2005/11/15(火) 21:23:370138デフォルトの名無しさん
2005/11/15(火) 21:24:400139デフォルトの名無しさん
2005/11/15(火) 21:26:12激しく同意だな。
0140デフォルトの名無しさん
2005/11/15(火) 21:27:020141デフォルトの名無しさん
2005/11/15(火) 21:29:400142デフォルトの名無しさん
2005/11/15(火) 21:32:510143デフォルトの名無しさん
2005/11/15(火) 21:37:030144デフォルトの名無しさん
2005/11/15(火) 21:42:36正解。マクロでmemsetになる。
一応kernel32にRtlFillMemoryのエントリポイントもあるけどな。
0145デフォルトの名無しさん
2005/11/15(火) 21:45:040146デフォルトの名無しさん
2005/11/15(火) 21:48:50SecureZeroMemory()は低速。
これは、不具合の原因を特定できるまでの暫定処置だった。
原因が特定された現在では、以下のコードが望ましい。
inline void* MemSet( void *dest, int c, size_t count )
{
memset(dest, c, count);
*(volatile char*)dest = *(volatile char *)dest;
return dest;
}
↓詳細は以下URLで
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpdncode/htm/secure10102002.asp
0147デフォルトの名無しさん
2005/11/15(火) 21:50:510148デフォルトの名無しさん
2005/11/15(火) 21:55:400149デフォルトの名無しさん
2005/11/15(火) 21:56:22---winnt.h---
FORCEINLINE
PVOID
RtlSecureZeroMemory(
IN PVOID ptr,
IN SIZE_T cnt
)
{
volatile char *vptr = (volatile char *)ptr;
while (cnt) {
*vptr = 0;
vptr++;
cnt--;
}
return ptr;
}
---winbase.h---
#define SecureZeroMemory RtlSecureZeroMemory
0150デフォルトの名無しさん
2005/11/15(火) 21:56:510151デフォルトの名無しさん
2005/11/15(火) 21:57:590152デフォルトの名無しさん
2005/11/15(火) 22:00:530153デフォルトの名無しさん
2005/11/15(火) 22:01:360154デフォルトの名無しさん
2005/11/15(火) 22:04:29memset() の最適化処理に伴う予期しない最適化について記述されている。
0155デフォルトの名無しさん
2005/11/15(火) 22:26:26な。
0156デフォルトの名無しさん
2005/11/15(火) 22:33:16みんなの知識向上に寄与したから誉めてやってもいいと思う。
0157デフォルトの名無しさん
2005/11/15(火) 22:40:050158デフォルトの名無しさん
2005/11/15(火) 22:47:240159デフォルトの名無しさん
2005/11/15(火) 23:14:24>これはオプティマイザのバグだ!と叫んで通りに飛び出すのはちょっと待ってください。
ちょっとワロタ
0160デフォルトの名無しさん
2005/11/15(火) 23:29:33ありがとう^^^^^^^^^^^^^^^
0161デフォルトの名無しさん
2005/11/16(水) 00:37:51今度、リリースビルドしたら動作しなくなったとかいう質問者に言ってみるよ!
0162デフォルトの名無しさん
2005/11/16(水) 02:29:44http://up.mugitya.com/img/Lv.1_up12444.jpg
の上の奴の様になるんだけど、
真ん中や下の奴の様にしたいんだけど、どうすればいいかな?
よろしくお願いします(^o^)
0163デフォルトの名無しさん
2005/11/16(水) 02:56:14ま た グ ラ デ 厨 か
0164デフォルトの名無しさん
2005/11/16(水) 03:23:030165デフォルトの名無しさん
2005/11/16(水) 03:57:52真ん中や下の奴はvisual styleで定義されたグラフィカルな色合い
だからvisual styleを変更すれば別のグラフィカルな色合いになる
0166デフォルトの名無しさん
2005/11/16(水) 04:03:500167デフォルトの名無しさん
2005/11/16(水) 06:42:44調子のんなよカス(^o^)
0168デフォルトの名無しさん
2005/11/16(水) 06:53:06ヽ|・∀・|ノ
|__|
| |
調子
調子
調子
調子
調子
調子
調子
調子
調子
調子
0169デフォルトの名無しさん
2005/11/16(水) 07:05:050170デフォルトの名無しさん
2005/11/16(水) 07:39:09わかったからさっさと答えろや(^o^)
0171デフォルトの名無しさん
2005/11/16(水) 07:43:100173デフォルトの名無しさん
2005/11/16(水) 08:04:410174デフォルトの名無しさん
2005/11/16(水) 08:28:32ttp://www.microsoft.com/japan/msdn/windows/windowsxp/xptheming.asp
0175デフォルトの名無しさん
2005/11/16(水) 09:25:360176デフォルトの名無しさん
2005/11/16(水) 09:33:290177デフォルトの名無しさん
2005/11/16(水) 09:36:33char[]に格納したときに消費するメモリの大きさが違う
0178デフォルトの名無しさん
2005/11/16(水) 09:40:10VistaのSDK
0179デフォルトの名無しさん
2005/11/16(水) 09:45:24SDKとは 【Software Development Kit】 ─ 意味・解説 : IT用語辞典 e ...
SDKをさらに検索. 全文検索 ・ 関連ニュース検索. SDK. あるテクノロジー(プログラミング 言語やAPIな
ど)を利用してソフトウェアを開発する際に必要なツールのセット。 フルスペル :, Software
Development Kit. IT派遣情報, ITエンジニア派遣なら ...
e-words.jp/w/SDK.html - 関連ページ
0180デフォルトの名無しさん
2005/11/16(水) 13:54:12OSの情報を取得する方法があれば教えてください。
互換モードで起動するとGetVersionEx()で取得される情報も変更されてしまいます。
0181デフォルトの名無しさん
2005/11/16(水) 14:01:519xとNT系の区別だけでいいなら、GetSystemDirectory()で取得した文字列から泥臭く判断するのはどう?
0182181
2005/11/16(水) 14:07:02デスクトップのパスで判断するとか。
SHGetSpecialFolderPath(NULL, buffer, CSIDL_DESKTOPDIRECTORY, FALSE);
0183デフォルトの名無しさん
2005/11/16(水) 14:07:10それすら騙されるなら、ファイルとして読み込んで自己解析とか。
0184デフォルトの名無しさん
2005/11/16(水) 14:52:360185デフォルトの名無しさん
2005/11/16(水) 14:56:25LPARAM は LPARAM だしょ
0186デフォルトの名無しさん
2005/11/16(水) 14:59:45WPARAM型は(私の環境では)32bit変数(DWORD型と同じ)
LPARAM型は・・?
てな具合です。
0187デフォルトの名無しさん
2005/11/16(水) 15:02:59typedef LONG_PTR LPARAM;
typedef long LONG;
File wmsstd.h:
typedef LONG LONG_PTR;
0188デフォルトの名無しさん
2005/11/16(水) 15:03:3332ビットでしょ
0189デフォルトの名無しさん
2005/11/16(水) 15:06:11どっちも単なる32bitのメモリ。
好きに使えばいい。
ただ、LPARAMは、何かのポインタを入れるのに使うことが多い、
というだけ。
たとえば
WM_CREATEのLPARAMは、CREATESTRUCT構造体へのポインタ
WM_NOTIFYのLPARAMは、NMHDR構造体へのポインタ
0190デフォルトの名無しさん
2005/11/16(水) 15:07:50今さっきも*lParamとしたのですが、無効な参照と吐いてくれたので。
すみませんでした
0191189
2005/11/16(水) 15:07:55もちろん、いま32bitというだけであって、
将来、MSは変える可能性があるから、絶対に32bitだとするのはあれだけど。
(まあ、互換性を考えるとまずない)
0192デフォルトの名無しさん
2005/11/16(水) 15:10:020193デフォルトの名無しさん
2005/11/16(水) 15:11:03新しいヘッダファイルでは、
既に、64bitに対応できる定義に変わってるけど
0194デフォルトの名無しさん
2005/11/16(水) 15:16:260195デフォルトの名無しさん
2005/11/16(水) 15:33:17名前は16bitだと思うが‥‥
Word: 16bit
DoubleWord: 32bit
QuadWord: 64bit
0196デフォルトの名無しさん
2005/11/16(水) 15:57:26以下は、MSDNの「データ型」(MFCの関連ページ)から
WPARAM
ウィンドウ プロシージャまたはコールバック関数への引数として渡される値。
Windows Versions 3.0 と 3.1 では 16 ビット値、Win32 では 32 ビット値。
LPARAM
ウィンドウ プロシージャまたはコールバック関数の引数として渡される 32 ビット値。
0197デフォルトの名無しさん
2005/11/16(水) 16:05:16「名前は」16bitだっつってんだから>WORD Parameter
0198デフォルトの名無しさん
2005/11/16(水) 16:22:30WORDという表現が紛らわしくなっただけでしょ
0199仕様書無しさん
2005/11/16(水) 16:37:4916bitだろうが、32bitだろうが、よほど偏屈なマイナー仕様のシステムでない
限り、WORDは16ビットだが?
intのサイズが未定義(環境依存)なのと区別ついてねぇんじゃないか?
0200180
2005/11/16(水) 16:49:53やはり、そういう裏ワザ的手法になってしまうんですね…。
みなさんのご助言をもとにいろいろ試行錯誤してみます。
どうもありがとうございました。
0201デフォルトの名無しさん
2005/11/16(水) 16:59:53同じ事言っているのに
0202デフォルトの名無しさん
2005/11/16(水) 17:04:00むしろ>>196の>>195に対するレスがおかすい
0203デフォルトの名無しさん
2005/11/16(水) 17:06:120204デフォルトの名無しさん
2005/11/16(水) 17:07:29すでにWPARAMという(16bitの)名で32bitなわけだし(いまさら拘ることはない)。
読解力無いな195も196も
0205デフォルトの名無しさん
2005/11/16(水) 17:13:060206デフォルトの名無しさん
2005/11/16(水) 19:55:230207デフォルトの名無しさん
2005/11/16(水) 22:03:36TTM_SETDELAYTIMEでTTDT_AUTOPOPを指定すれば時間を変更できますが、
最大30秒ちょっとしか表示を持続させることができないようなので・・・。
0208デフォルトの名無しさん
2005/11/16(水) 22:08:540209デフォルトの名無しさん
2005/11/16(水) 22:16:07しょうがないから最大30秒で我慢してるw
0210209
2005/11/16(水) 22:19:2830秒を測ってると思われるWM_TIMERあたりのメッセージを横取りすれば
持続して表示できるかもしれないが、そこまで試さなかったw
0211デフォルトの名無しさん
2005/11/16(水) 22:25:180212デフォルトの名無しさん
2005/11/16(水) 22:27:07win32sdkです。
ダイアログボックスに、エディットコントロールを貼り付けていますが、
英数と、.コンマのみ入力にしたいのですが、
ime の変更を行いたいと思っています。
どのイベントにそれを書き込むのかが分かりません。
教えてください
hlmc = ImmGetContext(hwnd);
ImmGetConversionStatus(hlmc,&dwConv,&dwSent);
ImmSetConversionStatus(hlmc,IME_CMODE_FULLSHAPE, dwSent);
上記かきこもうとおもっています。
0213デフォルトの名無しさん
2005/11/16(水) 22:27:420214デフォルトの名無しさん
2005/11/16(水) 22:29:190215デフォルトの名無しさん
2005/11/16(水) 22:32:040216デフォルトの名無しさん
2005/11/16(水) 22:32:44韓国:日本=昭和生まれ:平成生まれ
0217デフォルトの名無しさん
2005/11/16(水) 22:37:380218デフォルトの名無しさん
NGNG0219デフォルトの名無しさん
2005/11/16(水) 22:39:400220デフォルトの名無しさん
2005/11/16(水) 22:46:57memcpy辺りでガッと初期化しようと思っているのですが、
1列の最後尾にゴミが無いってのは保証されてましたっけ?
古き良きDirectDrawの描画メモリと記憶が混在してしまって
0222デフォルトの名無しさん
2005/11/17(木) 00:03:07コピってくる方法ないですか?スクリーン上では見えない座標にコピー元を移動したりと色々試したけど、WM_PAINTが発生しないから
ハードコピーしても期待したDCのビットマップが取得できないんですよね。無理?
0223222
2005/11/17(木) 00:04:440224デフォルトの名無しさん
2005/11/17(木) 00:16:35まぁ、無理だと思うよ。
タスクマネージャなどの最前面アプリのしたにいるウィンドウや、
モニタから見切れているウィンドウで試せば判るが、理論DCを取得することは不可能。
0225224
2005/11/17(木) 00:19:240226デフォルトの名無しさん
2005/11/17(木) 00:20:32おっしゃる通りだめでした。FindWindow()で見つけたウィンドウに対してInvalidate()とUpdateWindow()呼んだけど×。
本当はOLEで自アプリに埋め込みたいのですが、OLEで埋め込むと必要ない部品までくっついてきてしまうので…
メインウィンドウの画面イメージだけ欲しいんですよね。このような要件を満たすことはできないですかね?
0227デフォルトの名無しさん
2005/11/17(木) 00:21:38うっそー誤爆なん!?w あまりにもタイムリー
0229デフォルトの名無しさん
2005/11/17(木) 00:36:100231デフォルトの名無しさん
2005/11/17(木) 00:52:280232デフォルトの名無しさん
2005/11/17(木) 02:01:01OpenThemeData試したけど無理だったよ(^o^)
詳しく教えてよー(^o^)
0233デフォルトの名無しさん
2005/11/17(木) 02:24:19礼の一言も言えねぇガキに教えてやるほど俺はヒマじゃねぇ。
他の優しいお方にでも頼め。
0234デフォルトの名無しさん
2005/11/17(木) 02:28:05>160
0235デフォルトの名無しさん
2005/11/17(木) 03:49:24>(^o^)
コレウザイ
0236デフォルトの名無しさん
2005/11/17(木) 04:04:15すみませんでした。
0237デフォルトの名無しさん
2005/11/17(木) 05:15:47とりあえず、DLLのウィンドウ作成メッセージをフックするところから調べていますが、正しいのでしょうか?
ご教授お願いします
0238デフォルトの名無しさん
2005/11/17(木) 05:16:02^^
0239デフォルトの名無しさん
2005/11/17(木) 09:14:17雑魚ばっかだな(^o^)
0240デフォルトの名無しさん
2005/11/17(木) 09:19:020241デフォルトの名無しさん
2005/11/17(木) 09:45:57SetParent()
0242デフォルトの名無しさん
2005/11/17(木) 11:01:38ヘルプブラウザ(dexplore.exe)がVS2005の世代のになればいーなー。
0243デフォルトの名無しさん
2005/11/17(木) 15:50:57このサイトを参考にプログラムを作成しました。
このプログラムにおいて、(x,y)座標のRGB値を取得したいのですが、
どのようにすれば宜しいのでしょうか?
プログラムの関数grayScaleでは、
for (i = 0; i < xSize * ySize; i++) {
b = lpBMP[i * 3];
となってますが、これをどういじれば(x,y)で示せるのか分かりません。
0244デフォルトの名無しさん
2005/11/17(木) 16:20:11i = x + y * width;
0245デフォルトの名無しさん
2005/11/17(木) 17:55:41ファイルパスをUTF-8で渡してくるアプリの移植で困っていまして。
できないならファイル操作のところでUTF16に自力変換してwopenとか*W系APIとかを自力で呼び出そうかと考えているのですが。
0246デフォルトの名無しさん
2005/11/17(木) 18:31:420247245
2005/11/17(木) 18:58:16サンクス。変換して渡せばよいのですね。
googleさまにお尋ねしてみたところ、wfstreamというものを教えてくださいました。fstream継承して自分で書く羽目になるのかと思っていました。
ところで
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/mslu/winprog/microsoft_layer_for_unicode_on_windows_95_98_me_systems.asp
怪しげな拡張ですが、これを入れれば95とかでもFileW系とかWideCharの変換系とかのAPI呼べるんでしょうか?
なんか内部的にローカルなcodepageに変換しているだけのようにも見えますが・・・
私の扱っているアプリはUTF8ネイティブなのでANSIに変換すると情報が失われてしまうことがあります
あとFATの場合ってファイルパスは256バイト以内(Unicode128文字以内)しか使えないのでしょうか?
0248デフォルトの名無しさん
2005/11/17(木) 19:11:260249デフォルトの名無しさん
2005/11/17(木) 19:14:42wfstreamも、コンストラクタのファイル名の引数の型はconst char *だったと思うが。
WideCharなどの関数は元から9xでも対応している。
ここに9xでも使えるUnicode系の関数の一覧がある。
http://msdn.microsoft.com/library/en-us/mslu/winprog/other_existing_unicode_support.asp?frame=true
(ほかにもCOM関連はもちろんUNICODEしかないな)
それ以外の関数の場合、MSLUは単にANSIへ変換しているだけ。
0250デフォルトの名無しさん
2005/11/17(木) 19:47:21streamの中身がwcharなだけなんですね。
C++初心者ですが、ヘッダファイルとGoogle様を参考にしてがんばって自分で作ってみます。
9x系は切捨ての方向でいきたいと思います。
今のままでもマルチバイトなファイル名がぶっこわれることがあるだけで、使えないわけじゃないし。
どうもありがとうございました。
0251デフォルトの名無しさん
2005/11/17(木) 20:04:48書き忘れたが、
wstream類も入出力先(ファイルなど)ではマルチバイト文字で、
入出力時にワイド文字へ変換しているからな。
0252デフォルトの名無しさん
2005/11/17(木) 20:41:11ありがとうございます。
その書き込みで気がついたのですが、データはANSI(UTF-8)のまま読み書きしなきゃいけないのでした。本家がデータはすべてUTF8で扱う方針のようですので。
とりあえずUTF-8ならASCIIと衝突することがないだろうという適当な方法ではあるのですが、国際化なんてほとんどそんなもんですよね。
C++/C室の方には書いたのですが、ファイル名をUTF8で渡すと壊れる文字があるのです。
bash+cygwin,MinGW,VC7&6のどれも同じように壊れるんで、libcrtかWin32APIのどちらかが悪さしてるみたいですが、そのへんを深く追求するのはやめました。
とりあえずファイルパスを扱う部分だけUTF16化して、適時変換を噛ませればよいかな、と。
9x系はどうしようもないですねぇ。
ファイル名をUnicode化せずにファイル内部にUTF-8なファイル名を持たせればASCIIでもいけるのですが、それだと手間が大きすぎますし…
0253デフォルトの名無しさん
2005/11/17(木) 20:58:31きっとまずいのはWinAPIだ。
CRTはおそらくファイル名の文字列に手を加えていないと思われるので、
WinAPIに原因がある。もちろん単にファイル名をUTF-8では受け付けない仕様で、
WinAPIには何の非もないのだが。
0254デフォルトの名無しさん
2005/11/17(木) 21:04:56でも、ないよりはましじゃね?
ちょっとした物ならこれで十分なこともあるし。
0255デフォルトの名無しさん
2005/11/17(木) 23:26:55俺も詳しいことは知らんが、LCIDとCodePageは分けて考えたほうが良いと思うな。
setlocale()やSetLocaleInfo()等で設定するのはLCID。で、Language Identifier
に紐づいているCodePage(エンコーディング)が自動的に設定されるんだと思う。
日本語なら932、という風にな。
VC++のヘルプにはsetlocale()で設定可能な言語識別文字列が載っているが、
そこにはUTF-8は無いし、OSレベルのLanguage Identifierにも無い。
から、「設定できない」と考えるべきだろう。
GetACP()があるんだから、SetACP()のような、エンコーディングだけ指定できる
APIがあると良かったんだがな。
>>252
Windows APIでANSI文字列(char*)を渡したときは、ACPでエンコードされていると
仮定される。何もしなければそれは932だから、UTF-8文字列なんぞ食わせりゃ
問題が生じて当然だな。
で、上で述べたようにACPをUTF-8に変更する方法はどうもなさそうだから、
やはりWCSに変換してW版のAPIを呼ぶのが一番穏当だろう。
9x系がどうしようもないのは確か。
0256デフォルトの名無しさん
2005/11/17(木) 23:58:46Win32APIの同機能に比べて低速なので期待したほど使えない。
多くの人は、_tcsicmp() を使うくらいなら、Win32APIの lstrcmpi() を使う。
0257デフォルトの名無しさん
2005/11/18(金) 05:41:02お願いします
お願いします
.manifestファイルおいても適用されません
このとおりです
0258243
2005/11/18(金) 07:40:35ありがとうございます。
ところで、なぜその式になるのでしょうか?
参考になるHPなどありましたら教えていただけますでしょうか?
こういう情報って、どのようなキーワードでググれば出てきますか?
無知&教えて君でスマソorz
0259デフォルトの名無しさん
2005/11/18(金) 08:39:50どちらかというと算数のお話し
3×2の画像は
123
456
の順でデータが並んでいる。あとは自分で考えれ
0260デフォルトの名無しさん
2005/11/18(金) 08:55:05そうだね、数学じゃなく算数レベルだねぇ(w
widthは横の幅、yは縦の位置、xは横の位置、だから解りやすくすると・・・
i = (width * y) + x;
0261デフォルトの名無しさん
2005/11/18(金) 09:18:00static inline offset(int x, int y, unsigned width) {return x + y * width;}
とでもしておくと便利なわけだが。
#どう便利かはスレ違いにつき割愛。
0262デフォルトの名無しさん
2005/11/18(金) 10:11:510263デフォルトの名無しさん
2005/11/18(金) 10:13:370264デフォルトの名無しさん
2005/11/18(金) 10:16:02そこはハマってもらうところだからなw
0265デフォルトの名無しさん
2005/11/18(金) 11:07:190266デフォルトの名無しさん
2005/11/18(金) 11:08:370267デフォルトの名無しさん
2005/11/18(金) 11:16:43ディスクに書き出すにはどうしたらよいのでしょうか?
0268デフォルトの名無しさん
2005/11/18(金) 11:19:15CreateFile
WriteFile
CloseHandle
0269デフォルトの名無しさん
2005/11/18(金) 11:37:40そんなときにも>261のように関数にしておけばちょっと安心。
0270デフォルトの名無しさん
2005/11/18(金) 12:41:37デバイス非依存ビットマップを作成し、
それに対しBitBlt()などで記録したい情報をコピー。
それからDIBの内容を>>268の通りにする。
0271デフォルトの名無しさん
2005/11/18(金) 13:07:14「草々」で締めるんだよ
0272デフォルトの名無しさん
2005/11/18(金) 13:10:520273デフォルトの名無しさん
2005/11/18(金) 14:09:57出してやって入ます。これをエディタのようなインライン入力にしたいのですが、
これまでこの手の操作は edit control 任せだったので、APIもよく分かりません。
ImmCreateContext() とかを使うのかなと想像していますが、マウスでクリックし
た場所に入力ウインドウを表示するというのは、どういう API を使うのでしょうか。
この関連を調べろとかでも結構です。お教え下さい。
(猫でも...も見ました。IMM 設定操作のみのようです。)
0274デフォルトの名無しさん
2005/11/18(金) 14:11:560275デフォルトの名無しさん
2005/11/18(金) 15:39:12Arialは日本語をサポートしていないため全角文字を入力すると文字化けしてしまいます。
この文字化けを防ぎたいのですが何か方法はありますか?
0276デフォルトの名無しさん
2005/11/18(金) 15:40:300277デフォルトの名無しさん
2005/11/18(金) 15:57:00・全角文字を入力させない。
・Arialを使わない。
0278デフォルトの名無しさん
2005/11/18(金) 19:19:190279デフォルトの名無しさん
2005/11/18(金) 19:32:450280デフォルトの名無しさん
2005/11/18(金) 19:37:500281デフォルトの名無しさん
2005/11/18(金) 20:21:340282デフォルトの名無しさん
2005/11/18(金) 21:09:59アイコンなどは再起動しないとエクスプローラなどに反映されないみたいですが、
これをすぐに反映させる方法をご存知でしたら教えてください。
0283デフォルトの名無しさん
2005/11/18(金) 21:15:32PC初心者
http://pc7.2ch.net/pcqa/
0284デフォルトの名無しさん
2005/11/18(金) 21:19:39( ゚Д゚)ハァ?
0285デフォルトの名無しさん
2005/11/18(金) 21:20:44SHChangeNotify
0288デフォルトの名無しさん
2005/11/18(金) 21:58:57m9(^Д^)プギャ---ッ
0289デフォルトの名無しさん
2005/11/18(金) 22:25:070291デフォルトの名無しさん
2005/11/19(土) 00:59:12メニューバーとツールバーにヴィジュアルスタイルを適用する方法を教えてください
お願いします
お願いします
.manifestファイルおいても適用されません
このとおりです
これに答えてください
0292デフォルトの名無しさん
2005/11/19(土) 01:35:23どうしてかわかる人います?
同じバイナリで、別の Windows2000 や XP では出てるんだけど・・・。
環境は、Windows XP SP1、IME 2003
そんなのを設定できるプロパティってあったかな。
0293デフォルトの名無しさん
2005/11/19(土) 02:00:45c:\\ \\ \\
と指定すると空白のフォルダが作成できてしまいます。
CreateDirectory() や _mkdir() などでは、空白のフォルダを作成しようとした際にはエラーになります。本来、命名規約上は作成できないのが正解だと思います。
このように空白のフォルダを作ってしまうと削除もできなくなってしまいます。
Debug系のAPIのせいかもしれませんが、何か情報をもっていれば教えて下さい。
不具合でしょうか。
0295デフォルトの名無しさん
2005/11/19(土) 02:48:390296292
2005/11/19(土) 03:08:19かつ、
テキストサービスと入力言語>互換性の構成
の「詳細なテキスト サービスのサポートをプログラムのすべてに
拡張する」にチェックが付いていると描画できないみたいなんだけど
情報お持ちの方がいらっしゃったら教えていただければ幸いです
0297デフォルトの名無しさん
2005/11/19(土) 03:24:15> 本来、命名規約上は作成できないのが正解だと思います。
果たしてそうなんだろうか。WinXPのコマンドプロンプトで試してみたが、
>md " "
だとエラーになったが、
>md " \"
とするとディレクトリができた。
削除は
>rd " \"
でOK
って、よく試したらcdができないな。ダメポ。
0298デフォルトの名無しさん
2005/11/19(土) 03:25:17ドロップダウンリストにしているのですが
クリックしてもリストが表示されません
(正確には表示されているようなのですが、数ピクセルしか縦の幅がなくて項目が一つも見えません)
どうしたらちゃんと表示されるのでしょうか?
0299デフォルトの名無しさん
2005/11/19(土) 03:31:28それFAQ。ってかスレ違い。
リソースエディタ上で、ドロップダウンさせてみれば分かるんじゃない?
0300デフォルトの名無しさん
2005/11/19(土) 03:39:27日本語訳されていない続きがあってそっちに正解が載ってる。
http://msdn.microsoft.com/library/en-us/dncode/html/secure03132003.asp
ImpersonateNamedPipeClientのエラーチェックをしていないので
失敗したときSYSTEM権限のまま続きのコードが実行されてしまう。
0301デフォルトの名無しさん
2005/11/19(土) 03:40:58どうでもいいけどx64 Editionだとそのオプションないな
0302デフォルトの名無しさん
2005/11/19(土) 04:08:04例えば、"abcdefg" の "cd" の部分を "\%" に置換するといったような感じで。
0303デフォルトの名無しさん
2005/11/19(土) 04:41:130304デフォルトの名無しさん
2005/11/19(土) 06:31:462. Win32コンソールアプリが、コンソール窓を自ら閉じてしまう(実行は継続)ことは可能なのでしょうか?
0305デフォルトの名無しさん
2005/11/19(土) 06:53:440306デフォルトの名無しさん
2005/11/19(土) 07:16:26http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/userex/topics/partsandstates.asp
なぜかここに書かれてる定数を利用できないので無理です
最新版のSDKいれてるのに
マジわかんね
0307デフォルトの名無しさん
2005/11/19(土) 07:28:10いれたSDKのフォルダをインクルードパスに指定してないか、指定順序が後のほうになってるんじゃない?
0308デフォルトの名無しさん
2005/11/19(土) 07:41:57最新版のSDKのインクルードファイルが詰まってるフォルダを一番先に指定してるけど無理
0309デフォルトの名無しさん
2005/11/19(土) 07:47:290310デフォルトの名無しさん
2005/11/19(土) 07:48:480311デフォルトの名無しさん
2005/11/19(土) 08:18:27インスコしてんのに使えないんだから、
設定か記述か、どちらにしろあんたのやり方が悪いだけ
0312デフォルトの名無しさん
2005/11/19(土) 08:48:26docファイルなどの内部ストレージファイルの場合は、
PSDKにあるStructuredStorageサンプルのpropdump.cppを単体ビルドしたもので閲覧できるのだけど、
通常ファイルの場合は、このサンプルではプロパティを取得することができない。
どなたか、txtなどの通常ファイルのプロパティ(カテゴリ・コメント・作成者など)を取得する方法をご教授下さい。
0313デフォルトの名無しさん
2005/11/19(土) 08:59:57NTFS副次ストリームのSummaryInformationに保存されている。
だからhoge.txtならhoge.txt:SummaryInformationという名前でファイルを開けばデータを読み出せる。
俺もやったことはないからどういう風に格納されているかは知らないけど。
0314デフォルトの名無しさん
2005/11/19(土) 09:41:59Tmschema.hインクルードするの忘れてました
0315312
2005/11/19(土) 09:57:05回答ありがとうございます。
自分の環境では"StructuredStorage"の前に0x05が入るため、
"hoge.txt:\x50SummaryInformation"とする必要があるなど、汎用な取得方法ではないようです。
ですが、ヒントになるキーワードを頂いたのでさらに調査を進めることができました。
NTFS固有プロパティの取得方法が以下のURLにありました。今から試してみるつもりです。
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/stg/stg/ipropertysetstorage_open.asp
0316デフォルトの名無しさん
2005/11/19(土) 09:57:380317デフォルトの名無しさん
2005/11/19(土) 09:58:220318315
2005/11/19(土) 09:59:03× 自分の環境では"StructuredStorage"の前に0x05が入るため、
○ 自分の環境では"SummaryInformation"の前に0x05が入るため、
0319デフォルトの名無しさん
2005/11/19(土) 10:09:480320312
2005/11/19(土) 10:31:02直前にクリップボードに入ってた文字列が似てたから間違えただけ。
BTW、>>312で失敗サンプルとしてあげたpropdump.cppで呼び出している、
StgOpenStorageEx()の第7引数のGUIDを
IID_IStorage から IID_IPropertySetStorage に変更すれば、
ちゃんとNTFSプロパティでも動くっぽい。但し、なぜかassert()を吐く。
0321315
2005/11/19(土) 10:53:47×"hoge.txt:\x50SummaryInformation"
○"hoge.txt:\x05SummaryInformation"
0322デフォルトの名無しさん
2005/11/19(土) 11:02:130323デフォルトの名無しさん
2005/11/19(土) 11:08:03微妙に気になった
0324デフォルトの名無しさん
2005/11/19(土) 11:40:310325デフォルトの名無しさん
2005/11/19(土) 11:52:590326デフォルトの名無しさん
2005/11/19(土) 12:03:34応用は色々だね。メディアファイルにユーザ定義の付加情報つける時に有益だ。
Office・一太郎ドキュメントファイルなどの内部ストレージ型情報と違って、他のPCに持ちこしできないけど。
0327デフォルトの名無しさん
2005/11/19(土) 12:17:55メディアのタイムマーカー情報を副次ストレージに保存できる。
長時間のファイルの頭出し再生もこれで快適だ。
0328デフォルトの名無しさん
2005/11/19(土) 14:41:540329292
2005/11/19(土) 15:55:15レスありがとうございます。
うーん、他の Editor(sakura とか)では、その状態でも IME の
変換ウィンドウが出るから、やり方が悪いみたいなんだけど・・・。
ちょっとシンプルなサンプル作って考えて見ます。
0330デフォルトの名無しさん
2005/11/20(日) 02:16:46起動してなければ起動する、
既に起動していたら何もしない、
といった動作を考えているのですが、起動しているかどうか
を判別する方法はありますか?
0331330
2005/11/20(日) 02:18:55自分で起動する事が決まっています。そのため
ハンドル等は保持しておく事は可能なので
そのハンドルを使って判別するAPIとかがあれば
良いのですが。
0332デフォルトの名無しさん
2005/11/20(日) 02:24:390333330
2005/11/20(日) 02:28:470334デフォルトの名無しさん
2005/11/20(日) 11:13:240335デフォルトの名無しさん
2005/11/20(日) 12:06:240336デフォルトの名無しさん
2005/11/20(日) 12:50:570337デフォルトの名無しさん
2005/11/20(日) 13:11:380338デフォルトの名無しさん
2005/11/20(日) 14:33:09隅に「手塚プロダクション承認済み(本当)」と書いてあるのを見たことがある。
0339デフォルトの名無しさん
2005/11/20(日) 16:38:29GlobalAddAtom
GlobalGetAtomName
GlobalDeleteAtom
GlobalFindAtom
で、アトムテーブルを使っても逝ける。
0340デフォルトの名無しさん
2005/11/20(日) 16:58:56その間違いをやってた本もあったなあ。
http://www.expertmg.co.jp/html/cti/vctips/process.htm#%91%BD%8Fd%8BN%93%AE%82%F0%96h%8E~%82%B7%82%E9
↑は修正済み
0341デフォルトの名無しさん
2005/11/20(日) 17:52:43ちらつきが生じます。どこを修正すればよいか検討がつきませんので、
なにかアドバイスなどよろしくお願いします
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1122.c
0342デフォルトの名無しさん
2005/11/20(日) 17:54:21信長○野望オンラインがそれやってる。
0343デフォルトの名無しさん
2005/11/20(日) 18:00:28適当に言ってみるけど
wndclass.hbrBackground = GetStockObject( WHITE_BRUSH );
これをNULLにしてみては?
0344デフォルトの名無しさん
2005/11/20(日) 18:08:48そのリンク先の多重起動防止の所のコードでReleaseMutex()って必要なのかなぁ
0345デフォルトの名無しさん
2005/11/20(日) 20:40:24ウインドウを表示するプログラムをコンパイルしたのですが、
外部シンボル ’_main’が未解決 (C:\borland\bcc55\lib\cox32.objが参照)
というエラーが表示されます。
どういう意味ですか?
0346デフォルトの名無しさん
2005/11/20(日) 20:51:310347345
2005/11/20(日) 21:06:24WinMain()が最初に書いていますが、別にmain関数がいるんですか?
0348デフォルトの名無しさん
2005/11/20(日) 21:08:320349デフォルトの名無しさん
2005/11/20(日) 21:19:00そこから動くまで教えてやれるほど気が長くないよな。
普通の人は。
0350デフォルトの名無しさん
2005/11/20(日) 21:21:59bccのFAQ。ヘルプのコンパイラオプションのとこ嫁
0351デフォルトの名無しさん
2005/11/20(日) 21:25:47ttp://www.imgup.org/file/iup121219.png
0352デフォルトの名無しさん
2005/11/20(日) 21:46:06俺が買ったのはVer.2だったな。
BorlandC++も買ったけど、高校生だったから高かったなぁ。
0353345
2005/11/20(日) 21:49:59どこへ行けばいいのでしょうか?
0355デフォルトの名無しさん
2005/11/20(日) 21:56:17最近はDLできたりする罠
Turbo C++ 1.01
http://bdn.borland.com/article/0,1410,21751,00.html
Turbo Pascal 5.5
http://community.borland.com/article/0,1410,20803,00.html
0356デフォルトの名無しさん
2005/11/20(日) 22:03:03マウスなかったから、左手だけでカーソル動かせるのが好きだった
そういやVCのキーコンフィグを弄らなくなったのはいつからだろう
0357デフォルトの名無しさん
2005/11/20(日) 22:03:51いらないけどこのMutexは本来の目的(待機)にはまったく使ってないから
間違いでもない
0358デフォルトの名無しさん
2005/11/20(日) 22:55:070359デフォルトの名無しさん
2005/11/20(日) 23:15:21昔はそれで良かったからさ。
0360デフォルトの名無しさん
2005/11/21(月) 00:07:55簡単にOSがおかしくなってたな
0361デフォルトの名無しさん
2005/11/21(月) 00:29:04どうやってるんですかね?
最初からずっと非表示なら、HIDEのメインウインドウを用意すれば
できましたけぢ。
0362デフォルトの名無しさん
2005/11/21(月) 01:27:330363デフォルトの名無しさん
2005/11/21(月) 02:35:390364デフォルトの名無しさん
2005/11/21(月) 06:26:49WM_EX_APPWINDOW拡張スタイルをつけたりはずしたりすればいいんでない?
0365デフォルトの名無しさん
2005/11/21(月) 06:48:14The Shell creates a button on the taskbar whenever an application creates a window that isn't owned.
To ensure that the window button is placed on the taskbar,
create an unowned window with the WS_EX_APPWINDOW extended style.
To prevent the window button from being placed on the taskbar,
create the unowned window with the WS_EX_TOOLWINDOW extended style.
As an alternative, you can create a hidden window and make this hidden window the owner of your visible window.
The Shell will remove a window's button from the taskbar only if the window's style supports visible taskbar buttons.
If you want to dynamically change a window's style to one that doesn't support visible taskbar buttons,
you must hide the window first (by calling ShowWindow with SW_HIDE), change the window style, and then show the window.
0366デフォルトの名無しさん
2005/11/21(月) 08:42:29GetCursorPosで移動は出来たのですが、
クリックの方法が判りません。
教えてください。宜しくお願いします。
0367デフォルトの名無しさん
2005/11/21(月) 08:54:040368デフォルトの名無しさん
2005/11/21(月) 08:56:050369デフォルトの名無しさん
2005/11/21(月) 08:56:50気にしたら負け
0370デフォルトの名無しさん
2005/11/21(月) 08:56:550371デフォルトの名無しさん
2005/11/21(月) 10:19:010372デフォルトの名無しさん
2005/11/21(月) 10:40:050373デフォルトの名無しさん
2005/11/21(月) 17:17:47こういうことですか?
http://www.runan.net/program/tips/sdk_10_ITaskbarList.shtml
0374デフォルトの名無しさん
2005/11/21(月) 20:22:30timeBeginPeriodとtimeEndPeriodを
前後に付けるルールがあるので、やり方が分かりません。
0375デフォルトの名無しさん
2005/11/22(火) 00:22:49小汚くなってしまうのでしょうか?www
0376デフォルトの名無しさん
2005/11/22(火) 00:29:130377デフォルトの名無しさん
2005/11/22(火) 01:01:150378デフォルトの名無しさん
2005/11/22(火) 01:17:230379デフォルトの名無しさん
2005/11/22(火) 01:35:21本当に目的のウィンドウかを区別する方法について。
SendMessageTimeoutを使って、「山」といえば「川」を返す、みたいな特定の「合言葉」を
何個かやりとりして、相手を識別する方法はどうかと思うのですが...問題ありますか?
0380デフォルトの名無しさん
2005/11/22(火) 01:38:57たまたまその投げた先のウインドウが実装している独自定義のメッセージIDとぶつかってしまった場合
0381379
2005/11/22(火) 01:52:27っていうか、まさにこういうときに↑を使うんですかね。
0382デフォルトの名無しさん
2005/11/22(火) 02:02:41俺様ルールを決めたところで他プロセスは全く従わないと思うが。
0383デフォルトの名無しさん
2005/11/22(火) 03:05:42と言ってみるテスト
0384デフォルトの名無しさん
2005/11/22(火) 03:23:54で、ウィンドウ名、クラス名、メッセージ通信だと偶然被るのが心配、と。
だったら共有メモリ使ってハンドルを受け渡すってのが確実といえば確実。
0385デフォルトの名無しさん
2005/11/22(火) 03:25:07ゴメソ。見なかったことにしてくれ。
0386デフォルトの名無しさん
2005/11/22(火) 11:47:49'\n'だけの改行の後に日本語の文字列を出力すると、アウトプットウィンドウの
表示がおかしくなるのな。
例えば ...
TRACE("\n現在時刻 =%s",COleDateTime::GetCurrentTime().Format(_T("%Y/%m/%d %H:%M:%S")));
や
TRACE(_T("\n現在時刻 =%s"),COleDateTime::GetCurrentTime().Format(_T("%Y/%m/%d %H:%M:%S")));
の実行結果は...
現サ在時刻 =2005/11/22 12/34/56
と「現」と「在」の間に半角の「サ」が表示される。
TRACE("\r\n現在時刻 =%s",COleDateTime::GetCurrentTime().Format(_T("%Y/%m/%d %H:%M:%S")));
や
TRACE(_T("\r\n現在時刻 =%s"),COleDateTime::GetCurrentTime().Format(_T("%Y/%m/%d %H:%M:%S")));
と、「\n」→「\r\n」とすれば問題ない。
コンソールのバグが原因なのか?これって、ガイシュツ?
環境は、VC++6.0SP6で、Win2000,Win98とも同じ結果になった。
0387デフォルトの名無しさん
2005/11/22(火) 12:03:220388デフォルトの名無しさん
2005/11/22(火) 12:22:31OutputDebugString("\r\n現在時刻");
OutputDebugString("\r\r\n現在時刻");
0389デフォルトの名無しさん
2005/11/22(火) 15:46:09として作成したペンを
hPen = CreatePen(PS_SOLID, 1, RGB(128, 128, 128);
と後から変更しようと思ってるのですが2回目のCreatePen()の前にDeleteObject()は必要ですか?
それと二種類のペンが必要な場合は、↑の様にせずに
最初からペンを二つ用意しておいた方が無難ですか?
0390デフォルトの名無しさん
2005/11/22(火) 15:52:40それは、解放せずに同じ変数に上書きしてるだけ
リークしたくなければ、DeleteObjectするべき
0391デフォルトの名無しさん
2005/11/22(火) 16:02:200392デフォルトの名無しさん
2005/11/22(火) 16:11:43迅速なレスありがとうございます。
最初から二種類必要なのはわかってるのですが
同時に使用することはまず無いので
一つの変数を使いまわしで良いかと思いました。
使いまわす場合はDeleteObjectが必要で
使いまわすよりは別々に用意しておいた方が良いのですね。
0393デフォルトの名無しさん
2005/11/22(火) 16:16:070394デフォルトの名無しさん
2005/11/22(火) 16:33:420395デフォルトの名無しさん
2005/11/22(火) 17:17:55使い回さなくても、DeleteObjectはしろ。
0396デフォルトの名無しさん
2005/11/22(火) 19:16:390397デフォルトの名無しさん
2005/11/22(火) 20:02:38ああ、それはちゃんと心得ています。
お気遣いありがとうございます。
0398デフォルトの名無しさん
2005/11/22(火) 23:42:20ret = WaitForSingleObject(evnt, 0);
の戻り値について質問なんですが、
evntがシグナルな状態ならWAIT_OBJECT_0
evntが非シグナルな状態ならWAIT_TIMEOUT
が戻ってくると考えて正しいでしょうか?
0399デフォルトの名無しさん
2005/11/22(火) 23:57:030400デフォルトの名無しさん
2005/11/23(水) 00:47:40ドキュメントが本当に正しいかどうか自力で検証できるように、
関数の動作テスト用の小規模なプロジェクトを用意しておくべきだよ。
のちのちまで、その小テスト環境が威力を発揮することになる。
小テストをはじめるに当たって、何が影響を与えていて何が影響を与えていないのか、
最初に考えなければならないが、これが問題の切り分けをする良い機会になる。
0401デフォルトの名無しさん
2005/11/23(水) 01:39:190402デフォルトの名無しさん
2005/11/23(水) 01:40:340403デフォルトの名無しさん
2005/11/23(水) 01:56:13Unix系のUnicode関連処理のお粗末ぶりを確認するためにも必要だ。
また、ドキュメントの微妙なニュアンスが正確にプログラマに伝わらないことは多い。
例えば、構造体メンバに渡した文字列のアドレスは、すぐに破棄してよいのか、維持する必要があるのかなど。
0404デフォルトの名無しさん
2005/11/23(水) 02:22:25SetWindowsHookExは コンソールアプリからだと使えないのかな
誰か知っている人が居たら教えて
0405デフォルトの名無しさん
2005/11/23(水) 02:27:13使えない。
コンソールアプリはメッセージキューが無い。
(無いっていっちゃうと厳密じゃないかもしんないけど。)
0406デフォルトの名無しさん
2005/11/23(水) 02:36:16あー、そうなんだ。
ということは、例え、全プロセスにAPIフックしていたとしても
コンソールアプリからAPIを叩かれると、ダメなんだ。
0407デフォルトの名無しさん
2005/11/23(水) 02:37:55レジストリでやってもいいんじゃないか?
0408デフォルトの名無しさん
2005/11/23(水) 02:41:51でも、あれってやっぱりコンソールには通用しないんじゃなかったっけ。
http://www.codeproject.com/system/hooksys.asp
ここにそんな記述が。
0409デフォルトの名無しさん
2005/11/23(水) 02:50:06タイマーでチェックしまくるのとフックするのって、どちらがオススメでしょうか?
0410デフォルトの名無しさん
2005/11/23(水) 02:51:27タイマーなんざ使い物にならない
0411デフォルトの名無しさん
2005/11/23(水) 02:59:29レスありがとうございます。フックで行く事にします。
#レスを見た後検証し、納得しました
0412デフォルトの名無しさん
2005/11/23(水) 03:37:100413デフォルトの名無しさん
2005/11/23(水) 04:50:240414デフォルトの名無しさん
2005/11/23(水) 08:40:01その通り。そのレジストリもUSER32.DLLが見てDLLをロードしている
(本来はプロセス間で共通のウィンドウクラスを登録するためのものだから)
よってUSER32.DLLを使わないプロセスに対しては無力。
コンソールアプリのAPIフックにはCreateRemoteThreadかDebugActiveProcessが必要。
0415デフォルトの名無しさん
2005/11/23(水) 09:09:13ある関数のメモリ使用量をモニタリングする関数or方法があれば教えてください。
最終的にやりたい事は、その関数内における最大メモリ使用量の取得です。
0416デフォルトの名無しさん
2005/11/23(水) 09:53:560417デフォルトの名無しさん
2005/11/23(水) 10:01:13・メモリとはヒープなのか、スタックなのか。
・ヒープの場合、その関数でallocして、外に所有権を移した場合、どうカウントするのか。
・その関数で作成したインスタンスがdelayed-initializeされた際のメモリはどの関数につけるのか。
・OSからのメモリ取得、言語内のメモリ管理どちらを対象にするのか。
・再帰した場合、どのようにカウントするのか。
・例外が発生した場合、どのようにカウントするのか。
・その関数が、他の関数を呼んだ場合、その呼ばれた関数の分もカウントするのか。
・その呼ばれた関数が、SendMessageだったりした場合、
他のスレッドにメッセージを送ってその処理終了を待つことがあるが、その場合他スレッドの分はどうカウントするのか。
・その関数が内部で他のスレッドを起動した場合、そのスレッドの分はどうカウントするのか。
とりあえず思いついた謎。
スタックならプロファイラで分かったような気がする。
0418デフォルトの名無しさん
2005/11/23(水) 10:11:570419デフォルトの名無しさん
2005/11/23(水) 11:32:04それは最終的にやりたい事じゃないだろ。
その値を使ってする事が最終的にやりたい事だろ。
どのみち関数毎は自分で計算するしかないな。
一応、パフォーマンスカウンタを調べれば出来ることと出来ない事が判るだろう。
0420デフォルトの名無しさん
2005/11/23(水) 12:37:36できますた。
色々なテクニックを組み合わせないと、実現できないのね。
感謝です。
0421デフォルトの名無しさん
2005/11/23(水) 12:39:390422デフォルトの名無しさん
2005/11/23(水) 14:15:31どうすれば良いの?
0423デフォルトの名無しさん
2005/11/23(水) 14:21:14つ[popen()]
APIもあるだろうけど取り敢えずこれ。
0424デフォルトの名無しさん
2005/11/23(水) 14:35:01呼び出し元がconsoleアプリじゃないのでpopenじゃ無理っぽいですがpopenのヘルプ内の
リンクにCreatePipeのサンプルがありました。これだと出来そうです。
ありがとうございました。
0425デフォルトの名無しさん
2005/11/23(水) 15:27:20SetCapture & ReleaseCapture ?
0426デフォルトの名無しさん
2005/11/23(水) 15:31:50ありがとう
0427デフォルトの名無しさん
2005/11/23(水) 15:37:23さっそくですがツールバーやメニューバーに視覚スタイルを適用する方法を教えてください(^o^)
他の掲示板にいったけど完全にスルーされたので戻ってきました^^
http://up.mugitya.com/img/Lv.1_up12444.jpg
メニューバー・ツールバーを作ってみたら、上の奴のようになってしまうのです。
下や真ん中の奴のように視覚スタイルを適用したいのですがどうすればよいのでしょうか?
DrawThemeBackgroundでできると思ったのですが、それらしい定数が見つかりません(分かりません)
何卒お願いいたします(^^)
0428デフォルトの名無しさん
2005/11/23(水) 15:46:47別に呼び出し元がconsoleアプリじゃなくてもpopen()できると思うのだが。
0429デフォルトの名無しさん
2005/11/23(水) 16:30:19何か便利なAPIってありますか?
今の所
ファイルを1行ずつ読み込みながら
条件によってそのままか書き換えして、別ファイルに書き出すってベタな方法考えてる。
0430デフォルトの名無しさん
2005/11/23(水) 16:33:380431デフォルトの名無しさん
2005/11/23(水) 16:45:37{;;;;;;ゝ T辷iフ i f'辷jァ !i;;;;; APIならやってくれる……
ヾ;;;ハ ノ .::!lリ;;r゙ そんなふうに考えていた時期が
`Z;i 〈.,_..,. ノ;;;;;;;;> 俺にもありました
,;ぇハ、 、_,.ー-、_',. ,f゙: Y;;f
~''戈ヽ `二´ r'´:::. `!
ありがとうございました
0432デフォルトの名無しさん
2005/11/23(水) 19:12:26http://homepage2.nifty.com/winfaq/wxp/hints.html#1347
0433デフォルトの名無しさん
2005/11/23(水) 19:43:41それでは無理
0434デフォルトの名無しさん
2005/11/23(水) 20:05:16二度と来るな
0435デフォルトの名無しさん
2005/11/23(水) 20:46:12そんな事いわないで教えてくださいよ
教えてくれれば二度と着ませんよ
0436デフォルトの名無しさん
2005/11/23(水) 20:48:130437デフォルトの名無しさん
2005/11/23(水) 20:49:31「やり方」が知りたいんだよね?そこまでに簡単に出来る事じゃない気がする。
ここで聞くよりも、自分が使ってる開発環境のスレ行った方が早いよ。
0438デフォルトの名無しさん
2005/11/23(水) 20:51:05「独自に GUI 部品を作成している場合」とやらに該当するのか?
0439デフォルトの名無しさん
2005/11/23(水) 20:59:33視覚スタイルとはなんぞや?
0440デフォルトの名無しさん
2005/11/23(水) 21:04:44free(439);
0441デフォルトの名無しさん
2005/11/23(水) 21:07:37MFCのコードを読めばどっかにあるよ
0442デフォルトの名無しさん
2005/11/23(水) 21:40:41うわっ
気持ち悪い
この人
>>437
俺の環境=bcc32+sdk
>>438
普通にツールバーを作成しただけで、独自に作ったわけじゃないよ
>>439
Visual Styleともいう
よく見てみてください。
色が違います。しかも真ん中や下の奴はグラフィカルです。
>>441
MFCとか知りません
0443デフォルトの名無しさん
2005/11/23(水) 21:44:210444デフォルトの名無しさん
2005/11/23(水) 21:45:330445デフォルトの名無しさん
2005/11/23(水) 21:49:050446デフォルトの名無しさん
2005/11/23(水) 21:51:53独自のアイコンを作りたいだけみたいだな。
0447デフォルトの名無しさん
2005/11/23(水) 21:58:19http://www.microsoft.com/japan/msdn/windows/windowsxp/winxpicons.asp
0448デフォルトの名無しさん
2005/11/23(水) 22:03:40こいつ頭大丈夫か
>>447
アイコンじゃないんだよ
http://up.mugitya.com/img/Lv.1_up12444.jpg
ちゃんと↑これみろよ
0449デフォルトの名無しさん
2005/11/23(水) 22:04:550450デフォルトの名無しさん
2005/11/23(水) 22:05:300451デフォルトの名無しさん
2005/11/23(水) 22:06:38もう解決したんでいいですよ
ちなみにアイコンじゃありません
0452デフォルトの名無しさん
2005/11/23(水) 22:09:32ツールバーの変なの使ってるってぐらいしかわからないんだけど?
猫でもわかる〜のところにのってなかったっけ?
俺もOSはXP使ってるけどXPスタイルにしてないせいか、
IEのツールバーがグラフィカルかどうかはさっぱりわからん。
つーか、グラフィカルってアイコンのこといってるわけじゃないんだよな?
ツールバーが白っぽいってことをいってるんだよな?
#ただ、へなへなアイコンに移動されると使いにくいだけだぞ。
#ドッキングツールバーと同じでやる意味あるのか?
0453デフォルトの名無しさん
2005/11/23(水) 22:11:07432を試してどう駄目だったのか?
0454デフォルトの名無しさん
2005/11/23(水) 22:14:03普通にmanifestファイル作って置いとくだけじゃ、ボタンとかにしか反映されんよ
0455デフォルトの名無しさん
2005/11/23(水) 22:15:18ちゃんと Luna スタイルって名前でのってんじゃん。
0456デフォルトの名無しさん
2005/11/23(水) 22:16:09http://www.microsoft.com/japan/msdn/windows/windowsxp/xptheming.asp
これじゃん?
0457デフォルトの名無しさん
2005/11/23(水) 22:25:070458デフォルトの名無しさん
2005/11/23(水) 22:28:06こんなんだし↓w
タイトル表示やリンク コントロールなどの ComCtl32.dll バージョン 6 の機能を使用する場合、
これらのコントロールがユーザーのコンピュータで使用できない事態に対処する必要があります。
ComCtl32.dll バージョン 6 は、再配布することができません。
0459デフォルトの名無しさん
2005/11/23(水) 22:40:380460デフォルトの名無しさん
2005/11/23(水) 23:12:33頭おかしいのはお前だ
0461デフォルトの名無しさん
2005/11/23(水) 23:24:13あれが生きていると画面をクリックすると止まってしまうんですね。
console周りのAPIを調べたけどそれらしいのは見つからなかった。orz
0462デフォルトの名無しさん
2005/11/23(水) 23:27:27コマンドプロンプトのシステムメニューからプロパティを選んでそれらしいオプションをいじる
0463デフォルトの名無しさん
2005/11/23(水) 23:27:56>ツールバーが白っぽいってことをいってるんだよな?
そうそう
>>453
ツールバーは無理なんです
>>454
うんうん
>>455-456
違うよばーか
>>460
うわぁ
きもい
0464デフォルトの名無しさん
2005/11/23(水) 23:28:330465デフォルトの名無しさん
2005/11/23(水) 23:29:57ま、たくさん釣れたから満足しただろうが。
0466デフォルトの名無しさん
2005/11/23(水) 23:43:08どうみてもLunaスタイルじゃねーの?
0467デフォルトの名無しさん
2005/11/23(水) 23:52:04だからやっぱXPのLunaスタイルのなんかに反応して処理が変わってんじゃねーの?
0468デフォルトの名無しさん
2005/11/23(水) 23:54:050469デフォルトの名無しさん
2005/11/23(水) 23:55:14それをプログラムからやりたいんですが・・・
0470デフォルトの名無しさん
2005/11/24(木) 00:08:50考えています。
・モードレスで起動
・別スレッドでダイアログを表示させる
といった方法があるのかな、と思いましたが
コモンダイアログをモードレスで表示させることは可能なのでしょうか。
(なるべくならスレッドは作成したくないので…)
0471デフォルトの名無しさん
2005/11/24(木) 00:10:16そ、そうなんですか。。
VC2003のランタイム ライブラリ リファレンスにはWindowsアプリから使うとハングするとか書かれていたので。
0472デフォルトの名無しさん
2005/11/24(木) 00:43:42Visual styleだよ
ばーか
>>467
ばーか
0473デフォルトの名無しさん
2005/11/24(木) 00:48:07不可視ウィンドウをメインウィンドウとして作成し、かつてのメインウィンドウの親にする。
その後、コモンダイアログの親を不可視ウィンドウにする。
かつてのメインウィンドウの作成方法を変更する必要があるけど、
不可視ウィンドウをメインウィンドウにする手法は一般的だよ。
タスクバーに表示される文字列と可視ウィンドウの文字列を違うものにしたい場合などにも、役に立つ。
0474デフォルトの名無しさん
2005/11/24(木) 01:01:09以前てめぇにゃ絶対もう教えないと言った者だ。
また暴れてるようだな。
めんどくせぇけどアク禁依頼出しとくから。有難く思え。
0475デフォルトの名無しさん
2005/11/24(木) 01:04:130476デフォルトの名無しさん
2005/11/24(木) 01:08:08いや、だから、同じモンだろw
0477デフォルトの名無しさん
2005/11/24(木) 01:11:27これが類は友を呼ぶって奴なの?
0478デフォルトの名無しさん
2005/11/24(木) 01:13:39オリジナリティ0www
0479デフォルトの名無しさん
2005/11/24(木) 07:03:28親じゃなくてオーナー
0480デフォルトの名無しさん
2005/11/24(木) 10:46:170481デフォルトの名無しさん
2005/11/24(木) 10:50:390482デフォルトの名無しさん
2005/11/24(木) 10:51:30これです。スペルミスでした
0483デフォルトの名無しさん
2005/11/24(木) 10:51:300484デフォルトの名無しさん
2005/11/24(木) 10:53:340485デフォルトの名無しさん
2005/11/24(木) 10:58:08win32APIのドキュメントはMSDNではなく、こっちなんですかね?
0486デフォルトの名無しさん
2005/11/24(木) 10:58:550487デフォルトの名無しさん
2005/11/24(木) 11:04:130488デフォルトの名無しさん
2005/11/24(木) 11:16:260489デフォルトの名無しさん
2005/11/24(木) 11:37:52Lunaは、Visual Styleで使える1デザイン。
タイトルバーが青くて、タブにオレンジの帯がついて…というのをLunaと言う。
(シルバーバージョンとかもあるが)
当然Visual Styleでは他のデザインも使用できる。
0490デフォルトの名無しさん
2005/11/24(木) 12:00:450491デフォルトの名無しさん
2005/11/24(木) 12:37:11C:\Program Files\Microsoft DirectX 9.0 SDK (October 2005)\Includeの中に
dshow.hがありませんでした。Graph Editなども付属していませんでした。他にインストールしなければいけないのでしょうか?
ご存知の方がいらっしゃいましたらご教授下さい。
0492デフォルトの名無しさん
2005/11/24(木) 12:37:590493デフォルトの名無しさん
2005/11/24(木) 12:45:36Extrasに入ってる
0494デフォルトの名無しさん
2005/11/24(木) 12:51:13見つかりませんでした。
0495デフォルトの名無しさん
2005/11/24(木) 13:02:250496495
2005/11/24(木) 13:03:010497495
2005/11/24(木) 13:06:360498491
2005/11/24(木) 13:23:35Platform SDKにありました。有難うございます。
bcc -I
で無事動きました。有難うございます。。
0499495
2005/11/24(木) 14:00:30( ゚ Д゚)
( つ O ガシャ
と___)_) __
(__()、;.o:。
゚*・:.。
0500デフォルトの名無しさん
2005/11/24(木) 19:43:460501デフォルトの名無しさん
2005/11/25(金) 00:35:310502デフォルトの名無しさん
2005/11/25(金) 00:58:18そのプロセスを同アプリから必要なくなった時に強制終了させる事はできますか?
LinuxだとプロセスIDを検索してkillするような処理が可能ですが
それと同じような事をしたいのですが。
0503デフォルトの名無しさん
2005/11/25(金) 01:11:13強制終了させたいというなら、TerminateProcess()
その起動するプロセスも自分のものなら、
何らかのプロセス間通信で終了させたほうがいいけどね、
0504デフォルトの名無しさん
2005/11/25(金) 01:23:45同じような事はできます。
0505デフォルトの名無しさん
2005/11/25(金) 01:35:29自分で起動したプロセスなら検索しなくてもハンドルわかるだろ
0506デフォルトの名無しさん
2005/11/25(金) 01:55:380507デフォルトの名無しさん
2005/11/25(金) 01:57:550508デフォルトの名無しさん
2005/11/25(金) 02:12:57もしWM_CLOSEで終了してくれるプログラムなら
WM_CLOSEの方がいいかもしれん。
強制終了じゃなくて、自主的に終了してくれるようにお願いする、
みたいな感じだけど。
0509デフォルトの名無しさん
2005/11/25(金) 02:18:36押して強制終了させんのはやっぱTerminateProcessしてんのかな
0510デフォルトの名無しさん
2005/11/25(金) 02:23:10MSしか知らない「裏技」だったしてなwww
0511デフォルトの名無しさん
2005/11/25(金) 02:27:02APIにフックかけて確認してみるとか
0512デフォルトの名無しさん
2005/11/25(金) 03:25:350513デフォルトの名無しさん
2005/11/25(金) 05:19:330514デフォルトの名無しさん
2005/11/25(金) 06:59:40全部同じに見えるんだが。
0515デフォルトの名無しさん
2005/11/25(金) 07:24:37>>513
通報しました
0516デフォルトの名無しさん
2005/11/25(金) 07:30:06お断りだゴキブリ野郎(^o^)
0517デフォルトの名無しさん
2005/11/25(金) 08:52:170518デフォルトの名無しさん
2005/11/25(金) 11:16:08さっさと首吊って死ねやうんこちゃん(^o^)
0519デフォルトの名無しさん
2005/11/25(金) 11:16:460520デフォルトの名無しさん
2005/11/25(金) 12:24:53bcc32でコンパイルするとエラーが出ます。他にも色々使えない関数が出てきました。
---------------------------------------------
#include <windows.h>
#include <dshow.h>
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR lpCmdLine,int nCmdShow){
TCHAR ore[64];
lstrcpy(ore,TEXT("こんにちは"));
return 0;
}
---------------------------------------------
bcc32 -I"C:\Borland\Bcc55\Include" -L"C:\Borland\Bcc55\Lib"
-I"C:\Program Files\Microsoft DirectX 9.0 SDK (October 2005)\Include" -L"C:\Program Files\Microsoft DirectX 9.0 SDK (October 2005)\Lib" -I"C:\Program Files\Microsoft Platform SDK\Include"
-L"C:\Program Files\Microsoft Platform SDK\Lib" -W test.cpp
---------------------------------------------
エラー E2451 test.cpp 7: 未定義のシンボル lstrcpy_instead_use_StringCbCopy_or_St
ringCchCopy(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )
もし解決方をご存知の方がいらっしゃいましたらご教授なにとぞお願い致します。
0521デフォルトの名無しさん
2005/11/25(金) 12:29:27書いてある通りにすればいいんじゃない?
つまり、lstrcpy()を使うのをやめてかわりにStringCbCopy()か
StringCchCopy()を使う。
0522デフォルトの名無しさん
2005/11/25(金) 12:32:04>-L"C:\Program Files\Microsoft Platform SDK\Lib"
_, ._
( ゚ Д゚) ガシャ
( つ O. __
と_)_) (__()、;.o:。
゚*・:.。
0523520
2005/11/25(金) 12:41:49有難うございます。すぐ出来ました!
http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/resources/strings/stringreference/stringfunctions/stringcchcopy.asp?
本当に助かりました。
0525デフォルトの名無しさん
2005/11/25(金) 16:28:100526デフォルトの名無しさん
2005/11/25(金) 16:29:02それくらい自分で判定しな
0527デフォルトの名無しさん
2005/11/25(金) 16:53:38isdigit()の何が不満だ?
0528デフォルトの名無しさん
2005/11/25(金) 18:00:25ただし、そのウィンドウが既になくなっている場合は送れなくても問題はない。
という状況で、以下のようにしました。
if(IsWindow(hWnd)) PostMessage(hWnd, WM_MESSAGE, 0, 0);
この場合IsWindowで分岐させなくても問題なく動くのですが
パフォーマンス・安定性・SDKの仕様などの観点からはどちらのほうがよいのでしょうか?
また、同様にSendMessageの場合はどうでしょうか?
0529デフォルトの名無しさん
2005/11/25(金) 18:42:20まだ勉強中の俺だから間違ってるかも知れないが
MSDN見た限りだと、PostMessage/SendMessage共に消えたウインドウのハンドルを
渡したときにどうなるかって事については明記されてなかった
使わない砲がいいんじゃまいか?
0530デフォルトの名無しさん
2005/11/25(金) 18:57:380531デフォルトの名無しさん
2005/11/25(金) 19:09:150532528
2005/11/25(金) 19:14:35>同じウィンドウハンドルが全然違うウィンドウに使いまわされると
その可能性もありますね;
プロセスIDなどを取っておいて毎回照合すべきでしょうか。
>>531
頭が痛くなってきましたorz
0533デフォルトの名無しさん
2005/11/25(金) 19:44:03SendMessage()/PostMessage()に限らず、API呼び出しはAtomicな処理では
ないので、>>529-531が言ってるようなことは気にする必要はない。
SendMessage()を呼び出した時にはウィンドウが存在しても、システムがAPI
処理中に、ウィンドウが消えてしまう場合もあれば、PostMessage()が正常
終了しても、ポストしたメッセージより先に相手のメッセージキューに
WM_CLOSEが溜まっている場合もありうる。
確実にメッセージを届けたかったら、ミューテックスとか、共有メモリなど
を使ってプロセス/スレッド間で同期をとる必要がある。
0534デフォルトの名無しさん
2005/11/25(金) 19:49:25目的のウィンドウが、自分が作ったものじゃない時はヌルーですか?
0535デフォルトの名無しさん
2005/11/25(金) 20:21:12といったような操作を行うにはどうすればいいのでしょう?
Googleで検索するにも取っ掛かりが掴めなくて困っています。
メッセージのフックとは異なるでしょうし。
0536デフォルトの名無しさん
2005/11/25(金) 20:35:00上で出てるSendMessageとかPostMessageでいけるんじゃない?
0537528
2005/11/25(金) 20:41:51解説ありがとうございました。
ウィンドウがなければメッセージは届かなくても良いので、いきなりSendMessageを呼んでいいのですね。
ただ>>530は低い確率かもしれませんが、起こりえるのではないかと思うのですがどうなのでしょう?
0538デフォルトの名無しさん
2005/11/25(金) 20:49:48ウィンドウタイトルとかわかってるならFindWindowしる
0539デフォルトの名無しさん
2005/11/25(金) 21:05:32ありがとうございます。よく考えればそうですね。
>>538
ありがとうございます。
0540デフォルトの名無しさん
2005/11/25(金) 22:31:31WM_CLOSEを送ってシカトされたらTerminateProcess()してるんだとおも。
0541WM_CLOSE
2005/11/25(金) 23:02:140542デフォルトの名無しさん
2005/11/26(土) 00:14:24自分(のプロセス内)で作っても、別スレッドで作成されたウィンドウの場合、
メッセージループが独立しているので、プライマリスレッドがウィンドウの
消滅を知らずに、SendMessage()/PostMessage()する場合もある。
0543デフォルトの名無しさん
2005/11/26(土) 00:37:05何か特別な理由があるんでしょうか?
こんなもん1つあれば十分な気がするのですが・・・
WINAPIとかCALLBACKとかいちいち書かなくていいし。
教えてエロイ人。
0544デフォルトの名無しさん
2005/11/26(土) 00:39:00死ねやウンコ野郎
0545デフォルトの名無しさん
2005/11/26(土) 00:40:13他言語と呼び出し規約を合わせる気は無しですか
0547デフォルトの名無しさん
2005/11/26(土) 07:54:48そういう意味じゃないし
0548デフォルトの名無しさん
2005/11/26(土) 08:31:42「そういう理由」じゃないし
0549デフォルトの名無しさん
2005/11/26(土) 12:28:140550デフォルトの名無しさん
2005/11/26(土) 13:15:17stdcallは呼び出された側が引数の後片付けをする。
(ちなみにVCではfastcallとthiscallもある)
x86ではユーザーモードからカーネルモードへ行く処理の途中で引数はカーネルのメモリへコピーされ,
元のは片付けられてしまうのでstdcall(/pascal)形式にするしかない,という話を聞いたことがある。
なので他の関数も全てstdcall(/pascal)に統一したのではないだろうかと俺は思っている。
0551デフォルトの名無しさん
2005/11/26(土) 18:58:17なんかあったような気がするんだけど見つからない。
XPにSP2入れたら起動直後にSUBSTしたドライブが、
マイコンピュータ上でF5押さないと認識しなくなってしまったのでした。
0552デフォルトの名無しさん
2005/11/26(土) 19:04:560553470
2005/11/26(土) 21:31:04ありがとうございます。message-only windowというやつですね。
もうちょっと調べてみます。
(web上にはMFCのサンプルコードは沢山あるようですが…)
0554デフォルトの名無しさん
2005/11/26(土) 21:40:08是非、調べるといいと思う。
Windowsでソケットを扱う場合にも重宝するよ。
メッセージループを使わずにselect()で実装して痛い目に遭う人は多い。
特にUnix出身者。ほぼ間違いなく嵌る罠。
0555デフォルトの名無しさん
2005/11/26(土) 22:20:11もちっと詳しく。
ポインタだけでもお願いします。
0556デフォルトの名無しさん
2005/11/26(土) 22:30:01WSAAsyncSelect()
目に見えるウィンドウだけがウィンドウじゃない。
むしろウィンドウの本質はメッセージ処理の受け皿であること。
コンソールアプリでもメッセージ処理用のウィンドウは作成できる。
というか、必要になる場面が結構多い。
0557デフォルトの名無しさん
2005/11/26(土) 22:30:35知りたいことを書きなさい。
0558デフォルトの名無しさん
2005/11/26(土) 22:43:56便乗質問ですが、コンソールアプリでそうしたウィンドウが必要になる場面って
どういうものがあるんでしょうか?
0559デフォルトの名無しさん
2005/11/26(土) 22:46:15コンソールアプリとは言わんかも試練が
0560デフォルトの名無しさん
2005/11/26(土) 23:02:21デフォルトではチェックされていない。
この項目が必要なのは、サービスプロセスがメッセージ処理を行っているからだ。
通常、メッセージは、シグナルなどのHANDLEオブジェクトと違いアクセス権限を設定できない。
そのため、ユーザのメッセージ送信から完全に遮断された領域でサービスプロセスが動いている。
0561560
2005/11/26(土) 23:05:57×:この項目が必要なのは、サービスプロセスがメッセージ処理を行っているからだ。
○:この項目が必要なのは、サービスプロセスのメッセージ処理を想定しているからだ。
0562デフォルトの名無しさん
2005/11/26(土) 23:10:180563デフォルトの名無しさん
2005/11/26(土) 23:52:03そのアプリからスレッド一個作って、そこでソケット開いて送受信させれば
いいだけじゃないの?
0564デフォルトの名無しさん
2005/11/26(土) 23:52:180565デフォルトの名無しさん
2005/11/26(土) 23:53:17少なくとも >>470 はスレッドを使いたくないと言っていた
0566デフォルトの名無しさん
2005/11/27(日) 00:09:56select()で合う痛い目は具体的には?
0567デフォルトの名無しさん
2005/11/27(日) 00:16:14返値ハンドリングがヘタレだとまずいってのは常識として
それ以外に何かあるのか?
0568デフォルトの名無しさん
2005/11/27(日) 00:18:49作成できるソケット数に制限がある。
0569デフォルトの名無しさん
2005/11/27(日) 00:21:520570デフォルトの名無しさん
2005/11/27(日) 00:41:360571デフォルトの名無しさん
2005/11/27(日) 00:49:35だがあちこちに同じ一言レスしてるお前ほどじゃないけどな
0572551
2005/11/27(日) 05:08:32↓これでできました。
PostMessage(HWND_BROADCAST,WM_COMMAND,0x0001A220,0x00000000);
SPIってのはSystemParametersInfo関数ですよね?
でもこれだと最初にパラメータに何が適当か不明でした。
0573デフォルトの名無しさん
2005/11/27(日) 07:12:12CreateProcess()でプログラムが終了するまで次の処理を待つように
しているのですが、
リダイレクトしようとしても、実行されません。
if( !CreateProcess( NULL,
"C:\\Program Files\\Microsoft Baseline Security Analyzer 2\\mbsacli.exe > results.xml",
NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi ) )
どうすれば、リダイレクトされるのでしょうか?
0574デフォルトの名無しさん
2005/11/27(日) 09:05:41そこに記述するのは、第一引数がNULLの時の実行するモジュールと、そのプログラムに与えるコマンドライン引数だし
リダイレクトはシステムの機能だし
0575デフォルトの名無しさん
2005/11/27(日) 09:18:56cmd.exe /C
とか
command.exe /C
使ったら?
つーか最後のπってなんだ…
0576デフォルトの名無しさん
2005/11/27(日) 09:21:48STARTUPINFOのメンバにそれらしきものがある。
0577デフォルトの名無しさん
2005/11/27(日) 09:28:01cmd /c のほうがマシか
0578573
2005/11/27(日) 09:59:41if( !CreateProcess( NULL,
"cmd.exe /C 'C:\\Program Files\\Microsoft Baseline Security Analyzer 2\\mbsacli.exe > results.xml'",
NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi ) )
でも、変化がありませんでした。
0579デフォルトの名無しさん
2005/11/27(日) 10:18:140580デフォルトの名無しさん
2005/11/27(日) 12:00:100581デフォルトの名無しさん
2005/11/27(日) 12:38:48SHChangeNotifyで同じことができるかもしれない。
>>578
手元にWindows環境がなくて試せないのだけど、
cmd.exeってシングルクォーテーションでパス囲めるのだっけ?
あと、CreateProcessは成功してるのかどうか。
失敗してたらGetLastErrorは何返してるか。
成功してるのに動作しないなら、同じコマンドラインでシェルから実行出来るか。
などなど、ある程度自力で切り分けも。
0582デフォルトの名無しさん
2005/11/27(日) 12:56:20alarm()がないのに仕様がalarm()の存在を前提としている。
gethostbyname()の非同期版がBSDソケットにはないとか。
つーかマジでIPv6の名前解決をタイムアウトするにはどうしたらいいのか
教えてくれ。スレッド使うしかないのか?
0583デフォルトの名無しさん
2005/11/27(日) 12:56:50command.com /C
でしょ
0584デフォルトの名無しさん
2005/11/27(日) 13:01:47デフォルトのソケット数の上限が64個なだけで変更は出来るが。。
0585デフォルトの名無しさん
2005/11/27(日) 14:06:49"cmd.exe /C \"C:\\Program Files\\Microsoft Baseline Security Analyzer 2\\mbsacli.exe\" > results.xml"
じゃねーの?試してないが。
0586デフォルトの名無しさん
2005/11/27(日) 14:40:12だろう
0587デフォルトの名無しさん
2005/11/27(日) 15:50:17それだとC:\Programという実行ファイルを実行しようとしてエラーだろ。
0588デフォルトの名無しさん
2005/11/27(日) 16:08:57cmd.exeだから。
もしかして二重に囲む必要があるのか?
"cmd.exe /C \"\\\"C:\\Program Files\\Microsoft Baseline Security Analyzer 2\\mbsacli.exe\\\" > results.xml\""
0589デフォルトの名無しさん
2005/11/27(日) 16:28:35"cmd.exe /C \"\"C:\\Program Files\\Microsoft Baseline Security Analyzer 2\\mbsacli.exe\" > results.xml\""
やるならこうだべ
0590デフォルトの名無しさん
2005/11/27(日) 16:44:26それじゃcmd.exeに渡されるコマンドラインは
""C:\Program Files\Microsoft Baseline Security Analyzer 2\mbsacli.exe" > results.xml"
つまり第一パラメータ=「」(空文字列)、第二パラメータ=「C:\Program」、…最終パラメータ=「 > results.xml」
になっちゃわないか?
内側の""は\でエスケープしなきゃならないはず。つまり
"\"C:\Program Files\Microsoft Baseline Security Analyzer 2\mbsacli.exe\" > results.xml"
これをC言語の文字列リテラルの形式にしたら>>588になる
0591デフォルトの名無しさん
2005/11/27(日) 16:46:350592デフォルトの名無しさん
2005/11/27(日) 16:47:17>>585でいいってオチだったりするのかな?
0593デフォルトの名無しさん
2005/11/27(日) 18:56:300594デフォルトの名無しさん
2005/11/27(日) 18:59:200595デフォルトの名無しさん
2005/11/27(日) 22:47:51LOCK レベルとか解説して遅れ。
0596デフォルトの名無しさん
2005/11/27(日) 22:52:34Win95系?
0597デフォルトの名無しさん
2005/11/27(日) 23:19:300598デフォルトの名無しさん
2005/11/27(日) 23:43:28一応、VWIN32.VDX をオープンして、その後の話。
0599デフォルトの名無しさん
2005/11/28(月) 00:04:15http://web.archive.org/web/20030220194124/tech.millto.net/~morry/vwin32/adio/
0600573
2005/11/28(月) 00:13:28>>585で動きました。
>>586,588では動きませんでした。
>>589で動きました。
C:\の前に\が必要なことを知りませんでした。
皆様、どうもありがとうございました。
0601デフォルトの名無しさん
2005/11/28(月) 02:03:12なんだこの流れ
ワロスwwwww
0602デフォルトの名無しさん
2005/11/28(月) 03:15:55最終的にこうなったのが何ともいえず面白いな
0603デフォルトの名無しさん
2005/11/28(月) 03:53:440604デフォルトの名無しさん
2005/11/28(月) 04:15:49プロシージャが終了する前にDeleteObjectしなきゃだめですか?
static変数に保存して次回使ったりしても問題ありませんか?
0605デフォルトの名無しさん
2005/11/28(月) 04:22:48ハンドルは勝手に捨てられたり入れ替えられたりするので
同一性が保障されるのはプロシジャ内だけだと思った方が良いでしょう
0607デフォルトの名無しさん
2005/11/28(月) 05:19:580608デフォルトの名無しさん
2005/11/28(月) 05:32:390609デフォルトの名無しさん
2005/11/28(月) 06:00:210610デフォルトの名無しさん
2005/11/28(月) 06:05:26誤爆?
0611デフォルトの名無しさん
2005/11/28(月) 06:58:510612デフォルトの名無しさん
2005/11/28(月) 08:59:13DOSモードかWin32なのかはっきりしる!
Win9x/2Kならこんなのとか。(ロックはあまりちゃんとやってないようだが。)
ttp://homepage3.nifty.com/k-takata/mysoft/rwfd.html
0613デフォルトの名無しさん
2005/11/28(月) 14:48:21nSize
パイプのバッファのサイズをバイト単位で指定します。
このサイズは、参考として使われるだけです。
システムはこの値を使って、適切なバッファリングメカニズムを決定します。
このパラメータで 0 を指定すると、既定のバッファサイズが割り当てられます。
なんてマニュアルには書いてあるんだけども、0を指定したときの
規定のバッファサイズってどこ見たら分かる?
#自分で設定しても参考値にしかならんみたいだけど……どんな仕様だよ。
0614デフォルトの名無しさん
2005/11/28(月) 15:45:05問題ない。ファイルハンドルも、GDIオブジェクトのハンドルも基本的には同じ。
MFCのCFontクラスやCBrushクラスは、オブジェクト内の変数としてGDIオブジェ
クトのハンドルを保持している。
自身のプログラムのバグを含めて意図的にDeleteObject()しない限り、少なく
ともシステム側で勝手に捨てられたり入れ替えられたりすることはない。
0615デフォルトの名無しさん
2005/11/28(月) 19:09:24中の人もそれはそれで大変なんだよ。
察してやれ。
0616デフォルトの名無しさん
2005/11/28(月) 20:29:34選択するタブを変えても
表示される行が変わらないようにするには
どうすればいいでしょうか?
0617デフォルトの名無しさん
2005/11/28(月) 21:07:350618616
2005/11/28(月) 21:14:050619デフォルトの名無しさん
2005/11/28(月) 21:14:480620デフォルトの名無しさん
2005/11/28(月) 21:20:100622デフォルトの名無しさん
2005/11/28(月) 22:28:540623デフォルトの名無しさん
2005/11/28(月) 22:51:10私もダメでした
0624デフォルトの名無しさん
2005/11/28(月) 23:41:33使い方が良く判りません。何を指定すべきでしょうか?
0625デフォルトの名無しさん
2005/11/28(月) 23:48:00好きな値
0626デフォルトの名無しさん
2005/11/29(火) 00:04:17なんでまたそんな中途半端な……
0627デフォルトの名無しさん
2005/11/29(火) 13:34:47WIN32の方です。
単純なセクタライトの場合、
(1) ロックレベル=1,アクセス権=0x0002 で論理ドライブをロック
(2) DeviceIOControl の INT26H
(3) アンロック
(4) ドライブのリセット
の手順でよか?
あと、アクセス権のbit1とかbit3、ロックレベルがなんで0とか3とかあんのか、それも和下欄。
0628デフォルトの名無しさん
2005/11/29(火) 14:35:28具体的にはCraftyというチェスのプログラムで、普通に起動すると
[7六歩]
move 3四歩
[2六歩]
move 8四歩
...
という形で対戦することが可能なチェスソフトです(実際はチェスの棋譜を返してきます)。
入力は標準入力、出力は標準出力です。
[括弧]の中にあるのはこちらかの入力で、move xxxがコンピュータからの返答です。
これを外部の、例えばグラフィカルなGUIを提供するプログラムから呼び出して
操作してやりたいのですが、具体的にどのAPIを使って通信すればよいのかわかりません。
どなたかAPIの名前だけでも結構ですので助言いただけませんか?よろしくお願いします。
0629デフォルトの名無しさん
2005/11/29(火) 14:53:56Win32アプリからはドライブのリセットのファンクションコール(int 21h ax=710Dh)は呼び出せないはず。
他のアプリが同時にそのドライブにアクセスしないのならそれで十分だろう。
あるいはロックレベル0の方がいいのかもしれない。
defragのようなことをやるのならロックレベル2,3も必要。詳細は↓
http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/win9x/excluse_2inb.asp
http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/win9x/excluse_406f.asp
ロックレベルが上がるにつれて、他のアプリのディスクへの書き込み、読み出し、
ファイルの作成などが制限されるようになる。
0630デフォルトの名無しさん
2005/11/29(火) 15:42:19パイプ、リダイレクト
0631デフォルトの名無しさん
2005/11/29(火) 15:46:44このやりとりを参考に、自作のファイル管理ソフトに
エクスプローラの「元に戻す」を実装してみたんですが、
Win2kでは正常に動作するものの、XPではまったく無反応です。
XPで上手く動作させる方法、もしくは別な方法があれば教示願います。
0632609
2005/11/29(火) 17:54:53C++ .net を使っているのですが、XmlTextReaderというAPIを
使うにはどうすればいいのでしょうか?
0633デフォルトの名無しさん
2005/11/29(火) 18:10:240634デフォルトの名無しさん
2005/11/29(火) 18:22:43はい終了
0635609
2005/11/29(火) 18:34:33本当にありがとうございました
0636デフォルトの名無しさん
2005/11/29(火) 19:21:54APIはCreateProcess()
Yahooで
STARTF_USESTDHANDLES
で検索すれば、サンプルいっぱい。
0637デフォルトの名無しさん
2005/11/29(火) 21:12:31ファイルのプロパティでWin2000互換モードにする
0638デフォルトの名無しさん
2005/11/29(火) 21:13:400639デフォルトの名無しさん
2005/11/29(火) 21:17:24WM_DESTROYとか
WM_PAINTとか
WM_LBUTTONDBLCLKとか
WM_COMMANDとか
いろいろメッセージがあるけれど、
自分でメッセージを送信しなかったとして、
通常ウィンドウプロシージャに運ばれてくるメッセージの一覧を教えて下さい。
http://www7.plala.or.jp/keny01/windows/win32/#sub1-6
こんな代表的な者の他に…
0640デフォルトの名無しさん
2005/11/29(火) 21:18:370642デフォルトの名無しさん
2005/11/29(火) 21:29:220643デフォルトの名無しさん
2005/11/29(火) 22:12:37ありがとうございます。早速調べてみます
0644デフォルトの名無しさん
2005/11/29(火) 22:42:27ttp://www.winapi-database.com/Message/WM/
0645デフォルトの名無しさん
2005/11/29(火) 23:26:33ありがと。安心したわ。
0646デフォルトの名無しさん
2005/11/29(火) 23:59:10サンクス
0647デフォルトの名無しさん
2005/11/30(水) 11:58:41SHIFTキーを押してアプリケーションを起動したように振舞いたいのですが
どのようにすればいいのでしょうか?
例えば、AccessをSHIFTキー押しながら立ち上げたときのようにしたいのです。
0648デフォルトの名無しさん
2005/11/30(水) 12:49:180649デフォルトの名無しさん
2005/11/30(水) 12:53:15Accessに限った話しでなくてSHIFTキー押しながら起動すると振る舞いの変わる
アプリケーション全般に使いたいと思っています。
0650デフォルトの名無しさん
2005/11/30(水) 12:58:080651デフォルトの名無しさん
2005/11/30(水) 13:01:59立ち上がる時にSHIFTキーを押して貰えばいい
0652647
2005/11/30(水) 13:12:50現在はそういう運用になっていますが使いにくいという意見が出ていまして
改良できるならしてみたいと思っています。
0653デフォルトの名無しさん
2005/11/30(水) 13:19:09SHIFTキーを押しているときと同じ効用を持たせるコマンドラインオプションを設けて
ショートカットでも作ればええやん。
0654デフォルトの名無しさん
2005/11/30(水) 13:21:540655647
2005/11/30(水) 13:29:14起動先のアプリケーションはこちらで作成したものではなく一般にあるアプリケーションに
なりますので、パラメータを用意してもらうことはできないんです。
0656653
2005/11/30(水) 13:37:22一般にあるアプリケーションの使い勝手を変更するのはそのアプリケーションの
著作権者に対するデザインの侵害につながるので勝手にやってはいけません。
#ってことはないだろうか。
冗談さておき、もう少し情報欲しいな。
#もしかして、「例えば」じゃなくて実際にAccessの話だったりしてw
0657デフォルトの名無しさん
2005/11/30(水) 13:43:320658647
2005/11/30(水) 14:09:38本当にAccessに限らないんです。
>>657
グローバルフックですか。。。
dll作ってとか結構大そうな感じになりますよね。
やはり簡単にはできそうにないんですね。
0659デフォルトの名無しさん
2005/11/30(水) 14:15:320660デフォルトの名無しさん
2005/11/30(水) 14:16:43キー押すと
ウィンドウ左上に文字が出てくるんだが、これを非表示にする方法無い?
0661デフォルトの名無しさん
2005/11/30(水) 14:27:29IMEの設定でもいじれ
0663デフォルトの名無しさん
2005/11/30(水) 14:43:37はクラス外に定義して、パラメータとしてクラスのポインタを渡して
制御する方法をとっているのですが、この場合スレッドプロシージャ
内で使用するメンバ変数は全てpublic定義にしなければいけません。
上記手法ではクラス化の意味が薄れてしまうため、スレッドプロシ
ージャをクラス内にstatic定義してCreateThreadしてみたところ、正
常に動作していますが、処理に自信が持てません。
Win32というよりはC++についての質問になってしまうのですが、この
ようなケースでは、どちらが正攻法でしょうか?
0664デフォルトの名無しさん
2005/11/30(水) 14:48:27分かってて何故こっちに来る・・・
0665デフォルトの名無しさん
2005/11/30(水) 14:55:39いや、APIで解決したい。
ImmSetCompositionWindow使うと、場所移動できるのはわかった
0666デフォルトの名無しさん
2005/11/30(水) 15:00:18それは、Access側で、起動時のShift状態を見て、
動作を変えてるんじゃなかろうか。
試してないけど、
SendInputでVK_SHIFTのDOWN
→ターゲット起動、Idleまで待つ。
→SendInputでVK_SHIFTのUP
でどう?
0667デフォルトの名無しさん
2005/11/30(水) 16:18:100668667
2005/11/30(水) 16:19:300669デフォルトの名無しさん
2005/11/30(水) 16:38:55ノ 先生!方法を教えてください!
0670デフォルトの名無しさん
2005/11/30(水) 16:47:33それであってる
0672デフォルトの名無しさん
2005/11/30(水) 18:01:37ImmSetConversionStatus
0673デフォルトの名無しさん
2005/11/30(水) 23:12:220674デフォルトの名無しさん
2005/11/30(水) 23:28:02DDKのAPIでカーネルオブジェクトテーブルの取得が
出来るっぽいです。
0675デフォルトの名無しさん
2005/11/30(水) 23:49:40烈拳
0676デフォルトの名無しさん
2005/12/01(木) 00:10:240677デフォルトの名無しさん
2005/12/01(木) 01:32:520679デフォルトの名無しさん
2005/12/01(木) 09:52:11友達は?
↑
額面どおりの意味不明な一行レスとして受け取るなよ。
ヒントが書かれている。
0681デフォルトの名無しさん
2005/12/01(木) 10:27:370682デフォルトの名無しさん
2005/12/01(木) 18:37:21総当りで作ってみる
エラーが起きた名前は存在する
以上
0683デフォルトの名無しさん
2005/12/01(木) 19:31:47デバッグ無しだと起動に失敗してエラー報告ダイアログが出てきます。
んで、ダイアログ内のデバッグボタンを押すと
hoge.exe の 0x7c9514b6 でハンドルされていない例外が発生しました
: 0xC0000005: 場所 0x00d5503d に書き込み中にアクセス違反が発生しました。 。
と表示されてxstringの605行に緑の|>が表示されるのですが何事かわかる人いたりしますか?
デバッグ無しでもWin95/98/ME/NT互換モードだと起動できます。
0684683
2005/12/01(木) 19:33:450685デフォルトの名無しさん
2005/12/01(木) 19:35:490686デフォルトの名無しさん
2005/12/01(木) 19:47:340687デフォルトの名無しさん
2005/12/01(木) 20:17:52以前動いていた状態に少しずつ近づけてみた結果
MultiByteToWideCharを使用していた部分をCA2Wに直すと動くようになることがわかりました。
お騒がせしました。原因は今のところよくわかりませんが。
CHAR* mtext = "test";
WCHAR* wtext = NULL;
int nSize = MultiByteToWideChar(CP_ACP, 0, mtext, -1, wtext, 0);
wtext = (WCHAR *)malloc(nSize);
MultiByteToWideChar(CP_ACP, 0, mtext, -1, wtext, nSize);
0688デフォルトの名無しさん
2005/12/01(木) 20:22:55wtext = (WCHAR *)malloc(nSize*sizeof(WCHAR));
0689デフォルトの名無しさん
2005/12/01(木) 20:28:05!!!!
動きました!ありがとうございます!
MultiByteToWideChar()の戻り値って必要なバイト数じゃなくて文字数なんですね…。
勘違いしていました。本当にありがとうございました。
0690デフォルトの名無しさん
2005/12/01(木) 20:39:14このスレで聞いてよかったね(^_^)
0691デフォルトの名無しさん
2005/12/01(木) 20:44:34はい、本当にありがとうございました。
0692デフォルトの名無しさん
2005/12/01(木) 21:44:130693デフォルトの名無しさん
2005/12/01(木) 22:29:020694デフォルトの名無しさん
2005/12/01(木) 22:47:11しかも例外安全だが?
どーしてもATL使いたくないんなら、必要なクラス/テンプレートだけでも
パクれば?と言いたい。せっかくC++使ってるんだから。
0695デフォルトの名無しさん
2005/12/01(木) 22:54:470696デフォルトの名無しさん
2005/12/01(木) 23:11:490697デフォルトの名無しさん
2005/12/01(木) 23:45:450698デフォルトの名無しさん
2005/12/01(木) 23:46:230699デフォルトの名無しさん
2005/12/01(木) 23:52:50糞コードだろ。
って、スレ違いだけどな。
0700デフォルトの名無しさん
2005/12/02(金) 00:06:25使えない人には使えない
0701デフォルトの名無しさん
2005/12/02(金) 01:00:02普通は何をつかうんじゃー!
0702デフォルトの名無しさん
2005/12/02(金) 01:10:36std::basic_string<T>でもCString<T>でも好きなモン使えよ
生char*とか使うよりはマシだから
0703デフォルトの名無しさん
2005/12/02(金) 01:27:12なにそれ?どうなんの?
ユニコード使う奴とにてんね。
0704デフォルトの名無しさん
2005/12/02(金) 10:55:090705デフォルトの名無しさん
2005/12/02(金) 11:27:420706デフォルトの名無しさん
2005/12/02(金) 12:27:49そういうシビアな速度要求はまだ存在するんだねぇ。
因みに自分は(必要時以外の)TCHAR*は怖くて使えない。絶対解放し忘れる。
0707デフォルトの名無しさん
2005/12/02(金) 12:40:30スレ的には _sntprintf()。wsprintf()がギリギリ。
sprintf() を素で使う人にはグーでパンチするべきだろう。
0709デフォルトの名無しさん
2005/12/02(金) 12:54:37std::basic_stringに対しての発言ならboost::formatがあると返す。
0710デフォルトの名無しさん
2005/12/02(金) 14:12:210711デフォルトの名無しさん
2005/12/02(金) 15:14:570712デフォルトの名無しさん
2005/12/02(金) 15:47:45そのスレッドを Create したときの
ハンドルを知る方法はありますか?
0713デフォルトの名無しさん
2005/12/02(金) 15:50:46作成したいのですが、
Windowsで
QueryPerformanceCounter()
QueryPerformanceFrequency()
を使った場合、環境によって取得間隔がことなってしまうのでしょうか?
また マイクロ秒単位で動かすプログラムは、
ウインドウズアプリケーションで作成は、可能なのでしょうか?
0714デフォルトの名無しさん
2005/12/02(金) 15:50:500715デフォルトの名無しさん
2005/12/02(金) 17:00:33CStringT<>にはそのものズバリのFormat()があるでよ。
std::basic_string<>の場合はstd::stringstreamを使うか
>>709の言うように、boost::format使え。
sprintf()はバッファオーバーフローの危険性がある最悪関数。
非標準だがsnprintf()の類が使えるならそちらを使うべき。
でも、C++のフォーマッタの方が、文字列長に限界が無いし、
下らないメモリ管理に関する心配が不要だからずっといい。
C++使っておきながらchar*とsprintf()族を無意味に使ってる奴は
ただの馬鹿。
0716デフォルトの名無しさん
2005/12/02(金) 17:07:26sprintfの使い方さえろくに知らないバカ
0717デフォルトの名無しさん
2005/12/02(金) 17:11:590718デフォルトの名無しさん
2005/12/02(金) 17:25:38そうだな。長さは数えようと思えば数えられる。だが、それは面倒で誤りの多いコードになりがちだから
非常に多くのCプログラムでそうしたことが省かれるし、それがCプログラムのセキュリティホールを
産んで来た。
わざわざsnprintf()なんてものが導入されたのはそのためであって、そうした歴史を無視して
語ったところで無知が露呈するだけだぞ。
それにくらべてCStringT<>::Format()のようなものがいかに便利であることか。
0719デフォルトの名無しさん
2005/12/02(金) 17:26:14きちんと使えるようになってもうっかり間違えることはあるさ。
0720デフォルトの名無しさん
2005/12/02(金) 17:31:57char buff[200];
sprintf(buff, "%.180s", s);
とかの「すごく簡単で基本的な使い方」すら知らないのか?
0721デフォルトの名無しさん
2005/12/02(金) 17:34:03きちんと使えるようになってもうっかり間違えることはあるさ。
0722デフォルトの名無しさん
2005/12/02(金) 17:35:16あんたは意図的に物事を単純化している。
%.180のように「勝手に切り詰めてもいい」場合だけじゃないだろ。
切り詰めては駄目な場合は、フォーマット後の長さを数えるしかない。
0723712
2005/12/02(金) 17:36:31GetCurrentThread で得られるのは
擬似ハンドルですよね?
本当のハンドルを得ることはできないのでしょうか?
0724デフォルトの名無しさん
2005/12/02(金) 17:37:02「バッファオーバーフローの危険」の話をしてるんじゃないの?
0725デフォルトの名無しさん
2005/12/02(金) 17:37:39asprintf()のようなものが使えるシステムもある。
これは後でfree()しなければならないことを除けば、大変便利だ。
が、無論C++ならば不要なものでもある。
0726デフォルトの名無しさん
2005/12/02(金) 17:38:53そのとおりだが、セキュリティホール塞ぎは仕様を捻じ曲げて達成するものではない。
0727デフォルトの名無しさん
2005/12/02(金) 17:39:06戻り値が「バッファが足りないっぽい」数字だったら
改めてバッファを広げて呼び直せばいいだけの話。
(snprintfなら、必要なバッファサイズもわかるけどね)
0728デフォルトの名無しさん
2005/12/02(金) 17:41:050729デフォルトの名無しさん
2005/12/02(金) 17:41:44えーと、sprintf()の場合、平気でバッファを超えて書き込んで(メモリを破壊し)、その値を返すわけですが。
0730デフォルトの名無しさん
2005/12/02(金) 17:42:51DuplicateHandle()
0731デフォルトの名無しさん
2005/12/02(金) 17:43:02「誰が」勉強不足なの?
C++使ってるくせにstd::stringstreamやboost::formatやCString<>::Format()のような便利なものを
使わない人たちだよね?w
0732デフォルトの名無しさん
2005/12/02(金) 17:43:29必要があるところでなら、そのような処理をすればすれば良いだけ。
大抵のところでは、その程度で充分だよ。
例えばファイル名の長さとかに制限を設けて仕様としても問題はない。
内部処理ならなおさら。
そして、sprintfには「バッファオーバーフローの危険」はない。
0733デフォルトの名無しさん
2005/12/02(金) 17:45:36>sprintfには「バッファオーバーフローの危険」はない。
「正しく使えば」が抜けている。だが、それは意外に難しい。
実のところ別に無能なわけでもなんでもないCプログラマたちが作ったレガシープログラム群
の多くにそのようなセキュリティホールが発見されているのだ。
0734デフォルトの名無しさん
2005/12/02(金) 17:45:49sprintf(buff, "%.180s", s) が179を返した場合の話なんですが
その程度も推察できないのですか?
0735デフォルトの名無しさん
2005/12/02(金) 17:47:16だからどうしてもwsprintfを使わなければならないときに俺はバッファの要素数を必ず1024以上にしている。
0736デフォルトの名無しさん
2005/12/02(金) 17:47:49それなら>>727の説明が誤っている。
>改めてバッファを広げて呼び直せばいいだけの話。
ではなくて、フォーマット文字列もいちいち変更するんだろ?
まあ、%.*sとかにしといて、長さ部分を変えるだけだろうが。
0737デフォルトの名無しさん
2005/12/02(金) 17:49:24「CString::Format等を使わないでsprintfを使え」なんて言ってる訳じゃないの。
「『「sprintfにバッファオーバーフロー』と言う奴は使い方を知らないだけ」と言ってるの。
どこぞのスレで「strcpyの脆弱性」と言ってる奴と全く同じだよ。
0738デフォルトの名無しさん
2005/12/02(金) 17:49:25説得力ゼロ
0739デフォルトの名無しさん
2005/12/02(金) 17:50:410740デフォルトの名無しさん
2005/12/02(金) 17:59:45それだと、同じスレッドを指す別のハンドルになった希ガス。
0741デフォルトの名無しさん
2005/12/02(金) 18:01:110742デフォルトの名無しさん
2005/12/02(金) 18:05:14Advanced Windows嫁。
ちゃんと実ハンドルが取れる。
Advanced Windowsにも、スレッドの実ハンドルをとる目的で載っている。
0743デフォルトの名無しさん
2005/12/02(金) 21:52:29何のためにCreateしたときのハンドルが必要なのかはともかく。
つーか質問者が何かを激しく勘違いしてる可能性が高いが。
0744デフォルトの名無しさん
2005/12/03(土) 00:10:440745デフォルトの名無しさん
2005/12/03(土) 00:21:020746デフォルトの名無しさん
2005/12/03(土) 00:42:490747デフォルトの名無しさん
2005/12/03(土) 00:47:53裁判でも裁けません
池・沼・最・強・伝・説
0748デフォルトの名無しさん
2005/12/03(土) 01:18:13>>720のプログラムは間違ってるの?
動かないの?
そこらへん考えてレスつけないと馬鹿に見えるよ。
0749デフォルトの名無しさん
2005/12/03(土) 01:21:280750デフォルトの名無しさん
2005/12/03(土) 01:28:34頭の悪い糞餓鬼が大して重要でない部分に大騒ぎしてる臭いがプンプンするね。
いいアプリケーションを作ってくださいねw
0751デフォルトの名無しさん
2005/12/03(土) 01:34:24snprintf()ならば、十分にスレテーマに沿ってる。
なぜならgccとVCとでは、snprintf()でバッファサイズを埋め尽くした時の振る舞いが違うので。
この辺もちゃんと押さえておかないと、軽くヤバイ。
0752デフォルトの名無しさん
2005/12/03(土) 01:39:280753デフォルトの名無しさん
2005/12/03(土) 01:52:17C標準ライブラリの実装依存の話と、スレタイのWin32APIとどんな関係が?
0754デフォルトの名無しさん
2005/12/03(土) 01:53:500755デフォルトの名無しさん
2005/12/03(土) 01:57:58もう少し、未来を予測する能力を培ったらどうだろうか。
バッファサイズがのちのち変更される可能性については考えないのか?
ソースコードが別プロジェクトにコピペされる可能性については考えないのか?
バッファサイズを指定していたマクロなり定数なりの文字列でgrepしただけでは、
修正すべき場所を追跡できない。それがprintf()系フォーマット引数クオリティ。
>>748、君は職業PGに向いていないと思う。
もし今、職業PGなのであれば、迷惑をかける前に転職してほしい。
趣味PGなのであれば、これ以上はキツク言わないよ。思う存分、使ってくれ。
0756デフォルトの名無しさん
2005/12/03(土) 02:13:28お前ら、初心者の相手して暇だな。
0757デフォルトの名無しさん
2005/12/03(土) 02:18:500758デフォルトの名無しさん
2005/12/03(土) 02:23:110759デフォルトの名無しさん
2005/12/03(土) 02:25:410760デフォルトの名無しさん
2005/12/03(土) 02:32:49lstrcpyn(buffer, string, sizeof(buffer));
で済むことに何故sprintf()を使う。
もっと現実的なsprintf()の使用例で考えてみろ。
0761デフォルトの名無しさん
2005/12/03(土) 02:42:24sprintf (buffer, "%.*s" CONSTANT, sizeof(buffer)-1-(sizeof(CONSTANT)-1),string);
0762デフォルトの名無しさん
2005/12/03(土) 02:43:30共有違反だったら他のプロセスがハンドルを開放するのを待って、
共有違反でなかったらreturnさせたいのですが。
0763デフォルトの名無しさん
2005/12/03(土) 02:44:45sizeof()に依存している時点で死亡決定。
理由はわかるな?
0764デフォルトの名無しさん
2005/12/03(土) 02:48:35がんがれ
0765デフォルトの名無しさん
2005/12/03(土) 02:49:04フォーマット文字列を変更した時の気の使いようは並じゃないな。
で、毎度毎度そんな誤りやすい計算をやるのか。
却下だ、却下。
実際そうしたことが面倒で誤りやすいからバッファオーバーフローのバグが
生じてきた「現実」があるのだとなぜ分からないのか。
単に「出来る出来ない」の話じゃないんだよ。それだけでいいんなら全部
アセンブラで書けっての。
0766デフォルトの名無しさん
2005/12/03(土) 02:50:22lstrcpyn(buffer, string, sizeof(buffer));
こいつも脂肪
0767デフォルトの名無しさん
2005/12/03(土) 03:06:380768デフォルトの名無しさん
2005/12/03(土) 03:19:59bufferの部分がポインタだったとしてもちゃんと動いて欲しいのが人情。
UNICODEビルドしたときにクラッシュして欲しくないのも人情。
0769デフォルトの名無しさん
2005/12/03(土) 04:02:16特にハイテンションでコード書いてしまった次の日とか。
0770デフォルトの名無しさん
2005/12/03(土) 04:04:220771デフォルトの名無しさん
2005/12/03(土) 04:16:49ワロタw
「多い日も安心、次の日も安心」だよな、基本は。
0772デフォルトの名無しさん
2005/12/03(土) 04:51:370773デフォルトの名無しさん
2005/12/03(土) 05:00:50もうネタは投下しなくていい。お前はよくがんばった。
だが、いかんせん可燃性に乏しいようだ。あきらめろ。
0774デフォルトの名無しさん
2005/12/03(土) 05:06:28分かってない奴は自分で調べようともしないし、
ほんと質問スレとしては最悪だな。
・sprintf()に限らず、printf()系のフォーマットの幅指定は、
あくまで最低限確保される幅の指定であって、最大限じゃあない。
よって指定幅を超えた書き込みをすれば、指定幅を超えて書き込むので
バッファオーバーフローしうる。回避方法はないのでsnprintf()系を使うべき。
参考:>>715>>729>>735>>745
・sizeofは型及び変数のサイズ(バイト数)を返す。
文字列の長さを返すわけじゃないし、配列の要素数を返すわけでもない。
変数が配列なら配列サイズ(not 要素数)を返すが、ポインタならポインタのサイズを返す。
「ポインタと配列は全くことなるもの」という実例の1つだな。
参考:>>763>>766>>768
0775デフォルトの名無しさん
2005/12/03(土) 05:12:13>・sprintf()に限らず、printf()系のフォーマットの幅指定は、
>あくまで最低限確保される幅の指定であって、最大限じゃあない。
%100sと%.100sの違いも知らない池沼が何かホザいてるようだな。
0776デフォルトの名無しさん
2005/12/03(土) 05:19:05>>774の上半分は無視してくれ。
0777デフォルトの名無しさん
2005/12/03(土) 05:20:39lstrcpyn(buffer, string, sizeof(buffer));
漏れこれではまったことあるな・・・
0778デフォルトの名無しさん
2005/12/03(土) 05:31:060779デフォルトの名無しさん
2005/12/03(土) 05:31:52実数の場合は迂闊に%fを使うと1e300などと言う異常値が入ると300桁もの数値を吐き出しかねない。
以上を踏まえて注意を纏めてみる。
・最小幅指定はあくまでも入力が予測可能な場合にのみ意味がある。
#入力値が異常な場合、バッファオーバフローの危険が常に付き纏う。
・文字列→"%.*s", len, str などとして最大幅を制限する。
・整数値→INT_MAX(或いはその他)から桁数を計算できるのその分のバッファを用意する。
・実数値→%e/%gを精度指定とともに使うようにする。
そういう注意をした上でsprintf()を使うかCString::Format()などを使うかは強制されることではない。
まぁ、WinAPIスレだから仕方ないが世間知らずが多いよな。
0780デフォルトの名無しさん
2005/12/03(土) 05:40:590781デフォルトの名無しさん
2005/12/03(土) 05:43:100782デフォルトの名無しさん
2005/12/03(土) 08:04:32をwin32api風に書くとどうなるんですか?
UNSIGNEDは定義されてないみたいです
0783デフォルトの名無しさん
2005/12/03(土) 08:39:380784デフォルトの名無しさん
2005/12/03(土) 08:40:350785デフォルトの名無しさん
2005/12/03(土) 08:41:570786デフォルトの名無しさん
2005/12/03(土) 09:26:55>もう少し、未来を予測する能力を培ったらどうだろうか。
おまえこそ気にしてもしょうがないようなとここだわってるじゃん。
>>720についていってるのに「将来変更されたら〜」なんていつの話だよ。
将来変更される可能性なんていったって、お前の勝手な妄想だろ。
そんな一時保存的なバッファサイズだけに変更がかかったことなんて生涯を通して一度も無いよ。
お前の未来予測は当たる確率が低すぎて意味がねぇんだよw
0787デフォルトの名無しさん
2005/12/03(土) 09:37:47「そうはイカンザキー!!」といったのでしょうか。
ぜひTVで言ってください。
言わないのなら、誰か誇大広告でJAROに訴えてください。
大作が草加をゴミタメにした。
0788デフォルトの名無しさん
2005/12/03(土) 09:46:17俺はDWORDとULONG/ULONGLONGは別次元だと思っている。
DWORDLONGは自分では使わない。
0789デフォルトの名無しさん
2005/12/03(土) 09:50:020790デフォルトの名無しさん
2005/12/03(土) 10:17:05DWORD64の前にQWORD作れよ。
0791デフォルトの名無しさん
2005/12/03(土) 10:40:440792デフォルトの名無しさん
2005/12/03(土) 10:53:390793デフォルトの名無しさん
2005/12/03(土) 11:30:44GetLastError()でERROR_SHARING_VIOLATIONが返ってくれば共有違反
0794デフォルトの名無しさん
2005/12/03(土) 11:36:17>そんな一時保存的なバッファサイズだけに変更がかかったことなんて生涯を通して一度も無いよ。
あきれ果てた上司PGがお前をプロジェクトから外したからだ。
代わりにソースコードの後継を任されたほかのPGが大変だったわけだ。
すぐにプロジェクトから外されるお前は、未来を予想する必要がなかった。
そういう意味ではお前の言っていることは間違ってないから、安心しろ。
0795デフォルトの名無しさん
2005/12/03(土) 11:47:460796デフォルトの名無しさん
2005/12/03(土) 11:50:140797デフォルトの名無しさん
2005/12/03(土) 11:56:44extern char *buffer;
こんなアホなコード書いてる訳かw
0798デフォルトの名無しさん
2005/12/03(土) 12:13:00PMの判断によって開発の最前線から外された窓際PGがサンプル作成を担当している。
const定数を使わずdefine定数を使ってバッファサイズを指定するところがさすが窓際。
0799デフォルトの名無しさん
2005/12/03(土) 13:07:330800デフォルトの名無しさん
2005/12/03(土) 13:15:04実のところお前も汎用性をつけるだけつけておいて、
全くそんなことが起きたことがないってことでFAだろ?
お前の未来予測は役に立たねぇんだよ。
0801デフォルトの名無しさん
2005/12/03(土) 13:28:070802デフォルトの名無しさん
2005/12/03(土) 13:45:240803デフォルトの名無しさん
2005/12/03(土) 14:06:49UnixコミュニティやWindows開発チームが到達した結論を否定するだけあってアフォだな。
0804デフォルトの名無しさん
2005/12/03(土) 14:26:140805デフォルトの名無しさん
2005/12/03(土) 14:30:38ヒント: 備えあれば憂いなし
0806デフォルトの名無しさん
2005/12/03(土) 14:46:57起こりもしないような不具合想定して、
いつも職場で大声で騒ぎたてる馬鹿が掲示板で元気だなぁwおいw
0807デフォルトの名無しさん
2005/12/03(土) 14:49:15John Robbinsの本でも読んどけ
0808デフォルトの名無しさん
2005/12/03(土) 14:49:420809デフォルトの名無しさん
2005/12/03(土) 14:53:020810デフォルトの名無しさん
2005/12/03(土) 14:53:42「sprintfでバッファオーバーフロー」と言う奴はバカばっか(>>774)という実例が増えただけ
ちなみに>>765は、sprintfのフォーマット文字列が変更される可能性はあっても
Formatのフォーマット文字列が変更される可能性は無いと言ってます。
0811デフォルトの名無しさん
2005/12/03(土) 14:54:19起こるんじゃあない。起こすんだ、人間自身が。
人間のスペックを信頼している時点でお前はPG失格。氏ね。
0812デフォルトの名無しさん
2005/12/03(土) 14:58:47普通の人は>>737のように、「適材適所」ということを理解してるから。
盲目的に「sprintfは使えねえ」って言う奴はバカ
これだけは確実だけどね。
0813デフォルトの名無しさん
2005/12/03(土) 14:59:37という価値観ならば、C++は一切必要ないな、そいつには。
統合開発環境も必要ない。C言語さえ必要ない。アセンブラだけで十分だろ。
Win32API質問スレに来なくてもいいだろ、玄人なのだから。
0814デフォルトの名無しさん
2005/12/03(土) 15:04:07まだ判ってないな。本物の馬鹿だろ、お前。
sprintf()がプロジェクトで使えるかどうかは、末端PGが個人判断してよいことではないのだ。
PMが一方的に使用禁止と末端PGに命令して、初めてプロジェクトの安定性が確保される。
お前の個人的判断なぞは全く重要ではない。
0815デフォルトの名無しさん
2005/12/03(土) 15:07:250816デフォルトの名無しさん
2005/12/03(土) 15:08:30>>774みたいに使いこなせないバカコーダー(ITドカタ)が
山ほどいるからね。
0817デフォルトの名無しさん
2005/12/03(土) 15:10:38使うメソッド・使うアルゴリズムを制限していくからこそ、管理が楽になる。
末端PGに自由裁量を与えているようなチームは、ダメなチームだ。
0818デフォルトの名無しさん
2005/12/03(土) 15:10:59一応CでもC++でも言語使用に定められた標準ライブラリに含まれるんだけど。
API以外使用禁止なんてところもあるんだろうな。
0819デフォルトの名無しさん
2005/12/03(土) 15:15:17「boost::formatを使え」とか、言ってるわけだよ。
大笑いだね。
標準ライブラリすらまともに使えない末端コーダーに
boostの使い方を先に覚えさせようとするわけだ。
ま、確かに便利だけどね。
0820デフォルトの名無しさん
2005/12/03(土) 15:16:36>んー、sprintf使用禁止なプロジェクトってそんなに多いのかね?
多い。
標準ライブラリであることは安定性に関して何の保証にもならない。
標準ライブラリが保証するのは汎用性だけ。勘違いするな。
0821デフォルトの名無しさん
2005/12/03(土) 15:17:000822デフォルトの名無しさん
2005/12/03(土) 15:19:39「バカ」はsprintf使用禁止で良いよ。
「普通の人」は別にsprintf使っても、何の問題もないから。
もちろん、個人で何か作る場合も、複数で作る場合もね。
「末端職業プログラマ」のレベルは、実際酷いもんだし
バカが混じるプロジェクトで禁止するのも仕方ないかもね。
「バカの常識」を「一般人の常識」にはして欲しくないけど。
0823デフォルトの名無しさん
2005/12/03(土) 15:20:24末端下請けで突き進むならsprintf()賛成。
お前らの人生観次第だ。好きな方を選べ。
0824デフォルトの名無しさん
2005/12/03(土) 15:22:43バカかどうかじゃない。自分を過信するかしないかだ。
根本的に判ってないな、お前。
0825デフォルトの名無しさん
2005/12/03(土) 15:22:51>>774みたいに証明してる人が沢山いるんだから
そりゃ必死になって
「sprintfを使うことの悪さ」を主張するわな。
「sprintfの悪さ」を主張しようとして、論破されちゃったもんだから。
0826デフォルトの名無しさん
2005/12/03(土) 15:23:550827デフォルトの名無しさん
2005/12/03(土) 15:25:50「自分がsprintfを使うべきではない理由」は
何一つ挙げられないと。
0828デフォルトの名無しさん
2005/12/03(土) 15:29:47「アセンブラすらまともに使えない末端コーダーに
C言語の使い方を先に覚えさせようとするわけだ。」
と言っているに等しいな。
そもそも何をもって「標準ライブラリをまともに使える」と見なすか決めるのはお前ではない。
俺がPMならお前をプロジェクトから外すだろう。標準ライブラリをまともに使えてないと感じるからだ。
0829デフォルトの名無しさん
2005/12/03(土) 15:31:020830デフォルトの名無しさん
2005/12/03(土) 15:31:22「sprintfの悪い点」を出せないから。
出そうとして自分の無知をさらけだしてしまい
必死に論点をずらしてるだけだから。
0831デフォルトの名無しさん
2005/12/03(土) 15:32:480832デフォルトの名無しさん
2005/12/03(土) 15:34:25どんなPMでも、「このプロジェクトはsprintf禁止」にするでしょ。間違いなく。
0833デフォルトの名無しさん
2005/12/03(土) 15:35:04バイナリエディタもどきを作成してみたいのですが
バイナリエディタにあるあのインターフェイスは
GDI関数でクライアント領域に直書きするものなのでしょうか?
それともエディットコントロール(orリッチエディット)で実装すべきでしょうか?
ご助言をお願いします!
0834デフォルトの名無しさん
2005/12/03(土) 15:35:22それだけで十分だ。それ以上の理由も必要ない。
「他人に合わせたくない」という孤高のPGはずっと下請けをやってもらうしかない。
実際、業界はそうなっている。
0835デフォルトの名無しさん
2005/12/03(土) 15:35:40_printfとかあると思ったのですがないようです
0836デフォルトの名無しさん
2005/12/03(土) 15:42:33もちろん自分で使う上で。
末端コーダが、自分で何か作ろうなどという創造的なことをしないだろうというのは
分かるけどさ。
「自分みたいなバカが加わるプロジェクト」は大抵sprintf禁止なのはもうわかったよ。
バカがsprintfを使うのは良くないのは>>774で良くわかったから
普通の人が自分のプログラムでsprintfを使ってはいけない理由は?
0837デフォルトの名無しさん
2005/12/03(土) 15:43:33ない。unixにもない。
_write()に対応するAPIならある。
GetStdHandle()
WriteFile()
0838デフォルトの名無しさん
2005/12/03(土) 15:43:48くだらん論争はCスレ言ってやってこいぼけ
0839デフォルトの名無しさん
2005/12/03(土) 15:46:07思う存分、使えばいい。>>755で答えは出ている。
0840デフォルトの名無しさん
2005/12/03(土) 15:49:00GetStdHandle+wsprintf+WriteFile使ってみるわ
0841デフォルトの名無しさん
2005/12/03(土) 15:49:240842デフォルトの名無しさん
2005/12/03(土) 15:52:06UNICODEビルドの場合はマルチバイトに変換してから出力する必要あり。要注意。
0843デフォルトの名無しさん
2005/12/03(土) 15:54:440844デフォルトの名無しさん
2005/12/03(土) 15:55:46wsprintfを使う時はバッファサイズを1024以上取り、
なおかつ全体が1024以上にはならない程度の文字列にしないと。
しかも末端コーダーを目指す人は使わない方が良いらしいぞ。
0845デフォルトの名無しさん
2005/12/03(土) 15:56:01Unicodeつかわね
あとWinapiでstrlenに対応する関数はどれですか。
0846デフォルトの名無しさん
2005/12/03(土) 15:57:34sizeof
0847デフォルトの名無しさん
2005/12/03(土) 15:58:180848デフォルトの名無しさん
2005/12/03(土) 16:00:550849デフォルトの名無しさん
2005/12/03(土) 16:05:06char buff[BUFFER_SIZE];
sprintf(buff, "%.200s", s);
みたいな使い方を想定してるのか?
明示的にdefineした定数の数字を想像して%.200なんて書く奴なんか居ないよ。
逆に
char buff[200];
の"200"という数字をgrepするというのなら、
defineやconstを使わないで200という重要な数字を生で書いているということだよな?
もちろん、ローカルのバッファならそれで充分だが
そんなのgrepして見つかっても書き直すわけ無いし。
逆に引数等でバッファサイズが与えられるなら、必ず.*を使うし
どう考えても「バッファサイズを変更する>>755の状況」が想像つかないね。
俺には。
0850デフォルトの名無しさん
2005/12/03(土) 16:12:44入力側の予想されるサイズが変わった時のコストを考慮してないのは、何故だ?
わざと無視してるのか?
0851デフォルトの名無しさん
2005/12/03(土) 16:15:11APIの質問でなく、機能の実装方法だからスレ違いな気もするが・・・
くだらない論議にうもれてしまいそうで、かわいそうなので、
どういう仕様のエディタを作るかによるが、GDI直書きがおすすめ。
(リッチでない)エディとコントロールは64K文字しか扱えないので、
バイナリエディタじゃ足らないでしょう。
リッチエディトで頑張ればそれなりの物は作れるが、バイナリエディタなりの
カーソルの動き等を実装しようとすると、かえって大変。
自分で全て制御・描画するほうが最初は手間がかかるが融通が利く。
0853デフォルトの名無しさん
2005/12/03(土) 16:23:51ん、ちょっと真面目に議論しようよ。スレ違いだけど。
他との関連があるバッファだったら、
(例えば構造体のメンバとかで他と受け渡しするものなら)
defineなりsizeofなりを使って、バッファサイズを取得するでしょ?
つまり、"%.200"というリテラルを使うことはあり得ないわけ。
動的に確保したサイズを渡す場合にしても。
逆に、ローカル変数でのバッファだったら、その関数内で完結するわけでしょ?
その場合は、バッファの大きさが数字で直接書かれているだろうけど
そのバッファを使用するのがそもそも関数内だから
バッファサイズを変更したら、そのバッファを使っている部分(関数内)を一通り見て
影響がないか確認するのが常識じゃないの?
もちろん、「その程度のことすらまともに出来ない人間」が存在するのは確かだけど
「自分で作って自分で使う部分」なら問題にならないんじゃないの?
それに、例えば数字→文字列とか、ディレクトリ+ファイル名+拡張し→文字列
みたいなのは、ある程度上限があるから、
あらかじめ余裕をもって確保するべきだと思うし。
0854デフォルトの名無しさん
2005/12/03(土) 16:25:440855デフォルトの名無しさん
2005/12/03(土) 16:32:18書式文字列をsprintf()で作ってからsprintf()を実行するから、なんら問題ないよ。
それができないお前らは(ry
0856デフォルトの名無しさん
2005/12/03(土) 16:35:48VB使って、あの表示部分をユーザーコントロールとして作ってしまう、
もしくは、VCなら1個のクラスでまとめてしまうと楽
0857デフォルトの名無しさん
2005/12/03(土) 16:36:53"%.*"って知ってるかい?
0858デフォルトの名無しさん
2005/12/03(土) 16:38:11/,'3 `ァ <もうだめぽぉ
`ー-‐`
0859デフォルトの名無しさん
2005/12/03(土) 16:40:10>>755の文意を理解できた人間は職業PGを続けていい。
>>755の文意を理解できない人間は即刻職業PGをやめろ。
0860デフォルトの名無しさん
2005/12/03(土) 16:40:16うざい
スレ違いだとわかっているなら他所へいけぼけ
そんな判断さえできんやつが屁理屈こねたところで
どうせロクなコードは書けん
わかったら消えろぼけ
0861デフォルトの名無しさん
2005/12/03(土) 16:42:29>>755の文意を理解できない人間は即刻末端コーダーをやめろ。
sprintfの悪いところは、末端コーダーが使いこなせないことだから。
0862デフォルトの名無しさん
2005/12/03(土) 16:48:33糞PGの集団は、>>755に従えってことだね
0863デフォルトの名無しさん
2005/12/03(土) 16:54:04結論はスレ違いウザイってことだろ?
0864デフォルトの名無しさん
2005/12/03(土) 16:54:28アマPG=彰義隊・新選組
派手なのはどっち?
強いのはどっち?
0865デフォルトの名無しさん
2005/12/03(土) 16:56:14無いんだったらここでいいじゃん。
0866デフォルトの名無しさん
2005/12/03(土) 16:56:16さっそくですがツールバーやメニューバーに視覚スタイルを適用する方法を教えてください(^o^)
他の掲示板にいったけど完全にスルーされたので戻ってきました^^
http://up.mugitya.com/img/Lv.1_up12444.jpg
メニューバー・ツールバーを作ってみたら、上の奴のようになってしまうのです。
下や真ん中の奴のように視覚スタイルを適用したいのですがどうすればよいのでしょうか?
DrawThemeBackgroundでできると思ったのですが、それらしい定数が見つかりません(分かりません)
何卒お願いいたします(^^)
0867デフォルトの名無しさん
2005/12/03(土) 16:57:170868デフォルトの名無しさん
2005/12/03(土) 17:00:17APIじゃないs
0869デフォルトの名無しさん
2005/12/03(土) 17:01:59アマPG=前田慶次
ただし、漫画じゃなくて史実の方。
0870デフォルトの名無しさん
2005/12/03(土) 17:03:24セキュアなプログラムを作ろう パート1
http://pc8.2ch.net/test/read.cgi/tech/1113622199/
0871デフォルトの名無しさん
2005/12/03(土) 18:45:24このスレで議論されてるようなWin32APIを利用するバリバリ環境依存
プログラムでわざわざ(_snprintf()ではなく)sprintf()を使う理由って
あるのか?
0872デフォルトの名無しさん
2005/12/03(土) 18:47:180873デフォルトの名無しさん
2005/12/03(土) 18:52:430874デフォルトの名無しさん
2005/12/03(土) 19:04:540875デフォルトの名無しさん
2005/12/03(土) 19:19:290876デフォルトの名無しさん
2005/12/03(土) 19:22:31お前みたいなやつが2000年問題を引き起こしたんだということがまだ分からんのか
0877デフォルトの名無しさん
2005/12/03(土) 19:26:110878デフォルトの名無しさん
2005/12/03(土) 19:26:130879デフォルトの名無しさん
2005/12/03(土) 19:29:13最近のプログラムの品質が落ちたのはそのせいか
0880デフォルトの名無しさん
2005/12/03(土) 19:30:42俺にとってはフクザツな書式指定と計算を使ってまで、わざわざsprintf()を使ってる
奴の方が余程アフォだな。
_snprintf()ならば、そのコードで「バッファオーバーフローが起きない」ことを
はるかに簡単・確実に保証できるのに。
無論C++なのにsprintf()使ってる奴は、「論外」な。
0881デフォルトの名無しさん
2005/12/03(土) 19:32:21便利な道具があるのにそれを使わない奴は一生ハンドアセンブルしてろってこった。
ま、一方で「便利な道具」にプログラマがスポイルされたことは、否定しない。
0882デフォルトの名無しさん
2005/12/03(土) 19:32:220883デフォルトの名無しさん
2005/12/03(土) 19:38:470884デフォルトの名無しさん
2005/12/03(土) 19:39:2864k制限って2k/XPあたりではなくなってるんじゃなかったっけ?
>>833あわれだなぁ。もうちょっとタイミングいい時にくればいいのに。
0885デフォルトの名無しさん
2005/12/03(土) 19:54:27SPYか何かで、既存エディタが何使ってるか
調べてみればいいかも
0886デフォルトの名無しさん
2005/12/03(土) 20:33:280887デフォルトの名無しさん
2005/12/03(土) 20:50:07>>779はsprintfを使うなと言ってるのか使ってもいいといってるのかどっちだ。
0888デフォルトの名無しさん
2005/12/03(土) 20:50:56セキュアなプログラムを作ろう パート1
http://pc8.2ch.net/test/read.cgi/tech/1113622199/
0889デフォルトの名無しさん
2005/12/03(土) 20:53:23apiとmfcは同じようなものなのですか?理解が進んでいないので抽象的な質問しかできないですが、この2つの違いをご教授していただけたら幸いです
0890デフォルトの名無しさん
2005/12/03(土) 21:08:33Win32APIはWindowsのシステムが提供する機能を使うための関数インターフェース群
MFCはそれを使いやすくした「クラス群」
APIはCとかC++とか関係無いが、MFCはCじゃ使えない
0891デフォルトの名無しさん
2005/12/03(土) 21:12:28MFCはAPIを使うクラスライブラリだからコーダーを目指さないsprintf使いには不要
とか回答するとスレ違いになるのか?
0892デフォルトの名無しさん
2005/12/03(土) 21:17:380893デフォルトの名無しさん
2005/12/03(土) 21:17:50セキュアなプログラムを作ろう パート1
http://pc8.2ch.net/test/read.cgi/tech/1113622199/
0894デフォルトの名無しさん
2005/12/03(土) 21:18:540895デフォルトの名無しさん
2005/12/03(土) 21:20:48MFCは糞である事を覚えておいて損はないでしょう
0896デフォルトの名無しさん
2005/12/03(土) 21:23:330897デフォルトの名無しさん
2005/12/03(土) 21:41:39後方検索の機能がないんだけど
どっかに隠し機能としてでもあるんだろか?
今は、2進探索と組み合わせてなんとか実現してるんだけど
メガ級のテキストになると遅くて遅くて。
0898デフォルトの名無しさん
2005/12/03(土) 21:56:030899デフォルトの名無しさん
2005/12/03(土) 22:01:18メモリマップ度ファイルと組み合わせて
0900デフォルトの名無しさん
2005/12/03(土) 22:10:21こんな口調の書き込みは餓鬼がしてるものだと思ってたのだが。
0901デフォルトの名無しさん
2005/12/03(土) 22:15:210902デフォルトの名無しさん
2005/12/03(土) 22:21:380903流れを帰るな!変えろ!
2005/12/03(土) 22:22:37古いドキュメントが手元にあるんですがWindows3.1ぐらいから存在してることは確かですが…
0904デフォルトの名無しさん
2005/12/03(土) 22:24:48ところで9xにもMessageBoxWがあるのはありがたい。
0905デフォルトの名無しさん
2005/12/03(土) 22:26:162chはおとながこどもに、こどもがおとなになるワンダーランドなのです
0906デフォルトの名無しさん
2005/12/03(土) 22:29:110907755
2005/12/03(土) 22:32:23たまにはキレることもあるさ。
ついつい自分の体験がオーバラップしてしまったもんで。
やっかいなのは、「俺って玄人だから必要ない。」というタイプ。
こういうタイプを真っ先に開発から排除する必要がある。
こういうタイプが入るとえてしてソース管理がいい加減になる傾向に・・・。
バカが自分でわざわざ仕事増やしてるんだから、当然そうなるわけで。
0908デフォルトの名無しさん
2005/12/03(土) 22:39:36./⌒丶、 , イ
(丶 `丶. __ __ .. , .イ ソ
ミ . `丶、 ヽ、 , ´ ,.-〜へヽ / 彡
ミ `丶、 ヽ、 \ /ヽヽヾ〈 __ ハ V 彡
乂ヽ ヽヽ ヽー\il i il ハ ! } ノ ,ィオ f-;〈 ソ あなたもあるぅ〜 翼があるぅ〜
( \ヽヽ ヾ ヽ ヽヽ V il 〉 ハ { __ i ツ
( \ ヽヽ ヽ ヽヽ V// //ソ ` ´ } シ 飛び立つのよぉ〜 空へと〜 ♪
\__ ヽ ( (.__ヽヽ }i ノ ノ イ ァrr‐く'
ゝ.__ (__ __ <r'< 〈 / /i|ー- 、
> .__ / トv ハ 〉 / リ ヽ
( __ _/ .| 〉V/ i〉 } 美しいわぁ〜 しあわせでしょ〜
ノ! |/ ヽ. リ ,'
// | |{ リ / 風にのり〜 虹をわたろぅ〜 ☆
从i l|`ヽ. |`ー -- ---く! /_
>-‐‐ } !. ,' } ノf i
>' イこ i ! ノ / 〉
,. --'´に.. l ヽ.___ < __ ___j i______
,.- ' ` ̄ヽ! ノ みなこ .
. / `ー─ -- -- -- ─ "´
0909デフォルトの名無しさん
2005/12/03(土) 23:49:23年末返上で必死に対策した香具師らにあやまれっ!
0910デフォルトの名無しさん
2005/12/03(土) 23:51:17自分がソースを追えない責任を関数に求めているだけだからスルーしろ
0911デフォルトの名無しさん
2005/12/03(土) 23:53:300912デフォルトの名無しさん
2005/12/04(日) 01:07:16sprintf使っちゃ駄目とか言ってる奴は
どう考えてもちょっとした不具合例に挙げておおげさに言いすぎだと思う。
0913デフォルトの名無しさん
2005/12/04(日) 01:11:09C/C++でのWindowsPrograming議論スレ(質問お断り)
http://pc8.2ch.net/test/read.cgi/tech/1049790146/
0914デフォルトの名無しさん
2005/12/04(日) 01:12:40snprintfってC標準ライブラリ?
0915デフォルトの名無しさん
2005/12/04(日) 01:20:06>>774や>>855が、「業界」のレベルなので
仕方がないのです。
本人には、自分が最底辺という自覚はありませんが。
0916デフォルトの名無しさん
2005/12/04(日) 01:21:54scanf 最強!
0917デフォルトの名無しさん
2005/12/04(日) 01:24:39漢なら gets !!
gets 最強伝説
0918デフォルトの名無しさん
2005/12/04(日) 01:25:490919デフォルトの名無しさん
2005/12/04(日) 01:31:07すまんがscanfとはどんなAPIですか?
0920デフォルトの名無しさん
2005/12/04(日) 01:32:38ノーバグでセキュアなプログラムを作るコンテストとかやったら
おもしろそうだ。
0921デフォルトの名無しさん
2005/12/04(日) 02:09:59余計な変換手順も持ち込むんで
オブジェクトがばかでかくてカナ湾
0922デフォルトの名無しさん
2005/12/04(日) 06:14:37パンクラス、K-1のレベルだな。
0923デフォルトの名無しさん
2005/12/04(日) 06:40:55勿体つけて処理した方が一般人は凄いことやってる錯覚に陥ってくれる。
お前らCプログラマがコードを高速化したところで、かえって一般人から軽んじられるんだよ。
0924デフォルトの名無しさん
2005/12/04(日) 07:09:410925デフォルトの名無しさん
2005/12/04(日) 07:14:32そう思うのは本当の初心者だけ。
処理が単純なのにやたら重いソフトはMFCを必要以上に使ってるとかバレバレ。
ましてやそんな理由で無駄にSleepとか使ってわざと重くしたらすぐわかる。
0926デフォルトの名無しさん
2005/12/04(日) 07:17:050927デフォルトの名無しさん
2005/12/04(日) 07:36:20あまりにひどいと自分で組んでフリー公開したくなる
0928デフォルトの名無しさん
2005/12/04(日) 08:02:12DIB版がありましたら教えてください。
0929デフォルトの名無しさん
2005/12/04(日) 08:07:121つのファイルの処理進行状態で1つ、全体の処理の進行状態で1つの
2つは用意できるとユーザーも大喜びだ。
もちろん処理が一瞬で終わるからといって一瞬で終わってしまっては意味が無い。
意味もなく処理に時間をつかうんだ!
DirectXのシェーダ機能を無理やり使ってPCからキーン・・・という音を出せばGOOD!
0930デフォルトの名無しさん
2005/12/04(日) 08:12:35ほんと、プログレスバー様様ですよ!
0931デフォルトの名無しさん
2005/12/04(日) 08:18:33初心者は声を揃えて言います。
「ノー○ンは最強のセキュリティソフトだ!!」
0932デフォルトの名無しさん
2005/12/04(日) 08:25:05CreateDIBSectionは?
0933デフォルトの名無しさん
2005/12/04(日) 08:35:42↓
ある優秀な鍵業者がいた。
彼は、鍵を閉じ込めてしまった客の緊急依頼に即座に駆けつけては
短時間で開錠するサービス熱心で真面目な男だった。
その鍵業者があまりに簡単に開錠するので、値切ったり金を払わずにすませようとする客が多かった。
ウンザリした鍵業者は仕事を止め、開錠の専門学校を設立することにしたのだった。
0934デフォルトの名無しさん
2005/12/04(日) 08:40:39プログレスバーは控えめに小さく出して
画面真っ暗にしてディスプレイが鏡のようになるようにする。
「この待ち時間に身だしなみを整えてください。」
0935デフォルトの名無しさん
2005/12/04(日) 08:45:29客からすれば、業務ソフトとゲームソフトの違いなんてないんだよ。
遊園地のアトラクションで長時間乗ってたら料金が多くかかるだろ。
同じように鈍行列車に乗ったほうが料金が多くかかるものなのだと客を躾ければいいのさ。
新幹線?航空旅客機?
技術の無駄だな。
0936デフォルトの名無しさん
2005/12/04(日) 08:54:57>処理が単純なのにやたら重いソフトはMFCを必要以上に使ってるとかバレバレ。
MFCさんをいじめるな!!
そんな奴はAPI直書きでもタコソースを書く。
0937デフォルトの名無しさん
2005/12/04(日) 08:59:40単に16進法文字列からなら数値にしたいだけならstrtol/strtoulなんかで十分だ。
0938デフォルトの名無しさん
2005/12/04(日) 09:01:06http://pc8.2ch.net/test/read.cgi/tech/1059196520/
0939デフォルトの名無しさん
2005/12/04(日) 10:02:59別にMFCが悪いとは言ってないが。
ただ使う場所を間違えると速度が遅くなるかと。
0940デフォルトの名無しさん
2005/12/04(日) 10:05:490941デフォルトの名無しさん
2005/12/04(日) 10:13:34使う場所間違えると遅いのは、STLやboostでも同じッスよ。
つか、ライブラリなるものは全てそうでしょ。
とりあえず、
MFCさんをいじめる人はボクが許さない!!
0942デフォルトの名無しさん
2005/12/04(日) 10:17:35うせろ
0943デフォルトの名無しさん
2005/12/04(日) 10:19:37タコソースってたこ焼きソースか?(藁
0944デフォルトの名無しさん
2005/12/04(日) 10:33:56ありがとうございます。
0945デフォルトの名無しさん
2005/12/04(日) 12:54:240946デフォルトの名無しさん
2005/12/04(日) 13:03:380947デフォルトの名無しさん
2005/12/04(日) 13:31:450948デフォルトの名無しさん
2005/12/04(日) 13:37:360949デフォルトの名無しさん
2005/12/04(日) 13:44:06SetEnvironmentVariable
0950デフォルトの名無しさん
2005/12/04(日) 13:59:13システム環境変数を設定したいのです。
0951デフォルトの名無しさん
2005/12/04(日) 15:15:20vc++でプログラムを作っていますが、
exeファイルの存在するフォルダに
datファイルを、おいて、参照あるいは、書き込みをしています。
datファイルのパスはGetCurrentDirectoryで収得して、
変更できないよう最初1度だけ読み取っています。
それで、違うフォルダーのテキストファイルにアクセスした場合、
そこのフォルダーで、どうも、datファイルを探している場合が、
ちょくちょくあります
そういうことは、皆様ありませんでしょうか。
0952デフォルトの名無しさん
2005/12/04(日) 15:19:520953デフォルトの名無しさん
2005/12/04(日) 15:22:11GetCurrentDirectoryが必ずしもexeのあるフォルダを指すとは限らんよ
0954デフォルトの名無しさん
2005/12/04(日) 15:33:570955デフォルトの名無しさん
2005/12/04(日) 15:46:14GetModuleFileName使えば?
0956デフォルトの名無しさん
2005/12/04(日) 16:01:16PSPから環境変数領域のセグメントを調べて
直接書き換えればよい
ttp://www5c.biglobe.ne.jp/~ecb/assembler2/2_1.html
Windows上なら別プロセスに対しては意味が無くなるので
素直に >>949 の SetEnvironmentVariable 等を使う方がよい
0957デフォルトの名無しさん
2005/12/04(日) 16:08:12WinNT系ならレジストリいじればいいはず。
Win9x系なら非公開APIを使ってシステムの環境変数領域を取得し、
メモリの内容を直接書き換える。
0958デフォルトの名無しさん
2005/12/04(日) 16:09:09>DirectXのシェーダ機能を無理やり使ってPCからキーン・・・という音を出せばGOOD!
おいおい、それ俺のNEC Lavie のノートPCだおwwwwwwっww
画面のスクロールするとキーンwww
0959デフォルトの名無しさん
2005/12/04(日) 18:15:56行いたいのですが、次のようなHookProcではうまくいきません。
具体的には、ダイアログの描画が適切に行われず、画面が乱れます。
どうしたらよろしいでしょうか?
UINT_PTR CALLBACK OFNHookProc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam) {
switch (msg) {
case WM_INITDIALOG : {
MoveWindow(hdlg, 30, 17, 300, 22, FALSE);
CreateWindow("ComboBox", "", CBS_DROPDOWNLIST | WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_GROUP | WS_TABSTOP, 130, 0, 164, 100, hdlg, (HMENU)0x1000, Instance, 0);
return 0;
}
}
return 1;
}
0960デフォルトの名無しさん
2005/12/04(日) 18:32:28>>952さんそうですね。日本語難しいです。
>>953さん。
確かにexeを指すわけではないようなので、
一番最初の立ち上げにカレントフォルダを取得したらいいのかなと思っているのですが。
>>954さんdirやcd なんかしかつかわなくて、
>>955さんへ。
一度試したのですが、最初からうまくいかなくて、
どううまくいかないのか、よくわかりません。
ので、もう少し試してみます。
皆様いろいろありがとうございます。
0961デフォルトの名無しさん
2005/12/04(日) 19:17:22GetModuleFileName (GetModuleHandle(NULL),buff,sizeof(buff)-1);
こいつからdatファイルのパスを生成汁
0962デフォルトの名無しさん
2005/12/04(日) 19:21:49GetModuleFileNameで実行ファイルのパス取得
↓
PathRemoveFileSpecでファイル名部分を削除
↓
PathAppendでそれとdatファイル名をくっつける
↓
datファイルのパス完成
0963デフォルトの名無しさん
2005/12/04(日) 22:16:05駆け出しの頃に誰もが困惑した経験があるのが、バックスラッシュの切り出しだよな。
【初心者へのお題】
以下のフルパスからディレクトリ名とファイル名を分割せよ。
ただし、tchar.hとC標準関数を用いること。Win32APIは使用禁止。
C:\噂の真相\一覧表\赤十字.doc
0964デフォルトの名無しさん
2005/12/04(日) 22:17:200965デフォルトの名無しさん
2005/12/04(日) 22:20:49作ったのですが、いったん検索ダイアログを閉じてしまうと、
CFindReplaceDialogオブジェクトがNullになってしまうので
すが、どうにかして状態を残しておくことはできないでしょうか?
CFindReplaceDialogオブジェクトを残しておきたい理由としまして、
ダイアログを閉じても、F3ボタンで検索の続きができるように
したいのです。どなたか教えていただけないでしょうか?
0966デフォルトの名無しさん
2005/12/04(日) 22:27:020967デフォルトの名無しさん
2005/12/04(日) 22:29:51こちらでどうぞ
http://pc8.2ch.net/test/read.cgi/tech/1131958904/
0968デフォルトの名無しさん
2005/12/04(日) 23:39:26jstrrchrって関数がついてるコンパイラがあったなぁ
0969デフォルトの名無しさん
2005/12/04(日) 23:48:310970デフォルトの名無しさん
2005/12/05(月) 13:10:50//パレット(RGBQUAD構造体)の終わりの位置の取得
offSet = *(LPDWORD)(*buf + 10);
は、コメントの通り、ビットマップメモリの始めから、
パレットの終わりの位置を得る式だと思うんですけど、
(1,24ビットなら54+0、4ビットなら54+16*4、8ビットなら54+256*4)
なぜこの式でそれが得られるのでしょうか。
0971デフォルトの名無しさん
2005/12/05(月) 13:26:22BITMAPFILEHEADERのbfOffBitsパラメータを参照してるだけ
0972デフォルトの名無しさん
2005/12/05(月) 13:30:25bufが指す位置にはBITMAPFILEHEADERがある。
っていうか、そのプログラム合ってる?
offset=のところ、*が1個多くね?
0973デフォルトの名無しさん
2005/12/05(月) 13:42:47bufはLPBYTE*だからあってるよ。
0974970
2005/12/05(月) 13:44:04>>971
なるほど。分かりました。
ビットマップファイルを作るときそこに値を入れますもんね。
>>972
VCとBCCで一応正しく動作しています。
DIB系のは、サイトに載っているのがグローバリー変数なので、
ローカル変数で出来るように意識したんですが、
記述としてよい書き方かは、良く分かりません。
0976デフォルトの名無しさん
2005/12/05(月) 14:18:47ウホ ほんとだ。よく見てなかった。
bufはLPBYTEだと思い込んでた。
0977959
2005/12/05(月) 16:18:410978デフォルトの名無しさん
2005/12/05(月) 16:47:43ハンドルを取得したいと思い
スレッドの中で以下のようにしました
HANDLE hThreadFake = GetCurrentThread();
HANDLE hThreadReal;
DuplicateHandle(
hThreadProcess,
hThreadFake,
hThreadProcess,
&hThreadReal,
0,
FALSE,
0
);
このようにして得られる
ハンドル hThreadReal が
このスレッドのハンドルではなく
なぜか,次にスレッドを Create したときの
ハンドルになります.
なぜこのようになるのでしょうか?
0979デフォルトの名無しさん
2005/12/05(月) 18:01:53それをDispatchMessage()でウィンドウプロシージャに渡す事は解りましたが。
例えばウィンドウA,Bを作成し、ウィンドウAへのメッセージとウィンドウBへのメッセージも
このメッセージループで取得されますよね?そしてDispatchMessageで適当なウィンドウプロシージャへ
送出するのですが。
この送出先というのは、DispatchMessageがMSG構造体のメンバHWND hwndから判断してるのでしょうか?
0980デフォルトの名無しさん
2005/12/05(月) 19:13:52レスが1000件に到達したから
0981デフォルトの名無しさん
2005/12/05(月) 19:16:25それは違う
そこに来るのは自分宛のMsgのみ
DispatchMessageで回ってくるMsgとは別に
Windows自身がMsgキューを持っている
そちらにはどのWindowsへ送るMsgかのハンドルを持っている
0982デフォルトの名無しさん
2005/12/05(月) 19:57:06??????????
別々のウィンドウでも同じアプリケーションのものなら単一のメッセージループですが?(一部除く)
>>979のウィンドウA、Bもそういうことだろ?
0983デフォルトの名無しさん
2005/12/05(月) 21:00:00なんでそんなめんどくさいことしてんの?
lpTemplateNameじゃ駄目なん?
0984デフォルトの名無しさん
2005/12/05(月) 22:09:48その通りにするとちゃんとできました。
>>963さん
char *Getdictory(){
char moji[] = "C:\噂の真相\一覧表\赤十字.doc";
int mojicount = strlen(moji);
char damy[mojicount+1];
int i,j;
for(i=0;i<strlen(moji);i++){
if(moji[mojicount-i]=='\\') break;
}
for(j = 0;j<i;j++){
damy[j] = moji[j];
}
damy[++j]='\0';
return damy;
}
こんな感じでしょうか。コンパイラーは通してないですが、
場違いですみません。
0985デフォルトの名無しさん
2005/12/05(月) 22:13:49for(j = 0;j<i;j++){
ここちがう。
for(j = 0;j<mjicount-i;j++){
まちがいだらけかも。
0986デフォルトの名無しさん
2005/12/05(月) 22:34:28>同じアプリケーション
同じスレッドでしょ
>>984
IsDBCSLeadByte, CharNext あるいは mbcs 対応の crt 関数使わないと
'\\' を正確に判断できないよ
0987デフォルトの名無しさん
2005/12/05(月) 22:39:33int mojicount = strlen(moji);
char damy[mojicount+1];
なんだよこれ
初心者スレ行け
0988デフォルトの名無しさん
2005/12/05(月) 22:44:19>>987
C99という可能性はまだ消えていない。
0989デフォルトの名無しさん
2005/12/05(月) 22:44:56確かに。
スペルはdamyじゃなくてdummyだわな。
話にならん。
0990デフォルトの名無しさん
2005/12/05(月) 22:53:55マウスカーソルがスタティックテキスト(含むグループボックス)の子ウィンドウ上の時にはメッセージ来るようなんですが、
他の子ウィンドウ(エディットコントロールやチェックボックスなど)上だとメッセージが来ないようなのです。
うまくスタティック以外のウィンドウ上でのマウスカーソルの動きをキャッチする方法はないのでしょうか。
0991デフォルトの名無しさん
2005/12/05(月) 23:19:06allocaだ
0992959
2005/12/05(月) 23:57:31任意のhWndを持つウィンドウの追加が動的に行えればそれでも
構いません。ただし、.resファイルなどは一切使用しないことが
条件なのです。どうすればいいでしょうか?
0993デフォルトの名無しさん
2005/12/06(火) 01:01:40Win32API質問箱 Build38
http://pc8.2ch.net/test/read.cgi/tech/1133798345/
0994デフォルトの名無しさん
2005/12/06(火) 01:04:010995デフォルトの名無しさん
2005/12/06(火) 01:12:230996デフォルトの名無しさん
2005/12/06(火) 01:40:29犯罪予告すると、かなりの確率で警察のお世話になるよ。
0997デフォルトの名無しさん
2005/12/06(火) 01:43:280998デフォルトの名無しさん
2005/12/06(火) 02:01:130999デフォルトの名無しさん
2005/12/06(火) 02:02:031000デフォルトの名無しさん
2005/12/06(火) 02:02:1710011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。