Win32API質問箱 Build ..
752:デフォルトの名無しさん
08/02/25 08:50:50
違うよ。Path関数はバッファ長を引数に渡さないからA/W版共にMAX_PATH固定で作ってあるんだよ。
753:デフォルトの名無しさん
08/02/25 09:30:24
ダイアログボックスに関する質問です。
モーダルダイアログボックスで、キャプションバー付き、システムメニュー&最小化ボタン等付き、オーバーラップスタイルで作成しています。
タイトルは開発環境のダイアログプロパティで指定して、メニューも同様です。
普通のウィンドウって左上にアイコンがでますよね?
ダイアログボックスでも普通はアイコンが表示されるんですが、メニューをダイアログボックスに指定する(追加する?)と
このアイコンが表示されなくなってしまうんですが、どうしたらいいでしょうか
メニューバーを付けないと、アイコンは表示されるんですが・・
一応リソースの中身はこういう風になっています。
IDD_DIALOG1 DIALOGEX 32, 32, 155, 81
STYLE DS_MODALFRAME | WS_MINIMIZEBOX | WS_CAPTION | WS_SYSMENU
CAPTION "タイトル"
MENU IDR_MENU1
FONT 9, "MS Pゴシック"
754:デフォルトの名無しさん
08/02/25 10:19:12
指定のフォルダ内にあるファイルのファイル名を全て取得するにはどうすればできますか?
フォルダ内のファイルを全て開きたいんですが
755:デフォルトの名無しさん
08/02/25 10:26:52
FindFirstFile
FindNextFile
756:デフォルトの名無しさん
08/02/25 10:28:28
FindFirstFile、FindNextFileで列挙する
757:デフォルトの名無しさん
08/02/25 10:48:10
ありがとうございます。できました
758:デフォルトの名無しさん
08/02/25 12:01:42
ああ、PATH系ってShell系のAPIね。それならそうかも。前、エクスプローラ使って、
頑張って長いパスのファイル・フォルダ作ろうとしたが、そこらへんの壁越えれなった
759:デフォルトの名無しさん
08/02/25 15:34:45
>>690見て思ったんだが、配列なら_countof使ったらいかんの?
(VC++2005以降だが2003でも定義コピペすれば使える)
760:デフォルトの名無しさん
08/02/25 18:43:09
_countofでもARRAYSIZEでもいいけど、
C89に入れてくれればそれで統一できて良かったのに……。
C99でも遅くない。次の改訂でも遅くないから。
C++だとboost::sizeがあるけど、配列に対してはstd::size_tを返すから、
Win32 APIでは少し使いづらい。定数式が必要なときも使えないし。
761:デフォルトの名無しさん
08/02/25 22:45:14
またboost厨か
C++にはSTLがあるという話をするなら分からんでもないが
標準ライブラリでないboost前提で平然と話を進めるあたり流石としか言えない
762:デフォルトの名無しさん
08/02/25 22:59:44
つうかそんな小物のためにboost入れたくないな
763:デフォルトの名無しさん
08/02/26 01:20:15
CreateWindowExでES_MULTILINEを設定してEDITコントロールを作成すると
WS_TABSTOPを記述してもtabでのコントロール間でのフォーカス遷移がそのコントロールでとまってしまいます。
ES_MULTILINEをスタイルに設定したEDITコントロールでもWS_TABSTOPが使えるようにするにはどうすれば良いですか?
764:デフォルトの名無しさん
08/02/26 01:39:18
sizeof も size_t 返すじゃん?
765:デフォルトの名無しさん
08/02/26 05:48:03
コンパイル時定数です C言語スレでどうぞ
766:デフォルトの名無しさん
08/02/26 07:10:14
>>763
WM_GETDLGCODEの戻り値を
サブクラス化して弄ってやればいいような気がする。
タブが入力できなくなるかもしれんが、それは知らん。
767:デフォルトの名無しさん
08/02/26 14:55:53
lpBufSizeの分領域を確保しようとしてるんですが、HttpQueryInfoでHTTP_QUERY_CONTENT_LENGTH
を指定してもlpBufに何も返ってきてくれません
やっぱりHttpOpenRequestの3個目の引数が間違ってるんでしょうか?
index.htmlや./、../など色々試してみても変らずだったんですが
URLリンク(www.google.co.jp)みたいに/の後に何も無い場合って何を入れればいいですか?
//ソース
hInet=InternetOpen(szClassName,INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0);
if(!hInet)return -1;
hConn=InternetConnect(hInet,"www.google.co.jp",INTERNET_DEFAULT_HTTP_PORT,NULL,NULL,INTERNET_SERVICE_HTTP,0,0);
if(!hConn){
InternetCloseHandle(hInet);
return -1;
}
hReq=HttpOpenRequest(hConn,"GET","/",NULL,NULL,NULL,0,NULL);
if(!hReq){
InternetCloseHandle(hConn);
InternetCloseHandle(hInet);
return -1;
}
if(!HttpSendRequest(hReq,NULL,0,NULL,0)){
InternetCloseHandle(hReq);
InternetCloseHandle(hConn);
InternetCloseHandle(hInet);
}
HttpQueryInfo(hReq,HTTP_QUERY_CONTENT_LENGTH,lpBufSize,&dwSize,NULL);
※lpBufSizeに何も入らない…
768:デフォルトの名無しさん
08/02/26 14:58:53
google の / がどうかは知らないけど、content-length は必ずあるとも限らないしねぇ
769:デフォルトの名無しさん
08/02/26 15:50:39
index.htm、またはindex.html
googleはindex.html
URLリンク(www.google.co.jp) = URLリンク(www.google.co.jp)
770:デフォルトの名無しさん
08/02/26 16:02:39
"/" 等のディレクトリへのアクセスは、普通はサーバーが解釈してくれるんじゃない?
(index.html, index.htm, default.html, index.asp, ...)
771:デフォルトの名無しさん
08/02/26 16:04:49
質問です。
RegisterHotKeyでホットキーを使いたいと思うんですが、
NumLockを外した状態のテンキー(カーソルやらHomeやらEndやらとして動作する)
をホットキーとして利用したいんです。
ところがホットキーの仕様ではいわゆる普通のカーソルキーとテンキー部分との区別が無いので、
どっちのキーを押してもホットキーとして反応してしまいます。
テンキー部分のみをホットキーとして利用できるようなカラクリをこしらえられませんかね。
WM_KEYDOWNとかならExtendedKeyか否かで両者を区別できるんだけどな。
やっぱHookしか無いですかね。
772:デフォルトの名無しさん
08/02/26 16:29:15
>>770
解釈ってーかリダイレクトされるな多くの場合は。
773:デフォルトの名無しさん
08/02/26 17:00:23
>>768-770
ありがとうございます。とりあえず3番目の因数は/でいいんですね
それでも何も入らないのはヘッダに情報が無いからなのかな
調べてたらInternetQueryDataAvailableでサイズ調べれることを知ったのでこれ
を使って確保することにします
774:デフォルトの名無しさん
08/02/26 17:03:09
突っ込んではいけない
775:デフォルトの名無しさん
08/02/26 20:02:33
ごめんInternetQueryDataAvailableで分かるのは一度に読み込めるバイト数だったのね
とりあえずは諦めて読み込めない時は5000000確保することにしました
それでこんな風に書いてみたんですが、yahooやgoogleでは途中までしかダウンロード
されないんですが何故ですか?
ずっとブレークポイントで止めたりググたりして調べてるんだけど分からなくて発狂しそうです
とりあえずエラーチェック無しで書いてみてます
if(lpBufSize[0]=='\0')lstrcpy(lpBufSize,"5000000");
BufSize=(atol(lpBufSize))+1;
lpszBuf=(char *)GlobalAlloc(GMEM_FIXED,sizeof(char)*BufSize);
memset(lpszBuf,0x00,sizeof(char)*BufSize);
char *Buf=lpszBuf;
while(1){
InternetReadFile(hReq,Buf,BufSize,&dwSize);
Buf+=dwSize;
if(dwSize == 0)break;
}
776:デフォルトの名無しさん
08/02/26 20:35:23
戻り値とGetLastErrorの確認
777:デフォルトの名無しさん
08/02/26 20:36:00
URLリンク(msdn2.microsoft.com)
>To ensure all data is retrieved, an application must continue
>to call the InternetReadFile function until the function
>returns TRUE and the lpdwNumberOfBytesRead parameter equals zero.
778:デフォルトの名無しさん
08/02/26 21:33:00
>>776
ありがとう。ループ1回目はエラー無しで2回目からエラーコードERROR_INVALID_PARAMETERがでて
調べると「パラメータが間違ってる」らしいけど何が間違ってるのかわからない…
現在のソースは>>767に>>775をくっつけてる状態です
>>777
完全にダウンロードするには、dwSizeが0かつ関数がTRUEを返すまでループさせないと
いけないってこと?
でもそれだと永遠ループしてしまう
779:デフォルトの名無しさん
08/02/26 21:35:22
実際にはない部分の領域も書けるといっちゃダメって話じゃないの。
要するにBufSizeもちゃんと減らせと。
780:デフォルトの名無しさん
08/02/26 21:41:32
>>779
ありがとう。そういうことっぽかったです
試しにInternetReadFileの3つ目の引数を1にしてみたらいけました。
ただこれだと効率悪そうなのでまた今度ちゃんと考えて計算してみます
インターネットに繋げるのに6時間以上かかってしまったけど上手くいってよかった
781:デフォルトの名無しさん
08/02/26 21:53:13
>>774
「因数」のことか?代わりに突っ込んどくか。
引数(ひきすう)が正しい。
782:デフォルトの名無しさん
08/02/26 22:20:34
if(lpBufSize[0]=='\0')lstrcpy(lpBufSize,"5000000");
BufSize=(atol(lpBufSize))+1;
とか
lpszBuf=(char *)GlobalAlloc(GMEM_FIXED,sizeof(char)*BufSize);
memset(lpszBuf,0x00,sizeof(char)*BufSize);
とか突っ込みどころ満載だな
783:デフォルトの名無しさん
08/02/26 22:36:56
いんすうwwwwwwwwwwwwwwwwww昔の俺だwwwwwwwwwwwww
784:デフォルトの名無しさん
08/02/26 22:50:34
>>782
どう直すと良くなる?
785:デフォルトの名無しさん
08/02/26 22:52:30
今時クリップボード以外でGlobalAlloc使う意味あんの?
786:デフォルトの名無しさん
08/02/26 22:52:31
GlobalAlloc使う理由がわからん
HeapAllocのがよろしいと思うんだけどね 0梅とかシングルスレッド用オプションとか多機能だし
787:デフォルトの名無しさん
08/02/26 22:58:16
スレ的にはnew使うのは無しか
788:デフォルトの名無しさん
08/02/26 23:01:08
lpBufSizeがどこから来ているかわからないが、
初めから整数型にしておけよ。特に関数の引数なら尚更。
789:デフォルトの名無しさん
08/02/26 23:05:12
音訓交じりな"ひきすう"より"いんすう"と読む方が国語的にはセンスがある筈なんだけどね
790:デフォルトの名無しさん
08/02/26 23:06:54
それだと因数と同じ発音だから「ひきすう」と読むと説明される。
791:デフォルトの名無しさん
08/02/26 23:07:03
正直HeapAllocも使わない
malloc/callocやnew使ったほうがデバッグビルドでメモリリーク検出できるし
792:デフォルトの名無しさん
08/02/26 23:08:47
引数が「ひきすう」なら因数は「よりすう」と読むべき。
793:デフォルトの名無しさん
08/02/26 23:11:29
音訓が何か勉強しなおしてこいや
794:デフォルトの名無しさん
08/02/26 23:12:04
>>792
なんてこったいwww
795:デフォルトの名無しさん
08/02/26 23:21:44
美肌(びはだ)
という読み方が気にならないならおk
796:デフォルトの名無しさん
08/02/26 23:25:48
魅せるとか言ってもいいですよ
797:デフォルトの名無しさん
08/02/26 23:27:30
美姫と間違えるくらいなら びはだ でおk
798:デフォルトの名無しさん
08/02/26 23:31:42
淫吸
799:デフォルトの名無しさん
08/02/26 23:32:06
そろそろ用語の読み方スレ池
800:デフォルトの名無しさん
08/02/27 00:41:28
HeapAllocのメリットはCreateして丸ごとDestroyできる
とか
801:デフォルトの名無しさん
08/02/27 05:31:21
VMwareみたいなものを動かしていると、仮想ディスクのファイルの
断片化が著しいですが、固定サイズに設定した時のWindowsの
ページファイル(意味伝わるでしょうか?)の様に、
ディスクの物理的な、ある領域区画だけしか使わないようにファイルを
更新する方法ってないでしょうか?
デバイスドライバを書かないとだめでしょうか?
802:デフォルトの名無しさん
08/02/27 07:02:08
defragしたいの?
803:デフォルトの名無しさん
08/02/27 07:08:16
>>801
FDISKで小さい区画を作ってそこだけ使わせればいいじゃん
804:デフォルトの名無しさん
08/02/27 12:48:39
ウィンドウのタイトルバーをクリックされて何もせず離された時って
プロシージャにはなんていうメッセージが送られるんでしょうか?
805:デフォルトの名無しさん
08/02/27 13:05:33
Spy++で監視
806:デフォルトの名無しさん
08/02/27 13:16:29
質問です。
クリップボードへのコピーが発生したとき、
それが自分のプロセスからかどうかを調べる
一般的な方法ってあるのでのしょうか?
お願いします。
807:デフォルトの名無しさん
08/02/27 16:06:08
コピーが発生したとき通知するAPIはあるけど
プロセスまではわかんなかった気が
SetClipboardData見てれば
808:卍凹
08/02/27 18:01:52
質問です
ただいまゲーム作成中なのですが他のPCで実行したらバグが起こりました
環境
OS XP home
開発環境 VS 2005
Win32API
C言語で作成
何を書いていいかわからないのでほかいってくれればすぐに書きます
バグは自分の開発しているPCと他の自分のPCは実行できるが、
なぜか友人のPCでは途中で動きが遅くなりフリーズしてしまう…(;_:)こんな感じです。
809:デフォルトの名無しさん
08/02/27 18:25:35
エスパーのさらに上を期待してるのかw
810:デフォルトの名無しさん
08/02/27 18:29:51
スペック足りてないんじゃね
811:デフォルトの名無しさん
08/02/27 18:34:30
>>808
1208行目のループ文が無限ループしてる
812:デフォルトの名無しさん
08/02/27 18:38:57
>>808
メモリとかリソースの解放漏れ
813:卍凹
08/02/27 18:47:15
>>810
自分のPCよりスペックの高いPCを友人が持っていたのでためしたが駄目だった
んでスペックが足りないってこともないと思います。
>>811 812
812だとすれば自分のPCでも症状は出ると思うのですけど、今のところはでていません
814:デフォルトの名無しさん
08/02/27 18:56:33
今日からスッドレの勉強はじめました。
歯痛制御って何ですか?
セマホって何ですか?
クリテカルスポットって何ですか?
815:デフォルトの名無しさん
08/02/27 19:32:43
そのまま勉強を続ければ時季に分かるだろう。
816:デフォルトの名無しさん
08/02/27 20:13:54
>>808
それはその友人の罠だな。すぐ逃げた方がいい
817:デフォルトの名無しさん
08/02/27 20:21:27
クリティカルセクションつかって
会社の女のまんこに挿入したいのですが、
どうすればいいですか?
818:デフォルトの名無しさん
08/02/27 20:33:45
自分では面白いと思って書き込むんだろうね。
リアルでも空気が読めずに相手にされないのがもろわかりな内容。
819:デフォルトの名無しさん
08/02/27 20:53:17
>>818
820:卍凹
08/02/27 20:53:52
自分のPCはCeleronで友人のはPen4これぐらいしか大きなちがいはないのですが
なぜ動かないのでしょうか?うpするからみてもらえませんか??
821:デフォルトの名無しさん
08/02/27 21:10:15
嫌です
822:デフォルトの名無しさん
08/02/27 21:13:34
何故、他人が作ったもののデバッグをやらなきゃいかんのか、と
823:卍凹
08/02/27 21:15:39
すいませんでしたm(__)m
824:卍凹
08/02/27 21:16:22
すいませんでした
825:デフォルトの名無しさん
08/02/27 21:35:06
マジで回答期待してるなら
うpロダにソース晒せ
826:デフォルトの名無しさん
08/02/27 21:47:26
俺もゲームやりたい
827:デフォルトの名無しさん
08/02/27 22:03:14
CeleronがCovingtonなら、十分すぎるほど違いがあるな。
828:デフォルトの名無しさん
08/02/27 23:57:47
フォントの10.5ポイントとかとCreateFontの高さを相互変換するにはどうしたら良いですか?
829:デフォルトの名無しさん
08/02/28 00:04:25
MFC や WTL の CreatePointFont の実装をパクる
830:デフォルトの名無しさん
08/02/28 00:07:08
ポイント/72*DCのdpi = pixelという計算式がある。
MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY), 72);
831:デフォルトの名無しさん
08/02/28 00:30:14
>>829-830
ありがとうございます。
そこらへんから調べてみます。感謝。
832:771
08/02/28 00:50:22
誰も覚えてないだろうけど>>771はどうにもならんかったのでフックで何とかした。
以上報告まで。
833:デフォルトの名無しさん
08/02/28 04:07:03
MSDNライブラリを読むと、BitBltやStretchBltは使えない環境もあるようですが、
AlphaBlendやTransparentBltにはそのような記述がないということは、
BitBlt等はデバイス(GPU?)が行い、AlphaBlend等は全てCPUが処理するということで合ってますか?
834:デフォルトの名無しさん
08/02/28 07:00:34
Vista以降を除けば合っていない。
GetDeviceCapsのSHADEBLENDCAPSで対応状況が解る。
835:デフォルトの名無しさん
08/02/28 07:01:10
AlphaBlendやTransparentBltはハードウェア処理できたらハードウェア処理するができなかったらソフトウェア処理だったと思う
836:デフォルトの名無しさん
08/02/28 10:40:58
エクスプローラやAPIのCopyFileを使った巨大ファイルのコピー中に(完了まで数分掛かる)
現時点でのコピーされたバイト数を取得する方法は無いでしょうか?
よろしくお願い致します。
837:デフォルトの名無しさん
08/02/28 10:49:50
CopyFileEx
838:デフォルトの名無しさん
08/02/28 22:22:29
BitBltが使えない環境なんて考えたことない。
そんなのが実在するなんて恐ろしいわ。
839:デフォルトの名無しさん
08/02/28 22:41:33
BItBltはオペレータの組み合わせ具合で
ドライバのまずい部分をつつく可能性はあるね
840:デフォルトの名無しさん
08/02/29 00:52:06
>>833
「HDCは画面だけのものじゃない」ってのをよく考えれ。
>>836
アプリが動かしてるのを取得したいんならフックするのがベストかな。
自前ならどーとでもお好きなように。
841:デフォルトの名無しさん
08/02/29 18:38:33
質問があります。
プログラム中で、マウスホイールを禁止したいと思ってます。
またはプログラム中でホイール動作時の移動量情報を自分で決めたいと思っています。
できれば、WM_CREATE内で。。
ホイール動作時にWM_MOUSEWHEELメッセージが来るのは分かったのですが。。
環境はVC.net + SDK です。よろしくお願いします
842:デフォルトの名無しさん
08/02/29 18:44:39
C#のArrayListみたいなのに相当する
出し入れ自由なコレクションって自作するしかない?
843:デフォルトの名無しさん
08/02/29 18:56:20
どう考えても、OSの面倒見てくれる範囲じゃないだろ
844:デフォルトの名無しさん
08/02/29 19:17:04
大抵のライブラリにはあるだろ
845:デフォルトの名無しさん
08/02/29 19:58:24
CLISTってのはMFCとかいうのの機能なんでしょ?
846:デフォルトの名無しさん
08/02/29 19:59:47
>>842
どの言語?いずれにしてもその言語のスレ行きな、ここはスレ違いだから。
847:デフォルトの名無しさん
08/02/29 21:38:35
>>842
Dynamic Pointer Arrayという物がある。
比較的最近のSDKでないと定義されてないけど実はWin95でも使える枯れたAPIだったりする。
848:デフォルトの名無しさん
08/02/29 22:09:33
>>841
WM_MOUSEWHEELでdeltaを好きなようにしたらいかんべ
849:デフォルトの名無しさん
08/02/29 22:16:20
GUI部分と実際の処理部分を別々のソースファイルに書いています。
内部処理のソースファイルで定義した関数から
SetWindowTextでEDITコントロールの内容を変更出来ないんですけど、原因分かりますか?
850:デフォルトの名無しさん
08/02/29 22:16:58
WinAPI難しいなぁ
851:デフォルトの名無しさん
08/02/29 22:21:18
URLリンク(wisdom.sakura.ne.jp)
テンプレの上記のサイトのメッセージボックス項の
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance ,
PSTR lpCmdLine , int nCmdShow ) {
CHAR chStr[128];
wsprintf(chStr , "インスタンスハンドル : %d" , hInstance);
MessageBox(NULL , chStr , TEXT("Kitty on your lap") , MB_OK);
return 0;
}
上記のコードを実行しようとすると
error C2664: 'wsprintfW' : 1 番目の引数を 'CHAR [128]' から 'LPWSTR' に変換できません。
error C2664: 'MessageBoxW' : 2 番目の引数を 'CHAR [128]' から 'LPCWSTR' に変換できません。
このようなエラーが出ます
chStrをLPWSTR[128]で宣言してもエラーは相変わらずです。
これはどうすればいんでしょうか?コンパイラはVS2005です
852:デフォルトの名無しさん
08/02/29 22:23:54
>>851
マルチバイト文字セットに変更汁
853:デフォルトの名無しさん
08/02/29 22:29:54
>>851
CHAR→TCHAR
>chStrをLPWSTR[128]で宣言してもエラーは相変わらずです。
ってLPWSTR chStr[128]ってしたってこと?
854:デフォルトの名無しさん
08/02/29 22:36:59
またWISDOMかw
855:デフォルトの名無しさん
08/02/29 22:39:24
>>852
>>853
TCHARにすると
error C2664: 'wsprintfW' : 2 番目の引数を 'const char [26]' から 'LPCWSTR' に変換できません。
こんなエラーが出ます
このエラーからすると第一引数にはchar型が入るように見えるんですが、違う、のかなぁ
>>chStrをLPWSTR[128]で宣言してもエラーは相変わらずです。
>ってLPWSTR chStr[128]ってしたってこと?
です、エラーからしてそういうことかなぁと思いまして
856:デフォルトの名無しさん
08/02/29 22:40:49
>>855
TCHAR chStr[128];
wsprintf(chStr , TEXT("インスタンスハンドル : %d") , hInstance);
857:デフォルトの名無しさん
08/02/29 22:41:54
* UNICODE, ANSI ビルド
* TCHAR, CHAR, WCHAR 型
* TEXT, _T マクロ
この辺についてちゃんと調べるなりドキュメント読んだほうが良いと思う
858:デフォルトの名無しさん
08/02/29 22:48:20
>>855
違うよ。>>852の意味は
[プロジェクト]-[プロパティ]-[構成プロパティ]-[全般]-[文字セット]をマルチ バイト文字セットを使用する
に変更するという意味だよ。
859:デフォルトの名無しさん
08/02/29 22:50:30
error C2664:〜〜〜〜 'A’ から 'B' に変換できません。
※ABは char / wchar_t / LPSTR / LPWSTR / LPCSTR / LPCWSTR など
巷のサンプルコードがこのようなコンパイルエラーを発生させる場合、文字セットが適切ではないです。
開発環境の文字コードの設定をソースにあわせるか、ソースを開発環境の設定にあわせるかしましょう。
方法は各々の開発環境のスレへどうぞ。
この辺の文言がテンプレにあったほうがいいような気がするがお前らはどう思うか
860:デフォルトの名無しさん
08/02/29 22:50:41
>>849
コード見ないとわかんね
ここエスパースレじゃねえし
861:デフォルトの名無しさん
08/02/29 22:52:53
>>860
分からないなら無理に答えていただく必要はありません
862:デフォルトの名無しさん
08/02/29 22:55:44
>>861なりすまし乙
>>860エスパーレスが欲しかったんですけど、ダメですかねえ
863:デフォルトの名無しさん
08/02/29 22:58:31
違うプロセスのウィンドウに SetWindowText を使っているとか
864:デフォルトの名無しさん
08/02/29 22:58:37
無茶言うなw
865:デフォルトの名無しさん
08/02/29 23:36:24
>>863
SetWindowText(WM_SETTEXT)は他プロセスでも平気じゃなかったか
866:デフォルトの名無しさん
08/03/01 00:04:58
>>865
WM_SETTEXT は大丈夫だけど SetWindowText は駄目
URLリンク(msdn2.microsoft.com)
>To set the text of a control in another process,
>send the WM_SETTEXT message directly instead of calling SetWindowText.
867:デフォルトの名無しさん
08/03/01 00:15:11
ちょっと占ってみると
HWNDを間違えてる、とでますた。
868:855
08/03/01 00:27:56
ありがとうございました、1~10辺り200回くらい読みなおしてきます
869:デフォルトの名無しさん
08/03/01 00:47:18
VCってどの辺のバージョンからUnicodeビルドがデフォになってるの?
870:デフォルトの名無しさん
08/03/01 00:59:55
2005。Expressロハ化と軌を一にしており
全国の初心者をドツボにハメた。
871:デフォルトの名無しさん
08/03/01 01:07:34
なんかしらんが、Unicodeが楽すぎ。マルチバイトで文字区切りなんて悪夢だ。
872:デフォルトの名無しさん
08/03/01 01:15:58
>>871
で、油断してるとサロゲートペアとかにはまると。
873:デフォルトの名無しさん
08/03/01 01:19:47
UTF16じゃなくて32ならよかったのにな
874:デフォルトの名無しさん
08/03/01 01:32:53
まだWin98が現役だというのに・・・
875:デフォルトの名無しさん
08/03/01 01:34:54
現役じゃねえよバカ
LANケーブル引っこ抜け
876:デフォルトの名無しさん
08/03/01 02:47:15
Windowsフォームアプリケーションでデザイナを使って生成されるコードはMFC?
877:デフォルトの名無しさん
08/03/01 02:47:54
開発環境のスレで聞け
878:デフォルトの名無しさん
08/03/01 03:17:58
>>870
VS2005インスコして確かめてみたら、マジだ
なんでデフォの動作をころころ変えるかねぇ・・・
つうかメモリ128MBでVS2005が予想以上に重いw
879:デフォルトの名無しさん
08/03/01 03:24:58
オレは今どきデフォでMBCSの方が嫌だよ
880:デフォルトの名無しさん
08/03/01 04:49:41
>>849ですが解決しました、Win32APIと関係無いところでミスってたようです。
どもでした。
881:デフォルトの名無しさん
08/03/01 04:58:54
ktbr
882:デフォルトの名無しさん
08/03/01 07:44:23
ころころ動作を変えてねぇだろ。
いままでずっとMBCSだったじゃないか。
というかおれとしては2002か2003の時点で変えてほしかった。
883:デフォルトの名無しさん
08/03/01 08:41:54
2005でもコマンドラインからclやnmake叩いてコンパイルすればデフォはMBCSじゃないの?
884:デフォルトの名無しさん
08/03/01 08:53:56
プロジェクト作ったときに、デフォルトで/DUNICODE /D_UNICODE
あたりが定義されるだけだからなー。
だから、nmakeについてはMAKEFILEをどうやって作ったかにもよるんじゃね?
あと、環境変数CLとかw
885:デフォルトの名無しさん
08/03/01 10:35:16
つーか今時メモリ128MBで開発しようなんて思うほうがどうかしてるよ。
886:デフォルトの名無しさん
08/03/01 11:23:20
UNICODE文字が全角幅か半角幅か簡単に調べる方法はありますか?
デバイスコンテキストに固定長フォントセットしてGetTextExtentPoint32()呼び出すしかないでしょうか?
887:デフォルトの名無しさん
08/03/01 11:36:01
一部罫線系の記号なんかは、フォントによって
全角半角の扱いがちがったりするし。
UNIXなら、wcwidthでいけるんだけどね。
まー、64Kbit程度のテーブル一回作れば終わるわけだし作れば。
888:デフォルトの名無しさん
08/03/01 11:37:29
日本語ターゲットなら、SJISに変換して何バイト取るか調べる手もあるか。
BMP外にあるSJIS表現不能な連中はシラネ。
889:デフォルトの名無しさん
08/03/01 11:39:19
>>885
エミュレータだよ
>>886
>>462
890:886
08/03/01 13:03:39
>>887-888
ありがとうございます。
記号なんかを含めるとそっちのほうが手っ取り早い気もしますね。
>>889
同じスレ内に答えあったとは・・・
ありがとうございました&すいませんでしたszo
891:デフォルトの名無しさん
08/03/01 13:12:53
>>889
エミュレータでしかもメモリ128KBなら、さくさく動くと思う方がおかしい。
892:デフォルトの名無しさん
08/03/01 13:52:39
>>891
うむ、たしかにそれは桁違いにおかしいな。
893:デフォルトの名無しさん
08/03/01 14:05:19
今時128kのメモリなんて手に入らないだろw
894:デフォルトの名無しさん
08/03/01 14:08:47
今時のCPUのキャッシュよりも小さいな。
895:デフォルトの名無しさん
08/03/01 14:41:47
64KBのおれのマシンじゃ
このスレのdatすら入らないんだぜ(現在194KB)
896:デフォルトの名無しさん
08/03/01 16:43:22
まぁ、基本的に文字が幅をもってるじゃなくてグリフが持ってるんだけどね。
897:デフォルトの名無しさん
08/03/01 18:13:11
ZwSetSystemInformationの使い方教えて〜
898:デフォルトの名無しさん
08/03/01 18:59:39
>>895
オンメモリ前提なんてここ数年の出来事なんだぜ
もうちょっと前はオンディスクもほぼ不可能で人間様の手と手書きラベルが前提だったんだぜ
もちっとまえはきりが無いので止めとく
899:デフォルトの名無しさん
08/03/01 19:00:53
第一引数に動作モードの定数
第二引数に結果を受け取る構造体のポインタ
第三引数の第二引数が示す構造体のサイズ
戻り値はNTSTATUS
構造体と定数は目的によるのでぐぐる
900:デフォルトの名無しさん
08/03/01 19:02:57
ASIC内に内蔵されているメモリとかだと、128Kはそれなりに。
901:デフォルトの名無しさん
08/03/01 19:30:01
WindowsをスタンバイにするAPIは何でしょうか?
902:デフォルトの名無しさん
08/03/01 19:38:13
最小化されている任意のウィンドウの通常時のサイズを取得するには
どうすればいいでしょうか?
903:デフォルトの名無しさん
08/03/01 20:23:34
GetWindowPlacement
904:デフォルトの名無しさん
08/03/01 22:26:34
IShellFolder::ParseDisplayNameの第3引数
MSDNの説明では入力専用のはずなのに、LPCWSTRじゃなくてLPWSTRです。
これは間違いという事でconstな文字列渡してもいいんでしょうか?
905:デフォルトの名無しさん
08/03/01 23:54:43
ぜんぜん知らんけど、コンパイラに怒られなかったら大丈夫なんじゃね
コンパイラに怒られたら、渡す以前の問題だわな
906:デフォルトの名無しさん
08/03/02 00:14:17
さー?
CreateProcessみたいな例もあるし、
いまのMSDNでconstじゃないなら、一応従っておいたほうがいいんじゃない?
907:デフォルトの名無しさん
08/03/02 04:09:43
フォルダを作成すると通知コードはどんなのが来るのでしょうか。
908:デフォルトの名無しさん
08/03/02 04:19:46
来ねーよ
自分で待ち構えてないとな
909:907
08/03/02 05:01:13
>>908
ありがとうございます。
WM_で探してみたけどたしかにそれらしいものはありませんでした。
調べてみたところ、
RemoveDirectory()、CreateDirectory()はkernel32.dllの関数らしい
のですが、これをフックして、戻り値を調べればわかるような気がしました。
難しそうなので、まだ自分には早そうですね。
910:デフォルトの名無しさん
08/03/02 05:05:17
>>907
そのディレクトリを作成したディレクトリをFindFirstChangeNotification()で監視しておけばいい。
どういうパラメータを設定すればいいかは忘れた。
911:907
08/03/02 05:23:18
>>910
ありがとうございます。
これは相当使えそうです。
912:デフォルトの名無しさん
08/03/02 06:15:29
ファイルやフォルダが作られる度に全ウィンドウへ WM_ なんて投げてたら重くてやってられないだろw
>>911
ReadDirectoryChangesW を使った方がいい
913:デフォルトの名無しさん
08/03/02 07:16:31
今回は選ばれない可能性が高いが、選択肢としてSHChangeNotifyRegisterもある
914:907
08/03/02 12:07:17
>>912 >>913
ありがとうございます。
ファイルなど個別に調べる場合に使えそうです。
915:デフォルトの名無しさん
08/03/02 12:35:32
ダイアログボックスのプロシージャの戻り値って、BOOLかINT_PTRどっちが正解ですか?
916:デフォルトの名無しさん
08/03/02 12:37:27
BOOL
917:デフォルトの名無しさん
08/03/02 12:40:46
64 ビットのことも考えると INT_PTR じゃないの?
918:デフォルトの名無しさん
08/03/02 12:51:00
BOOL=INT_PTRだとばかり思ってたらwindef.hに
typedef int BOOL;
と書いてあって鬱になった俺が通りますよ
919:デフォルトの名無しさん
08/03/02 12:55:13
DLGPROC 型の定義を見てみたら?
仕様としては TRUE/FALSE 返すから BOOL なはずではあるけど、
知らない間に仕様拡張されてたら知らん。
920:デフォルトの名無しさん
08/03/02 13:18:00
あれってポインタ値以内ならなんでも返せるんじゃなかったっけ?
921:デフォルトの名無しさん
08/03/02 13:21:46
>通常、ダイアログボックスプロシージャはメッセージを処理した場合に 0 以外の値(TRUE)を、
>処理しなかった場合に 0(FALSE)を返すべきです。
>ダイアログボックスプロシージャが 0(FALSE)を返した場合、
>ダイアログマネージャはそのメッセージに応答して既定のダイアログ処理を実行します。
>
>ダイアログボックスプロシージャが、特定の戻り値を必要とするメッセージを処理する場合、
>ダイアログボックスプロシージャは 0 以外の値(TRUE)を返す直前に
>SetWindowLong(hwndDlg, DWL_MSGRESULT, lResult) を呼び出し、
>希望の戻り値を設定するべきです。
>0 以外の値(TRUE)を返す直前に、
>SetWindowLong を呼び出さなければならないことに注意してください。
>それより早く呼び出すと、ネストされたダイアログボックスメッセージが、
>DWL_MSGRESULT の値を上書きする可能性があります。
って書いてあるけど。
922:デフォルトの名無しさん
08/03/02 13:42:58
URLリンク(msdn2.microsoft.com)(VS.85).aspx
MSDNにはINT_PTRと書いてある
923:デフォルトの名無しさん
08/03/02 13:46:12
しかし、MSDN はたまに嘘書いてるからなあ。
924:デフォルトの名無しさん
08/03/02 13:50:11
例えば?
925:デフォルトの名無しさん
08/03/02 14:07:04
GetModulePathName の MAX_PATH 以上のパスを取得する方法が
実は使えないとか?
926:デフォルトの名無しさん
08/03/02 14:14:50
>>438
セットアップファイル群の中にそれらしいcabファイルがあるから、
VS2008が入ってない環境だと入るのかもしれない。
927:デフォルトの名無しさん
08/03/02 15:02:29
すげー亀レスだな
928:デフォルトの名無しさん
08/03/02 15:05:52
最近のSDK
typedef INT_PTR (CALLBACK* DLGPROC)(HWND, UINT, WPARAM, LPARAM);
古いSDK (VC6付属)
typedef BOOL (CALLBACK* DLGPROC)(HWND, UINT, WPARAM, LPARAM);
929:デフォルトの名無しさん
08/03/02 15:25:55
仕様変わったのか・・・。
何で INT_PTR にしたんだろう?
930:デフォルトの名無しさん
08/03/02 15:31:10
TRUEかFALSEを返すをかえす仕様なんだから、BOOLだったんだろ。
INT_PTRにかえた理由は、64bitコードでは64bitにしたかったんじゃない?
931:デフォルトの名無しさん
08/03/02 15:33:23
せめて 32/64 を切り替えるような BOOL 型を導入するべきだと思うんだけどな。
932:デフォルトの名無しさん
08/03/02 15:33:35
TRUEFALSEっていうよりはなから0かそれ以外か負の数っていってほしい
933:デフォルトの名無しさん
08/03/02 15:34:29
負の数はここでは関係ないと思うが。
GetMessage は別だが。
934:デフォルトの名無しさん
08/03/02 17:09:07
GetMessageは未だに使い方間違ってる例を見かけるなぁ
935:デフォルトの名無しさん
08/03/02 17:16:56
VS 2008 EE の 「Windows アプリケーション」のテンプレートでも
>while (GetMessage(&msg, NULL, 0, 0))
吐き出すんだけど
936:デフォルトの名無しさん
08/03/02 17:30:22
GetMessageって-1とかちゃんと見てないとアチョーなんだっけ?
937:デフォルトの名無しさん
08/03/02 17:31:30
実はエラーなんて返さないのかもしれない・・・。
938:デフォルトの名無しさん
08/03/02 18:09:39
いまだにIEとかメモリ無くなるギリギリまで
複数インスタンス立ち上げると
リソースがボロボロ欠けたウィンドウが開いて
そのうち黙り込んで応答もしなくなって
システム全体再起動しないといけなくなるのは
IEの中のひとがメモリ確保時にエラーチェック
してないからだと思うんだけどどう?
939:デフォルトの名無しさん
08/03/02 18:21:27
100個近くWin95時代のブラクラ状態でIE立ち上げてもヌルヌルにはなるけどシステム落とすまでは逝かないぜ?
環境になんかヘンなもん突っ込んでるんじゃねーの?
940:デフォルトの名無しさん
08/03/02 18:36:41
デスクトップヒープの枯渇じゃないの。
941:デフォルトの名無しさん
08/03/02 18:42:50
ここで質問させてください。
とりあえずC言語の基本を学んだので、ゲーム作りをしてみたいと思った
のですが、Win32APIで1からゲーム作りをするのは効率が悪いのでしょうか?
DirectXから学んだ方がいいのでしょうか?
942:デフォルトの名無しさん
08/03/02 18:45:42
どっちでもいいんじゃない
943:デフォルトの名無しさん
08/03/02 18:47:52
DirectX自体は、DXライブラリっての使えば簡単に扱えるよ。
ゲーム作りの本質と関係ないところは、既存のライブラリを利用するので充分。
俺に言わせて貰えば、ゲームみたいなシビアというか、ちょっと変わった処理が多いような場合は、
WinAPI直接叩く方が、やりたいことが直にやれるし、ベンキョにもなっていいと思う。
944:デフォルトの名無しさん
08/03/02 18:49:31
ある程度頑張ったら、
自分で全部やってみるのも勉強になると思う。
945:デフォルトの名無しさん
08/03/02 18:51:55
C++をやりながら、DirectX9か10をやるといい。
C++は使えないと困ることになる。
946:デフォルトの名無しさん
08/03/02 18:52:29
C で DirectX 使うのは面倒いからな。
947:デフォルトの名無しさん
08/03/02 19:00:37
C#のほうがいいと思う
948:デフォルトの名無しさん
08/03/02 19:01:20
折角高速さを追求してるのに
C++ 使わないのはもったいなさ過ぎる。
949:デフォルトの名無しさん
08/03/02 19:06:08
レスありがとうございます。
C++は現在勉強中です。APIでもいろいろ出来そうなのでこれも並行して
勉強しようと思います。
それと最後に、Win32APIでは、PS2レベルの滑らかな3D描写は出来ないのでしょうか?
950:デフォルトの名無しさん
08/03/02 19:10:15
そもそも Win32API には 3D 描画機能が用意されてないから
全部ソフト的に対処する必要があるぜ。
要するに 3D 描画エンジンを自作するという。
しかもハードウェアの助けが得られないから遅い。
まあ、DirectX を通さずにグラフィックボードを直接操作するんなら話は別だが、
あまり意味がないよね。
951:デフォルトの名無しさん
08/03/02 19:12:47
これを見て勉強しる!
URLリンク(www.geocities.jp)
952:デフォルトの名無しさん
08/03/02 19:16:00
>>950
OpenGLがあるじゃないか
微妙な所だがChoosePixelFormatなんかはgdi32にあるからWin32APIということにする
953:デフォルトの名無しさん
08/03/02 19:29:29
DIRECTXはマニアがやってたハードを解析して最大限の性能を引き出す
というのをMSが肩代わりしてくれる仕組みだ
winAPIでは3Dは無理
954:デフォルトの名無しさん
08/03/02 19:45:52
こんなのもあるよ
DarkGDK
URLリンク(www.microsoft.com)
955:デフォルトの名無しさん
08/03/02 19:59:43
>>953
全角厨キモイ
956:デフォルトの名無しさん
08/03/02 20:02:36
全角だけでなく、大文字小文字も無茶苦茶。
3 は半角で D が全角だったりも。
957:デフォルトの名無しさん
08/03/02 20:59:59
少し話題に上ったので GetMessage() の戻り値の話をさせてください。
どうやら GetMessage() で -1 が返るのは、引数が無効な値の場合に
限られるようです。つまり msg を MSG 構造体とすると、
(A) GetMessage(&msg, hWnd, 0, 0);
(B) GetMessage(&msg, NULL, 0, 0);
(A) では -1 かどうかのチェックをした方がいいですが、(B) のような
より一般的なケースではチェックは不要ということになります。
なお、MSDN に載っているのも (A) に対する警告と思われます。
958:デフォルトの名無しさん
08/03/02 21:01:04
なるほど。
959:デフォルトの名無しさん
08/03/03 00:30:44
でもそれはFor exampleとして載っているだけであって
それ以外ないとは書かれていないわけで
960:デフォルトの名無しさん
08/03/03 01:15:16
>>957
参考になったが
>>959
という意見もあるし結局どっちなんだろう
961:デフォルトの名無しさん
08/03/03 01:24:28
俺は心配性だから常に-1が返ってくる可能性があると思っている。
962:デフォルトの名無しさん
08/03/03 01:27:35
そもそも"handle the error and possibly exit"って具体的にどうすればいいのやら・・・
問答無用でbreakするようなコードだとWM_DESTROYを通さないから色々リークするだろうし、
WTLはcontinueしてるけど、毎回-1が返ってくるような状況だとループから抜け出せないし
正直-1の場合は無視でいいとオモタ
963:デフォルトの名無しさん
08/03/03 01:31:29
リークとか気にしないでreturnしています。
964:デフォルトの名無しさん
08/03/03 01:35:23
とりあえずGetLastError()だけどっかに吐いてから即死します。
965:デフォルトの名無しさん
08/03/03 12:59:40
なんで誰も>>915〜>>932の件の正解を書かない?
一例として、WM_CTLCOLOR*** は「HBRUSHを直接返さなければならない」(DWL_MSGRESULTは禁止)
だから64bitはINT_PTRじゃなきゃまずいんだよ。
HBRUSHの中身が64bitになる実装は存在しないとかいうのは無しね。
If the dialog box procedure processes a message that requires a
specific return value, the dialog box procedure should set the
desired return value by calling
SetWindowLong(hwndDlg, DWL_MSGRESULT, lResult) immediately before
returning TRUE. Note that you must call SetWindowLong immediately
before returning TRUE; doing so earlier may result in the
DWL_MSGRESULT value being overwritten by a nested dialog box
message.
The following messages are exceptions to the general rules stated
above. Consult the documentation for the specific message for
details on the semantics of the return value.
WM_CHARTOITEM
WM_COMPAREITEM
WM_CTLCOLORBTN
WM_CTLCOLORDLG
WM_CTLCOLOREDIT
WM_CTLCOLORLISTBOX
WM_CTLCOLORSCROLLBAR
WM_CTLCOLORSTATIC
WM_INITDIALOG
WM_QUERYDRAGICON
WM_VKEYTOITEM
966:デフォルトの名無しさん
08/03/03 13:28:18
だったら BOOL を INT_PTR にするという選択肢もあったはずでは
わざわざ 64-bit 対応の為に関数宣言を書き換える必要があるなんて馬鹿げている
967:デフォルトの名無しさん
08/03/03 13:36:16
大量に使われているBOOL(ほとんどは1ビットで足りる用途)を根こそぎ64bitにしたらそれこそ無駄だろうに
968:デフォルトの名無しさん
08/03/03 13:49:14
ダイアログプロシージャと違って、こっちが実装する関数ではないけれど、
VirtualAllocとかにも、大きさを指定する引数(今はSIZE_T)が
以前はDWORDだったとか似たような事例は他にもあるな。
969:デフォルトの名無しさん
08/03/03 14:00:34
猫でものページの第123章 メモリマップト・ファイルのソースをコピペして
実行したんですが「ファイルマッピングのオープン失敗」のメッセージが出て
最後まで実行できませんでした。どこが悪いのでしょうか教えてください。
ソースのページは
URLリンク(www.kumei.ne.jp)
でコピペして実行したcppファイルもあげときます
URLリンク(kansai2channeler.hp.infoseek.co.jp)
すいませんが教えてください
970:デフォルトの名無しさん
08/03/03 14:04:35
IDM_READ呼ぶ前にIDM_WRITE呼んでるのか?
971:デフォルトの名無しさん
08/03/03 14:53:13
>>967
つ bool / BOOLEAN
972:デフォルトの名無しさん
08/03/03 15:05:23
>>971
APIが使ってるBOOL書き換えてどうするんだよw
973:デフォルトの名無しさん
08/03/03 15:16:02
>>972
何が言いたいのかよく分からん
そもそも引数や返値を int 型からポインタ型 (INT_PTR) に置き換えても何ら無駄にはならない
974:デフォルトの名無しさん
08/03/03 15:47:44
しいて言えばスタック使用量倍増?
975:デフォルトの名無しさん
08/03/03 16:00:23
戻り値はレジスタだろうからスタックは使わないんじゃない?
976:デフォルトの名無しさん
08/03/03 16:10:57
引数もWin x64 ABIではスタックアクセスは64bit単位じゃなかったっけ?
何れにしろREXプレフィックスでコードサイズは変わるかも
977:デフォルトの名無しさん
08/03/03 16:48:39
Win32 API のヘルプとか網羅的なマニュアルなど、入手先はどこですか …
978:デフォルトの名無しさん
08/03/03 16:51:15
>>977
>>1-2にもリンクがあるMSDNライブラリがそれ。
979:デフォルトの名無しさん
08/03/03 17:27:32
>>975
それを変数に格納するってことじゃない?
980:デフォルトの名無しさん
08/03/03 18:39:39
リソースのアイコンのバイナリを読み込んでchar[]型の配列に代入するにはどうすれば良いですか?
981:デフォルトの名無しさん
08/03/03 19:42:46
LockResourceとかかな
982:デフォルトの名無しさん
08/03/03 22:33:40
MENUITEMINFO mii;
ZeroMemory(&mii,sizeof(mii));
mii.cbSize=sizeof(MENUITEMINFO);
mii.fMask=MIIM_FTYPE;
mii.dwTypeData=L"ファイル";
HMENU menu=::CreateMenu();
::InsertMenuItem(menu,0,0,&mii);
::DrawMenuBar(hwnd);
ちゃんとウィンドウ表示してからこれしたらメニュー表示されない・・・なんで?
983:デフォルトの名無しさん
08/03/03 22:35:02
SetMenuは?
984:デフォルトの名無しさん
08/03/03 23:36:08
ベジエ曲線で囲んだ内部を塗りつぶしたいのですが無理ですか?
教えてくだちい><
985:デフォルトの名無しさん
08/03/03 23:42:30
囲まれた図形の内部の座標に対してExtFloodFill
最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4291日前に更新/212 KB
担当:undef