动态创建FORM??? 在程序如何动态创建一个FORM 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Private Sub Command1_Click() Dim x As New Form1 x.Caption = "NewForm" x.ShowEnd Sub Option ExplicitPrivate Sub Command1_Click()Dim aa As FormSet aa = New Form1aa.Caption = "新窗体"aa.ShowEnd Sub 有能力的话,看看下面这个“Hello”的例子//SDK开始,以前总是问人要一个每行加注的例子,结果很不幸.//于是就从书里找,可是都没有现成的,以下是我的理解,方便想学SDK//且象我这样菜的人.如果你认为有用就送花没用就飞刀,我会好好#include "stdafx.h" //头文件不能去掉 #include <windows.h>//头文件不能去掉LRESULT CALLBACK WndProc (HWND,// 窗口实例句柄 UINT, // 消息标识 WPARAM, // 消息附加信息 LPARAM);// 消息附加信息int WINAPI WinMain(HINSTANCE hInstance, //应用程序当前实例句柄 HINSTANCE hPrevInstance,//应用程序其它实例句柄 PSTR szCmdLine,//指向程序命令行参数的指针 int iCmdShow)//告诉如何显示这个窗口{//建立窗口类 static TCHAR szAppName[] = TEXT ("HelloWin"); HWND hwnd;//主窗口句柄(句柄为窗口windows中的标识) MSG msg;//定义消息名 WNDCLASS wc;//建立窗口类,就是用WNDCLASS结构定义一个结构变量 wc.style = CS_HREDRAW | CS_VREDRAW;//成员style控制窗口的某些重要特性 wc.lpfnWndProc = WndProc;//指向该窗口类的消息处理函数的指针,此函数称为窗口过程函数 wc.cbClsExtra = 0;//cbClsExtra域指定用本窗口类建立的所有窗口结构分配的额外字节数 wc.cbWndExtra = 0;//cbWndExtra域指定用本窗口类建立的所有窗口结构分配的额外字节数 wc.hInstance = hInstance;//应用程序的实例名可改变的 wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);//成员hIcon应用程序所使用图标的句柄 wc.hCursor = LoadCursor (NULL, IDC_ARROW); //IDC_ARROW表示箭头光标 wc.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);//窗口背景的刷子颜色 wc.lpszMenuName = NULL; //lpszMenuName用来指定菜单名 wc.lpszClassName = szAppName; //lpszClassName指定了本窗口的类名//注册窗口类 if (!RegisterClass (&wc)) { MessageBox (NULL, TEXT ("This program requires Windows NT!"), szAppName, MB_ICONERROR); return 0; }//创建窗口 hwnd = CreateWindow (szAppName, // 登记窗口类名,这个类名已经定义过了 //CreateWindow()的返回值是已经创建的窗口的句柄,应用程序使用这个句柄来引用该窗口 TEXT ("奶奶的学好SDK为人类的幸福而奋斗!"), //表明窗口的标题 WS_OVERLAPPEDWINDOW, // 表明窗口的风格,如有无最大化,最小化按纽 CW_USEDEFAULT, // 程序运行后窗口在屏幕中的x坐标值 CW_USEDEFAULT, // 程序运行后窗口在屏幕中的y坐标值 CW_USEDEFAULT, // 窗口的大小x值 CW_USEDEFAULT, // 窗口的大小y值 NULL, // 创建窗口时可以指定其父窗口 NULL, // 指明窗口的菜单 hInstance, // 程序实例句柄 NULL); // 附加数据,一般都是0//显示和更新窗口 ShowWindow (hwnd, iCmdShow);//第一参数是窗口句柄,第二参数则告诉如何显示这个窗口 UpdateWindow (hwnd);//调用UpdateWindow将产生WM_PAINT消息,这个消息将使窗口重画//创建消息循环 while(GetMessage(&msg, NULL, 0, 0))//从消息队列中取出一个消息 { TranslateMessage (&msg);//翻译消息 DispatchMessage (&msg);//撤去消息 } //终止应用程序 return msg.wParam;//表示从PostQuitMessage返回的值}//窗口过程,窗口过程函数LRESULT CALLBACK WndProc (HWND hwnd, // 窗口实例句柄 UINT message, // 消息标识 WPARAM wParam, // 第一条消息参数 LPARAM lParam) // 第二条消息参数{ HDC hdc; PAINTSTRUCT ps; RECT rect; switch (message)//窗口过程处理消息通常以switch语句开始,每一条消息ID都跟有一条case语句 { case WM_PAINT://这个消息将使窗口重画 hdc = BeginPaint (hwnd, &ps);//通常情况下用BeginPaint()来响应WM_PAINT消息 GetClientRect (hwnd, &rect);//在调用完BeginPaint之后,WndProc接着调用GetClientRect //第一个hwnd是程序窗口句柄。第二个参数是一个指针,指向一个RECT类型的结构 DrawText (hdc, TEXT ("奶奶的学好SDK为人类的幸福而奋斗"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER); EndPaint (hwnd, &ps);//结束BeginPaint函数 return 0; case WM_DESTROY://只要用户关闭窗口,就会发送WM_DESTROY消息 PostQuitMessage (0);//程序通过调用PostQuitMessage以标准方式响应WM_DESTROY消息 //GetMessage收到的消息是WM_QUIT时返回FALSE,结束消息循环,从而终止应用程序 return 0; } //其他消息由DefWindowProc默认处理函数来处理 return DefWindowProc (hwnd, message, wParam, lParam) ;} 程序运行时错误 VB中"<<"运算符的解答 MSHFlexGrid排序内容识别问题 VB中怎么用Shell执行命令行下的CTRL+C进行中断。 界面中,绿色背景上用什么颜色的字比较好? 提个简单的文件内容替换动作,请大虾指教。 放400分,谁能帮我恢复在灌水区的发言权,分就给谁(1) 如何控制time控件的时间间隔?它的interval最大就是65536 关于动态链接库调用出现的一个问题! 如何知道光驱里面有没有碟 statusbar刷新的时候有闪动,该怎么解决。 SELECT效率的问题。
Dim x As New Form1
x.Caption = "NewForm"
x.Show
End Sub
Dim aa As Form
Set aa = New Form1
aa.Caption = "新窗体"
aa.Show
End Sub
//于是就从书里找,可是都没有现成的,以下是我的理解,方便想学SDK
//且象我这样菜的人.如果你认为有用就送花没用就飞刀,我会好好
#include "stdafx.h" //头文件不能去掉
#include <windows.h>//头文件不能去掉
LRESULT CALLBACK WndProc (HWND,// 窗口实例句柄
UINT, // 消息标识
WPARAM, // 消息附加信息
LPARAM);// 消息附加信息
int WINAPI WinMain(HINSTANCE hInstance, //应用程序当前实例句柄
HINSTANCE hPrevInstance,//应用程序其它实例句柄
PSTR szCmdLine,//指向程序命令行参数的指针
int iCmdShow)//告诉如何显示这个窗口
{
//建立窗口类 static TCHAR szAppName[] = TEXT ("HelloWin");
HWND hwnd;//主窗口句柄(句柄为窗口windows中的标识)
MSG msg;//定义消息名
WNDCLASS wc;//建立窗口类,就是用WNDCLASS结构定义一个结构变量
wc.style = CS_HREDRAW | CS_VREDRAW;//成员style控制窗口的某些重要特性
wc.lpfnWndProc = WndProc;//指向该窗口类的消息处理函数的指针,此函数称为窗口过程函数
wc.cbClsExtra = 0;//cbClsExtra域指定用本窗口类建立的所有窗口结构分配的额外字节数
wc.cbWndExtra = 0;//cbWndExtra域指定用本窗口类建立的所有窗口结构分配的额外字节数
wc.hInstance = hInstance;//应用程序的实例名可改变的
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);//成员hIcon应用程序所使用图标的句柄
wc.hCursor = LoadCursor (NULL, IDC_ARROW); //IDC_ARROW表示箭头光标
wc.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);//窗口背景的刷子颜色
wc.lpszMenuName = NULL; //lpszMenuName用来指定菜单名
wc.lpszClassName = szAppName; //lpszClassName指定了本窗口的类名//注册窗口类 if (!RegisterClass (&wc))
{
MessageBox (NULL, TEXT ("This program requires Windows NT!"),
szAppName, MB_ICONERROR);
return 0;
}//创建窗口 hwnd = CreateWindow (szAppName, // 登记窗口类名,这个类名已经定义过了
//CreateWindow()的返回值是已经创建的窗口的句柄,应用程序使用这个句柄来引用该窗口
TEXT ("奶奶的学好SDK为人类的幸福而奋斗!"), //表明窗口的标题
WS_OVERLAPPEDWINDOW, // 表明窗口的风格,如有无最大化,最小化按纽
CW_USEDEFAULT, // 程序运行后窗口在屏幕中的x坐标值
CW_USEDEFAULT, // 程序运行后窗口在屏幕中的y坐标值
CW_USEDEFAULT, // 窗口的大小x值
CW_USEDEFAULT, // 窗口的大小y值
NULL, // 创建窗口时可以指定其父窗口
NULL, // 指明窗口的菜单
hInstance, // 程序实例句柄
NULL); // 附加数据,一般都是0
//显示和更新窗口 ShowWindow (hwnd, iCmdShow);//第一参数是窗口句柄,第二参数则告诉如何显示这个窗口
UpdateWindow (hwnd);//调用UpdateWindow将产生WM_PAINT消息,这个消息将使窗口重画//创建消息循环 while(GetMessage(&msg, NULL, 0, 0))//从消息队列中取出一个消息
{
TranslateMessage (&msg);//翻译消息
DispatchMessage (&msg);//撤去消息
}
//终止应用程序
return msg.wParam;//表示从PostQuitMessage返回的值
}//窗口过程,窗口过程函数LRESULT CALLBACK WndProc (HWND hwnd, // 窗口实例句柄
UINT message, // 消息标识
WPARAM wParam, // 第一条消息参数
LPARAM lParam) // 第二条消息参数
{
HDC hdc;
PAINTSTRUCT ps;
RECT rect;
switch (message)//窗口过程处理消息通常以switch语句开始,每一条消息ID都跟有一条case语句
{
case WM_PAINT://这个消息将使窗口重画
hdc = BeginPaint (hwnd, &ps);//通常情况下用BeginPaint()来响应WM_PAINT消息
GetClientRect (hwnd, &rect);//在调用完BeginPaint之后,WndProc接着调用GetClientRect
//第一个hwnd是程序窗口句柄。第二个参数是一个指针,指向一个RECT类型的结构
DrawText (hdc, TEXT ("奶奶的学好SDK为人类的幸福而奋斗"), -1, &rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER);
EndPaint (hwnd, &ps);//结束BeginPaint函数
return 0;
case WM_DESTROY://只要用户关闭窗口,就会发送WM_DESTROY消息
PostQuitMessage (0);//程序通过调用PostQuitMessage以标准方式响应WM_DESTROY消息
//GetMessage收到的消息是WM_QUIT时返回FALSE,结束消息循环,从而终止应用程序
return 0;
}
//其他消息由DefWindowProc默认处理函数来处理
return DefWindowProc (hwnd, message, wParam, lParam) ;
}