08/02/08 21:52:27
過度の四角くくない四角形はかけますか?
201:デフォルトの名無しさん
08/02/08 21:53:29
それは四角形ですか?
202:デフォルトの名無しさん
08/02/08 22:00:40
RoundRect
203:デフォルトの名無しさん
08/02/08 22:25:14
MSDNの見方がよく分からんのです
ネタじゃなくてマジで
204:デフォルトの名無しさん
08/02/08 22:26:54
最近のやつは Win32API が探しにくくなってる感はある。
205:デフォルトの名無しさん
08/02/08 22:29:06
>>195
あさっての矩形を指定して書いた場合に描画されるであろう領域が帰ってくるよ。
よく使うのは横幅を非常に大きくして、折り返ししない場合の幅を調べたり、
逆に高さだけ大きくして特定の幅で折り返し表示した場合の高さを調べたり、等。
206:デフォルトの名無しさん
08/02/08 22:31:26
>>204
さっさと.NETに移行させたいのだろ
ま、探しにくいのは前からだと思うが
Google検索でsite:microsoft.comした方が探し易いってどうよ?
207:デフォルトの名無しさん
08/02/08 22:43:27
MSDN内で検索するよりgoogleで検索した方が早いのは定説
しかしリンクが死んでる事も多い罠
208:デフォルトの名無しさん
08/02/08 22:44:35
>>206
ありがとう。探し方何となく分かった
209:デフォルトの名無しさん
08/02/08 22:48:30
前はずっとGoogleでsite:microsoft.comを使って検索してたけど、最近は
URLリンク(search.msdn.microsoft.com)検索文字列
という風にしてる。
210:デフォルトの名無しさん
08/02/08 22:53:36
MSDN2にWin32APIリファレンスの日本語バージョンないよね?
211:デフォルトの名無しさん
08/02/08 22:55:30
MSDN無印のほうも日本語訳はWin32apiところどころ欠けてるよ
212:デフォルトの名無しさん
08/02/08 22:58:17
確かJOYSTICK関連は英語だったな
まぁ簡単な英語だからいいけど
DirectXつかえやコラ
って事なんだろうな
213:デフォルトの名無しさん
08/02/08 23:02:08
>>206
Vistaが.netベースになったら喜んで移行してやったんだがな
214:デフォルトの名無しさん
08/02/08 23:23:13
>>165
DDKにFakeIMEというサンプルがある
215:デフォルトの名無しさん
08/02/08 23:44:49
MSDN 内を Google で検索するのが手っ取り早いよな。
216:デフォルトの名無しさん
08/02/08 23:45:30
Win32API を調べるなら
VC6 についてた MSDN が一番 。
217:デフォルトの名無しさん
08/02/09 00:00:40
あれ載ってないAPIあるし、嘘訳書いてあることもあるし、
使い勝手のあるAPIは訳されてないし。なんつーか、PlatformSDKの
英語ドキュメントよんでたほうがマシ。
218:デフォルトの名無しさん
08/02/09 00:00:51
IMEの辞書ってプログラムで使う方法ありますか?
日本語文章を解析して何かしたいので、その辞書として使いたいのですが……
219:デフォルトの名無しさん
08/02/09 00:05:22
>>218
このスレで"IME"でレス抽出すると挙がってくる質問は全て君かね?
そろそろIMEスレでも立ててしてくれ
220:デフォルトの名無しさん
08/02/09 00:08:44
おい、許可がでちまったぞw
立てちまえよマジで
俺も知りたいし
221:デフォルトの名無しさん
08/02/09 00:11:11
>>219
レス検索してみた。
ちょっといくつか気になるワードでググってきます ノシ
222:デフォルトの名無しさん
08/02/09 00:11:43
昔変換候補出すときにフックして常に変換結果を「ちんこ」にした事はある
IMEはバージョンに依存する動作が多くて面倒だった記憶が
223:デフォルトの名無しさん
08/02/09 01:06:45
ちんことか
224:デフォルトの名無しさん
08/02/09 01:42:49
ちんこウイルスか
225:デフォルトの名無しさん
08/02/09 04:33:22
URLDownloadToFileでダウンロードできるサイトと出来ないサイトがあるんだけど
何が原因だと思いますか?
別のPCで実行すると全てダウンロードできるんですがメインのPCで試してみると
出来るサイトと出来ないサイトが出てきてしまいます
色々試してみたけど規則性がまったく分からない
コントロールパネルからインターネットオプションでプロキシを全てはずしても
同じ結果になってしまいます。他にもしかしたらこれが原因かもとかいうのありませんか?
226:デフォルトの名無しさん
08/02/09 04:39:04
hostsファイル?
227:デフォルトの名無しさん
08/02/09 05:36:48
教えてください。
VC2008EEの環境でCreateWindowExが実行されないみたいです。
ビルドのエラーは出ていない、定義へ移動でwinuser.hに飛ぶ、
#pragma comment(lib,"user32.lib")をソースの頭に書いている状態です。
Debugでブレークポイント置いても実行可能コードは無いって言われます。
成功するRegisterClassExの後ろに置いてみても状況は変わりません。
まぬけなミスしてるんだと思うんだけど、どの様に直せば良いですか?
228:デフォルトの名無しさん
08/02/09 06:08:24
ソース晒せ
229:デフォルトの名無しさん
08/02/09 06:22:35
>>227
#pragma comment(lib,"user32.lib")を頭に書いてCreateWindowExで作ってみたけど
普通に動くよ。2008のProだけど
>実行可能コードは無い
プロジェクト作り直してみたら直ることがある
230:デフォルトの名無しさん
08/02/09 08:13:13
横丁はパリのシャンゼリゼ~
富士の白雪ぁフェニックス~
だけど僕らのキョーちゃんは~
豚足大好き、ブヒっ好き~
キョーモト キョーモト
きょうふのキョーーーーーーー(長いわ!)ーーーっちゃん
231:デフォルトの名無しさん
08/02/09 08:44:21
おれその頃のダウンタウン嫌いだったわ
意味不明な着ぐるみ系コントばっかりで
232:デフォルトの名無しさん
08/02/09 09:23:26
(もうええわ)
じゃないか
233:デフォルトの名無しさん
08/02/09 10:43:11
*.rcファイルはソースファイルなんでしょうか
それともリソースファイルなんでしょうか
どちらに追加してもうまくいくようで気に入らないんですが
234:デフォルトの名無しさん
08/02/09 11:23:53
VC++の話?
ビルドするときにはファイル毎にどういうことを行うかという設定を見ており、
(その設定はファイルを追加したときに拡張子から標準の設定がなされる)
ソリューションエクスプローラでどこのフォルダに入っているかということはビルドに一切関係ない。
235:デフォルトの名無しさん
08/02/09 12:21:37
POINT pos = { 0, 0 };
draw( "hello world", pos );
と書くところを一旦posを定義しないで直接POINT型変数をdrawに与えるにはどうしたらいいですか
draw( "hello world", { 0, 0 } ); 的な…
236:デフォルトの名無しさん
08/02/09 12:55:57
C++ならコンストラクタに引数付けて渡すとか。
draw( "hello world", myCPOINT(0, 0));
Cならdrawの関数宣言を変えてしまうとか。
typedef void (*tdraw)(const char *, int x, int y);
tdraw pdraw = (tdraw)draw;
pdraw( "hello world", 0, 0);
スタックの積まれ方に注意。(xとy逆だったかも)
237:デフォルトの名無しさん
08/02/09 12:57:33
直接
((tdraw)draw)("hello world", 0, 0);
でもいい。
238:デフォルトの名無しさん
08/02/09 13:00:24
そんな事するくらいなら最初のやり方の方がずっといい
239:デフォルトの名無しさん
08/02/09 13:05:17
うるせーボケ
どうしたらいいですか、ときたから答えたまで
後出しジャンケン野朗が
240:デフォルトの名無しさん
08/02/09 13:21:34
draw( "hello world", (POINT){ 0, 0 } );
241:デフォルトの名無しさん
08/02/09 13:23:51
すまん >>240 はコンパイラ依存だ
242:デフォルトの名無しさん
08/02/09 13:30:28
あきらかにhackぽい方法を教えるなよ
243:デフォルトの名無しさん
08/02/09 13:55:55
POINT f(int x, int y){POINT pt = {x,y}; return pt;}
draw("hello world",f(0,0));
244:227
08/02/09 13:59:44
ミスってる場所を外しているかもしれないので思い切って丸ごと上げました。
DLパスは名前の値です。
URLリンク(www.dotup.org)
>>229
テストありがとう。基礎が出来てないだろう俺にはもう判りません…orz
245:デフォルトの名無しさん
08/02/09 14:25:53
>>244
CApplicationBase::GlobalWindowProc
が大変なことになってるぞw
CreateWindowExが失敗するのは、常にreturn S_OK;で処理しているため。
S_OK(=0)はCOMの正常終了値で使われる定義だが、
Window Procedureでは、正常終了値は大抵TRUE(=1)。
(※戻り値はメッセージにより異なる)
Window Procedureの仕様は、下記参照。
URLリンク(msdn2.microsoft.com)(VS.85).aspx
246:デフォルトの名無しさん
08/02/09 14:29:21
CWindowBase::LocalWindowProcでCDXWndBase::LocalWindowProcの戻り値をreturnしてない
247:デフォルトの名無しさん
08/02/09 14:38:27
質問です。
現在実行中のプロセスが、管理者権限を持っているかを調べるAPIを教えてください。
UACが有効になっているVistaで、Administratorsに入っているユーザーが、
「管理者として実行」をしているかを調べたい、というのが動機です。
248:227
08/02/09 14:49:57
>>245,246
さんきゅう。その辺良く判ってないので、勉強してくる。
249:デフォルトの名無しさん
08/02/09 15:18:44
>>247
IsUserAnAdminはそういう用途には使えないのかなぁ
250:デフォルトの名無しさん
08/02/09 17:09:55
Windowsx.hの便利さは異常
251:デフォルトの名無しさん
08/02/09 17:52:16
SIF_DISABLENOSCROLLの説明の使用不可にするってのはつまみとかを触れなくするだけ?
キースクロールでメッセージ投げる分には普通にスクロールするんだが
252:デフォルトの名無しさん
08/02/09 18:28:56
天才現る
253:デフォルトの名無しさん
08/02/09 21:30:53
JPEGファイルの表示をするにはどうしたらいいですか
254:デフォルトの名無しさん
08/02/09 21:32:25
ブラウザで開く
255:デフォルトの名無しさん
08/02/09 21:33:07
WIN32APIの関数を使ってJPEGファイルの表示をするにはどうしたらいいですか
256:デフォルトの名無しさん
08/02/09 21:37:53
>>255
ShellExecute
257:デフォルトの名無しさん
08/02/09 21:41:35
BitBlt関数を使ってJPEGファイルの表示をするにはどうしたらいいですか
258:デフォルトの名無しさん
08/02/09 21:46:46
BitBlt(表示するDC, ... , ブラウザのDC, ...)
259:デフォルトの名無しさん
08/02/09 21:56:39
外部プログラムを使わない方向でJPEGファイルを読み込んでBitBlt関数で表示するにはどうしたらいいですか
260:デフォルトの名無しさん
08/02/09 22:00:10
BitBlt(表示するDC, ... , 外部アプリのじゃないDC, ...)
261:デフォルトの名無しさん
08/02/09 22:06:36
その外部アプリのじゃないJPEGデータが展開されたDCはどうやって作成すればいいのですか
262:デフォルトの名無しさん
08/02/09 22:11:04
漫才わろすw
263:デフォルトの名無しさん
08/02/09 22:17:41
GDI+とかOleLoadPictureとか
264:デフォルトの名無しさん
08/02/09 22:18:39
JPEGの仕様書を眺めてデコーダを作るといいよ
265:デフォルトの名無しさん
08/02/09 22:38:46
離散コサイン変換
266:デフォルトの名無しさん
08/02/09 22:41:16
ハフマン符号
267:デフォルトの名無しさん
08/02/09 22:47:19
libjpegのソースに付随しているexample.cに
GLOBAL(int) read_JPEG_file (char * filename)
あるからそこからスタートしてみたら?
デコーダーの気にくわない部分があれば、
すっ飛ばしてstaticにリンクすればよい。
268:デフォルトの名無しさん
08/02/09 22:49:02
Win32APIスレだっつーの。
269:デフォルトの名無しさん
08/02/09 23:05:53
じゃあ BI_JPEG?
270:デフォルトの名無しさん
08/02/09 23:17:39
Win32APIスレだからGDI+を使った回答はは禁止
271:デフォルトの名無しさん
08/02/09 23:30:39
デスクトップユーティリティを作っているのですが、
フォーカスのあるプログラムに対してIMEによる入力が行われているときとそうでないときで動作を変えたいのですが、
他のプロセスのIME状態を取得するにはどんな方法がありますか?
#IME入力中にマウスクリックで別のウィンドウをアクティブにしてから戻しても
#漢字変換を続行できるのを見ると結構ややこしそうです。
272:デフォルトの名無しさん
08/02/09 23:59:12
はは禁止
273:デフォルトの名無しさん
08/02/10 00:12:15
はは禁止禁止
274:デフォルトの名無しさん
08/02/10 00:35:01
>>270
GDI+も広義のWin32のうちだろ。
もちろんネイティブC++ APIの方。
275:デフォルトの名無しさん
08/02/10 00:48:03
>>274
はあ?
276:デフォルトの名無しさん
08/02/10 01:00:44
Win32APIの定義を教えてください
277:デフォルトの名無しさん
08/02/10 01:01:27
自治厨答えろよ。
278:デフォルトの名無しさん
08/02/10 01:47:40
Win32 Application Programing Interface
279:デフォルトの名無しさん
08/02/10 01:57:59
URLリンク(ja.wikipedia.org)
>Windows XPで、GDIはその後継であるC++ベースのサブシステムGDI+によって株を奪われた。
後継っつーならWin32APIスレの範疇にはいるんじゃないかと思う
APIはApplicationProgramingInterfaceの略で文字通りの意味しかない
32ビットのWindows用だからWin32API
他にもPOSIXで策定してるPOSIXAPIとかいろいろある
280:デフォルトの名無しさん
08/02/10 02:01:26
そんなことは訊いていない
281:デフォルトの名無しさん
08/02/10 02:10:41
MS提供のAPIって事で良いよ。定義問題になると荒れるから。
282:デフォルトの名無しさん
08/02/10 02:50:20
>>281
つまり.NETもWin32APIって訳か
283:デフォルトの名無しさん
08/02/10 03:21:21
.NETは環境をWIN32に限定しないので残念ハズレ。
284:デフォルトの名無しさん
08/02/10 03:22:41
DirectXは?
285:デフォルトの名無しさん
08/02/10 03:56:28
DirectShowはSDKに統合されたからAPIの一部って事でいいんでね?
専用スレがあるのにここで聞いても誘導されるだけだと思うが
286:デフォルトの名無しさん
08/02/10 07:19:44
>>261
Susieプラグイン
287:デフォルトの名無しさん
08/02/10 07:43:54
NTでのWindowsサブシステムの標準APIと同等のAPI
288:デフォルトの名無しさん
08/02/10 09:03:12
COM周りでのも提供されてる微妙だな
289:デフォルトの名無しさん
08/02/10 10:05:08
Winsock, WinInet, WinHTTP, Theme, DWM, TSF, MSXML
290:デフォルトの名無しさん
08/02/10 10:44:43
>>288
日本語でおk
291:デフォルトの名無しさん
08/02/10 11:03:59
数値を文字列に変換するAPIって何?
292:デフォルトの名無しさん
08/02/10 11:05:58
Shell Lightweight APIにもなんかあった気がするけど、wsprintf。
293:デフォルトの名無しさん
08/02/10 11:13:12
>>292
ありがとう。
頭文字が小文字なのでCランタイムの関数だと思ったら、user32.dllのAPIなのね。
294:デフォルトの名無しさん
08/02/10 11:41:09
>>282
ネイティブC/C++から満足に使えないからWin32 APIには入らないと俺は思う。
この立場からは.NETのUnmanaged Hosting APIはWin32。
でもこのスレにそんなこと質問してきたら、
それに関してはここよりわかる人がいそうな.NETのスレへ誘導するだろうけどね。
295:デフォルトの名無しさん
08/02/10 11:44:39
shlwapiはwnsprintfの方だな
296:デフォルトの名無しさん
08/02/10 16:43:12
MS提供のAPIなんて書いたら.NETどころかMFCやATLなんかもこのスレで扱う事になるだろ
297:デフォルトの名無しさん
08/02/10 16:44:28
このスレは技術レベル高い人が多いから、多少駆け込み寺みたいな
役割を求められても仕方がないのかも。
色んな質問が来るのは勲章だと思えばいいんじゃないかな。
広めに受け入れて、誘導できるものは誘導すればいい。
298:デフォルトの名無しさん
08/02/10 16:53:24
LoadImageで、パレットの違う2つの256色ビットマップから
DDBを作り、少しずつ色を変えながら色を出力すると、
表示されない色が出て、その色は2つのビットマップで違うのですが、
DDBにもパレットみたいなのがあるのでしょうか。
299:デフォルトの名無しさん
08/02/10 17:12:53
少しずつ色を変えながら出力とは、
LoadImageでできたDDBを出力先にし、
FillRectで小さい四角を、
色、位置を少しずつ変えながら出力する感じです。
出力先は普通はCreateBitmap等で作ったDDBに
すると思うんですが、実験という事でそれに出力しています。
300:デフォルトの名無しさん
08/02/10 18:32:01
ひとつのプロセスが開いているハンドル
(CloseHandleで閉じるハンドル・特にファイルハンドル)
を列挙する方法はありませんか?
GetProcessHandleCountっていうのを見つけたのですが、これだと数しかわかりません。
301:デフォルトの名無しさん
08/02/10 18:34:50
高いのは技術レベルってより、知識量レベルだろ。その知識を生かして
どうプログラムに落とすかがプログラマの真価が問われる。このスレじゃ、それはわからん。
302:デフォルトの名無しさん
08/02/10 18:44:10
突然マの真価とか語られても・・・それこそマ板でやれ
303:デフォルトの名無しさん
08/02/10 19:12:22
297に同意
>DDBにもパレットみたいなのがあるのでしょうか。
あるよ。
SelectPaletteやCreatePaletteなどのAPIはDDBでも使用可能
304:デフォルトの名無しさん
08/02/10 20:02:29
xpでVS2008express editionでスクリーンセーバー作ろうとしたら
コンパイルできるのに起動時にエラーがでるのだが。
ちなみにsystem32以下のuser32.dllのタイムスタンプは2004年8月4日になってる。
わかる?
エラーメッセージ
「エントリポイントが見つかりません
プロシージャエントリポイントChangeWindowMessageFilterがダイナミックリンクライブラリUSER32.dllから見つかりませんでした」
ソース
#include <windows.h>
#include <scrnsave.h>
#pragma comment(lib, "scrnsavw.lib")
#pragma comment(lib, "comctl32.lib")
LRESULT WINAPI ScreenSaverProcW(HWND hWnd, UINT msg,WPARAM wParam, LPARAM lParam)
{
return DefScreenSaverProc(hWnd, msg, wParam, lParam);
}
BOOL WINAPI ScreenSaverConfigureDialog(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
return TRUE;
}
BOOL WINAPI RegisterDialogClasses(HANDLE hInst)
{
return TRUE;
}
305:デフォルトの名無しさん
08/02/10 20:09:33
ChangeWindowMessageFilterはVistaにしかない
306:デフォルトの名無しさん
08/02/10 20:12:56
あれ?どこかのスレでも同じ質問みたな
307:デフォルトの名無しさん
08/02/10 20:13:57
付属ライブラリがVista専用かよ
308:デフォルトの名無しさん
08/02/10 20:19:33
targetver.h 書き換えろよ。デフォルトがVistaになってるぜ。
309:デフォルトの名無しさん
08/02/10 20:26:04
>>306
VS2008スレで見たね
310:304
08/02/10 21:07:55
なんだ、2008はほとんどvista用か
2005入れ直すかな
他のスレに同じことやってる奴がいてわらた
みんなthx
311:デフォルトの名無しさん
08/02/10 21:10:53
そして無視される308お陀仏……。
312:デフォルトの名無しさん
08/02/10 21:32:12
他のスレでも同じように2005を入れなおそうという奴がいるのか
それはちょっと面白いな
313:デフォルトの名無しさん
08/02/11 01:19:48
VS2008でセィバーだが、こっちにも俺と同じヤツがいたwww
これ、MSのどっかにねじ込んでおけばいいんだよな?
314:デフォルトの名無しさん
08/02/11 02:03:00
タスクメニューのアイコンを右クリックすると、メニューが出るプログラムを作成しています。
一応完成したのですが、アイコンをクリックした時に
2回目のクリックからタスクバーのプロパティーまで表示されてしまいます。
マウスのイベントがタスクバーまで伝播しているようなのですが、
この回避方法はどうやればいいのでしょうか?
誰かご教授ください。
315:デフォルトの名無しさん
08/02/11 02:11:15
貴様の間違ったコードを正しくすればいい。
正しく書いていればそのような挙動はしない。
316:デフォルトの名無しさん
08/02/11 03:03:52
こんばんは
早急に教えてください。
malloc() はどのDLLのエクスポート関数でしょうか?
317:デフォルトの名無しさん
08/02/11 03:07:02
msvcrt20.dllだな
318:316
08/02/11 03:11:10
>>317
ありがとう
319:デフォルトの名無しさん
08/02/11 03:17:57
ざくざくでてくるね。
crtdll.dll
msvcrt.dll
msvcrt40.dll
mscvr70.dll
mscvr71.dll
mscvr80.dll
mscvr90.dll
mscvr71d.dll
mscvr80d.dll
mscvr90d.dll
cc3250mt.dll (Borland)
cygwin1.dll
320:デフォルトの名無しさん
08/02/11 03:26:49
ほとんどバージョンかデバッグ版かどうかの違いだな。
321:デフォルトの名無しさん
08/02/11 03:34:24
タブコントロールの行が複数行になるかどうかを調べる方法ってないですか?
誰か教えてください
322:デフォルトの名無しさん
08/02/11 05:03:20
>>314
もしかして通知トレイのことか?
メニュー出す直前にSetForegroundWindow()を呼ぶ
あとNULLでSendMessage()
323:デフォルトの名無しさん
08/02/11 05:11:46
っと、Postだった
324:デフォルトの名無しさん
08/02/11 05:59:42
画像ビューアを作ってて、ファイルの並び順をエクスプローラと同期させたいのですが
アイコンの整列の「名前」「サイズ」「種類」「更新日時」の状態を取得することって出来ないでしょうか?
325:デフォルトの名無しさん
08/02/11 06:45:49
エクスプローラを2つ表示させてソート順変更しても、
それぞれ同期してないけど、その場合どうするつもり?
後で指定されたソート方法を優先?
そもそもこれってAPIの質問?
326:デフォルトの名無しさん
08/02/11 08:36:47
>>303
ありがとうございます。
327:デフォルトの名無しさん
08/02/11 09:06:30
>>324
IShellFolder2::GetDefaultColumn()でどう?
URLリンク(msdn2.microsoft.com)(VS.85).aspx
URLリンク(msdn2.microsoft.com)(VS.85).aspx
2000or98ME以降になっているが
95,98のIShellFolderやIShellDetailsにはそれらしきメンバは無いな。
エクスプローラを最後に閉じたときの状態が取得できるようなので
厳密に同期を取る325のいうようなケースは厄介そう。
> アイコンの整列の「名前」「サイズ」「種類」「更新日時」の状態を
> 取得することって出来ないでしょうか?
シェルを拡張してColumnが追加されているケースもありうるよ
328:デフォルトの名無しさん
08/02/11 09:26:54
>>321
スタイルにTCS_MULTILINEがついているかどうかで
329:314
08/02/11 13:36:41
>>322
レスサンクス!ActiveとNull送信はやってます。
原因はWM_ACTIVEをラップしてなかったからです。
商用アプリでも同じ現象が発生してて、ちょっとびっくりしてました。
どうもです。
330:321
08/02/11 16:16:49
>>328
すいませんちょっと情報不足でした
スタイルにTCS_MULTILINEを設定しても、タブが少なかったら1行で表示されますよね?
TCS_MULTILINEを設定して、タブを追加して、その結果として複数行で表示されるか否かを知る方法はないのでしょうか?
ということが聞きたかったのですが
331:デフォルトの名無しさん
08/02/11 16:19:20
難しい
GetClientRectとTCM_ADJUSTRECTを使えば
タブのつまみ部分に使われてる高さは分かる
332:321
08/02/11 16:51:59
>>331
レスありがとうございます
結果的に取得したかったのはタブのつまみの高さなので、それで十分です
333:デフォルトの名無しさん
08/02/11 20:41:11
>>330
ごめん。そこまで気が回らなかった。
解決したみたいだけど、
事前に知ることはできなそうだが、追加後でよければ
TCM_GETROWCOUNTで行数を取得できるよ。
334:デフォルトの名無しさん
08/02/12 00:17:40
SelectObject( hdc, CreateSolidBrush(RGB( 0, 0, 0) );
とした場合はDeleteObject()しなくていいですか
335:デフォルトの名無しさん
08/02/12 00:42:06
>>334
だめです。
new = CreateSolidBrush(...);
old = SelectObject(..., new);
個々で何らかの処理。
SelectObject(..., old);
DeleteObject(new);
とするべき。
336:デフォルトの名無しさん
08/02/12 00:47:10
こう書けなくもないはずだが、あまり見ない書き方だから、やめたほうがいい。
old = SelectObject(..., CreateSolidBrush(...));
DeleteObject(SelectObject(..., old));
337:デフォルトの名無しさん
08/02/12 01:00:10
けどそれなら、変数用意しなくて良いな。
別の方向に混乱しそうだけど。
どういう処理なのか一瞬わからんかったw
338:デフォルトの名無しさん
08/02/12 01:15:58
CreateSolidBrushの戻り値を見てないってのが気にはなるなあ。
滅多に失敗しないのは確かだけど。
339:デフォルトの名無しさん
08/02/12 01:46:29
もう面倒くさいしディリートしなくてもいいじゃん
ディリートしないせいで問題が起きたことないし
340:デフォルトの名無しさん
08/02/12 01:52:44
9xを使ったことがないから言えるセリフだな、それ。
いや、確かめたわけではないけれど。
341:デフォルトの名無しさん
08/02/12 01:52:50
ここで
「いちいちディリートしなくても勝手にGCしろよ」
とドトネト厨登場↓
342:デフォルトの名無しさん
08/02/12 01:56:18
RAIIクラスを作って
デストラクタででぃりーとしろよ
343:デフォルトの名無しさん
08/02/12 01:59:50
Sleipnirが盛大にGDIリソースリークしてて、
連続稼動させてると他のアプリケーションまで表示がぐちゃぐちゃになったことがあったな。
344:デフォルトの名無しさん
08/02/12 02:23:45
こうですか、わかりません!
class GDIBinder : noncopyable{
HDC mhdc;
HGDIOBJ old;
public:
GDIBinder (HDC dc, HGDIOBJ obj)
: mhdc(dc)
{
old = SelectObject( mhdc, obj );
}
~GDIBinder(){
SelectObject(mhdc, old );
}
operator HDC (){return mhdc;}
};
345:デフォルトの名無しさん
08/02/12 04:40:47
重い処理をさせたらウィンドウを動かしたりできなくなるんですが、どうすれば
WinRARみたいに重い処理をさせてもウインドウ動かしたり出来るようになりますか?
346:デフォルトの名無しさん
08/02/12 04:43:48
スレッドわけろ。
347:デフォルトの名無しさん
08/02/12 04:44:17
MultiThreadですよ。
348:デフォルトの名無しさん
08/02/12 04:48:56
ありがとうございます。やっぱりああいうのはマルチスレッド使ってるのか
勉強してみます
349:デフォルトの名無しさん
08/02/12 08:56:05
>>344 RestoreDCを忘れるなよ
350:デフォルトの名無しさん
08/02/12 12:47:18
>>225
クッキー
351:デフォルトの名無しさん
08/02/12 13:31:04
何回もSelectObjectをかけながら処理してく場合、いちいち戻さないで
最初にSaveDC/最後にRestoreDCで一気に戻した方が楽な場合もある
352:デフォルトの名無しさん
08/02/12 13:56:30
Server2008対応の新SDK正式版出てたのね
353:デフォルトの名無しさん
08/02/12 16:50:18
>>352
urlぐらい書けよ
354:デフォルトの名無しさん
08/02/12 17:05:54
URLリンク(www.microsoft.com)
355:デフォルトの名無しさん
08/02/12 17:38:29
PlatformSDKの新版はもう出ないのかな・・・
356:デフォルトの名無しさん
08/02/12 18:32:21
まさにこれだろ。
WindowsSDKに名前が変わって、.NETも含まれるようにはなったけど。
357:デフォルトの名無しさん
08/02/12 18:39:13
>>356
.NET使わないんでPlatformSDKの頃みたいにWin32関連だけインスコできればなと
色々統合されてたりして無理なのかな
358:デフォルトの名無しさん
08/02/12 18:45:04
Windows SDK = Platform SDK + .NET Framework SDK
359:デフォルトの名無しさん
08/02/12 19:10:04
.NET FrameworkをインスコしないでPlatformSDKだけ入れさせろって意味
360:デフォルトの名無しさん
08/02/12 19:11:13
やってみれ
361:デフォルトの名無しさん
08/02/12 20:09:28
ボタンコントロールで質問です。
BM_SETSTATEで押し込んだ状態にできますが、
クリックしたり、クリックしたままボタンの上から移動すると
出っ張った状態に戻ってしまうんですが、
トグルボタンのようなものを作るにはどうしたらよいですか。
MFCなら同じメッセージを送ればそのまんま動くみたいですが
MFCなしでお願いします
362:デフォルトの名無しさん
08/02/12 20:34:05
リストビューコントロールについて質問します。
リポートビュースタイルを適用しています。
リストビューに項目を設定するには、
LVITEM lv;
lv.iItem = 0;
ListView_InsertItem(hListView, &lv);
ListView_SetItemText(hListView, 0, 1, TEXT("項目1-1"));
という形で大丈夫なはずだと思うんですが、なぜかうまくいきません。
どこがおかしいのでしょうか
363:デフォルトの名無しさん
08/02/12 20:55:26
>>359
インストール時のコンポーネント指定でドトネト関連だけ外せばいいじゃん
ダウンロードするファイルのサイズ自体を減らしたいというならそれは無理な相談、だがwebインスコなら可?
364:デフォルトの名無しさん
08/02/12 21:06:07
Sleep(1);よりも短い時間のウェイトは作れない?
精度はまったくいらないんだけど。
365:デフォルトの名無しさん
08/02/12 21:11:35
じゃあ1でいいだろ
366:デフォルトの名無しさん
08/02/12 21:12:24
精度要らないならSleep(1)でいいじゃん。
367:デフォルトの名無しさん
08/02/12 21:13:09
ビジーループでおk
368:デフォルトの名無しさん
08/02/12 21:15:10
>>362
そのリストビューはカラムを2つ以上追加した状態なのか?(ListView_SetItemTextの第3引数は一番左のカラムなら0)
あとLVITEMは宣言時に { 0 } で初期化したほうがいい
まずはリファレンスか入門サイト見たほうがいいよ
369:デフォルトの名無しさん
08/02/12 21:21:34
>>364
どんなウェイト?
他のスレッドに一瞬制御渡したい目的なら「メッセージポンプ」で検索。
そうじゃなきゃvolatile int i; for(i=0;i<100;i++);とかで適当に回すとか。
370:デフォルトの名無しさん
08/02/12 21:30:25
I/Oポート触ったら約1μ秒だ、ってどっかに書いてあった
371:デフォルトの名無しさん
08/02/12 21:33:47
>>364
精度がいらなくて短いウェイト?
つSwitchToThread()
372:デフォルトの名無しさん
08/02/12 21:40:21
>>363
ランタイムは勝手にインスコされた気がするが。
373:デフォルトの名無しさん
08/02/12 22:18:03
>>368
ゼロで初期化したら、”できました!!”
カラムは4本です。だけど、不思議です。
ありがとうございました。!!!!
374:デフォルトの名無しさん
08/02/12 23:18:37
>>364
Sleep(0);
375:デフォルトの名無しさん
08/02/12 23:39:45
SetTimerのタイムアウト値って動的に変えるにはどうすればいいの?
UINT型でキャストした変数じゃむりですた
376:デフォルトの名無しさん
08/02/13 00:02:33
ウィンドウズのシステムの休止や終了に関する質問です。
システムの終了時を捉えるには、WM_ENDSESSION メッセージに対応すればいいと思うんですが、
ハイバネーションモードに入るのを捉えるにはどうしたらいいでしょうか
タイマーでプログラムが生きてるかどうか確認する方法しか思いつかないです。
(定期的に時間差をとることで、復帰後にシステムが休止状態にあった時間を調べるという泥臭い方法くらい)
377:デフォルトの名無しさん
08/02/13 00:03:33
>>375
普通に最初に指定したタイマーIDと同じIDを指定して、新しい時間を設定すればOKだと思いますが
378:デフォルトの名無しさん
08/02/13 00:33:28
>>361
オーナードローを使えと言いたいところだが…
379:デフォルトの名無しさん
08/02/13 00:50:41
>>361
BS_RADIOBUTTON,BS_CHECKBOX,BS_AUTORADIOBUTTON,BS_AUTOCHECKBOX
のいずれかとBS_PUSHLIKEを組み合わせればトグル動作するけど
どうだろう?
380:デフォルトの名無しさん
08/02/13 00:54:37
>>376
WM_POWERBROADCASTとか
381:デフォルトの名無しさん
08/02/13 01:46:07
人材管理は技術のないやつの逃げ道ですか
382:デフォルトの名無しさん
08/02/13 02:24:07
他人を使うことができる人間は、1日に24時間以上の時間を使うことができるのです
が、ム板にはこういうレスと人は不要です
383:デフォルトの名無しさん
08/02/13 05:52:26
これひょっとしたらAPI関係ないかもしれないんですけど、
スレッドの開始関数に情報を渡すときってどうすればいいんですか?グローバル変数?
384:デフォルトの名無しさん
08/02/13 07:21:02
>>383
void*の引数があるから、それで何とかしろ。
素人にはお勧めしない方法だが、下のような方法で組むことがあるな。
渡した内容をきちんと受け取るまで待っている所が重要。
static foo_data {
volatile int flag;
int data1;
}
DWORD ThreadProc (LPVOID lpParam) {
struct foo_data param = *(struct foo_data *)lpParam;
((struct foo_data *)lpParam)->flag = 1;
...
}
HANDLE ThreadStartProc(int data1) {
struct foo_data param = { 0, data1 };
HANDLE hThread;
if ( (hThread = CreateThread(NULL, 0, ThreadProc, ¶m, ...)) != NULL ) {
while ( !param.data1 ) Sleep(100);
}
return hThread;
}
385:デフォルトの名無しさん
08/02/13 08:44:44
SleepにINFINITE渡しても49.7日後に起きないよね?
386:デフォルトの名無しさん
08/02/13 09:17:35
アクティブウィンドウとフォアグラウンドウィンドウとフォーカスの違いについて教えてください。
387:デフォルトの名無しさん
08/02/13 09:47:16
フォーカスは別物。正しくはキーボードフォーカスって言えばなんだかわかるよな?
388:383
08/02/13 16:34:53
>>384
すみません自己解決しました
グローバル変数とクリティカルセクションを併用すればいいみたいです
void *の引数はWindowsで使用する的なことが書いてあったので避けていたのですが、その方法でも出来るんですね
蛇足だけど、1行目のstaticってのはきっとstructのことですよね
389:デフォルトの名無しさん
08/02/13 17:22:10
普通にnewなりmallocなりして渡せばいいのに
390:デフォルトの名無しさん
08/02/13 17:42:42
素人にはお勧めしないとか言ってるくせに>>384のコードが素人丸出しな件について
391:デフォルトの名無しさん
08/02/13 17:51:09
こっちの方が問題のような
-while ( !param.data1 ) Sleep(100);
+while ( !param.flag ) Sleep(100);
392:デフォルトの名無しさん
08/02/13 19:29:25
>>384>>388>>391
そういう待ち合わせにはイベントを使う。
クリティカルセクションとフラグじゃItaniumでうまく動かないし、
一回空振りしただけで無駄に 100msec も待ってしまう。
それからデータの受け渡しだけなら、new した構造体のポインタを渡して
スレッド側で不要になったら解放すれば、そもそも待ち合わせる必要もない。
393:デフォルトの名無しさん
08/02/13 19:40:22
>>379
まさにそれでした。まさか普通のボタンではないとは。
ありがとうございました。
394:384
08/02/13 22:04:32
確かに色々間違い杉だった。朝っぱらから書き込むもんじゃない。orz
メモリバリアは完全に忘れてた。Interlock系API使わなきゃダメだな。
でもクリティカルセクションが駄目な理由が良く判らん。何で?
まあ、Cで解放とか面倒なことをせずに済むように考えて書いたコードだから勘弁。
395:383
08/02/13 23:00:55
>>392
イベントですか・・・調べてみます
396:392
08/02/13 23:09:16
>>394
>でもクリティカルセクションが駄目な理由が良く判らん。何で?
漏れの眼か頭が悪くて、転記していながら見落としていたからw
397:386
08/02/13 23:43:26
>>387
どうもです。フォーカスはキー入力を受け付けるということで良いのですが、
フォアグラウンドとアクティブウィンドウはどう違うのでしょうか?
SetForegroundWindow() の説明では「アクティブウィンドウにしてフォーカスをセットする」
と記述されてますが、アクティブウィンドウとはタイトルバーの色が変わっているウィンドウのことでしょうか?
398:デフォルトの名無しさん
08/02/14 00:13:51
WinAPI勉強し始めてからCPUの凄さに驚かされっぱなしです
CUIの時は実感なかったけどこんな複雑な計算が一瞬で行われてるなんて…
人はなんて恐ろしいものを作ってしまったんだ
399:デフォルトの名無しさん
08/02/14 00:26:01
なんとなく宇宙ヤバイ思い出した
400:デフォルトの名無しさん
08/02/14 00:43:05
ヤバイ。CPUヤバイ。まじでヤバイよ、マジヤバイ。
CPUヤバイ。
まず速い。もう速いなんてもんじゃない。超速い。
速いとかっても
「リニアモータカーくらい?」
とか、もう、そういうレベルじゃない。
何しろギガ。スゲェ!なんか単位とか丸められてるの。何キロとか何万とかを超越してる。10億倍だし超速い。
しかもさらに速くなってるらしい。ヤバイよ、加速だよ。
だって普通は時間とか加速しないじゃん。だって寝てられる時間がだんだん短くなったら困るじゃん。5分しか寝られないとか困るっしょ。
朝日が出て、先月は沈むまで16時間だったのに、今日は2時間とか泣くっしょ。
だから時間とか加速しない。話のわかるヤツだ。
けどCPUはヤバイ。そんなの気にしない。加速しまくり。最も初期から考えると10億倍とかよくわかんないくらい速い。ヤバすぎ。
ギガって言ったけど、もしかしたらテラかもしんない。でもテラって事にすると
「じゃあ、テラの次ってナニよ?」
って事になるし、それは誰もわからない。ヤバイ。誰にも分からないなんて凄すぎる。
あと超熱い。約333ケルビン。摂氏で言うと60℃。ヤバイ。熱すぎ。生卵が温泉卵になっちゃう。怖い。
それに超高集積。超キツキツ。それに超高い。10億万円とか平気で出てくる。億万円て。小学生でも言わねぇよ、最近。
なんつってもCPUは計算力が凄い。WinAPIとか平気だし。
うちらなんてプログラムとかたかだかエクセルマクロで出てきただけで上手く扱えないから使わなかったり、
足し算くらいにしか使わなかったり、出来る人にやって貰ったりするのに、CPUは全然平気。WinAPIを機械語のまま扱ってる。凄い。ヤバイ。
とにかく貴様ら、CPUのヤバさをもっと知るべきだと思います。
そんなヤバイCPUを作ってるAMDとか超偉い。もっとがんばれ。超がんばれ。
401:デフォルトの名無しさん
08/02/14 00:45:03
わざわざ作ったのか
402:デフォルトの名無しさん
08/02/14 00:47:24
>>400
ワロタw
403:デフォルトの名無しさん
08/02/14 00:50:15
すまん、つい・・・
404:デフォルトの名無しさん
08/02/14 00:53:42
>>400
くると思ったw
405:デフォルトの名無しさん
08/02/14 02:50:46
>>400
和んだwww
406:デフォルトの名無しさん
08/02/14 18:17:51
私はノートパソコンを使っているのですが、少し前にうっかりしてコカコーラをこぼしてしまいました。
慌てて逆さにしたり、ドライヤーで乾かしたりしたのですが、キーの入力がおかしくなってしまいました。
今はUSBキーボードを繋いでパソコンを使っているのですが、けっこうな頻度で押してないキーが押されている状態になります。
USBのキーボードを外していても起きるので、ノートのキーボードのほうからキーの入力が起きていると思われます。
コントロールパネルからドライバのアンインストールをしてみたのですが、再起動すると勝手にインストールされてしまいます。
なので、自作のプログラムでノートのキーボードからだけの入力をシャットアウトしたいのですが、APIで解決できますか?
407:デフォルトの名無しさん
08/02/14 18:20:50
ジュースの成分が残ってて短絡してるだけだからノートPCを分解してキーボードを水洗いすれば直るよ。
408:デフォルトの名無しさん
08/02/14 18:44:09
分解ですか・・・。
機械音痴なので元に戻せるかどうかが心配です・・・。
いざとなったらやってみたいと思います。
409:デフォルトの名無しさん
08/02/14 19:26:01
電源ボタンとキーボードが一体化されてないのなら
キーボードをコネクタのとこから外しちゃえ。
ThinkPadにコーラ飲ませたときは電源入れるときだけ繋いでたなあ。
410:デフォルトの名無しさん
08/02/14 20:11:23
チソコパッド
411:デフォルトの名無しさん
08/02/14 22:35:19
>>392
> それからデータの受け渡しだけなら、new した構造体のポインタを渡して
> スレッド側で不要になったら解放すれば、そもそも待ち合わせる必要もない。
横からだけど、そんなの気づかなかった。ずっとイベントで待ってた。トン
412:デフォルトの名無しさん
08/02/15 00:30:34
不特定のプロセスに対して自身の再起動を要求するコードを書いているのですが、
新プロセス起動→自身死亡 だと対象になるプロセスが多重起動を禁止していた場合に上手く動きません
今のところ
新プロセスサスペンド起動→リモートスレッド作成(待機)→自身死亡→死亡をトリガにリモート待機解除→リジューム
ぐらいの方法しか思いつかないのですが、なにか良い方法ってないですか?
413:デフォルトの名無しさん
08/02/15 00:32:50
中継プロセス起動→自身死亡→新プロセス起動
414:デフォルトの名無しさん
08/02/15 00:51:29
> 不特定のプロセスに対して自身の再起動を要求するコード
これって可能なの?
メモ帳みたいに「保存しますか?」とか出るやつにはどう対応するの?
415:デフォルトの名無しさん
08/02/15 00:53:25
プロセスごと殺せばいいんじゃね
416:デフォルトの名無しさん
08/02/15 00:59:35
編集中のデータが保存されないだろw
417:デフォルトの名無しさん
08/02/15 01:03:18
>>416
想像力低下していませんか?
世の中のアプリ全てがエディタではないのですよ。
418:デフォルトの名無しさん
08/02/15 01:17:25
>406
素直に修理に出したほうがいいよ。糖分は予後不良の原因になるから。
419:デフォルトの名無しさん
08/02/15 01:44:08
>>417
お前頭悪いな
「不特定のプロセス」という事はプロセスを強制的に殺したらデータが飛ぶ物もあるだろう
420:デフォルトの名無しさん
08/02/15 01:48:37
>>419
寝ているんですか?
データが飛ばないものもあるってことに気付いてください。
421:デフォルトの名無しさん
08/02/15 01:49:33
煽り合い的なものは外でやってくれると助かります
422:デフォルトの名無しさん
08/02/15 02:09:04
419と420はなぜ対立しているのかわからない。
「プロセスを強制的に殺したら、データが飛ぶものもあれば飛ばないものもある」
423:デフォルトの名無しさん
08/02/15 02:12:29
「あるプロセスを強制的に再起動する」というのが要件で、
そのとき処理中のファイルは壊れる・消えるかも知れないけど
なんとかしる、ってのはたぶん要件に入ってないんだよ。
424:デフォルトの名無しさん
08/02/15 02:20:05
Windowsのコントロールパネルにあるタスクについての質問です
再起動時刻と実行ファイルを指定して、目覚ましのような機能を実装するにはどうしたらいいでしょう
このタスクというのはレジストリに記録するものなんでしょうか?
このあたりの取っ掛かりがドコにもなくて困ってます
425:デフォルトの名無しさん
08/02/15 02:27:29
>>424
よく知らんけどITaskSchedulerというのがあるぞ
426:デフォルトの名無しさん
08/02/15 02:31:21
NetScheduleJobAddでもええのんか?
427:デフォルトの名無しさん
08/02/15 04:35:35
>>425 >>426
おお トンクスです
ITaskSchedulerはc++じゃないとダメみたいですけど、やっぱcだけじゃ先細りかなぁ
ヘルプみながらやってみます。
こういう切っ掛けがもらえると、結構ありがたいです。
ありがとう
428:412
08/02/15 06:24:41
レスどうもです
413の方法がより良いですね(楽だし)
DLLのみで実装しているので、コンポーネントが増えるのがちょっとなぁ
という感じだったのですが、どこの馬の骨とも知らんプロセスにスレッド作るのも信頼性が無いですね
で安全な自殺の問題に関しては>>423の通りです
赤の他人のプロセスの正しい終了方法ってのは無いと思っているので
終了に関しては「いいから死ねよww」的実装にする予定です
429:デフォルトの名無しさん
08/02/15 07:33:05
>>427
インターフェースはCでもきちんとアクセスできるよ。
ヘッダににもC用のマクロが生成されているはず。
430:デフォルトの名無しさん
08/02/15 13:26:47
>>428
怖いソフトだな
431:デフォルトの名無しさん
08/02/15 14:45:53
複数のウィンドウで別々の図形を表示する。
プログラムを作成しています。
URLリンク(www.gazoru.com)
URLリンク(www.gazoru.com)
最初は、別々に表示されるのですが、重なった場合
下のを上(アクティブ)にすると、一枚目と同じになって
しまいます。
○原因
○対処方法
をお教え下さると有り難いです。
ソースは、一応付けます。
Pass=1
(win2000 vc6.0)
URLリンク(www11.axfc.net)
432:デフォルトの名無しさん
08/02/15 14:46:55
主要部分プログラム
case WM_PAINT:
//1
hdc= BeginPaint( hWnd, &ps );
Rectangle(hdc, 100, 100, 400,400);
ReleaseDC(hWnd, hdc);
EndPaint( hWnd, &ps );
//2
RECT rect;
GetClientRect( hWnd3,&rect );
hdc= BeginPaint( hWnd3, &ps );
Rectangle(hdc, 0, 0, 100,100);
ReleaseDC(hWnd3, hdc);
EndPaint( hWnd3, &ps );
//3
hdc= BeginPaint( hWnd5, &ps );
Rectangle(hdc, 50, 50, 200,200);
ReleaseDC(hWnd5, hdc);
EndPaint( hWnd5, &ps );
break;
433:デフォルトの名無しさん
08/02/15 14:47:16
case WM_SIZE:
//2
hdc= BeginPaint( hWnd3, &ps );
Rectangle(hdc, 0, 0, 100,100);
ReleaseDC(hWnd3, hdc);
EndPaint( hWnd3, &ps );
//3
hdc= BeginPaint( hWnd5, &ps );
Rectangle(hdc, 50, 50, 200,200);
ReleaseDC(hWnd5, hdc);
EndPaint( hWnd5, &ps );
434:デフォルトの名無しさん
08/02/15 14:57:56
>>431
現象がよくわからん、2008でやっても再現しないみたい。
まあそれはおいといて、WM_PAINT以外でBeginPaintは使うな。
そこで書きたいならInvalidateでPAINTにまかすか、
GetDCで自分でDCもってこい
435:デフォルトの名無しさん
08/02/15 15:05:36
ってソース見るとむちゃくちゃやっとるな。
WM_PAINTの仕組みとか、ウィンドウプロシージャの動作とか
知ることはいっぱいありそうだけど、いったいどれを参考にしたのこれ?
436:デフォルトの名無しさん
08/02/15 15:58:10
VC2008Expressをインストールしようと思っているのですが、これには前もってWindowsSDKをインストールしておいたほうがよいのでしょうか。
2005と違って2008は、最初からPlatformSDKが付いているようなので、WindowsSDKは必要ないように思っているのですが、どうなのでしょうか。
437:デフォルトの名無しさん
08/02/15 16:04:41
>>436
.h ファイルや .lib ファイルを参照したり、取り込むよう指定が不要なら
要らないんじゃないか。スペルがあやしいが、dialog や listbox ctrl など
を使おうとすると、cmnctl32.lib とか要るだろう。
自分は dsound.h, dsound.lib も使うんで DirectX も入れたよ。
438:デフォルトの名無しさん
08/02/15 16:38:06
WindowsSDK6.1落としてきたんだが、6.0には付いてたコンパイラが入ってない?
セットアップのコンポーネント一覧でグレーアウトしていてチェックできない・・・
それともVS2008が入ってると自動で弾かれるのか?(2008Proが入ってる)
2005の時と同じくソース解析対応コンパイラに差し替える裏技が使えると期待したんだが。
439:デフォルトの名無しさん
08/02/15 17:00:12
>>431
>>435も言ってるけど、全体的にむちゃくちゃ。
基本から勉強し直した方がいいと思う。
とりあえず、複数のウィンドウで同じプロシージャを共有するのなら、
メッセージ受け取り時に、それを区別しないと。
URLリンク(www11.axfc.net)
Pass:1
440:デフォルトの名無しさん
08/02/15 17:01:21
質問です。
ゲームのチートツールを作るAPIって何ですか?
猫飯みたいに今実行してるプロセスのメモリを見れて
いじれるものをつくりたいんですが。
つまり実行中のほかのプロセスのメモリを書き換えるAPIとかって無いですか?
441:デフォルトの名無しさん
08/02/15 17:11:24
WriteProcessMemory
442:デフォルトの名無しさん
08/02/15 17:35:57
色々と調べて分かったのですが、WindowsSDKというのは、PlatformSDKと.NETFrameworkを一緒にまとめたもののようです。
ということは、VCだけを使う場合であれば、.NETFrameworkは不要ということで、
WindowsSDKをインストールする必要はないように思えるのですが、実際どうなのでしょうか。
一番気になっているのは、VC2008に付属するPlatformSDKが、
APIを使ったWinプログラムに完全に対応しているかどうかです。
437の方が言うように、comctl32.libが抜けていたりしたら困るところです。
443:デフォルトの名無しさん
08/02/15 17:41:25
それくらいの基本的なものは揃っているから大丈夫。
ヘッダ・インポートライブラリに関してはVC++付属ので困ってから、
入れることを考えても遅くない。
だから、入れるとしたら、Windows SDKのツールやドキュメントが欲しいとき。
444:デフォルトの名無しさん
08/02/15 17:49:23
なるほど。分かりました。
取りあえず、2008をインストールして、何が不足しているかを探ってみます。
445:デフォルトの名無しさん
08/02/15 18:03:59
>>400
「じゃあ、テラの次ってナニよ?」
って事になるし、それは誰もわからない。ヤバイ。誰にも分からないなんて凄すぎる。
ネタとはいえ、どんだけ教養ないんだよとオモタ
446:デフォルトの名無しさん
08/02/15 18:20:19
テラの次と言えばハカだろjk
447:デフォルトの名無しさん
08/02/15 18:36:24
自分が知ってるとこだけつっこむってのは、それ以外は知らないということでいいのか?
448:デフォルトの名無しさん
08/02/15 18:41:30
>>441
ありがとー☆
さっそくつくってみる
449:デフォルトの名無しさん
08/02/15 19:28:57
>>448
がんばれ 超頑張れ
DirectXとかゲームPGもいいけどそっちの世界も面白いぞ
450:デフォルトの名無しさん
08/02/15 20:59:45
>>446
テラって葬式だけやってるわけじゃないぞ
451:デフォルトの名無しさん
08/02/15 22:20:21
エキスプレスエディションは、コンソールアポリ作れるようなヘダーやリブラリーしか入って無くて、
ウィンドーズ.hとか、コモンコントール.hとかはウィンドーズSDKに入ってるから、
別途インストロールしないといけないと思ってたが、違ったのか。
つか、ウィンドーズSDKのコンパイラーいれないと、エキスプレスエディションだけじゃ、
RC.Exeがないから、リソースがコンパイールできませ~ん、ってエキスプレスの妖精さんに言われたんだが。
452:デフォルトの名無しさん
08/02/15 22:22:26
そういや神社って葬式しないのかな?
皇室の葬儀もよく判らんし
453:デフォルトの名無しさん
08/02/15 22:31:01
>>451
VC++ 2008はWindows SDKのサブセットが入っている。
454:デフォルトの名無しさん
08/02/15 22:34:56
神域は穢れを嫌うから神社で葬式はしないだろ
神格化していた頃ならいざ知らず
455:デフォルトの名無しさん
08/02/15 23:06:29
DT_CALCRECTでItaricの立ったフォントを計算して描くと右端が切れます。
仕様ですか?
456:デフォルトの名無しさん
08/02/15 23:18:08
サクラエディタや寺パッドとかって標準のテキストボックスじゃないよね?
だとしたらDrawTextとかで自力で書いてるの?
457:デフォルトの名無しさん
08/02/15 23:23:20
サクラエディタはソース公開されてるはずだから見てみれば?
458:デフォルトの名無しさん
08/02/15 23:23:53
テキストエディタの実装技術っつたらひとつの研究分野ですがな
459:デフォルトの名無しさん
08/02/15 23:36:36
VC++ 2005、WinXPで開発しています。
unicodeアプリです。
ある文字が全角文字か、半角文字かを判定したいと考えています。
どのようなAPIがあるでしょうか、よろしくお願いします。
460:デフォルトの名無しさん
08/02/15 23:39:14
普通にデータの文字コードを見ろよ
461:デフォルトの名無しさん
08/02/15 23:47:41
U+00C0~辺りも半角って言うの?
462:デフォルトの名無しさん
08/02/15 23:58:05
ユニコードコンソーシアムがUnicode文字の属性として全角・半角などを決めている。
それとどういう関係かは知らないけど、
Windows APIでは、GetStringTypeExのCtype 3で、全角・半角を取得できる。
463:デフォルトの名無しさん
08/02/16 00:48:44
URLリンク(wisdom.sakura.ne.jp)
↑のサイト見ながらWinAPI勉強し始めたばかりの者ですが
コマンドライン引数の項に乗っている一番最初のサンプルプログラムをコンパイルしてみたところ
PSTRとLPCWSTRの型に互換性がないと警告され、データファイルを実行ファイルにD&Dすると文字化けしたパスが表示されました
その前のメッセージボックスの項で紹介されていた引数の型と違うからおかしいとは思っていたのですが・・・
一応、型変換なども試してみたのですが表示されるのはいつも文字化けしたファイルのパスです
なんとか文字化けさせずにD&Dしたファイルのパスをメッセージボックスに表示させたいのですがどうしたらいいでしょうか?
464:デフォルトの名無しさん
08/02/16 01:00:52
ユニコードについてと、Windows & VCでのユニコード文字の扱い、
プログラム上での表記について調べるがよい。
とりあえず、PSTR はchar型へのポインタ、LPCWSTR はwchar_t型へのポインタのハズ。
別ものだよ。
ただ、そのページの例にも問題があるなw
465:デフォルトの名無しさん
08/02/16 01:04:48
>>463
環境は?
VisualStudio2005からはUNICODE文字セット使用がデフォルトになってるからな
マルチバイト文字セット使用にするか、ソースをUNICODEにあわせるかどっちかで
466:デフォルトの名無しさん
08/02/16 01:06:28
>>464
ありがとうございます!
早速ユニコード文字について調べてきます
467:デフォルトの名無しさん
08/02/16 01:09:58
>>465
VC++2005EEです
・・・っということはやっぱりユニコードですか
GUI作成に至るまでに覚えることは多そうだ・・・・・
468:デフォルトの名無しさん
08/02/16 01:26:39
>>429
方法がさっぱりわかんねーです(涙涙涙涙涙涙涙涙涙涙涙涙;;;;;;
469:デフォルトの名無しさん
08/02/16 01:39:40
>>463
<tchar.h>をインクルードして、
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PTSTR pCmdLine, int nCmdShow)
とすればいい。
470:デフォルトの名無しさん
08/02/16 01:59:01
Lunaでグループボックス作ったんだけど文字の背景色が変だ
どうやったら直るか誰か教えてorz
471:デフォルトの名無しさん
08/02/16 02:05:09
>>468
IXXX->lpVtbl->Func()
って感じで書く。
ヘッダ見たほうが早いよ。
C用に下記みたいなマクロが用意されているし。
#define ITaskScheduler_QueryInterface(This,riid,ppvObject) \
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
472:デフォルトの名無しさん
08/02/16 11:04:46
473:デフォルトの名無しさん
08/02/16 12:17:13
URLリンク(www.asahi-net.or.jp)
特別分かりやすいわけではないと思っているけど、Cでやるサンプルがある。
474:デフォルトの名無しさん
08/02/16 14:58:18
Kitty on your lapてなに?
475:デフォルトの名無しさん
08/02/16 15:01:51
hello worldと同じ
476:デフォルトの名無しさん
08/02/16 16:11:07
膝の上の子猫
477:デフォルトの名無しさん
08/02/16 16:11:39
GlobalFreeで何故かエラーがでてしまいます。
書いてあった関数コメントアウトして確保と開放の処理だけにしてみたのにやっぱりエラー…
何故でしょうか?
問題の部分のソースとエラー
unsigned long long int MojiCount=0;
static HGLOBAL hMem;
char *MojiBuf;
MojiCount=Edit_GetTextLength(hEdit);
hMem=GlobalAlloc(GHND,sizeof(char)*MojiCount+2);
if(hMem==NULL)
MessageBox(hWnd,"メモリが確保できませんでした","メモリエラー",MB_OK);
MojiBuf=(char *)GlobalLock(hMem);
MojiBuf[MojiCount+2]='\0';
Edit_GetText(hEdit,MojiBuf,MojiCount+1);
//本当はここで関数に*MojiBufを渡しててそれが原因かと思って、コメントアウトしてみたけどやっぱりエラーでる
GlobalUnlock(hMem);
GlobalFree(hMem);//←ここにブレイクポイント設置、ステップインするとエラー
Windows によって ○○.exe でブレークポイントが発生しました。
ヒープが壊れていることが原因として考えられます。○○.exe または読み込まれた DLL にバグがあります。
あるいは、○○.exe がフォーカスを持っているときに、ユーザーが F12 キーを押したことが原因として考えられます。
可能であれば、出力ウィンドウに詳細な診断情報が表示されます。
HEAP[○○.exe]: Heap block at 0023EF50 modified at 0023EF5A past requested size of 2
478:デフォルトの名無しさん
08/02/16 16:13:00
> ヒープが壊れていることが原因として考えられます。
> Heap block at 0023EF50 modified at 0023EF5A past requested size of 2
479:デフォルトの名無しさん
08/02/16 16:19:16
C言語の基礎から勉強するスレなのか?
480:デフォルトの名無しさん
08/02/16 16:26:07
MojiBuf[MojiCount+2]='\0';
481:デフォルトの名無しさん
08/02/16 16:43:58
>>480
ありがとうございます。MojiBuf[MojiCount+1]='\0'だったw
弄ってたらいつの間にかエラーでるようになってしまったと思ってたらEdit_GetTextLength
で返ってくるのが文字数-1だと気づいて+2に変えたとき間違えて変えてしまってたみたい
しかも精神衛生的に'\0'入れるのはEdit_GetTextの後にやった方がいいよね
こんなのでずっと悩んでたなんて…
482:デフォルトの名無しさん
08/02/16 17:19:57
>>481
というか、これでいいんじゃないのか?
MojiCount=Edit_GetTextLength(hEdit)+1;
hMem=GlobalAlloc(GHND,sizeof(char)*MojiCount);
MojiBuf=(char *)GlobalLock(hMem);
Edit_GetText(hEdit,MojiBuf,MojiCount);
GlobalUnlock(hMem);
GlobalFree(hMem);
483:デフォルトの名無しさん
08/02/16 17:53:50
>>474
膝の上の同居人、っつーADVだったような。
というか、たるとといいミュウミュウといい、あのサイトの中の人はネコミミ属性のようだ。
普通の言語のテク紹介サイトだと思ってたら、何の前触れもなくたるととか出てきたから吹いたw
484:デフォルトの名無しさん
08/02/16 18:34:39
MSDN死んでる?
485:デフォルトの名無しさん
08/02/16 18:34:58
キャラが一世代古いな
486:デフォルトの名無しさん
08/02/16 18:57:20
>>483そうそう!何の前触れもなくいきなりって、ネットで勉強してるとしょっちゅうあるよなww
俺は、それを流すんだが、その状況が可笑しくなってきちゃうんだがw
「あれー・・・、今なんか・・・。いや、勉強勉強!」っつってww
487:デフォルトの名無しさん
08/02/16 19:33:47
MessageBoxで処理をぶった切りまくったらポインタが大変なことになった。
488:デフォルトの名無しさん
08/02/16 19:53:11
ビットマップを表示するところとか、もうここでは書きたくない。
489:デフォルトの名無しさん
08/02/16 19:55:42
>>486
日本語でおk
490:デフォルトの名無しさん
08/02/16 20:28:09
(´・ω・`)しらんがな
491:デフォルトの名無しさん
08/02/16 21:43:45
> 俺は、それを流すんだが、その状況が可笑しくなってきちゃうんだがw
誰かこれを日本語に翻訳してくれ
492:459
08/02/16 21:46:57
>>462
ありがとうございます。それを使ってみることにします。
493:431
08/02/17 00:23:27
>>434
>>435
>>439
有難うございます。
また来ます。
494:デフォルトの名無しさん
08/02/17 00:47:01
>>491
俺は、
「kitty on your lap」
この言葉を見てもいつも気にせずスルーして次の文にいくんだが、
毎回やるこの自分の行動に可笑しくなってきちゃうんだww
495:デフォルトの名無しさん
08/02/17 02:09:22
MSTask.h にこういう文があるんだけど、interfaceキーワードって何ですか?
K&Rにも載ってないです。
interface ITaskScheduler
{
CONST_VTBL struct ITaskSchedulerVtbl *lpVtbl;
};
496:デフォルトの名無しさん
08/02/17 02:20:32
#define interface struct
497:デフォルトの名無しさん
08/02/17 02:50:52
素直にC++使ったほうが楽だよ
498:デフォルトの名無しさん
08/02/17 02:54:29
C++しらねーんだYO!
499:デフォルトの名無しさん
08/02/17 03:11:26
>>498
( ・∀・)人(・∀・ )ナカーマ!!
500:デフォルトの名無しさん
08/02/17 03:38:29
素直にC++習得したほうが楽だよ
501:デフォルトの名無しさん
08/02/17 04:34:13
つーかCでCOMとか在り得ねー
lpVtblとか第一引数とか&IID_~とかめんどいしC++でスマートポインタ使わないとやってられん
502:デフォルトの名無しさん
08/02/17 04:49:19
C で COM なんて C++ 勉強するより難しいと思う。
503:デフォルトの名無しさん
08/02/17 05:19:02
COMが世に出た当初はC全盛だったけどな
504:デフォルトの名無しさん
08/02/17 05:36:47
そしてCOMの世界で死ぬ。小一時間死ぬ。手始めにアパートメントモデルで死ぬ。
505:デフォルトの名無しさん
08/02/17 05:38:21
COMって1997年か。C全盛だったか?
506:デフォルトの名無しさん
08/02/17 05:41:48
COM で結局オブジェクト指向を勉強するくらいなら
C++ から入った方がマシ。
507:デフォルトの名無しさん
08/02/17 10:21:40
>>505
COMという言葉を前面に打ち出すようになったのはその頃からかもしれないけど、
技術的にはWindows 3.1までには出たはずのOLE2から始まったといっていいはず。。
508:デフォルトの名無しさん
08/02/17 12:41:31
ハンドルって何ですか?
509:デフォルトの名無しさん
08/02/17 12:43:26
FILE*のような、よくわからない何か。
510:デフォルトの名無しさん
08/02/17 12:48:13
何らかの操作を行うときに必用になる識別子
511:デフォルトの名無しさん
08/02/17 13:12:06
char s[100];
sprintf(s,"%d",GetLastError());
MessageBox(NULL, s , NULL , MB_OK );
GetLastErrorを確認するには上のような書き方ですか?
512:デフォルトの名無しさん
08/02/17 13:14:22
それもいいけど、FormatMessageを使うと番号に対応するメッセージが得られる。
513:デフォルトの名無しさん
08/02/17 13:38:24
ハンドル=ポインタだと思っている
514:デフォルトの名無しさん
08/02/17 14:22:15
>>511
wsprintf使え
515:デフォルトの名無しさん
08/02/17 14:23:25
だったらcharもTCHARへ変えないと。
516:デフォルトの名無しさん
08/02/17 14:33:37
>>515
wsprintfってchar*使えなかったの?
517:デフォルトの名無しさん
08/02/17 14:42:48
つかえるのはwsprintfA
518:デフォルトの名無しさん
08/02/17 14:58:53
このスレでAとかWとかそんなレベルの話はやめようぜ
519:デフォルトの名無しさん
08/02/17 15:49:38
>>517
へぇ・・・
俺BCCだから関係ないや
520:デフォルトの名無しさん
08/02/17 15:51:37
>>518
このスレだからやるんじゃないか
他所でやられるほうがウザい
521:デフォルトの名無しさん
08/02/17 15:56:37
>>518
大して難しい話でもないだろ
charだと一文字1バイト、TCHARだと一文字2バイトってだけの話じゃないか
522:デフォルトの名無しさん
08/02/17 16:05:25
>>519
BCCでも、Win32 APIを直接使うなら関係ある話だろ?
523:デフォルトの名無しさん
08/02/17 16:07:58
>>521
なにいってんだ?
TCHARは1バイトかもしんないぞ。
524:デフォルトの名無しさん
08/02/17 16:16:39
テーチャラは、チャラー型かヲチャラーテー型の切り替え用マクーロだろ
525:デフォルトの名無しさん
08/02/17 16:17:20
てーちゃらてーちゃら
526:デフォルトの名無しさん
08/02/17 16:23:40
ブチャラーテイに見えた
527:デフォルトの名無しさん
08/02/17 16:37:35
質問です。
タイトルバー以外のところをドラッグしてウィンドウを動かすために、WM_NCHITTEST で、
return
DefWindowProc() == HTCLOSE ? HTCLOSE :
HTCAPTION;
ってやってるウィンドウで、ドラッグし終わったときを捉えたいのだけどどのイベントが飛んでくるのか判りません。
WM_LBUTTONUP と WM_NCLBUTTONUP かなーとか思って捕捉のためのイベントハンドラを作ったのだけど、
捕捉できず、Spy++ で何が飛んでくるのか確かめようと思ったらシステム全体が落ちてしまいます。
どなたか教えてください。
開発環境は VC2008EE + SDK + ATL/WTL で、VS2005proの include ディレクトリも include しています。
528:デフォルトの名無しさん
08/02/17 16:59:37
>>527
WM_MOVEじゃダメ?
529:デフォルトの名無しさん
08/02/17 18:06:57
CoCreateInstance関数がちゃんと動いてくれません><
どうしてか理由が分からないです。
error C2115: 'function' : 互換性のない型が含まれています。
warning C4024: 'CoCreateInstance' : の型が 1 の仮引数および実引数と異なります。
error C2115: 'function' : 互換性のない型が含まれています。
warning C4024: 'CoCreateInstance' : の型が 4 の仮引数および実引数と異なります。
となります。
#include <windows.h>
#include <mstask.h>
HRESULT hr
ITaskScheduler *pITS;
hr = CoCreateInstance(CLSID_CTaskScheduler, NULL, CLSCTX_INPROC_SERVER, IID_ITaskScheduler, (void **) &pITS);
どこかおかしいところがありますか?
530:デフォルトの名無しさん
08/02/17 18:07:36
CoCreateInstanceの前に
CoInitialize(NULL);
があります。忘れました><
531:デフォルトの名無しさん
08/02/17 18:08:13
WM_EXITSIZEMOVEとか?
532:デフォルトの名無しさん
08/02/17 18:08:50
>>529
CとC++の違い
533:デフォルトの名無しさん
08/02/17 18:12:48
>>529
まずは、REFCLSIDとREFIIDの定義確認。
534:デフォルトの名無しさん
08/02/17 18:19:00
>>529
CTaskScheuler 用のヘッダファイルインクルードして無いじゃん。
535:デフォルトの名無しさん
08/02/17 18:28:46
>>527
Spy++使わなくても自分のWndProcなんだから、どんなイベントが飛んでくるか分かるっしょ。
DebugConsoleに吐きまくれ。
536:デフォルトの名無しさん
08/02/17 18:59:34
拡張子をcppに変えればいいだけなのにね
537:デフォルトの名無しさん
08/02/17 20:51:08
ここは敢えて ->lpVtbl->
538:527
08/02/17 21:49:19
WM_EXITSIZEMOVE でいけましたー。ありがとうございました。
ところで、UINT uMsg の値から WM_~ とかに変換してくれるライブラリとかありませんか?
変換がしんどかったのでw
539:デフォルトの名無しさん
08/02/17 21:59:55
変換も何もそのまんまだろ
540:デフォルトの名無しさん
08/02/17 22:03:55
あ、欲しいのは文字列です
541:デフォルトの名無しさん
08/02/17 22:05:53
WM_ のあるヘッダからテーブルを生成するプログラムを書いた気がする。
542:デフォルトの名無しさん
08/02/17 22:13:08
文字列にしたいってことでしょ
543:デフォルトの名無しさん
08/02/17 22:15:16
だから文字列テーブルを作るんだよ
544:デフォルトの名無しさん
08/02/17 22:37:50
ラップされて、電子レンジに入れられてしまった子猫の事かと思ってたんだが違ったのか・・・。
545:デフォルトの名無しさん
08/02/17 22:40:28
>>544
まだその話してたんかいw
546:デフォルトの名無しさん
08/02/17 23:36:41
VC++のデバッガならウォッチ式にuMsg,wmとか書いてWM_が表示できた気がする
547:デフォルトの名無しさん
08/02/18 00:16:11
>>546
試してみたらほんとだった。
素直に感謝します。
548:デフォルトの名無しさん
08/02/18 00:21:23
FindItem関連で質問があります。
仮想リストビューである文字列と文字列が一致した場合、アイテムを削除する処理を作ろうと思ってます。
lvfi.flags = LVFI_STRING;
lvfi.psz = "ab";
int nItem = ListView_FindItem(cListView.hListReserve, -1, &lvfi);
ListView_DeleteItem(cListView.hListReserve, nItem);
現在、一致する場合もしない場合もnItemには0しか戻ってきません。
仮想リストビューでは、ListView_FindItemは使えないのでしょうか?
回答よろしくお願いします。
環境はVC.NET + SDKです
549:デフォルトの名無しさん
08/02/18 00:26:01
コントロール側がデータを持っていたら、そもそも仮想の意味がないだろ。
550:デフォルトの名無しさん
08/02/18 01:33:20
アプリケーションを作成したのですが、
CPU使用率が高いです Orz
どこが悪いのでしょうか?
551:デフォルトの名無しさん
08/02/18 01:46:25
お前の脳みそ
552:デフォルトの名無しさん
08/02/18 07:49:23
>>550
ループしてる場所にSleepを入れる
553:デフォルトの名無しさん
08/02/18 11:07:41
なあなあ
CreateWindowExした直後にSetClipboardViewerするとウィンドウ無効で失敗するんだけどなんで?
もちろんCreateWindowExは成功してる
ちなみに
CreateWindowExとSetClipboardViewerの間にSendMessage(hWnd,WM_NULL,0,0);挟んだら動いた
MSDNにも何も書いてないんだけど…
URLリンク(msdn2.microsoft.com)
554:デフォルトの名無しさん
08/02/18 11:11:00
>>553
UpdateWindowは?
555:デフォルトの名無しさん
08/02/18 12:23:23
WM_CREATEくるまで駄目とか。
556:デフォルトの名無しさん
08/02/18 13:29:54
いや、CreateWindowExから戻ったときは、
既にWM_CREATEからの応答も帰ってきた後。
557:デフォルトの名無しさん
08/02/18 13:36:57
メッセージループまで行ってないうちにってことか。
SendMessage挟んだら動いたのはたまたまかもなあ
558:デフォルトの名無しさん
08/02/18 13:49:16
>>555
CreateWindowEx→WindowProc(WM_CREATE)→SetClipboardViewerになるからそれはない
WM_CREATE内でSetClipboardViewer呼んでるってんなら話は別だが
559:デフォルトの名無しさん
08/02/18 15:19:47
WM_CHANGECBCHAINやWM_DRAWCLIPBOARDを正しく処理してないんじゃないの?
ここ見る限りだとSetClipboardViewerの返値にSendMessageしてるみたいだけど。
URLリンク(msdn2.microsoft.com)
560:デフォルトの名無しさん
08/02/18 15:23:15
質問です
TextOut等で描画する文字の下にドロップシャドウを描画したいのですが、何か良い方法はありますか?
やはり、自分でシャドウを作らないといけないでしょうか?
宜しくお願いします
561:デフォルトの名無しさん
08/02/18 15:25:26
数ドットほど右下にTextOutで灰色か黒の文字を描いておけば影に見えないこともない
562:デフォルトの名無しさん
08/02/18 15:27:47
DrawShadowText
563:デフォルトの名無しさん
08/02/18 16:12:50
VistaならDrawThemeTextにあった気がする
564:デフォルトの名無しさん
08/02/18 16:48:01
スレ違いかな?
縁取り文字の一番気持ちいい実装ってどんなの?
8方向に1pxずつずらした白文字、最後にまんなかに黒文字ってやってるんだけど
ちょっと馬鹿っぽい。。
565:デフォルトの名無しさん
08/02/18 17:21:39
>>561
>>562
>>563
それらを参考にもう一度調べてみますね
情報ありがとうございました
566:デフォルトの名無しさん
08/02/18 17:35:47
>>564
BeginPath→DrawText→EndPath→PathToRegion→FrameRgn
567:デフォルトの名無しさん
08/02/18 20:01:37
PathとかRegionだと12ptくらいの小さい文字はつぶれるな
568:デフォルトの名無しさん
08/02/18 21:44:41
>>564
あらかじめ表示させたいフォントをビットマプとして保存しといて
BitBlt・・
あんま変なAPI使うと古いOSで動かなかったりするんで。
569:デフォルトの名無しさん
08/02/18 21:54:14
便乗で質問だけど、このスレ的にはどのOSから切り捨てるのが主流?
さすがにXPより前はサポートしません
とかはないだろうけど
9x系とNT4.0はもういいかなとか個人的には思ってる
570:デフォルトの名無しさん
08/02/18 21:57:47
Vista x64より前
571:デフォルトの名無しさん
08/02/18 21:58:28
9x捨てるならウニコードにしたほうがパフォーマンスはよくなるのかな?
572:デフォルトの名無しさん
08/02/18 22:02:41
2000から切り捨てるとかなり楽
573:デフォルトの名無しさん
08/02/18 22:29:43
俺は2000以降をサポるようにしてる。WINVERの指定も0x0500。
なぜなら、俺の環境では2000が現役だから・・・
574:デフォルトの名無しさん
08/02/18 22:30:54
サボると読んで混乱するおいら。
575:デフォルトの名無しさん
08/02/18 22:33:44
古いWindowsでも動かしたいと思うときで、
IE4.01以上など各種アップデートを施したWindows 95/NT4ということにしている。
576:デフォルトの名無しさん
08/02/18 22:40:13
2000より前なんて俺の中では存在しない
98以前はネットに繋ぐなカス
577:デフォルトの名無しさん
08/02/18 22:42:10
コンパイラはまさかVC6?
578:デフォルトの名無しさん
08/02/18 22:53:08
>>571
実測して差が出るかどうかはわからないけど、理屈の上では変換のコストがなくなるので若干良くなる
wchar_tにするとboostがイミフなエラー出したりすることもあるけど。。。
579:デフォルトの名無しさん
08/02/18 23:39:35
W<->A変換速度についてはダンゴさんの意見を聞きたいところだ
580:デフォルトの名無しさん
08/02/19 02:52:14
>>577
VC6現役で使ってるが何か?
581:デフォルトの名無しさん
08/02/19 02:54:44
VS2005 で素直にダイアログのフォントを使っています。
9x は切り捨て
582:デフォルトの名無しさん
08/02/19 03:01:39
暮れに突如DLLラッパー書きたくなって2008Express落としたが重すぎ。
VC6探し出してインスコした。
これアカデミック版なんだよなー、歳は食いたくねぇ。
583:デフォルトの名無しさん
08/02/19 09:11:20
URLリンク(msdn2.microsoft.com)
しばらく前から検索すると503になるんだが、俺だけか?
左のツリーからは目的のページには行けるんだが、検索できないと面倒でしかたない。
584:デフォルトの名無しさん
08/02/19 10:31:57
GetGlyphOutlineの使い方に関する質問です
URLリンク(www7a.biglobe.ne.jp)
ここのサイトのソースで
アンチエイリアスを施すフォントにFW_BOLDを指定すると、
このソースではlp[0] = (GetBValue(cr))で例外が発生して、
アプリケーションが落ちてしまいます
このソースに手を加えなければ正常に動く様です
どの辺りが悪いのでしょうか?
よろしくお願いします。
585:デフォルトの名無しさん
08/02/19 10:39:30
CreateFont(32, 0, 0, 0, 0,
を
CreateFont(32, 0, 0, 0, FW_BOLD,
にしたってこと?
落ちないけどなー
586:デフォルトの名無しさん
08/02/19 10:44:04
教えてください
GetDesktopWindowでハンドルとって
GetDCで デスクトップの画像 取得しているんですが
ログイン画面を取るときには たしかモニターの選択か
なにかしければならないんですよね?
昔何かで観て、必要になったんだけど
見つからない・・・・
よろしくお願いします
587:デフォルトの名無しさん
08/02/19 11:46:12
ウィンドウステーション?
588:デフォルトの名無しさん
08/02/19 11:58:30
ウィンドウステーションだったかデスクトップだったか
ログイン画面撮るのは難しそうな気もするけど頑張って下さい
589:デフォルトの名無しさん
08/02/19 12:02:15
>>586
スレ違いの回答だけど
ログイン画面のキャプチャが欲しいだけなら、VirtualPCとかでOS立ち上げれば良い
590:デフォルトの名無しさん
08/02/19 13:02:05
>>585
はい、その通りです
落ちませんか...
もう一度、一から確認し直してみます
ありがとうございました
591:デフォルトの名無しさん
08/02/19 14:07:52
エディットコントロールのカーソルが何行目かしりたいのですが
どうすればよいでしょうか?
あと今表示されている一番上と一番下が何行目か知るには
どうすればよいでしょうか?
592:デフォルトの名無しさん
08/02/19 14:50:25
>>586>>588
XPまでならサービスで作っておけばできなくもない。
しかしVistaから実現は厳しくなった。
593:デフォルトの名無しさん
08/02/19 14:53:11
>>591
カーソル位置は、EM_LINEFROMCHAR
表示のほうは、EM_CHARFROMPOS
とかでどうかなあ
594:デフォルトの名無しさん
08/02/19 14:55:06
あ、表示は行位置か。EM_CHARFROMPOS と EM_LINEFROMCHAR の組み合わせだな。
595:デフォルトの名無しさん
08/02/19 17:20:22
c:\foo.txt, c:\bar.bmpといった存在するファイルのパスを渡すと
Explorerで表示されるアイコンと同じイメージを取得できる関数ってなんですか?
596:デフォルトの名無しさん
08/02/19 17:30:36
SHGetFileInfo でした
597:デフォルトの名無しさん
08/02/19 17:57:58
>>591
EM_GETFIRSTVISIBLELINE等々
っていうか、ヘルプのEM_で始まるメッセージは全部チェックしる
598:デフォルトの名無しさん
08/02/19 21:52:56
>>592
セッション0、か
599:デフォルトの名無しさん
08/02/19 22:00:33
質問です
URLリンク(wisdom.sakura.ne.jp)
ここのサンプルプログラムをVC++2005EEでコンパイルしてみたところ
MessageBoxを呼び出すところで
error C2065: 'LlpcsWnd' : 定義されていない識別子です
といわれコンパイルできません
どうも宣言した変数がlpcsWndなのにLlpcsWndと認識されてしまってるみたいです
ためしにTEXTマクロの中身以外のlpcsWndをLlpcsWndと修正してみたところ
コンパイルに成功し、実行できたのですがこんな修正をせずとも
コンパイルを成功させ実行させる方法とかはありませんか?
ひょっとしたらスレ違いかもしれませんがよろしくおねがいします
600:デフォルトの名無しさん
08/02/19 22:04:23
>>599
>>463
601:デフォルトの名無しさん
08/02/19 22:05:50
>>599
>TEXT(lpcsWnd->lpszName)
TEXT( ) いらないよそこ
602:デフォルトの名無しさん
08/02/19 22:06:12
>>599
ShiftJIS でおk
ってかサイトの方が TEXT マクロの使い方を間違ってる
603:デフォルトの名無しさん
08/02/19 22:12:59
>>600-602
早い返答ありがとうございます
TEXTマクロの使い方が間違っている・・・ですか
まずはネットで大まかにやった後本を買って足りないところを補おうと考えていたのですが
やっぱり一冊は買っておくべきですね・・・
604:デフォルトの名無しさん
08/02/19 22:29:54
こういうサイトに載ってるコードって、無意識的に正しいと思っちゃうよね。
605:デフォルトの名無しさん
08/02/19 22:52:14
その考えは危険
606:デフォルトの名無しさん
08/02/20 03:12:04
MSのサンプルでも偶に間違ってるしな
607:デフォルトの名無しさん
08/02/20 03:12:59
モーダルダイアログのプロシージャ内で、
親ウインドウのハンドル(DialogBoxのhWndParentに渡したハンドル)を知るにはどうしたらいいですか?
GetParentとかGetAncestorとかGetWindowとか試したんですが、どれも違うようです。
608:デフォルトの名無しさん
08/02/20 03:27:44
GetWindowLongPtr()
609:デフォルトの名無しさん
08/02/20 10:01:25
>>604
まあいくらなんでも、実際にコンパイル、実行してると思うわな
610:デフォルトの名無しさん
08/02/20 10:14:53
>>587,588
徹夜明けで返事が遅れてしまいました
ヒント頂いてありがとうございます。
これからがんばってみます
611:デフォルトの名無しさん
08/02/20 10:47:09
>>606
URLリンク(watch.impress.co.jp)
この記事おもいだした
612:デフォルトの名無しさん
08/02/20 12:25:40
>>609
tchar の型によっては全く問題なくコンパイルできる
613:デフォルトの名無しさん
08/02/20 12:25:54
サンプルコードはとりあえずAPIが正常終了返す条件を教えてもらう程度にしか見ないほうがいいよな。
614:デフォルトの名無しさん
08/02/20 12:31:53
>>612
あーそっか。
615:デフォルトの名無しさん
08/02/20 14:35:06
C言語を初めて覚えるのに「猫でも」で痛い目を見たから
どこのサンプルでも一行ずつチェックして確かめてるわ。
616:デフォルトの名無しさん
08/02/20 16:34:14
ある文字列stringを描画したときに一定の幅にstringの何文字目まで収まるかを知りたいんだけど、
プロポーショナルフォントも考慮した場合GetTextExtentPoint32()あたりで1文字ずつ
のばしていくしか方法無いかな?
要はテキストの折り返し処理をしたいんだけど、↑の方法だと行数が多いときに遅くなっちゃって。
617:デフォルトの名無しさん
08/02/20 16:43:26
無いと思う
618:デフォルトの名無しさん
08/02/20 16:45:52
GetTextExtentExPointってのはどう?
619:デフォルトの名無しさん
08/02/20 16:48:16
>>616
>ある文字列stringを描画したときに一定の幅にstringの何文字目まで収まるかを知りたいんだけど
DrawTextEx を DT_SINGLELINE で呼び出して、DRAWTEXTPARAMSのuiLengthDrawnを見る。
620:616
08/02/20 17:28:18
GetTextExtentExPointとDrawTextExググってみた感じどっちでもいけそうだな。
つか、レス早すぎだろwその知識はうらやましいわ。
ホントありがとう。
621:デフォルトの名無しさん
08/02/21 01:07:55
>DT_SINGLELINE
童貞シングルライフと読めて泣いた
622:デフォルトの名無しさん
08/02/21 01:23:10
>>621
どんだけ煮詰まってるんだw
623:デフォルトの名無しさん
08/02/21 02:14:00
つまんね
624:デフォルトの名無しさん
08/02/21 02:40:40
じゃあ死ねよ
625:デフォルトの名無しさん
08/02/21 03:06:50
はあ?
626:デフォルトの名無しさん
08/02/21 03:08:48
こういう出来ないばっか言う馬鹿女キライ
627:デフォルトの名無しさん
08/02/21 03:09:14
ハイ、すいません
ゴバクが通りますよ
628:デフォルトの名無しさん
08/02/21 03:10:51
自然な流れに吹いた
629:デフォルトの名無しさん
08/02/21 06:02:16
ワロタ ほんとに誤爆なのか
630:デフォルトの名無しさん
08/02/21 07:41:00
InterlockedExchange関数の使い方、使うメリットを
解りやすく教えてください。
コレを使うと複数プロセスでのメモリアクセスの競合を保護できる?
らしいのですが、イマイチ解りません。
631:デフォルトの名無しさん
08/02/21 09:30:31
解かりやすく、と言われても
「同期オブジェクト」の仕組みを理解していないと伝わらないし、理解すれば解かるような……
使い方もメリットもここに書いてある。
短時間でできる汎用の同期オブジェクト
URLリンク(msdn.microsoft.com)
読むのは、「アトミック」、「スピンロック」、「デッドロック」、この3つの意味を正しく理解してから。
一度読んで終わらず何度も読めば良いと思うよ。
仕様を読んだうえでイマイチ解からないところを「ここは何故」と聞きに来ればいい。
同期オブジェクトの解説サイトは沢山あるから検索してみ。
632:デフォルトの名無しさん
08/02/21 09:33:38
>>630
使い方・・・ねぇ
例えば LONG 変数があったとして、
LONG x;
この値を普通に操作すると、スレッド間で競合が起きるだろ?
BOOL Lock() {
if (x == 0) { x = 1; return true; }
else { return false; }
}
void Unlock() {
x = 0;
}
InterlockedExchangeを使えば、そういった問題は起きない
BOOL Lock() {
if (InterlockedExchange(&x, 1) == 0) { return true; }
else { return false; }
}
void Unlock() {
InterlockedExchange(&x, 0);
}
こんな例でわかるかなぁ・・・
633:デフォルトの名無しさん
08/02/21 09:37:04
あー>>631の追記、
もし同期オブジェクトの解説サイトを読むときは、
日経BP(ITPRO)の解説の一部は人に薦めるようなものではないので
参考にする場合は気をつけて。
634:デフォルトの名無しさん
08/02/21 11:57:19
>>631
Interlocked系は同期オブジェクトじゃないだろ……
635:デフォルトの名無しさん
08/02/21 15:17:25
GDIのAPIってスレッドセーフなんでしょうか?
極端な例をいえば、1つのHDCの上半分・下半分を2スレッドでSetPixel()していくなど。
HDCへの描画は領域が被らない場合にスレッドセーフか?といったほうがいいのかな。
636:デフォルトの名無しさん
08/02/21 15:23:41
safe
637:デフォルトの名無しさん
08/02/21 16:34:47
任意のDPI値を持つメモリDCを作成するには、
どのような関数を使えばよいのでしょうか?
CreateCompatibleDC(NULL)で作成したものだと、
GetDeviceCaps(LOGPIXELSX)の値はモニタのDPI値のままになってしまいます。
638:デフォルトの名無しさん
08/02/21 16:48:05
ファイル名が変更されたりアプリやOSが再起動されたりしても
常に同じファイルを参照できる方法を探しています.
FATをあきらめてNTFSに限定すれば
GetFileInformationByHandle()の戻り値のBY_HANDLE_FILE_INFORMATIONに含まれる
nFileIndexHighとnFileIndexLow(とdwVolumeSerialNumber)が
ファイルのIDとして使えるようです.
しかし,逆にこれらの情報をもとにファイルを取得する方法がわかりません.
どなたかご教示お願いします.
639:デフォルトの名無しさん
08/02/21 17:14:33
OpenFileByIdってのがあるみたいだけど
Requires Windows Vista. って書いてあるなぁ
URLリンク(msdn2.microsoft.com)(VS.85).aspx
Win32 FileID API Library っての使えばXPでも使えるようになるのかな
よくわからん
640:デフォルトの名無しさん
08/02/21 17:31:12
NTFSならApp Dataフォルダーにでもハードリンクなファイル作れば?
641:デフォルトの名無しさん
08/02/21 19:34:30
>>638
それって、例えばc:\abc.binを上書きするのに
c:\abc.tmpを作成→c:\abc.binを削除→abc.tmpをabc.binにリネーム
とかやるソフトだとファイルIDが変わると思うけど
642:デフォルトの名無しさん
08/02/21 21:43:42
なんか似たような話が書いてあった
URLリンク(www.atmarkit.co.jp)
643:デフォルトの名無しさん
08/02/22 02:20:04
ショートカットファイルの自動追跡を利用したらどうかね?
Resolve()とかいうメソッドがあったような
644:デフォルトの名無しさん
08/02/22 04:11:41
そんな物アテになるかよ
645:デフォルトの名無しさん
08/02/22 09:37:07
フォントのプレビュー画面を作成しているのですが、
フォントの言語によってサンプルの文字列を変更しようと思います。
日本語フォントなら日本語の文章を、欧文フォントなら英語の文字列といった具合です。
そのフォントのデフォルトの言語のようなものを得るにはどうしたらよいですか?
646:デフォルトの名無しさん
08/02/22 12:37:34
エディットボックスの現在のカーソル位置の段数調べたいんですが
SendMessage(ハンドル名, EM_LINEFROMCHAR, -1, 0);
この使い方であってますか?
なぜか数字が合わないです。
647:デフォルトの名無しさん
08/02/22 12:49:24
何が返ってくるん?
648:デフォルトの名無しさん
08/02/22 13:53:03
いくつを期待していくつになるんだよ。
最初の行は0だからな。
649:デフォルトの名無しさん
08/02/22 14:42:59
>>647 <<648
申し訳ないです。
自分のミスです^^;
すいません、もうひとつ質問なんですが、
SetScrollInfoをつかってウインドウにスクロールバーを設置していますが
ウインドウにツールバーが重なっていてるのですがスクロールバーの幅
を調節する方法はあるのでしょうか?
650:649
08/02/22 14:46:03
訂正
ウインドウにツールバーとスクロールバーを設置しています。
ところがツールバーの上にスクロールバーが重なっています。
スクロールバーの幅を調節する方法はあるのでしょうか?
651:デフォルトの名無しさん
08/02/22 14:56:46
2時間画面の前で待ってたんだぞ。何かよこせ
ツールバーもエディットボックスもメインウィンドウの子なんでしょ?
エディットを親にしてスクロールバー作れば重ならないはず
652:デフォルトの名無しさん
08/02/22 14:56:47
妙なことするより、ツールバーに重ならないように子ウィンドウ作った方が楽かと
653:デフォルトの名無しさん
08/02/22 17:49:39
>>651
つ ⑩ これやるよ。
654:デフォルトの名無しさん
08/02/23 01:18:09
>>651
申し訳ないです。 ^^;
ウインドウに段数をペイントで書いていまして、
ウインドウに書かれた段数の横にエディットコントロール
を貼り付けています。そしてウインドウのスクロールバー
でエディットコントロールのスクロールを連動させています。
>>652
子ウインドウにエディットコントロールは貼り付けられますか?
655:デフォルトの名無しさん
08/02/23 20:00:44
WindowsでスプールファイルにEMFがあります。このファイルを元にし
て、印刷しますがこのファイルを解析して、実際に紙に印刷される意味
のあるデータを取得すると言う事は出来るのでしょうか?
RAWに関しては、解析して意味のあるデータを取得した事はありますが、
EMFに関しては良く分かりません。Windows XPの環境です。初心者です
が、宜しくお願いします。
656:デフォルトの名無しさん
08/02/23 20:25:07
>>655
これかなたぶん?
URLリンク(msdn2.microsoft.com)(VS.85).aspx
657:デフォルトの名無しさん
08/02/23 20:57:42
Windows VistaでBeep関数を呼び出しても音が鳴りません。
何か仕様変更等あったのでしょうか。
658:デフォルトの名無しさん
08/02/23 20:58:33
EnumEnhMetaFileだろjk
659:デフォルトの名無しさん
08/02/23 21:32:15
VC++6.0、SDKでEDITボックスにドラッグアンドドロップしてファイル名を取得したいのですが
DragAcceptFiles(::GetDlgItem(hWnd, IDC_EDIT1), TRUE);
とやってもWM_DROPFILESのメッセージが拾えないです。
リストボックスに同様なものをしたら拾えたのですが
EDITは特殊なのですか?
660:デフォルトの名無しさん
08/02/23 22:11:35
>>659
エディットボックス
(というより自分自身がウィンドウプロシージャを握っていないウィンドウ)
のメッセージを受け取ろうとしているのだから、サブクラス化しないと。
661:デフォルトの名無しさん
08/02/23 22:53:06
>656 有り難う。しかし、日本語でないと良くわからん。日本語のサイトは無いのだろうか?
662:デフォルトの名無しさん
08/02/23 23:11:47
>>661
>>658
663:デフォルトの名無しさん
08/02/24 00:30:42
>>660
レスサンクス
調べてみる
664:デフォルトの名無しさん
08/02/24 01:23:34
作成したexeファイルと同フォルダにヘルプファイルを置いているので、
GetModuleFileName()を使って、パスを取得する処理を入れているのですが、
起動時にこの関数でエラーになってしまいます。
で、GetLastError()を使うとエラーコードは24とのこと。
エラーコード24は「プログラムがコマンドを発行しましたが、コマンドの長さが正しくありません。」らしいのですが、
これは何が理由でエラーとなっているのでしょうか。。
665:デフォルトの名無しさん
08/02/24 01:30:16
まずは自分コードを疑おう
666:デフォルトの名無しさん
08/02/24 01:48:07
プロセスにマップされたものでないならエラーになるに決まってるだろ
667:666
08/02/24 01:50:32
やるんならGetCurrentDirectory使うか
INIとか設定ファイルなんかに持たせるとか
そういうのでいいんでね?
668:664
08/02/24 01:53:59
>>665
もちろん自分のコードを疑っているんですが、
その取っ掛かりが欲しくて。
このエラーコードの意味やどういった時に起こるものなのかがわかれば、
どこから目を付ければいいかわかるかなと思ったんですが。
>>666
すみません。
プロセスにマップという意味がよくわかっていませんが、
要は、自exeファイルがあるパスを取得するには、
ただ単にGetModuleFileName()を呼び出すだけではダメだ、ということでしょうか?
669:664
08/02/24 02:20:23
>>667
ありがとうございます。
いま作ってるのが常駐するやつでして、
GetCurrentDirectory()もやってみたのですが、
常駐アプリの場合だと、C:\Document and Settings\[User Name]\
が返るみたいでした。
670:デフォルトの名無しさん
08/02/24 02:38:56
>>667
おいおいGetCurrentDirectoryとか嘘を教えるなよ
カレントディレクトリ≠exeのディレクトリだと誤作動するアプリの元凶だろ
>>669
GetModuleFileName→(PathRemoveFileSpec)→PathAppend
671:デフォルトの名無しさん
08/02/24 02:44:31
その exe を他のディレクトリに移してみてから実行したら
どうなるかは試してみた?。
GetModuleFileName の使い方に問題がなければ
アクセス権や MAX_PATH とかの問題じゃない?
672:デフォルトの名無しさん
08/02/24 02:48:10
ずるずる引っ張るぐらいなら最小コードをうpしたほうが早い
673:デフォルトの名無しさん
08/02/24 08:33:51
最小コードも何も、>>670に書いてある3つのAPI名でググればすぐに見つかるだろ
その程度の検索も出来ないような奴はプログラマには向いてない
674:デフォルトの名無しさん
08/02/24 09:00:40
知りたいのはヘルプの位置じゃなくて、GetModuleFileNameがエラーを返す理由でないの?
PathAppend とかぐぐってどうすんの。
675:デフォルトの名無しさん
08/02/24 09:02:39
DWORD GetModuleFileName(hinstModule, lpszPath, cchPath)
戻り値
関数が正常に終了した場合は、 バッファにコピーされた文字列の文字数を返します。
それ以外の場合は、 0を返します。拡張エラー情報を取得するには、 GetLastError関数を使います。
676:デフォルトの名無しさん
08/02/24 09:08:57
ずるずる引っ張るぐらいなら最小コードをうpしたほうが早い
677:デフォルトの名無しさん
08/02/24 09:19:44
もうさ、__argv[0]でも使ってれば?
678:デフォルトの名無しさん
08/02/24 09:22:54
#include<windows.h>
#include<stdio.h>
int main(void){
char filename[_MAX_PATH];
GetModuleFileName(NULL, filename, sizeof(filename));
printf("%.*s\n", sizeof(filename), filename);
return 0;
}
>>676 何故自分で貼らない?質問者か?
>>675 で分からないなら MSDN ダウンロードしなよ 無料だから
679:デフォルトの名無しさん
08/02/24 09:25:35
やっぱ勘違いしてたか。最小コード貼れってのは、質問者に言ってるんだよ。
エラーを再現できる最小限のコードを出せってな。
680:デフォルトの名無しさん
08/02/24 09:30:44
672は誤解されてしまったようで申し訳ない
解決方法は、もちろん示されたAPIをググってコード見直せばOKなんだ
エラー原因もそれで解決するはずなんだが、それができないのなら晒したら? という話
681:デフォルトの名無しさん
08/02/24 09:39:43
> GetModuleFileName(NULL, filename, sizeof(filename));
今時こんなコード書く糞プログラマは偉そうな事言えんぞw
682:デフォルトの名無しさん
08/02/24 09:58:06
普通誤解しないから