十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
步骤:
创新互联是一家专业提供平川企业网站建设,专注与成都网站设计、成都做网站、html5、小程序制作等业务。10年已为平川众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。
1、注册窗口类;
2、创建窗体;
3、消息循环;
4、编写窗口消息处理函数。
代码:
#include windows.h
#includetchar.h
LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
int WINAPI _tWinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR szCmdLine, int nCmdShow)
{
WNDCLASS wc;
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WindowProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = NULL;
wc.hCursor = LoadCursor(NULL,IDC_ARROW);
wc.hbrBackground = (HBRUSH)COLOR_WINDOW;//(HBRUSH)GetStockObject();
wc.lpszMenuName = NULL;
wc.lpszClassName = _T("MyWindowClass");
if (!RegisterClass(wc))
{
MessageBox (NULL, _T("无法注册窗口类"), _T("错误"), MB_OK);
return 0 ;
}
HWND newWindow = CreateWindow(
_T("MyWindowClass"),
_T("我的第一个winapi程序"),
WS_OVERLAPPEDWINDOW,
0,
0,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL
);
if (NULL == newWindow)
{
MessageBox (NULL, _T("无法创建窗体"), _T("错误"), MB_OK);
return 0;
}
ShowWindow(newWindow, nCmdShow);
UpdateWindow(newWindow);
MSG msg;
while(GetMessage(msg, NULL, 0, 0))
{
TranslateMessage(msg);
DispatchMessage(msg);
}
}
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_DESTROY:
{
PostQuitMessage(0);
break;
}
default :
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
return 0;
}
就是一个只有标题栏、关闭按钮、最小化按钮、最大化/还原按钮、显示区域的窗体。
你说的是命令行窗口还是win32 窗口? 是win32窗口的话,你可以给这个窗口的HWND发送 WM_QUIT消息.
如果命令行窗口, 你要想办法让程序流程走到main最后,或者调用exit(0)
加个getchar()函数就可以了,不过你要加对位置. 答案补充 这个就是你在编写完主程序后,结尾加上这个函数就可以了.窗口不会关闭! 答案补充 不好意思,忘了看你的编译器了,你的是TC,TC可以在运行后到文件夹中查看。另外一种C的编译器可以用我的方法。 答案补充 我刚才说了,TC可以在运行后到文件夹中查看,有个专门的文件,你点开就能看了! 答案补充 不用啊,你只要运行成功,把程序发给别人就行了! 答案补充 你shift+enter后,dos框不会自动关闭
没那么复杂,可以用简单的余弦窗代替,我试过做降噪和变调,效果挺好的。
例如:
double Data_real[1024];
double Data_imagine[1024];
w=2*PI/1024;
for(long i=0;i1024;i++)
{
Data_real[i]*=(0.5*(cos(w*(i-1024*0.5+0.5))+1));//余弦窗
};
FFT(1024,false,Data_real,Data_imagine,real_out,imagine_out);
需要注意的是加窗之后,各处理段之间要进行重叠混合处理。
1.函数说明:FindWindow,Win32 API函数。
FindWindow函数返回与指定字符串相匹配的窗口类名或窗口名的最顶层窗口的窗口句柄。这个函数不会查找子窗口。
2.函数原型:
HWND FindWindow( LPCTSTR lpClassName,
LPCTSTR lpWindowName
);3.参数说明:
lpClassName
指向一个以null结尾的、用来指定类名的字符串或一个可以确定类名字符串的原子。如果这个参数是一个原子,那么它必须是一个在调用此函数前已经通过GlobalAddAtom函数创建好的全局原子。这个原子(一个16bit的值),必须被放置在lpClassName的低位字节中,lpClassName的高位字节置零。
lpWindowName
指向一个以null结尾的、用来指定窗口名(即窗口标题)的字符串。如果此参数为NULL,则匹配所有窗口名。
4返回值:
如果函数执行成功,则返回值是拥有指定窗口类名或窗口名的窗口的句柄。
如果函数执行失败,则返回值为 NULL 。可以通过调用GetLastError函数获得更加详细的错误信息。5.使用示例:HWND hWndRcv = ::FindWindow(NULL,"123");if(hWndRcv != NULL){ AfxMessageBox("找到123窗口");}