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


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

Win32API質問箱 Build51



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などの質問はそれぞれの言語や開発環境スレで

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 がデフォになってるな。
これをはずせば拡張子に応じたコンパイルをしてくれるが、
プリコンパイルヘッダーやら他のところで引っ掛かりが出てるよ。
混ぜるのはこいつのレベルじゃ無理かもしれんね。

742 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 09:35:23 ]
文字列に付けるszってなんですか?

743 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 09:39:19 ]
Win32APIでは構造体のサイズを取得してそのサイズを構造体にセットするというのをよく使いますが、
何故このようなやり方をするのでしょうか?



744 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 09:42:10 ]
>>742
ハンガリアン記法

745 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 09:43:57 ]
>>743
バージョンが上がって仕様が変わって構造体の内容が変わっても
互換性を維持するため。

746 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 10:06:09 ]
まじ?

747 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 10:09:16 ]
>>742
zero(\0)終端string(文字列)の略

748 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 10:36:38 ]
nsはなんですか?

749 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 10:46:51 ]
>>748
質問まとめてしろよ

750 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 12:01:00 ]
>>746
>745のことならマジ。

751 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 13:47:56 ]
ちょっと思うんだけど、
ファイルパス長ってMAX_PATHバイト?MAX_PATH文字数?
MAX_PATHバイトだったら、マルチバイト文字で半分になるんだけどいいの?
それとも、
#define MAX_PATH_NAME (MAX_PATH * (2 / sizeof(TCHAR)))
な事すんの?

752 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 13:50:14 ]
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するからMAX_PATH自体あまり意味無いような・・・

753 名前:751 mailto:sage [2007/04/13(金) 13:50:49 ]
補足
TCHAR szFile[MAX_PATH_NAME + 1];

とつかうとして



754 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 13:57:06 ]
まあDOS/Windows 3.1時代の遺物なんで

755 名前:751 mailto:sage [2007/04/13(金) 14:01:31 ]
>>752
CreateFileの説明の通り
In the ANSI version of this function,
the name is limited to MAX_PATH characters.To extend this limit to 32,767 wide characters,
call the Unicode version of the function and prepend "\\?\" to the path.
For more information, see Naming a File.

ワイド文字で32767文字って事は、65534バイト宣言しとけばいいの?
ちょいもったいない気が・・・






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

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

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