トップページ⇒tech
279コメント79KB

Win32API質問箱 Build13

■ このスレッドは過去ログ倉庫に格納されています
0001前スレ953NGNG
.NET Framework!? 知らんな!!
そんなヤル気のあるネィティブプログラマ集まれ!
スレ立てるまでもない、Win32APIについての質問はこちらへどうぞ。
やさしい お兄ちゃん 達が答えてくれるかも。
でも、質問する前に検索ぐらい汁!!
過去スレ・参考は>>2 ぐらい...
0002前スレ953NGNG
● MSDN Online
http://www.microsoft.com/japan/msdn/default.asp
● 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/index.html

● 過去スレ
Win32API 質問箱 Build12
http://pc2.2ch.net/test/read.cgi/tech/1056033645/
Win32API 質問箱 Build11
http://pc2.2ch.net/test/read.cgi/tech/1052651750/
Win32API 質問箱 Build10
http://pc2.2ch.net/test/read.cgi/tech/1047819779/
Win32API 質問箱 Build9
http://pc2.2ch.net/test/read.cgi/tech/1044929160/
Win32API 質問箱 Build8
http://pc2.2ch.net/test/read.cgi/tech/1040964626/
Win32API 質問箱 Build7
http://pc3.2ch.net/test/read.cgi/tech/1036654893/
Win32API 質問箱 Build6
http://pc3.2ch.net/test/read.cgi/tech/1032548635/
Win32API 質問箱 Build5
http://pc3.2ch.net/test/read.cgi/tech/1028580373/
Win32API 質問箱 Build4
http://pc3.2ch.net/test/read.cgi/tech/1023361418/
Win32API 質問箱 Build3
http://pc.2ch.net/tech/kako/1006/10067/1006783012.html
Win32API【2】
http://pc.2ch.net/tech/kako/1006/10067/1006783012.html
Win32API 質問箱
http://pc.2ch.net/tech/kako/991/991576947.html
0003デフォルトの名無しさんNGNG
☆貴方を癒す美女が待ってます(^−^)☆
http://endou.kir.jp/yuminet/link.html
http://endou.kir.jp/marimo/link.html
0004_NGNG
http://homepage.mac.com/hiroyuki44/kaz04.html
0005デフォルトの名無しさんNGNG
もつかれ
0006デフォルトの名無しさんNGNG
>>1 乙

早速だけど、質問。

コントロールパネル → マウス → ポインタとたどっていくと、
表示可能なシステムカーソル一覧が表示されるけど、
その中の 「手書き」とかかれているカーソルをシステムカーソルとして
呼び出すことは可能ですか?

SetCursor( LoadCursor( 0, IDC_WAIT ) );
のように呼び出したいのですが。
0007_NGNG
http://homepage.mac.com/hiroyuki44/hankaku09.html
0008デフォルトの名無しさんNGNG
>>6
勘と試行錯誤の結果IDは32631らしい。
LoadCusor(0, MAKEINTRESOURCE(32631))
しかし32631や7F77で検索してもドキュメントが見つからない。
使用は控えるべきかも。
0009デフォルトの名無しさんNGNG
APIでいいのかなぁ。適切なスレがあったら誘導お願いします。

仮想リストコントロール(オーナーデータ)なるものに手を出してみたんですが、
LVN_GETDISPINFOでテキストを返す正しい方法がわからないでつ。

LPNMLVDISPINFOのitem.pszTextに指定するというのは分かるんですが、
文字列へのポインタを指定するのか、こいつにコピーしていいのかが分からないのです。

なんでこんなところで詰まってるかというと……
MSDNの仮想リストコントロールのページ(日本語)のサンプルコードはlstrcpyしてる。
一方、MSDNからDirlv.exeっつーサンプルを落としてみると、
staticなバッファのポインタを渡している。

