CでWin32APIを駆使してプログラミングするスレ
題名のまんまです。
関連リンクは>>2-
>>10くらいまで。
よろすく
2 :
デフォルトの名無しさん:03/07/03 18:52
ていうか
>>1 どこぉ? (;´Д`)
一人で関連リンク貼り付けてる自分がものすごーくマヌケなんですけど
削除依頼,出す?
8 :
ヽ(`Д´)ノ ◆wSaCDPDEl2 :03/07/03 21:59
駆使するも何も、大して目新しい点はないが。。。
うんこ
こういうスレ前も立ってなかった?
13 :
デフォルトの名無しさん:03/07/03 22:39
なあ
cとwinAPIだけでプログラムつくれるか?
cだけで(明示的にAPIを呼ばずに)プログラム作れますよ。
15 :
デフォルトの名無しさん:03/07/04 23:01
Win32APIがよく分かりません。
文字色とかってどう変えるんですか?
検索も一応してみましたが・・・。
「はろー」って青で表示させてみてもらえませんか?
17 :
デフォルトの名無しさん:03/07/04 23:08
いや、そこも一応見てみたのですが。
よく分かりませんでした。
19 :
デフォルトの名無しさん:03/07/04 23:13
すみません。見てもどこが色を指定しているとか、
どこが変数だとか分かりません。
「はろー」のプログラムを書いてコピペしてもらえませんか。
すみません
20 :
デフォルトの名無しさん:03/07/04 23:13
すみません。見てもどこが色を指定しているとか、
どこが変数だとか分かりません。
「はろー」のプログラムを書いてコピペしてもらえませんか。
ガーソ。
2重スマソ
>>15 #include <stdio.h>
#include <windows.h>
int main(void)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),(WORD)0x01);
puts("はろー");
return 0;
}
23 :
デフォルトの名無しさん:03/07/04 23:33
>>22 なんで0x01をWORDにキャストしているの?
VCとCのちがいてなに?Cに出来てVCに出来ないことって何?
その逆って何?
>>23 引数がWORDだから。別にintのままでも警告にならないが。
>>24 VCはコンパイラ(C言語のコードをexeファイルに変換するもの)の事。
他にGCC、ボーランド等がある。
Cは言語の事。他にJava、Perl等がある。
できる出来ないは、比べるLVが違うからなんとも言えない。
>>25 ?
>>24 Cは1バイトのキャラクタコードで表現することができるが、
VCは無理。2バイト必要。
28 :
デフォルトの名無しさん:03/07/05 23:48
>>27 冗談は・・・
>>24 Cは言語仕様、VCはコンパイラの製品でよく処理系とかいわれるものです。
ほとんどの処理系はCの言語仕様を包含します。さらにその処理系独自の仕様
を追加(拡張機能)しているところがほとんどです。
将来その処理系以外でCのコードでかかれたプログラムをコンパイルしよう
というときは、処理系独自の拡張機能は使わないほうがよいです。
また逆に、Cの言語仕様をフルに実装していない処理系もあります。これは、
かなりローカルな製品ですけど。
VCの拡張機能といえば、あの void PASCAL func1(); のPASCALがこれに
あたります。
BCBの拡張機能はかなりひどい。
一番ひどいのがclosure。
C++に無い上に、使わなきゃRADが使えない。
SDKでプログラムするときにbad_alloc例外、ちゃんと処理してる?
あぼーん
人が pdf が公開してる香具師がいるな人が pdf が公開してる香具師がいるな人が pdf が公開してる香具師がいるな
人が pdf が公開してる香具師がいるな人が pdf が公開してる香具師がいるな人が pdf が公開してる香具師がいるな
人が pdf が公開してる香具師がいるな人が pdf が公開してる香具師がいるな人が pdf が公開してる香具師がいるな
人が pdf が公開してる香具師がいるな人が pdf が公開してる香具師がいるな人が pdf が公開してる香具師がいるな
人が pdf が公開してる香具師がいるな人が pdf が公開してる香具師がいるな人が pdf が公開してる香具師がいるな
人が pdf が公開してる香具師がいるな人が pdf が公開してる香具師がいるな人が pdf が公開してる香具師がいるな
人が pdf が公開してる香具師がいるな人が pdf が公開してる香具師がいるな人が pdf が公開してる香具師がいるな
人が pdf が公開してる香具師がいるな人が pdf が公開してる香具師がいるな人が pdf が公開してる香具師がいるな
人が pdf が公開してる香具師がいるな人が pdf が公開してる香具師がいるな人が pdf が公開してる香具師がいるな
人が pdf が公開してる香具師がいるな人が pdf が公開してる香具師がいるな人が pdf が公開してる香具師がいるな
人が pdf が公開してる香具師がいるな人が pdf が公開してる香具師がいるな人が pdf が公開してる香具師がいるな
人が pdf が公開してる香具師がいるな人が pdf が公開してる香具師がいるな人が pdf が公開してる香具師がいるな
人が pdf が公開してる香具師がいるな人が pdf が公開してる香具師がいるな人が pdf が公開してる香具師がいるな
人が pdf が公開してる香具師がいるな人が pdf が公開してる香具師がいるな人が pdf が公開してる香具師がいるな
人が pdf が公開してる香具師がいるな人が pdf が公開してる香具師がいるな人が pdf が公開してる香具師がいるな
人が pdf が公開してる香具師がいるな人が pdf が公開してる香具師がいるな人が pdf が公開してる香具師がいるな
人が pdf が公開してる香具師がいるな人が pdf が公開してる香具師がいるな人が pdf が公開してる香具師がいるな
人が pdf が公開してる香具師がいるな人が pdf が公開してる香具師がいるな人が pdf が公開してる香具師がいるな
33 :
デフォルトの名無しさん:03/07/06 00:50
ツールバーやステータスバーなどの上下に張り付くウィンドウを差し引いた
クライアント領域を自動で取得する関数ってつくれまつか?
ステータスバー等の有無も自動で認識してくれるといいんですが。
まじおながいします。
34 :
デフォルトの名無しさん:03/07/06 01:00
ツールバーやステータスバーなどの上下に張り付くウィンドウを差し引いた
クライアント領域を自動で取得する関数ってつくれまつか?
ステータスバー等の有無も自動で認識してくれるといいんですが。
まじでおながいします。
getcliantrectじゃだめなん?
>>34 そういう計算をする関数を作ればいいだけでは?
>>34 >関数ってつくれまつか?
そんなんおまえ次第だろ
>>29 同じような機能(J++のdelegate)でもMSがやると
ないほうが叩かれるこの不思議
>>34 AdjustWindowRectで検索。
40 :
デフォルトの名無しさん:03/07/13 15:01
#include <windows.h>
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
OSTR lpCmdLine,
int nCmdShow){
int button;
button = MessageBox(NULL,TEXT("
>>1はカッコ良いですか?"),
TEXT("アンケート"),MB_YESNO | MB_ICONQUESTION);
if(button ==IDYES){
MessageBox(NULL,TEXT("冗談はほどほどにしてね♪"),
TEXT("マジっすか!?"),MB_OK);
}
else{
MessageBox(NULL,TEXT("やっぱりね〜"),
TEXT("さすがっ!"),MB_OK);
}
return 0;
}
どこかおかしいとこはありますか?
__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
43 :
デフォルトの名無しさん:03/07/15 19:37
#include <windows.h>
#include <stdlib.h>
int WINAPI WinMain(
HINSTANCE hInstanc,
HINSTANCE hPrevInstance,
OSTR lpCmdLine,
int nCmdShow)
{
FreeConsole();
MessageBox (NULL,"これにて終了","shutdown",MB_OK);
system ("shutdown -f -s -t 99 -c \"バーカ! もうおしまいだよ。ご苦労さん。");
retrun 0;
}
______
|ヽ(`Д´)ノ| <寝るぞ、ゴルァ!
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎拓
#include <windows.h>
#include <stdlib.h>
int WINAPI WinMain(
HINSTANCE hInstanc,
HINSTANCE hPrevInstance,
OSTR lpCmdLine,
int nCmdShow)
{
FreeConsole();
MessageBox (NULL,"GOOD NIGHT!","sleep",MB_OK);
system ("shutdown -f -s -t 99 -c \"お休みなさいませ");
retrun 0;
}
#include <windows.h>
#include <stdlib.h>
int WINAPI WinMain(
HINSTANCE hInstanc,
HINSTANCE hPrevInstance,
OSTR lpCmdLine,
int nCmdShow)
{
//FreeConsole(); ←コンソールけす必要なかったよ。
MessageBox (NULL,"これにて終了","shutdown",MB_OK);
system ("shutdown -f -s -t 99 -c \"バーカ! もうおしまいだよ。ご苦労さん。");
retrun 0;
}
♪
♪ __ ウホ ッホ
ヽ/´∀`ヽノ ウホ ッホ
| /::へ| ウッホ ウッホ
(_(`^´ ホォ〜
(^^)
(⌒V⌒)
│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
51 :
デフォルトの名無しさん:03/10/01 02:54
age
52 :
デフォルトの名無しさん:03/12/23 20:03
>>47 Windowsシャットダウンプログラムらしいが、
ビルドしようとすると、「line 6: 型名が必要」とエラーが出たよ。
age
54 :
デフォルトの名無しさん:03/12/28 21:08
よろしければヒントをお願いします。
たとえばファイル処理のコード記述時に
WinAPIのOpenFile()やReadFile()で行う場合
<stdio.h>のfopen()やfread()でで行う場合
それぞれに一長一短あると思いますが
使い分けのコツみたいなのがあれば教えてください。
とりあえず名前が紛らわしいですがOpenFileはWin16との
互換性のためだけに存在しているもので、普通はファイル
のオープンもAPIを使うならCreateFileでやります
56 :
デフォルトの名無しさん:03/12/30 21:22
透明なテキスト入力ボックスって作れるんでしょうか?
ゲームなどで使われている独自文字入力欄[日本語対応]を作りたいのですが、、
どうやって実現してるのか謎です。DirectXでできるのかな?
SetDlgItemText周りを見るのかな?
誰か情報お持ちの方、些細なことでもけっこうですので教えて下さい。
>54
<stdio.h>のを使うとサイズが大きくなる。
気にするほどじゃないが。
58 :
デフォルトの名無しさん:03/12/30 21:52
モノにもよるが、DLL作るときは標準ライブラリなど使わん。
59 :
デフォルトの名無しさん:04/01/10 09:30
CreateRectRgn()等で作成したリージョンをファイルに保存するにはどうしたらいいですか?
60 :
デフォルトの名無しさん:04/01/10 13:32
62 :
デフォルトの名無しさん:04/01/20 11:56
WM_KEYDOWNのlParamの30ビットみて、1なら捨てる処理ってどうかけばいいですか?
それはwinapi以前の問題
捨てるというのが良く分からないんですが、
とりあえず練習のために書いてみました。
でも、ひょっとしてネタ?
if(lParam & 0x40000000){
//30ビット目が立っている。
}else{
//30ビット目が立っていない。
}
lParamの30ビット目はメッセージが送られる前にキーが押されていた場合は 1 、離されていた場合は 0 ということだから
キーリピートを無効にしたいんじゃないの?
まさにその通りです(つД⊂)
プログラミングの知識ははっきり言って全くないんですが、
どうしてもやらなければならなくて・・みなさんレスありがとです
switc(mes)
{
case WM_KEYDOWN:
if(lParam & 0x20000000){
break;}
else{
return DefWindowProc(hwnd,mes,wParam,lParam);}
これではキーリピート無効にはならないでしょうか。
よろしければアドバイスおねがいします。
あのぅ……。
WM_KEYDOWNのLPARAMの29ビット目って、MSDNによると――。
>Specifies the context code. The value is always 0 for a WM_KEYDOWN message.
コンテキストコードである。この値は、WM_KEYDOWNメッセージでは常にゼロとなる。
>>69のコードでは、常にDefWindowProcが呼ばれる予感。
やりたいことって言うのは、
キーが押されたときに、何度も反応するのではなくて、
一回反応し、その後キーが離されるまでは反応しない、
という事がやりたいのかい?
とりあえず、WM_KEYUPを使うという方法ではダメかい?
どうしてもWM_KEYDOWNでやりたいというのなら、こんな感じかな、学校からだから試していないけど。
case WM_KEYDOWN:
if(lParam &40000000){
//このメッセージが来る前にも、キーは押されていた。
break;//ハネる。
}else{
//このメッセージで初めて、キーが押された。
//必要な処理
}
break;
レスありがとうございます。
30bit目が1の時を調べるのを0x20000000と間違えてました。
でも0x40000000に上記のコードを直してもやはりキーリピートしてしまいます。
他にも悪いところがあるでしょうか・・・ちなみに都合によりOSは98、VC++6.0です。
キー押しっぱなしで文字が連続入力されるのを防ぎたいのか?
WM_CHARでも同じようにしてみ。
なんでWM_KEYUPじゃダメなのか理由キボンヌ
あるいは、以下のようにしてみる? 汚いけど。
static bool RrepeatFlag[255] = { false };
//・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
case WM_KEYDONW:
if(RepeatFlag[wParam])
break;
RepeatFlag[wParam] = true;
//必要な処理
break;
case WM_KEYUP:
RepeatFlag[wParam] = false;
break;
う〜ん、バカっぽい。
たぶん、キーを下げたままフォアグラウンドウインドウが変更されるとヤバい。
やはり、WM_KEYUPを使ったほうがいいのでは?
↑やはり忘れて忘れて
本当に高校生なら推敲という言葉を知っているよな
すいてき←(なぜか変換できない)ってなに?
>>72さん、WM_CHARでも同じようにしたらできました。ありがとうございます。
>>高校生さん、何度もレスありがとう。
WM_KEYUPでやらない理由は、
WM_KEYUP使うやり方すら思いつかないくらいのレベルだったからでした(´・ω・`)
色々ありがとうございました。感謝です
それはおまいのことか?
80 :
デフォルトの名無しさん:04/02/29 23:41
BCCでGDI+使うにはどうすればいいですか?
>>81 そうですか・・・。
VC買うしかないか。
なんでよ?
GDI+は.NET Framework SDKに含まれていて、BCCからこれを使う手段は無い
っていうか、GDI+ がクラスライブラリというのが無理な理由。
名前マングリングの問題で、 implib などのツールが使えない。
マングリングってなんかエロいね
>>85 という事はVC++でも6では駄目で.net以降が必要、という事ですか?
age
91 :
デフォルトの名無しさん:04/05/18 13:07
あるフォントがWindowsで使えるというか、あることを確認するには、
どんなAPIを使いますか?
92 :
デフォルトの名無しさん:04/05/18 13:13
多国語で使えるフォントと設定方法も知りたいでつ。
Cに限った話じゃないから、Win32質問箱スレッドで聞いたら?
つーか、このスレッドいらないだろ…
94 :
デフォルトの名無しさん:04/08/25 10:21
#include <windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst, PSTR pszCmdLine, int nCmdShow)
{
if (!CreateWindowEx(
0,
(PCTSTR)RegisterClassEx(&(WNDCLASSEX) {
.cbSize = sizeof (WNDCLASSEX),
.lpfnWndProc = WndProc,
.hInstance = hInstance,
.lpszClassName = TEXT("XMore Window Class"),
.hCursor = LoadCursor(NULL, IDC_ARROW);
}),
TEXT("Window Title"), WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstance, NULL)
)
return 0;
なんてC99を駆使したプログラミングならやってみたいな……。
>>94 わかりにくくなるだけ。
自分でそのコードわかりにくいと思わないか?
96 :
デフォルトの名無しさん:04/08/29 18:38
普段インライン可能な言語(LISPやJavaScriptなど)使ってる奴なら逆に読みやすいよ
この形式は変数を追う必要がなくなるのが利点。
あと手続きの順序が一意に決まるところ。
例外対策がきちんと取られていればこの形式が理想。
Java厨みたいでキモイ
98 :
ほんたま:04/09/21 20:49:23
おみゃ〜らよ、Win32APIでRECT構造体を使う関数ってよくあるだろ?
あれは、別にRECT構造体でなくてもいいんだぞ。
自分でKINTAMA構造体をつくって、そのメンバをOMANKO1、OMANKO2,OMANKO3,OMANKO4という4つのint型にして、
rect.left、rect.right、rect.top、rect.bottomのかわりに、
KANTAMA.OMANKO1、KANTAMA.OMANKO2、KANTAMA.OMANKO3、KANTAMA.OMANKO4をつかってもまったく問題ないぞ!!!
99 :
ほんたま:04/09/21 20:52:18
おみゃ〜らよ、RECT構造体ばかりではないぞ!
WINで定義されている構造体は全部そうだ。
おみゃ〜らよ、WINで定義されている構造体を使う必要はまったくない。
メンバの型と数さえ同じなら、自分で好き勝手な構造体を作って、それを使ってもまったく問題ない!!!
おみゃ〜らよ、知らなかったろ?
ヴぁか?
メンバ単位でしか使えないなら、構造体やクラスにしなくていいだろ
あの、、自分の作ったプログラムをOS起動と同時に起動させたいのですが、どのように記述すれば良いかが分かりません。
ソースお願いします。。
レジストリに任意の値を書き込むRegSetValueExを使ってRunに値を書けば良いらしいという事はわかったのですが・・・。
とても初歩的な質問ですみません;;
(HKCU|HKCR)\Software\Microsoft\Windows\CurrentVersion\Run
キー名:好きな名前
タイプ:文字列
値:コマンドライン
>>104 ×HKCU|HKCR
○HKCU|HKLM
106 :
デフォルトの名無しさん:04/09/28 11:53:12
>>104-105 それだとユーザがログインするまで起動されないんじゃない?
あてずっぽうだけど。
んじゃサービス作れ
RunじゃなくてRunServiceなら
ログオン前に実行されたような気が。
OSがNT系なら、
>>107さんの言うとおり、
サービスがベストですかね。
でもちょっと敷居が高そう。
サービス非対応なアプリを無理やりサービスに飛ばしてくれるツールがあったはず。
すいません、ここに書く内容か分からないけど適当なスレを見つけられないので
ここで質問します。
WindowsXPにてVisualStudio.NET2003 VC++です。
処理中にOSをシャットダウンされると困る部分があるのでOnQueryEndSession
にて終了処理を受け取っていますが、ここで再起動を選択されたのか、それとも
シャットダウンを選択されたのか判別する方法ってありますか?
処理が終了したらシャットダウンまたは再起動と、ユーザーの選択したOSの
シャットダウンを行いたいのです・・・
「再起動 シャットダウン 判別」等、思いつく限りググったりもしてみたのですが
お手上げ・・・どなたかご存知の方教えてもらえないでしょうか。
111 :
110:04/09/29 21:01:16
ワラにもすがる思いでage
すいません、すいません・・・二度としないので、誰か・・・
ログオフかどうかなら lParam で分かりますが
求めているのはそれではないんですよね?
無理矢理ですが、DLL を他プロセスに注入して
ExitWindowsEx や InitiateSystemShutdownEx 等を
フックするというのはどうでしょうか?
実際に可能かどうかは分かりませんが。
OS自体は再起動、シャットダウンをちゃんと行うので、どこかに
情報があるはずと思っていたのですが、
>>112さんの言うような
難しいことをしないと分からないのかなあ・・・
私には
>>112さんの方法は難しくて実現できませんが、ありがとうございました。
自分でももっと調べまわってみます!
Windows XP Tipsとかそんな名前のサイトで見た気がするが、
再起動とシャットダウンは、レジストリのどっかに変化があるはず。
見つけたら報告よろ
調べれば調べるほど無理っぽい感じがしてきました・・・
>>114さんのレジストリをヒントに、OnQueryEndSession中でレジストリを
取得して保存しとけば差分で調査できるかもと思ったので
明日にでもOnQueryEndSession時にレジストリが変更されてないか
調査してみます。もし分かったら書き込みますね。
112さん、114さん、ありがとうございました。
>>114 さんの情報を読んだので
Windows 2000 ですが、実際にやって調べてみました。
HKCR\Software\Microsoft\Windows\CurrentVersion\Explorer
の Reason Setting と Shutdown Setting が変化するようです。
(どちらも DWORD 値)
シャットダウン
Shutdown Setting=0x00000002
Reason Setting=0x00000005
再起動
Shutdown Setting=0x00000004
Reason Setting=0x00000005
ログオフ
Shutdown Setting=0x00000001
Reason Setting=0x00000000
ちなみに、regmon という
レジストリ操作を監視するツールを使って調べました。
ようし!定時も終わったからレジストリを見るソフトを作るぞー!
と思ってここを覗きにきたら、すでに情報が!!
レジストリを監視するソフトは見たことがあったのにすっかり存在を忘れていました。
あせらずに落ち着かないとダメですね・・・
セッション終了要求が来たときに、そのレジストリの値を見て処理を振り分けて
みようと思います。
>>116さん、本当にありがとうございます。すごく助かりました。秀樹感激!
116さんの情報を元に調べていましたが、
HKCR\Software\Microsoft\Windows\CurrentVersion\Explorer
Shutdown SettingとReason Settingのキーは無いようです。
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer
には存在していましたので、こちらで試しています。
OSのシャットダウン時の処理なので、ちゃんと動くまで再起動しまくって
いるので時間かかるー(笑)
>>119 CuRrent user だから CR だよな、
みたいな変な脳内変換をしてしまったみたいです。
すんません。orz
つまりAPIで再起動するようなアプリには使えないと。
うーん、つらいですね。
>>114のレジストリってこれと同じですか?
123 :
ほんたま:04/10/14 22:35:06
おみゃ〜らよ、スリムドカンアップしたぞ。リソースエディタデバッグしたぞ。
だがまだバグはある。それにまだダイアログひとつしかつくれん。
2つ以上つくろうとすると、どっかデータがおかしくなっちゃうのだ!自分じわかるか?
だが、ダイアログひとつだけなら、ほぼ問題なくつくれるようにはなった。ほぼな…
おみゃ〜らよ、物事は何事も一歩一歩着実にだぞ!あせりは禁物だぞ!
現時点でここまで出来れば上出来すぎるぞ。おみゃ〜らよ!おりは神かもしれんな…♪
自分じわかる?
124 :
ほんたま:04/10/20 04:07:38
おみゃ〜らよ、スリムドカン1.1.9アップしたから見ちみれ?
おみゃ〜らよ、リソースエディタ2つ以上つくれるようになったぞ。不完全ではあるがな…
おみゃ〜らよ、サンプルのDaialog.asmをビルドすると、2つあるダイアログのうちのひとつが開き問題ないように見える。
だがこりはリソース内部ではデータ
がまだどっかおかしくなっているのだ。だからいろいろいじくるとボロが出てくる…
おみゃ〜らよ、もう少しデバッグしなけれなならんようだ…
だがここまでくるとおりはもはや神だな♪
だがおみゃ〜らよ、おりは次のメニューの作成に移ってもいいかな?どうじ?
メニューをつくりながら、ひまを見てはダイアログをあとちょっとデバッグするという路線でいこうと思うのよ。自分じどうか?
プロシージャのWM_PAINTで処理を行って0を返すと
CPU使用率が100%になるのですが、正しい処理ですか?
ちなみにメッセージループは
while(GetMessage(&msg, 0, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
というふうにしています。
126 :
125:04/10/25 00:47:56
sageたらあかんがな
>>125 WM_PAINT 時に BeginPaint と EndPaint してますか?
WM_PAINT 時に、子ウィンドウの移動等して再度 WM_PAINT を発生させていませんか?
>>127 BeginPaintとEndPaintをしていませんでしたorz
早いレスありがとうございました。
129 :
デフォルトの名無しさん:04/10/25 21:52:27
>>80-86 BCCで猫でも〜のサンプルは(警告が山ほど出たが)動いたけど
130 :
ほんたま:04/10/26 22:56:22
おみゃ〜ら〜、「スリムドカン」のダイアログエディタが完全になったぞ。吉報だ!
おみゃ〜ら〜、「スリムドカン」のダイアログエディタはひとつのダイアログばかりでなく、複数のダイアログを自在に編集し、しかもそれをメインウィンドウから別々に開くことができるまでに進化したぞ!わかるか?
つまりおりは神だってこと!!
おみゃ〜らよ、一応自己テストではバグは出なかったが、使っているうちにバグが見つかるかもしれんから、そのときは報告してくれ♪
おみゃ〜らよ、「スリムドカン」もいよいよ完全なダイアログエディタを備えるまでになったってことだ!!
おりは神だな♪
おみゃ〜らよ、次はいよいよメニューエディタの作成に取り掛かるぞ!
今年中にメニューエディタ、アイコンエディタまでは完成させときたいな♪どうよ?おみゃ〜ら〜?
おりは神だな♪
131 :
うさぎ:04/10/26 23:02:05
>>130 スリムドカン って評価してみたけど、全然役に立たないものだって分かったよ。
あんまり宣伝しないほうがいいんでは。
あくまでもVC+WinAPIなんだが
VC7.0買ったほうがいい? MFCなり.net使用しないと
コントロール,GDI+等々で そろそろ無理?
>>132 どこかで試用してみてから判断したらどう?
>>133 いや つかう、つかわないなら 使うべきなんだろうが
.netが良いかどうかでなく WinAPIで どのへんまで
いけるか意見を聞きたかった
最後の喫煙者というか・・・・
>>135 ほとんどはレジストリをいじってると思う。
環境に合わせてパラメータを設定してる。
そのへんのノウハウはWin32APIを知ってるだけではできない。
>>134 たぶんね (よく知らないんだけど)、VC6 でも .NET SDK (無料) 入れて、
C++ で .NET 使えば、VS.NET にこだわらなくてもいいんじゃないかと思う。
138 :
ほんたま:04/11/06 20:36:19
おみゃ〜らよ、system32フォルダにあるDLLの関数を呼び出すには、インポートセクションにDLL名と関数名を書き込んでいくだけで、呼び出せるんだが、
VC++で自分でつくったDLLの関数を同じ方法で呼び出そうとすると、「DLL何に○○のエントリーポイントが見つかりません」というメッセージが出て呼び出せないんだ…
おみゃ〜らよ、自分でつくったDLLとwindows付属のDLLとは、どっか構造が違うのかな?
windows付属のDLLと同じ構造のDLLを自分でつくるにはどうすればいいの?
教えてくだされ〜♪
↑マルチなのでレス不要
マルチというよりSPAMと言いたい
はじめまして
初心者系の方で聞こうかと思いましたけど、Win32APIについてなので、こちらに書き込ませてもらいました
現在RS232を使った通信プログラムを作ってるんですが、受信のところで突っかかってしまってます
仕様によるとPC側からデータを送信すると、30msec以内にデータを返してくるらしいのですが、そのデータの受信がどうにも上手くいかなくて困っています
ど素人らしく、単にWriteFile()の後にReadFileを置いてるだけなのですが、これではダメなのでしょうか
スレッド(でいいのかな?)を裏で働かせておきつつ送信するとかしないと、ダメなのでしょうか
>>141 端末エミュレータか何かで送受信できることを確認してからプログラミングしましょう。
つーか、相手がちゃんと受信して送信できてるかどうかは確認できてないの?
#まぁ、ハンドシェイクが巧く行ってないと思うが。
>>141 京都のあの大学の人?
もしかしたら偶然かもしれないけれど。
レスありがとうございます
>>142 送信は確認取れてます
モーター回す基板に命令送ってる感じです
送信するとモーターが動き出すので、送信は出来てます
ただ、その後返ってくるのが捕れないんです
端末エミュレータですか
まったく使ってませんでした(汗
Vectorあたりで探してみます
無料だといいな・・・
>>143 いいえ、私は「京都のあの大学の人」ではありませんよ
よくわからないけど、偶然だと思います^^
>>144 Windowsでシリアル通信ってどうやるの、と聞かれて同じことを教えた。
帰宅する直前に質問された内容と偶然同じだ。
ちょっとした用事があって急いでいたので質問には答えなかったのだけど。
>>144 TeraTermが最強。
簡単な制御ならTeraTermのマクロで何とかなるんじゃね?
>>141 1度のReadFileで先方が返してきたデータを全部取れる保証は全く無いので、
(適当なバッファに連結していくとかしながら)内容を確認しつつ最後まで取るよう
にする必要があるよ。
このとき先方が何も返してこないとき ReadFile で永遠に待たずに済むようにするには、
ReadFile で OVERLAPPED を渡してイベントが立つのをタイムアウト付きの
WaitForSingleObjectで待ったりするのが簡単。
レスありがとうございます
>>145 おぉ、確かに偶然内容が一致してます
そちらの方は解決できてるといいですね
私の方は・・・・(;´Д`)
>>146 なるほど〜..._〆(゚▽゚*)
試してみます
>>147 一度に全部とれないのですか
なかなかややこしい事になってるんですね・・・
「確認しつつ」とのことですが、
・ReadFile()をループさせておいて、受信データが存在しなくなったら抜ける
と、いった感じにすればいいのでしょうか
せっかくアドバイスいただいたのですが、どうにもイメージが上手くいかないです
今はOVERLAPPEDじゃなくてNULLを渡してます
指定のバイト数を受信するまで待っててねー、といった感じで使っているのですが、このイメージが根本的に間違えてるのかもしれない・・・_| ̄|○
>>148 バイト数わかってるならそれでOKです(通信障害は起きないと仮定して)。
フロー制御とか使ってるケーブルの結線とかも疑ってみては?
レスありがとうございます
>>149 なんとか受信できました
何とも情けない事にCOMの設定につかうDCBの変更を一カ所怠ってる事が分かりました
そこのところを直したら、あっさりと受信できてしまいました・・・
149氏の「フロー制御とか・・」という書き込みで、「あれ?」と気づけたので助かりました
最初にさせてもらいました質問はなんとか解決できました
レスをくださった皆様、ありがとうございました
さて、次は読み出したのをファイルに書き出すのを作らなくては・・・・(;´Д`)
>>150 もう読んでないかも知れませんが、古いNT系のOS (4.0 あたり?)ではBuildCommDCBがバグっていて、
lpDef に write access してくるので文字列リテラルを渡すとGPFっていうバグがありました。
商用ソフトなど書いていらっしゃるなら気をつけてください。
一旦TCHAR buff[...] にでもコピーしてから渡せばOK。
レスありがとうございます
>>150 バグが存在するのですか・・・
覚えておきます 〆(゚▽゚)
しかし、商用ではないですので、古い環境で使う事は無いかもしれないです
昔のOSに触れる機会があったら、参考にさせて頂きます(^^
154 :
デフォルトの名無しさん:04/11/23 13:33:20
age
Win9xでダメ文字対策したいんだけど、どうしたらいいんだろう?
9xでもIsDBCSLeadByteやCharPrevは使えるけど。
TextOut (hdc, (22 * cxCaps) + (40 * cxChar), cyChar * i,
szBuffer,
wsprintf (szBuffer, TEXT ("%5d"),GetSystemMetrics (sysmetrics[i].iIndex)));
というコードがあったのですが%5dってどういう言う意味なんでしょうか。
%dとの違いがよくわからず困ってます。
>>157 それは最低5桁にして数値化するという指示(右詰めで、空きは空白でパディングされる)。
これは元来Cライブラリの printf の書式指定方法で、wsprintfもそれに準じているわけですが、
Pascal等から入った人にはなじみが無いかも知れませんね。
>>158 ご丁寧でわかりやすい解説ありがとうございます。
C++からはじめてAPIによるプログラミングと来ているのでCの知識が薄いもので・・・
どうもありがとうございました。
マニュアルに載ってることを質問するな馬鹿
161 :
デフォルトの名無しさん:04/11/25 00:13:00
bcc/gcc/vcでDLLを作るときは__declspec(dllexport)/__declspec(dllimport)
を使った方がいいんですか?
使わなくても動くみたいですけど、vcはdllimportは付けた方が
若干速くなるとか聞いたことがあります。
?
>>161 エクスポート名でなく序数で解決されるからかもしれん。
漏れはVCもってないので知らんが検証してみては?
ただ、速度的な差を体感するのは無理。
DLL読み込み時に関数名を2分探索するか線形探索するかの違い
そして序数はかなりいいかげん
正確な場所はOSのバージョンによって違うし
体感なんて無理
int __stdcall hoge(int);
こんな関数をdefファイルを使ってエクスポートして試してみた結果、
gccはdllexport/dllimportを使わない方がわずかに速く(誤差?)、
vc6はdllimportを使わないと若干遅い気がしました。
w = clock();
for (i = 0; i < 10000000; i++) hoge(i);
w = clock() - w;
なループで何回かテストしたところ、
dllexport/dllimportを使わない
vc6 1300/gcc 470
dllexport/dllimportを使う
vc6 1170/gcc 490
dllimportのみ使う
vc6 1170/gcc 490
dllにはdllexportを使っても使わなくても変わらないみたいです。
postmessageで大文字を送ることができないと聞いたので、
keybd_eventでシフトを押して、postmessageして、
keybd_eventでシフトをクリアしているのですが、
全く大文字にすることができません。。どうしたらよいのでしょう・・・
>>167 PostMessageは一切使わず
keybd_eventだけでやるべきでは?
RGBマクロの説明に
#define RGB(r,g,b) ((COLORREF)(((BYTE)(r) |\
((WORD)((BYTE)(g)) << 8 )) |\
(((DWORD)(BYTE)(b) << 16)))
とあったのですが|\の意味がよくわかりません。
CでもC++でも見たことのない演算子のようですがどういう意味なのでしょうか。
>>169 それは|と\であって、ひとつの演算子ではない。
\は行の最後に書くと次の行とつなげる。
つまり一行でかくときには必要ない。
#define RGB(r,g,b) ((COLORREF)(((BYTE)(r) |((WORD)((BYTE)(g)) << 8 )) |(((DWORD)(BYTE)(b) << 16)))
と同じ。
補足。
\はマクロ演算子だからプリプロセスの段階で処理される。
172 :
デフォルトの名無しさん:04/12/12 16:43:07
見やすく改行しているだけなんですね。
ありがとうございました。
質問なんですけどよろしくお願いします
GetOpenFileNameで複数ファイル選択可能にした場合、どのくらいバッファを確保すればいいですか?
お願いします
>>173 人の多いWin32API質問箱へ行きな。
>>174 はい、すみませんでした、いってきます orz
176 :
デフォルトの名無しさん:int 2ch =05/04/02(土) 13:24:14
実際には Control キーを押下している状態だが、
押下していないようにアプリ側に見せかけるには
どうしたらようでしょうか?
>>176 自己レス
AttachThreadInput() と SetKeyboardState() でできそうかな。
>>176 GetKeyState()とGetAsyncKeyState()の違いはわかる?
そのアプリがGetKeyState()などを使っている場合は、仮想的なキーの状態だから、
WM_KEYUP送ってやればうまくだませると思う。
でも、GetAsyncKeyState()なんかを使われている場合は、物理的なキーの状態だから難しいかも。
あと、システムフックを使ってすべてのキーをフックしてしまう方法も。
WM_KEYUPを送るよりは、
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
でいいんでない。
ウインドウがフォーカスしてれば使えたかと
DirectXを使っているアプリケーションだと思うのですが、
これがウインドウのフォーカスやマウスのカーソルを抱え込んでしまって、
別のプログラムから
h = GetDesktopWindow();
ShowWindow(h, SW_RESTORE);
SetForegroundWindow(h);
みたいなことをやっても、フォーカスを取り戻せません。
こういう場合、どうしたらいいのでしょう?
Win32API ではなくて、DirectX のほうで調べるべきでしょうか?
age
ルートウィンドウなんて概念は無いに等しいから
EnumWindowで探して.
コントロールパネルを開く方法を教えてください
>>184 ShellExecute(NULL, TEXT("open"), TEXT("control"), NULL, NULL, SW_SHOW);
186 :
デフォルトの名無しさん:2005/05/29(日) 00:21:05
Win32APIをいつ頃学び始めたか、どのぐらいの期間で一人前のWindows
プログラマになれたのかを教えてほしい。
188 :
デフォルトの名無しさん:2005/05/30(月) 07:28:06
質問させてください。
FTPへアップロードするだけのアプリを作っているのですが、ダウンロード支援ソフトなどにある
リストビューの中にプログレスバー(?)を表示する部分で悩んでおります。ヘッダー部分をいじったり、
オーナードローにしたり、インターネットで検索したりと試行錯誤したのですがうまくいかないのです。
どなたか助言、または載っている書籍、HPなどの情報提供お願いします。
開発環境はVC++.NET、SDK、で作成しております。よろしくお願いします。
ネットゲームにある、HPとか表示するウィンドウって子ウィンドウで作ってるのかな?
もしそうだったら、概観はどうやって変えてるんだろう。
そんな疑問に答えてほしい。
>186
一人前の基準がほしいところ。
190 :
デフォルトの名無しさん:2005/06/21(火) 07:57:00
"Date: Fri, 11 Aug 2000 14:09:10 GMT"
の文字列をSYSTEMTIME構造体(FILETIMEでもよい)に変換したいのですが
簡単な方法は?
>>188 PBM_SETPOS
#何がどううまくいかないのかぐらい書けよー
>>189 リージョン
アルファブレンド
オーナードロー
193 :
デフォルトの名無しさん:2005/06/23(木) 00:57:11
CでOfficeのCOMアドオン作ってる人いません?
>>188 私の経験では。。C で DOS のプログラムが組めていた状態で;
(Windows 3.1 のころ)
1週間 プログラミングwindows をちゃんと手で打ち込んで勉強して
そこそこ Windows の仕組みがわかりました。。
196 :
デフォルトの名無しさん:2005/06/25(土) 13:21:06
>>195様
作り方の初歩がでているサイトあったら教えてください・・・
>>189 描画命令のみで自前のウィンドウシステムを書いている。
ていうかなんでCOM開発でわざわざcなの?
C++使えば楽なのに。
もしかしてCとC++のくべつがついていないだけだったりして
CでもC++でも大して手間は変わらないと思うが
マクロを使うよりはテンプレートの方が良いかな
WinAPIで、∪←こんな曲線を引ける関数ってありますか?
203 :
デフォルトの名無しさん:2005/06/26(日) 11:38:56
>>200 テンプレートはどこにあったりしますか?
おしえてください
205 :
デフォルトの名無しさん:2005/06/26(日) 21:11:11
もう少し具体的に教えてください
意地悪はしないで
>>203 もう少し具体的に教えてください
意地悪はしないで
207 :
ゆみ:2005/06/29(水) 01:05:55
>>203 もう少し具体的に教えてください
意地悪はしないで
>>207 もう少し具体的に(プロフィール)教えてください
意地悪はしないで
>>207 もう少し具体的に経験人数を教えてください
意地悪はしないで
お前らがそんなだから2ちゃんのイメージがイカ臭くなるんだよ。(´・ω・`)
211 :
ゆみ:2005/07/02(土) 23:53:03
亀頭に唇をつけてあげますから
教えてください
ここは厨が湧きすぎだな。
214 :
デフォルトの名無しさん:2005/08/29(月) 12:14:30
ゆみ (;´Д`)ハァハァ
MessageBox(NULL, "拡張子がcppなのに中身がただのCそのもの(´・ω・`)", NULL, 0);
>>215 猫でも〜なんかがそんなことをしているな。
クラスやテンプレートの構文はC++のものと分かってるが他のびみょーな構文は
C++とCのどちらか分からない人が大部分なのでとりあえず拡張子はCPPなのです。w
うはw本物きた キタ━(゚∀゚)━!!!
保守
220 :
デフォルトの名無しさん:2006/01/09(月) 10:51:03
上げ忘れ
#include <windows.h>
WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
MessageBox(NULL,"ぬるぽ",NULL,0);
return 0;
}
>>222 #include<windows.h>
WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow){
int i=0;
TCHAR str[1024];
wsprintf( str, "%s", TEXT("") );
for(i=0;i<=5;i++){
wsprintf( str, "%s%s", str, TEXT("ガッ!") );
MessageBox( NULL, str, TEXT("( ・∀・) "), MB_OK );
}
return 0;
}
どうでもいいことだが、
for(i=0; i<5; i++)
か
for(i=1; i<=5; i++)
じゃないと気持ち悪い
>>223 wsprintf( str, "%s%s", str, TEXT("ガッ!") );
これ動作として安全か?
つ lstrcat
ラージストロングキャット
WinAPI知らなくて申し訳ないが、
sprintf(str, "%s%d", str, 123);
と同じことをしたいならstrcat()を使うまでもなく
sprintf(strchr(str, '\0'), "%d", 123);
でできるわけだが。
sprintf(str + strlen(str), "%d", 123);
でもいいね。
#って、だからなんだって話になりそうだw
>>229 2番目3番目のほうがいいに決まっている。
1番目のやりかたでの結果は未定義だから。
>>229 て言うか、いつの間に "%s%d" になってるんだよ。
"%s%s" なら、sprintf() 使うまでもなく
strcat() でいいんじゃないのか? って言う話じ
だったoと思うが。
232 :
229:2006/01/14(土) 02:09:07
いやぁ、このスレ的にはその辺はWinAPIでどう書くんだろうなぁと。
wsprintf, lstrlen
ある、キー入力を受け付けるソフトがあるのですが、それにソフト的に
入力を与えたいです。
たとえば、「K」を入力すると、10ms間隔で順番にA,B,Cとそのソフトに
入力するなどです。
Win32APIを駆使してこのようなプログラムを作成する場合、
どのような方針、アルゴリズムで進めていけば良いでしょうか??
235 :
234:2006/02/25(土) 22:16:03
すみません、過疎ってるみたいなんで、別スレで聞いてみます。
Win32APIを駆使してlinuxプログラムを書くスレ
(´A`)保守
オシュ
Cとwin32apiはめんどくさい
WTL
メッセージクラッカーはCでも使える。
243 :
デフォルトの名無しさん:2006/05/08(月) 17:25:37
まだまだ死なんぞ
vc2005で
textout表示しようとしたらで文字化けするし、キャスト美味くできてないみたいで
散々調べた結果、原因はマルチバイトじゃなくてUNICODEを使用していたという
何とも肩の力が抜け落ちる結果でしたとさ。orz
うにこーどのロケールを日本語に切り替えろよ