1 名前:デフォルトの名無しさん [2007/04/18(水) 01:54:51 ] スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。 やさしいお兄さんやお姉さんたちが答えてくれるかも。 過去スレ、関連リンクは>>2-5 くらい。 ■注意 ・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。 ・日本語版MSDN Online Libraryは不完全です。英語版(msdn.microsoft.com/library/ )の利用推奨。 ・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。 ・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
222 名前:217 mailto:sage [2007/04/23(月) 10:33:37 ] 自己解決(?) ぐぐったらUNICODE←→ANSI変換APIが出て来た・・・ なんか面倒な事に・・・
223 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 10:36:52 ] win32apiじゃなくていいなら、wcsstr とかなかったっけ?
224 名前:デフォルトの名無しさん [2007/04/23(月) 11:35:15 ] RECT wndrc; wndrc.top = 0; wndrc.bottom = 100; wndrc.left = 0; wndrc.right = 100; int x = wndrc.left; int y = wndrc.top; int w = wndrc.right - wndrc.left; int h = wndrc.bottom - wndrc.top; hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, x, y, w, h, NULL, NULL, hInstance, NULL); if (!hWnd) return FALSE; RECT rc; if( ::GetWindowRect( hWnd, &rc ) ) { if( rc.top == wndrc.top && rc.left == wndrc.left && rc.bottom == wndrc.bottom && rc.right == wndrc.right ) {} else { ::MessageBox( 0, "ウィンドウサイズが違います", "?", 0 ); } } VC.net2003のwin32のデフォルトで作られるプログラムで CreateWindowの所を上記の様に変更しました。 そしたら自分の想定していた rc.riight == 100 と反して rc.right == 112 になっていました。 何故ウィンドウの幅がcreatewindowで指定した値と12も違うんでしょうか? ちなみにウィンドウプロシージャ等は一切変更していません。
225 名前:デフォルトの名無しさん [2007/04/23(月) 13:56:40 ] >>183 なるほど。 Postの方で正しく送れました。 ありがとうございました。 >>>>184 SendInputでちょっと下の様に 「A」を入力しるプログラムを書いて実行してみました。 全角入力がONになるみたいなんですが、最後の「変換」の決定(Enterですよね?)の所まで 自動化したい場合はどうすればいいのでしょう? 下のプログラムだと、決定という意味でのEnterは認識されないみたいです… INPUT inputKey[3]; inputKey[0].type = INPUT_KEYBOARD; inputKey[0].ki.wVk = 0; inputKey[0].ki.wScan = 'A'; inputKey[0].ki.dwFlags = KEYEVENTF_UNICODE; inputKey[0].ki.dwExtraInfo = 0; inputKey[0].ki.time = 0; inputKey[1].type = INPUT_KEYBOARD; inputKey[1].ki.wVk = VK_RETURN; inputKey[1].ki.wScan = MapVirtualKey(VK_RETURN, 0); inputKey[1].ki.dwFlags = 0; inputKey[1].ki.dwExtraInfo = 0; inputKey[1].ki.time = 0; inputKey[2] = inputKey[1]; inputKey[2].ki.dwFlags = KEYEVENTF_KEYUP; SendInput(3, inputKey, sizeof(INPUT));
226 名前:デフォルトの名無しさん [2007/04/23(月) 18:01:42 ] スクロールバーのサイズを、画面のプロパティで設定した値ではなくアプリ側で 任意に設定する方法はありませんか? 後、Vistaのスクロールバーのデフォルト値を教えてください。
227 名前:224 mailto:sage [2007/04/23(月) 19:15:41 ] タイトルバーが100に収まりきらなかったのが原因ですた。スマソ。
228 名前:デフォルトの名無しさん [2007/04/24(火) 15:48:40 ] Vistaのように右端に表示領域を確保して、その分デスクトップの作業領域を小さくしたいんですけど、どのように実装したらイイでしょうか。 (他のソフトのウィンドウ表示を最大化にしても、右端に確保した領域にかぶらないようにしたい) 以上です、よろしくお願いいたします。
229 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 16:37:32 ] AppBarのことか? SHAppBarMessageでググってみ
230 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 16:38:05 ] >>228 OSが分からないと何とも言えないけど、Application Desktop Toolbarsじゃ駄目?
231 名前:デフォルトの名無しさん [2007/04/24(火) 18:01:09 ] 複数ウィンドウを作成したい場合は どうすればいいのでしょうか
232 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 18:10:10 ] 単数ウィンドウを作るのと同じ手法を複数回繰り返してください。
233 名前:デフォルトの名無しさん [2007/04/24(火) 19:36:59 ] >>232 なるほど ありがとうございました! (^O^) あと複数の親ウィンドウをIDの用に管理する方法はあるでしょうか
234 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 20:23:13 ] もどってくるHWNDで判るだろ?
235 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 20:55:13 ] なんか涙でてきた
236 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 02:20:33 ] ところで、Win32APIってなんですか?
237 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 02:51:51 ] なんかいろんなものでてきた
238 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 04:55:21 ] そういうことして楽しいと思ってるの?
239 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 05:04:35 ] CreateWindow(TEXT("EDIT") , TEXT("文字") , WS_CHILD | WS_VISIBLE | WS_BORDER | ES_LEFT, 248 , 40 , 45 , 22 , hwnd , (HMENU)0 , ((LPCREATESTRUCT)(lp))->hInstance , NULL); このエディットコントロールに表示される“文字”のフォントのサイズを小さくすることは出来るのでしょうか? あと、SendMessage(hEdit, ES_READONLY, 0, 0);みたいな感じで、 目的のエディットコントロールを読み専用に変えたいのですが、↑のだと上手くいきません。 どうすればいいのでしょうか?
240 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 05:24:29 ] フォント設定はWM_SETFONTかEM_SETFONTSIZE使う 読み専用のES_READONLYのES はEDITSTYLEのことであってメッセージではない EM_SETREADONLYをSendMessageに渡す
241 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 07:35:47 ] >>240 WM_SETFONTの方は少してこずりましたが、無事出来ました。 ありがとうございました。
242 名前:デフォルトの名無しさん [2007/04/25(水) 08:15:08 ] ウインドウハンドルをhashtableみたいな構造に突っ込みたいのですが、 一意のキーとすべき値は何を使えばいいでしょうか。 hashtableは文字列をキーとして、値はポインタを渡すようにしています。 put(char* key, void* value)みたいにです。 ウインドウハンドルで一意となる値を文字列としてキーとして使いたいのです。 あとからウインドウハンドルからhashtable経由で値をとりたいからです。 ウインドウハンドルにはunsetという内容が入っているみたいですが、 つかうなと書いてあるWebサイトもあってどうしていいかわかりません。
243 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 08:22:01 ] 文字列じゃなくてHWNDをキーに使えばいいだろ。 どうしても文字列にしたければHWNDの値自体を文字列に変換するとか、 なんでその程度の知恵が無いんだ?
244 名前:242 [2007/04/25(水) 09:19:29 ] >>243 回答、ありがとう。 HWNDの値自体とはアドレスのことをいっていますか?unsetの値自体をいっていますか?
245 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 09:57:34 ] HWNDの値と言ったらHWNDの値だろ、アホかw
246 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 10:03:35 ] class Hashtable { put(char* key, void* value); }; HWND hWnd = GetWindow(hogehog); Hashtable h; h.put((char*)hWnd, (void*)GetTitle(hWnd));
247 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 10:21:47 ] いやいやいや
248 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 10:23:16 ] キーに文字列しか使えない環境なら、sprintf とかでHWNDの数値を文字列にするとか
249 名前:デフォルトの名無しさん [2007/04/25(水) 11:12:27 ] GetOpenFileNameでフラグにOFN_ALLOWMULTISELECT|OFN_EXPLORERを指定したとき、 選択したファイルの順序を逆に並べる方法は無いでしょうか? 現状、最後に選択したファイルが先頭に挿入されるようで、 これを最後に付加するようにしたいのです。 (アプリ側で逆にたどることは可能ですが、GetOpenFileName操作時の ファイル名テキストボックスの見た目を前後逆にしたい) 環境はXPSP2です。よろしくお願いします。
250 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 13:03:38 ] >>249 OFN_ENABLEHOOKでどうにかするしかないんじゃないかなぁ
251 名前:242 [2007/04/25(水) 14:22:33 ] >>245-246 >>248 HWNDって、winnt.hで以下のように定義されているんですが、 int unusedをもつ構造体へのポインタではないんでしょうか? #define DECLARE_HANDLE(name) struct name##__{int unused;}; typedef struct name##__ *name HWNDを文字列にしたらアドレスが文字列としてとれるんだと思っているんですが、 間違えていますか?
252 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 14:45:22 ] 壮絶に違う HWND ポインタの中身(大きさも含む)は謎 つか >>248 でいいじゃん 書かないとわからん? sprintf(buf, "%p", hwnd); とすれば? ってことだ
253 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 15:08:02 ] デスクトップやコントロールパネルなどの 主要なシェルフォルダを指すGUIDのリストってどこかにないでしょうか?
254 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 15:52:11 ] >>253 レジストリ
255 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 16:12:40 ] >>253 に便乗だけど マイコンピュータとかコントロールパネルとかかもしれないpIDLがあるとき CLSIDみたいな::{...}に変換する術ってないすか?
256 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 16:38:02 ] SHGDN_FORPARSING
257 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 16:45:20 ] >>250 ありがとうございます。調べてみます。
258 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 17:08:15 ] サブクラスを使って、エディットコントロール内でEnterキーを押したら メッセージボックスを出すようにしているのですが、その後、 エディットコントロール内で改行されてしまいます。 Enterを押したときにメッセージボックスだけを出して、 その後改行しないようにするにはどうすればいいのでしょうか?
259 名前:242 [2007/04/25(水) 17:17:16 ] >>252 つきあってくれてありがとう。 sprintf(buf, "%p", hwnd); ってやるとbufにはhwndのアドレスが入るとおもってるんですが間違いですか? アドレスって再利用されて一意ではない気がするんです。
260 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 17:33:12 BE:69876566-2BP(222)] >>259 >ってやるとbufにはhwndのアドレスが入るとおもってるんですが間違いですか? 間違いです。何のためのハンドルかと。
261 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 17:34:45 ] エクスプローラもどきを作っています。 現在、アイコンをGetIconOfで取得しているのですが こいつは該当フォルダの中のアイテムのアイコンしか取得できず、 デスクトップ自身のアイコンを取得することができません。 何か良い方法があれば教えてください。
262 名前:228 [2007/04/25(水) 17:35:02 ] >229さん、230さん レスありがとうございました。 頂いた情報で実装出来そうです、ありがとうございます。
263 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 17:35:24 ] そもそもハンドルはポインタじゃないから、中身を気にしてはならんと思うんだが。
264 名前:242 [2007/04/25(水) 18:23:07 ] >>260 >>263 考えてみました。 ハンドル=構造体へのポインタと勘違いしていました。 付き合ってくれた方、ありがとう。というか、すんませんでした。
265 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 18:28:23 BE:67935757-2BP(222)] ハンドルが構造体へのポインタとして実装されていたとしても、わざわざ「ハンドル」 と読んでいるのは何のためなのかと。
266 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 18:31:33 ] >>258 をお願いします・・・m(_ _)m
267 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 18:47:48 ] >>258 Enterキーを処理した後、EDIT本来のプロシージャに処理回してない?
268 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 18:53:30 ] >>267 エディットコントロールのプロシージャの最後は return CallWindowProc(DefInProc, hwnd, msg, wp, lp); にしてます。これをどうすればいいのでしょうか・・・ return 0;とかにしてもエディットコントロール自体が消えてしまいます;;
269 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 19:02:14 ] >>267 Enterキーの時だけ、プロシージャに処理を渡さないようにすればいい
270 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 19:02:28 ] >>268 >Enterキーを処理した後
271 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 19:07:28 ] SubclassProc(hwnd, msg, wparam, lparam) { switch(msg) { case WM_KEYDOWN: if(wparam == VK_RETURN) { (処理) return; // DefWindowProc()いらない } } } こういうことか?リターンキーの時だけ弾ければいいってこと?
272 名前:258 mailto:sage [2007/04/25(水) 19:07:29 ] プロシージャはこんな感じになってます。処理の後はreturn 0;にしてますが やはり改行されてしまいます・・・ LRESULT CALLBACK InProc(HWND hwnd , UINT msg , WPARAM wp , LPARAM lp) { switch(msg) { case WM_KEYDOWN: if(wp==VK_SHIFT){ shift_flag = 1; }else if (wp == VK_RETURN && shift_flag==0) { MessageBox(hwnd, "ENTER", "ENTER", MB_OK); }else if (wp == VK_RETURN && shift_flag==0) { MessageBox(hwnd, "Shift+ENTER", "Shift+ENTER", MB_OK); } return 0; case WM_KEYUP: if(wp==VK_SHIFT){ shift_flag = 0; } return 0; } return CallWindowProc(DefInProc , hwnd , msg , wp , lp); }
273 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 19:15:58 ] WM_CHAR
274 名前:258 mailto:sage [2007/04/25(水) 19:29:27 ] WM_CHARにしてみたら文字の入力すら出来なくなったのですが・・・;; きっと基本的なことなのでしょうけど、何時間も止まってると泣きたくなってくる・・・
275 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 19:31:19 ] そりゃそうだよなぁ。
276 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 19:37:31 ] >>258 if文をよ〜く見直してみろEnterキー以外もトラップしてるぞ
277 名前:258 mailto:sage [2007/04/25(水) 19:45:58 ] >>276 Shiftの事でしょうか?Shift全部はずして、単純にif(wp==VK_RETRUN){}にしても やはり同じ結果になりました。これは一体何がどうあghwrへあぃtjr
278 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 19:47:44 ] >>277 トラップしないキーはreturn 0;しないでデフォルトプロシージャに渡すのだ。
279 名前:258 mailto:sage [2007/04/25(水) 19:54:15 ] >>278 こういう事でしょうか? LRESULT CALLBACK InProc(HWND hwnd , UINT msg , WPARAM wp , LPARAM lp) { switch(msg) { case WM_KEYDOWN: if (wp == VK_RETURN) { MessageBox(hwnd, "ENTER", "ENTER", MB_OK); return 0; } return CallWindowProc(DefInProc , hwnd , msg , wp , lp); }
280 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 19:55:15 ] >>279 それをWM_CHARでやる
281 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 20:00:15 ] できました みなさま本当にありがとうございました
282 名前:258 mailto:sage [2007/04/25(水) 20:02:42 ] いえ、出来てません。文字の入力すら出来ないのですが・・・ LRESULT CALLBACK InProc(HWND hwnd , UINT msg , WPARAM wp , LPARAM lp) { switch(msg) { case WM_CHAR: if (wp == VK_RETURN) { MessageBox(hwnd, "ENTER", "ENTER", MB_OK); return 0; } return CallWindowProc(DefInProc , hwnd , msg , wp , lp); }
283 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 20:10:21 ] >>258 メッセージループのところにTranslateMessage(&msg);はあるか? // メッセージループ MSG msg; while(GetMessage(&msg, NULL, NULL, NULL)) { TranslateMessage(&msg); DispatchMessage(&msg); }
284 名前:258 mailto:sage [2007/04/25(水) 20:15:53 ] 出来ましたあああああああああ;; caseの終わるところをreturn 0からbreak;に直したら出来ました;; WM_CHARで捕まえて、全部return0にしてたせいで入力されないようになってたみたいです。。。 ありがとうございました
285 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 20:25:41 ] >>279 ,282のプロシージャ { }の対応がおかしい気がするんだが・・・?
286 名前:デフォルトの名無しさん [2007/04/25(水) 21:28:59 ] このような関数で、ドライブごとまるまるコピーしたいのですが、 BOOL CopyDirectory(LPCTSTR From, LPCTSTR To) { SHFILEOPSTRUCT TSHFileOpStruct; ZeroMemory(&TSHFileOpStruct,sizeof(SHFILEOPSTRUCT)); MessageBox(NULL, From, To, MB_OK); //構造体の初期設定 TSHFileOpStruct.hwnd = NULL; // 親ウインドウのハンドル TSHFileOpStruct.wFunc = FO_COPY; // フラグ TSHFileOpStruct.pFrom = From + NULL+ NULL; // 対象元パス TSHFileOpStruct.pTo = To + NULL+ NULL; // 対象先パス TSHFileOpStruct.fFlags = FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR; //フラグ //実行する if(SHFileOperation(&TSHFileOpStruct) != 0){ return FALSE; } if(TSHFileOpStruct.fAnyOperationsAborted == TRUE){ return FALSE; } return TRUE; } CopyDirectory("H:\\test", "C:\\test") だと成功するのですが CopyDirectory("H:\\", "C:\\test") だと失敗します。 ドライブの中身をまるまるコピーすることはできないのでしょうか? 初歩的な質問かもしれませんが、よろしくお願い致します。
287 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 21:44:32 ] pFromはあくまでもファイル名を指定するためのバッファらしいので "H:\\*"みたいにワイルドカードを使うってのはダメ?
288 名前:デフォルトの名無しさん [2007/04/25(水) 21:50:56 ] >>287 教えていただいた方法で解決できました! 結構長い間ひっかかっていたので、助かりました。 ありがとうございました。
289 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 22:40:16 ] GUIアプリからコンソール用のアプリを影で動かし(て、その結果をエディタに送り)たいんですけど そういうAPIってありますか?
290 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 22:44:12 ] はぁ?
291 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 22:44:51 ] 無い はい次
292 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 22:44:55 ] あります
293 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 22:51:38 ] ありますが、 はい次
294 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 22:52:22 ] APIに関係することか、わかりませんがお願いします。 自己解凍書式によくあるような > copy /b hoge.exe + datafile でつくった hoge.exe から datafile の中身を取る プログラムを作りたいのですがやり方を教えて頂けないでしょうか?
295 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 22:53:39 ] *** main(char**arg,int argl) ...................................................
296 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 22:59:30 ] >>294 「リソース」をキーワードに基本から勉強しなおしなさい
297 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 23:10:47 ] copyで連結したものをリソースとして扱えるか? 俺にはイメージヘッダからイメージサイズを見て、 それを元にdataの先頭領域を求める方法になる気がする。 違ったらすまん
298 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 23:13:51 ] copy /b hoge.exe + datafile + datafilesize
299 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 23:15:52 ] ぐぐってみたらこういう方法だそうです プログラムに4バイトのリソースを埋め込む。 そのリソースを読み込んでその値だけ、読み飛ばして自分自身を解凍するプログラムを作る。 何らかの手段で4バイトのリソースに自己解凍プログラムのサイズを書き込む。 自己解凍プログラムの後ろに実際のデータを書き込む。
300 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 23:18:20 ] かなりコンパイラ依存な質問ですが・・・ FindNextFileがVisual C++ 6.0でちゃんと動くのにGCC(gcc version 3.4.5 (mingw special))でちゃんと動きませんorz www.uploda.net/cgi/uploader4/index.php?file_id=0000012569.zip test_findfile.c ソース test_findfile_gcc.exe GCCでコンパイルしたもの test_findfile_vc6.exe VC++6.0でコンパイルしたもの VC++6.0でコンパイルしたものは、ちゃんと2つ目以降に見つかったファイルを表示します。 しかしGCCでコンパイルしたものは最初の1つ目しか表示しません。 MSDN見ても解決方法わからないし・・・
301 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 23:24:41 ] >>289 名前なしパイプを使ってリダイレクト。 CreatePipe, DuplicateHandle, CreateProcess(STARTF_USESTDHANDLESがヒント), PeekNamedPipe, ReadFileなどの関数を使う。 待機関数を使ったプロセスの終了判定と、 PeekNamedPipeとReadFileの順序を巧く管理しないと止まるので注意。 じゃぁ、約束のおっぱいをうpしてね
302 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 23:26:03 ] (・) (・)
303 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 23:29:15 ] D / ∩___∩ \_WW/ ・ ≪ | ノ ヽ ≫ D ≪ V ≪ / ● ● | ≫ ・ ≪ ・ ≪ | ///( _●_)//ミ ≫V ≪ D ≪ 彡、 |∪| 、`\ ≫ ・ ≪ ! ≪ / \ ヽノ /_> / ≫ D ≪ ≪ \| ・ ・ / / ≫ ! ≪ MMM\ | / ̄ /MMM\ | /\ \ | / ) ) ∪ ( \ \_)
304 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 23:30:10 ] >>300 ワイルドカード絡みなのかな? 下のコードをそれぞれのコンパイラでコンパイルして 「ちゃんと動かない」ときの引数を与えて比較してみればおk #include <stdio.h> int main(int argc, char *argv[]) { int i; for(i=1;i<argc;i++) printf("argv[%d]=%s\n", i, argv[i]); return 0; }
305 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 23:31:01 ] ところでDVDってドメスティックバイオレンスオブダイナミカルなの?
306 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 23:32:05 ] >>300 どのディレクトリに対して実行しても結果は同じですか?
307 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 23:35:58 ] >>300 OSは?
308 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 23:36:35 ] >>300 c:\directory\* c:\\directory\\* じゃねーの?
309 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 23:38:01 ] >>300 ワイルドカードが展開されてるんだろ
310 名前:デフォルトの名無しさん [2007/04/25(水) 23:41:24 ] 見た感じFindNextFileが必ずゼロを返してるような動き。 一個だけ正しく見つけてあとはサヨウナラだな。
311 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 23:43:54 ] FindFirstFile に渡される引数の内容(argv[1]) が違うから 表示させてみれば疑問は解決するはず
312 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 23:46:35 ] そこで、ダブルクォーテーションですよ
313 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 00:24:23 ] >>300 GCCに付属してるCRT_noglob.oをリンクすると解決するお 海外での似た質問と解凍: www.cygwin.com/ml/cygwin/1998-11/msg00165.html www.cygwin.com/ml/cygwin/1998-11/msg00235.html
314 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 00:48:10 ] ぼ・・・僕ハッカー
315 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 09:54:11 ] WTLでCToolBarCtrlを使ってツールバーを作っています。 manifestを指定してXPスタイルにしているのですが、 そうするとアイコンサイズと比べ、ボタンサイズが大きくなりすぎてしまいます。 どうしても小さくしたいのですが、SetButtonSizeを指定しても無視されてしまい 自動でサイズが決定されてしまいます。 ボタンのサイズを小さくしたいのですが、どうすればできますか。
316 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 10:07:41 ] ビットマップを印刷する処理でカラープリンタに出力するとおk、なんですが、 白黒プリンタに印刷すると真っ黒画面(プリンタドライバのメモリ不足でよくおきるヤシ)となります。 Win32APIで、印刷時にビットマップを描くとき、白黒プリンタを意識する指定ってありましたっけ?
317 名前:デフォルトの名無しさん [2007/04/26(木) 10:09:59 ] ShellExecuteで起動したソフトが起動しきったかどうかを確認する方法を教えてください
318 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 10:14:26 ] 起動しきった、の定義は? メッセージループが回りだしたでいいのかな
319 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 10:28:17 ] CreateProcessのほうがいいかもね
320 名前:デフォルトの名無しさん [2007/04/26(木) 10:34:52 ] >>318 起動してから表示されるまでに時間がかかるソフトがあるので 画面が表示されたらと思っていました。 >>319 ShellExecuteよりShellExecuteExのインスタンスハンドルで何とかなりそうでしょうか?
321 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 10:39:08 ] 316もヨロ
322 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 10:43:13 ] >>317 FindWindow