トグルスイッチ – プログラミング – Home

通知
すべてクリア

[解決済] トグルスイッチ


カリン
 カリン
(@カリン)
ゲスト
結合: 23年前
投稿: 13
Topic starter  

トグルスイッチの基本形とBOOLについて教えてください。

BOOL flg;
if(クリックしたら)
if(flg==TRUT){
TextOut(hWnd,0,0,A,1);
flg=FALSE
}else}
TextOut(hWnd,0,0,B,1);
flg=TRUE
}

これではだめでした。


引用未解決
トピックタグ
カリン
 カリン
(@カリン)
ゲスト
結合: 23年前
投稿: 13
Topic starter  

hWndはhdcでした。
でもできません。


返信引用
sugar
 sugar
(@sugar)
ゲスト
結合: 24年前
投稿: 448
 

どうだめなのですか?
かなり部分的なソースコードなので、良くも悪くも判断つきにくいですね。
もしかしたら、flgの制御はできているけどTextOut()が失敗しているだけかもしれませんし...


返信引用
カリン
 カリン
(@カリン)
ゲスト
結合: 23年前
投稿: 13
Topic starter  

#include <windows.h>
BOOL flg = TRUE;

省略

case WM_RBUTTONDOWN:
if(flg==TRUE){
hdc = GetDC(hWnd);
TextOut(hdc,0,0,A,1);
flg==FALSE;
ReleaseDC(hWnd,hdc);
}else{
hdc = GetDC(hWnd);
TextOut(hdc,0,0,B,1);
flg==TRUE;
ReleaseDC(hWnd,hdc);
}

flgは常にTRUEです。
flg==FALSE;
の書き方が悪いという気もします。

#include <windows.h>
BOOL flg = FALSE;

とすれば常にFALSEです。
BOOLへの代入はこれでいいんですか?


返信引用
NGA
 NGA
(@NGA)
ゲスト
結合: 24年前
投稿: 98
 

flg がグローバル変数なら

if(flg)
{
flg = FALSE;
}
else
{
flg = TRUE;
}

でいいと思います。


返信引用
カリン
 カリン
(@カリン)
ゲスト
結合: 23年前
投稿: 13
Topic starter  

できてるはずなのに、ソースのミスが見つけられません。

#include <windows.h>

BOOL flg;

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){
HWND hWnd;
WNDCLASSEX wc;
MSG msg;
wc.cbSize =sizeof(WNDCLASSEX);
wc.style =0;
wc.lpfnWndProc =(WNDPROC)WndProc;
wc.cbClsExtra =0;
wc.cbWndExtra =0;
wc.hInstance =hInstance;
wc.lpszMenuName =NULL;
wc.lpszClassName =Z;
wc.hIcon =LoadIcon(NULL, IDI_APPLICATION);
wc.hIconSm =LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor =LoadCursor(NULL,IDI_APPLICATION);
wc.hbrBackground =(HBRUSH)GetStockObject(WHITE_BRUSH);
RegisterClassEx(&wc);

hWnd = CreateWindowEx(0,Z,",WS_OVERLAPPEDWINDOW,
0,0,100,100,(HWND)NULL,(HMENU)NULL,hInstance,(LPSTR)NULL);

ShowWindow(hWnd,SW_SHOWNORMAL);
UpdateWindow(hWnd);

while(GetMessage( &msg, NULL, 0, 0)){
TranslateMessage( &msg );
DispatchMessage( &msg );
}
return 0;
}

LRESULT CALLBACK WndProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam){
HDC hdc;
PAINTSTRUCT ps;
switch(uMsg){
case WM_RBUTTONDOWN:
if(flg==TRUE){
hdc = GetDC(hWnd);
TextOut(hdc,0,0,A,1);
flg==FALSE;
ReleaseDC(hWnd,hdc);
}else{
hdc = GetDC(hWnd);
TextOut(hdc,0,0,B,1);
flg==TRUE;
ReleaseDC(hWnd,hdc);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
}
return DefWindowProc(hWnd,uMsg,wParam,lParam);
}


返信引用
NGA
 NGA
(@NGA)
ゲスト
結合: 24年前
投稿: 98
 

>できてるはずなのに、ソースのミスが見つけられません。
何を根拠にしているのでしょう?

>flg==FALSE;
>flg==TRUE;
そもそも == は等値演算子であって、代入演算子ではありません。
あなたの環境ではコンパイルをすれば警告等でないのですか?


返信引用
カリン
 カリン
(@カリン)
ゲスト
結合: 23年前
投稿: 13
Topic starter  

== でした。
ありがとうございます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました