約 4,260,546 件
https://w.atwiki.jp/abwiki/pages/658.html
ActiveBasic(あくてぃぶべーしっく) ActiveBasicってなぁに?を参照。
https://w.atwiki.jp/abwiki/pages/466.html
Win32プロジェクトを新規作成、コモンコントロールを使う、にちえっく。 メインウインドウにチェックボックスを貼る。 ボタンを貼る。 ボタンのイベントハンドらを書き、チェックボックスの状態を知る。 戻り値は、TRUE/FALSEで判定。 あとはチェックボックスの数だけ同じしょりをおこなう Sub MainWnd_CommandButton1_Click()Dim rtn As LongDim hcheck As HWNDhcheck=GetDlgItem(hMainWnd,CheckBox1)rtn=SendMessage(hcheck,BM_GETCHECK,0,0)msgbox hMainWnd,Str$(rtn)End Sub
https://w.atwiki.jp/abwiki/pages/116.html
ActiveBasic(あくてぃぶべーしっく、えーびー)とは、プログラミング言語のひとつである。 その文法はVisualBasicを意識したような感じでもあり、 一方でC(C++ではない)を意識したような、中途半端な感じがしないことも無い。 Win32APIとDirectXに対応し、付属のRADツールを使うことで、簡単にベースとなるアプリケーションを作ることができる。 でもそれをカスタマイズしていくには七難八苦の苦行が待っている。 実行速度は遅い。本当にコンパイルしたのかと問い詰めたくなるほど遅い。一方でファイルサイズは小さい。 ランタイム不要。だがこっそりmsvcrt.dllが必要。なぜかstrstr関数を宣言している。 歴史も参照
https://w.atwiki.jp/ac1226/pages/25.html
ループでチェック For i = 1 To 12 If Me("chk" i) = True Then Me("txt" i) = 1 Me("chk" i) = False Me("chk" i).Enabled = True End If Next i 帳票フォームでチェック→削除 1.フォームヘッダーに「txtChk」 2.チェックボックスのコントロールソース:=InStr([txtChk] ",","," [ID] ",") 0 3.チェックボックスの上に透明コマンドボタン「cmdChk」(注)必ず最上面に置くこと! Private Sub cmdChk_Click() If Me.chkDlt Then Me.txtChk = Replace(Me.txtChk ",", "," Me.ID ",", ",") Me.txtChk = Left(Me.txtChk, Len(txtChk) - 1) Else Me.txtChk = Me.txtChk "," Me.ID End If End Sub Private Sub cmdDlt_Click() Dim strFilter As String If MsgBox("チェックしたデータを削除しますか?", vbYesNo + vbQuestion) = vbYes Then If Me.txtChk "" Then strFilter = "ID In(" Mid(Me.txtChk, 2) ")" DoCmd.SetWarnings False DoCmd.RunSQL "DELETE * FROM t_AAA WHERE " strFilter DoCmd.SetWarnings True Me.Requery Me.txt件数 = Me.Form.RecordsetClone.RecordCount MsgBox "削除しました" Else MsgBox "選択されたデータはありません。" End If Else MsgBox "キャンセルしました" End If End Sub
https://w.atwiki.jp/frostar/pages/46.html
リストビューにチェックボックスを付けるには拡張スタイルを使用する。 拡張スタイルを使用するにはComctl32.dll(ver4.70以降)を使用する。 Comctl32.dllを使用する際には、最初に初期化が必要である。 InitCommonControls(); 実際にチェックボックスを付けるときは作成したリストビューにLVS_EX_CHECKBOXESスタイルを付ければいい。 ListView_SetExtendedListViewStyle(hList,ListView_GetExtendedListViewStyle(hList) | LVS_EX_CHECKBOXES); hList リストビューのハンドル リストビューに付けられたチェックボックスの情報を取得するにはListView_GetCheckStateマクロを使用する。 ListView_GetCheckState(hList); //戻り値 BOOL チェックされていたらtrueを返す 逆にチェックを付けたり、外したりするときはListView_SetCheckStateマクロを使用する。 ListView_SetCheckState(hList,index,bool); index 操作を行う列 bool trueならチェックする、falseなら外す ただし、ListView_GetCheckStateマクロは定義されていないこともあるようなので、その時は自分でマクロを定義する。 #define ListView_SetCheckState(hwndLV, i, fCheck) \ ListView_SetItemState(hwndLV, i, INDEXTOSTATEIMAGEMASK((fCheck)?2 1), LVIS_STATEIMAGEMASK) #endif しかし、この方法では列の先頭にしかチェックボックスを付けることができない。 いろいろな場所に付けたり複数付けるためにはオーナードローを使用する。 オーナードローを使うためにはまずListViewにLVS_OWNERDRAWFIXEDスタイルを付ける。 ListView_SetExtendedListViewStyle(hList,ListView_GetExtendedListViewStyle(hList) | LVS_OWNERDRAWFIXED); そして目的のリストビューの親のプロシージャでWM_DRAWITEMメッセージが来たときに描画処理を行うことで実現できる。 case WM_DRAWITEM //描画処理 break; 描画処理の内容は以下のようになる。 LPDRAWITEMSTRUCT lpDraw = (LPDRAWITEMSTRUCT)lParam;//lParam WM_DRAWITEMメッセージのlParam HWND hList=lpDraw- hwndItem; //リストのハンドル HDC hdc = lpDraw- hDC; //リストのデバイスコンテキスト HBRUSH hBrush;//背景描画用ブラシ char Text[256];//文字格納用 SaveDC(hdc);//デバイスコンテキストを保存 SetBkMode(hdc,OPAQUE);//デバイスコンテキストの設定(文字背景を不透過にする) //背景色と文字色の設定 if (lpDraw- itemState ODS_SELECTED) {//選択アイテムがあるなら強調表示 hBrush=CreateSolidBrush (GetSysColor(COLOR_HIGHLIGHT)); SetBkColor(hdc, GetSysColor(COLOR_HIGHLIGHT)); SetTextColor(hdc, GetSysColor(COLOR_HIGHLIGHTTEXT)); }else{ COLORREF Color=ListView_GetTextBkColor(hList); if(Color 0xff000000) Color=GetSysColor(COLOR_WINDOW); hBrush=CreateSolidBrush (Color); } //アイテム数の取得 int SubItemNum=Header_GetItemCount(ListView_GetHeader(hList))-1; //表示 for(SubItem=0;SubItem =SubItemNum;SubItem++){ //背景のクリア ListView_GetSubItemRect(hList,lpDraw- itemID,SubItem,LVIR_BOUNDS, rc); FillRect(hdc, rc,hBrush); ListView_GetSubItemRect(hList,lpDraw- itemID,SubItem,LVIR_LABEL, rc); //アイテム情報の取得 ListView_GetItemText(hList,lpDraw- itemID,SubItem,Text,sizeof(Text)); //チェックボックス表示 MoveWindow(hCheckBox,rc.left,rc.top,12,12,TRUE); rc.left+=12;//チェックボックスの大きさ分テキストをずらす rc.left+=2;//マージン DrawText(hdc,Text,strlen(Text), rc,NULL);//テキスト描画 } //ブラシの削除 DeleteObject(hBrush); //デバイスコンテキストの復元 RestoreDC(hdc,-1); hCheckBox チェックボックスのハンドル 特定のアイテムだけにチェックボックスを表示させる場合はlpDraw- itemIDとSubItemなどの情報によって表示させる。 チェックボックスは表示させる数だけ必要であるが、この関数が呼び出されるたびに初期化すると、リストビューのアイテムが選択されたときに頻繁に処理が行われ、チェックボックスがちらつくため、アイテム追加時などに初期化を行い、グローバルな配列などに格納しておくのがよいだろう。 上述の方法では、チェックボックスをクリックしてもチェックがつかない。 チェックをつくようにするためには、サブクラス化を利用する。 リストの初期化時などに以下でリストビューのプロシージャをSetWindowLong関数でNewListViewProcに変更する。 OrgListViewProc = (WNDPROC) SetWindowLong(hList,GWL_WNDPROC, (LONG) NewListViewProc); SetWindowLong関数の戻り値は元のプロシージャである。これは後で使用するためOrgListViewProcに格納しておく。 次に新しいプロシージャ(NewListViewProc)の中身を記述する。 OrgListViewProcはWNDPROC型である。 int CALLBACK NewListViewProc(HWND hWnd,UINT msg,WPARAM wp,LPARAM lp){ switch (msg){ case WM_COMMAND { SendMessage((HWND)lp,BM_SETCHECK,!SendMessage((HWND)lp,BM_GETCHECK,0,0),0); NMHDR nmhdr; ZeroMemory( nmhdr,sizeof(NMHDR)); nmhdr.idFrom = LOWORD(wp); nmhdr.hwndFrom = hWnd; nmhdr.code = LVN_ITEMCHANGED; SendMessage(GetParent(hWnd),WM_NOTIFY,LOWORD(wp),(LPARAM) nmhdr); } return 0; } return CallWindowProc(OrgListViewProc,hWnd,msg,wp,lp); } チェックボックスがクリックされるとその親であるリストビューのプロシージャにWM_COMMANDメッセージが来る。メッセージが来たら、そのハンドルのチェック状態をBM_GETCHECKメッセージを送って調べ、その状態を反転してBM_SETCHECKで送って状態を設定している。 また、チェックが変更されたときにWM_NOTIFYでLVN_ITEMCHANGEDメッセージをリストビューの親ウィンドウに通知するようにしている。 オリジナルのメッセージを設定してもよいが、今回はLVS_EX_CHECKBOXESスタイルと同じように扱えるようにするため、このようにした。 以上を含んだライブラリを公開しています。 詳しくはここをどうぞ。
https://w.atwiki.jp/opengl/pages/164.html
チェックボックスです。 ラジオボタンと違って複数選択可能です。 resource.h #define IDR_MENU1 100 #define ID_EXIT 101 #define ID_CHECK 104 #define ID_Help 107 #define ID_STATUS 108 #define IDM_END 114 #define ID_OPTION 115 menu.rc #include windows.h #include resource.h IDR_MENU1 MENU BEGIN POPUP File BEGIN MENUITEM Exit , ID_EXIT END MENUITEM Option ID_OPTION MENUITEM ヘルプ , ID_Help END main.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #pragma comment(lib, comctl32.lib ) #include GL/freeglut/freeglut.h #include resource.h #include commctrl.h //CreateStatusWindow()のために必要 //FreeGlutのウインドウプロシージャを置き換える為の変数 WNDPROC WndProc=NULL; //元のウィンドウプロシージャ HWND hWnd2=NULL; //ウィンドウハンドル HMENU hMenu=NULL; //メニュー HWND hStatusbar; // ステータスバーのハンドル HINSTANCE hInstance; //インスタンスハンドル #define WIDTH 320 #define HEIGHT 240 //回転用 float anglex = 0.0f; //白 GLfloat white[] = { 1.0, 1.0, 1.0, 1.0 }; //置き換えた後のプロシージャ LRESULT CALLBACK WndProc2(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp){ static RECT rcDisp; switch (msg) { case WM_CREATE // コモンコントロールの初期化 InitCommonControls(); break; case WM_COMMAND switch(LOWORD(wp)) { case ID_EXIT PostQuitMessage(0); break; } break; case WM_SIZE GetClientRect(hWnd, rcDisp); SendMessage( hStatusbar, WM_SIZE, wp, lp ); break; case WM_DESTROY exit(0); break; default if(WndProc){ return CallWindowProc(WndProc,hWnd , msg , wp , lp); }else{ return DefWindowProc(hWnd,msg,wp,lp); } } return 0; } //ウィンドウの検索 BOOL CALLBACK enumWindowsProc(HWND hWnd,LPARAM lParam){ HANDLE hModule=(HANDLE)GetWindowLong(hWnd,GWL_HINSTANCE); if(GetModuleHandle(NULL)==hModule){ wchar_t ClassName[256]; GetClassNameW(hWnd,ClassName,sizeof(ClassName)/sizeof(ClassName[0])); if(wcsncmp(ClassName,L FREEGLUT ,wcslen(ClassName))==0){ hWnd2=hWnd; return FALSE; } } return TRUE; } void display(void){ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glViewport(0, 0, WIDTH, HEIGHT); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(30.0, (double)WIDTH / (double)HEIGHT, 1.0, 1000.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(150.0,150.0,-150.0, 0.0,0.0,0.0, 0.0,1.0,0.0); glMaterialfv(GL_FRONT, GL_DIFFUSE, white); //回転 glRotatef(anglex,1.0f,0.0f,0.0f);//X軸を回転 glutSolidSphere(40.0,16,16); glutSwapBuffers(); } void idle(void){ anglex+=2.0f; Sleep(1); glutPostRedisplay(); } void Init(){ glClearColor(0.3f, 0.3f, 0.3f, 1.0f); glEnable(GL_DEPTH_TEST); //ワイヤーフレーム glPolygonMode(GL_FRONT_AND_BACK,GL_LINE); } bool main(int argc, char *argv[]){ glutInitWindowPosition(100, 100); glutInitWindowSize(WIDTH, HEIGHT); glutInit( argc, argv); glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE); glutCreateWindow( チェックボックス ); //FreeGlutのウインドウハンドルとウインドウプロシージャを置き換える EnumWindows(enumWindowsProc,0); if(hWnd2){ WndProc=(WNDPROC)GetWindowLong(hWnd2,GWL_WNDPROC); SetWindowLong(hWnd2,GWL_WNDPROC,(LONG)WndProc2); }else{ return false; } //メニューを作成 hMenu=LoadMenu(GetModuleHandle(NULL),MAKEINTRESOURCE(IDR_MENU1)); if(hMenu){ SetMenu(hWnd2,hMenu); }else{ return false; } // ステータスバーを作成 hStatusbar = CreateStatusWindowW(WS_CHILD | WS_VISIBLE | CCS_BOTTOM | SBARS_SIZEGRIP, L ステータスバー ,hWnd2,ID_STATUS); HINSTANCE hInst = (HINSTANCE)GetWindowLong(hWnd2, GWL_HINSTANCE); HWND hCheck = CreateWindow(L BUTTON ,L チェックボックス ,WS_CHILD|WS_VISIBLE|BS_AUTOCHECKBOX, 0,60,160,30,hWnd2,(HMENU)ID_CHECK,hInst,NULL); glutDisplayFunc(display); glutIdleFunc(idle); Init(); glutMainLoop(); return true; }
https://w.atwiki.jp/roichimakoa/pages/71.html
weight=60 height=1.65 BMI= weight/(height^2) ideal_weight=(height*100-100)*.9 print "Body Mass Index" BMI 20 and BMI 22 print BMI print "理想体重は?♪";ideal_weight;"kg" aisatsu$ = "おはよう" namae$ = "Mr. 山田" print aisatsu$ ; ;;; ; namae$ print aisatsu$ ; namae$ rem 数の糸 0.9 = .9 という入力でも意味をなす。 mod = のこぎり波の生成に使える。テレビのブラウン管でも使用されている。 risouTaiju Tを大文字にすることで見やすい変数定義がされている。アンダースコア「 _ 」を使わないで、二単語の変数定義をするのが最近の流行り。(オブジェクト指向のプログラミングにて) ○○○$ ← 文字列の定義 rem BASIC only の定義 + ←文字列をつなぐ ; ←半角スペース付きの+ rem 配列 ばらばらに動かすときに使える。 seiseki(1) =2 seiseki(2) =5 print seiseki(1) print seiseki(2) 配列変数の書き込み(代入) n( 0 ) =1000 n( 1 ) =1100 n( 2 ) =1200 n( 3 ) =1300 配列変数の読み出し(出力) print "n( 3 ) =";n( 3 ) print "n( 2 ) =";n( 2 ) print "n( 1 ) =";n( 1 ) print "n( 0 ) =";n( 0 ) 配列変数の書き込み(代入) melo$( 0 ) ="o4C" melo$( 1 ) ="E" melo$( 2 ) ="G" melo$( 3 ) ="o5C" 配列変数の読み出し(出力) rem *repeat rem for i=0 to 4 rem play melo$(i) rem next i rem sleep 3000 rem goto *repeat for i = 50 to 650 step 50 circle (i, 400), 10, 7,,,,f 半径10ドットの円をかく sleep 100 100ミリ秒休む next i ループの先頭に戻る 文字列のインプット input "お名前をどうぞ ",yourname$ print "ようこそ"+yourname$+"さん" 数字型のデータインプット input "年齢をどうぞ ",age print "80年生きれるとして、残りの余命は" print 80-age;"っすね" if age 30 then print "若いですね!" else print "若くもないけど,,,," print "頑張ってください!!" if age = 15 then gosub *veryYoung if (age = 30 and age 15) then gosub *wakai if age 30 then gosub *nagaiki goto *ganbare *veryYoung print "すっごい若いですね" *wakai print "若いですね" *nagaiki print "長生きですね" *ganbare print "頑張ってください" gosub はサブルーチンを使って、作業の流れがはっきりしているところがgoto文より優れている。 input "くどいのは好き? yes [3] no [1]",jump for i=1 to age step age/jump print "何年も、";; i play melo$( i mod 4) next i print "生きてきたのですね" サンプルプログラム 配列変数でdata読込------------ for i=0 to 12 read x(i),y(i),c(i) x(i)=x(i)+100 y(i)=y(i)+100 next i for i=0 to 11 if c(i)=-1 then *next_loop line (x(i),y(i))-(x(i+1),y(i+1)),c(i) *next_loop sleep 100 next i 外側の線 data 32,0,6,67,0,6,100,100,6,70,100,6,64,80,6,35,80,6,29,100,6,0,100,6,32,0,-1 内側の線 data 50,25,6,60,60,6,40,60,6,50,25,6 sleep 5000 *hajime cls 3 print date$ ; time$ sleep 1000 goto *hajime Pset(320,240),7 Pset(321,240),7 Pset(322,240),7 Pset(323,240),7 Pset(324,240),7 Pset(325,240),7 Pset(326,240),7 Pset(327,240),7 Pset(328,240),7 Pset(329,240),7 Pset(330,240),7 Pset(331,240),7 Pset(332,240),7 for i=1 to 5 Pset (332+i,240),7 x=rnd()*100+300 y=rnd()*100+240 c=rnd()*8 Pset (x,y),c sleep 100 next i circle(320,260),10,7 circle(340,260),10,7 circle(360,260),10,7 line (100, 100) -(200, 200) , 7 line (120, 120) -(220, 220) , 7,b line (100, 100) -(300, 100+5) , 7,bf line (100, 100) -(100+10, 300) , 0,bf line (110, 100) -(110+10, 300) , 1,bf line (120, 100) -(120+10, 300) , 2,bf line (130, 100) -(130+10, 300) , 3,bf line (140, 100) -(140+10, 300) , 4,bf line (150, 100) -(150+10, 300) , 5,bf line (160, 100) -(160+10, 300) , 6,bf line (170, 100) -(170+10, 300) , 7,bf for i=1 to 8 x=10*i c=i-1 line (180+x, 100) -(180+x+10, 300) , c,bf next i [] は省略可能を意味する。 for i=1 to 5 x=rnd()*100+300 y=rnd()*100+400 c=rnd()*8 circle (x,y),100*rnd(),c,,,,F sleep 100 next i sleep 2000 cls 3 circle(20,40),10,7 circle(30,40),10,7,,,,F for i=1 to 100 x=rnd()*500 y=rnd()*500 c=rnd()*8 circle(x,y),10,c,,,,F sleep 50 next i sleep 2000 for i=1 to 100 x=rnd()*500 y=rnd()*500 c=rnd()*8 line (250,250)-(x,y),c sleep 50 next i cls 3 for i=1 to 100 x=500- (i*10 mod 500) y=4*x mod 500 c=rnd()*8 line (250,250)-(x,y),c sleep 50 next i for i=1 to 4 b=0.5+(i-1)*0.25 circle(150,150),100,7,,,b next i circle(350,150),100,7,,,0.5 circle(350,150),100,7,,,0.25 circle(350,150),100,7,,,2 circle(350,150),100,7,,,4 circle(150,300),100,7,,,0.5,f circle(150,300),50,0,,,2,f sleep 2000 cls 3 circle(290,380),50,7,-1,-6 circle(290,380),50,6,-2,-5 For x=0 to 15 step 0.02 y=sin(x) gy=50*y+200 gx=50*x+50 pset (gx,gy) next i For x=0 to 20 step 0.005 y=sin(x) gy=50*y+200 gx=50*x+50 circle (gx,gy),5,7,,,,f next i For x=0 to 300 step 0.02 y=sin(x) gy = y*50+200 gx = x*30 pset(gx,gy) next x pai = 3.14159 n=32 for rd = 0 to 2*pai+.1 step 2*pai/n +.1は計算誤差解消 x = 320+100*sin(rd) 320,240は中心座標。100は直径(ドット) y = 240-100*cos(rd)+30*rnd() if flag=1 then *connect pset (x,y),7 *connect line -(x,y),7 flag = 1 next rd For theta=0 to 6.28 step 0.02 r=rnd() x=cos(theta) y=sin(theta) gy = r*y*50+75 gx = r*x*50+75 pset(gx,gy) next theta For theta=0 to 6.28 step 0.02 r=cos(theta-3.14/4)*(theta-3.14/4) x=sin(theta) y=cos(theta) gy = r*y*50+75 gx = r*x*50+150 pset(gx,gy) next theta sleep 10000 cls 3 For xshift=50 to 450 step 10 for y=0 to 15 step 0.02 x=sin(y+xshift/50) gx = x*20+xshift gy = y*50 pset(gx,gy) next y next xshift For xshift=490 to 600 step 10 for y=0 to 15 step 0.02 x=sin(y-xshift/50+9) gx = x*20+xshift gy = y*50 pset(gx,gy) next y next xshift line (100, 100) -(100+10, 300) , rgb(255,0,0),bf line (110, 100) -(110+10, 300) , rgb(0,255,0),bf line (120, 100) -(120+10, 300) , rgb(0,0,255),bf line (130, 100) -(130+10, 300) , rgb(255,255,0),bf line (140, 100) -(140+10, 300) , rgb(255,0,255),bf line (150, 100) -(150+10, 300) , rgb(0,255,255),bf line (160, 100) -(160+10, 300) , rgb(224,238,238),bf line (170, 100) -(170+10, 300) , rgb(143,188,143),bf for i=1 to 8 x=10*i c=i-1 line (180+x, 100) -(180+x+10, 300) , c,bf next i [] は省略可能を意味する。 for i=1 to 5 x=rnd()*100+300 y=rnd()*100+400 c=rnd()*8 circle (x,y),100*rnd(),c,,,,F sleep 100 next i for t=1 to 1080 step 0.02 r=t/10 theta=t x=r*sin(theta)+500 y=r*cos(theta)+200 Pset (x,y),7 next t cls 3 for j=1 to 3 for i = 50 to 700 step 50 x=i y=-0.001*(i-400)^2+400 line (400, 100)-(400+(x-400)*0.98, 100+(y-100)*0.98) , rgb(143,188,143) circle( x , y ),10,7,,,,f sleep 100 cls 3 next i for i = 700 to 50 step -50 x=i y=-0.001*(i-400)^2+400 line (400, 100)-(400+(x-400)*0.98, 100+(y-100)*0.98) , rgb(143,188,143) circle( x , y ),10,7,,,,f sleep 100 cls 3 next i next j 昔はi と書くと、暗黙のうちに整数(integer)型と考えられた cls 3 for i = 50 to 650 step 5 circle(i,160),30,rgb(139,69,0),,,,f next i for i = 50 to 650 step 50 circle(i,200),10,rgb(238,0,0),,,,f next i for i = 50 to 650 step 50 circle(i,240),20,rgb(139,69,19),,,,f next i for i = 50 to 650 step 100 circle(i,280),10,rgb(118,238,0),,,,f next i for i = 50 to 650 step 5 circle(i,320),30,rgb(139,69,0),,,,f next i sleep 2000 cls 3 for x=0 to 400 step 25 for y=0 to 400 step 25 circle(x+200,y+50),10,7,,,,f sleep 100 next y next x cls 3 *start cls 3 for i=1 to 12 circle(rnd()*700,rnd()*480),10,7,,,,f next i sleep 2000 goto *start Randomize 今日の日付、時間を元に、ランダムな数列を作る ShowWnd OwnerWnd(), SW_MAXIMIZE ShowWnd OwnerWnd(), SW_MAXIMIZE for t =1 to 100 step 0.01 circle (400,400),30,5,,,,f r=150 x=2*r*sin(2*t) y=1*r*cos(2*t) ry=-1/1.414*x +1/1.414*y+400 rx=1/1.414*x +1/1.414*y+400 circle (rx,ry),10,2,,,,f r=100 x=2*r*sin(t) y=r*cos(t) ry=-1/1.414*x +1/1.414*y+400 rx=1/1.414*x +1/1.414*y+400 circle (rx,ry),10,7,,,,f r2=30 r2x= r2*sin(10*t)+rx r2y= r2*cos(10*t)+ry circle (r2x,r2y),5,6,,,,f sleep 5 cls 3 next t 2009/7/23 *Randomize ShowWnd OwnerWnd(), SW_MAXIMIZE circle(i,200),10,7,,,,f 空 for i=0 to 300 line (0,18) - (1024,18+i),rgb(191,239,255),bf next i 浜と海 for i=0 to 500 浜 line (0,300+i)-(300+0.6*i,300+i),rgb(240,230,140),bf 海 line (1024,300+i)-(300+0.6*i+1,300+i),rgb(0,0,128),bf next i 浜のアクセント 1 for i=1 to 100 circle (rnd()*300,300+rnd()*(860-300)),2,rgb(139,71,38),,,,f next i 浜のアクセント 2 for i=1 to 40 t=(860-300)*rnd() y= 300+t x= 300+t*0.6*rnd() circle (x,y),2,rgb(139,71,38),,,,f next i (300+0.6*i+1,300+i for s=0 to 100 for i=0 to 500 circle (300+0.6*i+3+100-s,300+i),1,rgb(224,238,238),,,,f circle (300+0.6*i+3+100+1-s,300+i),1,rgb(0,0,128),,,,f x=rnd()*20 x500[i]=x Pset (300+0.6*i+3+100-s+x500[i],300+i),rgb(224,238,238) Pset (300+0.6*i+3+100+1-s+x500[i],300+i),rgb(0,0,128) Pset (300+0.6*i+3+100+2-s+x500[i],300+i),rgb(0,0,128) Pset (300+0.6*i+3+100+3-s+x500[i],300+i),rgb(0,0,128) Pset (300+0.6*i+3+100+4-s+x500[i],300+i),rgb(0,0,128) Pset (300+0.6*i+3+100+5-s+x500[i],300+i),rgb(0,0,128) next i sleep 5 line (300+0.6*i+100-s+10,300)-(300+0.6*i+100-s+10+300,860),rgb(0,0,128),bf next s 2009/8/14 ShowWnd OwnerWnd(), SW_MAXIMIZE *Randomize 空 for i=0 to 300 line (0,18) - (1024,i),rgb(191,239,255),bf next i 浜と海 ただし、左上から右下へ、斜めに浜のラインを引く。そのため、lineコマンドでx座標がy座標(300+i)に比例して増えるようにしている。 ウィンドウマックスのサイズを1024*860と仮定しておく。 for i=0 to 500 浜 line (0,300+i)-(300+0.6*i,300+i),rgb(240,230,140),bf 海 line (1024,300+i)-(300+0.6*i+1,300+i),rgb(0,0,128),bf next i 浜のアクセント 1 for i=1 to 100 circle (rnd()*300,300+rnd()*(720-300)),2,rgb(139,71,38),,,,f next i 浜のアクセント 2 for i=1 to 40 t=(720-300)*rnd() y= 300+t x= 300+t*0.6*rnd() circle (x,y),2,rgb(139,71,38),,,,f next i for d=1 to 3 if d=2 then goto *yuugata else if d=3 then goto *yozora else *soraend *yuugata 夕空 for i=0 to 300 line (0,18) - (1024,i),rgb(255,153,0),bf next i goto *soraend *yozora for i=0 to 300 line (0,18) - (1024,i),rgb(0,0,0),bf next i goto *soraend *soraend 波 iが増える→y座標の増加に伴い、x座標をランダムに変化させる sが増える→白い波が岸による for s=0 to 380 step 10 for i=0 to 500 if s=0 then goto *cl else goto *ncl *cl line (300-0.05*i+380-s+60,300)-(300-0.05*i+380-s+560*0.6+60,860),rgb(0,0,128) goto *ncl *ncl circle (300+0.6*i+3+100-s,300+i),1,rgb(224,238,238),,,,f circle (300+0.6*i+3+100+1-s,300+i),1,rgb(0,0,128),,,,f x=rnd()*20 x500[i]=x Pset (300+0.6*i+3+380-s+x500[i],300+i),rgb(224,238,238) Pset (300+0.6*i+3+380+1-s+x500[i],300+i),rgb(0,0,128) Pset (300+0.6*i+3+100+2-s+x500[i],300+i),rgb(0,0,128) Pset (300+0.6*i+3+100+3-s+x500[i],300+i),rgb(0,0,128) Pset (300+0.6*i+3+100+4-s+x500[i],300+i),rgb(0,0,128) Pset (300+0.6*i+3+100+5-s+x500[i],300+i),rgb(0,0,128) line (300-0.02*i+380-s+35,300)-(300-0.02*i+380-s+560*0.6+35,860),rgb(0,0,128) next i sleep 5 花火 if d=3 then goto *firework else *notfirework *firework if s 160 then goto *up else *open *up line (650,300-s)- (655,300-s-10),rgb(255,255,0),bf line (650,300-s)- (655,300-s+10),0,bf if s=10 then goto *bl else *fini *bl line (650,300)- (655,300-s),0,bf goto *fini *open if s 300 then goto *fini line (650,150)- (655,150-10),0,bf line (650,150)-(650+100*cos(pre),150+100*sin(pre)),0 theta = 2*3.1415*rnd() pre =theta c=rnd()*8 line (650,150)-(650+100*cos(theta),150+100*sin(theta)),c *fini line (650,150)-(650+100*cos(pre),150+100*sin(pre)),0 sleep 100 goto *notfirework *notfirework next s 波2 iが増える→y座標の増加に伴い、x座標も比例して増やすが、±20だけランダムに変化させる sが増える→白い波が岸から離れる for s=0 to 400 step 20 for i=0 to 500 circle (300+0.6*i+3+100-s,300+i),1,rgb(224,238,238),,,,f circle (300+0.6*i+3+100+1-s,300+i),1,rgb(0,0,128),,,,f x=rnd()*20 x500[i]=x Pset (300+0.6*i+3+s+x500[i],300+i),rgb(224,238,238) Pset (300+0.6*i+3+1+s+x500[i],300+i),rgb(0,0,128) Pset (300+0.6*i+3+100+2-s+x500[i],300+i),rgb(0,0,128) Pset (300+0.6*i+3+100+3-s+x500[i],300+i),rgb(0,0,128) Pset (300+0.6*i+3+100+4-s+x500[i],300+i),rgb(0,0,128) Pset (300+0.6*i+3+100+5-s+x500[i],300+i),rgb(0,0,128) if s =0 then goto *left else goto *right *left line (300+s-0.04*i,300)-(300+s-0.04*i+560*0.6,860),rgb(0,0,128) goto *tugi *right if s=20 then goto *hama else goto *tuduki *hama line (300-s+0.04*i,300)-(300-s+0.04*i+560*0.6,860),rgb(240,230,140) line (300+s+0.04*i-20,300)-(300+s+0.04*i-20+560*0.6,860),rgb(0,0,128) goto *tuduki *tuduki line (300+s+0.04*i-20,300)-(300+s+0.04*i-20+560*0.6,860),rgb(0,0,128) y=rnd()*20 y500[i]=y Pset (300+0.6*i+560-(s-260)+y500[i],300+i),rgb(224,238,238) Pset (300+0.6*i+1+560-(s-260)+y500[i],300+i),rgb(0,0,128) line (300-(s-260)-0.04*i+560+40,300)-(300-(s-260)-0.04*i+560+560*0.6+40,860),rgb(0,0,128) goto *tugi line (300+s+1,300)-(300+s+560*0.6+1,860),rgb(0,0,128) line (300+s+2,300)-(300+s+560*0.6+2,860),rgb(0,0,128) line (300+s+3,300)-(300+s+560*0.6+3,860),rgb(0,0,128) line (300+s+4,300)-(300+s+560*0.6+4,860),rgb(0,0,128) line (300+s+5,300)-(300+s+560*0.6+5,860),rgb(0,0,128) line (300+s+6,300)-(300+s+560*0.6+6,860),rgb(0,0,128) line (300+s+7,300)-(300+s+560*0.6+7,860),rgb(0,0,128) line (300+s+8,300)-(300+s+560*0.6+8,860),rgb(0,0,128) line (300+s+9,300)-(300+s+560*0.6+9,860),rgb(0,0,128) *tugi next i next s next d
https://w.atwiki.jp/ra_activebasic/
rest s ActiveBasic Area rest s ActiveBasicArea(謎)へようこそ! RiddleArea
https://w.atwiki.jp/opengl/pages/244.html
基本プロジェクトにチェックボックスを作成します。 ダブルクリックすると private System Void checkBox1_CheckedChanged(System Object^ sender, System EventArgs^ e) { } というコードが作成されるので、その中に以下のコードを記述します。 if( checkBox1- Checked == true){ checkBox1- Text = チェックされています。 ; }else{ checkBox1- Text = チェックされていません。 ; } ビルドして実行してみましょう。 MyForm.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #include MyForm.h using namespace Project1; [STAThreadAttribute] int main(){ MyForm ^form1 = gcnew MyForm; form1- ShowDialog(); return 0; } MyForm.h #pragma once namespace Project1 { using namespace System; using namespace System ComponentModel; using namespace System Collections; using namespace System Windows Forms; using namespace System Data; using namespace System Drawing; /// summary /// MyForm の概要 /// /summary public ref class MyForm public System Windows Forms Form { public MyForm(void) { InitializeComponent(); // //TODO ここにコンストラクター コードを追加します // } protected /// summary /// 使用中のリソースをすべてクリーンアップします。 /// /summary ~MyForm() { if (components) { delete components; } } private System Windows Forms CheckBox^ checkBox1; protected protected protected private /// summary /// 必要なデザイナー変数です。 /// /summary System ComponentModel Container ^components; #pragma region Windows Form Designer generated code /// summary /// デザイナー サポートに必要なメソッドです。このメソッドの内容を /// コード エディターで変更しないでください。 /// /summary void InitializeComponent(void) { this- checkBox1 = (gcnew System Windows Forms CheckBox()); this- SuspendLayout(); // // checkBox1 // this- checkBox1- AutoSize = true; this- checkBox1- Location = System Drawing Point(73, 82); this- checkBox1- Name = L checkBox1 ; this- checkBox1- Size = System Drawing Size(80, 16); this- checkBox1- TabIndex = 0; this- checkBox1- Text = L checkBox1 ; this- checkBox1- UseVisualStyleBackColor = true; this- checkBox1- CheckedChanged += gcnew System EventHandler(this, MyForm checkBox1_CheckedChanged); // // MyForm // this- AutoScaleDimensions = System Drawing SizeF(6, 12); this- AutoScaleMode = System Windows Forms AutoScaleMode Font; this- ClientSize = System Drawing Size(284, 261); this- Controls- Add(this- checkBox1); this- Name = L MyForm ; this- Text = L Hello C++/CLI World !! ; this- ResumeLayout(false); this- PerformLayout(); } #pragma endregion private System Void checkBox1_CheckedChanged(System Object^ sender, System EventArgs^ e) { if( checkBox1- Checked == true){ checkBox1- Text = チェックされています。 ; }else{ checkBox1- Text = チェックされていません。 ; } } }; }
https://w.atwiki.jp/abwiki/pages/657.html
N88互換BASIC for Windows95 Windows上で動作するBASICインタプリタ。 99BASICに昔の雰囲気ともに劣るが、 コード画面、デバック画面、実行画面を持ち、プログラミング環境としては良い。 ただしエラー関連は大変貧弱であり、 表示が従来のものではなくERR/ERLも持っていない。 またダイレクトモードを持っていないのも大きな障壁だ。 ダイレクトモードを持つBASICにTiny Basicというものもある。 が、これも昔のBASICとの互換性は今ひとつという感じだ。 まとめると下記のようになる。 昔のBASICの雰囲気重視なら99BASICで決定。 N88BASICでお手軽にプログラムしたいならN88互換BASIC。 VBのまね事をしたいならActiveBasic 変態はTinyBasic