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


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

■MFC相談室 mfc20d.dll■



1 名前:デフォルトの名無しさん [2008/12/26(金) 00:43:36 ]
Microsoft Foundation Classライブラリ専用スレです。

前スレ
■MFC相談室 mfc19d.dll■
pc11.2ch.net/test/read.cgi/tech/1207301867/

129 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 00:00:29 ]
MFC Feature Packでアプリ組むと、タイトルバーのフォントが、標準のものより
ちょっと小さくて読みにくいんだけど、これって、どこで修正できるん?
どこかのタイミングでフォントを設定すれば修正できるような気がするんだけど、
上手くいかない・・・orz
どなたか、わかる方、教えてplz

130 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 00:49:39 ]
まだそんな名前だっけ
普通にSP1って呼んでるわ

131 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 13:22:30 ]
>>128
すんません。いろいろ調べてはいたのですが
灯台下暗しでした。。。
CS_DROPSHADOWでやりたいことができました。

132 名前:デフォルトの名無しさん [2009/01/07(水) 13:47:27 ]
MFC(VS2005)からVBAの関数を呼び出す方法を知っている人いませんか?
ググってもなかなかみつからないので。。。
よろしくお願いします。

133 名前:名無し募集中。。。 mailto:sage [2009/01/07(水) 14:09:49 ]
VS2008からDDEを使ってExcelに値を放り込んだり多少の操作をした事はあるけど
VBAの関数を呼ぶ方法はわからないな
VBAのどんな関数を呼びたいんだ? (または任意のマクロかな)

134 名前:デフォルトの名無しさん [2009/01/07(水) 15:05:13 ]
>>133
ExcelのVBEditorで作ったVBAの関数を呼びたいと思っています。
Excelに貼り付けたボタンを押すとその関数が呼び出されるんですが、
これをMFCで処理させたいと思っています。

なかなか難しいですかね?

135 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 15:15:24 ]
こういうやつ?

追加し、MFC からオートメーションを使用した VBA マクロを実行する方法
ttp://support.microsoft.com/kb/194906/ja

136 名前:デフォルトの名無しさん [2009/01/07(水) 15:22:52 ]
>>135
日本語が。。。

でも、オートメーション使うとなにかできそうですね。

137 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 17:58:11 ]
>>129
タイトルバーのフォントが変わるの? XPじゃ変わらんけど。

ちなみに、メニューバーのフォントは変わるのでシステムの設定を
チェックしてそれに合わせているんだが。



138 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 18:01:14 ]
CDHTMLDialogのOnInitDialogでCreateExで動的生成したコントロールが、
スクロールバー等をクリックしても無反応です。

CDHTMLDialogで動的に生成したコントロールを有効にする方法は無いでしょうか?

139 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 19:06:25 ]
CEditを本体から呼び出してエディットボックスを作成しているのですが、これの色を変更する場合って
CEditのHDCを取得して、SetTextColorではだめなんでしょうか?

140 名前:デフォルトの名無しさん [2009/01/07(水) 20:19:18 ]
つオンコントロールカラー

141 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 00:17:30 ]
古いアプリのメンテのために昨日から初めてMFCに触れることになった者です。

ある比較的シンプルなWindowsアプリで、なぜかCPU使用率が異常に高いので
いろいろ試行錯誤しなかがら試してみると、どうもOnPaintのオーバライドで
ベースクラスのOnPaint(CframeWnd::OnPaint)を呼んでないことが原因らしいことが
わかったのですが(つまりオーバーライドの中でCframeWnd::OnPaintを呼んでやれば
CPU使用率の異常な上昇は起こらない)これって普通なんでしょうか?

なんかググってもオーバーライドの中でCframeWnd::OnPaint読んでるようなコードって
見かけないような気がするんですが……。


142 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 00:19:42 ]
OnPaint で GetDC とかしてないか?
OnPaint では CPaintDC でデバイスコンテキストを作る必要がある。

あるいは、OnPaint で何もしていないか・・・。
何もしなくても CPaintDC を作る必要がある。

143 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 00:50:27 ]
OnPaint() ではベースクラスの OnPaint() は呼ばない。
ベースクラスでは、Default()、つまりDefWindowProc() を呼んでいるだけだから。

144 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 00:52:34 ]
DefWindowProc で
BeginPaint と EndPaint をしてるから
OnPaint で何もしていないなら
自前で CPaintDC 作るか
さもなくばベースクラスの OnPaint を呼ばなければいけない。

145 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 01:06:27 ]
CPaintDC(BeginPaintとEndPaint)しないと無効領域がクリアされず
延々とWM_PAINTが生成されるんだっけか

