⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 9909.txt

📁 关于编程技术技巧的文章
💻 TXT
📖 第 1 页 / 共 2 页
字号:

{ 

DeleteObject(DarkGrayPen); 

DeleteObject(LightGrayPen); 

DeleteObject(WhitePen); 

DeleteObject(BlackPen); 

DeleteObject(LightGrayBrush); 

DeleteObject(BlueBrush); 

DeleteObject(NullBrush); 

} 

void TNewDialog::CreateDrawObject(void) 

{ 

DarkGrayPen = (HPEN)CreatePen( 

PS_SOLID,1,RGB(128,128,128)); 

LightGrayPen= (HPEN)CreatePen( 

PS_SOLID,1,RGB(192,192,192)); 

WhitePen = (HPEN)GetStockObject(WHITE_PEN); 

BlackPen = (HPEN)GetStockObject(BLACK_PEN); 

LightGrayBrush = (HBRUSH)GetStockObject( LTGRAY_BRUSH); 

NullBrush = (HBRUSH)GetStockObject( 

NULL_BRUSH); 

LOGBRUSH lb; 

lb.lbStyle = BS_SOLID; 

lb.lbColor = RGB( 0, 0, 128); 

lb.lbHatch = NULL; 

BlueBrush = CreateBrushIndirect(&lb); 

} 

void TNewDialog::WMActivate(RTMessage Msg) 

{ 

if(Msg.WParam==WA_ACTIVE || 

Msg.WParam==WA_CLICKACTIVE) 

DrawFrame(); 

} 

void TNewDialog::WMNCPaint(RTMessage ) 

{ DrawFrame(); } 

void TNewDialog::DrawFrame() 

{ 

RECT rWinRect; 

HDC hWinDC; 

LONG DLGStyle; 

HPEN oldPen; 

HBRUSH oldBrush; 

int r,b; 

hWinDC = GetWindowDC(HWindow); 

G etWindowRect(HWindow,&rWinRect); 

r = rWinRect.right-rWinRect.left-1; 

b = rWinRect.bottom-rWinRect.top-1; 

oldPen = (HPEN)SelectObject( 

hWinDC,DarkGrayPen); 

oldBrush=(HBRUSH)SelectObject( 

hWinDC,NullBrush); 

Rectangle(hWinDC,0,0,r,b); 

SelectObject(hWinDC,BlueBrush); 

Rectangle(hWinDC,5,4,r-4,24); 

SelectObject(hWinDC,BlackPen); 

MoveTo(hWinDC,0,b); 

LineTo(hWinDC,r,b); 

LineTo(hWinDC,r,-1); 

SelectObject(hWinDC,WhitePen); 

MoveTo(hWinDC,1,b-2); 

LineTo(hWinDC,1,1); 

LineTo(hWinDC,r-1,1); 

MoveTo(hWinDC,r-5,5); 

LineTo(hWinDC,r-5,23); 

LineTo(hWinDC,4,23); 

SelectObject(hWinDC,LightGrayPen); 

SelectObject(hWinDC,NullBrush); 

Rectangle(hWinDC,2,2,r-1,b-1); 

Rectangle(hWinDC,3,3,r-2,b-2); 

Rectangle(hWinDC,4,4,r-3,b-3); 

SelectObject(hWinDC,DarkGrayPen); 

MoveTo(hWinDC,5,4); 

LineTo(hWinDC,r-4,4); 

DLGStyle = GetWindowLong(HWindow, 

GWL_STYLE); 

if(DLGStyle & WS_SYSMENU) { 

SelectObject(hWinDC,LightGrayPen); 

SelectObject(hWinDC,LightGrayBrush); 

Rectangle(hWinDC,6,5,24,23); 

SelectObject(hWinDC,BlackPen); 

SelectObject(hWinDC,NullBrush); 

Rectangle(hWinDC,8,12,21,15); 

SelectObject(hWinDC,WhitePen); 

MoveTo(hWinDC,9,13); 

LineTo(hWinDC,20,13); 

SelectObject(hWinDC,DarkGrayPen); 

MoveTo(hWinDC,9,15); 

LineTo(hWinDC,21,15); 

LineTo(hWinDC,21,12); 

} 

SelectObject(hWinDC,oldPen); 

SelectObject(hWinDC,oldBrush); 

ReleaseDC(HWindow,hWinDC); 

}                     
                     
*****************************************************
 
                      VB4.0为应用程序创建快捷方式

  一般来说,软件在安装时都会创建一个快捷方式来方便用户使用,我们也可
为自己的应用程序在桌面上创建一个快捷方式。安装Microsoft Visual Basic 4.0
后,将会有一个Setup Kit工具,其所带的STKIT432.DLL文件中提供了一个API函数
fCreateShellLink可供用户来为应用程序创建快捷方式。下来举例说明其使用方法。
  在这里我们为NOTEPAD创建一个快捷方式。
  1、在VB4.0中打开一个新工程文件,在FORM1上添加一个命令按钮Command1。
  2、双击窗体,在General Declarations中输入下面代码:
Private Declare Function fCreateShellLink Lib ″STKIT432.DLL"″(ByVal_lpstrFolderName As
String,ByVal lpstrLinkName As String,ByVal_lpstrLinkPath As String,ByVal lpstrLinkArgs As
 String) As Long
  3、双击Command1命令按钮,写如下代码:
