Win32API質問箱 Build42
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2006/04/14(金) 06:09:09やさしいお兄さんやお姉さんたちが答えてくれるかも。
過去スレ、関連リンクは>>2-5くらい。
■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(http://msdn.microsoft.com)の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvencedWindowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで。
0002デフォルトの名無しさん
2006/04/14(金) 06:10:0541 ttp://pc8.2ch.net/test/read.cgi/tech/1141392216/
40 ttp://pc8.2ch.net/test/read.cgi/tech/1138893959/
39 ttp://pc8.2ch.net/test/read.cgi/tech/1136673250/
38 ttp://pc8.2ch.net/test/read.cgi/tech/1133798345/
37 ttp://pc8.2ch.net/test/read.cgi/tech/1131884991/
36 ttp://pc8.2ch.net/test/read.cgi/tech/1128951330/
35 ttp://pc8.2ch.net/test/read.cgi/tech/1125850096/
34 ttp://pc8.2ch.net/test/read.cgi/tech/1122723009/
33 ttp://pc8.2ch.net/test/read.cgi/tech/1120153520/
0003デフォルトの名無しさん
2006/04/14(金) 06:10:4131 ttp://pc8.2ch.net/test/read.cgi/tech/1114762194/
30 ttp://pc8.2ch.net/test/read.cgi/tech/1112345886/
29 ttp://pc8.2ch.net/test/read.cgi/tech/1110281860/
28 ttp://pc5.2ch.net/test/read.cgi/tech/1108199304/
27 ttp://pc5.2ch.net/test/read.cgi/tech/1106103119/
26 ttp://pc5.2ch.net/test/read.cgi/tech/1104109858/
25 ttp://pc5.2ch.net/test/read.cgi/tech/1101393155/
24 ttp://pc5.2ch.net/test/read.cgi/tech/1098967135/
23 ttp://pc5.2ch.net/test/read.cgi/tech/1095534704/
22 ttp://pc5.2ch.net/test/read.cgi/tech/1092524669/
21 ttp://pc5.2ch.net/test/read.cgi/tech/1090422324/
20 ttp://pc5.2ch.net/test/read.cgi/tech/1088140233/
19 ttp://pc5.2ch.net/test/read.cgi/tech/1084697545/
18 ttp://pc5.2ch.net/test/read.cgi/tech/1081702990/
17 ttp://pc5.2ch.net/test/read.cgi/tech/1077470361/
16 ttp://pc2.2ch.net/test/read.cgi/tech/1073830065/★
15 ttp://pc2.2ch.net/test/read.cgi/tech/1069339866/★
14 ttp://pc5.2ch.net/tech/kako/1065/10653/1065328397.html
13 ttp://pc5.2ch.net/tech/kako/1059/10595/1059549320.html
12 ttp://pc5.2ch.net/tech/kako/1056/10560/1056033645.html
11 ttp://pc5.2ch.net/tech/kako/1052/10526/1052651750.html
10 ttp://pc5.2ch.net/tech/kako/1047/10478/1047819779.html
9 ttp://pc5.2ch.net/tech/kako/1044/10449/1044929160.html
8 ttp://pc5.2ch.net/tech/kako/1040/10409/1040964626.html
7 ttp://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
6 ttp://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
5 ttp://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
4 ttp://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
3 ttp://pc.2ch.net/tech/kako/1017/10170/1017072275.html
2 ttp://pc.2ch.net/tech/kako/1006/10067/1006783012.html
1 ttp://pc.2ch.net/tech/kako/991/991576947.html
0004デフォルトの名無しさん
2006/04/14(金) 06:12:01http://www.microsoft.com/japan/msdn/
- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
- Platform SDK Update
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
http://www.google.com/
- Windows® Server 2003 SP1 Platform SDK Full Download
http://www.microsoft.com/downloads/details.aspx?familyid=EBA0128F-A770-45F1-86F3-7AB010B398A3&displaylang=en
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm
- Win32 API入門
http://wisdom.sakura.ne.jp/system/winapi/
- Win32 プログラミング入門
http://www7.plala.or.jp/keny01/windows/win32/
- 書籍
Advanced Windows
http://www.amazon.co.jp/exec/obidos/ASIN/4756138055
-おまけ
dat落ちしている過去スレが見れるかも。Build19が見たい人、余裕のある人は●でも買ってやってくれ。
http://makimo.to/cgi-bin/search/search.cgi?q=Win32API&andor=AND&sf=2&H=&view=table&shw=&D=tech
0005デフォルトの名無しさん
2006/04/14(金) 06:36:14http://pc8.2ch.net/test/read.cgi/gamedev/1016699230/
HSPでRPG
http://pc8.2ch.net/test/read.cgi/gamedev/1082902759/
HSPで出来る範囲について
http://pc8.2ch.net/test/read.cgi/gamedev/1085733089/
HSP - Hot Soup Processor [11]
http://pc8.2ch.net/test/read.cgi/gamedev/1133488968/
HSPでの麻雀プログラムについて
http://pc8.2ch.net/test/read.cgi/gamedev/1047707655/
HSPは・・・
http://pc8.2ch.net/test/read.cgi/gamedev/1104208959/
おまいらHSPで適当なゲームでもつくりませんか
http://pc8.2ch.net/test/read.cgi/gamedev/1102214621/
★ゲーム製作期待の星! HSP Part 9 ★
http://pc8.2ch.net/test/read.cgi/gamedev/1005313791/
HSPで完全オリのSLGを作るスレ
http://pc8.2ch.net/test/read.cgi/gamedev/1047478458/
HSPでSLGが作れるようになるまで頑張るスレ
http://pc8.2ch.net/test/read.cgi/gamedev/1103618349/
HSPでモンスター育成SLGを作りましょう!
http://pc8.2ch.net/test/read.cgi/gamedev/1089467139/
ネットゲームforHSP『無人島』制作スレ
http://pc8.2ch.net/test/read.cgi/gamedev/1018534410/
PGの面接で、使える言語はHSPですって言ったら
http://pc8.2ch.net/test/read.cgi/gamedev/1046921466/
HSPでシミュレーションRPG
http://pc8.2ch.net/test/read.cgi/gamedev/1036923414/
0006デフォルトの名無しさん
2006/04/14(金) 07:26:13?
0007デフォルトの名無しさん
2006/04/14(金) 07:52:180008デフォルトの名無しさん
2006/04/14(金) 08:05:57ここのソースをWin9Xで試した人いる?
ttp://lovecast.exblog.jp/2691227/
0009デフォルトの名無しさん
2006/04/14(金) 09:01:58乙
0010デフォルトの名無しさん
2006/04/14(金) 16:20:47ウィンドウハンドルを関数で渡す事は出来ますか?
現在ウィンドウハンドルをポインタで渡して使おうとしていますが
ウィンドウハンドルを使用する関数を実行しようとすると
エラーを出して終了されてしまいます
0011デフォルトの名無しさん
2006/04/14(金) 16:24:540012デフォルトの名無しさん
2006/04/14(金) 16:32:40>ウィンドウハンドルを関数で渡す事は出来ますか?
関数で渡すとは?関数に渡す事は出来るが。
>現在ウィンドウハンドルをポインタで渡して使おうとしていますが
>ウィンドウハンドルを使用する関数を実行しようとすると
>エラーを出して終了されてしまいます
君のプログラムが悪いんだろうね。
それ以上の事は分からん。
001310
2006/04/14(金) 16:40:03WinMein開始後に
void GethWnd(HWND* hWnd){p_hWnd=hWnd};と言う形の関数でHWNDを渡して
int MakeMessageWindow(LPCTSTR MessageText, LPCTSTR WindowText, UINT MessageForm)
{
return(MessageBox(*p_hWnd, MessageText, WindowText, MessageForm));
};
と言う関数を実行しようとしたのですが、この関数を実行後に終了されると言う事です
0014デフォルトの名無しさん
2006/04/14(金) 16:44:350015デフォルトの名無しさん
2006/04/14(金) 16:46:27GethWndに渡したポインタが指す先は、MakeMessageWindowが呼ばれるまで有効なんだろうな?
つーかわざわざポインタにする意味あるのか?
0016デフォルトの名無しさん
2006/04/14(金) 16:47:55001710
2006/04/14(金) 16:49:44ポインタにしたのは、メッセージウィンドウを良く使うので
すべてにhWndを渡すよりは良いと思ったからです
0018デフォルトの名無しさん
2006/04/14(金) 16:52:490019デフォルトの名無しさん
2006/04/14(金) 16:54:160020デフォルトの名無しさん
2006/04/14(金) 16:56:10その GethWnd() はどうやって呼んでいるの? という話。
(それ機能からするとSetHWnd()じゃないのかよ、というのは置いといて)
HWND hwnd2 = hwnd1;
とすると hwnd1 も hwnd2 も同じウィンドウを示せるというのは理解し
てないんだよね、きっと。
0021デフォルトの名無しさん
2006/04/14(金) 16:57:000022デフォルトの名無しさん
2006/04/14(金) 16:58:45間接参照する分ポインタの方が効率悪いんだけどね。管理も大変だし。
0023デフォルトの名無しさん
2006/04/14(金) 16:58:54それgetterじゃなくてsetterだな
>>17
ウィンドウハンドル(hWnd)は、ポインタではなく値だ
だから値として保持しろ
002410
2006/04/14(金) 17:10:02ポインタは試行錯誤していた時の名残です
GethWnd()は別にヘッダを作って、そこで宣言しています
hWndを広域で宣言していたので、GethWnd()はWinMein開始直後に実行しています
hWndを使うウィンドウはそれから作っています
0025デフォルトの名無しさん
2006/04/14(金) 17:15:49だから皆、値で渡せと言ってくれてるの。
二度もMeinじゃマジっぽいな。
0026デフォルトの名無しさん
2006/04/14(金) 17:16:42ほんとにまるまる全部だとアレだが
0027デフォルトの名無しさん
2006/04/14(金) 18:05:49002810
2006/04/14(金) 18:17:19親ウィンドウを設定しているにもかかわらず、WinMain以外のヘッダで宣言した関数が
MakeMessageWindowを呼び出した時に、新しいタスクとしてメッセージウィンドウが作られました
この場合はまたhWndを渡さなくてはならないのでしょうか?
0029デフォルトの名無しさん
2006/04/14(金) 18:20:14「タスク」ってなにさ…。
MakeMessageWindow()って関数を作ることで、余計理解できなくなってないか?
0030デフォルトの名無しさん
2006/04/14(金) 18:21:02何も見えない。
0031デフォルトの名無しさん
2006/04/14(金) 18:22:140032デフォルトの名無しさん
2006/04/14(金) 18:23:36003310
2006/04/14(金) 18:26:53タスクバーの中にメインとして作ったウィンドウの他に
メッセージボックスのウィンドウが作られました
WinMainの内でMakeMessageWindowを呼び出した時には作られなかったのですが
違うヘッダで宣言した関数だとウィンドウが作成されます
0034デフォルトの名無しさん
2006/04/14(金) 19:08:20p_hWndがNULLだからじゃねーの?
003510
2006/04/14(金) 19:31:23NULLになっていました
>>32
ttp://pc8.2ch.net/test/read.cgi/tech/1143601166/l50
がWIN32APIの質問OKでしたので、そちらに移らせていただきます。
お騒がせしてすいませんでした。
0036デフォルトの名無しさん
2006/04/14(金) 20:13:27質問なんですが、Windows付属のペイントソフトでブラシの太さ(堅さ?)を3段階で選べますよね?
あれをユーザが0から100の値で太さを選べるようにするにはどういうコードを書いたらいいんでしょうか?
0037デフォルトの名無しさん
2006/04/14(金) 20:22:39ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/pens_9wha.asp
0039デフォルトの名無しさん
2006/04/14(金) 21:42:27ウィルスを作成するプログラムが入ってたみたいで
OS再起動後、ログオン時にSysTree++を呼びにいくようなプログラムが発生して起動できない。
レジストリを前の状態に戻して再起動したらなんとかいけたけど・・・
SPY++ってC++に付属なんですよね?他にこれと同じような機能のものないですか?
他に落としたのはWinIDって奴でこれはマウス座標にあるウィンドウ内のコントロールを表示する物なんですけど
ツリー上に表示したり、ハンドル一覧のテキスト書き出しとかはできないんですよね
0040デフォルトの名無しさん
2006/04/14(金) 21:46:150042デフォルトの名無しさん
2006/04/15(土) 07:43:120043デフォルトの名無しさん
2006/04/15(土) 08:59:100044デフォルトの名無しさん
2006/04/15(土) 09:44:32GetObject()でLOGFONTを取得。
0045デフォルトの名無しさん
2006/04/15(土) 10:10:440046デフォルトの名無しさん
2006/04/15(土) 12:53:520047デフォルトの名無しさん
2006/04/15(土) 13:33:220048デフォルトの名無しさん
2006/04/15(土) 14:54:13フォントマッパーはlfFaceNameを無視する場合もある。
GetObject()は元となったlogfontを返す。
0050デフォルトの名無しさん
2006/04/15(土) 16:24:39入門書のサンプルコード通りに打ち込んだのですが。。。
コンパイルはできますが、実行すると、ポンッというエラー音がして
何も操作できません。
子ウィンドウの動作を確認するサンプルです。
どこがいけないんでしょう・・・。
ソース
ttp://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=27528
0051デフォルトの名無しさん
2006/04/15(土) 16:30:400052デフォルトの名無しさん
2006/04/15(土) 16:46:34入門書の今までの章で作ったサンプルを雛形として使いまわしていたので、
メッセージだけ受け取ってreturn 0のみ行っている部分があったのですが
これがまずかったらしいです。
0053デフォルトの名無しさん
2006/04/15(土) 17:06:01呼び出し側が下記みたいになっていたときは
DLL側の関数の宣言はどんなふうにしたらいいのでしょうか?
__declspec(dllimport) int __stdcall test();
たとえば、
__declspec(dllexport) int __stdcall test();
と言うようなふうにすると起動時に
「プロシージャエントリポイント test がDLLに見つからない」
と出てしまい、(「_test@20」と言う名称になっている)
__declspec(dllexport) int test();
と言うようなふうにするとDLLの関数を呼び出して戻ってきた時に
スタック位置が変わってると怒られてしまいます。
どこがいけないのでしょうか…
0054デフォルトの名無しさん
2006/04/15(土) 18:08:31DEFファイル作れ
0055デフォルトの名無しさん
2006/04/15(土) 18:09:21>「_test@20」と言う名称になっている
extern "C" は?
0056デフォルトの名無しさん
2006/04/15(土) 18:14:10もともと C でつくってるんじゃない?
あの例だと _test@0 だけど・・・。
005753
2006/04/15(土) 18:28:30DEFファイルを作ってみたところ無事に実行することが出来ました!
ずっと引っかかっていたので助かりました、ありがとうございました。
0058デフォルトの名無しさん
2006/04/15(土) 18:38:23extern "C"は関数名に引数や戻り値の型などの情報を含めない(マングリング抑制)
visual studioでexport関数の先頭に自動的にアンダースコアが付記されることとは別
0059デフォルトの名無しさん
2006/04/16(日) 02:16:050060デフォルトの名無しさん
2006/04/16(日) 02:32:160061デフォルトの名無しさん
2006/04/16(日) 02:50:21Windowsアプリケーションを作ろうと思っています。
詳しい内容は端折りますが
ttp://www.vector.co.jp/soft/win95/prog/se324535.html?y
と同じようなものを作りたいのです。
お聞きしたいことは
「Buttonコントロールなどをマウスで移動出来るようにしたい」
です。
私の考えでは、Buttonの上でのマウスダウン、アップを受取るのだと思うのですが
やり方がわかりません。
ご教授願お願いしますm(__)m]
環境はXP ProでVisualStudio.NET
0062デフォルトの名無しさん
2006/04/16(日) 06:29:440063デフォルトの名無しさん
2006/04/16(日) 07:38:18> Buttonの上でのマウスダウン、アップを受取る
サブクラス化で。
もしくは、ボタンに見えるものを描画するだけでいいなら
DrawFrameControl
を使う方法もある。
0064デフォルトの名無しさん
2006/04/16(日) 08:24:060065デフォルトの名無しさん
2006/04/16(日) 08:50:39マウスを押しながら動かしたら移動すればいいだけだな
0066デフォルトの名無しさん
2006/04/16(日) 11:37:55標準で機能が用意されているのに何故いちいち自分でやろうとする?
0067デフォルトの名無しさん
2006/04/16(日) 12:01:240068デフォルトの名無しさん
2006/04/16(日) 12:43:380069デフォルトの名無しさん
2006/04/16(日) 14:34:42007061
2006/04/16(日) 15:00:49しかもマウスの動きにあってない!!!
どこでミスしたかわかりません。
手本になるようなサイトはないでしょうか?
0071デフォルトの名無しさん
2006/04/16(日) 15:03:110072デフォルトの名無しさん
2006/04/16(日) 18:19:360073デフォルトの名無しさん
2006/04/16(日) 18:44:210074デフォルトの名無しさん
2006/04/16(日) 18:47:240075デフォルトの名無しさん
2006/04/16(日) 18:47:36したらWindowsがフリーズしますか?
それともアプリケーションがフリーズしますか?
0076デフォルトの名無しさん
2006/04/16(日) 18:52:010077デフォルトの名無しさん
2006/04/16(日) 19:16:20そんくらいやってみろカス
0078デフォルトの名無しさん
2006/04/16(日) 19:24:05日本語でおk
0079デフォルトの名無しさん
2006/04/16(日) 20:38:230080デフォルトの名無しさん
2006/04/16(日) 21:27:24var
drag : boolean;
x1, y1 : integer;
{$R *.dfm}
procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
pos:TPoint;
begin
drag := true;
pos.X := Button1.Left;
pos.Y := Button1.Top;
Windows.ClientToScreen(Form1.WindowHandle,pos);
x1 := Mouse.CursorPos.X-pos.X;
y1 := Mouse.CursorPos.Y-pos.Y;
end;
0081デフォルトの名無しさん
2006/04/16(日) 21:28:17Shift: TShiftState; X, Y: Integer);
begin
drag := false;
end;
procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if drag then
begin
Button1.Left := Mouse.CursorPos.X-Form1.Left-x1;
Button1.Top := Mouse.CursorPos.Y-Form1.Top-y1;
Button1.Caption := IntToStr(Button1.Left)+','+IntToStr(Button1.Top);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.BorderStyle := bsNone;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Form1.Close;
end;
end.
0082デフォルトの名無しさん
2006/04/16(日) 21:29:480083デフォルトの名無しさん
2006/04/16(日) 23:36:170084デフォルトの名無しさん
2006/04/17(月) 00:28:12なんちて
0085デフォルトの名無しさん
2006/04/17(月) 06:34:420086デフォルトの名無しさん
2006/04/17(月) 14:03:58もしくはkeybd_event以外の代案をいただけると助かります。
ちなみに、送り先はコマンドプロンプトです。
英数、マイナス、ピリオドなどはできたのですが、'_'だけが送れずに困っています。
0087デフォルトの名無しさん
2006/04/17(月) 14:46:390088デフォルトの名無しさん
2006/04/17(月) 15:09:10できました!
'_'の場合にkeybd_eventでVK_OEM_102を送るだけでは駄目でしたが('\'が出る)、
事前にVK_SHIFTを送ることで'_'を出すことができました。
ありがとうございました。本当に助かりました。
0089デフォルトの名無しさん
2006/04/17(月) 15:44:110090デフォルトの名無しさん
2006/04/17(月) 17:00:25スーパークラス化
という単語が出てきて混乱しています
とりあえずしらべてみたところ
・オブジェクト指向とは関係ないらしい
・既存のコントロールに機能を付け足す事ができる
何がちがうんでしょうか
0091デフォルトの名無しさん
2006/04/17(月) 17:11:21同じことを違う言葉で呼んだりするから
それだけじゃなんとも
0092デフォルトの名無しさん
2006/04/17(月) 17:14:52↑こういうのって2進数っていうんですかね?
どなたかご回答お願いします。
0093デフォルトの名無しさん
2006/04/17(月) 17:18:44http://pc8.2ch.net/test/read.cgi/tech/1100537740/
0094デフォルトの名無しさん
2006/04/17(月) 17:20:30マジレスすると16進
009590
2006/04/17(月) 17:20:46Windowsのコントロールについて
・既存の「クラス」に機能を追加する->スーパークラス化
・既存の「インスタンス」に機能を追加する->サブクラス化
て認識でいいんですかね
0096デフォルトの名無しさん
2006/04/17(月) 17:54:03たまに 0b01101001 のような 2進表記が言語レベルで欲しくなるときがある・・・
マクロで逃げてるけど
0097デフォルトの名無しさん
2006/04/17(月) 17:55:520098デフォルトの名無しさん
2006/04/17(月) 17:56:09サンクス
0099デフォルトの名無しさん
2006/04/17(月) 17:58:440100デフォルトの名無しさん
2006/04/17(月) 18:22:53HBITMAP HaikeiBmp; という宣言と
int HaikeiBmp; というint型でビットマップの宣言をする事は
どういう意味があるのでしょうか?
どなたか教えていただけないでしょうか<(_ _)>
0101デフォルトの名無しさん
2006/04/17(月) 18:26:16そうじゃなきゃ、後者は
・ウィンドウズのデータ型を死んでも使いたくないへそまがり。
・そもそもHBITMAPを格納する変数じゃ無い。
0102デフォルトの名無しさん
2006/04/17(月) 18:29:08変数名から無理矢理想像すると ImageList の index 用とかか。
0103デフォルトの名無しさん
2006/04/17(月) 18:31:45取り合えずたいして気にするような事では無かったのですね。
教えていただき、ありがとうございました<(_ _)>
0104デフォルトの名無しさん
2006/04/17(月) 19:29:07OleLoadPictureを使って画像を読み込んでいるのですが、
これでロードした画像の横幅と縦幅は、ピクセル単位ではないようです。
CDC::HIMETRICtoDPを使ってピクセル単位に直すようなのですが、
CDC::HIMETRICtoDPはMFCのためwindows.hをincludeしてやっている
今のプログラムと親和性がありません。
何かほかの方法で、ピクセル単位に変更することはできませんでしょうか?
OleLoadPicture関係はGoogleを使っても扱っているサイトが少なく、
扱っていてもMFCのため弱っています。
分かるかたいらっしゃいましたら、助言いただけると幸いです。
0105デフォルトの名無しさん
2006/04/17(月) 19:36:370106デフォルトの名無しさん
2006/04/17(月) 19:36:57# DC の MapMode で分岐してるのか。
# 意外とめんどくさそうだね
0107デフォルトの名無しさん
2006/04/17(月) 20:00:29正直GIFを読み込むのにOleLoadPictureを使っているのですが、
みなさんはGIFの読み込みはどうしていらっしゃるのでしょうか。
一応ネット上でGIF読み込みルーチンが公開されていたので、それで実装してもよいのですが、
可能ならばAPIなどで済ませたいものです。
(逆にAPIですまないから、ルーチンが公開されているのかもしれないですが)
0108デフォルトの名無しさん
2006/04/17(月) 20:08:470109デフォルトの名無しさん
2006/04/17(月) 20:27:39ワードマクロから自作アプリ(C#)にSendMessageをする方法を教えて下さい。
自作マクロ側には、既に下のように書きました。
即ち、フォームインスタンスにWndProcをoverrideして
Debug.WriteLine(m.Msg.ToString());を記述しました。
これにより、フォームのタイトルバーでマウスを動かすと、
WN_MouseMoveとかがたくさん表示されるようになりました。
一方、WordVBA側に何を記載すればよいのか
なかなか検討がつきません。
今は、
ttp://www.geocities.co.jp/SiliconValley/4805/vbtips/vbtips096.htm
を参考にしながら、がんばってますが、
Call SendMessage(hWndTo, WM_COPYDATA, Me.hwnd, sdtCOPYDATASTRUCT)
のMe.hwndでエラーが出てしまいます。
ワードVBA側には、何を記述すればよいのでしょうか。
このURLに記載されている通りにやっては、なぜうまくいかないのでしょうか。
お忙しい中、申し訳ないですが、宜し<お願いします…。
0110デフォルトの名無しさん
2006/04/17(月) 20:51:520111デフォルトの名無しさん
2006/04/17(月) 20:55:24プロセス越しのデータ複写機構がうまく機能できるのかな?
0112109
2006/04/17(月) 21:07:53>hWndTo = FindWindow(vbNullString, "受信フォーム")
これの"受信フォーム"という記載を、自作アプリのフォームの
タイトルバーに設定した文字列に置き換えれば・・・いいのですね!?
0113デフォルトの名無しさん
2006/04/18(火) 09:46:37設定できますが、全てのアプリ(デスクトップ上)の
カーソルを表示/非表示した場合はどうすれば
良いのでしょうか?
0114デフォルトの名無しさん
2006/04/18(火) 10:24:38仮想メモリの中身が見たいのですが、どこから手をつければいいか
あまりにも分かりません。Win32APIの力で何とかならないでしょうか?
特定のアドレスの値を監視したいのです。
0115デフォルトの名無しさん
2006/04/18(火) 10:35:480116デフォルトの名無しさん
2006/04/18(火) 10:37:20ああっありがとうございます!
ちょっと避け気味だったAPIですが、実はすごいですね。
0117デフォルトの名無しさん
2006/04/18(火) 10:43:080118デフォルトの名無しさん
2006/04/18(火) 11:32:16>カーソルを表示/非表示した場合はどうすれば
>良いのでしょうか?
別に何もしなくていいのでは? 或いは好きなことをすればいいのでは?
何のためにカーソルを表示/非表示したのか知りませんが。
0119デフォルトの名無しさん
2006/04/18(火) 15:53:07fnSubProc = (WNDPROC)SetWindowLong(hWnd,GWL_WNDPROC,(LONG)SubProc)
としたらfnSubProcには元のウィンドウプロシージャが入りますよね。
そのとき、Button1とButton2とEdit1で上の式、
fnSubProc = (WNDPROC)SetWindowLong(hWnd,GWL_WNDPROC,(LONG)SubProc)
をしたとき、fnSubProcに入る値はButton1とButton2が同じでした・・・
ということはもしかしてなんですが
fnSubProcに入る値は基本的にクラスによって決まるということなのでしょうか?
0120デフォルトの名無しさん
2006/04/18(火) 15:59:350121デフォルトの名無しさん
2006/04/18(火) 16:05:410122デフォルトの名無しさん
2006/04/18(火) 16:36:34そうだ。
0123デフォルトの名無しさん
2006/04/18(火) 16:37:39相手の手を叩け
0124デフォルトの名無しさん
2006/04/18(火) 16:49:230125デフォルトの名無しさん
2006/04/18(火) 20:47:35May the Focus be with you.
0127デフォルトの名無しさん
2006/04/18(火) 21:18:130128デフォルトの名無しさん
NGNG古いOSならSetSysModalWindowが効くかも知れない。
今同じようなことをやるならSetCaptureとLockSetForegroundWindowかなぁ。
システムホットキーって止められたっけ?
0129126
2006/04/18(火) 23:37:20別のクラスのウィンドウに、同じプロシージャを使う方法ってありますか?
もちろん「プロシージャの内容は共通して使えるものに限る」としてです。
0130デフォルトの名無しさん
2006/04/18(火) 23:41:170131デフォルトの名無しさん
2006/04/18(火) 23:44:19その前提が成り立つことがほぼありえない。
0132129
2006/04/18(火) 23:46:35たとえば、BUTTONとEDITを共通のサブプロシージャを使うということです。
サブプロシージャのreturn CallWindowProc()のところさえいじくれば出来そうな気がするんですけど・・・
0134デフォルトの名無しさん
2006/04/18(火) 23:52:06君には無理だけど。
0135129
2006/04/18(火) 23:55:43すいません。
確かにこんなことしても勉強にもなりませんよね。。。
ちょっとサブプロシージャ複数作るのめんどくさいなぁって考えちゃいました
0136デフォルトの名無しさん
2006/04/19(水) 11:48:34どうしたら良いのでしょうか。TIME_ZONE_INFORMATION のメンバを自分で
設定しなければならないんでしょうか。。調べたのですが良い方法が見つかり
ませんでした。
0137デフォルトの名無しさん
2006/04/19(水) 15:05:280138デフォルトの名無しさん
2006/04/19(水) 15:39:58VC++で動的に呼び出す方法はあるますか?
0139デフォルトの名無しさん
2006/04/19(水) 15:53:290140デフォルトの名無しさん
2006/04/19(水) 16:47:14STYLE = WS_SYSMENU
の時のウィンドウのボーダーって
#define BorderWidth (GetSystemMetrics( SM_CXFIXEDFRAME ) * 2)
#define BorderHeight ((GetSystemMetrics( SM_CYFIXEDFRAME ) * 2) + GetSystemMetrics( SM_CYCAPTION ))
これで十分なんでしょうか
0141140
2006/04/19(水) 16:48:38EXSTYLE = NULL
STYLE = WS_SYSMENU
の時のウィンドウのボーダー幅を求めるのは
#define BorderWidth (GetSystemMetrics( SM_CXFIXEDFRAME ) * 2)
#define BorderHeight ((GetSystemMetrics( SM_CYFIXEDFRAME ) * 2) + GetSystemMetrics( SM_CYCAPTION ))
// 640 + BorderWidth
// 480 + BorderHeight
これで十分なんでしょうか
0142デフォルトの名無しさん
2006/04/19(水) 16:51:59protected override void WndProc(ref Message m)
{
if (!flgDrnWndProc)
{
flgDrnWndProc = true;
const int WM_COMMAND = 0x0111;
switch (m.Msg)
{
case WM_COMMAND:
switch (m.WParam.ToInt32())
{
case 1:
search_unit();
break;
case 2:
search_end();
break;
case 3:
search_reverse();
break;
case 4:
add_unit();
break;
default:
break;
0143142
2006/04/19(水) 16:53:57}
break;
default:
break;
}
}
base.WndProc(ref m);
flgDrnWndProc = false;
}
WndProc内で呼び出したメソッドの処理が終わるまで、
WndProc内の他の処理(base.WndProc(ref m);を除く。)が絶対に処理されないように、
上記のように書いてみたのですが、例えばsearch_unit();が処理されている途中でも、
case1に対応するメッセージが飛んでくると、重ねてsearch_unit();が実行されてしまいます。
なぜでしょうか・・・(低レメルな質問ですみません・・・)
0144デフォルトの名無しさん
2006/04/19(水) 17:24:15不可ならDirect3DとかいいからDirectDrawを復活させて欲しいなぁ
0145デフォルトの名無しさん
2006/04/19(水) 17:40:39心配なら AdjustWindowRect で確認
0146デフォルトの名無しさん
2006/04/19(水) 17:43:07単にキャストすればよかったんですね。
ありがとうございました。
0147141
2006/04/19(水) 17:44:05そんな便利なものがあったのかorz
サンクス
0148デフォルトの名無しさん
2006/04/19(水) 18:08:49ifブロックの中に最後の1行を入れてないからじゃないか?
それだと、trueになってから最初にWinProcが呼ばれたときにはifブロック内は実行されないけど、
必ずfalseに設定されて、次に呼ばれたときにifブロック内を実行してしまうよ。
0149デフォルトの名無しさん
2006/04/19(水) 18:15:33スマソ
0150デフォルトの名無しさん
2006/04/19(水) 18:52:380151129
2006/04/19(水) 19:23:03BUTTON1のサブプロシージャを、
case WM_LBUTTONDOWN:
SendMessage(hWnd, WM_SYSCOMMAND, SC_MOVE+2, 0);
break;
としました。
そしたら一応動くことには動くのですが、
それをした後にBUTTON2を押したのですが反応がありませんでした。
ですのでもう一度おしたら反応しました。
ずっとこの調子です。
これはなにが原因なんでしょうか?
あと、WM_LBUTTONUPに何かをつけるべきなのでしょうか?
0152デフォルトの名無しさん
2006/04/19(水) 19:24:220153デフォルトの名無しさん
2006/04/19(水) 19:30:46WS_CHILD をON/OFFすれば出来ることは出来ると思う(藁
0154151
2006/04/19(水) 19:42:08書き忘れがありました。
case WM_LBUTTONDOWN:
ReleaseCapture();
SendMessage(hWnd, WM_SYSCOMMAND, SC_MOVE+2, 0);
break;
0155141
2006/04/19(水) 21:01:44?
151 のことですか
0156142
2006/04/19(水) 22:24:09おっしゃる通り!まじさんくすこ!!
0157デフォルトの名無しさん
2006/04/19(水) 22:28:15最後にBitBltで裏画面から表(ウィンドウ)に画像を転送しているのですが、
なんとなく非効率的だと思い、DirectXを彷彿とさせる擬似フリップ機能を作ろうとしています。
ですが、何度やっても表に出てきません。
理由または原因、出来れば解決方法を教授してください。
// 非効率的?
BitBlt( hdc, 0, 0, 320, 240, hdcFlip, 0, 0, SRCCOPY );
// 擬似フリップ
hbmpFlipTmp = (HBITMAP)SelectObject( hdcFlip, hdc );
SelectObject( hdc, hbmpFlipTmp );
0158デフォルトの名無しさん
2006/04/19(水) 22:33:040159デフォルトの名無しさん
2006/04/19(水) 22:36:010160デフォルトの名無しさん
2006/04/19(水) 22:39:35即レスありがとうございます。
無理なんですか。
ちょっと希望を抱いていたのですが。
メモリDCじゃないとSelectObject出来ないんですか。
初めて知りました。
BitBltで頑張ります。
ありがとうございました。
0161デフォルトの名無しさん
2006/04/19(水) 22:42:350162デフォルトの名無しさん
2006/04/19(水) 22:49:49なんとなく非効率的だから改善しようという心がけが非効率的。
非効率で困るのなら、きちんとどこが非効率だか調べて、そこを重点的に効率化しなさい。
0163デフォルトの名無しさん
2006/04/19(水) 23:13:13Windows のサービスで回復タブに指定した内容で
動作させるにはどんなプログラミングを行えばいいの?
回復タブの設定ってどんな仕組みで動作するの?
0164デフォルトの名無しさん
2006/04/20(木) 01:04:18CreateServiceの引数で指定できない?
0165デフォルトの名無しさん
2006/04/20(木) 10:13:530166デフォルトの名無しさん
2006/04/20(木) 10:51:422D描画程度なら変換済み頂点使えばすぐだしスプライトもある
その程度の事にライブラリ求める程度の脳しかないならプログラミングなんか止めちまえ
0167デフォルトの名無しさん
2006/04/20(木) 11:57:000168デフォルトの名無しさん
2006/04/20(木) 13:30:580169きっと166は独りで仕事しているんだろうなぁ
2006/04/20(木) 13:49:142D用に特化されたライブラリがあって使い勝手が悪くないなら使わなくもない。
#つーか、全ての部下が漏れ並みの脳を持っているわけではないしね。
0170デフォルトの名無しさん
2006/04/20(木) 14:06:160172デフォルトの名無しさん
2006/04/20(木) 14:29:100173デフォルトの名無しさん
2006/04/20(木) 15:26:490174デフォルトの名無しさん
2006/04/20(木) 15:49:34そのDOS窓に、文字列を書き出したいので、
AttachConsole()
WriteConsole()
などを使う方法で出力することはできたのですが、
書き終わった後に、DOS窓のコマンドプロンプトが表示されません。
手でENTERキーを押すと、無事にコマンドプロンプトが出るのですが、
WriteConsole()で書き終わった後に、自動的にコマンドプロンプト
を出す方法がありましたら教えて下さい。
0175デフォルトの名無しさん
2006/04/20(木) 15:53:050176デフォルトの名無しさん
2006/04/20(木) 15:54:31アタッチがあるなら、デアタッチがありそうな気がするのはオレだけか?
と言うか、まずはググってみたらどうだ?
0177デフォルトの名無しさん
2006/04/20(木) 16:00:14ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/console_functions.asp
0178デフォルトの名無しさん
2006/04/20(木) 16:00:57デアタッチ の検索結果 約 17 件中 1 - 8 件目
0179デフォルトの名無しさん
NGNG"dare touch" の検索結果 約 151,000 件中 1 - 10 件目 (0.31 秒)
0180176
2006/04/20(木) 16:11:37# 英語力が無いから困る…orz
0181デフォルトの名無しさん
2006/04/20(木) 16:27:10英語云々以前に、そのままカタカナ語として使われてるだろ
>>176はデバッガ触ったことすら無いのか?
0182デフォルトの名無しさん
2006/04/20(木) 17:09:350183デフォルトの名無しさん
2006/04/20(木) 18:49:16いいじゃんか そうじゃんか
うひょうひょ〜
クライマ〜ックス♪
0184デフォルトの名無しさん
2006/04/20(木) 19:46:060185デフォルトの名無しさん
2006/04/20(木) 20:08:55物理メモリが2G乗っているWindowsXP Proで
タスクマネージャーの利用可能メモリが1.5Gとあるにもかかわらず
HeapAllocやGlobalAllocでは
合計1.2G分のメモリを確保できませんでした
大容量のメモリを使うときの作法がなにかあるんでしたら教えてください。
よろしくお願いします。
0186デフォルトの名無しさん
2006/04/20(木) 20:12:21VirtualAllocEx()
0187デフォルトの名無しさん
2006/04/20(木) 20:38:4232bit Windowsで1.2Gもの連続領域が確保できるだけで十分幸せだと思いねえ
0188デフォルトの名無しさん
2006/04/20(木) 20:39:330189デフォルトの名無しさん
2006/04/20(木) 21:23:55>>185は確保できなかったと言ってるのでは
0190デフォルトの名無しさん
2006/04/20(木) 23:07:220191デフォルトの名無しさん
2006/04/21(金) 00:25:32Win32アプリケーションのメモリ空間は4GB。
デフォルトではその内2GBがシステムで予約されてて、ユーザーアプリが使えるのが2GB。
一度に確保しようとすると、断片化等を考えるとそれくらいが妥当な線ではないかな?
0192デフォルトの名無しさん
2006/04/21(金) 10:54:22600MB のブロックが2個かも試練し、1MB のメモリブロック 1200 コかも試練。
巨大ブロックなら断片化かも試練が、HeapAlloc で数千個のブロックを alloc
してたりするなら、0.3GB分くらい消費してるかも試練。
paging境界のpaddingも気になる。
0193デフォルトの名無しさん
2006/04/21(金) 11:14:420194デフォルトの名無しさん
2006/04/21(金) 11:16:020195デフォルトの名無しさん
2006/04/21(金) 13:53:40通信料も無料でと言ってるんではなかろうか
0196デフォルトの名無しさん
2006/04/21(金) 13:55:33500MB程度のブロックを2つと100MB程度のブロックを2つです。
VirtualAllocも試してみましたがだめでした。
0197デフォルトの名無しさん
2006/04/21(金) 14:17:10利用料も無料にしたいなら
・他人の家でやる
0198デフォルトの名無しさん
2006/04/21(金) 14:45:090199デフォルトの名無しさん
2006/04/21(金) 14:51:350200デフォルトの名無しさん
2006/04/21(金) 15:19:01これで数時間、余裕で潰せる俺に、窓際なんて怖くない。
>>196
そのメモリ確保前に、どれくらい「自アプリで」メモリ使っている?
0201デフォルトの名無しさん
2006/04/21(金) 15:59:19タスクマネージャーのPF使用量は
起動前221MB 起動直後224MB メモリ確保直前225MB
となっていますので
5MB前後だと思われます。
0202デフォルトの名無しさん
2006/04/21(金) 16:01:220204デフォルトの名無しさん
2006/04/21(金) 19:47:230205デフォルトの名無しさん
2006/04/21(金) 23:39:51ウィンドウの左端に「あるもの」にカーソルを合わせたら出てくるメニューってどう作るのですか?
「あるもの」とはVisualstudio.Netとかの「ツールボックス」とかのあれです。
わからなかったらすみません
0206デフォルトの名無しさん
2006/04/21(金) 23:41:290207デフォルトの名無しさん
2006/04/22(土) 00:21:54ttp://www.viksoe.dk/code/xpui.htm
0208デフォルトの名無しさん
2006/04/22(土) 00:51:39さっぱりわかりません。
確かに自分がいったものに間違いなさそうですが・・・
ですので左側に固定のものにしようと思います。
教えてくれてありがとうございます。
0209デフォルトの名無しさん
2006/04/22(土) 07:52:30SetWindowsHookExでWH_KEYBOARDを監視するとして、何かキーが押されたらコールバックが発生しますが
コールバック元を特定するにはどうしたら良いのでしょうか?
フォーカスの当たっているウィンドウ?コントローラ?を探す感じでしょうか?
0210209
2006/04/22(土) 07:59:19↑のはグローバルフックの場合です。
0211デフォルトの名無しさん
2006/04/22(土) 11:25:27変換候補を取得する時、CANDIDATELIST 構造体を使うわけだが
CANDIDATELIST 構造体の定義
----------
typedef struct tagCANDIDATELIST {
DWORD dwSize;
DWORD dwStyle;
DWORD dwCount;
DWORD dwSelection;
DWORD dwPageStart;
DWORD dwPageSize;
DWORD dwOffset[1]; ←配列の要素は一つ
} CANDIDATELIST, *PCANDIDATELIST;
----------
dwOffset[] はこの構造体の先頭からのオフセット値で、
一つ目の文字列を取得するには 先頭アドレス+dwOffset[0] を参照する。
二つ目なら 先頭アドレス+dwOffset[1] を参照してくらしいけど、
dwOffset[]って、構造体の中の宣言ではdwOffset[1]として、要素は一つしか
宣言してないのに、サンプルプログラムとか見ると、普通にdwOffset[2]とかを
使ってる。どうして、配列違反にならないの?
0212デフォルトの名無しさん
2006/04/22(土) 11:28:24newとかで。
0213デフォルトの名無しさん
2006/04/22(土) 11:28:460214デフォルトの名無しさん
2006/04/22(土) 11:42:07ttp://www.kumei.ne.jp/c_lang/sdk3/sdk_282.htm
0215デフォルトの名無しさん
2006/04/22(土) 12:08:07お、すばやい回答サンクス。
ちょっと簡単な実験プログラム書いて実験してみて理解できた。
こんなやり方があるんですね。勉強になったよ。
0216デフォルトの名無しさん
2006/04/22(土) 12:25:53Alt+PrintScreenでクリップボードに取れるような
ウィンドウイメージを取得するのはどうすればいいでしょうか?
0217デフォルトの名無しさん
2006/04/22(土) 12:47:32何故その質問になるのかさっぱり意味が分からない。
0218デフォルトの名無しさん
2006/04/22(土) 12:49:030219デフォルトの名無しさん
2006/04/22(土) 12:49:250220デフォルトの名無しさん
2006/04/22(土) 12:55:01よくわからないので、できればそのことを確認できるキーワードか解説しているURLを教えてください。
0221デフォルトの名無しさん
2006/04/22(土) 13:03:250222デフォルトの名無しさん
2006/04/22(土) 13:29:48GetWindowDCでどうだ?
0223デフォルトの名無しさん
2006/04/22(土) 14:08:09例えば、HeapAlloc() に HEAP_GENERATE_EXCEPTIONS を指定したりします?
確かに便利だとは思うのですが、大きな罠が隠れているような気もします。
0224デフォルトの名無しさん
2006/04/22(土) 14:15:18こういうのってどうやって作るの?
0225デフォルトの名無しさん
2006/04/22(土) 14:16:350226デフォルトの名無しさん
2006/04/22(土) 14:45:14リストではなくその後ろの属性の値を入力できるもの全体です。
写真、ややこしいですねm(._.)m
0227デフォルトの名無しさん
2006/04/22(土) 14:48:25とりあえずalloca使うときはSEH使う。
0228デフォルトの名無しさん
2006/04/22(土) 15:13:20場所に応じて必用なコントロールを貼り付けてりだけ。
見たまんまだから別に悩むところでも疑問に思うところでもない。
0229デフォルトの名無しさん
2006/04/22(土) 15:19:010230デフォルトの名無しさん
2006/04/22(土) 15:31:150231デフォルトの名無しさん
2006/04/22(土) 15:35:19>Win32の先輩方
Win3.1とか?
0232デフォルトの名無しさん
2006/04/22(土) 15:35:220233デフォルトの名無しさん
2006/04/22(土) 15:36:00むしろOS/2
0235デフォルトの名無しさん
2006/04/22(土) 21:42:25GetCaretPos はキャレットを所有しているウィンドウのクライアント座標しか
返してくれません。キャレットを所有しているウィンドウのハンドルが
分かれば、ClientToScreen でスクリーン座標に変換できるのですが、
そのような関数が見当たりません。どなたか助けてください!
0236デフォルトの名無しさん
2006/04/22(土) 22:31:160237デフォルトの名無しさん
2006/04/22(土) 23:28:200238デフォルトの名無しさん
2006/04/23(日) 00:12:55WH_KEYBOARDを監視するとして、何かキーが押されたらコールバックが発生しますが
コールバック元を特定するにはどうしたら良いのでしょうか?
フォーカスの当たっているウィンドウ?コントロール?を探す感じでしょうか?
0239デフォルトの名無しさん
2006/04/23(日) 01:29:210240238
2006/04/23(日) 01:45:48元は、キーが押された時にフォーカスの当たっていたコントロールということです。
0241デフォルトの名無しさん
2006/04/23(日) 01:57:52Windowsプログラミング初心者です。
SetWindowsHookExでWH_KEYBOARDを監視するとして、何かキーが押されたらコールバックが発生しますが
コールバック元を特定するにはどうしたら良いのでしょうか?
フォーカスの当たっているウィンドウ?コントローラ?を探す感じでしょうか?
0242デフォルトの名無しさん
2006/04/23(日) 01:58:56>>236
0244238
2006/04/23(日) 02:27:36↓
GetWindowThreadProcessId
↓
GetGUIThreadInfo
をやって解決しそうです。お騒がせしました。
もしなんかもっとスマートなやり方があったら教えてください。
0245デフォルトの名無しさん
2006/04/23(日) 04:37:19やりとりするには、領域を確保してそのポインタを渡すような実装しかできないんでしょうか?
どっちかのスレッドがこけて解放できなくなるなんてことが普通に起きそうで怖いんですが…
0246245
2006/04/23(日) 05:35:180247デフォルトの名無しさん
2006/04/23(日) 05:38:520248デフォルトの名無しさん
2006/04/23(日) 10:17:12んなコード書くほうが悪いだろう。
0249デフォルトの名無しさん
2006/04/23(日) 10:24:25スレッドの強制終了はNG。
フラグ立ててきっちり終了処理してから死んでくれと頼むのが基本。
その上でそのスレッドが文字列の開放を出来ない理由があるなら
開放の責任をメインスレッドに委ねてしまえばいい。
なんにしても
>領域を確保してそのポインタを渡すような実装しかできないんでしょうか?
これ以外の実装はない。
0250デフォルトの名無しさん
2006/04/23(日) 10:42:360251デフォルトの名無しさん
2006/04/23(日) 10:49:190252デフォルトの名無しさん
2006/04/23(日) 11:33:39スレッド間で悩む必要なんてなかろうに。
0253デフォルトの名無しさん
2006/04/23(日) 19:12:450254デフォルトの名無しさん
2006/04/23(日) 19:16:530255デフォルトの名無しさん
2006/04/23(日) 19:17:310256デフォルトの名無しさん
2006/04/23(日) 19:18:44自分のなかのSDIの知識だけでしたらおかしくなったのでお願いします。
0257デフォルトの名無しさん
2006/04/23(日) 19:42:000258デフォルトの名無しさん
2006/04/23(日) 19:48:36参考になりそうなサイトを教えてください(^人^)
0259デフォルトの名無しさん
2006/04/23(日) 19:54:53http://www.google.co.jp/
0260デフォルトの名無しさん
2006/04/23(日) 19:57:310261デフォルトの名無しさん
2006/04/23(日) 19:57:390262デフォルトの名無しさん
2006/04/23(日) 20:23:450263デフォルトの名無しさん
2006/04/23(日) 20:42:57http://toolbar.yahoo.co.jp/
0264デフォルトの名無しさん
2006/04/23(日) 20:57:400265デフォルトの名無しさん
2006/04/23(日) 21:02:18パイプ
0266デフォルトの名無しさん
2006/04/23(日) 21:08:09CreateFile関数でファイル作成し、
SetFilePointer関数でlDistanceToMoveを0x7FFFFFFF,
dwMoveMethodをFILE_BEGINで実行。
んで、SetEndOfFile関数を使ったら、
連続した領域は確保できそうな気がする。
ただ、CloseHandle関数を実行する前に、
もう一度、SetFilePointer関数とSetEndOfFile関数を使わんと時間がかかるかも。
試してないけどね。
0267デフォルトの名無しさん
2006/04/23(日) 21:10:16まずはこっから
http://www.codeproject.com/atl/ietoolbartutorial.asp
0268デフォルトの名無しさん
2006/04/23(日) 22:10:42TrackPopupMenuでメニューを表示しているとき新たに別のサブメニューを表示しなおす場合、
今までのTrackPopupMenu内の処理から抜けなければならないのですがどうするといいでしょうか。
0269デフォルトの名無しさん
2006/04/23(日) 22:30:58超さんくすこ
0270デフォルトの名無しさん
2006/04/23(日) 22:42:59抜ければ良いんじゃないのかな
0271デフォルトの名無しさん
2006/04/23(日) 22:57:200272268
2006/04/24(月) 00:47:51どのようにして抜けたらいいのか分からないのです。。。
TrackPopupMenuがプログラム側に制御を戻す条件ということです。
0273268
2006/04/24(月) 01:22:060274271
2006/04/24(月) 02:03:03フレームウィンドウにツールバーを作っても、クライアントウィンドウが上に来て押せなくなります。
だからといってクライアントウィンドウに書いてもウィンドウプロシージャがないために処理が出来ない。
こういった場合はサブクラス化でしょうか?
0275デフォルトの名無しさん
2006/04/24(月) 02:09:290276271
2006/04/24(月) 02:23:45ということはフレームウィンドウにツールバーを置いてということですよね?
一回試したのですが駄目でした。。。
やり方が間違っているのでしょうか?
case WM_SIZE:
MoveWindow(hClient, 0, 100, LOWORD(lp),HIWORD(lp),TRUE);
SendMessage(hTool, WM_SIZE, wp, lp);
break;
0277デフォルトの名無しさん
2006/04/24(月) 03:31:03SendMessage(hTool, WM_SIZE, wp, lp);
RECT Rect;
GetClientRect(hTool,&Rect);
MoveWindow(hClient, 0,Rect.bottom,LOWORD(lp),HIWORD(lp)-Rect.bottom,TRUE);
break;
Cはよく分からないんだがこれだとどうなる?
0278デフォルトの名無しさん
2006/04/24(月) 06:08:260279デフォルトの名無しさん
2006/04/24(月) 10:56:01アクセスする方法があったら教えてください。
0280デフォルトの名無しさん
2006/04/24(月) 12:09:58GetCommStateで取得してパラメータを設定、SetCommStateで設定、
という手順で初期化してるんだけど、ボーレートを230400にしよう
とするとうまくいかない。
DCB構造体を使用している限り出来ない、ということは何となく理解
したけど、じゃあどうすればいいの?
0281デフォルトの名無しさん
2006/04/24(月) 12:15:40まずPCのシリアルポートがその転送速度サポートしてるのか?
普通は115kbpsあたりまでしかサポートしてないと思うが‥‥
0282デフォルトの名無しさん
2006/04/24(月) 12:18:20GetCommPropertiesで取れなきゃダメなんじゃね?
0283デフォルトの名無しさん
2006/04/24(月) 12:25:390284280
2006/04/24(月) 13:27:46>>281
デバイスマネージャから確認したところ、115200,230400,460800,921600を
ドライバ的にはサポートしているっぽい。
>>282
早速GetCommPropertiesを確認してみたところ、
commprop.dwSettableBaudの値は268435456でした。
わからん。。。
0285デフォルトの名無しさん
2006/04/24(月) 13:37:17見るべきは、dwMaxBaudの方じゃないか?
0286デフォルトの名無しさん
2006/04/24(月) 13:39:43あと、268435456 = 0x10000000 = BAUD_USERな
0287280
2006/04/24(月) 13:54:57失礼。まちがえてた。dwMaxBaudが268435456。
ちなみにdwSettableBaudは268856176でした。
>>286
なるほど。
つまりこの値ではサポートしているボーレートの上限はわからないのね。
0289デフォルトの名無しさん
2006/04/24(月) 14:10:39dwSettableBaudはBAUD_なんちゃらのorが入っている。
つまり、268856176だとBAUD_USERが設定可能でBAUD_57600、BAUD_115200...が設定可能と読む。
逆に例えばBAUD_128K、BAUD_56Kが設定できないとわかる。
まぁ、BAUD_USERでの上限はどうやっても判らん訳で。
0290デフォルトの名無しさん
2006/04/24(月) 15:35:370291デフォルトの名無しさん
2006/04/24(月) 16:31:120292デフォルトの名無しさん
2006/04/24(月) 17:20:13こっちでも同じ質問してるな
http://forums.belution.com/ja/vc/000/358/12.shtml
MDIでツールバーの使い方
0294デフォルトの名無しさん
2006/04/24(月) 18:25:33The Code Projectが一番勉強になる件
0295デフォルトの名無しさん
2006/04/24(月) 19:11:23どうするとつけることができますか?
0296デフォルトの名無しさん
2006/04/24(月) 21:20:30簡単なサンプルを書いてくれ。
0297288
2006/04/25(火) 01:28:16WM_SIZEの処理をしたあとにbreakをしていたのがまずかったです。
つまりその処理の後にデフォルトプロシージャの処理をしてしまっていました。
return 0;に直したら動きました。
0298デフォルトの名無しさん
2006/04/25(火) 06:36:18ttp://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdnnetmt/htm/netmtgcom.asp
0299デフォルトの名無しさん
2006/04/25(火) 10:48:00MSDN
http://www.microsoft.com/JAPAN/developer/library/jpwinpf/_win32_writefileex.htm
に
=======
関数が成功すると、0 以外の値が返ります。
=======
WriteFileEx 関数を使う場合、この関数が「成功」を示す値を返していても、それだけでは不十分です。GetLastError 関数を呼び出して、いくつかの条件が「成功」しているだけで、把握するべき他の条件がエラーになっていないかどうかをチェックしてください。=======
とあります。
ここでCreateFile,WriteFileEx,CloseHandleの一連の操作を行うテスト・プログラムにおいて,WriteFileExの戻り値が1になっています。処理は正しく行われています。
しかし,MSDNに関数が成功(0以外の値)のときだけでは不十分との記述があったので念のためGetLastErrorを呼び出すと値が6(ERROR_INVALID_HANDLE)でした。Closeが正常なのでハンドルが無効とは考えにくいです。
とすると関数が1(成功)返し,GetLastErrorがERROR_SUCESSを返さない場合はどう判断すればいいのでしょうか?
0300デフォルトの名無しさん
2006/04/25(火) 12:25:38GetLastError()は最後に発生したエラーのコードを返す。
6(ERROR_INVALID_HANDLE)のコードが、
WriteFileEx()の呼び出しで設定されたかどうかを判断すべき。
0301デフォルトの名無しさん
2006/04/25(火) 12:34:35GetLastError が ERROR_SUCCESS を返すこと確認するのではなく、
関数が 1 を返すが、アプリ側でさらに処理が必要なケース
(例えば ERROR_MORE_DATA ) について必要な処理を行うようにしてください。
関数が 1 を返し、GetLastError が ERROR_SUCCESS を返すのは、
書き込みが(なぜか)同期的に完了し、コンプリーションルーチンは呼ばれない
ということを示しています(これは0バイトの書き込み以外では珍しいケースです)。
これは成功というより例外的な結果で、アプリが期待しているようにコンプリーション
ルーチンが呼ばれないため、何か特別な対応をする必要が(たぶん)あるでしょう。
(自分で呼ぶとか)。
・・・「例えば」とありますが、ERROR_MORE_DATAとERROR_SUCCESSの2つ以外の
どんな値に対応する必要があるのかは謎です。たぶんこの2つだけでOKなのでしょう。
0302デフォルトの名無しさん
2006/04/25(火) 12:42:43WriteFileExって非同期で書き込みオーダーを出してるだけなんじゃね?
OVERLAPPEDがあるから、FDなど遅い媒体への書き込みとか試してみた?
0303デフォルトの名無しさん
2006/04/25(火) 12:43:43まずは、(Exのついていない)WriteFile()を使って非同期書き込みを行うプログラムを書いて見ることを強く勧める。
そうすれば、「WriteFileEx 関数を使う場合、この関数が「成功」を示す値を返していても、それだけでは不十分です。」
の意味が理解できると思う。
>>300のコメントにあるようにWriteFileExが非0を返したあとにGetLastErrorを呼んでも無意味。
GetOverlappedResultが0を返したとき、GetLastErrorを使う。
0304デフォルトの名無しさん
2006/04/25(火) 13:09:11>関数が 1 を返すが〜
戻り値の型がBOOLやbool値の関数の成否を確認する際は
TRUE/trueとの比較はせず、FALSE/falseと比較にしませう
0305デフォルトの名無しさん
2006/04/25(火) 14:19:07エクスプローラみたいなものを作っていて、縮小版表示アイコンを表示させたいです。
画像のサムネイル表示は出来ましたが、画像以外ファイルのアイコンで
エクスプローラで表示されているような
黒枠の中に小さいアイコンがぽつんとあるアイコンが取れません。
32*32のアイコンを引き伸ばして表示することは現在可能です。
IExtractImage, IExtractIcon, SHGetFileInfoなどつかいましたが同じ状況です。
開発環境はWin2000, VC++6.0です。
また、IExtractImageで取得・表示しているサムネイル画像ですが、
Win2000だと表示できるのに、WinXPだと表示できない画像がまれにあります。
IExtractImageで取得したBitmapをImageListに追加するときに
エラーが起こっているようです。XPでコンパイルしてもダメでした。
このような現象になったことがあるかたいらっしゃいませんか?
0306デフォルトの名無しさん
2006/04/25(火) 14:26:37GIF8ビット深さのファイルの(PixelFormat.Format8bppIndexed)
各ピクセルの色を表現するには、0〜255の数字によりますよね。
0が黒で、
1が__色で、
2が__色で、
・
・
・
GIF256色の一覧表って、どのサイトに掲載されているか
教えていただけませんか?かなり困ってます・・・くぅ〜
(探したのですが、僕の探し能力ではみつかりませんでした)
0307デフォルトの名無しさん
2006/04/25(火) 14:29:360308306
2006/04/25(火) 14:30:56いま、307がものすごくいいこといった!!
そこをもっと詳しく・・・(・д・)
0309デフォルトの名無しさん
2006/04/25(火) 14:32:28Image に Palette プロパティがあるだろ。
0310306
2006/04/25(火) 14:34:50どうして.Netだとすぐばれる・・・○rz
Bitmap bitmap1=new Bitmap(fs);
fs.close();
bitmap1.Palette・・・ほんとだ、それらしいのありました。
ってことは、ビットマップインスタンスを
ロックビットして、unsafeでバイト配列を観察していく
方法はだめだったのか・・・くぅ
0311デフォルトの名無しさん
2006/04/25(火) 14:35:340312306
2006/04/25(火) 14:36:44>>つーか、0が黒とは限らないし
いま、311がものすごくいいこといった!!!
>>311
>>そもそもry
306 :デフォルトの名無しさん :2006/04/25(火) 14:26:37
激しくスレ違いで、大変申し訳ないでつが、
0313306
2006/04/25(火) 14:40:211バイトごと順番に観察していくだけでは、
画像の中に赤いピクセルがあるかないか、それすらわからないのですか!!
くはっ今までの苦労はなんだったのか・・・
0314306
2006/04/25(火) 14:53:48これ、か・・・。くぅ。
0315デフォルトの名無しさん
2006/04/25(火) 15:01:090316306
2006/04/25(火) 15:09:57byte byBlack=255;
for (int i = 0; i < 256; i++)
{
//白を見つけたら、
if (bitmap1.Palette.Entries[i].R == 255 && bitmap1.Palette.Entries[i].G == 255 && bitmap1.Palette.Entries[i].B == 255)
{
byWhite = (byte)i;
break;
}
}
for (int i = 0; i < 256; i++)
{
//黒を見つけたら、
if (bitmap1.Palette.Entries[i].R == 0 && bitmap1.Palette.Entries[i].G == 0 && bitmap1.Palette.Entries[i].B == 0)
{
byBlack = (byte)i;
break;
}
}
if (byWhite == 255 || byBlack == 255)
{
return false;
}
ご迷惑おかけしました。
無事、解決することができましたことをご報告申し上げます。
皆さん、ありがとうございました。とても助かりました。
0317デフォルトの名無しさん
2006/04/25(火) 15:55:280318デフォルトの名無しさん
2006/04/25(火) 16:10:400319デフォルトの名無しさん
2006/04/25(火) 16:30:00デバッグ中に凍ったと思ったら、こんなの表示されたよ
0320デフォルトの名無しさん
2006/04/25(火) 16:47:04どなたかわかる方がいたらお願いします。
>319
ぐぐったらなんか出てきたけどこれとは違うの?
0321デフォルトの名無しさん
2006/04/25(火) 16:58:340322デフォルトの名無しさん
2006/04/25(火) 17:10:41>>300さん
はい。これは実験しました。で,結果ですがわすれちゃった(笑)。CreateFileの直後は0ですがWriteFileExの直後で6になっているのでWriteFileExで設定していると判断した記憶があります。
>>301さん
はい。どうもそれが正解のようです。ありがとうございました。
>>302さん
試していません。って言うか,実はWriteFileExとWriteFileの処理時間を比較していたのです。
>>303さん
WriteFileExとWriteFileの差を見ていたのですが,WriteFileで非同期の書き込みの実験はしていませんでした。意味はまだ理解できていませんが,おれ的には301さんの発言が正解のような気がしています。
GetOverlappedResult なんて関数があったんですね! WriteFileExばかり見ていたので気がつきませんでした(WriteFileExからはリンクがない)。でもWriteFileExで使えるとは書いてありません。要実験ですね。
http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_getoverlappedresult.htm
Win32APIって何でも実験なんだなぁ…。初心者にはきつい。
>>304さん
はい。そうですね。TUREとしては0以外と定義されているので1を返す関数と0xFFFFFFFFを返す関数があるようです。
0323デフォルトの名無しさん
2006/04/25(火) 17:45:56二つ目の項目は自己解決しました。
GetLocationのフラグにあったIEIFLAG_ORIGSIZEをはずしたらOKでした。
0324デフォルトの名無しさん
2006/04/25(火) 18:14:59しかし、WriteFileExで、
OVERLAPPED構造体のリンクが外してあるのはヒドイよな。
WriteFile→WriteFile(非同期)→WriteFileExの順でやらんとピンとこんかもね。
0325320
2006/04/25(火) 18:31:570326320
2006/04/25(火) 19:26:300327319
2006/04/25(火) 19:28:020328デフォルトの名無しさん
2006/04/25(火) 19:38:09どうでもいいけどパレットエントリ中に白があるからといって画像中に白がある保証はない罠。
0329デフォルトの名無しさん
2006/04/25(火) 19:45:16日本語のページを検索
0330デフォルトの名無しさん
2006/04/25(火) 20:19:41ttp://oshiete1.goo.ne.jp/kotaeru.php3?q=2113781
0331デフォルトの名無しさん
2006/04/25(火) 20:21:21お前が無能だからだな
0332デフォルトの名無しさん
2006/04/25(火) 20:28:08自分では一般的な処理だと思っててもAPIが用意されてなかったりする場合
大抵その処理自体をやる必要がなかったりする
(別のアプローチで最終的にやりたい事ができるソリューションがあるということ)
0333デフォルトの名無しさん
2006/04/25(火) 20:30:26GetWindow
とか
0334デフォルトの名無しさん
2006/04/25(火) 20:38:55ありがとうございます。
これなら出来そうです。
>>331
> お前が無能だからだな
確かに無能です。
ですのでどのようにしたらGetParentでの処理が出来たのか教えてください。
0335デフォルトの名無しさん
2006/04/25(火) 20:44:110336デフォルトの名無しさん
2006/04/25(火) 20:52:05そんなにめんどくさがらなくてもいいじゃないですかぁ!!!
0337デフォルトの名無しさん
2006/04/25(火) 22:26:070338デフォルトの名無しさん
2006/04/26(水) 03:37:01としています。しかしインデックスを毎回同じにしても、上書きされずに
下の行に追加されていきます。上書きはどうやればできるのでしょうか。
0339デフォルトの名無しさん
2006/04/26(水) 05:51:160340デフォルトの名無しさん
2006/04/26(水) 07:54:24メッセージが2つ以上来る行動があります。
その場合、1つ目のメッセージが終わった後、
2つ目のメッセージが来るのか、
2つのメッセージが同時、又は1つ目のが終わる前に、
2つ目のが来るのでしょうか。
0341デフォルトの名無しさん
2006/04/26(水) 08:07:24Insertだから意味的にはあってない?
>>340
キー離したときにもメッセージが来ない?
lKeyDataの30ビット目とか
0342340
2006/04/26(水) 08:13:30WM_KEYUPが来ると思います。
0343デフォルトの名無しさん
2006/04/26(水) 08:57:02> 2つのメッセージが同時
メッセージ『キュー』ってものを勉強し直せ
0344340
2006/04/26(水) 09:45:54基本的には同時じゃないみたいですね。
ただ、SendMessageを使うと、
前のメッセージを飛び越して終了するとかもあるみたいです。
0345デフォルトの名無しさん
2006/04/26(水) 09:55:000346デフォルトの名無しさん
2006/04/26(水) 12:35:45思わず、職場で、吹き出したー。
0347デフォルトの名無しさん
2006/04/26(水) 12:51:44SendMessage PostMessageその他関数の挙動について調べれば
試さなくてもわかるだろ
0348340
2006/04/26(水) 13:34:20ドスのに比べて、実態が掴みにくいというか。
コールバックやGetMessageのみに
来るメッセージがあったりしますし。
0349デフォルトの名無しさん
2006/04/26(水) 14:30:59猫のプログラムはVCで作成されたものみたいなのですが、VCがないのです。
ですので
Borlandで試していたら大体、リソーススクリプトのダイアログボックスで失敗します。
リソーススクリプトをどのように変更したら似たような動きになりますか?
同じフォルダにafxres.hを作ることはしました。
0350デフォルトの名無しさん
2006/04/26(水) 15:25:07「FONT 8, "MS Shell Dlg", 400, 0, 0x1」等を「FONT 8, "MS Shell Dlg"」のようにしてみれば?
0351デフォルトの名無しさん
2006/04/26(水) 15:54:37けど結果は特に変わりません。
==============================================
エラー内容
Borland Resource Compiler Version 5.40
Copyright (c) 1990, 1999 Inprise Corporation. All rights reserved.
Error dialog01.rc 81 25: Expecting BEGIN
==============================================
ソースの一部
MYDLG DIALOGEX 0, 0, 186, 90
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION |
WS_SYSMENU
CAPTION "オプション"
FONT 8, "MS Shell Dlg", "MS Shell Dlg" ←81行目
BEGIN
DEFPUSHBUTTON "OK",IDOK,7,69,50,14
PUSHBUTTON "CANCEL",IDCANCEL,129,69,50,14
LTEXT "ダイアログボックスです",IDC_STATIC,39,16,94,8
END
==============================================
0352351
2006/04/26(水) 15:56:10間違えてました。
FONT 8, "MS Shell Dlg"ですね、
0353351
2006/04/26(水) 15:58:46ありがとうございますm(_ _m)
あと一つ、
「FONT 8, "MS Shell Dlg", 400, 0, 0x1」
の「400, 0, 0x1」この部分はなんなのでしょうか?
0354デフォルトの名無しさん
2006/04/26(水) 16:24:480355354
2006/04/26(水) 16:26:200356デフォルトの名無しさん
2006/04/26(水) 16:34:410357デフォルトの名無しさん
2006/04/26(水) 16:39:540358355
2006/04/26(水) 17:02:57間違えました!!!
ていうか誤変換です。
訂正↓
クラス名とは"BUTTON"とか"EDIT"のことです。
0359デフォルトの名無しさん
2006/04/26(水) 17:05:370360358
2006/04/26(水) 17:26:530361デフォルトの名無しさん
2006/04/26(水) 17:36:08ワロタ
0362デフォルトの名無しさん
2006/04/26(水) 21:15:52そのようなAPIは存在しますか?
0363デフォルトの名無しさん
2006/04/26(水) 21:22:220364デフォルトの名無しさん
2006/04/26(水) 21:35:57妹と話していたら、
『きゅぅ』と『ふぃふぉ』の発音が新鮮に聞こえた件について。
忘れてくれ。
0365デフォルトの名無しさん
2006/04/26(水) 22:19:15VCタダなのに・・・
http://www.microsoft.com/japan/msdn/vstudio/express/
0366デフォルトの名無しさん
2006/04/26(水) 22:34:22EDITクラスを使ったほうが簡単に出来そうなかんじがしました。
実際のところ簡単になるのか教えてください。
0367デフォルトの名無しさん
2006/04/26(水) 22:37:220368デフォルトの名無しさん
2006/04/26(水) 22:37:30人に頼るくらいなら作らなくていいよ。
0369デフォルトの名無しさん
2006/04/26(水) 22:38:070370デフォルトの名無しさん
2006/04/26(水) 22:45:380371デフォルトの名無しさん
2006/04/26(水) 22:48:22むしろ、stringクラス
typedef std::basic_string<TCHAR> _tstring;
// 文字列のsFindをsReplaceの置き換える。
inline _tstring& Replace(_tstring& sExp, const _tstring sFind, const _tstring sReplace)
{
_tstring::size_type n = 0;
_tstring::size_type nCur = 0;
// Replace処理
while ((n = sExp.find(sFind, nCur)) != _tstring::npos){
sExp.replace(n, sFind.size(), sReplace);
nCur = n + sReplace.size();
}
return sExp;
}
詳しくは、ここじゃなくSTLかも
0372デフォルトの名無しさん
2006/04/26(水) 22:49:51リストボックスにデータをぶち込むやつがいた。
0373366
2006/04/26(水) 22:51:02char型配列か、mallocの領域確保しか出来ないし・・・
0374デフォルトの名無しさん
2006/04/26(水) 22:53:39>>366の言ってるEDITクラスってのはウィンドウクラスの事でいいんだよな?
0375デフォルトの名無しさん
2006/04/26(水) 22:53:430376デフォルトの名無しさん
2006/04/26(水) 22:53:540377デフォルトの名無しさん
2006/04/26(水) 22:58:08ファイル?
ファイル内の?
んでC言語?
0378デフォルトの名無しさん
2006/04/26(水) 23:06:28つC/C++の宿題を片付けます
http://pc8.2ch.net/test/read.cgi/tech/1143405137/
0379デフォルトの名無しさん
2006/04/26(水) 23:42:57mm→dot変換は
1mm*(縦解像度/25.4)
それとも
1*mm(横解像度/25.4)
どちらでしょうか?
0380デフォルトの名無しさん
2006/04/26(水) 23:47:02手元にそういうプリンタがあるなら、試すのが一番
0381デフォルトの名無しさん
2006/04/26(水) 23:59:26CreatePenする時だけマッピング変更する事って
可能なんでしょうか?
自分でやってみたけど上手く行きせんでした
0382デフォルトの名無しさん
2006/04/27(木) 00:25:09オープンに失敗したとします。
この時、ファイルを排他オープンしているプロセスの名前やプロセスIDを取得する方法は
あるんでしょうか?
0383デフォルトの名無しさん
2006/04/27(木) 01:41:55お願いします。
0384デフォルトの名無しさん
2006/04/27(木) 06:19:25SendMessage
0385デフォルトの名無しさん
2006/04/27(木) 08:17:26ジオメトリックペンは座標変換によって幅が変わったと思う。
CreatePenでnWidth=0なら、座標変換に左右されなかったような・・・
0386デフォルトの名無しさん
2006/04/27(木) 11:57:26あります。
0387デフォルトの名無しさん
2006/04/27(木) 12:52:44どのような関数、又は組み合わせで作るのでしょうか
0388デフォルトの名無しさん
2006/04/27(木) 12:53:330389デフォルトの名無しさん
2006/04/27(木) 12:55:11FontSizeとFontは、SendMessageでなにを送ったらいいのですか?
0390デフォルトの名無しさん
2006/04/27(木) 12:56:140391デフォルトの名無しさん
2006/04/27(木) 13:05:060392デフォルトの名無しさん
NGNGSH系APIが無かった頃ファイル一覧を取るためだけに不可視リストボックス作ってた俺が来ましたよ。
0394デフォルトの名無しさん
2006/04/27(木) 13:18:52これでしょうか?
SendMessage(hWnd,WM_GETFONT,0,0);ではNULLAが返ってきました
0395デフォルトの名無しさん
2006/04/27(木) 13:20:320396デフォルトの名無しさん
2006/04/27(木) 13:27:370397デフォルトの名無しさん
2006/04/27(木) 13:44:120398デフォルトの名無しさん
2006/04/27(木) 13:49:480399デフォルトの名無しさん
2006/04/27(木) 14:01:140400デフォルトの名無しさん
2006/04/27(木) 14:28:010401デフォルトの名無しさん
2006/04/27(木) 15:29:27やり方は、CreateWindowで作るWindowサイズをそのまま当てはめていくというかんじでした。
まぁ、つまり以前作っていたウィンドウと同じ形のダイアログを作ろうとしたというわけです。
そしたら思っていた形より大きくなりました(1.4倍ぐらい?)
どうしたら形が同じようになるの?
0402デフォルトの名無しさん
2006/04/27(木) 15:32:580403デフォルトの名無しさん
2006/04/27(木) 15:36:070404デフォルトの名無しさん
2006/04/27(木) 16:02:50ここで勉強
ttp://ikb.minidns.net/programming/WIN32DesignUnits.html
0405デフォルトの名無しさん
2006/04/27(木) 16:11:10ソース見たらなんかそれっぽいこと書いてる。
なにこれ?
0406デフォルトの名無しさん
2006/04/27(木) 16:28:39フォント幅の4/1=x座標の単位
フォント幅の8/1=y座標の単位
とありました。
ですがピクセル単位でしていたものをダイアログユニットの単位に変換する方法がわかりません。
ピクセル単位/(フォント幅/4)=ダイアログユニットによる座標
かと思いましたが違いました。
フォント幅をどうにかするのでしょうか?
それとも計算式自体が間違っていますか?
すみません、本当は私パソコン自体が初心者なんです。
ですのでお願いします。
0407デフォルトの名無しさん
2006/04/27(木) 16:31:31GetDialogBaseUnitsをMSDNでしらべれ
0408デフォルトの名無しさん
2006/04/27(木) 16:46:24以下のように実装してます。
UpdateLayeredWindow( hwnd, hdcScreen, &pos, &szWindow, hdcMemory,&ptSrc, 0, &bf, ULW_ALPHA );
hwndで指定する、ウインドウハンドルをダミーのウインドウを作って指定していますが、
自分自身のウインドウハンドル(m_hWnd)を指定する事は可能でしょうか?
実際にやってみて、正しく動作しなかったんですが、実装ミスかもしれないと思い、本当のところはどうなのかと思いまして。
如何でしょう?
0409デフォルトの名無しさん
2006/04/27(木) 18:07:24>ですのでお願いします。
本当にそうなら随分と達者だな。
駄菓子菓子、それを言い訳にするくらいならプログラミングなんて止めて置け。
0410デフォルトの名無しさん
2006/04/27(木) 18:48:19中華料理店の料理長か?
ヤベェ・・・なんか背筋がゾクっとした (((((((( ;゚Д゚)))))))
0411デフォルトの名無しさん
2006/04/27(木) 19:41:080412デフォルトの名無しさん
2006/04/27(木) 21:03:28エラーが出てしまいました
Typing.obj : error LNK2019: 未解決の外部シンボル __imp__timeGetSystemTime@8 が関数 _WndProc@16 で参照されました。
Typing.obj : error LNK2019: 未解決の外部シンボル _TypeStart が関数 _WndProc@16 で参照されました。しまいました。
VC\VCProjectDefaults\corewin_express.vspropsは
AdditionalDependencies="kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib" />と
してるのですが、どのlibが足りないもしくは不要なのでしょうか
どなたか教えてください
0413デフォルトの名無しさん
2006/04/27(木) 21:28:59#include <mmsystem.h>
#pragma comment(lib, "winmm.lib")
0414387
2006/04/27(木) 22:04:20確かにCreateWindowのシステムクラスをSCROLLBARにするとバーは作れるのですが
Sliderコントロールのような物を作りたいのですが、SCROLLBARで色々やってみたのですが無理な感じです・・
どのような方法で作成するのでしょうか・・
0415デフォルトの名無しさん
2006/04/27(木) 22:11:160416デフォルトの名無しさん
2006/04/27(木) 22:11:54InitCommonCtontrolsEx しといてから TRACKBAR_CLASS で作る。
ttp://www.kumei.ne.jp/c_lang/sdk2/sdk_190.htm
0417412
2006/04/27(木) 23:20:22#include <mmsystem.h>
#pragma comment(lib, "winmm.lib")
で__imp__timeGetSystemTime@8は解消されました
ただ、まだ以下のエラーがでるのですが
Typing.obj : error LNK2019: 未解決の外部シンボル _TypeStart が関数 _WndProc@16 で参照されました。しまいました。
そもそもTypeStart(HWND)という関数は存在するのでしょうか
猫の本見ながら打ってるのですが、ソースにTypeStartを宣言は
しているんですが、そのTypeStart関数の定義がどこにもなく
また別のlibにあるのかと想像しているのですがどこにあるのかがわかりません
なんども申し訳ないですが、教えてください。お願いします。
0418デフォルトの名無しさん
2006/04/27(木) 23:37:05"key01.cpp"
0419387
2006/04/28(金) 00:11:35参考URLを見ながらやってみたところ出来ました
ありがとうございました
>>415
CreateWindowExのコモンコントールを使うんですね
416さんのレスでやっとわかりました・・ありがとうございました
0420デフォルトの名無しさん
2006/04/28(金) 00:21:360421デフォルトの名無しさん
2006/04/28(金) 00:26:30い・・いたい・・・
ひい・・・やめて!!それいじょうは・・・
ひぎいいいい
0422デフォルトの名無しさん
2006/04/28(金) 01:05:40|д゚)・・・
( ゚д゚)ノ なるほど!先生!WM_XBUTTON〜ですね!ありがとうございます!
っつーかなんでこれググっても35件くらいしかヒットしないのかと
全然見つからんかったよ
0423デフォルトの名無しさん
2006/04/28(金) 01:32:070424デフォルトの名無しさん
2006/04/28(金) 02:19:540425デフォルトの名無しさん
2006/04/28(金) 03:23:250427デフォルトの名無しさん
2006/04/28(金) 12:28:000428デフォルトの名無しさん
2006/04/28(金) 12:28:44チャック・・・
スマソ、チェックでそorz
0429デフォルトの名無しさん
2006/04/28(金) 12:31:07CheckD(ry
0430デフォルトの名無しさん
2006/04/28(金) 12:34:42下の方にリンクあるやん
0431427
2006/04/28(金) 12:44:500432デフォルトの名無しさん
2006/04/28(金) 15:23:03GetClientRectってウィンドウの大きさしか返さないじゃないですか。
GetWindowRectはスクリーン座標の左上、右下ですよね。
ということは親ウィンドウの中のボタンを、
親ウィンドウを元にしたクライアント座標で求めるには
GetWindowRectをしてScreenToClientを使ったりするってことですよね?
めんどくさくないでしょうか?
それとも専用の関数があるのでしょうか?
0433デフォルトの名無しさん
2006/04/28(金) 15:29:010434デフォルトの名無しさん
2006/04/28(金) 15:38:02それじゃ自分用に作っておいた方が楽ですよね?(関数名何にしょうかな)
0435デフォルトの名無しさん
2006/04/28(金) 15:52:55MapWindowPointsって、使えネーかな?
0436デフォルトの名無しさん
2006/04/28(金) 16:18:50まぁ、それはともかく使い方は
GetWindowRect(hWnd,lprect);
MapWindowPoints(GetParent(hWnd),lprect);
てなかんじじゃないのか?
エラー E2034 'tagRECT *' 型は 'HWND__ *' 型に変換できない(関数 GetParentClientRect(HWND__ *,tagRECT *) )
エラー E2342 パラメータ 'hWndTo' は HWND__ * 型として定義されているので tagRECT * は渡せない(関数 GetParentClientRect(HWND__ *,tagRECT *) )
エラー E2193 呼び出し時のパラメータが足りない:__stdcall MapWindowPoints(HWND__ *,HWND__ *,tagPOINT *,unsigned int)(関数 GetParentClientRect(HWND__ *,tagRECT *) )
0437デフォルトの名無しさん
2006/04/28(金) 16:42:52それとブルスクまでイっちゃたのでこのパソコン控えます。
みなさん、今まで本当にありがとうございました。。。
∧_∧
( ・∀・)
>>私 /⊂ つ
↓ / ,(__つ
⊂⌒~((⊃*。Д。) し'
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧_∧
( ・∀・)
>>1 /⊂ つ
↓ / ,(__つ
⊂⌒~((⊃*。Д。) し'
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
0438デフォルトの名無しさん
2006/04/28(金) 16:43:44それじゃさようなら
0439デフォルトの名無しさん
2006/04/28(金) 16:57:26ブルマとスク水か?
0440デフォルトの名無しさん
2006/04/28(金) 17:46:43> GetClientRectってウィンドウの大きさしか返さないじゃないですか。
ウィンドウの大きさは返さないがな
0441デフォルトの名無しさん
2006/04/28(金) 18:34:38それはともかくスク水の上からブルマですか。
どこがいいのかわかりません。
マニアック過ぎです。
ついていけません。
0442デフォルトの名無しさん
2006/04/28(金) 18:58:340443デフォルトの名無しさん
2006/04/28(金) 19:18:27.んヘ/V'ヘ
((( 'ヘ/V'ヘ)))
ゝ、._,ノ.
パカッ .γ"⌒ヽ,
.んヘ/V'ヘ
(*‘ω‘ *) ちんぽっぽ!
( 'ヘ/V'ヘ|)
ゝ、._,ノ.
0444デフォルトの名無しさん
2006/04/28(金) 19:23:51はいはい、お菓子系お菓子系。
0445デフォルトの名無しさん
2006/04/29(土) 00:53:020446デフォルトの名無しさん
2006/04/29(土) 03:16:08kawaii!!
0447デフォルトの名無しさん
2006/04/29(土) 06:07:50DWORD __cdecl main(void); // (Cスタイル)
でいいんでしょうか?
また、この仕様を書いた文書はどこかにあるのでしょうか?
0448デフォルトの名無しさん
2006/04/29(土) 07:11:32よくエントリポイントのように言われている main や WinMain はスタートアップから呼ばれるコールバックに過ぎない
スタートアップを使わない場合は link.exe の /entry でエントリポイントを定義し、 /subsystem で GUI か否かを選択する
0449デフォルトの名無しさん
2006/04/29(土) 09:15:260450デフォルトの名無しさん
2006/04/29(土) 09:26:390451デフォルトの名無しさん
2006/04/29(土) 10:06:56無理やり>>448な作業をしたことを思い出した。
0452デフォルトの名無しさん
2006/04/29(土) 11:26:42と同じで定期的に質問がくるテーマですな
0453 ̄ ̄ ̄|/ ̄ ̄ ̄ ̄ ̄ ̄
2006/04/29(土) 12:04:38(´・ω・)
/ \
__| | | |_
||\ \ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\
||\\ \ | ( ´д)ヒソ(´д`)ヒソ(д` ) >
|| \\ \ \__________/
. \\ \
. \\ \
. \\ \ が ら 〜 ん
. \\ \
. \\ \
\| ̄ ̄ ̄ ̄ ̄ ̄ ̄ |
|| ̄ ̄ ̄ ̄ ̄ ̄ ̄||
0454デフォルトの名無しさん
2006/04/29(土) 12:46:38(´・ω・)
/ \
__| | | |_
||\ \
||\\ \
|| \\ \
. \\ \
. \\ [ ゚д゚]y-一~~~~
. \\ ノ[ ヘ ヘ \
. \\ \
. \\ \
\| ̄ ̄ ̄ ̄ ̄ ̄ ̄ |
|| ̄ ̄ ̄ ̄ ̄ ̄ ̄||
0455デフォルトの名無しさん
2006/04/29(土) 15:15:50書こうとしているのですがうまくいきません。
ウィンドウスタイルからWS_THICKFRAMEを外し、
MoveWindowで高さをタイトルバー以下にしても
タイトルバーの下にほんの少しクライアント領域ができてしまいます。
AdjustWindowRect関数でクライアント領域を0にしてみても駄目でした。
どのようにして実装すればよいでしょうか?助言よろしくお願いします。
0456デフォルトの名無しさん
2006/04/29(土) 15:33:25自作で親ウィンドウをもとにした、
クライアントウィンドウの位置を求める関数を作ってみたのですがとりあえず見てください。
BOOL GetParentClientRect(HWND hWnd,LPRECT lprect)
{
RECT ParentRect;
RECT Rect;
if(GetWindowRect(GetParent(hWnd),&ParentRect) == 0) return FALSE;
if(GetWindowRect(hWnd,&Rect) == 0) return FALSE;
lprect->left = Rect.left - ParentRect.left;
lprect->top = Rect.top - ParentRect.top;
lprect->right = lprect->left + Rect.right - Rect.left;
lprect->bottom = lprect->top + Rect.bottom - Rect.top;
return TRUE;
}
としたらタイトルバーの幅を考慮していなかったので、y座標がタイトルバーの分だけずれてしまいます。
ですのでタイトルバーがある場合、その分を減らす処理をどうするのかと考えています。
なにかあったら教えてください。
この関数が明らかに間違っている場合は「あんたバカあ!」とでも言ってください。
0457デフォルトの名無しさん
2006/04/29(土) 15:36:190458デフォルトの名無しさん
2006/04/29(土) 15:42:43ほんとに言いやがったぁ(泣)
0459デフォルトの名無しさん
2006/04/29(土) 15:49:440460デフォルトの名無しさん
2006/04/29(土) 16:02:35そんないやらしい目つきで見るのはっ!
0461デフォルトの名無しさん
2006/04/29(土) 16:14:080462デフォルトの名無しさん
2006/04/29(土) 16:48:370463456
2006/04/29(土) 16:53:030464デフォルトの名無しさん
2006/04/29(土) 17:16:34{
RECT rect;
POINT pos;
GetWindowRect(hWnd, &rect);
pos.x = rect.left;
pos.y = rect.top;
ScreenToClient(GetParent(hWnd), &pos);
lprect->left = pos.x;
lprect->top = pos.y;
lprect->right = pos.x + rect.right - rect.left;
lprect->bottom = pos.y + rect.bottom - rect.top;
return TRUE;
}
0465デフォルトの名無しさん
2006/04/29(土) 17:20:54{
POINT pos = {0};
GetWindowRect(hWnd, lprect);
ClientToScreen(GetParent(hWnd), &pos);
OffsetRect(lprect, -pos.x, -pos.y);
return TRUE;
}
0466デフォルトの名無しさん
2006/04/29(土) 17:46:42可能でしょうか?
0467デフォルトの名無しさん
2006/04/29(土) 17:49:050469デフォルトの名無しさん
2006/04/29(土) 19:26:03LogonUserとかImpersonateLoggedOnUserとか何か
そのへんをうまく使ってがんばる
0470デフォルトの名無しさん
2006/04/29(土) 20:05:05OffsetRectは本質ではないんだが
0471デフォルトの名無しさん
2006/04/30(日) 03:06:08サイズ変更できるボタンを作るため、サブクラス化しました。
内容は、
WM_LBUTTONDOWN:
ReleaseCapture();
SendMessage(hWnd,WM_SYSCOMMAND,SC_SIZE | 7,0); //ウィンドウのサイズ(右下)が変更できる
return0;
です。
それで、サイズ変更は出来るようになりました。
それはいいのですが、なぜかサイズが一定のサイズまでしか下げれません(right=110,bottom=25)。
試しに、EDITでも同じようにサイズ変更出来るようにしました。
こちらはそういったことは起きませんでした。
この違いは何なのでしょうか?
0472デフォルトの名無しさん
2006/04/30(日) 03:55:32こんな感じでグローバルフックの対象を切り替えたいのですが
うまくいきません なんで?
もちろんDLL内で行って 初めの一回は成功します
ちょっと 困ってます・・(この時間 まだ終わらん・・・)
UnhookWindowsHookEx(hSysHook);
DWORD dwThreadId = GetWindowThreadProcessId(hwnd, NULL);
hSysHook = SetWindowsHookEx(WH_CALLWNDPROC,(HOOKPROC)SysCallWndProc, hDllInst, dwThreadId);
0473デフォルトの名無しさん
2006/04/30(日) 04:33:07Aユーザが実行中のアプリのウィンドウに対してBユーザのアプリから、
たとえばハンドルを取得してPostMessageを投げるとか可能でしょうか?
FindWindowできないのは確認しましたが…。
0474・∀・)っ-○◎● ◆toBASh....
2006/04/30(日) 04:40:010475デフォルトの名無しさん
2006/04/30(日) 07:51:48仮想端末を出さずに暗黙的に実行するには、どうしたら良いのでしょうか?
0476デフォルトの名無しさん
2006/04/30(日) 08:21:07デスクトップが異なるとメッセージはとどかない。はず。
0477デフォルトの名無しさん
2006/04/30(日) 09:17:05適切な引き数を設定する。
0478デフォルトの名無しさん
2006/04/30(日) 12:30:01やはりダメですか。
>>474
私へ回答いただいたんですよね。RPC、調べてみます。使ったこと無いですが…。
0479デフォルトの名無しさん
2006/04/30(日) 13:01:34もう少し詳しくお願い orz
0480デフォルトの名無しさん
2006/04/30(日) 13:35:56// 起動したら後は野となれ山となれ
bool CUtility::execProcess(const char * cmd)
{
if (cmd == NULL || cmd[0] == '\0') {
return false;
}
PROCESS_INFORMATION pi;
STARTUPINFO sui = {sizeof(sui),};
if (!CreateProcess(NULL, const_cast<char *>(cmd), NULL, NULL, false,
NORMAL_PRIORITY_CLASS | DETACHED_PROCESS,
NULL, NULL, & sui, & pi)) {
return false;
}
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
return true;
}
0481デフォルトの名無しさん
2006/04/30(日) 13:41:28これのことでは?
http://support.microsoft.com/kb/409393
普通に cmd.exe を起動すると、コマンドウィンドウが表示されてしまいます。この現象を回避するには
0482デフォルトの名無しさん
2006/04/30(日) 14:12:53プロセス間通信がしたいだけなら
pipe,named pipe,mailslot
あたりの方が簡単じゃなかろうか。良く知らんねんけどね。
あとはCOMの世界に走るとか。
0483デフォルトの名無しさん
2006/04/30(日) 14:15:590484デフォルトの名無しさん
2006/04/30(日) 14:16:54フォント指定した文字列をあるポイントから右寄せで表示したいのです。
自作した、四角形がありその中に右寄せで文字を表示したいのです。
なにか、関数とかあるのでしょうか。それとも計算して、書いていくのでしょうか。
0485デフォルトの名無しさん
2006/04/30(日) 14:39:500486デフォルトの名無しさん
2006/04/30(日) 14:47:04>485さんありがとございます。そうします。
0487デフォルトの名無しさん
2006/04/30(日) 15:20:47ちなみにAPI関数でやるとしたら、たとえばDrawTextにDT_RIGHTを指定すればよい。
0488デフォルトの名無しさん
2006/04/30(日) 17:48:28このようなソフトウェアをつくってみたいと考えているのですが
どのように実装されているのか見当がつきません。
timeGetTime()あたりをHookしているのではないかと思っているのですが。
0489デフォルトの名無しさん
2006/04/30(日) 17:56:070490デフォルトの名無しさん
2006/04/30(日) 18:01:53わざわざ新しく作らないでそれを使えばいいじゃん
0491デフォルトの名無しさん
2006/04/30(日) 18:10:460492デフォルトの名無しさん
2006/04/30(日) 18:38:46実行中のすべてのプロセスに対して
速度変更ができるようにしたいからです。
0493デフォルトの名無しさん
2006/04/30(日) 18:51:20自分で解析できないレベルなら無理だと思うよ
api一発叩けばできるレベルならみんなやってるだろうし
0494デフォルトの名無しさん
2006/04/30(日) 18:58:060495デフォルトの名無しさん
2006/04/30(日) 19:01:52ご助言、ありがとうございます。
ハードよりな分野とは知りませんでした。
この手のソフトウェアは大抵hook.dllがありましたので
APIフックで実装可能と思っていましたorz
0498デフォルトの名無しさん
2006/04/30(日) 22:57:50DrawText()あるんですね。
いろいろ書いてみます。最初なので、書いて試していろいろして見ます。
ありがとうございました。
0499デフォルトの名無しさん
2006/05/01(月) 08:29:07開発環境: w2k + VC++6.0
CreateWaitableTimer() の使用を考えております。
<winbase.h>をインクルードししこしこ使おうと考えるも
「そんなもんねーよ」って怒られちゃいます。
原因を探ると、os対応の問題のようで
#define _WIN32_WINNT 0x0400
マクロぶち込んでやると、コンパイルも通りとりあえずは動くのは
動くのですが。
API自体が、2k以上対応って話なのでこれで問題ないような気もするのですが
ぶっちゃけ対応過ぎるような気がして。
対処方法としてこれでよろしいのでしょうか?
有識者の意見をいただければ幸いです。
0500デフォルトの名無しさん
2006/05/01(月) 09:03:510501デフォルトの名無しさん
2006/05/01(月) 09:05:52最近の日本語はおぢさんには難しい。
0502デフォルトの名無しさん
2006/05/01(月) 09:15:320503デフォルトの名無しさん
2006/05/01(月) 09:48:02>Requires Windows Vista, Windows XP, Windows 2000 Professional, Windows NT Workstation 4.0, Windows Me, or Windows 98.
って書いてあるけどなあ。
0504デフォルトの名無しさん
2006/05/01(月) 11:28:47APIHookでできる
0505デフォルトの名無しさん
2006/05/01(月) 12:46:26最悪、LoadLibraryを用いてGetProcAddressで呼んでみる?
・・・など、いろいろあるお。
0506デフォルトの名無しさん
2006/05/01(月) 12:54:02日本語配列(109)キーボード?それとも、英語配列(101)キーボード?
教えて、みんな。
0507デフォルトの名無しさん
2006/05/01(月) 12:56:590508デフォルトの名無しさん
2006/05/01(月) 12:58:470509デフォルトの名無しさん
2006/05/01(月) 13:50:02色々返答有難う御座いました。
>>503
オンラインのMSDN見ると確かに2k前に対応してると書いてますね。
HDDに入ってる2003、4月リリース版だとダメって書いてるのに!
>>502
>>505
色々手はあるようですね。
教えてもらった情報元にもう一度考え直して見ます。
CreateWaitableTimerA() は無いって言われます(調べ直ししてみます)。
他の作業にかまけて放置して後でハマるありがちなパターンだけは避けるよう
心がけます。ありがとう御座いました。
0510デフォルトの名無しさん
2006/05/01(月) 13:55:18すいません。
サービスパックさえ当たってませんでした。
人に聞く前に環境整えからですね。
0511506
2006/05/01(月) 14:27:510513デフォルトの名無しさん
2006/05/01(月) 14:55:52ttp://pc8.2ch.net/test/read.cgi/tech/1143790424/l50
0514デフォルトの名無しさん
2006/05/01(月) 15:11:43CreateWindowExの引数弄るだけで出来る?
他になにかAPIが必要?
教えておくれ
0515デフォルトの名無しさん
2006/05/01(月) 15:33:11自分でヘッダ見ろよ。
winbase.hのCreateWaitableTimerA/Wの宣言の直前にこれがあるだろ。
#if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)
0516デフォルトの名無しさん
2006/05/01(月) 17:32:02スタイルのボーダー指定をしなきゃいいだけジャマイカ?
0518デフォルトの名無しさん
2006/05/01(月) 19:32:510519デフォルトの名無しさん
2006/05/01(月) 19:55:13hookでできました。
ピンボールが2倍速になって難しくなりました。
0520デフォルトの名無しさん
2006/05/01(月) 20:54:09オメ
0521デフォルトの名無しさん
2006/05/01(月) 21:00:23bmaxと入力すればボールが減らなくなる
0522デフォルトの名無しさん
2006/05/01(月) 21:22:11ソースちょうだい
0523デフォルトの名無しさん
2006/05/01(月) 21:26:160524デフォルトの名無しさん
2006/05/01(月) 21:57:270525デフォルトの名無しさん
2006/05/01(月) 21:57:590526デフォルトの名無しさん
2006/05/01(月) 22:26:24今度はソースよこせかよwwww
>>525
見当がつかない物を見てもしょうがないよ。
0527デフォルトの名無しさん
2006/05/02(火) 03:33:42Cで作ったプログラムにインストーラをつけるにはどのようにしたらいいのでしょうか?
VisualBasicとかならやり方はみた気がするのですが、Cでは見たことがないような・・・
100%見逃している感がありますが、参考になるような分かりやすいサイトがあれば教えてください。
お願いします
0528デフォルトの名無しさん
2006/05/02(火) 03:36:580529デフォルトの名無しさん
2006/05/02(火) 03:43:23えっ?
そうなの?
んじゃ、どこで聞いたらいいの?これ?
0530デフォルトの名無しさん
2006/05/02(火) 06:15:32Vector眺めて来い
0531514
2006/05/02(火) 11:22:32ってだれか分からんですかー
0532デフォルトの名無しさん
2006/05/02(火) 11:38:31スタイルのボーダー指定をしなきゃいいだけジャマイカ?
0533デフォルトの名無しさん
2006/05/02(火) 11:41:25よく知らんけど、どういう風にやってうまくいってないのか
コード晒してみたら?
0534デフォルトの名無しさん
2006/05/02(火) 12:33:480535デフォルトの名無しさん
2006/05/02(火) 12:47:13EnumResourceTypesじゃダメ?
いぢめる?
0536デフォルトの名無しさん
2006/05/02(火) 13:04:02みなさん、GIFファイルをLockBitsしてポインタでゴリゴリするとき、
画像内の任意のピクセルが黒かどうかを確認するときどうします?
ただし、GIFファイルは256色で保存されており、
GIFファイルのパレットには、ff000000がたくさんエントリーされているものとする。
みんなさん、よろしく!
0537536
2006/05/02(火) 13:05:29{
if (color.R == 0 && color.G == 0 && color.B == 0)
{
return true;
}
else
{
return false;
}
}
こんなのつくって、
if (!isBlack(bitmap1.Palette.Entries[*p1]))
こんなことすると、ものすごく遅いんです。
0538536
2006/05/02(火) 13:13:40カラーパレットを表示させました。
黒がいっぱい・・・。
0539デフォルトの名無しさん
2006/05/02(火) 13:18:35そんなときは私はAPIを使わず、適当なライブラリで読み込んだ画像をメモリ上で検索するが。
具体的な方法はスレ違いなんで割愛。
つーか、画像の大きさにもよるけど24ビット画像に変換した方が楽じゃね?
0540デフォルトの名無しさん
2006/05/02(火) 13:25:420541536
2006/05/02(火) 13:27:08もうちょい初心者にもわかりやすくお願いします・・・。
(ちなみに、GetPixelとかそういう遅い関数は遠慮したいです)
だいたい3000*3000ピクセル程度の画像を扱っています。
0542536
2006/05/02(火) 13:28:14だって、ここのスレにいる方々が2chで一番知識豊富なんですもの・・・。
ほんとにごめんなさい。おねがいします。
0543536
2006/05/02(火) 13:30:18つまり、byte mybyte=new byte[bmp.Height*bmp.Width*3];
っていう配列を用意してってことですよね??
ごめんなさい、ほんとあほで。
0544デフォルトの名無しさん
2006/05/02(火) 13:31:46Palette.Entries[n]ってのを取ってきて isBlack で判定するのが遅いと感じたなら、
最初に0〜255までの各パレット値について、
bool _isBlack[] = new bool[256]; ってのに全部の結果を入れとけばいいでそ?
その関数を900万回も呼ぶより、256回だけ呼んで、あとは配列の参照の方が
速そうだな、とか思うデソ?
こういうことは Win32 API とも C# とも GDI+ とも関係なく、普段からちゃんとものを
考えて暮らしていればごく普通に考えればわかる。
だからスレ違いだといわれてるわけです。
でもまぁ懲りずにまた何か質問あったらここで聞いても良いと思う。
プログラミングの常識みたいなものも、そのうちだんだん解ってくるから頑張って。
0545531
2006/05/02(火) 13:32:54WS_SYSMENU だけでも表示される件
ボーダー指定とかナニソレ
>>533
うまくいってないとかじゃなくて、そう言う方法があったと思うんだけどーって話。
もう一回書く
ウィンドウの外枠を外す方法があった気がした。
CreateWindowExの引数弄るだけで出来る?
他になにかAPIが必要?
教えておくれ
0546536
2006/05/02(火) 13:37:44どうもありがそ。よく理解できました。
bool _isBlack[] = new bool[256]; ってのに全部の結果を入れとけばいいでそ?
確かにこれははやそうです!
ひょっとしたら、もっともっとスマートな所謂定石の方法が
他にあるんじゃないかとも感じたのです。
0547デフォルトの名無しさん
2006/05/02(火) 13:53:57そうしたらコードの添削もしてやれるしこっちのコードも提示できるから。
0548536
2006/05/02(火) 13:57:22仰るとおりです。今度からそちらで質問させていたらきます。
どうもありがとうございました。
byte[] isBlack= new byte[Byte.MaxValue];
byte[] isWhite = new byte[Byte.MaxValue];
for (int i = 0; i < 256; i++)
{
isBlack[i] = false;
isWhite[i] = false;
Color color = bitmap1.Palette.Entries[i];
if (color.R == 0 && color.G == 0 && color.B == 0)
{
isBlack[i] = true;
}
if (color.R == 255 && color.G == 255 && color.B == 255)
{
isWhite[i] = true;
}
}
0549デフォルトの名無しさん
2006/05/02(火) 13:59:34タブコントロールを扱っているのですが
タブコントロールが可視状態の時に
SendMessage(
GetDlgItem(hWnd, IDC_TAB),
TCM_DELETEITEM,
(WPARAM)1,
(LPARAM)0
);
とすると、タブの上にのっているコントロールが全て消えてしまいます。
SPY+でメッセージを見る限り
TCM_DELETEITEMが処理されるとWM_ERASEBKGNDが処理されるようです。
「なら、その後にWM_PAINTを送ればいいかな」
と思いTCM_DELETEITEMをSendした次の行で、WM_PAINTをSendしてみましたが状況は改善されず。
何故か
TCM_DELETEITEM
WM_PAINT
WM_ERASEBKGND
という順番で処理されてしまいます。
タブコントロールを動的に扱う時は、どうやってこのWM_ERASEBKGND問題を回避するのでしょうか。
0550デフォルトの名無しさん
2006/05/02(火) 14:19:580551デフォルトの名無しさん
2006/05/02(火) 14:20:380552デフォルトの名無しさん
2006/05/02(火) 14:23:32ありがとうございました。
WM_PAINTを送るかわりにInvalidateRectを使ったら即解決しました。
Javaから帰還して「ん、再描画はなんだっけ。repaint?違うな。UpdateWindowだっけ?」
とドツボにはまってましたorz
0553デフォルトの名無しさん
2006/05/02(火) 14:30:37使う関数の意味合いや使った関数の意味をあいまいな説明
なままのでいらいらして、とりあえずWIN32APIオフィシャルリファレン
スを買った程度のレベルの猫以下の自分から質問さしてください。
・SelectObject()で選んだObjectは必ずDeleateObject()しない
といけないんでしょうか?大きなプログラムになるともったいない
ので、Create用に宣言した物を使い回す為にDeleateObject
するんでしょうか?
・リソースはみなさん手描きなんでしょうか?
・LOWORD()等のマクロがあるという事を知るにはどうやって調べて
いるんでしょうか?
・今VS2005SEを使ってるんですが、ソースの文字列を全部
TEXT()で囲んでるんですが、VC++6だとだめでした。
結局は、場所に応じてL""にしたりすべきなのでしょうか?
くずみたいな質問すいません。勉強にもどります。
0554デフォルトの名無しさん
2006/05/02(火) 15:12:56First, you d beter recognize ur words r unclear
0555デフォルトの名無しさん
2006/05/02(火) 15:27:39ありがとうございます。EnumResourceNamesというのでいけました。
0556545
2006/05/02(火) 16:25:36WS_POPUPが無い時点でタイトルバー、外枠とかは絶対ついてくるのね・・・
勉強になりますた
0557デフォルトの名無しさん
2006/05/02(火) 16:46:19::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE);
(ry
case TM_DESTROY:
PostQuitMessage(-1);
break;
case TM_QUIT:
msg.wParam; // 0x0000ffff が入ってる
0558デフォルトの名無しさん
2006/05/02(火) 17:01:09>517->518に答えがあるのに。
0559デフォルトの名無しさん
2006/05/02(火) 17:01:53何か問題でも?
0560デフォルトの名無しさん
2006/05/02(火) 17:16:19●SelectObject()で選んだObjectは必ずDeleateObject()しない(ry
ちょっと質問の意味がわかりませんが、GDIオブジェクトを生成するCreate〜に対し、
GDIオブジェクトを破棄するのがDeleteObjectではないでしょうか?
SelectObjectはデバイスコンテキストと、GDIオブジェクトを関連付けているのではないでしょうか?
●リソースはみなさん手描きなんでしょうか(ry
アイコンとかは、ツールを利用した上で手書きじゃないでしょうか?
私はフォトショップで加工して手書き補正です。
●LOWORD()等のマクロがあるという事を知るにはどうやって調べて(ry
リファレンスを読む
ファイルから検索で#defineを検索する。
人に教えてもらう。
神の啓示。
●今VS2005SEを使ってるんですが、ソースの文字列を全部(ry
汎用データマッピングを利用するには、
#include <tchar.h>
#include <clocale>// 必要に応じて
をソースの頭の記述しておく、
これにより汎用データマッピング用の関数を利用できる。
(実際はマクロ)
ex) 汎用データマッピング用書式付出力
_tprintf(_T("ゴルァ World!\n"));
これが、マルチ文字環境だと
printf("ゴルァ World!\n");
ワイド文字環境だと
wprintf(L"ゴルァ World!\n");
なる。
0561デフォルトの名無しさん
2006/05/02(火) 17:32:21WS_オーバーラップトだったかそのへんが0ってことで
0562デフォルトの名無しさん
2006/05/02(火) 17:41:56XPでは 0xffffffff なのに問題無いとでも?
0563556
2006/05/02(火) 17:44:00ん?答えなんかあった?
>>561
そういえばそうだった。
てことはつまり WS_POPUP は WS_OVERLAPPED じゃないってこと?
いやその辺りは自分で調べてみます。
どうもですた
0564デフォルトの名無しさん
2006/05/02(火) 18:29:46終了ステータスは32ビットってどっかに書いてあった?
単に16ビットしか有効じゃないだけじゃないの?
>>563
WS_SYSMENUを指定したら枠がつく>そりゃそうだ
↓
WS_SYSMENUを指定しない(≒WS_POPUPでも指定する)
0565デフォルトの名無しさん
2006/05/02(火) 18:29:54レスありがとうございます
まだ何がわかってて何がわかってないかさえ分かってない
レベルだとわかりました。
とりあえず、もっとゴリゴリ書いて経験積みます。
0566デフォルトの名無しさん
2006/05/02(火) 18:43:12char * str = "foo";
HDC hdc2 = GetDC(hWnd);
TextOut(hdc2,x,y,(LPCSTR)str,strlen(str));
ってことをやったとして、これを画面に出力したいときは
BitBlt 使う以外に方法ありますか?
的外れな質問だったらスマソ
0567デフォルトの名無しさん
2006/05/02(火) 18:52:22メモリDCとかで調べてみてください。
0568デフォルトの名無しさん
2006/05/02(火) 19:01:31ありがとうございます
0569557
2006/05/02(火) 19:09:21> 終了ステータスは32ビットってどっかに書いてあった?
> 単に16ビットしか有効じゃないだけじゃないの?
WinMainより
> WM_QUIT メッセージの wParam パラメータで受け取った値を返さなければなりません。
なるほど納得した
サンクス
0570デフォルトの名無しさん
2006/05/02(火) 19:38:14> 終了ステータスは32ビットってどっかに書いてあった?
でも、
> VOID PostQuitMessage(int nExitCode);
> nExitCode
> この値は、WM_QUIT メッセージの wParam パラメータとして使われます。
intもWPARAMも32ビットなのに、16ビットしか有効じゃないってのは・・・
0571デフォルトの名無しさん
2006/05/02(火) 20:08:38>exit 呼び出しおよび _exit 呼び出しは値を返しませんが、待機中の呼び出しプロセスがある場合は、
>現在の呼び出しプロセスが終了した後で、待機中の呼び出しプロセスが status の下位バイトを利用できます。
>status の値は、オペレーティング システムのバッチ コマンド ERRORLEVEL を使用して、2 種類の定数で表すことができます。
>つまり、定数 EXIT_SUCCESS を値 0、定数 EXIT_FAILURE を値 1 として表します。
と書いてあるんだよね。
これだけ見ると、16ビットどころか8ビットしか使えない。
0572デフォルトの名無しさん
2006/05/02(火) 20:26:19甲 - ExitProcess関数またはTerminateProcess関数の中で指定された終了コード
乙 - プロセスのmain関数またはWinMain関数からの戻り値
丙 - 処理されない例外のためにプロセスが終了した場合は、 その例外コード
0573デフォルトの名無しさん
2006/05/02(火) 21:26:00Win 9xは16ビット時代を引きずっているからそんなもんだろ。
>>571
どこかでプロセス内の最後のスレッドがExitThreadしたら、
そのスレッドの終了コードがプロセスの終了コードになると書いてあった覚えがある。
0574デフォルトの名無しさん
2006/05/02(火) 22:09:35HFONT の fnWeight を取得するには、どうすればいいのでしょうか教えてください。
テキストの中を均等割付したいのですが、そう見せかけるだけで、
四角の枠の中に均等に文字が入るように、計算しようと思いす。
ので、フォントの幅で、計算すると出てくるかなと思いまして。
0575デフォルトの名無しさん
2006/05/02(火) 22:10:55GetObject
0576デフォルトの名無しさん
2006/05/02(火) 22:13:090577デフォルトの名無しさん
2006/05/02(火) 22:14:06fnWeight ってのが何なのかわからないけど、
フォントの幅・・というのが文字の幅のことなら、
文字によって違うから GetTextExtentExPoint とか
GetCharacterPlacement とか使ったほうが良い。
0578デフォルトの名無しさん
2006/05/02(火) 22:27:10均等割り付けと言えばSetTextCharacterExtraやSetTextJustificationもお忘れなく、一応ね。
0579デフォルトの名無しさん
2006/05/02(火) 23:09:18下の定義したDlgPrc()でリンクのエラー
「_MyDlgProc@16 が関数 _WndProc@16 で参照されました」
がでたのですが、何のライブラリを
#pragma comment(lib, "・・・")
で読み込めば良いのでしょうか
DefDlgProcを返そうと思いましたが返る値がLRESULTなので
わけがからなくなりました。
どなたか教えてください
BOOL CALLBACK MyDlgPrc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
static HWND hParent;
switch(msg){
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
switch(LOWORD(wp)){
case IDOK:
・
・
・
case IDC_CLOSE:
DestroyWindow(hDlg);
return TRUE;
}
return FALSE;
}
return FALSE;
}
0580デフォルトの名無しさん
2006/05/02(火) 23:12:48>>575-578さんありがとうございます。
今いろいろ教えていただいたのを調べていますので、
また、結果かきます。ありがとうございました。
0581デフォルトの名無しさん
2006/05/02(火) 23:16:220582デフォルトの名無しさん
2006/05/02(火) 23:39:18MyDlgPrcをMyDlgProcに直せ。
0583デフォルトの名無しさん
2006/05/03(水) 00:00:240585デフォルトの名無しさん
2006/05/03(水) 00:10:59SendMessage以外の方法なら知ってる。
0586デフォルトの名無しさん
2006/05/03(水) 00:15:090587デフォルトの名無しさん
2006/05/03(水) 00:27:15LBUTTONDOWN中のみそうしたかったのですが・・・
して、そのSendMessageの方法とは?
教えてください、お願いします。
0588587
2006/05/03(水) 00:29:410589デフォルトの名無しさん
2006/05/03(水) 00:38:540590デフォルトの名無しさん
2006/05/03(水) 00:44:43ClipCursor()を使って無理やり。
LRESULT WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
RECT rc;
switch (uMsg)
{
// 中略
case WM_LBUTTONDOWN:
rc.left = rc.right = LOWORD(lParam);
rc.top = 0;
rc.bottom = 768; // どうでもいい
ClipCursor(&rc);
break;
case WM_LBUTTONUP:
ClipCursor(NULL);
break;
// 中略
}
0591デフォルトの名無しさん
2006/05/03(水) 00:56:32戻し忘れたときが恐そうですけどね。
0592デフォルトの名無しさん
2006/05/03(水) 16:04:07マウスカーソルが上下にしか動かない。
0593デフォルトの名無しさん
2006/05/03(水) 16:28:58bool myWin::Message(){
if(!GetMessage(&msg, NULL, 0, 0))
return FALSE;
TranslateMessage(&msg);
DispatchMessage(&msg);
return TRUE;
}
このようなクラスメンバ関数を作ったのですが
windowsから何もメッセージが送られてきていないとき、何かメッセージが送られてくるまでここで待機してしまってるみたいなんです。
何か対策はありますか?
よろしくお願いします。
0594デフォルトの名無しさん
2006/05/03(水) 16:32:520595デフォルトの名無しさん
2006/05/03(水) 16:43:17ありがとうございます。
でもPeekMessageだと期待したような動作をしてくれなかったので
いろいろ試した結果下のような変更で解決しました。
bool myWin::Message(){
bool f;
f=GetMessage(&msg, NULL, 0, 0);
TranslateMessage(&msg);
DispatchMessage(&msg);
if(!f)
return FALSE;
else
return TRUE;
}
0596593
2006/05/03(水) 19:44:51回線切って首つってきまつ
0597デフォルトの名無しさん
2006/05/03(水) 19:57:53∧||∧
>>596( ⌒ ヽ
∪ ノ
∩∪∩
(・∀・| |
| |
⊂⊂____ノ
彡
___________
0598デフォルトの名無しさん
2006/05/03(水) 20:00:550599597
2006/05/03(水) 20:12:53それならさらに罰を与えましょう、そうしましょう。
0601デフォルトの名無しさん
2006/05/03(水) 22:41:12多分WM_GETMINMAXINFOが関係してる。
0602600
2006/05/03(水) 22:51:58けど、
なんでEDITが0で、BUTTONが0じゃないのか?
0603デフォルトの名無しさん
2006/05/03(水) 23:00:45こんばんは、いろいろ試してみた結果、
GetObject でHFONT を指定して、LOGFONT を取得すると、
HFONTに、高さのみ指定している場合は、幅がマイナス値になるようなのです。
(間違いかもしれませんが、)ので、GetTextExtentPoint32で、
SIZEを取得して、計算しました。
SetTextJustificationを使って表示させると、何回も呼び出した場合。
不具合が、発生しましたので、その後の表示は、一文字づつ呼び出し
TextOutでかきました。
どうも、文字全体をまとめて表示すると、文字化けになるので、
苦労します。
なお、GetObject はフォントダイアログ呼び出しの
初期値設定に使うことができ感謝してます。
それでは、みなさまありがとうございました。
0604デフォルトの名無しさん
2006/05/04(木) 00:25:550605デフォルトの名無しさん
2006/05/04(木) 14:50:39指定長さ(バイト数)以下に入るよう切り詰めるAPIってないですか?
例えば "あいう\0" を6バイトのバッファに入れる場合
単純に切り詰めると "あい(うの1バイト目)\0" となってしまうので
その場合は "あい\0" となるように。
0606デフォルトの名無しさん
2006/05/04(木) 14:55:410607デフォルトの名無しさん
2006/05/04(木) 15:00:060608デフォルトの名無しさん
2006/05/04(木) 15:05:130609デフォルトの名無しさん
2006/05/04(木) 15:06:35たとえAPI一発でやれるとしても、それは内部で同じ事をやってくれるだけだろう?
自分でその機能を持った関数を作って、それを一発呼ぶ事の何が嫌なんだ?
0610デフォルトの名無しさん
2006/05/04(木) 15:07:470611デフォルトの名無しさん
2006/05/04(木) 15:11:560612デフォルトの名無しさん
2006/05/04(木) 15:12:320613デフォルトの名無しさん
2006/05/04(木) 15:21:320614デフォルトの名無しさん
2006/05/04(木) 15:29:09十分テストされている(と思われる)APIでできるのならそれに越した事は無いな
と思っているのですが。
>>611
C標準のstrncpyだと全角文字考慮されていないようですが…
char buf[6];
strncpy(buf, "あいう", 5);
buf[5] = '\0';
// buf[4]に「う」の1バイト目が入っている
0615デフォルトの名無しさん
2006/05/04(木) 15:31:590616デフォルトの名無しさん
2006/05/04(木) 15:34:51他人の作った設計図を元に、車輪を作ることを再発明だと思っているのか?
再発明の意味を分かっていないのに使う奴のあまりの馬鹿さかげんに涙が出てくる。
0617デフォルトの名無しさん
2006/05/04(木) 15:35:35見ていますが、lstrcpyn, StrCpyN, StringCbCopyN, StringCchCopyN
全てアウトだったのですが。
0618デフォルトの名無しさん
2006/05/04(木) 15:38:49文字コードを全てUTF16で表現すれば解決。
今後Win32APIを使っていくのならUNICODEが常識。
地域依存コードなど使えば,
>テスト・保守などの手間がかかり
問題が出る。
0619デフォルトの名無しさん
2006/05/04(木) 15:40:210620デフォルトの名無しさん
2006/05/04(木) 15:42:47>十分テストされている(と思われる)API
を使うため、仕様を変更すればいい。
0621デフォルトの名無しさん
2006/05/04(木) 15:44:170622デフォルトの名無しさん
2006/05/04(木) 15:46:140623デフォルトの名無しさん
2006/05/04(木) 15:52:340624デフォルトの名無しさん
2006/05/04(木) 15:56:29>テスト・保守などの手間がかかり
これが必要なわけだろ。その分の工数を見込んでいなかったのであれば
それは見積もりミスであって、APIのせいではない。
0625デフォルトの名無しさん
2006/05/04(木) 16:00:26APIがあるかないかが分かればいいのなら、無い。
0626デフォルトの名無しさん
2006/05/04(木) 16:02:53ありがとうございます。無いと分かっただけで十分です。
0627デフォルトの名無しさん
2006/05/04(木) 16:10:09でた情報小出し
0628デフォルトの名無しさん
2006/05/04(木) 16:10:27かと思えば>>138-139みたいな素っ気無いやりとりがあったり
基準がよくわからん。
0629デフォルトの名無しさん
2006/05/04(木) 16:10:55ここにも小出し
0630デフォルトの名無しさん
2006/05/04(木) 16:23:27lstrcpynで常識的なやり方でやったらできた。
0631デフォルトの名無しさん
2006/05/04(木) 16:31:04できたぞ
0632デフォルトの名無しさん
2006/05/04(木) 16:34:09もしかして
char buf[6];
lstrcpyn(buf, "あいう", 5);
buf[5] = '\0';
で出来たとか言ってる?
"あいう"じゃなくて"aあい"だとダメだよ。
0633デフォルトの名無しさん
2006/05/04(木) 16:46:54指定された文字列を、指定した文字数分だけ、バッファにコピーします。
LPTSTR lstrcpyn(
LPTSTR lpString1,// バッファへのポインタ
LPCTSTR lpString2,// コピー元文字列へのポインタ
int iMaxLength// コピーするバイト数または文字数
);
解説
iMaxLengthパラメータで指定する値は、終端のNULL文字分も含みます。
たとえば、次のプログラムを実行すると、
"abc"と終端のNULL文字が、chBufferにコピーされます。
TCHAR chBuffer[512] ;
lstrcpyn(chBuffer, "abcdefghijklmnop", 4) ;
----------------
MSDN↑意味不明だけど
iMaxLength これはバッファの大きさだから5バイト分あれば十分
終端もコピーしたあとで自分で入れる必要ない
0634デフォルトの名無しさん
2006/05/04(木) 16:55:280635デフォルトの名無しさん
2006/05/04(木) 16:55:360636デフォルトの名無しさん
2006/05/04(木) 17:10:02と思って試してみたら、NULL終端を入れてくれなかった。
CRTのソース追ってみたら確かに
buff[6];
"あいう"
だとNULL終端コピってくれない。
ただ、ウチの環境古いんで最新のP SDKで誰かやってみて。
あと、セーフバージョン *_s とか。
0637デフォルトの名無しさん
2006/05/04(木) 19:35:48aは、どこからきた?
0638デフォルトの名無しさん
2006/05/04(木) 19:39:470639デフォルトの名無しさん
2006/05/04(木) 19:52:460640デフォルトの名無しさん
2006/05/04(木) 20:01:19_mbsnbcpyの中で_ISLEADBYTE使ってるから
途中で切れることはない
終端は頭使えば何とかなる。
0641デフォルトの名無しさん
2006/05/04(木) 20:34:38char型からwchar_t型に変えたとき、
strlenなどをwcslenに変えなくてはいけないのはわかりました。
けど、引数がchar型の関数(MessageBox)を呼び出すときはどうしたらいいのでしょう?
0642デフォルトの名無しさん
2006/05/04(木) 20:51:50WideCharToMultiByte等で変換するかMessageBoxWを使う。
0643デフォルトの名無しさん
2006/05/04(木) 21:01:23もしかしてほかの関数も似たような命名規則でしょうか?
0644デフォルトの名無しさん
2006/05/04(木) 21:16:46ttp://msdn.microsoft.com/library/en-us/intl/unicode_8zzn.asp
0645デフォルトの名無しさん
2006/05/04(木) 21:28:59サロゲートペアの後ろ半分だけ残る希ガス。
0646デフォルトの名無しさん
2006/05/04(木) 23:39:50mbだろうがなんだろうが、strncpy系の関数はバッファサイズ一杯まで
つめたときには末尾のゼロは入らない仕様。
buff[6] だとどうせ5バイトしか使えないわけだから、_mbdsbcpy では
バッファサイズ5を指定して自分で先にbuff[5]=0とするのが正しい使いかた。
0647デフォルトの名無しさん
2006/05/05(金) 00:28:58難儀な世の中になったもんだ。
0648デフォルトの名無しさん
2006/05/05(金) 00:58:11世の中とは>>647の部屋の中。
0649デフォルトの名無しさん
2006/05/05(金) 03:30:380650デフォルトの名無しさん
2006/05/05(金) 04:03:180651デフォルトの名無しさん
2006/05/05(金) 05:47:53自分でスクロールさせたいとか?
0652デフォルトの名無しさん
2006/05/05(金) 07:47:26Borland C++ 4.5J の win32api.hlp は今でも時々つかう
0653デフォルトの名無しさん
2006/05/06(土) 01:10:12移動が確定した時に発行されるメッセージってありますか?
WM_WINDOWPOSCHANGEDとかはドラッグ中もばしばし送られて来るのでちょっと違う…
WM_WINDOWPOSCHANGEDでフラグ立てて左マウス離された時とかも考えたけど
なんかスマートじゃない気が
0654デフォルトの名無しさん
2006/05/06(土) 03:58:590655653
2006/05/06(土) 07:32:000656デフォルトの名無しさん
2006/05/06(土) 08:51:01他人を馬鹿にしているのかよっぽど自身が馬鹿なのかどっちかにしか見えないな。
0657デフォルトの名無しさん
2006/05/06(土) 09:31:20馬鹿にしか見えないなw
0658デフォルトの名無しさん
2006/05/06(土) 09:37:250659デフォルトの名無しさん
2006/05/06(土) 09:44:33なんか攻撃的だな
きっとカルシウム不足だぞw
0661デフォルトの名無しさん
2006/05/06(土) 16:08:34他人を馬鹿にしているのかよっぽど自身が馬鹿なのかどっちかにしか見えないな。
0662デフォルトの名無しさん
2006/05/06(土) 16:49:41他人を馬鹿にしているのかよっぽど自身が馬鹿なのかどっちかにしか見えないな。
0663デフォルトの名無しさん
2006/05/06(土) 16:55:12他人を馬鹿にしているのかよっぽど自身が馬鹿なのかどっちかにしか見えないな。
0664デフォルトの名無しさん
2006/05/06(土) 17:05:31char core[]="言い出しが「どうでもいいけど」って言っておいて、";
char footer[]="「どうでもいいけど」を批判するのは他人を馬鹿にしているのかよっぽど自身が馬鹿なのかどっちかにしか見えないな。";
for(int i=1;;i++){
printf("%s",header);
for(int j=1;j<i;j++) printf("%s",core);
printf("%s\n",footer);
}
0665デフォルトの名無しさん
2006/05/06(土) 17:36:40ぽど自身が馬鹿なのかどっちかにしか見えないな。
どうでもいいけど、言い出しが「どうでもいいけど」って言っておいて、「どうでもいい
けど」を批判するのは他人を馬鹿にしているのかよっぽど自身が馬鹿なのかどっちかにし
か見えないな。
どうでもいいけど、言い出しが「どうでもいいけど」って言っておいて、言い出しが「ど
うでもいいけど」って言っておいて、「どうでもいいけど」を批判するのは他人を馬鹿に
しているのかよっぽど自身が馬鹿なのかどっちかにしか見えないな。
どうでもいいけど、言い出しが「どうでもいいけど」って言っておいて、言い出しが「ど
うでもいいけど」って言っておいて、言い出しが「どうでもいいけど」って言っておいて
、「どうでもいいけど」を批判するのは他人を馬鹿にしているのかよっぽど自身が馬鹿な
のかどっちかにしか見えないな。
・
・
・
0666656
2006/05/06(土) 18:01:440667デフォルトの名無しさん
2006/05/06(土) 18:49:080668デフォルトの名無しさん
2006/05/06(土) 18:51:470669デフォルトの名無しさん
2006/05/06(土) 19:11:090670デフォルトの名無しさん
2006/05/06(土) 20:16:210671デフォルトの名無しさん
2006/05/06(土) 23:26:060672デフォルトの名無しさん
2006/05/07(日) 12:46:56GetDlgItemText(hWnd, ID_hogehoge, (LPSTR)hogehoge, 20);
とやっても無理でした…orz
0673デフォルトの名無しさん
2006/05/07(日) 13:38:07ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/dialogboxes/dialogboxreference/dialogboxfunctions/setdlgitemtext.asp
第一引数の説明をよく読むんだ
0674デフォルトの名無しさん
2006/05/07(日) 13:38:56ttp://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/windowing/dialogboxes/dialogboxreference/dialogboxfunctions/getdlgitemtext.asp
0675デフォルトの名無しさん
2006/05/07(日) 14:34:13HFONT について教えてください
HFONT を(中身の構造)保存して、呼び出したいのですが、
HFONTからLOGFONT を取り出して、その構造体をテキストファイルに書き出しているのですが、
ofstream of;
LOGFONT hont;
of.open(filename,ios::out);
of << dec << hont.lfHeight << endl;
of << dec << hont.lfWidth << endl;
of << dec << hont.lfEscapement << endl;
of << dec << hont.lfOrientation << endl;
of << dec << hont.lfWeight << endl;
of << hex <<hont.lfItalic << endl;
of << hex << hont.lfUnderline << endl;
of << hex << hont.lfStrikeOut << endl;
of << hex << hont.lfCharSet << endl;
of << hex << hont.lfOutPrecision << endl;
of << hex << hont.lfClipPrecision << endl;
of << hex << hont.lfQuality << endl;
of << hex << hont.lfPitchAndFamily << endl;
of << hont.lfFaceName << endl;
こんな感じで
テキストファイルにはlfItalic とlfUnderline lfStrikeOut
は空白です。それを読み込んで、LOGFONT として、
それをHFONT に一つ筒今度は渡しているのですが、
アンダーラインも取り消し先もすべて、ついてしまうのです。
どうすればフォントの保存ができるのでしょうか。教えてください。
0676デフォルトの名無しさん
2006/05/07(日) 14:58:11とりあえず力技で、空のときはFALSE としました。
0677672
2006/05/07(日) 15:27:04自作関数にhWndを渡して、関数内でGetDlgItemTextでコントロールの値を取得できたので、
サブクラスのプロシージャでもGetDlgItemTextで出来るのかと思ってやったら出来なかったので…
取得したいコントロールのハンドルをグローバルにして
GetDlgItemText([グローバル変数にコントロールのハンドル], ID_hogehoge, (LPSTR)hogehoge, 20);
にすると取得できるのですが、グローバル変数を使わない方法はどうするのでしょうか…
0678デフォルトの名無しさん
2006/05/07(日) 15:28:04まずは、LOGFONTの構造から見直せ
0679デフォルトの名無しさん
2006/05/07(日) 15:31:07674ではないが、
findwindow
0680デフォルトの名無しさん
2006/05/07(日) 15:53:23やけに変数初期化してない所が多くて
グローバル変数は勝手に0で初期化されるとはいえ
やっぱ全部初期化した方が良いっすよね?
それとも、面倒な所はほっとけって感じで思っておいた方が
書いていくのは楽なんでしょうか
0681デフォルトの名無しさん
2006/05/07(日) 15:56:48趣味ならいいが、仕事なら癖つけとけ
0682デフォルトの名無しさん
2006/05/07(日) 15:58:35その他すべてのことは一切参考すべきではない
0684デフォルトの名無しさん
2006/05/07(日) 16:50:44よくソフトのインストーラなどが再起動時にファイルを書き換えているみたいですが、これをやるにはどうすればいいのでしょうか?
0685デフォルトの名無しさん
2006/05/07(日) 17:37:591. ファイルを書き換える。
2. ディスクキャッシュをフラッシュする。
3. 即座にリブート(2完了から5秒以内に)
参考
ttp://www.sysinternals.com/blog/2006/05/power-in-power-users.html
まあ確か、WFPを無効にする方法があったはず。
本当に書き換えることが必要ならば、無効にすればいい。
でも、それはXPまでしか動かない、腐った設計のプログラム。
Vistaでは、WFPはファイルの書き換え自体を拒絶するようになる。
参考
ttp://blogs.msdn.com/oldnewthing/archive/2006/03/21/556505.aspx
0686デフォルトの名無しさん
2006/05/07(日) 19:29:14とりあえず、デシマルとヘキサを読み出して、文字に変換した後に、これはどうだろ。
#include<stdio.h>
voidmain(void){
chara[100]={0};
charb[100]={0};
inti=0;
scanf("%[^_]",a);
scanf("_%s",b);
printf("%s%s",a,b);
}
例えばabc_defと入力するとabcdefと出力される。
ttp://www.microsoft.com/JAPAN/developer/library/vccore/_crt_scanf.2c_.wscanf.htm
ttp://www.microsoft.com/JAPAN/developer/library/vccore/_crt_format_specification_fields_.2d_.scanf_and_wscanf_functions.htm
ttp://www.microsoft.com/JAPAN/developer/library/vccore/_crt_scanf_width_specification.htm
0687デフォルトの名無しさん
2006/05/07(日) 19:30:440688デフォルトの名無しさん
2006/05/07(日) 21:32:45コントロールのリストボックスの初期化で
hList1 = GetDlgItem(hDlg, IDC_LIST2);として
ボックス内のリストを
ListBox_AddString(hList1, szListBirthYear[i]);
で加えていって
ListBox_SetCurSel(hList1, nBirtY);
[nBirtY はINT型グローバル変数で0として初期化]
で、ListBox_SetCurSel()の第二引数は
何を設定しているのかがわからず、一応入れてある
だけの状態です。
でダイアログプロシージャ内で
case WM_COMMAND:
switch(LOWORD(wp))内の
case IDC_LIST2:で
id = ListBox_GetCurSel(hList1);
wsprintf(szText[1], L"%sが選択されました",
szListBirthYear[id]);
InvalidateRect(hMain, NULL, TRUE);
nBirtY = id;
return TRUE;
としてるのですが、実行してみるとIDC_LIST2のボックスに
加えた文字列、及びスクロールバーが表示されないです。
ただ、そのリストボックスをクリックすると空表示ですが
リストに加えた最初の文字列はウィンドウに反映されます
これは、リソースのプロパティ設定の不備なのでしょうか
それとも、ソースで足りない処理があるのでしょうか
どなたか教えて下さい。
0689デフォルトの名無しさん
2006/05/07(日) 21:43:36もうちょっと読みやすく書く癖をつけましょう。
0690688
2006/05/07(日) 22:45:13まだ初心者で、ソースも大したことない物だと思うので
一応ソースのリンク張らしてもらいます。ただ、まだ
ダイアログボックスのコントロールからウィンドウ反映される処理は
途中なので単純にIDC_LIST2にの部分での処理について
お願いします。
(出来れば、ここが良くない。ここはこうするべきだ等注意点が
あれば出来ればで結構なのでお願いします。)
http://mitty.jp/up/src/up1783.c
http://mitty.jp/up/src/up1784.rc
0691デフォルトの名無しさん
2006/05/08(月) 00:25:21ソースから解析するのだりぃから、まずexe実行して現象を見てみようと思って、
コンパイルしたらresource.hが見当たらないのでコンパイルできなくて断念です。
ソースで説明するのではなく、ある程度日本語で解説するよう心がけましょう。
0692デフォルトの名無しさん
2006/05/08(月) 01:27:25いや、いまやってる最中だが、resorce.h作って、
.rcからID〜を見つけては.hに
#define ID〜 番号//重複しない値
をふってくのは常識だよ。
後は、
#include <windows.h>
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <tchar.h>
#include<resource.h>
の順にインクルードされるようにしてやる
0693デフォルトの名無しさん
2006/05/08(月) 01:27:47今からAPIやるのに適した言語なんでしょ?
0694デフォルトの名無しさん
2006/05/08(月) 02:14:14分かったよ。
hDlg = CreateDialogとせっかくメインウィンドウと別枠でハンドル作ってるのに、
BOOL CALLBACK MyDlgProc(HWND hWndとやってるからまずい。
MyDlgProcないのイベント処理は、hWndであるが為になんとメインウィンドウにメッセージが来たときの処理になってる。
BOOL CALLBACK MyDlgProc(HWND hDlgとすればいい。
あと、LISTBOX2のリソースのプロパティで垂直スクロールちぇきら!してやれば、そこまでの造りとしては思っているものと一致すると思うが。
0695デフォルトの名無しさん
2006/05/08(月) 03:19:09もっと具体的に言うと、
IDCANCEL:IDOK:IDC_RADIO1:IDC_RADIO2:IDC_LIST2:がメインウィンドウへのメッセージとして処理するが、
各イベント処理でやってることは、MyDlgProcの処理になっている、さらにこれらのIDとメインウィンドウのIDが幸いぶつかっていない。
WM_INITDIALOG:が来てもメインウィンドウはすでに立ち上がっているので、おそらく処理しないのだろう。
したがって、この中でやるはずの
hMain = GetParent(hDlg);
はやらないことになるから、当然後ろのInvalidRectする相手hMainは存在しないから、ダイアログボックスのフォーカスも再描画されない。
0696訂正
2006/05/08(月) 03:21:140697もう一個訂正
2006/05/08(月) 03:45:17IDM_DLG:でダイアログボックスがすでに立ち上がっているので、その後WM_INITDIALOG:が来ても処理しないだろう。
0698デフォルトの名無しさん
2006/05/08(月) 03:59:49バッチやWSHなどのスクリプトファイルをEditアクションに関連付けられている
アプリケーションで開くにはどのAPIをつかえばいいんでしょうか?
Editアクションの定義が無かったらエラー報告とします。
よろしくお願いします。
0699デフォルトの名無しさん
2006/05/08(月) 10:00:30シェルのなんかでそんな事出来た気が
あれ、Editアクション?シラネ
0700デフォルトの名無しさん
2006/05/08(月) 10:08:26また、その方法はサブクラス化ですか?
0701デフォルトの名無しさん
2006/05/08(月) 10:11:43ShellExecute
0702688
2006/05/08(月) 10:11:45ありがとうございます。
ここまで丁寧に説明してもらって
何もお返し出来ないのが残念なくらいです
猫でもわかるwindowsと
W32APIのリファレンス本もみながら勉強してるんですが
猫でもわかるwindowsのソース打っても
なんか、つまらんので、自分なりにソースを作ってる感じです。
本当に、丁寧な説明ありがとうございました。
もっと勉強して、質問にたいして返答できるようにがんばります。
本当にありがとうございました。
0703デフォルトの名無しさん
2006/05/08(月) 10:51:21それで、ハマって他人に聞いてたら世話ねーな・・・
0704デフォルトの名無しさん
2006/05/08(月) 11:21:08くだすれVisual C++(超初心者用)
http://pc8.2ch.net/test/read.cgi/tech/1141087248/
0705デフォルトの名無しさん
2006/05/08(月) 12:23:39自分敵にはSetPixelとは思いますが、自信が無くて・・・。
計測方法でも良いので教えてください。
0706デフォルトの名無しさん
2006/05/08(月) 12:28:4810万回SetPixel呼ぶよりは、1回BitBltした方が早いと思うよ
0707デフォルトの名無しさん
2006/05/08(月) 12:31:42画面サイズ800×600でも、480000回もSetPixel関数呼ぶの。
でも、BitBltなら1回でいいの。
0708デフォルトの名無しさん
2006/05/08(月) 12:43:52ソース先頭に以下のコードを記述すると、
timeGetTime関数が使えるようになる。
#include <mmsystem.h>
#pragma comment(lib, "winmm.lib")
んで、以下のようにしてmsexを計測すればいいじゃなーい。
(ちなみに一例)
DWORD dwTime;
// 開始時
dwTime = timeGetTime();
/* 計測する処理 */
・
・
// 終了時
dwTime = timeGetTime() - dwTime;
0710デフォルトの名無しさん
2006/05/08(月) 12:52:02目的が違うので、比べる意味がない。
ついでに、測定するならプロファイラ使えよ。
0711デフォルトの名無しさん
2006/05/08(月) 13:26:44ShellExecute
0712デフォルトの名無しさん
2006/05/08(月) 13:46:16ありがとう!
目的は一応1x1を描画することでした。
それをSetPixelするか、BitBltで1x1をどこかから取ってきて転送するかで迷ったんです。
一応自分でも計ってみましたが、SetPixelよりもBitBltの方が二倍近く遅かったです。
広範囲を書き出すにはBitBltが早かったです(当たり前)
>>705
BCCなのかどうかは知りませんがプロファイラはありませんでした
もしかしてフリーダウンロードとかが出来るようなものですか?
本当にありがとう!
0713デフォルトの名無しさん
2006/05/08(月) 17:18:01SetWindowTextをメッセージループの中で回すなどとアホなことしてたので
コメントアウトをしたんですが、コメントアウトをするとメッセージループに入る前に
予め読み込んだテキストファイルの一部が文字化けするという、謎の現象が起きていて困ってます。
メッセージループの中でSetWindowTextを呼んでる限りはそんなことないのですが、
常にウィンドウのタイトルがちらつくようになるのでどうにか修正したいです。
文字コード関係かなとも思うのですが、見当が付きません。。。
0714デフォルトの名無しさん
2006/05/08(月) 17:21:090715700
2006/05/08(月) 17:34:54わかりませんかね?
0717デフォルトの名無しさん
2006/05/08(月) 17:47:11\n,\rとか大丈夫か?
0718デフォルトの名無しさん
2006/05/08(月) 17:54:59フォント名に対応するフォントファイルのファイルパスを取得する方法はありますか?
SHGetSpecialFolderPathでフォルダまでは取得できましたがファイル名がわかりません。
0719デフォルトの名無しさん
2006/05/08(月) 18:17:12フォントファイル(*.ttf)は[Fonts]ってフォルダにあるけど、
実際はデータ登録式じゃなかった?
AddFontResource, RemoveFontResourceで、
フォントテーブルにフォントデータをインストールして、
GDIとかそこへ問い合わせるんじゃなかったけ?
EnumFont〜はDC問い合わせで、システム問い合わせじゃない訳だし・・・
0720デフォルトの名無しさん
2006/05/08(月) 18:21:40そこで、フォントファイルヘッダを解析ですよ。
0721デフォルトの名無しさん
2006/05/08(月) 19:01:00(NT系の場合)
0722デフォルトの名無しさん
2006/05/08(月) 19:08:03(9x系の場合)
0724688
2006/05/08(月) 19:34:19非常に適切で親切な細かい返答ありがとうございました
こんどからは、くずたれの方で質問するようにします
0725デフォルトの名無しさん
2006/05/08(月) 19:55:04rundll32.exe shel32l.dll,shellexecuteXX ....ですかね?
XX ....の部分をもう少し調べてみます。
※おおむね察しがつくと思いますが、既存プログラムのパッチをしようとしています。
ありがとうございました。
0726718
2006/05/08(月) 21:03:37テーブルの場所さえわかればこっちのもんです
0727デフォルトの名無しさん
2006/05/09(火) 13:37:58Windowsでファイルシステムを介さずにバイナリデータをべたで
直接デバイスに書き込むには、普通、どんなふうにするんでしょうか。
例えば、USBメモリに書き込む場合、
Unix系だとデバイスを表すファイルが存在するので、
/dev/sda1
なんかをopenしてwriteしてしまえばよいような気がするのですが、
Windowだとどうなるのでしょうか?
もし、すれ違いでしたらすいませんが誘導してください。
よろしくお願いします。
0728デフォルトの名無しさん
2006/05/09(火) 13:53:18MSDNのCreateFile()を隅から隅まで読むことをお勧めする。
取り敢えずディスクであればセクタ単位でアクセスできる。
#それでも直接アクセスできるわけじゃないけどね。
0729デフォルトの名無しさん
2006/05/09(火) 14:13:49ファイルシステムじゃん。
コレじゃ駄目?
http://www.microsoft.com/japan/whdc/device/storage/rem-stor.mspx
0730デフォルトの名無しさん
2006/05/09(火) 14:29:24自分的にはサブクラス化してWM_PAINTの部分を頂いていくのかと思ってますが・・・
0731デフォルトの名無しさん
2006/05/09(火) 14:32:12エディットコントロールを作るハメになるぞ。
0732デフォルトの名無しさん
2006/05/09(火) 14:34:48ボタンはオーナードローで良いんじゃないの?
0733727
2006/05/09(火) 14:51:45>>728
読んでみました。隅から隅までちゃんと読むべきでした。 orz
呆れずに親切に教えて頂いて本当に感謝します。
>>729
僕にはかなり難しそうな気がするのですが、きっとこれから役に立つのでしょうね。
Bookmarkしておきます。
どうもありがとうございました。
0734730
2006/05/09(火) 18:16:08あ、そっか。
例にと思って適当に出したけど、出すべきではなかったね。
>>732
あ、そっか。
単純だ。つか忘れてた・・・。
さすがにタブコントロールとかはサブクラス化しかないかな・・・。
0735デフォルトの名無しさん
2006/05/09(火) 21:41:18>>4
Win32 プログラミング入門
http://www7.plala.or.jp/keny01/windows/win32/
0736デフォルトの名無しさん
2006/05/10(水) 12:46:38kenyyyyyyyyyyyyyy!!!!
0737デフォルトの名無しさん
2006/05/10(水) 13:21:15これで
0738デフォルトの名無しさん
2006/05/10(水) 16:14:05このDLLをLoadLibraryしてDllMainが走る前にメモリ上でパッチを当てたいのですが、
どのような方法がありますか?
LoadLibraryExのDONT_RESOLVE_DLL_REFERENCESが近い動作なのですが、
ドキュメントを読んだ感じではインポートテーブルの解決等はしてくれないようなので・・・
0739デフォルトの名無しさん
2006/05/10(水) 17:24:13やはり「別ファイルを開いてコピー」という方法をとるしかないのでしょうか?
0740デフォルトの名無しさん
2006/05/10(水) 17:37:34ReadFile, WriteFileのOVERLAPPEDを利用して、
同ファイルを読みながら書く事もできますが、
失敗や例外時を考えると別ファイルに転送するのが無難だと思います。
0741sage
2006/05/10(水) 17:42:55そのような API はありますか
0742デフォルトの名無しさん
2006/05/10(水) 17:58:350743デフォルトの名無しさん
2006/05/10(水) 18:05:27あとはヘッダ部分の調べれば完了。
0744デフォルトの名無しさん
2006/05/10(水) 18:16:10�_
0745デフォルトの名無しさん
2006/05/10(水) 19:11:07>>743さんの追記で
BITMAPFILEHEADER構造体,BITMAPCOREHEADER構造体を
ビットマップファイルの先頭部分からReadFile関数で取得するの。
0746デフォルトの名無しさん
2006/05/10(水) 20:15:39Adminでログインしたユーザにだけ実行を許可するようにしたいんだけど。
0747デフォルトの名無しさん
2006/05/10(水) 20:25:09って警告が出たんだけど、どうすれば回避できる?
(NN*)ってキャストすれば無理やりには出来るんだけど、その後の動作に支障が有りそうだし、
警告を避ける正しいやりかたが知りたいです。
教えてー
とりあえずソース
{
NN* s;
s = new NN[10][10];
delete []s;
}
0748デフォルトの名無しさん
2006/05/10(水) 20:26:53属していると考えればいいのか?それとも、セキュリティポリシーで
何らかのユーザ権利が割り当てられているものと考えるべきか。
0749デフォルトの名無しさん
2006/05/10(水) 20:28:580750747
2006/05/10(水) 20:35:00サンクス!
でもなんだこれは?
(NN[10])へのポインタってこと?
勉強不足だなぁ・・・
勉強します。頑張ります。
0751デフォルトの名無しさん
2006/05/10(水) 20:38:55>(NN*)ってキャストすれば無理やりには出来るんだけど
この手もあるのか。
2重ポインタで2次元配列を動的に作る時に
どの段階から作るかは難しいなあ
0752デフォルトの名無しさん
2006/05/10(水) 21:03:44前者です。
ちなみに、NetUserGetLocalGroupsってあるけど、これって
所属しているすべてのグループを取得するんだよね?
あくまで「今」実行したユーザがAdministratorとして実行したか
Userで実行したかを知りたいんだけど。
0753デフォルトの名無しさん
2006/05/10(水) 21:16:45ttp://faqs.org.ru/progr/windows/win32api.htm
の最初のQA。
2番目の look_at_token_method() が752の要求仕様をみたしてると思う。
0754デフォルトの名無しさん
2006/05/10(水) 21:35:56typedef NN[10] ArrayNN;とすれば
ArrayNN* s;
s = new ArrayNN[10];
これをtypedefを使わずに書くと>>749になる。
0755747
2006/05/10(水) 22:04:11配列までtypedefってできるんだ・・・。
すげーわかりやすいです。どうも。全ての謎が解けました(?)
よく考えたらAPI関係無いじゃんってことでスレ違いですね。注意します。
みなさんくすこ
0756デフォルトの名無しさん
2006/05/10(水) 22:09:24thx!
明日会社で試してみます。
0757デフォルトの名無しさん
2006/05/11(木) 00:14:07なんて、そんな仕組みあるもんでしょうか?タイマーで見張るしかないですか?
0758デフォルトの名無しさん
2006/05/11(木) 00:37:470759デフォルトの名無しさん
2006/05/11(木) 01:25:240760デフォルトの名無しさん
2006/05/11(木) 04:00:34それともWM_PAINTをWindowsから送られるものとほぼ割りきって、要所要所で描画したほうがいい?
それともそれとももしかしてアプリケーションの性質による?
どうか教えて
0761デフォルトの名無しさん
2006/05/11(木) 05:35:370762デフォルトの名無しさん
2006/05/11(木) 06:13:35RegNotifyChangeKeyValue
0763デフォルトの名無しさん
2006/05/11(木) 06:15:00//////////////ソースファイル
NOTIFYICONDATA ic;
HICON hic;
---省略----
hic=LoadIcon(GhInst, "IDA_A");
ic.cbSize=sizeof(NOTIFYICONDATA);
ic.hWnd=HND;
ic.uID=2;
ic.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;
ic.uCallbackMessage=5000;
ic.hIcon=LoadIcon(GhInst, "IDA_A");
strcpy(ic.szTip, "こんにちわ");
Shell_NotifyIcon(NIM_ADD ,&ic);
/////////リソーススクリプト
IDI_AICONDISCARDABLE"Icon1.ico"
↑なぜかアイコンは表示されず、トレイには空白が出現します。
カーソルあてるとツールチップは表示されるんですが、、、
どこが悪いのか教えてくださいませ
0764763
2006/05/11(木) 06:17:140765デフォルトの名無しさん
2006/05/11(木) 06:31:500766763
2006/05/11(木) 06:44:51間違ってました(笑
それで、修正したんですが、それでもなぜか空白になってました。
アイコンハンドルをウィンドウクラスに設定したら、タスクバーには正常にアイコンが表示されるんですがね、、
0767763
2006/05/11(木) 08:13:38どうやら、リソースの名前が間違っていたのと、インスタンスハンドルをグローバル変数に代入する所で hInst=GhInst と逆に引数に代入していたようです(笑
プログラミング以前に注意力が足りないようです、、、
考えてくれた方、ありがとうございました。
0768デフォルトの名無しさん
2006/05/11(木) 13:27:20画面の内容は常にメモリビットマップに持っておく。
RPGでキャラが動いた時とか、すぐ描画したい時、
WM_PAINT以外(WM_KEYDONWとか)で、
まず、そのメモリビットマップに更新部分を描画し、
その後、それをウィンドウに描画する。
WM_PAINTが来た時は、
メモリビットマップをBeginPaintで描画する。
0769デフォルトの名無しさん
2006/05/11(木) 14:05:100770760
2006/05/11(木) 15:14:52適当なリージョンを指定して描画ってか。
あー、そっか。盲目になってた。
そう言う方法もあるのか。
>>768
とりあえずhdcFlipとかhbmpFlipとかいう感じで似たようなことはやってるが、
WM_PAINT以外でメモリBMPに描画することは考えて無かったよ・・・。
>>769
残念ながらゲームでした。ゲ板行った方が良かったんかな。
どうやら教えてもらった方法で解決しそうです。
それにゲーム作る知識も広がった気がするし。
みんなありがとう!
0771デフォルトの名無しさん
2006/05/11(木) 21:53:07「Windows SDK編 第1部 第85章 MDIでメモ帳もどきを作る その2」
ttp://www.kumei.ne.jp/c_lang/sdk/sdk_85.htm
のところを勉強していました。
そしたら、WM_CREATEのところにある、
CreateWindowの最後の引数(LPVOID lpParam)が
「(LPSTR)&ccs」となっていました。
ここのところが、なぜLPSTRにキャストしているのかわかりません。
普通に考えたらLPVOIDにキャストするような気がするのですが・・・
わかる方がおられたら教えてください。
お願いします。
0772デフォルトの名無しさん
2006/05/11(木) 21:58:440773デフォルトの名無しさん
2006/05/11(木) 21:59:430774771
2006/05/11(木) 22:06:33コピペでソースを作っていたのですが、
ここは気にせず「(LPVOID)&ccs」にしても問題ないということですよね?
見た目では特に不具合なさそうに見えるので
0775デフォルトの名無しさん
2006/05/11(木) 22:12:030776774
2006/05/11(木) 22:29:23わざわざ「(LPSTR)&ccs」としているので、
キャストするならどっちかっていうと「(LPVOID)&ccs」ではないのかと思ったのですが、
void型にキャストするのは時間の無駄ですよね。
0777デフォルトの名無しさん
2006/05/11(木) 22:33:460778776
2006/05/11(木) 22:35:06誤)void型にキャストするのは時間の無駄ですよね。
正)LPVOID型にキャストするのもやっぱし時間の無駄ですよね。
0780760
2006/05/11(木) 23:42:340781デフォルトの名無しさん
2006/05/11(木) 23:46:38サンプルもキャストまみれじゃん
0782デフォルトの名無しさん
2006/05/11(木) 23:48:13>出来る限り
0783デフォルトの名無しさん
2006/05/11(木) 23:48:46Javaもgenerics導入まではダウンキャストしまくってたけど
0784デフォルトの名無しさん
2006/05/11(木) 23:50:200785デフォルトの名無しさん
2006/05/11(木) 23:58:38ちなみに俺はVOID派
0786デフォルトの名無しさん
2006/05/12(金) 00:01:200788デフォルトの名無しさん
2006/05/12(金) 00:54:28XP風だと上下方向に微妙にグラデーションが掛かってて、単にタブに子ダイアログを
被せると、背景色を似せても完全に溶け込んでくれない
何か定石見たいなものってある?
単にタブのグラデーションと同じ背景色のダイアログが作れれば問題ないんだが
グラデーションのかかったダイアログをわざわざ用意しなきゃいけないの?
つーか、ダイアログの背景にグラデーションを掛けるやり方なんて知らないし・・・・
0789在宅バイトマニュアル
2006/05/12(金) 01:25:01※1時間以内に1万円以上儲からなければ即返金!
(1万円というのはあくまで最低ライン)
★話題の在宅バイトマニュアル★
( 在宅ワーク人気NO.1 )
【参考】
在宅バイトマニュアル ←とネットで検索♪
0790デフォルトの名無しさん
2006/05/12(金) 02:43:581時間で1万円分の仕事が出来なかったら、給料没収ってことじゃんw
0791デフォルトの名無しさん
2006/05/12(金) 02:45:34ってのがポイントなのな。
0792デフォルトの名無しさん
2006/05/12(金) 08:33:170793デフォルトの名無しさん
2006/05/12(金) 11:22:15データマトリックス方式の二次元バーコードを作るソースはどこで手にはいりますか?
または、どこで聞けばいいでしょうか?
0794デフォルトの名無しさん
2006/05/12(金) 11:51:16ttp://www.google.co.jp/
0796デフォルトの名無しさん
2006/05/12(金) 16:03:3232bppに固定したいんですができますか?
0797デフォルトの名無しさん
2006/05/12(金) 20:44:51それをDCに乗せる時に考えれば?
0798デフォルトの名無しさん
2006/05/12(金) 22:20:41マインスイーパの画面を色を読み取って、
それをプログラムの中で行列にしたいのですが、
どういったコマンドを使えば良いのでしょうか?
・画面の読み取り方
・画像から行列データの変換の仕方など
教えてください。
0799デャtォルトの名無bオさん
2006/05/12(金) 22:43:07今時直リンがどうのと言うアナクロニズムを超越したシュールな笑いを提供してくれるのはいいが
それは他でやってくれ
0800デフォルトの名無しさん
2006/05/12(金) 23:19:26例えば,ウィンドウクラス登録で下の関数を使うとして
ATOM 関数名(HINSTANCE hInst)のhInst には WinMainのhCurInstを入れ
ATOM 関数名(HINSTANCE hInst){
WNDCLASSEX wc;
wc.cbSize = (UINT)sizeof(WNDCLASSEX);
・
・
wc.hInstance = hInst;
・
・
return (RegisterClassEx(&wc));
}
で、RegisterClassEx()の戻り値がATOMなので
分かるのですが、他にも自作関数でATOMを使う
場合があるのでしょうか
ヘッダを見ると
typedef unsigned short WORD;
typedef WORD ATOM;
となってますが、利点というか、この時にATOM型を使う
という区別は、返す値の型に依存することになるのでしょうか
あと、ATOM型で変数を宣言するなんて事はあるんでしょうか
HICON型やHCURSOR型や(HBRUSH型などは
なんとなく理解できてるつもりですが、ATOM型に関しては
わからないけど使ってるという状態で
どなたか説明して頂けないでしょうか。
お願いします。
0801デフォルトの名無しさん
2006/05/13(土) 00:08:45http://yokohama.cool.ne.jp/chokuto/urawaza/api/Shell_NotifyIcon.html
第1引数の dwMessage で、NIM_SETFOCUS の解説のところ。
>タスクバー通知エリアにフォーカスを返します。タスクバーアイコンは、
>ユーザーインターフェース操作が完了したときにこのメッセージを送るべきです。
>例えば、タスクバーアイコンにショートカットメニューを表示して、ユーザーが
>ESC キーを押してキャンセルしたときに、このメッセージを送信してフォーカスを
>タスクバー通知エリアに返すべきです。
このあたりがどうもよくわかりません。どんなタイミングでこれを発行すべきなのか・・・?
0802デフォルトの名無しさん
2006/05/13(土) 01:02:12ATOMはどちらかというとローカルアトム・グローバルアトムでお世話になる。
RegisterClass(Ex)などが返すクラスアトムとは混用できないので注意。
0803デフォルトの名無しさん
2006/05/13(土) 06:34:53アセンブラでプログラミングした場合に、
1. システムが何か使えるパラメータを積んでくれているのかどうか
2. ExitProcessでなくretした場合にret 4とかret 8とかでなくretでいいのかどうか
という事です。
ちなみにレスが遅いのはアク禁で代行してもらってるからです。なのですぐにレス書けないですがよろしくお願いします。
0804デフォルトの名無しさん
2006/05/13(土) 08:53:58サンプルプログラムを参考にする
それでわからなかったら検索する
それでもわからなかったら掲示板で質問する
0805デフォルトの名無しさん
2006/05/13(土) 10:46:34AdvancedWindowsに書いてあるが、
Windowsはエントリポイントを引数なしで呼んでいる。
だから、何も積まれていないしretで良い。
0806デフォルトの名無しさん
2006/05/13(土) 15:15:18いちいち気にするオマエの方がどうかと思うが・・
気になるなら専ブラ使うなり、フィルタ掛けるなりしろよ。
それよりも関係ないことでageるな。
0807デフォルトの名無しさん
2006/05/13(土) 15:30:06ageかどうかこそ関係あるまい
直リンと同レベルの都市伝説かっこわりー
0808デフォルトの名無しさん
2006/05/13(土) 15:36:50「よくわからないが名前欄に"sage"て書いて置こう」
と覚えておこう!
0809デフォルトの名無しさん
2006/05/13(土) 16:35:360810デフォルトの名無しさん
2006/05/13(土) 19:16:06該当するAPIはありませんか?
0811デフォルトの名無しさん
2006/05/13(土) 20:01:480812デフォルトの名無しさん
2006/05/13(土) 20:06:220813デフォルトの名無しさん
2006/05/13(土) 20:10:56サービスをLocalSystem以外の権限で動かすには、
ユーザ名とパスワードの入力が要る。
(サービスのログオン設定)
0814デフォルトの名無しさん
2006/05/13(土) 20:13:130815・∀・)っ-○◎● ◆toBASh....
2006/05/13(土) 20:13:4560キーの英語キーボードです。
0816デフォルトの名無しさん
2006/05/13(土) 20:20:25さあね、捨て値で叩き売りしてたやつ・・・ ぱっと見、109かな? それだけ
スペースが左に寄りすぎてなくて電源キーがあればとりあえず何でもいい
@が2のところにあるのでも特に違和感はないし
0817デフォルトの名無しさん
2006/05/13(土) 21:00:17英語キーボードのiBook。
Macは英語配列の方がキーバインド上使いやすい。
0818デフォルトの名無しさん
2006/05/13(土) 21:47:460819796
2006/05/13(土) 23:56:51CreateBitmapなどで32bppのを作って、いったんLoadImageしたのを入れればどうかってこと?
LoadImageで読み込んだ時点で16bppや24bppだとデータの劣化があるわけで
そのあとでいくら32bppに変換しても元のデータと違うのでまずいのですよ。
それなのでLoadImageの時点で確実に32bppで読めるようにできないのか聞きました。
0820796
2006/05/13(土) 23:58:30○16bppだと
0821デフォルトの名無しさん
2006/05/14(日) 00:05:44心配しなくてもソース側 BITMAPFILE の BPP で読まれます。
0822デフォルトの名無しさん
2006/05/14(日) 01:56:44とりあえず作ってみようと思いますた。
とりあえずマクロで、
#define MAKEPOINT(lParam) ((POINT){((lParam & 65535),(lParam >> 16)}))
としました。
しかし・・・
式の構文エラーと出ます。
INT型などの場合は#define aa(i) ((INT)i)などは出来ます。
構造体でこういったことをするにはどうしたらいいのでしょうか?
0823デフォルトの名無しさん
2006/05/14(日) 02:09:05マクロではそれは難しいです。やめた方が良いでしょう。
C++ なら inline 関数でほぼ同じことができるので、そちらを使いましょう。
0824デフォルトの名無しさん
2006/05/14(日) 02:13:31コンパイラがC99対応の必要あり。
http://seclan.dll.jp/c99d/c99d07.htm#dt19991101
0825デフォルトの名無しさん
2006/05/14(日) 02:20:55えっ?
そんなに難しい」のですか?
これのために色々考えてたのですが・・・
それではアドレスが指す場所に直で計算した数値を無理やり突っ込むのはどうでしょうか?
そういうのは無理でしょうか?(そういや環境によって構造体サイズが違うのか・・・)
0826デフォルトの名無しさん
2006/05/14(日) 02:26:20inline関数のことでしょうか?
それにしても、Cで使えるようになっっていたのですね
gccしかないものだと・・・
0827デフォルトの名無しさん
2006/05/14(日) 02:29:26現実問題としてやっぱ C++ でないときついことが多いな
0828デフォルトの名無しさん
2006/05/14(日) 02:40:55そうですね、そろそろ私もC++もするべきかなって思ってます。
やっぱしStringがないのが一番堪える!
0829デフォルトの名無しさん
2006/05/14(日) 03:39:220830デフォルトの名無しさん
2006/05/14(日) 06:22:14関心関心。
0831デフォルトの名無しさん
2006/05/14(日) 12:23:31することってできますか?
0832デフォルトの名無しさん
2006/05/14(日) 12:40:14GetWindowThreadProcessIDとOpenProcessを組み合わせればいいと思う。
0834デフォルトの名無しさん
2006/05/14(日) 15:47:00Vista だと UIPI 関係で失敗する場合があるんじゃなかったっけ?
自分よりも相手の権限のほうが上位だった場合に。
0835デフォルトの名無しさん
2006/05/14(日) 19:05:460836デフォルトの名無しさん
2006/05/14(日) 20:04:59"セキュリティ保護のため・・・"
と表示され、自動的にダウンロードが行われないようになっていますが、
IWebBrowserを使用したIEコンポーネントで同じような機能を実装するには
どうすれば良いのでしょうか?
よろしくお願いします。
0837デフォルトの名無しさん
2006/05/14(日) 20:48:20IEコンポーネントを使い倒すスレ Ver.2
http://pc8.2ch.net/test/read.cgi/tech/1145189322/
0838デフォルトの名無しさん
2006/05/14(日) 21:44:08すまんね。Vista で動かすつもりがないんならいいんだけどさ・・・
0839デフォルトの名無しさん
2006/05/14(日) 23:04:25エラー処理をきちんと組んで突然落ちたりしなければ、大抵それで十分だと思う。
0840デフォルトの名無しさん
2006/05/15(月) 03:13:090841デフォルトの名無しさん
2006/05/15(月) 07:49:25その手の話はここに詳しいけど。
ttp://blogs.msdn.com/nickkramer/archive/2006/04/15/576758.aspx
より権限の高いHWNDから読むことは出来るが、変更は出来ないとか。
(たとえばGetXXX()はできるが、SetXXX()はできない、などと考えていいのかな。)
というかSendInput()を多用しているプログラムが問題になりそう。
まあ、下位互換性を考慮して、抜け道を用意するんだろうけど。
少なくともユーザが権限を指定できるはず。
>>839
下位互換性の問題から、セキュリティ上の問題で失敗しても、エラーが戻ってくることはない。
0842デフォルトの名無しさん
2006/05/15(月) 10:53:32どなたかご教授願います。
よろしくお願いします。
0843デフォルトの名無しさん
2006/05/15(月) 11:32:59WinSock系でgethostbyaddr関数。
0844デフォルトの名無しさん
2006/05/15(月) 15:38:41AT コマンドの ATA でオンフックさせればよいのかなと思うのですが…。
RasDial の電話番号指定を "A" だけにすればよろしいのでしょうか?
ご存知の方、ご教授お願いいたします。
0845デフォルトの名無しさん
2006/05/15(月) 15:48:43NICとNICに設定しているDNSサーバの関係付けを知るためのAPIって有りませんか?
【やりたいこと】
NICの設定をする「インターネットプロトコル(TCP/IP)のプロパティ」みたいな
ダイアログボックスを作りたい。
【ひっかかっている点】
NICとNICに設定しているIPアドレスetcの関係付けはGetAdaptersInfo()で
知ることができるのは理解しています。
DNSサーバを知る手段にGetNetworkParams()が有ることも理解しています。
しかしこの2つのAPIだけでは、NICが複数枚あった場合にどのNICと
どのDNSとが関係しているのかが不明なので、ここでの質問に及んだというわけです。
よろしくおながいします。
0846デフォルトの名無しさん
2006/05/15(月) 18:27:130847デフォルトの名無しさん
2006/05/15(月) 18:34:210848デフォルトの名無しさん
2006/05/15(月) 18:58:58なんでNICとDNSが関連付くんだ?単にWindowsの標準設定ダイアログが
そうなってるだけだろ?
0849845
2006/05/15(月) 20:20:50そういえば、そうですね(^^;)。設定のダイアログと同じようなものを作ろうとしてたので
NICとDNSの設定が対になっていると思い込んでました。
確かにFreeBSDなんかNICとIPアドレスの設定は/etc/rc.confにして
DNSの設定は/etc/resolv.confにするもんなぁ…
ありがとうございました。
0850デフォルトの名無しさん
2006/05/15(月) 20:38:06わんわんわん、わん
(それでも納得いかないなら)
わんわわんわん、わんわわんわんわん わんわんわん
(WMIのWin32_NetworkAdapter,Win32_NetworkAdapterConfigurationで情報を取得するってのがある)
わんわん
0851デフォルトの名無しさん
2006/05/15(月) 21:21:28俺もわん。
0852デフォルトの名無しさん
2006/05/15(月) 21:22:260853デフォルトの名無しさん
2006/05/15(月) 21:30:240854デフォルトの名無しさん
2006/05/15(月) 22:08:290855デフォルトの名無しさん
2006/05/15(月) 22:54:07PCに1つあれば十分
0856デフォルトの名無しさん
2006/05/15(月) 22:58:53> (たとえばGetXXX()はできるが、SetXXX()はできない、などと考えていいのかな。)
ああ、なるほど。じゃあ、FindWindow くらいなら問題ないのかな。
…と思ったらそのブログには要注意 API として挙げられてるなあ。
わけわからん。
> まあ、下位互換性を考慮して、抜け道を用意するんだろうけど。
> 少なくともユーザが権限を指定できるはず。
XP のときのように個々のアプリごとに互換性ダイアログが用意されている。
問題が起きたらこれを使って権限を上げとけ、ということらしい。
0857デフォルトの名無しさん
2006/05/15(月) 23:04:30∧__∧
/ - - \
| ▼ |
/|=(_人_)= | < 日本語でおk
/ ヽ、____ノ
`Jr ___ ノ
∪⌒∪ ∪
0858デフォルトの名無しさん
2006/05/15(月) 23:29:17LogonUser()を使いたいんでう。
0859デフォルトの名無しさん
2006/05/15(月) 23:37:33俺もでう。
0860デフォルトの名無しさん
2006/05/15(月) 23:59:27実際に使われるプロセスIDの範囲って決まってたりするんでしょうか?
0861デフォルトの名無しさん
2006/05/16(火) 00:18:540862デフォルトの名無しさん
2006/05/16(火) 05:19:57無限ループでプロセス作ってみたら?
0863デフォルトの名無しさん
2006/05/16(火) 09:23:33スクリーンセーバーを猫の本みながら作ってたんですがリンカでエラー
がでてしまいます。
どうすれば良いのでしょうか。教えて下さい。
#include <windows.h>
#include <scrnsave.h>
#include "resource.h"
#pragma comment(lib, "scrnsave.lib")
#pragma comment(lib, "comctl32.lib")
#define ID_TIME 100
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;
}
のようなソースで
scrnsave.lib(scrnsave.obj) : error LNK2019: 未解決の外部シンボル _ScreenSaverProc@16 が関数
_RealScreenSaverProc@16 で参照されました
となります。
何が足りないのかわからないです。すいませんが、教えて下さい
0864デフォルトの名無しさん
2006/05/16(火) 09:39:35よくわからんけどなんでScreenSaverProcWってWついてんの?
0865デフォルトの名無しさん
2006/05/16(火) 09:43:11実はそれが正解かもわん
0866デフォルトの名無しさん
2006/05/16(火) 09:43:15あなたのソースをコピペして実行してみた結果です。
ss.cpp
リンク中...
scrnsave.lib(scrnsave.obj) : error LNK2001: 外部シンボル "_ScreenSaverProc@16" は未解決です
Release/ss.exe : fatal error LNK1120: 外部参照 1 が未解決です。
link.exe の実行エラー
ss.exe - エラー 2、警告 0
0867デフォルトの名無しさん
2006/05/16(火) 10:49:04scrnsave.h 見た。
実体は UNICODE で分岐してるね ScreenSaverProc/ScreenSaverProcW
# コード記述時は UNICODE に関わらず ScreenSaverProc を要求しているようだけど
0868デフォルトの名無しさん
2006/05/16(火) 11:14:530869デフォルトの名無しさん
2006/05/16(火) 11:19:57//#pragma comment(lib, "scrnsave.lib")
#pragma comment(lib, "scrnsavw.lib")
通った
0870デフォルトの名無しさん
2006/05/16(火) 11:21:17は
#include <windows.h>
#include <scrnsave.h>
より前に必要
/D でも可?
0871デフォルトの名無しさん
2006/05/16(火) 11:27:09#include <windows.h>
#include <scrnsave.h>
#include "resource.h"
#pragma comment(lib, "scrnsavw.lib")
#pragma comment(lib, "comctl32.lib")
#define ID_TIME 100
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;
}
これでFA?
0872863
2006/05/16(火) 12:12:48でUNICODEでビルドしてるので
>>869さんの
#pragma comment(lib, "scrnsavw.lib") ←
#pragma comment(lib, "comctl32.lib")
でいけました
ありがとうございました
他にもwになってるのがおおいのかな
0873デフォルトの名無しさん
2006/05/16(火) 12:14:55#define UNICODE
#define _UNICODE
と2つ書くのでおk?
0874デフォルトの名無しさん
2006/05/16(火) 12:21:34>VS2005std
>でUNICODEでビルドしてるので
それを最初に書かんかいゴルア
0875デフォルトの名無しさん
2006/05/16(火) 12:24:02そです
0876デフォルトの名無しさん
2006/05/16(火) 14:53:59キーボードフックしてあるアプリケーションに別のアプリケーションから、
PostMessageでWM_KEYDOWN/UPを投げてもフックプロージャが呼ばれません。
これをどうにかする良い知恵ありませんか?
0877デフォルトの名無しさん
2006/05/16(火) 14:59:000878デフォルトの名無しさん
2006/05/16(火) 16:21:010879デフォルトの名無しさん
2006/05/16(火) 16:26:410880デフォルトの名無しさん
2006/05/16(火) 16:47:53どなたかご教授ください。
↓のようなc言語ソースなんですが、どこが悪いんでしょうか?
WINHND=FindWindow(NULL,"メモ張");
PostMessageA(WINHND,WM_RBUTTONDOWN ,0,0x012C012C);
PostMessageA(WINHND,WM_RBUTTONUP,0,0x012C012C);
正常ならメモ張の300x300の所に右クリメニューが出るはずなんですが・・
0881デフォルトの名無しさん
2006/05/16(火) 16:56:190882デフォルトの名無しさん
2006/05/16(火) 17:00:40>Windowsについてくる、メモ帳にメッセージ送ろうとしてるわけではないよね?
そうです。無理なんですか?
無理だとしたら、メモ張だから(windowsについて来るアプリだから)という事ですかね?
0884デフォルトの名無しさん
2006/05/16(火) 17:16:05880のコードではメモ帳の親ウィンドウにメッセージを送っているが、
エディタ部分(おそらく標準のエディットコントロール)の方に送ってやらないとダメなんじゃないか。
0885デフォルトの名無しさん
2006/05/16(火) 17:19:54×メモ張
○メモ帳
0886デフォルトの名無しさん
2006/05/16(火) 17:27:26hNotepad = FindWindow("Notepad", NULL);
hEdit = FindWindowEx(hNotepad, NULL, "Edit", NULL);
PostMessageA(hEdit, WM_RBUTTONDOWN ,0, 0x012C012C);
PostMessageA(hEdit, WM_RBUTTONUP, 0, 0x012C012C);
0887デフォルトの名無しさん
2006/05/16(火) 17:28:11SPY++ でみた。
エディタ部分は標準のEDITコントロールだーね(サブクラス化されてるかはワカランけど)
0888デフォルトの名無しさん
2006/05/16(火) 17:45:350889880
2006/05/16(火) 18:15:18なるほど。表示されてるウィンドウに送ればいいってもんじゃないんですね。
0890デフォルトの名無しさん
2006/05/16(火) 21:56:50typedef struct 構造体
{
WNDPROC fnSubProc;//親のプロシージャ
・・・
}構造体;
と前もってこの構造体を作っていました。
サブクラス化したときの戻り値である親ウィンドウのアドレスを
構造体 *a;
a = (構造体*)malloc(sizeof(構造体));
SetWindowLong(hWnd,GWL_USERDATA,a);
a->fnSubProc = (WNDPROC)SetWindowLong(hWnd,GWL_WNDPROC,(LONG)SubProc);
といったふうにこの構造体内に入れました。
そして領域の開放は、SubProc内のWM_DESTROYにて、
構造体 *b;
b = (MYDATA *)GetWindowLong(hWnd,GWL_USERDATA);
free(b);
return 0;
と開放処理を入れました。
これでとりあえずは動いていました・・・、終了処理以外。
エラーの原因は、WM_DESTROYした後にもSubProcが来ていて、
既に消した構造体を参照しようとしているからだと思うのですが
WM_DESTROY以降に来るメッセージがわかりません。
それにこの方法自体してはいけないのかもわかりません。
長くなりましたが、どなたか教えてもらえないでしょうか。
0891デフォルトの名無しさん
2006/05/16(火) 22:01:46最後に来るメッセージは WM_NCDESTROY 。
ドキュメントのどっかに載ってます。
あと将来のことも考えて、
LongPtr とか GetWindowLongPtr の使用も考えてください。
0892デフォルトの名無しさん
2006/05/16(火) 22:30:08はやい書き込み、ありがとうございます。
WM_DESTROYをWM_NCDESTROYに変えたらエラーが出ませんでした。
ほんとうにありがとうございました。
0893デフォルトの名無しさん
2006/05/16(火) 23:01:20LPCWSTRでも使えるWriteFileみたいな関数はないでしょうか?
0894デフォルトの名無しさん
2006/05/16(火) 23:05:000895デフォルトの名無しさん
2006/05/17(水) 01:35:200896デフォルトの名無しさん
2006/05/17(水) 02:24:490897デフォルトの名無しさん
2006/05/17(水) 03:17:39http://www.kumei.ne.jp/c_lang/sdk/sdk_00.htm←このプログラム
ですので、
そのプログラムの先頭に
#define UNICODE
#define _UNICODE
をつけ、
「char szClassNme[] = "ウィンドウクラス・ネーム";」などを
「LPCTSTR szClassNme = TEXT("ウィンドウクラス・ネーム");」
に変更して実行しました。
ですが結果なのですが
if (!RegisterClass(&myProg)) return FALSE;
のところで処理を抜けているみたいです(MessageBoxで確認)。
なにがだめ駄目だったのかわかりません。
どなたか教えてもらえないでしょうか?
0898デフォルトの名無しさん
2006/05/17(水) 03:42:34GetLastErrorは?
0899デフォルトの名無しさん
2006/05/17(水) 05:51:34動かないものを動くようにするのは初心者には無理
0900デフォルトの名無しさん
2006/05/17(水) 12:06:47できれば、Picasa2みたいなイカス外観とか、スキンのような仕組みを取り入れないんですけど、
フレームワークのような物があるんでしょうか?
何か情報ありましたら教えてください、よろしくお願いします。
0901デフォルトの名無しさん
2006/05/17(水) 12:27:47後始末なら サブクラス化前の WNDPROC を書き戻した方が良くないかい?
0902897
2006/05/17(水) 14:17:53UNICODEにしたらメッセージボックスの文字列がおかしくなっていました。
ですのでわかりませんでした。
>>899
UNICODEでなかったら動きました。
0903デフォルトの名無しさん
2006/05/17(水) 14:33:55プログラムの先頭って、具体的にどこ?
ヘッダファイルの宣言より上だよね?
0904デフォルトの名無しさん
2006/05/17(水) 14:37:52OS が Windows 98 とか ME なんじゃないでしょうか。
0905デフォルトの名無しさん
2006/05/17(水) 14:38:42ヘッダファイルより下だと、ANSIに切り替わるだけじゃない?
0906デフォルトの名無しさん
2006/05/17(水) 14:40:44ANSIコードにしときならが、pragma で WIDE側 lib 連結してたら ワケワカ状態になる可能性が
0908デフォルトの名無しさん
2006/05/17(水) 14:48:26WinAPIはdefineで切り替えてるから問題なくね?
0909デフォルトの名無しさん
2006/05/17(水) 14:52:41あ API は シンボル名 違うから、衝突なんておきないか。
# 元質問のリンカエラーがそうだったし
0910デフォルトの名無しさん
2006/05/17(水) 14:55:58どういう環境で書いてるのかシランが、
デバッガの使い方を覚えるか、デバッガを使える環境に移行することを勧める
0911デフォルトの名無しさん
2006/05/17(水) 15:01:08帰ってきたエラーコードは 0x00000078 、原因は 897 が WIndows98/ME/95を
使っているから。以上でオシマイ。
0913デフォルトの名無しさん
2006/05/17(水) 15:05:52すまねぇ SDK見りゃ一発だわな
RegisterClass
Unicode: Implemented as Unicode and ANSI versions on Windows NT/2000.
0914897
2006/05/17(水) 15:16:20すんません、自分がばかでした。
XPばかりだったので忘れてたみたいです。
つきあってくれてありがとうございました。
0915デフォルトの名無しさん
2006/05/17(水) 16:49:12Microsoft Layer for Unicodeを使えば9xでも一応Unicode版APIが使える。
0916デフォルトの名無しさん
2006/05/17(水) 20:23:36ツールバーのチェック状態を得るにはどうしたらいいのでしょうか?
0917デフォルトの名無しさん
2006/05/17(水) 20:37:000918デフォルトの名無しさん
2006/05/17(水) 20:44:580919デフォルトの名無しさん
2006/05/17(水) 22:05:260920デフォルトの名無しさん
2006/05/18(木) 01:18:240921デフォルトの名無しさん
2006/05/18(木) 01:19:210922872
2006/05/18(木) 02:38:32すんません
>>897さん
猫でもの本を買った俺からの意見
「なんでこんなにグローバルで変数宣言してんだ」
「なんで、こんなに変数を初期化せずに使ってるんだ」
「この変数は関数内だからグローバルじゃなくてstaticで関数内で宣言すれば良いじゃねぇか」
「なんで、こんなにAPIについて説明が中途半端なんだ」
「おいおい、このAPIについての説明はこれだけ?」
「初心者の俺みたいな奴に、EnableMenuItem()を初めて説明するときに
フラグをMF_BYCOMMANDで指定させるか?」
「リソースの名前を""で囲めば楽ですよ、ってMAKEINTERESOURCE()使った方がもっと楽じゃねーかよ」
「なんで、毎回ウィンドウクラスの登録とCreateWindowするとこだけは律儀に
書いてんだよ、で、前の章では使ってない関数とかをなんで太字にしたりしなかったり」
「この変数どこで宣言してんだよ・・・・あ、またグローバルで宣言してるよ」
「あれ、本通り打ち込んだのに動かない、あれこの関数宣言してるのに使ってない
・・・って、急に別ページにのこりの関数書くなよ」
「ライブラリを#pragma command(lib, "〜")する仕方の説明なしかよ(この板で
教えてもらったよ)」
「別に拡張子で判断されないのは分かるけど、せめて.cppはやめようよ」
「なんだか、この本のプログラムの書き方を身につけて良いのだろうか・・・・」
と、いう過程によりくずたれな俺がリファレンス本を買いプログラムの書き方について
考えさせられ、自発的に向上をうながしてくれる良い本だよ。
一度買ってみると良い。だんだんいらついてくるきてやる気薄れてくるから。
ただ、俺は一応全部UNICODE変えて書いてて
世の流れもそうなっていくらしいからそうしてるけど、ANSIの方が良いのかな
くずたれの俺にはわからない。
0923デフォルトの名無しさん
2006/05/18(木) 02:42:05NTカーネルの内部は、すべてUTF-16になっている。
いまのANSI版のAPIは、すべてWide版のラッパに過ぎない。
当然、ANSI版のAPIを使うと、文字コード変換のオーバーヘッドが生じる。
MSもUNICODEに移行したがっているけど、過去との互換性の問題で、なかなかうまくいかない。
今までに書かれ、今もなお動いているコードが多すぎるから。
やっと、VCから、デフォルトの文字コードがUNICODEになったけどね。
本格的に移行するには、あと5年から10年はかかるのかな。
0924デフォルトの名無しさん
2006/05/18(木) 05:52:16「猫でも〜」はWebで全部見られるから本買う気が起きない
0925デフォルトの名無しさん
2006/05/18(木) 06:16:53書いた本人は同じだからな
0926デフォルトの名無しさん
2006/05/18(木) 07:54:59まとまったものはなかった。オレには有り難かった。昔はメールで聞くと教えて
くれた。あれを最新版にするため見直すってのは、マ大変だな。
世話になって感謝の気があるならたまにアクセスしてアクセス回数を増やして
礼の代わりにしたがいい。いずれは陳腐化して消えるだろうが、出来るだけ
残ってほしいと思う。
0927デフォルトの名無しさん
2006/05/18(木) 07:56:430928デフォルトの名無しさん
2006/05/18(木) 08:20:31初心者の場合は特にそう
ただサンプルがいっぱいあるから使える。
0929900ですが、
2006/05/18(木) 12:16:36何方かスレ紹介してくれませんでしょうか?
0930デフォルトの名無しさん
2006/05/18(木) 14:12:220931デフォルトの名無しさん
2006/05/18(木) 14:36:17codeprojectから
ttp://www.codeproject.com/wtl/SkinX.asp
ttp://www.codeproject.com/dialog/skindlg.asp
あとは、MediaPlayerみたいにリージョンで切り抜くとか
0932デフォルトの名無しさん
2006/05/18(木) 16:17:53SetLayeredWindowAttributes で
ゴニョゴニョする方がクール
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwui/html/layerwin.asp
0933デフォルトの名無しさん
2006/05/18(木) 16:29:190934デフォルトの名無しさん
2006/05/18(木) 16:33:350935デフォルトの名無しさん
2006/05/18(木) 17:21:00あのForm作成画面で作成されるボタンとかはCreateWindowで作ったボタンに、
フォーカスが移動したとき、
そのボタンの上にサイズ変更の枠の形をしたWindowを重ねるという処理して実現させているのでしょうか?
0936デフォルトの名無しさん
2006/05/18(木) 17:24:520937デフォルトの名無しさん
2006/05/18(木) 17:31:080938デフォルトの名無しさん
2006/05/18(木) 18:07:020939デフォルトの名無しさん
2006/05/18(木) 18:09:330940デフォルトの名無しさん
2006/05/18(木) 18:17:48それはなんなのでしょうか?
作り方わかんない・・・
0941デフォルトの名無しさん
2006/05/18(木) 18:28:190942デフォルトの名無しさん
2006/05/18(木) 18:34:06コントロールじゃないんだからspy++で見ても意味無いだろ
>>935
DrawFrameControl()とか使って自前で描画してください
0943デフォルトの名無しさん
2006/05/18(木) 18:56:23VC6のはそのまんま実物だな
あとは知らん
0944デフォルトの名無しさん
2006/05/18(木) 19:24:26そんなのがあったんだ・・・
この関数の内容を見たら
ボタン、タイトルバー、メニュー、スクロ−ルバー
しか出来ないみたいですが
EDITやSTATICは自分で書くしかないのですか?
0945デフォルトの名無しさん
2006/05/19(金) 00:59:000946デフォルトの名無しさん
2006/05/19(金) 02:39:05背景が白くなってしまいます。
背景を白く塗らなくするにはどうしたらいいのでしょうか?
0947946
2006/05/19(金) 02:48:01SetBkMode(hdc,TRANSPARENT);
0948デフォルトの名無しさん
2006/05/19(金) 07:03:560949デフォルトの名無しさん
2006/05/19(金) 07:55:180950デフォルトの名無しさん
2006/05/19(金) 11:32:55次スレ立てたわん
0951デフォルトの名無しさん
2006/05/19(金) 11:48:17乙
0952デフォルトの名無しさん
2006/05/19(金) 14:25:47ラジオボタンやチェックボックスは、
ボタンの位置やサイズ、テキストの位置は自分で計算するしかないのでしょうか?
0953デフォルトの名無しさん
2006/05/19(金) 14:29:10DrawFrameControl は現状殆ど使い物にならないからやめた方がいいよ。
本物のコントロールを配置して、手前をWS_EX_TRANSPARENTなウィンドウで
覆っておくのがお勧め(何か上書きしたいならそのウィンドウで)。
0954デフォルトの名無しさん
2006/05/19(金) 14:42:22やっぱしそうですか・・・。
「ボタンだけならどうにかなるけどチェックボックスとかはどうするのこれ?」って
結構迷いました・・・
というわけど教えてもらった方法を考えてみたいと思います
0955デフォルトの名無しさん
2006/05/19(金) 14:44:570956デフォルトの名無しさん
2006/05/19(金) 14:46:27最初から自分で作ればいいんじゃないか
0957デフォルトの名無しさん
2006/05/19(金) 14:51:03まぁ、そうでしょうけど作るのがしんどいだろうし(自分のレベルじゃ)
できたとしても違うものが出来そうなので・・・
0958デフォルトの名無しさん
2006/05/19(金) 19:46:430959埋めようぜ
2006/05/19(金) 20:04:50自分の写真と某アニメのロリキャラとの合成プリントシャツ着たキモオタデブ
0960デフォルトの名無しさん
2006/05/19(金) 21:12:370961デフォルトの名無しさん
2006/05/19(金) 21:18:560962デフォルトの名無しさん
2006/05/19(金) 21:25:060963デフォルトの名無しさん
2006/05/19(金) 21:25:59、、、、
_彡_, ,_ヾ
/∩|;`"皿`"|) =3
くヘ | ̄ヽL| |」 ]つ ┐
|j、__| |_| ┰'’
|__|_| _||_ (○)
|__)_) | ∪ | |/)
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
⊂⌒~⊃。Д。)⊃
0964デフォルトの名無しさん
2006/05/19(金) 21:26:020965デフォルトの名無しさん
2006/05/19(金) 21:28:470966デフォルトの名無しさん
2006/05/19(金) 21:39:52...
int exit_func()
{
0967デフォルトの名無しさん
2006/05/19(金) 21:56:57灰色じゃない色(例えば、赤)に変えるにはどうしたらいいのでしょうか?
0968デフォルトの名無しさん
2006/05/19(金) 22:11:040969デフォルトの名無しさん
2006/05/19(金) 22:36:01それくらい自分で作れ。
そういえばMFC/ATLのCRectにはPOINTとSIZEを受け取るコンストラクタがあった気がする。
0970デフォルトの名無しさん
2006/05/19(金) 22:41:46そういう関数が最初からあるんだったら
そちらを使ったほうがいいかなと思ったのでとりあえず・・・
ないのでしたら自作します。
0971デフォルトの名無しさん
2006/05/19(金) 22:48:580
, dwExceptionFlags //復帰不可能
, 0, NULL ) ;
0972971
2006/05/19(金) 22:51:48//素で間違えたOrz
0973デフォルトの名無しさん
2006/05/20(土) 02:06:49お前らこのスレを埋めろ
0974デフォルトの名無しさん
2006/05/20(土) 02:10:070975デフォルトの名無しさん
2006/05/20(土) 10:32:03単純にコピーでいいとは限らない訳だがみんなはどうしてる?
0976デフォルトの名無しさん
2006/05/20(土) 10:46:30class RECT
{
::RECT rect ;
public :
RECT(::POINT left_top, ::POINT right_bottom)
{
rect.left = left_top.x ; rect.top = left_top.y ;
rect.right = right_bottom.x ; rect.bottom = right_bottom.y ;
}
operator ::RECT() { return rect ; }
} ;
} //namespace foo
うーん、激しく車輪の再発明な気がしないでもない。
0977デフォルトの名無しさん
2006/05/20(土) 11:27:35元の POINT の中身も換わって欲しかったりすることない?
0978デフォルトの名無しさん
2006/05/20(土) 11:35:080979デフォルトの名無しさん
2006/05/20(土) 11:46:410980デフォルトの名無しさん
2006/05/20(土) 11:48:430982デフォルトの名無しさん
2006/05/20(土) 13:18:18インスタンスにデータをコピーしてるってことです
0983デフォルトの名無しさん
2006/05/20(土) 13:18:54コピってるっていう意味は元のPOINTのデータを
RECTのインスタンスにコピーしてるってことです
0984デフォルトの名無しさん
2006/05/20(土) 13:20:50// CRect
_AFXWIN_INLINE CRect::CRect()
{ /* random filled */ }
_AFXWIN_INLINE CRect::CRect(int l, int t, int r, int b)
{ left = l; top = t; right = r; bottom = b; }
_AFXWIN_INLINE CRect::CRect(const RECT& srcRect)
{ ::CopyRect(this, &srcRect); }
・・・
こういうのが延々と続いていました
0985976
2006/05/20(土) 13:48:09ここで、POINT構造体のラッパも用意してみる。
処理は全部、全部クラス内に記述する。
RECT rect = foo::RECT(foo:POINT(0, 0), foo::POINT(640, 480)) ;
賢いコンパイラなら、インライン展開したほうが得であると考えて、
インライン展開->さらに最適化->普通のRECT構造体に値を設定した場合と、なんら変わらない処理に。
というかコピーとかいうのは、どういう意味で使っているのだろう。
0986976
2006/05/20(土) 13:49:37普通のRECTなら、
RECT rect = {0, 0, 640, 480} ;
でいいか。
0987デフォルトの名無しさん
2006/05/20(土) 16:40:030988デフォルトの名無しさん
2006/05/20(土) 16:53:20わかりにくくてすみません
POINT p1 = { 5, 7 };
POINT p2 = { 13, 31 };
RECT r = hoge(p1, p2);
ここまではみなさんの考えてることと同じなのですが、
r.lefttop.x = 3;
としたときに、もとの
p1.x も 3 になってほしいのです
0989デフォルトの名無しさん
2006/05/20(土) 16:59:220990デフォルトの名無しさん
2006/05/20(土) 17:01:18struct HOGE
{
POINT lefttop ;
POINT rightbottom ;
} ;
こんな感じかな。
こんなあほみたいなテクニックを使う、
わかりにくいコードなんて、読みたくないが。
0991デフォルトの名無しさん
2006/05/20(土) 17:11:110992デフォルトの名無しさん
2006/05/20(土) 17:15:56オーケー>>988を読み直した。
コンストラクタでp1,p2の参照を取って、メンバに保持しておき、
RECTフェイクなクラスが変更されたら、参照も変更する。
ますます読みたくないコードだ。
0993デフォルトの名無しさん
2006/05/20(土) 17:26:100994デフォルトの名無しさん
2006/05/20(土) 17:27:460995デフォルトの名無しさん
2006/05/20(土) 17:28:250996デフォルトの名無しさん
2006/05/20(土) 17:30:050997デフォルトの名無しさん
2006/05/20(土) 17:30:270998デフォルトの名無しさん
2006/05/20(土) 17:31:260999デフォルトの名無しさん
2006/05/20(土) 17:31:451000デフォルトの名無しさん
2006/05/20(土) 17:32:2710011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。