146 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 01:36:29 ]
無効領域がある限り永遠にWM_PAINT送り続けるからな。
一応メッセージの優先順位が低いから、それでもそれなりにアプリは動作するけど。

147 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 05:09:44 ]
つまり、元のアプリは相当酷い代物ってことだな。



148 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 19:26:24 ]
>>142-147
ありがとう。
ソースは会社なんで明日確認してみます。

>元のアプリは相当酷い代物ってことだな。
名前から意味がまったく読み取れない変数名やメソッド名とか、
一つのメソッドが平気で200行とかそれはもうw

149 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 21:41:46 ]
子ウィンドウの座標(CPoint)を親ウィンドウの座標(CPoint)に変換したいんですが関数などはあるのでしょうか?

150 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 21:43:43 ]
どういう意味だ?
デスクトップからの相対座標を、親ウィンドウの相対座標に変換するってことか?

151 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 21:44:50 ]
Viewクラス内に派生クラスで作成したCEditクラスがいるんですが
このCEdit内をクリックされた時に親ウィンドウ側に座標を渡したいんです

152 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 22:10:12 ]
GetCursorPosで取得したならスクリーン座標なので親でScreenToClient

153 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 22:20:47 ]
GetCursorPosを行ったのではなく、CEditクラスに来たWM_LBUTTONDOWNのメッセージを処理したいんですよ。


154 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 22:23:01 ]
応用力のない奴だな

155 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 22:27:07 ]
つ MapWindowPoints

156 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 22:55:15 ]
応用力があったらこんなところに来ません。

157 名前:デフォルトの名無しさん [2009/01/09(金) 08:02:43 ]
photoshopとかwordみたいにdrawの一部を拡大縮小したくて、SetViewportOrgとか使ってみたのですが
どうもキレイに行かなくて困ってます。
イイ解決法ってありますか?



158 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 10:12:41 ]
MFCと関係ない質問はスルーの方向で

159 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 11:55:15 ]
スクリーン座標をクライアント座標に変換した所、正しく変換された物から右下側に座標がずれてしまうのですが
これは、使い方がおかしいのでしょうか?

160 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 12:02:21 ]
エスパーさーん

161 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 12:09:41 ]
ScreenToClientでスクリーン座標をクライアント座標にしたらずれてるって話だろ?
別に意味がわからなくはないとおもうが・・・。

まぁ、俺には解決策はわからんけどね

162 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 14:04:57 ]
・変換元座標がスクリーン座標でない。
・実はAPIのScreenToClientを使用しており、渡すHWNDが間違っている。
・"正しく変換された物"のほうがずれている。


163 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 15:33:57 ]
非クライアント領域が計算に入ってないんだろうな

164 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 23:01:13 ]
GetCurrentDirectoryより簡単な関数はありますか?

165 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 23:18:29 ]
>>164
「簡単」の基準は?

166 名前:デフォルトの名無しさん [2009/01/13(火) 23:24:58 ]
MFCを使い ダイアログベースのプログラムを作成しています。
例えばダイアログ上にボタンを配置し 毎フレーム位置を変更させるような
プログラムを作成したいと考えています。
毎フレーム処理を行うようなコードはどのように実装すればよいのでしょうか?

167 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 23:28:08 ]
そもそもフレームってどういう意味で言っているのか分からない
紙芝居でもダイアログ上に表示するのか?



168 名前:デフォルトの名無しさん [2009/01/13(火) 23:38:06 ]
>>167
返答ありがとうございます。
>紙芝居でもダイアログ上に表示するのか?
イメージに近いです1フレーム毎に処理を行えればと思っています。



169 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 23:43:46 ]
フレームの定義が時間単位とかだと、タイマーイベントでも作ってダイアログのDC上に絵を描画とかか?
関係ない話だけど、今Windows7のペイントいじってみた
なんとなくリボンの良さ分かった木はするけど、絵心がないから個人であれ作るのは面倒だな

170 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 23:52:29 ]
>>169
Timerを使わず
win32でいうところのメッセージループみたいな
所で独自のイベントを受け取って処理を行いたいんだけど
いまいちわからん。。。

リボンUIは確かに見た目は良いね

171 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 00:26:54 ]
GDIにはフレームという概念は無いはず。
タイマーかなんかで一定時間毎に処理するしかないね。

172 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 01:39:59 ]
やっぱりフレームがどういうものを想像しているのか分からないな
描画が必要なタイミングの単位と言うならOnDrawとかになるんだろうけど
一定周期じゃないもんな(アクティブになったときとか、リサイズされたときとか色々。。。)

