1 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 03:44:55 ] スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。 やさしいお兄さんやお姉さんたちが答えてくれるかも。 過去スレ、関連リンクは>>2-5 くらい。 ■注意 ・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。 ・日本語版MSDN Online Libraryは不完全です。英語版(msdn.microsoft.com/library/ )の利用推奨。 ・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。 ・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
641 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 08:34:36 ] TVM_SETIMAGELIST で ImageList セット TVM_SETITEM での fMask に TVIF_IMAGE|TVIF_SELECTEDIMAGE なり TVIF_STATE なり...
642 名前:デフォルトの名無しさん [2007/04/10(火) 12:49:04 ] USBリムーバブルハードディスクのデバイス識別子?(USB\Vid_04xx&Pid_10xx)とかから 割り当てられている論理ディスクのボリューム名を取得したいのですが どの辺を参照したらいいでしょうか。 「管理ツール」→「ディスクの管理」で下側ビューの左側「ディスクn」を右クリックしてプロパティを表示させて、 「ボリューム」プロパティーシートの下側リストビューに表示されているものが欲しいです。
643 名前:デフォルトの名無しさん [2007/04/10(火) 16:50:17 ] SetMenuContextHelpIdに渡す「ヘルプコンテキスト識別子」ってなんなんですか? 「ヘルプコンテキスト」ってリソースで用意するんでしょうか? それってどのような物で,どうやって作るんでしょうか?
644 名前:デフォルトの名無しさん [2007/04/10(火) 18:08:33 ] Win32API を使って、DLL 中のダイアログリソースの PUSHBUTTON の文字列を取得することはできますでしょうか? FindResource -> LoadResource -> LockResource まではできましたが、文字列の取得が分からない。
645 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 18:31:28 ] 自分で解析
646 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 21:03:23 ] >>643 のレスで思ったのだが、そーいや、2005からののヘルプはどうなんお? 昔は、HTML Help Workshopとかゴリゴリ作ったが? msdn.microsoft.com/library/en-us/htmlhelp/html/hwMicrosoftHTMLHelpDownloads.asp?frame=true ここでいいっけ? それとも、暗黙でツールが入ってるのかな?
647 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 21:10:22 ] ゲームプログラムで質問ですwin32apiの関数を使うよりdirectxを使った方が画像の描画は早いですか
648 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 21:18:57 ] >>647 ちなみに、何系ゲーム?
649 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 21:30:43 ] シューティング系ゲームです。既にwin32apiで作ったのですが画面のスクロール速度を一定以上にあげるとフレームスキップが起こるです。
650 名前:648 mailto:sage [2007/04/10(火) 21:38:04 ] >>649 画面更新に速度を要求するなら、 DirectXなんじゃね? DirectX〜系の別スレがよろしいかと・・・
651 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 22:52:12 ] >>644 MSDN に PEFILE.cpp というサンプルがあって、.exe/.dll の先頭から .rsrc section を割りだし、section 内のテーブルを追い掛けると、 個々の rsrc leaf に行き付ける例があったと思う。 dialog template の構造は MSDN に説明があった。 ただ、これらを取り出したり、差し替えたりするのに、ファイルとして 開く際、使用中だと開けないことがある。開く際の属性を指定すると 可能なのかも知れないが。
652 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 23:30:31 ] >651 いや、メモリに一度読み込めば問題なし。 昔、ダイナミックにダイアログリソース作ったときはそうやったよ。
653 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 23:36:48 ] GetCommandLine関数を利用する場合、 みんあはや空白の分割とかどしてる? 思いつき関数作ったけど、意見求む。
654 名前:653 mailto:sage [2007/04/10(火) 23:38:46 ] 前半 DWORD OrderCommandLine(LPTSTR lpBuffer, LPDWORD lpcchBuffer) { DWORD i, dwLen, dwPos, dwCnt, dwDiv; TCHAR tcChr; TCHAR szCmd[0xFFFF]; TCHAR szDmy[0xFFFF]; int fDQ; LPTSTR lpszCur; /* 初期化 */ ::lstrcpy(szCmd, ::GetCommandLine()); dwLen = (DWORD)::lstrlen(szCmd); szCmd[dwLen++] = _T('\0'); /* 捜査 */ for (i = 0, dwPos = dwDiv = 0, fDQ = 0, lpszCur = szCmd; i < dwLen; i++, lpszCur++){ tcChr = *lpszCur; if (tcChr == _T('\"')){ fDQ = !fDQ; }else if ((!fDQ) && (tcChr == _T(' '))){ tcChr = _T('\0'); } szDmy[dwPos++] = tcChr; if (tcChr == _T('\0')){ dwDiv++; } } szDmy[dwPos++] = _T('\0');
655 名前:653 mailto:sage [2007/04/10(火) 23:39:39 ] 後半 /* 整理 */ dwCnt = 0; if (dwDiv > 0){ for (i = 0, dwPos = 0, lpszCur = szDmy; i < dwDiv; i++, lpszCur++){ dwLen = (DWORD)::lstrlen(lpszCur); if (dwLen > 0){ ::lstrcpy(&szCmd[dwPos++], lpszCur); lpszCur += (dwLen); dwPos += (dwLen -1); szCmd[dwPos++] = _T('\0'); dwCnt++; } } szCmd[dwPos++] = _T('\0'); } /* 結果 */ if (lpcchBuffer){ if (*lpcchBuffer >= dwPos){ *lpcchBuffer = dwPos; if (lpBuffer){ ::CopyMemory(lpBuffer, szCmd, dwPos * sizeof(TCHAR)); } } } return dwCnt; }
656 名前:653 mailto:sage [2007/04/10(火) 23:42:59 ] DWORD OrderCommandLine(LPTSTR lpBuffer, LPDWORD lpcchBuffer)の LPTSTR lpBufferはバッファ LPDWORD lpcchBufferはlpBufferのサイズ(文字単位)の入った変数のポインタ んでOrderCommandLineは分割した数を返す。 どっかおかしいとこない?
657 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 23:48:04 ] 自作せずにCommandLineToArgvWを使ったほうが楽なのでは?
658 名前:653 mailto:sage [2007/04/11(水) 00:01:57 ] >>657 CommandLineToArgvW関数はしりませんですた... orz 調査してみますね。
659 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 00:07:01 ] main関数のargc, argvは駄目なの? main関数から始まるけどコンソールプログラムでないというのは変わっているかもしれないけど。
660 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 00:13:42 ] boostにコマンドライン解析があった希ガス
661 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 00:25:19 ] >>659 WinMain関数のLPSTR lpszCmdLine問題があったので、 片手間で作成してみました。 そりゃ、_tmain関数みたいなのが、一番いいですが。 >>660 ttp://www.boost.org/ですよね? ここも見てみます。
662 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 00:25:41 ] __argv,__argcとかいうのもあったような
663 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 00:43:11 ] Googleからも出てる。 ttp://code.google.com/p/google-gflags/
664 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 03:12:11 ] CommandLineToArgvW以外はスレ違いじゃね? >>661 _tWinMain VC++以外や、VC++でもバージョンによっては存在しないみたいだが その場合はGetCommandLineW つーかCommandLineToArgvWは_tmainが存在しなかったバージョンのVC++で GetCommandLineWと組み合わせて使うために提供されていた(だからW版しかない)ので
665 名前:653 mailto:sage [2007/04/11(水) 08:17:09 ] >>664 情報ありがとうございます。 へー_tWinMain関数ってあるんですかー。 特に変な意識して、関数作る必要もなかったのかな? 一回、整理して考え直してみます。 皆様ありがとうございました
666 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 08:55:12 ] >>644 不可視でダイアログ開いて、GetDlgItemText()したら?
667 名前:デフォルトの名無しさん [2007/04/11(水) 11:33:08 ] CSV(カンマテキスト)を分割するAPIを教えてください
668 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 11:59:02 ] ない
669 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 12:55:54 ] ウィンドウズの起動時間(timeGetTimeやGetTickCountで返される数値)を変更する方法ありますか? DirectShow辺りが怪しいので デバッグで24日間放置した状態にしたいのです
670 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 13:05:35 ] >>669 hookして、好きな値返すとか?
671 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 13:13:31 ] >>668 ADO等で出来なくもない気もするが
672 名前:デフォルトの名無しさん [2007/04/11(水) 13:45:05 ] 猫でもわかる・・の第10章タイマーで、コーディングして実行したところ、 一応動くのですが、文字列が再描画されず、字が重なったようになって しまいます。この場合、うまく表示するにはどうしたらよいでしょうか? よろしくお願いします。
673 名前:デフォルトの名無しさん [2007/04/11(水) 13:56:55 ] 大学院レベルの猫にしかわからないってことだね
674 名前:672 [2007/04/11(水) 13:57:59 ] ↑で質問したものです。 InvalidateRect(hWnd, NULL, FALSE); こいつを InvalidateRect(hWnd, NULL, TRUE);にしたらなおった。 でも載ってるのは最初のほうですよね。 なんかほかに方法があるのかなぁ
675 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 14:01:28 ] つ SetBkMode
676 名前:672 [2007/04/11(水) 14:04:28 ] >>675 実装済みです
677 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 14:14:29 ] 前と同じ幅の文字で上書きしてないとか
678 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 14:33:38 ] >>676 TRANSPARENT で描画、リクエストをInvalidateRect(...FALSE) にしてたら 672 のように多重の重ね書きになるわけだが? まぁ、OPAQUEにしたところで、文字列の実描画長が短くなったら なんらかの方法で背景色で消すコードを書くはめにはなるがね
679 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 14:34:58 ] fillrect
680 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 14:41:57 ] ExtTextoutを結構多用したなあ
681 名前:デフォルトの名無しさん [2007/04/11(水) 16:34:21 ] 質問です。 親のウインドウとは独立した子ウインドウで、親よりは必ず前面に。 ただし他のアプリのウインドウがより前面にある時は(親ともども)きちんとそのウインドウの背面に。 というウインドウをCreateWindowExで簡単に作ることはできないでしょうか。 ・子ウインドウは、親ウインドウの中に存在するわけではない(つまりWS_CHILDではない?) お絵かきツールのパレットウインドウなんかがこんな感じ。 ・WS_EX_TOPMOSTにすると、他のアプリのウィンドウよりも前にきてしまう
682 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 16:45:13 ] 殆ど自分で答え言っているような気がす… 親をオーナーにして (WS_CHILD と排他な)WS_POPUP で作れば良いんじゃない?
683 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 16:46:37 ] >>681 WS_POPUPとWS_EX_TOOLWINDOWつけてみたらどう?
684 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 16:51:40 ] >>681 ttp://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/windowing/windows/aboutwindows.asp >A window can own, or be owned by, another window. An owned window always appears in front of its owner window, >is hidden when its owner window is minimized, and is destroyed when its owner window is destroyed.
685 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 16:56:53 ] ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowfeatures.asp Owned Windowsのところをよく読め
686 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 17:00:46 ] 日本語でおk
687 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 17:12:48 ] アドバイスありがとうございます。 とりあえずWS_CHILDとWS_POPUPは共存できないようです。 D-Pixedのツールウインドウが同じ実装になっていたのを思い出し、Spy++で覗いてみました。 >>683 さんの言うとおりのオプションを使っていましたが、それが原因で望んだ挙動をしているわけではないようです。 とりあえず下記を、親と子両方に入れてやったところ上手く狙った挙動ができているようです。 なので問題ないといえばないのですが、より上手い方法があれば教えていただけると幸いです。 if (WA_INACTIVE != wParam) { ::SetWindowLong(hChildWnd, GWL_EXSTYLE, WS_EX_TOOLWINDOW | WS_EX_TOPMOST); ::SetWindowPos(hChildWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE); } else { ::SetWindowLong(hChildWnd, GWL_EXSTYLE, WS_EX_TOOLWINDOW); ::SetWindowPos(hChildWnd, hParentWnd, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE); ::SetWindowPos(hParentWnd, hChildWnd, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE); }
688 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 17:13:57 ] 他アプリウィンドウ - オーナー - ポップアップ - (最前面) で 他アプリウィンドウをタスクバーのクリックでアクティブにすると、 オーナー - 他アプリウィンドウ - ポップアップ - (最前面) ってなることがあるんだよなあ。 Alt+Tabだと発生しないけど、なんだかなあと思う。
689 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 17:25:44 ] >>687 共存できないとわざわざ書いたのはなぜ? もしかして>>682 を誤解してる?
690 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 17:29:41 ] >>687 >より上手い方法があれば教えていただけると幸いです。 そういうウィンドウはOwned Windowと言います。>>685 のリンク先を読んでください。
691 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 17:29:47 ] …なぜに SetWindowLog & SetWindowPos なんだ? CreateWindowEx でのスタイル指定で解決できるのに… ターゲットの窓が他プロセスの持ち物なのか?
692 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 17:32:35 ] >>689-691 すいません、682さんを誤読した上に、685さんのレスとレスがすれ違いました。 WS_POPUPとは、親ウインドウを持つウインドウのことだったのですね。 正直、オーバーラップウインドウと、ポップアップウインドウの区別がわからず 今ググっていて682さんの文章に対する誤読に気づきました。 685さんのリンク先を実践してみます
693 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 17:50:25 ] 解決できました。 WS_POPUPの解説である「ポップアップウインドウを作成する」の「ポップアップウインドウをはなんぞや? という知識が無かったのが問題でした。 ポップアップウインドウそのものが、私の望んでいたもののようです。 WM_ACTIVEなどをまったく使わずWS_POPUPを指定しただけで解決できました。 ありがとうございました。
694 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 00:43:50 ] DOS窓で、CreateWindowてどうやるの? メッセージループとか。
695 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 00:53:29 ] どうやってやるも何も普通に出来るだろ。 いったい何を言っているんだ?
696 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 01:40:30 ] >>694 日本語でおk
697 名前:デフォルトの名無しさん [2007/04/12(木) 03:17:19 ] ソースコードを読んで勉強したいのですが、C言語 + Win32 API で書かれたオープンソースのアプリケーションでお薦めって何かありますか? 実践的なコードの書き方を勉強したいので、お手本になりそうなアプリがあったら教えてください。 また逆に、「このソフトの書き方は真似するな」的なのもあれば教えて頂けると有り難いです。 宜しくお願いします。
698 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 04:13:51 ] > お薦めって何かありますか 猫でもわかる > このソフトの書き方は真似するな 猫でもわかる
699 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 04:16:14 ] >>698 禿道と言わざるを得ない
700 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 07:39:02 ] あまりにも禿同杉てワラタw
701 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 08:18:22 ] ヒントにはなるが真似は出来ない
702 名前:デフォルトの名無しさん [2007/04/12(木) 09:19:39 ] 左右分割ウインドウをMFCを使わずに作っているのですが、相談させてください。 まず、ウインドウ全体を親ウインドウとします。 子ウインドウとして 「左側用にWS_THICKFRAMEを使ったウインドウをちょっと大きめに作って配置」 「右側に余り部分の大きさ分のウインドウ」 を貼り付けて実現しています。 左側用のウインドウの大きさが変化するたびに、右側のウインドウの大きさも変更されるようにしています。 ただ、WS_THICKFRAMEは角の近くだと「マウスドラッグで縦横の大きさを変えられる」モードになってしまいます。 まず「横の大きさしか変えられないウインドウ」は作れないのでしょうか? それをさせないために今は「上下に大きめに作る」ようにしているのですが(角付近を触れないように)、ウインドウはデスクトップウインドウのサイズより大きくは作れないようです(?)。 そのため親ウインドウをデスクトップ画面並に大きくされてしまうと困ってしまいます。 何か対策はありませんでしょうか? 左右ができれば、上下はその応用で作成可能だと思います。
703 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 09:30:11 ] >>702 左右の境界に少し隙間を開け、そこをドラッグすると左右に大きさが変わるようにする。 というようにMFCはなってたと思う。
704 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 09:47:03 ] >>703 なるほど。つまり自前でドラッグシステムを作っているわけですね。 WS_THICKFRAMEを使った方法も、この斜め問題さえ解決すれば実用に耐えるのですが…。 とはいうものの、WM_SIZEを捕まえて上下の大きさが変更されたら強制的に元に戻す処理は入れています。 ただそれは格好悪いもので、もし良い方法があればと思って相談しにきました。
705 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 10:44:16 ] WM_GETMINMAXINFO捕まえたらどうだろう MFCしか使ってないんで良く分からないけど
706 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 11:34:55 ] >>705 できました! まったく知らないWMでした。ありがとうございます。 これで tagMINMAXINFO *p = (tagMINMAXINFO*)lParam; p->ptMaxTrackSize.y += 128; としてやることで、デスクトップサイズよりでかいウインドウを作ることに成功。 期待通り動作できるようになりました。
707 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 11:48:53 ] >>702 ,706 WM_NCHITTESTを捕まえてDefWindowProc()が HTTOP,HTBOTTOM,HTTOPLEFT,HTTOPRIGHT,HTBOTTOMLEFT,HTBOTTOMRIGHTのときだけ もみ消してしまう方がいいのでは?
708 名前:デフォルトの名無しさん [2007/04/12(木) 11:53:52 ] スクリーンショットを撮るAPIってありますか
709 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 12:00:33 ] >>707 ウィンドウの四隅(スプリットバーの端っこ)が使えなくなるんでお薦めできない それで無効になる領域って結構大きいし
710 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 12:02:23 ] >>708 GetDC
711 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 12:29:16 ] >>709 言われてみれば確かに…。16*16ほどか。 なら、座標計算して嘘の値を返すなんてのはどう? 例えば、DefWindowProc()がHTBOTTOMRIGHTの場合で マウスが右の方にあるときはHTRIGHTを返し、下の方にあるときは0を返すとか。
712 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 12:35:13 ] >>710 その答えで>>708 が報われる事は絶対に無いだろう
713 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 12:36:19 ] >>707 そこまでするぐらいなら普通に>>706 でいいと思うんだが… まあどっちみちWM_NCHITTESTは使うんだけど。 例えば左右に動くスプリットバーがあったとして、 その端っこにポインタを合わせたら斜め向いたカーソルが出るんじゃ 格好がつかないんで HTTOPLEFTを受け取ったらHTLEFTを返す、みたいなことをする
714 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 12:37:31 ] なんかアンカー間違えたり誤読したりで嫌になってきた
715 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 12:40:03 ] 適当にぐぐったらすぐサンプルコードが見つかったんで、ついで。 >>708 ttp://www13.plala.or.jp/kymats/study/MULTIMEDIA/ScreenCapture.html
716 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 13:10:09 ] >>713 斜め向いたカーソルがでないように、上下64ドットずつ大きいウインドウを作りました
717 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 17:35:48 ] 普通は自前で全部やるものだよ。作り直したほうがいい。
718 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 18:12:40 ] >>717 ______ _ _| ̄|_ _ _ |____ | | | 口口 |_ _| \\ | | __ __ __ / / | | | | _  ̄ ___ | | |__| _| |_| |_ / / | | _ | | _| |_ |___| | | |_ _ _\ | | | \_/ / / / /。 _| | | ___ .| |.|__|/ / \\ \ /  ̄ \/ | | |___| |__|  ̄  ̄  ̄ ̄  ̄
719 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 18:30:06 ] >>702 Splitterなんて死ぬほどサンプルあるよ www.codeguru.com/cpp/w-d/splitter/ 君の場合は、手を抜こうとして逆に面倒なことになってる気がする。 素直にフルスクラッチした方が楽だと思うよ。
720 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 21:06:03 ] WTLのスプリッタのソースが見やすいと思われ
721 名前:デフォルトの名無しさん [2007/04/12(木) 21:58:22 ] すみません いまコンソールのC言語のプログラムを WinMainで始まるプログラムでも使えるようにしようとしている のですがエラーがでてしまいコンパイルできません エラーの内容はunsigned char*をchar*に変換できません等のものなのですが なんとかソースを書き換えずにコンパイルできるようにできないものでしょうか?
722 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 22:04:32 ] え、キャストしちゃいけないの?
723 名前:デフォルトの名無しさん [2007/04/12(木) 22:10:59 ] キャストすると1000ヶ所以上あってどうにもならない感じです
724 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 22:12:58 ] BCCにするんだ
725 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 22:14:49 ] 置換使えないのかい
726 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 22:18:07 ] 1000箇所ぐらいなら1時間で何とかなると思うが・・・ というかSuletiGay
727 名前:デフォルトの名無しさん [2007/04/12(木) 22:20:01 ] 置換も使えなさそうです 文字列の型にunsigned char*を使っているのが問題のようで 置換をしようにもどうにも絞れません
728 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 22:23:39 ] #define unsigned
729 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 22:29:26 ] charをデフォルトでunsignedとみなすコンパイルオプションがなかったっけ?
730 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 22:29:47 ] VCには存在するな
731 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 23:05:42 ] unsigned char*からchar*へ変換できないなんて、 単にWindowsプログラムのほうではC++としてコンパイルしているだけだと思う。 Cなら(警告は出るだろうが)エラーにならずにコンパイルできるはず。
732 名前:デフォルトの名無しさん [2007/04/12(木) 23:21:58 ] コンパイルオプション/Jでは配列のunsignedchar*がchar*に変換できないらしく だめでした情報ありがとうございます
733 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 23:26:48 ] とりあえず F4 でエラー行に飛べることを知ってるだけで 効率はかなり変わると思うよ F4 → カーソル移動 → Ctrl+V → (以下ループ)
734 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 23:27:36 ] ごめん、VC 限定ね… VC スレと勘違いした
735 名前:デフォルトの名無しさん [2007/04/12(木) 23:52:06 ] いえ、ありがとうございます ですが元のソースはいじるわけにはいかないんですよ ちょっと勝手に書き換えるとまずい事情がありまして
736 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 23:59:12 ] WinMainから始まろうと、mainから始まろうと、 同じCのソースコードであることに変わりはない。 片方でコンパイルできたものが、もう片方でコンパイルできないなんて、 (argc/argcやmainそのものに依存している場合などを除いて)有り得ない。 >>731 は試した?
737 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 00:00:18 ] >>735 そういうことってよくあるよね。 あ〜邪魔臭いコードでもいじれない。
738 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 00:22:56 ] >>735 Cでは警告は出ないようだ。 こんな感じでC++とCのコードは混ぜることが出来る。 extern "C" { #include "古いコード.h" } cl 新しいコード.cpp 古いコード.c
739 名前:デフォルトの名無しさん [2007/04/13(金) 01:03:16 ] とりあえず古いソースのヘッダをincludeしている箇所を extern "C"{}で囲ってみましたが効果ないっぽいです 情報ありがとうございます
740 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 01:18:34 ] >>739 意味わかってないだろ
741 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 01:26:44 ] IDEから使うと /TP がデフォになってるな。 これをはずせば拡張子に応じたコンパイルをしてくれるが、 プリコンパイルヘッダーやら他のところで引っ掛かりが出てるよ。 混ぜるのはこいつのレベルじゃ無理かもしれんね。