精华内容
下载资源
问答
  • 编写一个Windows窗口应用程序

    千次阅读 2017-08-16 10:49:52
    编写一个Windows窗口应用程序使用VS2008,64位编译器。 1.打开VS2008,新建一个空项目2.在项目中添加.cpp文件3.输入代码如下 #include <windows.h> #include <stdio.h>LRESULT CALLBACK WinHuProc( HWND hwnd, // ...

    编写一个Windows窗口应用程序

    使用VS2008,64位编译器。

    • 1.打开VS2008,新建一个空项目
    • 打开VS2008,新建一个空项目
    • 2.在项目中添加.cpp文件
    • 这里写图片描述
    • 3.输入代码如下
    #include <windows.h>
    #include <stdio.h>
    
    LRESULT CALLBACK WinHuProc(
        HWND hwnd,      // handle to window
        UINT uMsg,      // message identifier
        WPARAM wParam,  // first message parameter
        LPARAM lParam   // second message parameter
                                );
    
    int WINAPI WinMain(
        HINSTANCE hInstance,        // handle to current instance
        HINSTANCE hPrevInstance,    // handle to previous instance
        LPSTR lpCmdLine,            // command line
        int nCmdShow                // show state
                       )
    {
        //设计一个窗口类
        WNDCLASS wndcls;
        wndcls.cbClsExtra=0;
        wndcls.cbWndExtra=0;
        wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
        wndcls.hCursor=LoadCursor(NULL,IDC_CROSS);
        wndcls.hIcon=LoadIcon(NULL,IDI_ERROR);
        wndcls.hInstance=hInstance;     //应用程序实例句柄由WinMain函数传进来
        wndcls.lpfnWndProc=WinHuProc;
        wndcls.lpszClassName="simpleframe";
        wndcls.lpszMenuName=NULL;
        wndcls.style=CS_HREDRAW | CS_HREDRAW;
        RegisterClass(&wndcls);
    
        //创建窗口,定义一个变量用来保存成功创建窗口后返回的句柄
        HWND hwnd;
        hwnd=CreateWindow("simpleframe","12345",
            WS_OVERLAPPEDWINDOW,0,0,600,400,NULL,NULL,hInstance,NULL);
        //显示及刷新窗口
        ShowWindow(hwnd,SW_SHOWNORMAL);
        UpdateWindow(hwnd);
    
        //定义消息结构体,开始消息循环
        MSG msg;
        while (GetMessage(&msg,NULL,0,0))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
        return msg.wParam;
    }
        //编写窗口过程函数
        LRESULT CALLBACK WinHuProc(
            HWND hwnd,      // handle to window
            UINT uMsg,      // message identifier
            WPARAM wParam,  // first message parameter
            LPARAM lParam   // second message parameter
            )
        {
            switch(uMsg)
            {
            case WM_CHAR:
                char szChar [20];
                sprintf (szChar,"char code is %d",wParam);
                MessageBox(hwnd,szChar,"char",0);
                break;
            case WM_LBUTTONDOWN:
                MessageBox(hwnd,"mouse clicked","message",0);
                HDC hdc;
                hdc=GetDC(hwnd);        //不能再响应WM_PAINT消息时调用
                TextOut (hdc,0,50,"程序员之家",strlen("程序员之家"));
                //ReleaseDC (hwnd,hdc);
                break;
            case WM_PAINT:
                HDC hDC;
                PAINTSTRUCT ps;
                hDC=BeginPaint(hwnd,&ps);       //BeginPaint 只能在响应WM_PAINT消息时调用
                TextOut(hdc,0,0,"12345",strlen("12345"));
                EndPaint(hwnd,&ps);
                break;
            case WM_CLOSE:
                if (IDYES == MessageBox(hwnd,"是否真的结束?","message",MB_YESNO))
                {
                    DestroyWindow(hwnd);
                }
                break;
            case WM_DESTROY:
                PostQuitMessage(0);
                break;
            default:
                return DefWindowProc(hwnd,uMsg,wParam,lParam);
            }
            return 0;
        }
    
    • 4.选择x64编译器
    • 这里写图片描述
    • 5.编译运行

    - 这里写图片描述

    代码来源:《VC深入详解》第一章

    展开全文
  • 7-10 编写一个Windows应用程序,将应用程序窗口的用户区均分为16个不同的区域,当鼠标光标移动到不同的区域中会出现不同的形状。 ①创建一个名称为My7_10的单文档应用程序框架。 ②在视图类声明中定义-一个成员变量: ...

    《MFC Windows应用程序设计》第七章课后题答案
    7-10 编写一个Windows应用程序,将应用程序窗口的用户区均分为16个不同的区域,当鼠标光标移动到不同的区域中会出现不同的形状。

    ①创建一个名称为My7_10的单文档应用程序框架。
    ②在视图类声明中定义-一个成员变量:

    public :
    HCURSOR *m_ hCursor;
    

    ③在视图类的构造函数中编写如下代码:

    CMy7_10View:: CMy7_10View()
    {
    static char * szCursor[] ={
    IDC_ ARROW,
    IDC_ IBEAM,
    IDC_ WAIT,
    IDC_CROSS,
    IDC_ UPARROW ,
    IDC_ SIZENWSE,
    IDC_ SIZENESW,
    IDC_ SIZEWE,
    IDC_ SIZENS,
    IDC_ SIZEALL,
    IDC_NO,
    IDC_APPSTA RTING,
    IDC_ HELP,
    IDC_ARROW,
    IDC_ ARROW,
    IDC_ ARROW
    };
    for(int i=0;i< 16;i+ + )
    m_hCursor[i] = ::LoadCursor( NULL, szCursor[i] );
    }
    

    ④为视图类添加一个成员函数GetCursorRegion,代码如下:

    int CMy7_10View:: GetCursorRegion( POINT *lpPt)
    {
    RECT Rect;
    GetClientRect(&Rect);
    int x= (lpPt->x *4)/Rect.right;
    if(x>3) x= 3;
    int y= (lpPt-> y *4)/Rect.bottom;
    if(y>3) y=3;
    return(y *4+ x);
    

    ⑤在视图类的WM_SETCURSOR消息响应函数中编写如下代码:

    BOOL CMy7_10View: :OnSetCursor(CWnd * pWnd, UINT nHitTest, UINT message)
    if(nHitTest= = HTCLIENT)
    (POINT pt;
    GetCur sorPos(& pt) ;
    Sc reenToClient(& pt);
    int nCursor = GetCursorRegion( &pt);
     SetCursor( m_hCursor[ nCursor]);
     return(TRUE);
    return CView::OnSetCursor( pWnd, nHitTest, message);
    }
    

    ⑥在视图类的鼠标移动消息响应函数中编写如下代码:

    void CMy7_10 View::OnMouse Move( UINT nFlags, CPoint point)
    {
    static CString strCursor[]= 1
    "IDC_ ARROW&apos; ,
    "IDC_ IBEAM" ,
    " IDC_ WAIT" ,
    "IDC_ CROSS",
    "IDC_ UPARROW&apos;,
    "ID_ SIZENWSE",
    "IDC_ SIZENESW",
    "IDC_ SIZEWE",
    "IDC_ SIZENS",
    "IDC_ SIZEALL",
    "IDC_ NO",
    "IDC_ APPSTARTING",
    "IDC_ HELP",
    "IDC_ ARROW" ,
    "IDC_ ARROW",
    "IDC_ ARROW";
    int nCursor = GetCur sorRegion( & point);
    CClientDC ClientDC( this);
    CString strInfo;
    strInfo = " Cursor: " + strCur sor[ nCursor] +
    ClientDC .TextOut(0 ,0, strInfo, strInfo .GetLength( ));
    CView:: OnMouseMove( nFlags, point);
    }
    
    展开全文
  • /*自己设计并编写一个 Windows 应用程序,要求用到  * TextBox 文本框 显示简历内容  * GroupBox 分组框  * RadioButton 单选按钮 选择性别  * CheckBox 多选框  * ComboBox 组合框  * ListBox 列表...
    /*自己设计并编写一个 Windows 应用程序,要求用到 
     * TextBox 文本框 显示简历内容
     * GroupBox 分组框
     * RadioButton 单选按钮 选择性别
     * CheckBox  多选框
     * ComboBox  组合框
     * ListBox  列表框
     * 控件。

     * 将程序功能、界面布局和运行结果的截图与事件代码写在实验报告中。 */

    代码:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Runtime.InteropServices; //文件对话框所需头文件

    namespace _20153236_于博_sy3_2
    {
        public partial class Form1 : Form
        {
            public Form1()  //窗体初始化结果
            {
                InitializeComponent();
                radioButton1.Checked = true;
                label8.Parent = pictureBox1;
                label8.BackColor = Color.Transparent;
                label9.Parent = pictureBox1;
                label9.BackColor = Color.Transparent;
                label10.Parent = pictureBox1;
                label10.BackColor = Color.Transparent;
                label11.Parent = pictureBox1;
                label11.BackColor = Color.Transparent;
                label12.Parent = pictureBox1;
                label12.BackColor = Color.Transparent;
                label13.Parent = pictureBox1;
                label13.BackColor = Color.Transparent;
                label14.Parent = pictureBox1;
                label14.BackColor = Color.Transparent;
                label15.Parent = pictureBox1;
                label15.BackColor = Color.Transparent;
                label16.Parent = pictureBox1;
                label16.BackColor = Color.Transparent;
                label17.Parent = pictureBox1;
                label17.BackColor = Color.Transparent;
                label18.Parent = pictureBox1;
                label18.BackColor = Color.Transparent;
                label19.Parent = pictureBox1;
                label19.BackColor = Color.Transparent;
                label20.Parent = pictureBox1;
                label20.BackColor = Color.Transparent;
            }
            private class BaseTextBox : TextBox
            {
                [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
                private static extern IntPtr LoadLibrary(string lpFileName);
                protected override CreateParams CreateParams
                {
                    get
                    {
                        CreateParams prams = base.CreateParams;
                        if (LoadLibrary("msftedit.dll") != IntPtr.Zero)
                        {
                            prams.ExStyle |= 0x020; // transparent   
                            prams.ClassName = "RICHEDIT50W";
                        }
                        return prams;
                    }
                }
            }  
            private void Form1_Load(object sender, EventArgs e)
            {

            }

            private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
            {

            }

            private void button1_Click(object sender, EventArgs e)
            {
                this.Close();
            }

            private void checkedListBox1_SelectedIndexChanged(object sender, EventArgs e)
            {

            }

            private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
            {

            }

            private void checkBox3_CheckedChanged(object sender, EventArgs e)
            {

            }

            private void checkBox5_CheckedChanged(object sender, EventArgs e)
            {

            }

            private void button2_Click(object sender, EventArgs e)
            {
                if (textBox2.Text != "") { label8.Text = textBox2.Text; }                                  //姓名
                else MessageBox.Show("姓名不能为空!\n");
                if (radioButton1.Checked) { label9.Text = radioButton1.Text; } //男
                if (radioButton2.Checked) { label9.Text = radioButton2.Text; } //女
                if (checkBox1.CheckState == CheckState.Checked) { label10.Text = checkBox1.Text; }//看书
                else label10.Text = "";
                if (checkBox2.CheckState == CheckState.Checked) { label11.Text = checkBox2.Text; }//编程
                else label11.Text = "";
                if (checkBox3.CheckState == CheckState.Checked) { label12.Text = checkBox3.Text; }//羽毛球
                else label12.Text = "";
                if (checkBox1.CheckState == CheckState.Unchecked && checkBox2.CheckState == CheckState.Unchecked && checkBox3.CheckState == CheckState.Unchecked) { MessageBox.Show("选个爱好吧!\n"); }
                if (comboBox1.Text != "") { label13.Text = comboBox1.Text; }//班级
                else MessageBox.Show("班级不能为空!\n");
                if (listBox1.Text != "") { label14.Text = listBox1.Text; } //座右铭
                else MessageBox.Show("选个座右铭吧!\n");
            }

            private void textBox2_TextChanged(object sender, EventArgs e)
            {

            }

            private void checkBox2_CheckedChanged(object sender, EventArgs e)
            {

            }

         

            private void checkBox1_CheckedChanged(object sender, EventArgs e)
            {

            }

            private void groupBox1_Enter(object sender, EventArgs e)
            {

            }

            private void radioButton2_CheckedChanged(object sender, EventArgs e)
            {

            }

            private void radioButton1_CheckedChanged(object sender, EventArgs e)
            {
                
            }

            private void pictureBox1_Click(object sender, EventArgs e)
            {

            }

            private void button3_Click(object sender, EventArgs e)
            {
                OpenFileDialog openFileDialog = new OpenFileDialog();
                if (openFileDialog.ShowDialog() == DialogResult.OK)
                {
                    this.pictureBox1.Image = Image.FromFile(openFileDialog.FileName);
                }
                this.pictureBox1.ImageLocation = openFileDialog.FileName;
            }

            private void textBox1_TextChanged(object sender, EventArgs e)
            {
                
            }

            private void label1_Click(object sender, EventArgs e)
            {

            }

            private void label6_Click(object sender, EventArgs e)
            {

            }

            private void label8_Click(object sender, EventArgs e)
            {

            }

            private void label13_Click(object sender, EventArgs e)
            {

            }

            private void label12_Click(object sender, EventArgs e)
            {

            }

            private void label14_Click(object sender, EventArgs e)
            {

            }

            private void label10_Click(object sender, EventArgs e)
            {

            }

            private void label20_Click(object sender, EventArgs e)
            {

            }

            private void label4_Click(object sender, EventArgs e)
            {

            }
        }
    }
    运行结果截图:



    有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!如有侵权,请及时联系。


    展开全文
  • 可能有人会问我们为啥不选最新的stable版本,猿哥只想对你说,“怕犯错,可能会丢失很多成长的机会”,与此同时,鉴于最新版通常使用了最新的技术规范,更具“轮子”的研究价值,但是这里有一个非常大的前期,...

     

        PHP-GTK的下载地址:http://gtk.php.net/download.php?language=en-US,

    猿哥选择了最新版本(beta版),可能有人会问我们为啥不选最新的stable版本,猿哥只想对你说,“怕犯错,可能会丢失很多成长的机会”,与此同时,鉴于最新版通常使用了最新的技术规范,更具“轮子”的研究价值,但是这里有一个非常大的前期,那便是如果你想开发出面向大众用户而非自己研究的桌面级(Desktop)应用软件的话,建议用户还是选用最新的stable版本,这是一种用户思维,而不是做学问的思维。

    1、选择PHP-GTK最新版本进行下载

    2、下载好了二进制(binary)版本的安装包

    3、先不看Get started(或者Quick start)文档,快速浏览目录结构

    细心的小伙伴可能会发现demos目录,以及gtk的dll文件(动态链接库)

    4、最常规的看见运行效果的方式是,我们把demos里面的实例代码运行起来,先给自己一起学习并掌握它之后的“预先”成就感

    猿哥猜测通过调用php.exe来运行这里的php文件便可以看到桌面应用的运行结果了,那么结果是怎样的呢?

    好吧,运行起来了,但是我们发现两个明显的命令行问题提示,这到底是什么鬼呢?先抛开问题,猿哥玩了一下运行起来的桌面应用程序,感觉十分流畅,想不到PHP作为一门脚本语言竟然能够写桌面级应用,太赞了。

    5、接下来就是玩更多的demo,哈哈,我是不是太贪玩了,好吧,打住,猿哥你好像还没回答上面那个问题,为啥会出现两个错误提示,求别卖关子了好么!?

    答案很简单,请看下图:

    我们貌似发现了一个特别的可执行程序,当我们使用这个可执行文件去执行相应的脚本时会发现动态链接库加载失败的错误提示没有了,这里,猿哥纯属猜测拿到了一个完美的运行结果,但是猿哥不打算深入分析了,对这个问题感兴趣的小伙伴可以使用google大法搜索一下。

    6、庖丁解牛,目无全牛

    随便打开两个demo,我们会发现,这些应用都是继承了一个叫做GtkWindow的类,这个类是从哪里来的呢?

    打开PHP的ext(扩展)目录,我们发现了一下dll扩展:

    聪明的小伙伴肯定猜到了,这个gtk类肯定是从php_gtk2.dll文件来的,好吧,猿哥也是这么猜测的,这肯定是自恋症,得治哈。

    继续研究源代码的结构我们会发现更多规律性的东西,在这里就不深究了,这里纯粹是抛砖引玉。

     

    转载于:https://www.cnblogs.com/SofuBlue/p/8267043.html

    展开全文
  • 本教程为在Visual Studio 2017 上创建并编写一个Windows应用程序 运行环境 Microsoft Visual Studio 2017 操作步骤 打开Visual Studio 2017 ,依次在工具栏选择 文件->新建->项目 在新建项目中选择Visual C++ 中的...
  • -----------------进程----------------------------------------- 进程定义:  一个内核对象,用来管理进程和统计信息  一个地址空间,包括exe和dll...---------------编写一个windows应用程序----------------
  • 4.1 Windows两种类型的程序:  CUI程序,比如CMD.EXE等等。Microsoft Visual C++连接开关为/SUBSYSTEM:CONDOLE(程序启动时不能创建GUI程序)。  GUI程序,图形用户程序,比如Notepad,Word等等。Microsoft ...
  • 修改版!可以完美运行于vs2010和更高的版本。编写一个Windows应用程序,要求在窗口的用户区绘制一个圆,当单击左键时,该圆放大;单击右键时,该圆缩小;按下Ctrl键的同时移动鼠标,则该圆会随鼠标的移动而移动。
  • using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; ...using System.Windows.Forms; name
  • 使用MFC编写Windows应用程序 为了提高应用程序开发效率,发挥C++的优势。微软在Visual C++中提供了一个类库,Microsoft Foundation Class Library(MFC)。MFC中的类结合在一起,构成了“应用程序框架”。基于这个框架...
  • 开始编写这个程序 在Visual Studio .NET的起始页的文件菜单上选择新建/项目在弹出的对话框中的项目类型中选择Visual Basic项目在模板中选择Windows应用程序给你的应用程序起一个有意义的名字并选择好保存位置后单击...
  • // 设置一个作为标识的全局文件名 private string SingleStartFileName = @"C:\lottery.txt"; public Form1() { InitializeComponent(); SingleProgramLock(); } ...
  • 从头开始编写Windows窗体应用程序 创建一个最简单的Windows窗体程序 在VS 2008中创建一个空项目Empty Project 添加新项目CodeFile.cs 添加引用程序集 System System.Windows.Forms 在CodeFile.cs中输入 using System...
  • 创建一个windows应用程序,有以下基本步骤 创建窗口类 注册窗口类 创建窗口 显示窗口 消息循环 编写窗口过程(消息处理函数) 代码如下: // Win32_01.cpp : Defines the entry point for the application. // #...
  • 1.是跟着廖雪峰老师的实战写的,才开始使用python进行应用程序编写与设计(还没这水平),还是做出一些实在的东西才有意思,才有继续学下去的动力啊。如果想入门,可自行百度廖雪峰的官方网站,老师讲的很好,很...
  • 本篇文章主要讲解利用C++中的MFC框架编写一个简易的计算器应用程序,希望通过此例能让大家够很好地理解MFC框架。 一.MFC简介 1.定义 MFC的全称是Microsoft Foundation Classes是微软基础类库的简称,是微软公司实现...
  • Windows Phone 8初学者开发—第3部分:编写一个Windows Phone 8应用程序 原文 Windows Phone 8初学者开发—第3部分:编写一个Windows Phone 8应用程序 原文地址: ...
  • 编写一个windows应用程序,要求在窗口的用户区中绘制一个圆 ,当单击左键时,该圆放大;单击右键时,该圆缩小;按下ctrl键时的同时鼠标移动,则该圆会随鼠标移动而移动。 1.建立一个SDI,名字为MFCexp7_9 ...
  • 如果您了解DirectX,则可以使用本机C++和HLSL...使用C++和DirectX的Windows桌面应用程序带有DirectX的Windows桌面应用程序是使用本机C++和DirectX API开发的应用程序。这种模式比在托管框架中编写应用程序更复杂,但它
  • TForm1 *Form1;HANDLE hthread;DWORD WINAPI funcproc(); // thread data//---------------------------------------------------------------------------__fastcall TForm1
  • 1 写好了一个windows程序之后如何制作安装包 这个在vs中就可以直接发布了,可以制作msi的安装包和exe的安装包。 2 window应用程序安装包做了哪些事情 rpm安装包的话,只是把相应的文件拷贝到不同的目录。那么...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,761
精华内容 2,304
关键字:

编写一个windows应用程序