173 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 10:09:35 ]
MFCならOnIdleの出番か?

174 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 10:42:44 ]
ティアリングの無い綺麗なアニメーションしたければWPF使えってんだ

175 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 18:16:00 ]
CRectTrackerを使って画像内にドラッグで大きさ、位置が
変更可能な矩形を描画しようとしてるんですが、
矩形内の色が白になってしまって画像が上書きされた形になります。
枠だけ描画というのはどうやったらできるんでしょうか。

画像はrawで、OpenGLで描画されています。


176 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 18:24:56 ]
>>175
コンストラクタでCRectTracker::hatchInsideを指定するとどうなる?
# OpenGLで描画したものってDCの範疇じゃないのかな?

177 名前:175 mailto:sage [2009/01/14(水) 18:55:08 ]
>>176
斜線が入るだけで、白く塗りつぶされたままです。



178 名前:デフォルトの名無しさん [2009/01/14(水) 19:52:53 ]
エディットボックスでキー入力の入力方法を英語から日本語入力に自動的に切り替える方法を教えてください。


179 名前:178 [2009/01/14(水) 19:53:28 ]
↑winXP+VC2005です。すいません


180 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 21:15:39 ]
MFCにあったかな?
なければスレ違い

181 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 22:07:07 ]
>>175
そもそもなんでOpenGLで描画したところにトラッキングしたいのか判らんが、
MFC側の問題じゃなくてOpenGL側の問題っぽいからOpenGLスレで聞いて味噌。

182 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 23:26:05 ]
質問させてください。
今MFC VC2005を使いプログラムを組んでいるのですが、あるメソッド内でint型配列array[21]の中身をsetwindowtextでタイトルに表示させたいと思っています。
setwindow(_T(""))で、array[i]をどのように記述すれば表示できるようになるでしょうか。下らないかもしれませんがお願いします。

183 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 23:28:17 ]
CString hoge;
hoge.format(_T("%d"), array[i]);
wnd.SetWindowText(hoge);

こんな感じかな

184 名前:182 mailto:sage [2009/01/15(木) 02:24:13 ]
>>183さん
そういう書き方をするんですね、、無事上手くいきました。ありがとうございました!

185 名前:175 mailto:sage [2009/01/15(木) 02:48:28 ]
>>181
今使ってるプログラムはもともと1年半くらい前の演習の時に先生から頂いたrawビューアで、
研究に使えそうだってことでその時のプログラムを改造しようとしてるんですが、
OpenGLは全く扱ったことがなくて(演習の時も処理部分しか触ってない)、
時間もないんで、OpenGLを勉強するより1から作り直した方が早いような気がしてきたんですが、
raw画像(320×320の輝度値のみのデータ)をMFCを使って表示させるには
ビットマップに変換するしかないのでしょうか。

186 名前:名無し募集中。。。 mailto:sage [2009/01/15(木) 03:19:54 ]
輝度データをDIBに変換すれば良い
BMPはLoadImageでDIBのハンドルを得られるが
自分で変換する場合はBITMAPINFOにサイズなどをセットしてCreateDIBSectionを使って
ハンドルと輝度データを入れる領域を得る(ここまでMFCなし

187 名前:175 mailto:sage [2009/01/15(木) 11:33:23 ]
>>186
アドバイスありがとうございます。
それで作ってみたいと思います。



188 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 17:33:57 ]
MFC6.0の参考書見ながらこつこつやってるんだけど別に支障はない?
1999〜2001年に出版されたものなんだが

189 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 19:37:56 ]
int iLength = m_Edit.LineLength(i)+1;
TCHAR *ptBuf = new TCHAR[iLength];
m_Edit.GetLine(i,ptBuf,iLength);
ptBuf[iLength]=0;
ar.WriteString(str);
delete[] ptBuf;
一行一行ファイルの保存させたいのでCEditの内容を取得して保存させるのに
上記の様なソースを書いたところdelete[]の所でエラーをはくのですがなぜでしょうか?

190 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 19:47:37 ]
>>189
ptBuf[iLength]=0;

ptBuf[iLength-1]=0;

191 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 19:57:10 ]
CWnd::GetWindowTextでCStringに纏めて取って、
CString::Tokenizeで分解したほうが手っ取り早くね?

192 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 20:45:37 ]

  int  i, nLineCount;
  CString strText;
  CStringArray bufArray;

  nLineCount=m_Edit.GetLineCount();
  for (i=0;i < nLineCount;i++)
  {
    int len = m_Edit.LineLength(m_Edit.LineIndex(i));
    m_Edit.GetLine(i, strText.GetBuffer(len), len);
    strText.ReleaseBuffer(len);
    bufArray.Add(strText);
  }

  CStdioFile file;

  if(file.Open(..略..))
  {
    for (i=0;i <bufArray.GetSize();i++)
    {
      file.WriteString(bufArray.GetAt(i));
      file.WriteString(_T("\r\n"));
    }
    file.Close();
  }

とかでよくね?

193 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 21:25:28 ]
CEdit::GetLine
戻り値
実際にコピーされたバイト数

戻り値使わないの?

194 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 00:00:50 ]
MFCでデバイスコンテキストで使われているフォントの高さを取得する方法ってありますか?

195 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 00:05:43 ]
GetTextExtent

196 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 03:07:01 ]
>>193
ここの使用例をテキトーに書き直しただけだから、

ttp://msdn.microsoft.com/ja-jp/library/s7zy7cwk(VS.80).aspx

細かい事気にすんな。 ハゲるぞ。(もうハゲてるかもしれんけど)

197 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 04:18:10 ]
GetLineの戻り値、、使わないなあ。 使いどころない。
>>193は、>>192でどう戻り値使うのだろうか?



198 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 09:07:51 ]
>>194
GetTextMetrics

199 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 17:51:17 ]
lineText..GetLine(iLine, strText.GetBuffer(iLength));
っていう風に関数を実行するとstrTextにその行が入る時と入らない時があるんですがなぜなんでしょうか?

200 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 17:57:30 ]
ReleaseBuffer してるか?

201 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 18:01:19 ]
行ってますし、デバッガでとめて一個一個通すと何故か全部入っていくんです。

202 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 18:08:02 ]
>lineText..GetLine(iLine, strText.GetBuffer(iLength));
こんなコード、有り得ないだろ。

203 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 19:07:15 ]
CEdit::GetLine(int nIndex, LPTSTR lpszBuffer)
だろ?EM_GETLINEのベタ実装なんだよな、これ。
昔から思っていたんだが、わざわざメソッドとして用意しておく必要性あるんだろうか。
普通バッファ長を指定できる方しか使わないと思うのだが。
わざわざこっちでバッファの先頭ワードにバッファ長代入とか暇人過ぎだろ。

204 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 21:11:51 ]
2つあるうちの一見楽そうに見える方が実は大変ということか

205 名前:デフォルトの名無しさん [2009/01/18(日) 15:22:20 ]
>>199
>>203 が書いているように、引数が2つしかない CEdit::GetLine()を使う
時は、呼び出す前に、第二引数で渡すバッファの先頭に、バッファ長を
書いておく必要があるのに、それをやっていないからだろ?

  LPTSTR pBuf;

  pBuf=strText.GetBuffer(iLength);
  *((LPWORD)pBuf)=iLength;       // バッファ長をセット
  m_wndEditCtrl.GetLine(iLine,pBuf);
  strText.ReleaseBuffer(iLength);

自分でバッファ先頭にバッファ長をセットするのが面倒なら、引数が3つ
あるCEdit::GetLine()を使うことだ。

206 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 16:01:41 ]
日付や時間を取得したいけどエラーがでてしまうんです・・・
内容は
Run-Time Check Failure #3 - The variable 'newtime' is being used without being initialized.

afx_msg void CMainWin::OnTime()
{
char str[80];
CTime Curtime = CTime::GetCurrentTime();
struct tm *newtime;

newtime = Curtime.GetLocalTm(newtime); //ここが問題
wsprintf(str,asctime(newtime));
str[strlen(str) - 1] = '\0';
MessageBox(str,"Time and Date");
}

msdn.microsoft.com/ja-jp/library/fxy17zta(VS.80).aspx
ここ見る限りじゃ間違いないと思うんだけどなあ・・・
指摘と改善お願いします。。。

207 名前:デフォルトの名無しさん [2009/01/18(日) 16:57:35 ]
>>206
突っ込みどころが大杉。釣りか?

C++やMFC以前に、ポインタも理解していないなら、C言語の基礎からやった
方がいいと思う。

MFCのサンプルは間違っているな。

  struct tm newtime;
  Curtime.GetLocalTm(&newtime);

でうまくいくだろう。

また、ワイド文字版のwsprintf()を使うなら「char str[80]」ではなく
「wchar_t str[80]」とすべき。MessageBoxもワイド版を使う。

> str[strlen(str) - 1] = '\0';