という実体でして。どっちが正しいんですか?(つД`)
間違ったらかなり痛い事態を引き起こしそうだよ……
00109NGNG
sageてるし……

解には辿り着いてないんですが、少し見えてきました。

item.cchTextMaxを覗いてみると260, 264, 1024の3種類が入ってくるようです。
列挙時に260、マウスでポイントすると264と1024という感じ。
pszTextの方もその3種類毎に固定のアドレスが入ってる模様。

これはバッファが用意されてると考えてよいのでしょうか。


となると別のアドレスを突っ込むと勝手に解放されたりする危険が
ありそうなんですが、用意されているバッファが固定なところから察するに
逐一確保/解放してるわけではなさそうなので大丈夫なのかな。
0011デフォルトの名無しさんNGNG
>>9
MSDNの説明だと、どっちでもいいみたいだね。
ただ、ポインタを突っ込む場合は、その項目が削除されるまで
文字列を解放したり中身を変更しちゃいけないと。

>>8
penwin.hに入ってるIDC_PENってのがそれっぽい。
00129NGNG
>>11
むぅ、どっちでもいいんですか。
とりあえずlstrcpynする方向で進めてみます。
0013デフォルトの名無しさんNGNG
俺はアイテムのlparamにnewした文字列へのポインタを入れといて、
そのポインタを突っ込んでる。
0014デフォルトの名無しさんNGNG
LVM_INSERTITEMで自分で設定したのがコピーされるのではないのか?
00159NGNG
>>13-14
LVS_OWNERDATAなので、LVM_INSERTITEMとかはしないです。
0016デフォルトの名無しさんNGNG
外部アプリのメニューを操作するプログラムを作りたいのですが、
どうすればいいでしょうか?
具体的には「既に起動しているプログラムをひとつ選んで
ファイル(F)→開く(O)を実行する」みたいなことができるプログラムです。
keybd_event以外で作りたいのですが、いい方法があったら教えてください。
お願いします。
0017名無し@沢村NGNG
学校のおじさんのつくったWin32APIでプログラミングしている、へたれたちのいるスレはここですか?
0018 NGNG
WM_COMMANDでもポストすれば?
0019デフォルトの名無しさんNGNG
Win32 APIじゃ無いかもしれませんが
以下のソースがコンパイルできないのはなぜなのでしょうか?

struct S_STR
{
const int i;
} g_i[] ={
1,2,

};

// エラー
error C2440: 'initializing' : 'const int' から 'struct S_STR' に変換することはできません。(新しい動作 ; ヘルプを参照)
コンストラクタはソース型を持てません、またはコンストラクタのオーバーロード レゾリューションがあいまいです。

環境
DEV VC++6.0
OS Windows2000
C++ソース
002019NGNG
もうチョット判りやすくしました.
(違うものになってる気が...)

struct S_STR
{
const int i;
const int j;
} g_ij[] ={
{1,1},
{2,2}
};

//エラー
error C2440: 'initializing' : 'const int' から 'struct S_STR' に変換することはできません。(新しい動作 ; ヘルプを参照)
コンストラクタはソース型を持てません、またはコンストラクタのオーバーロード レゾリューションがあいまいです。
0021デフォルトの名無しさんNGNG
思い切りスレ違いじゃないですか。何考えてんですか。
0022デフォルトの名無しさんNGNG
いいですよ、コンパイルしてください。勘違いソースを。それで満足したら帰って下さい。
0023デフォルトの名無しさんNGNG
C++の入門書を30回ぐらい読み直せ。
00246NGNG
>>8, >>11
出来ました。Thanks!
確かに penwin.h に IDC_PEN で定義されていますね。
でも英語版のMSDNにも書いてないうえに、penwin.h が PlatformSDK に無い
ところを見ると、あまり推奨されていないんでしょうか…
0025デフォルトの名無しさんNGNG
>>19
みたいなのにも>>23のようにマジレスしてくれるならこのスレも安心だ
0026デフォルトの名無しさんNGNG
>>1
.NETもWin32も両方やっているのですが、出入りしてもいいですか?
0027デフォルトの名無しさんNGNG
.NETの質問をしなければ許す
00281NGNG
>>26
前スレの1をコピペしただけだから、
あまり深く気にしないでくれ
00291NGNG
>>26
出入り禁止
くせーぞ豚が
003026NGNG
>>27
回答ばかりしているので、たぶん質問はしないと思います。
0031デフォルトの名無しさんNGNG
すみません、NETって南下の略なんですか?
0032デフォルトの名無しさんNGNG
日本教育テレビ。

今のテレビ朝日のことだよ。
0033デフォルトの名無しさんNGNG
コマンドプロンプトからWin32アプリケーションを起動して
起動もとのコマンドプロンプトに文字を出力するにはどうすればいいのですか?

0034デフォルトの名無しさんNGNG
>>33
AllocConsole
0035デフォルトの名無しさんNGNG
>>33
main
0036デフォルトの名無しさんNGNG
勉強に何か作ってみようと思ってるんですけど
いろんなことを含んでて、勉強で作る定番みたいなプログラムってないですかね?
0037デフォルトの名無しさんNGNG
Win32APIを使用した数当てゲーム
0038デフォルトの名無しさんNGNG

 永 
0039名無しさん@LinuxザウルスNGNG
hello world
0040デフォルトの名無しさんNGNG
>>36
C:\windows\System32\calc.exe
C:\windows\System32\mspaint.exe
どちらもサブセットでいい
「それっぽいの」作ってみそ
0041デフォルトの名無しさんNGNG
フルパスなのがいやらしい
0042山崎 渉NGNG
(^^)
0043デフォルトの名無しさんNGNG
>>34
それ、サービスから使える?
0044デフォルトの名無しさんNGNG
>>41
%windir%\system32\calc.exe
%windir%\system32\mspaint.exe
0045デフォルトの名無しさんNGNG
>>36
2chブラウザ
0046デフォルトの名無しさんNGNG
>>43
サービスから何か出力したいならイベントログを使うのが定番
デバッグ目的ならOutputDebugString
0047デフォルトの名無しさんNGNG
>>46
> サービスから何か出力したいならイベントログを使うのが定番

はぁ ?
普通にファイルに吐いときゃいいと思うが。
イベントログはあくまでもイベントを記録するもんだから、処理結果なんか吐いてどうするつもりだ ?
0048デフォルトの名無しさんNGNG
質問の仕方が不味かったかな
つまり、
�@コンソール上から起動した時はそのコンソール上に文字を出力したい
�Aエクスプローラーなどから直接起動した時はコンソールを作りたくない
というようなことをやりたいんです

>>34
AllocConsole 使うとコンソールが強制的にできてしまって
そこには文字を出力出来るけど起動もとのコマンドプロンプトに
文字を出力できません

>>35
コンソールアプリケーションにするとコンソール以外から起動した時に
コンソールができてしまいます

説明へたですみません
0049_NGNG
http://homepage.mac.com/hiroyuki44/
0050デフォルトの名無しさんNGNG
>48
不可能。
Subsystem:consoleと、Subsystem:windowsの
動作の違いは何によるものか考えれ。
それぞれ、スタートアップルーチン以前に、
起動元/subsys console     windows
console    なにもしない コンソールからデタッチ
windows   AllocConsole なにもしない
という動作が、Windowsによって行われる。
0051デフォルトの名無しさんNGNG
>>50
よくわかりました。ありがとうございます。
0052デフォルトの名無しさんNGNG
XP以降なら
AttachConsole(ATTACH_PARENT_CONSOLE)
できるかも(未確認)
0053デフォルトの名無しさんNGNG
>>52
調べて見ます。ありがとうございます。
0054デフォルトの名無しさんNGNG
アプリケーションが終了する前にファイルに書き込む方法を教えて下さい。
以下の関数をWM_CREATEやWM_TIMERの所に置いた場合上手く書き込めるのですが、
WM_DESTROY,WM_QUITの所に置いた場合何故か上手くいかないのです。

void func(){
HANDLE hf;char str[]="てすと";DWORD WriteByte;

hf=CreateFile("a,dat",(省略));
SetFilePointer(hf,0,NULL,FILE_END);
WriteFile(hf,(LPVOID)&str, (lstrlen(str)+1)*sizeof(char), &WriteByte, NULL);
CloseHandle(hf);
}
0055デフォルトの名無しさんNGNG
WM_QUITはそれを見てメッセージループの終了を判定するためのものだから
ウィンドウプロシージャにcase WM_QUITとか書いても一生飛んでこないぞ
0056デフォルトの名無しさんNGNG
windows ってコンソールもウィンドウも一緒くたになってるんだな
unix にみたいになってる訳じゃないのね
0057デフォルトの名無しさんNGNG
>>56
×windows ってコンソールもウィンドウも一緒くたになってるんだな
○windows ってコンソールもターミナルも一緒くたになってるんだな
0058デフォルトの名無しさんNGNG
WM_DESTROYなら、PostQuitMessageの前に呼べばうまくいくはず。
0059デフォルトの名無しさんNGNG
>58
上手くいきませんでした・・・
0060デフォルトの名無しさんNGNG
DestroyWindowしていない悪寒
0061デフォルトの名無しさんNGNG
>60
その通りでした
有難うございます
0062デフォルトの名無しさんNGNG
http://www.shitamachi.net/ranking/cgi23/ranklink/ranklink.cgi?id=23top
.
0063デフォルトの名無しさんNGNG
STATICコントロールとかのフォントって変更できますか?
HFONT font=〜;
HWND HwndStatic;
SetFont(HwndStatic,font);
こんなメソッド一発でそれ以降ずっとそのフォントで描画されつづける関数はないのでしょうか。
サブクラス化してWM_Paintをオーバーロードしないとダメですか?
0064デフォルトの名無しさんNGNG
>>63
WM_SETFONT送れ。
フォントは親ウィンドウのWM_CREATEで作って、
WM_DESTROYで消すのがオススメ。
0065デフォルトの名無しさんNGNG
>>64
できました。どうもありがとうございました。
0066デフォルトの名無しさんNGNG
Win32APIではなかったかもしれないんですが
キーボード入力を簡単にエミュレートする関数を教えてください

確か1行でキー入力をエミュレート出来たんですけど
忘れてしまったんです
お尻でしたら教えてください
0067デフォルトの名無しさんNGNG
keybd_event()
0068デフォルトの名無しさんNGNG
>>67さん ありがとうございまーす(^^@
0069デフォルトの名無しさんNGNG
FindWindowで他のアプリのハンドルをゲットしたんですけど

hwnd = FindWindow("CAPP",NULL);
if( hwnd =! NULL) { ← この処理

この後hwndの値が変わってしまうんですけど何ででしょうか?
0070デフォルトの名無しさんNGNG
>>69
ネタ?
0071デフォルトの名無しさんNGNG
>>69
C/C++演算子
http://www.microsoft.com/japan/developer/library/vccore/_langref_C.2f.C.2b2b_.Operators.htm
0072デフォルトの名無しさんNGNG
>>all
何でDelphiつかわないの??
007369NGNG
>>70
ネタじゃなくって本当に間違えました
ビックリマークは反対に付けるんですね
>>71さん ありがとう
0074デフォルトの名無しさんNGNG
ほんのりワロタ
0075デフォルトの名無しさんNGNG
>>72
ネタ?
0076デフォルトの名無しさんNGNG
>>72
初心者用だから
0077デフォルトの名無しさんNGNG
おっぱい!おっぱい!おっぱい!
巨乳すぎる程の美女たち
おっぱい好き集まれ!!
http://www.exciteroom.com/
0078デフォルトの名無しさんNGNG
仮想キーコードに付いて教えてください
 _ ← このキーは VK_ 何でしょう? 16進数でも良いので教えてください

106日本語キーボード使ってます
0079_NGNG
http://homepage.mac.com/hiroyuki44/hankaku09.html
0080デフォルトの名無しさんNGNG
VK_OEM_102 = 0xE2;
0081デフォルトの名無しさんNGNG
>>80
出来ました、ありがとうございます〜♪
0082デフォルトの名無しさんNGNG
ウィンドウズのスタートメニューがあるバー、タスクバーって言うのでしょうか?
これの位置と幅を取得する方法を教えて下さい。
0083デフォルトの名無しさんNGNG
>>82
正式じゃないと思うけど、調べるのも面倒なので

GetWindowRect(FindWindow('Shell_TrayWnd', nil), l_rcTaskbar);

で取得してる。
0084デフォルトの名無しさんNGNG
正式にはこれかな
SHAppBarMessage(ABM_GETTASKBARPOS, pabd);
0085デフォルトの名無しさんNGNG
スタートメニュー呼び出す方法教えて
って、あれってメニューなのカナ?
0086デフォルトの名無しさんNGNG
>>85
お約束だが、SendInput
0087デフォルトの名無しさんNGNG
keybd_eventでウィンドウズキーを送る
0088デフォルトの名無しさんNGNG
>>86-87 それだと、キーコードを送るだけですよね?
スタートメニューを任意の位置に表示するには、
Windowsキーコード送った後に、スタートメニューウィンドウが
生成されるのを待って、SetWindowPos とかでいいんでしょうか?
0089デフォルトの名無しさんNGNG
>>88
SHAppBarMessageで任意の場所に移動してからキーコード送るとか
0090デフォルトの名無しさんNGNG
>>88
なんでそんなわけのわからんことをしたいのか素朴な疑問
0091デフォルトの名無しさんNGNG
>>90
そんなわけのわからんことの出来るツールが一時期出回ってたような。
デスクトップの任意の場所をダブルクリックでスタートメニューを表示、とか。
0092yokoNGNG
http://www.kumei.ne.jp/c_lang/sdk2/sdk_127.htm
のサンプルを VS2003 で作っているのですが、コンパイルが
127 error LNK2019: 未解決の外部シンボル __imp__InitCommonControlsEx@4 が関数 _WinMainN@16 で参照されました。
とでてとまってしまいます。
#pragma comment(lib, "ScrnSave.Lib")もいれているのに・・・
ちなみにVC6だと問題なくコンパイルできてしまいます。いったいどこを
ちぇっくすればいいでしょう・・・?
0093デフォルトの名無しさんNGNG
>>92
MSDNライブラリで、
「InitCommonControlsEx」に必要なインポートライブラリを調べて、
そのライブラリをプロジェクトに追加する
0094デフォルトの名無しさんNGNG
>>92
それって最新のSDK使ったときも同じエラーが出るんだよね
0095デフォルトの名無しさんNGNG
壁紙の部分に描画をしたいのですが良い方法ご存知ないですか?
GetDesktopWindow()を使ってやってみたんですがデスクトップ上の
アイコンやウィンドウの上にも描画されてしまいます。
0096デフォルトの名無しさんNGNG
>>95
壁紙に直接描いて、壁紙入れ替えればいいんでない?
壁紙にカレンダー描画する奴とかそんな感じだよ。
0097デフォルトの名無しさんNGNG
>>95
デスクトップのリストビューをフックして、WM_ERASEBKGNDで……ダメかな
0098デフォルトの名無しさんNGNG
なんかGUIガリガリ作っていくうちに
HSPみたいになっていくのは俺だけ?
0099デフォルトの名無しさんNGNG
その形容が伝わらん
0100デフォルトの名無しさんNGNG
>>96 >>97
レス有難う御座いました。

レスを参考にしてデスクトップのリストビューをフックして
サブクラス化してWM_ERASEBKGNDのとこで描画したら
出来ました。助かりました。
0101デフォルトの名無しさんNGNG
>>98
簡単なツールならHSPが便利だよな〜
サクっと作れる
■ このスレッドは過去ログ倉庫に格納されています