Sub Command1_Click()
Dim lReturn As Long
lReturn=fCreateShellLink(″..。.\Desktop″,_″快捷方式Notepad″,″c:\win95\notepad.exe″,″″)
lReturn=fCreateShellLink(″″,″快捷方式Notepad″,_″c:\\win95\notepad.exe″,″″)
lReturn=fCreateShellLink(″\startup″,″快捷方式Notepad″,_″c:\win95\notepad.exe″,″″)
End Sub
  4、按F5运行,单击命令按钮command1,如果没有输入错误的话,桌面上就会出现
NOTEPAD的快捷方式。

运行环境:VB4.0(32),中文WINDOWS95。
                 
*****************************************************
    
                   模拟键盘输入实现程序的自动演示

                            (安徽 王翼)

  许多优秀的软件都有出色的DEMO(演示)功能,给人留下深刻的印象。DEMO程序或
许多CAI(计算机辅助教学)软件经常需要模拟键盘输入所需的文件名,来实现程序的
自动运行。要实现键盘的模拟输入,必须了解键盘缓冲区的结构及相应编程机理。键
盘缓冲区在内存中的地址分配如下:
004:001AH0040:001BH存放键盘缓冲区首指针;
004:001CH0040:001DH存放键盘缓冲区尾指针;
004:001AH0040:001BH键盘缓冲区,存放击键字符。
  每次击键用2字节存放。若为功能键,则第一个字节为0,第二个字节为该键的扩
展码;若为普通键,则第一个字节为该健的ASCCII码,第二字节为0。每击一次键,
数据送入键盘缓冲区中尾指针指向的单元,同时尾指针加2;从键盘缓冲区读出键时,
数据从缓冲区队列中首指针指示的单元取出,首指针同时加2。若首尾指针相等,表
示缓冲区为空。要实现对键盘缓冲区的自动操作,这里利用C语言的对内存直接读库
函数peek()和对内存直接写函数pokeb(),从而实现模拟键盘输入功能。
  程序中的关键函数是keyboard(int choice,char key[]),若choice参数不为0,
则key字符串中的字符的ASCII码逐个送入键盘缓冲区;如果choice参数为0,则将功
能键的扩展码送键盘缓冲区主程序运行后,如果5秒钟内不通过键盘输入所需的文件
名,则调用keyboard函数利用模拟键盘输入功能输入bar3d.c(CR),由此实现程序自
动运行。
程序在P133多媒体机上采用Turbo C 2.0编译连接通过,运行正常。
/*filename:demo-kbd.c*/
/*模拟键盘输入使程序自动运行 */
#include<stdio.h>
#include<conio.h>
#include<dos.h>
keyboard(int choice,char key[])
{
int offset,i;
offset=peek(0x40,0x1c);
for(i=0;key[i]!='';i++)
{
if(choice==0)
{
pokeb(0x40,offset,0x00);
pokeb(0x40,offset,key[i]);
}
if(choice!=0)

{
pokeb(0x40,offset,key[i]);
pokeb(0x40,offset+1,0x00);
}
offset=offset+2;
if(offset==0x3e)offset=0x1e;
}
pokeb(0x40,0x1c,offset);
}
main()
{
struct time tt;
char name[10];
int t,t1,t2,flag=0;
gettime(&tt);
t1=tt.ti_sec;
printf("input files name");
while(!kbhit())
{
gettime(&tt);
t2=tt.ti_sec;
t=t2-t1;
if(t>5)
{
flag=1;
break;
}
}
if(flag==1)keyboard(1,"mljp.c\x0D");
gets(name);
printf("\s",name);
}
                         
*****************************************************

                         绘制花瓣图形的小程序

  下面是利用MS-DOS 6.22的QBASIC语言编写的绘制花瓣图形的小程序,只
要输入花瓣数量N值(建议N值取为3-8),即可在屏幕上绘制出相应的花瓣图形。
CLS
INPUT ″N=″,N
SCREEN2:KEY OFF:CLS
P=3.14159
FOR A=0 TO 2*P STEP P/360
E=100*(1+SIN(N*A))
X=320+E*COS(A):X1=320+E*COS(A+P/5)
Y=100+E*SIN(A)/2:Y1=100+E*SIN(A+P/5)/2
LINE(X,Y)-(X1,Y1)
NEX T A
END

*****************************************************

<疑难杂症>

问题001

小弟是vb初学者,有几个问题请教大侠。
1、如何去掉下拉列表框中的重复选项?
2、在编写数据库程序时,我在一窗体中用到Data 和 Dbgrid 控件进行绑定数据
库,通过设置 Dbgrid 控件的属性可以实现添加、删除等操作,我怎样才能得到
象Access中"冻结选定列" 或 象Foxpro 2.5中 Browse命令中 lock "列号"而实
现冻结”选定列呢,若能给出例子,小弟将不胜感激!
回答请mailto: guangli@adm.tjftz.gov.cn

*****************************************************
*****************************************************

<编者的话>


本刊已加入【CHINA-EZL】中国电子杂志联盟
联盟主页地址 http://china-ezl.yeah.net

如果您觉得这份刊物还不错的话,欢迎把它介绍给您的朋友.
不知道您看了这期刊物有什么想法或者是意见,欢迎向我提出来.
本人感激不尽,我的联系方法如下:
E-mail:yaozheng@kali.com.cn
本刊主页: http://yaozheng.soim.com
          http://person.zj.cninfo.net/~yao
         
                                                
<<编程技术>>订阅方法:

请到本刊主页进行订退工作 http://person.zj.cninfo.net/~yao

投稿:向yaozheng@kali.com.cn发封邮件     主题:投稿
提问:向yaozheng@kali.com.cn发封邮件     主题:提问

**********************THE END************************

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -