[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/04 11:46 / Filesize : 212 KB / Number-of Response : 986
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Win32API質問箱 Build62



1 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 02:40:03 ]
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

過去スレ、関連リンクは>>2-10くらい。

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(msdn2.microsoft.com/library/)の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで

- Win32API質問箱 wiki
wiki.livedoor.jp/program1/d/FrontPage

【前スレ】
61 ttp://pc11.2ch.net/test/read.cgi/tech/1199514664/

633 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 09:37:04 ]
あー>>631の追記、
もし同期オブジェクトの解説サイトを読むときは、
日経BP(ITPRO)の解説の一部は人に薦めるようなものではないので
参考にする場合は気をつけて。

634 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 11:57:19 ]
>>631
Interlocked系は同期オブジェクトじゃないだろ……

635 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 15:17:25 ]
GDIのAPIってスレッドセーフなんでしょうか?
極端な例をいえば、1つのHDCの上半分・下半分を2スレッドでSetPixel()していくなど。
HDCへの描画は領域が被らない場合にスレッドセーフか?といったほうがいいのかな。

636 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 15:23:41 ]
safe

637 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 16:34:47 ]
任意のDPI値を持つメモリDCを作成するには、
どのような関数を使えばよいのでしょうか?

CreateCompatibleDC(NULL)で作成したものだと、
GetDeviceCaps(LOGPIXELSX)の値はモニタのDPI値のままになってしまいます。

638 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 16:48:05 ]
ファイル名が変更されたりアプリやOSが再起動されたりしても
常に同じファイルを参照できる方法を探しています.

FATをあきらめてNTFSに限定すれば
GetFileInformationByHandle()の戻り値のBY_HANDLE_FILE_INFORMATIONに含まれる
nFileIndexHighとnFileIndexLow(とdwVolumeSerialNumber)が
ファイルのIDとして使えるようです.

しかし,逆にこれらの情報をもとにファイルを取得する方法がわかりません.
どなたかご教示お願いします.

639 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 17:14:33 ]
OpenFileByIdってのがあるみたいだけど
Requires Windows Vista. って書いてあるなぁ
msdn2.microsoft.com/en-us/library/aa365432(VS.85).aspx
Win32 FileID API Library っての使えばXPでも使えるようになるのかな
よくわからん

640 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 17:31:12 ]
NTFSならApp Dataフォルダーにでもハードリンクなファイル作れば?

641 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 19:34:30 ]
>>638
それって、例えばc:\abc.binを上書きするのに
c:\abc.tmpを作成→c:\abc.binを削除→abc.tmpをabc.binにリネーム
とかやるソフトだとファイルIDが変わると思うけど



642 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 21:43:42 ]
なんか似たような話が書いてあった
www.atmarkit.co.jp/fwin2k/keyword/linktracking/linktracking.html

643 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 02:20:04 ]
ショートカットファイルの自動追跡を利用したらどうかね?
Resolve()とかいうメソッドがあったような

644 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 04:11:41 ]
そんな物アテになるかよ

645 名前:デフォルトの名無しさん [2008/02/22(金) 09:37:07 ]
フォントのプレビュー画面を作成しているのですが、
フォントの言語によってサンプルの文字列を変更しようと思います。
日本語フォントなら日本語の文章を、欧文フォントなら英語の文字列といった具合です。
そのフォントのデフォルトの言語のようなものを得るにはどうしたらよいですか?

646 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 12:37:34 ]
エディットボックスの現在のカーソル位置の段数調べたいんですが
SendMessage(ハンドル名, EM_LINEFROMCHAR, -1, 0);
この使い方であってますか?
なぜか数字が合わないです。

647 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 12:49:24 ]
何が返ってくるん?

648 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 13:53:03 ]
いくつを期待していくつになるんだよ。
最初の行は0だからな。

649 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 14:42:59 ]
>>647 <<648
申し訳ないです。
自分のミスです^^;

すいません、もうひとつ質問なんですが、
SetScrollInfoをつかってウインドウにスクロールバーを設置していますが
ウインドウにツールバーが重なっていてるのですがスクロールバーの幅
を調節する方法はあるのでしょうか?

650 名前:649 mailto:sage [2008/02/22(金) 14:46:03 ]
訂正
ウインドウにツールバーとスクロールバーを設置しています。
ところがツールバーの上にスクロールバーが重なっています。
スクロールバーの幅を調節する方法はあるのでしょうか?

651 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 14:56:46 ]
2時間画面の前で待ってたんだぞ。何かよこせ

ツールバーもエディットボックスもメインウィンドウの子なんでしょ?
エディットを親にしてスクロールバー作れば重ならないはず



652 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 14:56:47 ]
妙なことするより、ツールバーに重ならないように子ウィンドウ作った方が楽かと

653 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 17:49:39 ]
>>651
つ I  これやるよ。

654 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 01:18:09 ]
>>651
申し訳ないです。 ^^;
ウインドウに段数をペイントで書いていまして、
ウインドウに書かれた段数の横にエディットコントロール
を貼り付けています。そしてウインドウのスクロールバー
でエディットコントロールのスクロールを連動させています。

>>652
子ウインドウにエディットコントロールは貼り付けられますか?

655 名前:デフォルトの名無しさん [2008/02/23(土) 20:00:44 ]
WindowsでスプールファイルにEMFがあります。このファイルを元にし
て、印刷しますがこのファイルを解析して、実際に紙に印刷される意味
のあるデータを取得すると言う事は出来るのでしょうか? 

RAWに関しては、解析して意味のあるデータを取得した事はありますが、
EMFに関しては良く分かりません。Windows XPの環境です。初心者です
が、宜しくお願いします。



656 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 20:25:07 ]
>>655
これかなたぶん?
msdn2.microsoft.com/en-us/library/ms534514(VS.85).aspx

657 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 20:57:42 ]
Windows VistaでBeep関数を呼び出しても音が鳴りません。
何か仕様変更等あったのでしょうか。

658 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 20:58:33 ]
EnumEnhMetaFileだろjk

659 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 21:32:15 ]
VC++6.0、SDKでEDITボックスにドラッグアンドドロップしてファイル名を取得したいのですが
DragAcceptFiles(::GetDlgItem(hWnd, IDC_EDIT1), TRUE);
とやってもWM_DROPFILESのメッセージが拾えないです。
リストボックスに同様なものをしたら拾えたのですが
EDITは特殊なのですか?


660 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 22:11:35 ]
>>659
エディットボックス
(というより自分自身がウィンドウプロシージャを握っていないウィンドウ)
のメッセージを受け取ろうとしているのだから、サブクラス化しないと。

661 名前:デフォルトの名無しさん [2008/02/23(土) 22:53:06 ]
>656 有り難う。しかし、日本語でないと良くわからん。日本語のサイトは無いのだろうか?



662 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 23:11:47 ]
>>661
>>658

663 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:30:42 ]
>>660
レスサンクス
調べてみる

664 名前:デフォルトの名無しさん [2008/02/24(日) 01:23:34 ]
作成したexeファイルと同フォルダにヘルプファイルを置いているので、
GetModuleFileName()を使って、パスを取得する処理を入れているのですが、
起動時にこの関数でエラーになってしまいます。
で、GetLastError()を使うとエラーコードは24とのこと。
エラーコード24は「プログラムがコマンドを発行しましたが、コマンドの長さが正しくありません。」らしいのですが、
これは何が理由でエラーとなっているのでしょうか。。


665 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 01:30:16 ]
まずは自分コードを疑おう

666 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 01:48:07 ]
プロセスにマップされたものでないならエラーになるに決まってるだろ

667 名前:666 mailto:sage [2008/02/24(日) 01:50:32 ]
やるんならGetCurrentDirectory使うか
INIとか設定ファイルなんかに持たせるとか
そういうのでいいんでね?

668 名前:664 mailto:sage [2008/02/24(日) 01:53:59 ]
>>665
もちろん自分のコードを疑っているんですが、
その取っ掛かりが欲しくて。
このエラーコードの意味やどういった時に起こるものなのかがわかれば、
どこから目を付ければいいかわかるかなと思ったんですが。

>>666
すみません。
プロセスにマップという意味がよくわかっていませんが、
要は、自exeファイルがあるパスを取得するには、
ただ単にGetModuleFileName()を呼び出すだけではダメだ、ということでしょうか?



669 名前:664 [2008/02/24(日) 02:20:23 ]
>>667
ありがとうございます。
いま作ってるのが常駐するやつでして、
GetCurrentDirectory()もやってみたのですが、
常駐アプリの場合だと、C:\Document and Settings\[User Name]\
が返るみたいでした。


670 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 02:38:56 ]
>>667
おいおいGetCurrentDirectoryとか嘘を教えるなよ
カレントディレクトリ≠exeのディレクトリだと誤作動するアプリの元凶だろ

>>669
GetModuleFileName→(PathRemoveFileSpec)→PathAppend

671 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 02:44:31 ]
その exe を他のディレクトリに移してみてから実行したら
どうなるかは試してみた?。
GetModuleFileName の使い方に問題がなければ
アクセス権や MAX_PATH とかの問題じゃない?



672 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 02:48:10 ]
ずるずる引っ張るぐらいなら最小コードをうpしたほうが早い

673 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 08:33:51 ]
最小コードも何も、>>670に書いてある3つのAPI名でググればすぐに見つかるだろ
その程度の検索も出来ないような奴はプログラマには向いてない

674 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:00:40 ]
知りたいのはヘルプの位置じゃなくて、GetModuleFileNameがエラーを返す理由でないの?
PathAppend とかぐぐってどうすんの。

675 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:02:39 ]
DWORD GetModuleFileName(hinstModule, lpszPath, cchPath)
戻り値
関数が正常に終了した場合は、 バッファにコピーされた文字列の文字数を返します。
それ以外の場合は、 0を返します。拡張エラー情報を取得するには、 GetLastError関数を使います。

676 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:08:57 ]
ずるずる引っ張るぐらいなら最小コードをうpしたほうが早い

677 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:19:44 ]
もうさ、__argv[0]でも使ってれば?

678 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:22:54 ]
#include<windows.h>
#include<stdio.h>

int main(void){
char filename[_MAX_PATH];

GetModuleFileName(NULL, filename, sizeof(filename));
printf("%.*s\n", sizeof(filename), filename);

return 0;
}

>>676 何故自分で貼らない?質問者か?
>>675 で分からないなら MSDN ダウンロードしなよ 無料だから

679 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:25:35 ]
やっぱ勘違いしてたか。最小コード貼れってのは、質問者に言ってるんだよ。
エラーを再現できる最小限のコードを出せってな。

680 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:30:44 ]
672は誤解されてしまったようで申し訳ない
解決方法は、もちろん示されたAPIをググってコード見直せばOKなんだ
エラー原因もそれで解決するはずなんだが、それができないのなら晒したら? という話

681 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:39:43 ]
> GetModuleFileName(NULL, filename, sizeof(filename));
今時こんなコード書く糞プログラマは偉そうな事言えんぞw



682 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:58:06 ]
普通誤解しないから

683 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 10:06:58 ]
>>678
そんなヘドロみたいなコード貼るな

684 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 10:26:50 ]
>>681
横レスですまないが、素人目にはどこが悪いかわからない。
sizeof(filename)/sizeof(char)としないとUNICODEビルドで問題が出るのかな。

685 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 10:35:55 ]
DWORD GetModuleFileName(HMODULE, LPTSTR, DWORD);

686 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 10:43:13 ]
今は一々URLDownloadToFileで手元にファイルを保存→ファイルを開いて読み込む→
処理→ファイルを消す。ってやってるんだけど、ファイルとして保存しなくても
直接ネット上から読み込む。みたいなスマートな方法ってありませんか?

687 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 10:46:49 ]
普通にソケットを使えばいいだろ

688 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 10:49:03 ]
InternetReadFile

689 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 11:18:04 ]
>>687-688
ありがとう。調べてみたら何となく分かった

690 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 13:52:58 ]
なんかフルボッコなので書き直した
#include<windows.h>
#include<stdio.h>
#include<wchar.h>
#include<tchar.h>

#define NITEM(arr) (sizeof(arr)/sizeof(arr[0]))

int _tmain(void){
TCHAR filename[_MAX_PATH];

GetModuleFileName(NULL, filename, NITEM(filename));
_tprintf(TEXT("%.*s\n"), NITEM(filename), filename);

return 0;
}

691 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 14:11:01 ]
Win32ならRTL_NUMBER_OFかARRAYSIZE使おうぜ。

と書こうとヘッダ見てたら、いつの間にかRTL_NUMBER_OF_V2が増えてる。
こっちはC++専用ながら、ポインタだとコンパイル通らないのか。



692 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 14:26:20 ]
このスレ用のwikiなんてあったんだな
どういう経緯で作られたの? まったく更新されてないようだけど

693 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 14:31:53 ]
V2 というネーミングセンスに吹いたw

694 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 15:02:08 ]
>>692
更新されてないどころか内容も無いし次からテンプレから消してもいいかもな

695 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 15:50:16 ]
>>690
まだまだ叩かれる余地がある。
ttp://msdn2.microsoft.com/en-us/library/ms683197.aspx

まず、2k/XPでは、ファイルパスがMAX_PATHより長かった場合、NULL終端されない。
MAX__PATHより長かった場合、\\?\を使った長いファイルパスを返す。
したがって、filename配列は32000ぐらい確保すれば安全だ。

あと、NTIMEなんていう汚いマクロ使うな。

696 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 15:56:29 ]
NULL終端はされるんじゃないか?
>the string is truncated to nSize characters including the terminating null character.
「null 文字も含め nSize 文字分に切り捨てる」でしょ?

697 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:04:58 ]
Windows XP/2000: The string is truncated to nSize characters and
is not null terminated.
~~~~~~~~~~~~~~~~~~~~

698 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:11:25 ]
あ、本当だ。失礼しました

699 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:20:22 ]
>The global variable _pgmptr is automatically initialized(略)
身も蓋もないとはまさにこのこと(w

700 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:22:52 ]
そもそも_MAX_PATH(アンダースコア付き)なんてWin32APIで使う物では無かろう

701 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:45:36 ]
動けばいいじゃん
こういうどうでもいいとこをグチグチ言ってくる奴多杉



702 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:51:39 ]
お前アホだろ
特定の状況でまともに動かないからレスがついてんだろうが

703 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:51:54 ]
>>701
お前みたいな思想を持つ奴が、Windowsのバージョンアップ程度で、動かなくなる糞コードを書く。

704 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:56:12 ]
偉そうなことを言う奴に限ってコードの出し惜しみ(というかかけない)とか
ちょっとレベルの高い話になると何も答えられないんだよな。


705 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:58:26 ]
先生!ファイル名をnul.exeにしたんですけど、
どうやって起動すればいいですか!?

706 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:36:17 ]
RunDLL32 shell32.dll,ShellExec_RunDLL nul.exe

707 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:09:00 ]
C:\>RunDLL32 shell32.dll,ShellExec_RunDLL c:\nul.exe
指定されたデバイス、パス、またはファイルにアクセスできません。
アクセス許可がない可能性があります。

708 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:33:01 ]
なにがしたいねん

709 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:56:06 ]
prn とか、DOS時代からある予約名を
たまに思い出したかったんだろう

710 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:58:24 ]
C:\>dir nu*
ドライブ C のボリューム ラベルがありません。
C:\ のディレクトリ

2008-01-21 22:09 130,765 NUL
2008-02-03 07:45 53,248 nul.exe

711 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 19:02:56 ]
>>678 屑コード晒す
>>690 書き直してもやっぱり屑コード
>>701 「動けばいいじゃん」

・・・w



712 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 19:07:59 ]

| ∧         ∧
|/ ヽ        ./ .∧
|   `、     /   ∧
|      ̄ ̄ ̄    ヽ
| ̄ ̄ ̄月曜日 ̄ ̄ ̄)
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄.\  煽りはいらない
|ヽ-=・=-′ ヽ-=・=-  /   ただ私に絶望したまえ
|::    \___/    /
|:::::::    \/     /

713 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 19:27:46 ]
動けばいいじゃんって言う奴ほど汚いコードかくんだよな
むしろ動けばいいって言う前提で書いてるからなんだろうがw

そういう奴は個人でソースを管理する趣味グラマーでいてくれ

714 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 19:49:09 ]
モジュール単位で仕様がハッキリしておけば中身のコードなんてどうでもいいじゃん

と趣味グラマーが申しております

715 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 19:52:38 ]
その中身を保守する人のことを考えろ

716 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 19:54:25 ]
仕様通り動いてくれるなら正直悪くは無い。
仕様通り動かない、そもそも仕様自体が二転三転するとかだと楽し過ぎるからな。

717 名前:デフォルトの名無しさん [2008/02/24(日) 20:21:51 ]
MessageBoxだとビープ音が鳴ってしまうのですが、
音を消すことはできますか?
もしくは、MessageBoxに似た音の出ないapiはありますか?


718 名前:664 mailto:sage [2008/02/24(日) 20:30:38 ]
664でGetModuleFileName()関連の質問をした者です。
変な質問をしてすみませんでした。


>>676で言われているように、
最小コードを作ったのですが、なぜかこちらではエラーが発生せず、
質問しようにも出来ない状態です。

自分で少しずつ調査して行こうと思います。
お騒がせしてしまって申し訳ありませんでした。

MUI化していないときはエラーになっていなかったので、
とりあえずはMUIあたりから調べてみます。

ありがとうございました。

719 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 20:55:24 ]
>>717
MessageBoxのようなダイアログボックスを作るしか無いんじゃないの?
たまーにMB_NOSOUNDとか欲しくなるんだけどね・・・

720 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 21:01:23 ]
>>719
ありがとう

721 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 22:53:35 ]
先生!
>>690のコードをプロレベルのコードに修正お願いします。



722 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:12:30 ]
屑コードと言う人は、とりあえず
そのコードを正しく直してから批判しな?

723 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:28:42 ]
>>678 屑コード晒す
>>690 書き直してもやっぱり屑コード
>>701 「動けばいいじゃん」
>>722 「正しく直してから批判しな」

724 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:32:47 ]
「?」でこのスレを検索すると、特徴的な使い方している香具師が浮かび上がってくるね。

725 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:32:48 ]
マイタ・デッヤーレ

726 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:35:06 ]
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#include <stdlib.h>

#define CHECK(b) if(b); else goto ERROR

int _tmain(void) {
 int exit_status = EXIT_FAILURE;

 LPTSTR filename = NULL;
 DWORD len;
 TCHAR dummy;

 len = GetModuleFileName(NULL, &dummy, 1);
 CHECK(len != 0);

 filename = malloc((len + 1) * sizeof (TCHAR));
 CHECK(filename != NULL);

 len = GetModuleFileName(NULL, filename, len + 1);
 CHECK(len == 0);

 _tprintf(_T("%.*s\n"), len, filename);

 exit_status = EXIT_SUCCESS;

ERROR:
 free(filename);
 return exit_status;
}

727 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:35:45 ]
>>699
そういうのって C++ のグローバルオブジェクトのコンストラクタから
正しく使えるんだろうか。
もっとも、GetModuleFileName も正しく使えるかどうか。

728 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:56:18 ]
>>726
> CHECK(len == 0);
これは拙く内海?

729 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:59:04 ]
間違えた。
0 の時は 「失敗」 なのか。

730 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 00:21:32 ]
>>726
> len = GetModuleFileName(NULL, &dummy, 1);
で成功すればlen=1だから

> filename = malloc((len + 1) * sizeof (TCHAR));
filenameのバッファが全然足らねーだろ
つーかcalloc使えよ

相変わらず屑コード全開だな

731 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:00:24 ]
質問と回答とこの俺のレス以外はいりません



732 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:01:02 ]
なんでcalloc使わないといけないんだ?w

733 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:06:13 ]
>>678 屑コード晒す
>>690 書き直してもやっぱり屑コード
>>701 「動けばいいじゃん」
>>722 「正しく直してから批判しな」
>>726 屑コードどころかバグありコード晒して恥の上塗り
>>732 「なんでcalloc使わないといけないんだ?w」






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<212KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef