可视化操作创建的菜单,加载到窗口。
方法1:注册时指定菜单
wce.lpszMenuName=MAKEINTRESOURCE(IDR_MENUMAIN);//数字形式的资源ID转换为字符串形式的资源
方法2:
//创建窗口时加载菜单资源
HMENU menumain= LoadMenu(g_hinstance,MAKEINTRESOURCE(IDR_MENUMAIN));
menumain 传入 CreateWindowEx();//倒数第三个参数
可视化操作创建的菜单,加载到窗口。
方法1:注册时指定菜单
wce.lpszMenuName=MAKEINTRESOURCE(IDR_MENUMAIN);//数字形式的资源ID转换为字符串形式的资源
方法2:
//创建窗口时加载菜单资源
HMENU menumain= LoadMenu(g_hinstance,MAKEINTRESOURCE(IDR_MENUMAIN));
menumain 传入 CreateWindowEx();//倒数第三个参数
创建菜单:
HMENU CreateMenu(VOID);
添加菜单项:
BOOL AppendMenu( HMENU hMenu, // handle to menu
UINT uFlags, // menu-item options
UINT_PTR uIDNewItem, // identifier, menu, or submenu
windows消息机制、消息格式和消息处理1
unicode支持,windows下用:
1、先在#include<windows.h>上面,定义 UNICODE
#define UNICODE
2、定义字符串
TCHAR * ptxt=TEXT("学习hello c++");
3、根据需要,打印不同格式字符串
#ifdef UNICODE
wprintf(L"%s\n",ptxt);
windows编程介绍、windows 库和头文件介绍
exe文件:.exe,可执行文件
静态库文件:*.lib,调用时,源代码嵌入到调用位置
动态库文件:*.dll,调用时,函数地址被传入
--写编译软件,要懂编译原理.
windows 库和头文件
kernel32.dll-提供了核心的API,例如进程、线程、内存管理等
user32.dll-提供了窗口消息等API
虽然非专业人员不懂程序开发,但下面我用通俗的道理来说明一些事情,应该是每个人都能懂的,我可以豪不谦虚地说,下面的道理适合于任何公司、任何软件开发/网站开发,所以我认为,说过一次之后,应该不需要说第一遍。
软件开发/网站开发:
因为后台开发和界面美工(网站静态页面)是分工的,尽量把页面(需求)确定、做好再进行开发,不然太浪费时间,可能从零开始开发只要一天,之后要进行大幅度的修改,改个两三天,这种开发过程很纠结的,所以,就算是为了开发效率吧,我希望先真正的确定好静态页面效果(软件需求),以保证开始进行程序开发之后,需求不要频繁的大面积的修改。页面设计(需求确定)时要考虑全面一点。
今天开发.net mvc3遇到奇怪的事情。
用火狐浏览器,打开index页面,请求index控制器很多次,查询数据库的代码多次执行,服务器变慢,
而且没刷新页面,过一段时间就有一两个请求,无限循环,这事从来没遇见过,真是一头雾水。
认真查看了一下原因,原来是图片的src,数据库中路径没有的情况下,src="/" ,直接请求了默认的index控制器。
之后通过 在Index控制器中加一段处理代码处理了,而且还可以有图片没有的情况下,显示一张默认图片。
代码如下,加在控制器最前。
if (Request.UrlReferrer != null)//某页面上图片请求的 UrlReferrer就是页面本身
{
string Accept = Request.Headers["Accept"];
if (Accept.StartsWith("image/") && Accept.Contains("application/")==false ) //图片请求一般是:image/png,image/*;q=0.8,*/*;q=0.5,IE和firefox中请求不同,页面请求也包含image/
{
return File("/Content/images/Show/Show_pic07.jpg","image/jpeg");
//如果是图片src请求,返回一张默认图片,后面查询数据库的代码才不会重复执行。
//如果不返回正确的图片,火狐浏览器会无限循环请求下去.
}
}
总结:本来10分钟能解决的事,花了半个小时 ,这和经验有关,开发过程中,得不断积累经验。
//snakegame.h
#ifndef SNAKEGAME_H #define SNAKEGAME_H #include<QList> #include<QtWidgets/QLabel> #include<QtWidgets/QDialog> #include<QKeyEvent> #include<QTimer> /*枚举,表示方向*/ enum Direction{D_UP,D_DOWN,D_LEFT,D_RIGHT}; class SnakeGame:public QDialog { Q_OBJECT public: SnakeGame() ; ~SnakeGame(); public slots: void snakemove();/*移动*/ public: QLabel* getfood();/*产生新食物*/ void keyPressEvent(QKeyEvent *key); private: QList<QLabel*> snake;/*蛇*/ QLabel * food;/*食物*/ Direction dire;/*方向*/ int foodlen;/*食物长度*/ int maxlen;/*最大长度*/ QTimer * timer;/*定时器*/ }; #endif // SNAKEGAME_H
//在3t2目录下
//adder.h
/* qt简单加法计算器 */ #ifndef ADDER_H #define ADDER_H #include<QDialog> #include<QLineEdit> #include<QtWidgets/QPushButton> #include<QtWidgets/QLabel> class Adder:public QDialog{ Q_OBJECT//让自定义的槽函数生效 private: QLineEdit * add1; QLabel * oper; QLineEdit *add2; QPushButton * equ; QLineEdit * res; QPushButton * bclose; public: Adder(); ~Adder(); /*自定义槽函数*/ public slots: void getres(); }; #endif
//qt 5.2.1
//1t目录下
//1t.cpp
/* 第一个qt程序 */ #include <QApplication> #include<QtWidgets/QLabel> #include<QString> #include<QTextCodec> int main(int argc,char** argv){ /*构造一个对象*/ QApplication app(argc,argv); QTextCodec* coder=QTextCodec::codecForName("utf-8"); /*设置编码对象*/ // QTextCodec::setCodecForTr(coder); //set code to the words //QLabel qlab(QObject::tr("hello qt你好 ,today is a nice day!")); QLabel qlab(coder->toUnicode("hello qt你好 ,today is a nice day!")); qlab.show(); /*让程序进入事件循环*/ return app.exec(); }
//在1t目录下,输入命令:
//需求:由于项目刚上传,没有票数,为了表现出一定的人气,需要在一开始把各项目的票数赋一个值 ,
但每个项目不能一样,否则容易看出问题,呵呵 。