- 1 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 01:54:24 ]
- スレ立てるまでもない、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 Win32API質問箱 Build76 pc11.2ch.net/test/read.cgi/tech/1233622578/
- 193 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 10:47:34 ]
- >>174
そうだ!! WM_COPYDATAがあったんだ! ありがとうありがとう
- 194 名前:デフォルトの名無しさん [2009/03/05(木) 18:03:33 ]
- ツールバーを消したいんですけど、手順的にはどうすればいいのですか?
サイズを 0,0,0,0 にしたり SW_HIDE とか HWND_BOTTOM を試しても うまくいかず、「上に」詰めた領域がツールバーに隠れるんですが、、、
- 195 名前:デフォルトの名無しさん [2009/03/05(木) 18:39:06 ]
- >>194
ShowControlBar()
- 196 名前:デフォルトの名無しさん [2009/03/05(木) 18:45:54 ]
- ごめん間違えた。ShowWindowのSW_HIDEで消えないの?
- 197 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 22:18:58 ]
- まともなのが共産と国民新党しかないとかどれだけw
- 198 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 22:23:58 ]
- ひでえ誤爆
- 199 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 22:57:10 ]
- >>192
Imports System.Runtime.InteropServices は書いたのですがエラーになってしまいました。 もう一つ教えて頂きたいのですが、 Dim objAcc As IAccessible という宣言があるのですが、 objAcc を入力したあとにピリオドを入力すると メンバが出るようにしたいのですが方法がありましたら教えて頂きたいです。
- 200 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 22:58:46 ]
- おっとそこまでだ
その質問はVB.NETスレでやってくれ
- 201 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 22:59:28 ]
- >>199
何度もすみません。 現在デスクトップ上のアイコンの名前がリストボックス登録されるところまで出来ました。 (グーグル検索の最初に出てくるサンプルをVB.NETに書き換えて)
- 202 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 23:10:53 ]
- >>197
どういう話題のスレか分かってしまうw
- 203 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 23:44:55 ]
- プログラムが立ち上がったときに、エディットコントロールに初期文字が表示されるようにするため、
プログラム内からエディットコントロール内に文字を打ちたいのですが、どのようにすればよいでしょうか? SendMessageを使って、例えば「7」を入力しようとしましたが、ダメでした。 SendMessage( hEdit, WM_KEYDOWN, '7', 0 ); ご助言、お願いします。
- 204 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 23:49:55 ]
- >>203
WM_INITDIALOG 内で SetWindowText()
- 205 名前:203 mailto:sage [2009/03/06(金) 00:02:49 ]
- >>204
ありがとうございました!!
- 206 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 09:29:08 ]
- >>194
SetMenu(hWnd, NULL);
- 207 名前:デフォルトの名無しさん [2009/03/06(金) 19:31:44 ]
- トップレベル・ウィンドウに
BOOL MoveWindow( HWND hWnd, int X, int Y, int nWidth, int nHeight, BOOL bRepaint ); と、 BOOL SetWindowPos( HWND hWnd, HWND hWndInsertAfter, int X, int Y, int cx, int cy, UINT uFlags ); を、 X、Y、W、H とも同じ値にして実行したときに出来るウィンドウのサイズと座標が 全く異なるんですが、これは一体どういうことなんですか??
- 208 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 19:48:15 ]
- スクリーン座標とクライアント座標じゃね?
WndPosがクライアントだった希ガス
- 209 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 22:34:14 ]
- 悪い、SWP_NOSIZEとSWP_NOMOVE指定してたわ
- 210 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 07:39:56 ]
- そーゆーオチかよwww
- 211 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 16:41:43 ]
- あああああああああああああああああああああああああああああああああああああああ
- 212 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 16:43:47 ]
- 何?何?
- 213 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 16:49:03 ]
- 酒飲んでて屁だと思ったのが下痢だった
- 214 名前:デフォルトの名無しさん [2009/03/08(日) 01:14:34 ]
- OS:Windows VISTA SP1
ボタンを押したらOS情報取得するプログラムを以下の様に記述 しました。 GetVersionEx(&osv); switch (osv.dwPlatformId) { case VER_PLATFORM_WIN32s: MessageBox(NULL, "Win32sです", "Platform", MB_OK); break; case VER_PLATFORM_WIN32_WINDOWS: MessageBox(NULL, "Windows95です", "Platform", MB_OK); wsprintf(str, str_format, LOWORD(osv.dwBuildNumber)); MessageBox(NULL, str, "OK", MB_OK); break; case VER_PLATFORM_WIN32_NT: MessageBox(NULL, "WindowsNTです", "Platform", MB_OK); break; 結果、なぜか、VISTA上で動かしてボタンを押すと、 VER_PLATFORM_WIN32_NT: MessageBox(NULL, "WindowsNTです", となってしまいます。 VISTAを判別するためのdefineってなんでしょうか? GetProductInfoで細かく取得するつもりはないんですが・・。
- 215 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 01:20:02 ]
- VistaはNTだし…
- 216 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 01:21:55 ]
- dwMajorVersionとdwMajorVersion見ろ
- 217 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 01:31:02 ]
- ドキュメントぐらい読め
msdn.microsoft.com/en-us/library/ms724834(VS.85).aspx
- 218 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 01:32:06 ]
- >>214
msdn.microsoft.com/en-us/library/ms724834(VS.85).aspx
- 219 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 01:32:58 ]
- かぶったorz
- 220 名前:デフォルトの名無しさん [2009/03/08(日) 01:36:26 ]
- NT系列だったんですね 勘違いしてました。
ありがとうございました
- 221 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 01:38:07 ]
- まさか本気でMeの後継だと…
- 222 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 02:26:19 ]
- さらに、Windows 7.0はバージョン7.0と思っているに違いない。
- 223 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 02:49:04 ]
- え??VISTAの完成度の低さはMeの後継だからでしょ?
- 224 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 02:52:21 ]
- うん そうだね
- 225 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 02:56:45 ]
- Win32を使っているのならVistaのAPIの完成度の高さはわかるはずだが…
- 226 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 03:30:29 ]
- >>222
>Windows 7.0 もしかしてそれはWindows 7と言いたいのか?
- 227 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 03:31:53 ]
- >>223
「Meの後継」と「完成度」には何の関係もないだろ
- 228 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 06:03:34 ]
- >>226
そのとおり。すまん、つい勢いで書いてしまった。今は反省している。
- 229 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 06:35:58 ]
- >>227
そのとおり。すまん、つい勢いで書いてしまった。今は反省している。
- 230 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 10:37:52 ]
- VistaのAPIの完成度の高さ、って……
MS社員乙って言ってほしいのか?
- 231 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 12:15:03 ]
- 後に出たAPIほど洗練されるのはある意味当たり前
VistaのAPIが完成度高いってよりWin32 APIが極端に使いにくいだけ でも歴史的背景を考えればやむなし
- 232 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 13:40:29 ]
- はぁ?
VistaのAPIが完成度高い??洗練されてる?? もしかして、VistaのAPI=.NET3.0/WPF=洗練されてる、とか言いたいだけの人なのかね
- 233 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 13:45:09 ]
- WERやスレッド関連は以前よりはるかに完成度が高いと思うけど
- 234 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 13:49:43 ]
- >>233
アホは議論に参加しなくていいから。
- 235 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 13:54:28 ]
- 一部流動的なものを対象としている為に、
ライブラリのような「完成度」が求めることが不可能 であるか極度に困難だからこそAPIと呼ばれライブラリ とは呼ばれない件について (以上チラ裏)
- 236 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 14:06:18 ]
- まあ APIの完成度 なんて表現を使う時点で程度の低さが分かっちゃうけどね
- 237 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 14:08:39 ]
- API=Aplication Programming Interface
だったっけ? 完成度は求められる対象じゃないか?
- 238 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 14:11:14 ]
- いやVISTAのAPIは完成度高いだろ
だってさ、XP用のソフトも使えるんだぜ? XP = XP用のソフトしか使えない VISTA = XP用ソフト、VISTA用ソフトの両方が使える
- 239 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 14:18:44 ]
- そもそもVistaのAPIつっても大部分がWin16時代からの物なのに「完成度」てw
どうも"API"を理解してない人がいるみたいだね またいつもの人か?
- 240 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 14:20:03 ]
- どこぞのVZ厨だろ
- 241 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 14:21:46 ]
- >>239
そだね。APIってインターフェースだから内部構造は絶対不変で Win16のコードすら必ず残ってるからね。だからVistaでもXPでも Windows2.0のプログラムがそのまま動くw。
- 242 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 14:30:44 ]
- WERやスレッド関連って、VistaからのAPIだろ…
- 243 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 14:40:04 ]
- MSの互換性絶対主義の賜だね
さすがMS様はわかってらっしゃる
- 244 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 15:07:33 ]
- >>241
64bit版にはWin16サポート無くなってるんじゃなかったか? 古いInstallShieldのインストーラが起動しないとかどっかで見た気がする
- 245 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 15:23:24 ]
- まぁさすがにWin16はもういいだろ・・・
- 246 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 15:24:42 ]
- 最近のソフトでも、インストーラーが16bitのがあるのがむかつく。
しかも64bit版でそんなインストーラ使うアホなとこもあるw
- 247 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 15:32:33 ]
- .NET Frameworkなんか糞だろ
開発する側のメリットしか考えてない使い手無視のAPI 互換性だけでWin32APIを残しているあたりも糞OS
- 248 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 15:43:59 ]
- PEの出だしって16bitじゃなかったか?
- 249 名前:デフォルトの名無しさん [2009/03/08(日) 15:52:50 ]
- Windowsの灰色ってRGBで言うところの(255,255,255)いくつなんでしょうか?
SetTextColor(hdc, RGB(0, 0, 0); SetBkColor(hdc、RGB(???)); 背景はダイアログボックスの灰色です これでいろいろ試してみたんですけど なぜか背景色が合わないんです どうしたらダイアログボックスと文字の背景色を合わせられるでしょうか?
- 250 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 15:53:29 ]
- PEは32/64bitだろ
因みに16bitはNEと呼ばれてた LEとかLXとかっていう16/32bitハイブリッドなのもあってこれは9x時代のドライバにも使われてた
- 251 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 15:55:43 ]
- >>249
hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1);
- 252 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 15:59:24 ]
- >>250
すまん 言い方が悪かった OSが16bitだった場合実行される16bit命令が出だしにあったんじゃないかと
- 253 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 16:00:45 ]
- int型だぁ〜(><;)わからないよ〜
- 254 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 16:04:12 ]
- >>249
::SetTextColor( hDC, ::GetSysColor( COLOR_BTNTEXT)); ::SetBkColor( hDC, ::GetSysColor( COLOR_3DFACE));
- 255 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 16:04:58 ]
- >>251さん
SetBkColor(hdc、COLORREF ) hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1); を COLORREF形式にするにはどうすればいいんでしょうか?
- 256 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 16:05:56 ]
- >>254
ありがとうございます できましたm(_;)m
- 257 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 16:05:58 ]
- >>249
設定とかによって変わってくるから決めうちはいかんよ。
- 258 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 16:17:53 ]
- ほんと決め打ちは勘弁して欲しい
配色を黒基調にしてると文字が見えなくなるとかw
- 259 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 16:46:50 ]
- __
\|/ | ┌─┼─?|─┬──┐ 三 |入 ,> .└-、 三 = <、 ヽ、 ,-‐-、 三 /.| ,> .┌-、 "''-( ( ̄〇 └─┼───┴──┘ "''''""" ヽ,,,,ソ _|_ ////
- 260 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 16:52:59 ]
- 大抵SetBkMode(TRANSPARENT)するから
SetBkColor()はあんまり使わんかも
- 261 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 16:56:45 ]
- >>248
出だしつーかファイルの一番先頭は「このプログラムはDOSじゃ動かねーよ」って表示するだけの16bitコードだな。 極限までバイナリサイズ縮める遊びとかでたまに書き直してた。
- 262 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 17:00:21 ]
- >>261
ちゃんとしたプログラムに差し替えも可能だな。
- 263 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 17:31:27 ]
- 誰ですか、スタブをjxw,exeにした人はw
- 264 名前:デフォルトの名無しさん [2009/03/08(日) 20:49:27 ]
- VC++2005 でサウンド入出力プログラムを作っています.
SDK,低レベルAPIを使っています. 入力,出力共にマルチバッファリングを行っているのですが, 入力と再生の間に,バッファ数に従う遅延が生じてしまいます. 体感では,(1バッファに録音する秒数 * 用意したバッファ数)秒 の遅延が生じていると思われます. リアルタイムに近い動作を実現したいため, 1バッファに録音する秒数(RecSEC)を短くしています. 現在の設定では RecSEC = 0.005 [sec/buffer] です. バッファ数が少ないと音声がブツブツと途切れてしまいますが, バッファ数を増やす事で解決しました. これで遅延量が少ない動作が実現できたと思っていたのですが, RecSEC = 0.1 として実行してみたところ,約0.1[sec]の遅延を期待していたのですが 約(0.1*バッファ数)[sec] という大きな遅延となってしまいました. ソースコードをアップしましたので,解決方法をご教授願います. waveInStart の実行位置を変えてみる等色々とやってみましたが よくわかりませんでした. pass: sagehoge ttp://www2.uploda.org/uporg2074476.txt.html よろしくお願いします.
- 265 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 21:21:12 ]
- 延滞が気になるASIOを使え
- 266 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 21:28:17 ]
- whOut[k].dwFlags = WHDR_BEGINLOOP | WHDR_ENDLOOP;
whOut[k].dwLoops = 1; 関係ないと思うけど↑が気になった 両方とも0でよくね?
- 267 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 21:44:58 ]
- >>264
Vista以降ならCoreAudioで扱えばいい。 他にもDirectSoundでバッファ読みまくりとか。 ソースは見るまでもないが、きっとやり方間違っているよ。 あらゆる方法を試した事のある俺が言うんだから間違いない。
- 268 名前:264 mailto:sage [2009/03/08(日) 21:50:58 ]
- >>265
ありがとうございます. ですが,低レベルAPIで書きたいです. >>266 ループ再生は不要なので,確かに両方とも0ですね. >>267 XPで書いています.DirectXにも挑戦しようか悩みましたが, 低レベルAPIで片付けてみたいのです. お暇な時にでもソースを見ていただけたら.
- 269 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 21:55:49 ]
- APIレベルではどうしようとも遅延が200〜500msあるんだが、それを理解した上でやっているのか?
- 270 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 21:56:58 ]
- >>264
ここよりサウンドプログラムスレの方が良いアドバイスもらえるんじゃないか
- 271 名前:264 mailto:sage [2009/03/08(日) 22:07:46 ]
- >>269
数値がどの程度かは知りませんでしたが それくらいの遅延は覚悟しておりました. しかし現状ではアルゴリズムの問題で遅延が生じてしまっているため それを解消したいのです. >>270 スレ検索が足りなかったようです. サウンドプログラミングのスレを見つけましたので, そちらでお聞きする事にします. 皆さん,ありがとうございました.
- 272 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 04:20:37 ]
- >>231
互換性を切り捨てられるなら君の言うとおりだ。>後の方が洗練
- 273 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 05:32:19 ]
- 互換性が切り捨てられるなら新しいOSが出る毎にコードを書き直さないといけないだろ
そんなのが洗練されてるとか、馬鹿?
- 274 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 07:24:18 ]
- ↑話を分かっていないバカ
- 275 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 07:27:49 ]
- >>274 お前がな
- 276 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 07:34:07 ]
- >>274
荒らすなよ。
- 277 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 09:56:49 ]
- ここは荒らしていいスレじゃなかったっけ
- 278 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 10:33:57 ]
- 落書きだらけの壁に「落書き禁止」の紙が貼ってあるようなもんだ。
- 279 名前:デフォルトの名無しさん [2009/03/09(月) 12:42:44 ]
- 荒らしていいスレ(笑)
- 280 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 18:31:20 ]
- >>278
「落書き禁止」なんて貼ってないよ 「自由の板です、どうぞ」の紙が貼られている板
- 281 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 21:40:56 ]
- 以下のコードでnewでメモリ確保すると大丈夫なのにスタックにメモリ確保するとエラーになります。
どこがまずいのでしょうか?なんとなくスタックの概念を根本的に間違っているような気がします。 //----大丈夫---------------------------- #include<windows.h> #include<gdiplus.h> #pragma comment(lib,"Gdiplus.lib") #include<cstdio> void main() { Gdiplus::GdiplusStartupInput gdiplusStartupInput1; ULONG_PTR gdiToken; Gdiplus::GdiplusStartup(&gdiToken,&gdiplusStartupInput1,NULL); Gdiplus::Bitmap*pBitmap1=new Gdiplus::Bitmap(TEXT("C:\\WINDOWS\\winnt.bmp")); printf("%d\n",pBitmap1->GetWidth()); delete pBitmap1; Gdiplus::GdiplusShutdown(gdiToken); } //----エラー---------------------------- #include<windows.h> #include<gdiplus.h> #pragma comment(lib,"Gdiplus.lib") #include<cstdio> void main() { Gdiplus::GdiplusStartupInput gdiplusStartupInput1; ULONG_PTR gdiToken; Gdiplus::GdiplusStartup(&gdiToken,&gdiplusStartupInput1,NULL); Gdiplus::Bitmap bitmap1(TEXT("C:\\WINDOWS\\winnt.bmp")); printf("%d\n",bitmap1.GetWidth()); Gdiplus::GdiplusShutdown(gdiToken); }
- 282 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 21:45:43 ]
- >>281
使ってるクラスの内容は知らんが、 上だとビットマップ削除後Shutdown呼んでるが 下だとShutdown呼んだ後ビットマップ削除してる 辺りが原因なのでは?
- 283 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 21:46:53 ]
- スタックうんぬんというより、クラスのインスタンス生成の概念がわかってないんじゃない?
- 284 名前:281 mailto:sage [2009/03/09(月) 22:02:47 ]
- >>282
レスありがとうございます。 おっしゃるとおりでした。 main()を抜ける時にBitmapのデストラクタが実行されてすでに開放された領域を読もうとしていたようです。 >>282 レスありがとうございます。 クラスのインスタンス生成の概念がわかってないっぽいです。 自分のやり方だと確保する領域が固定だと Gdiplus::Bitmap bitmap1(TEXT("C:\\WINDOWS\\winnt.bmp")); という風にスタックに確保するのですが、 他の人は Gdiplus::Bitmap*pBitmap1=new Gdiplus::Bitmap(TEXT("C:\\WINDOWS\\winnt.bmp")); という風に確保する領域が固定でもnewで確保しているようです。 なぜそうするかは理解できません。
- 285 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 22:07:53 ]
- newを使いたくないなら無理やり↓みたいにスコープ作ればよいのでは。
{ Gdiplus::Bitmap bitmap1(TEXT("C:\\WINDOWS\\winnt.bmp")); printf("%d\n",bitmap1.GetWidth()); }
- 286 名前:281 mailto:sage [2009/03/09(月) 22:22:46 ]
- >>285
レスありがとうございます。 デストラクタのタイミングを制御する必要がある時意外でも、 たとえば、デストラクタのタイミングを制御する必要がなく、いっけんnewを使う必要が無いような時も 自分のやり方だと Gdiplus::Graphics graphics1(hdc1); という風にスタックに確保する場面で 他の人は Gdiplus::Graphics*pGraphics1=new Gdiplus::Graphics(hdc1); という風にnewで確保しているようです。 この理由がわかりません。
- 287 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 22:53:01 ]
- >>286
クラスのインスタンスでも、基本的には変数と同じ使用方法でいいと思うけどね。 #関数内でのみの使用、永続的な使用等で切り分け わざとnewで確保するのは、明示的にdeleteを呼ぶことでそこでデストラクタが 実行されることを示したいからじゃない? ま、別にこだわる必要はなし。 下手にnewばかりしてメモリリークさせるなら>>281の方が合理的なのは確か。
- 288 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 22:59:10 ]
- コンストラクタでGdiplusStartup呼んで、デストラクタでGdiplusShutdown呼ぶクラス一個つくって
mainの頭に置こうぜ
- 289 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 23:02:40 ]
- >>286
サイズがデカいクラスをスタックにとりたくない場合はnewする場合はある。 Gdiplusがそこまでデカいかは知らんが。
- 290 名前:デフォルトの名無しさん [2009/03/09(月) 23:04:02 ]
- > Gdiplusがそこまでデカいかは知らんが。
実装依存
- 291 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 23:09:29 ]
- Gdiplusの実装とか
- 292 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 23:14:07 ]
- >>281のエラーの出るコードをコンパイル実行するとメモリリーク発生だな
何でだろ?
- 293 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 23:15:15 ]
- >>289
言われてみれば、他作クラスはサイズが分からんから 念のためにヒープの方がいいかもな
|

|