これもprintf()/wprintf()によって文字列末尾にNUL文字('\0')は付与され
ているから意味がないし、ワイド文字なら、strlen()ではなくwcslen()を
使うべき。

str[wcslen(str)-1] = L'\0';

第一、str[]がNUL文字で終端されていないと、strlen()/wcslen()は
文字列長さを判定できない。



208 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 17:08:05 ]
>>207
MSのサンプル間違ってるとか悲しいわな

これ、一応参考書のサンプルなんですけど捨てたほうがいいでしょうか
まあ2001年に出版されたものなんですけどね

209 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 17:14:24 ]
サンプルは間違っているとは言い切れないよ。
宣言と利用の間に、メモリ確保が隠されているかもしれないw

とは言え、2008用のページの方は訂正されているんだからそっちを見ればいい訳で。
ttp://msdn.microsoft.com/ja-jp/library/fxy17zta.aspx

210 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 17:22:43 ]
CTime Curtime = CTime::GetCurrentTime();
tm newtime;
Curtime.GetLocalTm(&newtime);
wsprintf(str,asctime(&newtime));

でできました!
参考書って年代で仕様も変わるけど図書館にはこれしかなくて・・・^^;
なんか疑いにくいんですよね、参考書って
どうもありがとうございました

211 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 17:28:49 ]
本に誤字脱字があるのは珍しいことじゃない

212 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 17:33:05 ]
おかしいと思ったら複数調べるのがいい。

213 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 17:33:41 ]
>>210
その参考書が何か知らんが、MSDNのサンプルをコピペしただけの悪書なんじゃないか?
いみじくも参考書を名乗るのなら、ちゃんと検証されたコードを載せるべきだと思うのだが。

214 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 17:37:35 ]
>>213
えっと・・・
ハーバート・シルト/フランク・クロケット著 「標準講座 MFC6.0」だそうです
結構分厚いからコピペではないと思います
ver間での使用の違いを疑わなかった自分のミスです

215 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 17:40:25 ]
いやこれ仕様の違いじゃなくてもともと間違ってるよ。
でもその本見る限り、コピペじゃなくて同じソースってことみたいね

216 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 17:44:41 ]
ってサンプルソースがダウンロードできるから見てみたけど、

struct tm *newtime;
newtime = curtime.GetLocalTm();

これなら旧仕様で合法だな。


217 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 17:48:03 ]
>>216を2008でコンパイルするとGetLocalTm()に引数がないことからエラーがでました
昔はよかった



218 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 17:50:03 ]
まあそれはMSDNのほうでも、_SECURE_ATLを未定義にすればいいみたいだけどね。

219 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 17:50:40 ]
>いいみたい
→いいと書いてるみたい

220 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 17:56:33 ]
昔は引数にNULL(省略化)を渡すことで、オブジェクト内部のstruct tmの
ポインタを返す仕様だったけど、NULLポインタを渡すのを許可しなくなった
ってことでは?

オブジェクト内部のstruct tmのポインタを取得できると、直接データを
書き換えて隠蔽化の意味がなくなるから。

221 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 18:56:56 ]
元のサンプルと全然違ってるし

222 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 19:33:49 ]
サンプルコードなんて使い方の雰囲気を感じ取るだけのもんで
コピペするもんじゃねぇ。
自分のプログラムに組み込むときは、引数・戻り値の意味と動作を理解し
自分の頭でコードを書くべき。

223 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 20:41:17 ]
サンプルコードをいじくりながら学ぶもんなんじゃねえの?
いじくる前に1回コピペするだろ

224 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 21:26:46 ]
いじくるのは勝手だけど、自分が間違ったのを本のせいにしない。

225 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 22:59:29 ]
>>207
wsprintf()ってワイド文字ではなくTCHARだけど。

226 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 23:02:26 ]
TCHARは_tsprintfみたいな名前だろ?
wprintfはwcharのはず
プリプロセッサで切り替わるだけだし

227 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 23:05:43 ]
wsprintfはWindowsのAPI
wprintfはprintfのワイド文字版



228 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 00:15:16 ]
>>210
手元の2004年初版第6刷発行では>>216のコードになってるな

>>225-227
wsprintf()は環境によってマルチバイトかUNICODEだよね。
>>206のコードだとマルチバイト環境のコードならばcharは間違えというわけではない。

それと
str[strlen(str) - 1] = '\0';
ってのはasctime()が改行文字を付加するからそいつを取っ払うため。

まぁ、あんまりよろしくないコードとは思うけどね。

229 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 00:41:37 ]
wsprintfとwprintfとswprintfは紛らわしすぎる






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

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

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